{"version":3,"sources":["actions/actionTypes.js","actions/authentication.js","utils/api.js","images/canine.svg","images/feline.svg","images/rabbit.svg","images/equine.svg","images/small_mammal.svg","images/bird.svg","images/reptile_or_amphibian.svg","images/farm_animal.svg","images/upload_icon.svg","images/sac-logo.svg","images/add_user_to_org.svg","images/create_a_coalition.svg","images/enter_data_manually.svg","images/enter_data_with_csv.svg","images/invite_org_to_coalition.svg","images/register_an_org.svg","images/request_to_join_coalition.svg","images/share_data_with_coalition.svg","images/marketing_resources/data_contributing_member.png","images/index.js","utils/species.js","reducers/authentication.js","reducers/cookieConsent.js","reducers/user.js","context/authentication.js","context/cookieConsent.js","images/sac-logo.7776b610_NEW.svg","components/LoadingIndicator/LoadingIndicator.js","components/ProfileDropdown/ProfileDropdown.js","components/AlertModal/AlertModal.js","components/Button/Button.js","images/home_icon.svg","components/LocationSelector/LocationSelector.js","images/data_icon.svg","images/services_icon.svg","images/coalitions_icon.svg","images/users_icon.svg","images/organizations_icon.svg","images/national_data_icon.svg","images/resource_center_icon.svg","images/dashboards_icon.svg","components/Navigation/Navigation.js","components/Footer/Footer.js","components/AppPage/AppPage.js","context/user.js","utils/hooks.js","utils/routeGuards.js","utils/dates.js","utils/formModes.js","utils/addNamespace.js","utils/formatUiErrors.js","utils/formatCsvValidationErrors.js","utils/exports.js","utils/queryParams.js","utils/dataStatus.js","utils/requests.js","utils/entryOptions.js","utils/index.js","components/Routes/LoginRoute.js","components/Routes/UnauthenticatedRoute.js","components/Routes/PrivateRoute.js","components/PageWrapper/PageWrapper.js","components/FormField/FormField.js","components/DatePickerField/DatePickerField.js","components/Tooltips/index.js","screens/LegacyOrganization/LegacyOrganization.js","components/Error/Error.js","components/IntakeOverviewGraph/utils.js","components/IntakeOverviewGraph/IntakeOverviewGraphLegend.js","components/ButtonDecrement/ButtonDecrement.js","components/ButtonIncrement/ButtonIncrement.js","components/IntakeOverviewFilter/IntakeOverviewFilter.js","components/IntakeOverviewGraphFilters/DateFilter/DateFilter.js","components/IntakeOverviewGraph/IntakeOverviewGraph.js","components/Table/utils.js","components/Table/Table.js","components/IntakeOverviewTable/IntakeOverviewTableSpecies.js","components/IntakeOverviewTable/utils.js","components/IntakeOverviewTable/IntakeOverviewTable.js","components/RecordStatusIndicator/RecordStatusIndicator.js","components/RecordStatusTableItem/RecordStatusTableItem.js","components/RecordStatusTable/RecordStatusTable.js","screens/Dashboard/AdminDashboard/OrganizationData.js","screens/Dashboard/AdminDashboard/AdminDashboard.js","screens/Dashboard/DataPortalDashboard/DataPortalDashboard.js","screens/Dashboard/Dashboard.js","components/DataEntryOptions/DataEntryOption.js","components/DataEntryOptions/DataEntryOptionsFilters.js","components/DataEntryOptions/DataEntryOptionsCta.js","components/DataEntryOptions/EntryLogs.js","components/DataEntryOptions/DataEntryOptions.js","screens/DataEntryOptions/index.js","screens/DataEntry/components/AnimalCounts/AnimalCountForm.js","screens/DataEntry/components/AnimalCounts/AnimalCount.js","screens/DataEntry/components/AnimalCounts/AnimalCounts.js","components/SpeciesCheckbox/SpeciesCheckbox.js","screens/DataEntry/components/common/DataStatus.js","components/MatrixSettingsModal/MatrixSettingsModal.js","screens/DataEntry/components/AnimalEntryDetails/utils.js","screens/DataEntry/components/AnimalEntryDetails/AnimalEntryDetailsForm.js","screens/DataEntry/components/AnimalEntryDetails/AnimalEntryDetailsSelected.js","screens/DataEntry/components/AnimalEntryDetails/AnimalEntryDetails.js","components/Table/__mocks__/animalIntakes.js","components/Table/__mocks__/data.js","components/Table/__mocks__/animalOutcomes.js","components/Input/Input.js","screens/DataEntry/components/common/TableFormInput.js","screens/DataEntry/components/AnimalIntakes/AnimalIntakeForm.js","screens/DataEntry/components/AnimalIntakes/AnimalIntake.js","screens/DataEntry/components/AnimalIntakes/AnimalIntakes.js","screens/DataEntry/components/AnimalOutcomes/AnimalOutcomeForm.js","screens/DataEntry/components/AnimalOutcomes/AnimalOutcome.js","webpack:///./src/images/upload_icon.svg?bd4f","screens/DataEntry/components/AnimalOutcomes/AnimalOutcomes.js","screens/DataEntry/DataEntry.js","files/Shelter-Animals-Count_Sample-Import.csv","images/csv_icon.svg","images/trash_icon.svg","components/DataEntryUpload/DataEntryUpload.js","screens/DataEntryUpload/index.js","components/DataEntryExport/utils.js","fonts/Cera-Pro-Bold.woff","components/DataEntryExport/ExportPDF/PDFLogo.js","components/DataEntryExport/ExportPDF/TopHeader.js","components/DataEntryExport/ExportPDF/TotalTable/TotalTableHeader.js","components/DataEntryExport/ExportPDF/TotalTable/TotalTableRow.js","components/DataEntryExport/ExportPDF/MainTable.js","components/DataEntryExport/ExportPDF/TotalTable/CountsTableHeader.js","components/DataEntryExport/ExportPDF/TotalTable/CountsTableRow.js","components/DataEntryExport/ExportPDF/CountsTable.js","components/DataEntryExport/ExportPDF/Shared/SideText.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieTableHeader.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieTableRow.js","components/DataEntryExport/ExportPDF/Shared/SpecieTable.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieCountTableHeader.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieCountTableRow.js","components/DataEntryExport/ExportPDF/Shared/SpecieCountTable.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieYOYRow.js","components/DataEntryExport/ExportPDF/TotalTable/SpecieYOYHeader.js","components/DataEntryExport/ExportPDF/helpers/PDFTableKeys.js","components/DataEntryExport/ExportPDF/CustomSpeciesPage.js","components/DataEntryExport/PDFExport.js","components/MultiDatePickerField/MultiDatePickerField.js","components/DataEntryExport/ExportPDF/Shared/SideTextServices.js","components/DataEntryExport/ExportPDF/CustomSpeciesService.js","components/DataEntryExport/PDFExportServices.js","components/DataEntryExport/DataEntryExport.js","screens/DataEntryExport/index.js","components/FormWrapper/FormWrapper.js","screens/Login/Login.js","screens/PageNotFound/PageNotFound.js","screens/Register/components/RegisterTypeSubForm/RegisterTypeSubForm.js","screens/Register/components/AccountSubForm/AccountSubForm.js","components/CountyDropdown/CountyDropdown.js","components/StateDropdown/StateDropdown.js","screens/Register/components/OrganizationSubForm/OrganizationSubForm.js","screens/Register/components/AuthorizationSubForm/AuthorizationSubForm.js","screens/Register/components/DataSharingSubForm/DataSharingSubForm.js","screens/Register/utils.js","screens/Register/Register.js","screens/ForgotPassword/ForgotPassword.js","screens/ResetPassword/ResetPassword.js","components/RouteLeavingGuard/RouteLeavingGuard.js","components/UserProfileForm/UserProfileForm.js","screens/Profile/Profile.js","components/Pagination/Pagination.js","components/ActionsMenu/ActionsMenu.js","screens/OrganizationManagement/Organizations/Organizations.js","components/Tabs/Tabs.js","components/OrganizationForm/OrganizationForm.js","screens/OrganizationManagement/Organization/components/OrganizationDetails/components/OrganizationManagers.js","components/BackLink/BackLink.js","screens/OrganizationManagement/Organization/components/OrganizationDetails/OrganizationDetails.js","components/ConfirmationModal/ConfirmationModal.js","screens/OrganizationManagement/Organization/components/Locations/Locations.js","components/LocationForm/LocationForm.js","screens/OrganizationManagement/Organization/components/LocationDetails/LocationDetails.js","screens/OrganizationManagement/Organization/components/AddLocation/AddLocation.js","screens/OrganizationManagement/Organization/components/Members/Members.js","screens/OrganizationManagement/Organization/components/AddMember/AddMember.js","screens/OrganizationManagement/Organization/components/MemberDetails/MemberDetails.js","components/ProvinceDropdown/ProvinceDropdown.js","components/RegionDropDown/utils.js","components/RegionDropDown/RegionDropDown.js","components/CoalitionsTable/utils.js","components/CoalitionsTable/CoalitionsTable.js","components/CoalitionForm/CoalitionForm.js","screens/CoalitionBuilder/AddCoalition/AddCoalition.js","screens/OrganizationManagement/Organization/components/ComparisonDashboard/ComparisonDashboard.js","screens/OrganizationManagement/Organization/components/EntryLogs/EntryLogs.js","screens/OrganizationManagement/Organization/components/AnalyticsAndForecast/AnalyticsAndForecast.js","screens/OrganizationManagement/Organization/components/SharingPermissions/SharingPermissions.js","components/ApiMappingTable/utils.js","components/ApiMappingTable/ApiMappingTable.js","screens/OrganizationManagement/Organization/components/ApiMapping/ApiMapping.js","screens/OrganizationManagement/Organization/components/RehomeDashboard/RehomeDashboard.js","screens/OrganizationManagement/Organization/components/CommunityServicesTotals/CommunityServicesTotals.js","screens/OrganizationManagement/Organization/components/IntakeOutcomeTotals/IntakeOutcomeTotals.js","screens/OrganizationManagement/Organization/Organization.js","screens/Users/Users.js","screens/Users/UserDetails/components/UserOrganizations/UserOrganizations.js","screens/Users/UserDetails/components/UserCoalitions/UserCoalitions.js","screens/Users/UserDetails/UserDetails.js","components/CoalitionsNav/CoalitionsNav.js","components/PendingCoalitionContributors/PendingCoalitionContributors.js","screens/CoalitionBuilder/Coalitions/Coalitions.js","screens/CoalitionBuilder/MyCoalitions/MyCoalitions.js","screens/CoalitionBuilder/Coalition/components/CoalitionDetails/components/CoalitionManagers.js","screens/CoalitionBuilder/Coalition/components/CoalitionDetails/CoalitionDetails.js","components/OrganizationTypeDropDown/utils.js","components/OrganizationTypeDropDown/OrganizationTypeDropDown.js","screens/CoalitionBuilder/Coalition/components/Contributors/utils.js","screens/CoalitionBuilder/Coalition/components/Contributors/Contributors.js","screens/CoalitionBuilder/Coalition/components/AddContributor/AddContributor.js","screens/CoalitionBuilder/Coalition/components/SharingPermissions/SharingPermissions.js","screens/CoalitionBuilder/Coalition/components/DataStatusTable/utils/index.js","screens/CoalitionBuilder/Coalition/components/DataStatusTable/DataStatusTable.js","screens/CoalitionBuilder/Coalition/components/ExportData/utils.js","screens/CoalitionBuilder/Coalition/components/ExportData/ExportData.js","screens/CoalitionBuilder/Coalition/components/Users/Users.js","screens/CoalitionBuilder/Coalition/components/AddUser/AddUser.js","components/IntakeOverviewGraphFilters/CoalitionFilter/CoalitonFilter.js","screens/CoalitionBuilder/Coalition/components/Home/Home.js","screens/CoalitionBuilder/Coalition/components/Settings/Settings.js","screens/CoalitionBuilder/Coalition/components/CoalitionAnalytics/CoalitionAnalytics.js","screens/CoalitionBuilder/Coalition/Coalition.js","screens/ResourceCenter/components/MarketingResources/MarketingResources.js","screens/ResourceCenter/components/VideoTutorials/VideoTutorials.js","screens/ResourceCenter/ResourceCenter.js","screens/Dashboards/components/Comparison/Comparison.js","screens/Dashboards/components/AnalyticsAndForecast/AnalyticsAndForecast.js","screens/Dashboards/components/Rehome/Rehome.js","screens/Dashboards/components/CommunityServicesTotals/CommunityServicesTotals.js","screens/Dashboards/components/IntakeOutcomeTotals/IntakeOutcomeTotals.js","screens/Dashboards/Dashboards.js","screens/ServicesMatrixOptions/index.js","screens/ServicesMatrix/utils.js","screens/ServicesMatrix/components/common/EntryStatus.js","screens/ServicesMatrix/components/ServicesMatrixSettings/ServicesMatrixSettings.js","screens/ServicesMatrix/components/FieldServicesTable/FieldServicesTable.js","screens/ServicesMatrix/components/FieldServices/FieldServices.js","screens/ServicesMatrix/components/VetServicesTable/VetServicesTable.js","screens/ServicesMatrix/components/VetServices/VetServices.js","screens/ServicesMatrix/components/BehavioralServicesTable/BehavioralServicesTable.js","screens/ServicesMatrix/components/BehavioralServices/BehavioralServices.js","screens/ServicesMatrix/components/SupportServicesTable/SupportServicesTable.js","screens/ServicesMatrix/components/SupportServices/SupportServices.js","screens/ServicesMatrix/ServicesMatrix.js","files/Shelter-Animals-Count_Sample_Services-Import.csv","screens/ServicesUpload/index.js","screens/ServicesExport/index.js","screens/DataUseAgreement/DataUseAgreement.js","screens/AllOrganizations/AllOrganizations.js","screens/Aggregation/Aggregation.js","Routes.js","components/CookieConsent/CookieConsent.js","App.js","index.js"],"names":["LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT_REQUEST","REFRESH_TOKEN","UPDATE_TOKEN","UPDATE_USER_ID","USER_CREATE","USER_UPDATE","USER_CLEAR","COOKIE_CONSENT_UPDATE","COOKIE_CONSENT_CLEAR","dispatch","loginPayload","a","requestOptions","method","headers","body","JSON","stringify","type","fetch","API_URL","response","json","data","errors","error","ok","Error","formatErrors","token","accessToken","get","client","uid","expiry","userId","id","payload","tokenPayload","logout","userDispatch","queryClient","localStorage","removeItem","AUTH_TOKEN_KEY","USER_ID_KEY","removeQueries","apiFetch","endpoint","includeMeta","decamelizeKeys","responseJson","meta","included","newToken","formattedData","Object","assign","camelizeKeys","hasOwnProperty","getAllRecords","queryParams","perPage","page","Promise","resolve","reject","collectedResponses","total","pageNumber","hasMoreRecords","numberOfRequests","hasError","MAKE_REQUEST","throttle","length","join","concat","SyntaxError","Array","isArray","errorArray","map","title","detail","String","process","REACT_APP_API_URL","TOKEN","getItem","parse","USER_ID","saveToken","setItem","videoThumbnails","add_user_to_org","create_a_coalition","enter_data_manually","enter_data_with_csv","invite_org_to_coalition","register_an_org","request_to_join_coalition","share_data_with_coalition","marketingResources","icon","data_contributing_member","images","canine","feline","rabbit","equine","small_mammal","bird","reptile_or_amphibian","farm_animal","upload_icon","logo","CANINE","FELINE","RABBIT","EQUINE","SMALL_MAMMAL","BIRD","FARM_ANIMAL","REPTILE_OR_AMPHIBIAN","speciesMap","label","svgs","initialAuthState","AuthReducer","initialState","action","errorMessage","cookieValue","initialCookieConsentState","showCookieConsent","CookieConsentReducer","state","set","expires","remove","undefined","initialUserState","attributes","coalitions","locations","pendingCoalitionContributorRequests","UserReducer","user","userState","getUpdatedUserState","isAdmin","systemAdmin","includedData","constructIncludedData","includedDataState","constructIncludedState","location","find","loc","locationId","organization","org","organizationId","membership","resourceType","isOrgAdmin","role","primaryLocation","primary","locationName","name","isDataPortalUser","isCoalitionOnly","getLocations","organizations","getOrganizations","getCoalitions","memberships","getUserMemberships","getIncludedDataByKey","coalitionMemberships","getCoalitionMemberships","userMemberships","filter","reduce","coalitionMap","coalitionId","isCoalitionUser","membershipKey","resourceId","AuthStateContext","React","createContext","AuthDispatchContext","useAuthState","context","useContext","useAuthDispatch","AuthProvider","children","useReducer","authData","Provider","value","CookieConsentStateContext","CookieConsentDispatchContext","useCookieConsentDispatch","CookieConsentProvider","LoadingIndicator","inline","content","className","src","alt","defaultProps","ProfileDropdown","username","logoutMethod","permissions","usePermissions","orgId","orgName","chevron","open","faAngleUp","faAngleDown","buttonCopy","faUser","menuButton","MenuButton","data-testid","align","MenuHeader","ROUTE_GUARDS","ORG_MEMBER","FocusableItem","ref","closeMenu","to","onClick","MenuItem","AlertModal","isModalOpen","closeModal","contentLabel","shouldCloseOnOverlayClick","isOpen","onRequestClose","overlayClassName","appElement","document","querySelector","Button","emphasis","href","isLoading","disabled","loadingText","download","props","ButtonType","Link","e","preventDefault","_path","_path2","LocationSelector","useUserDispatch","useUserState","stateLocations","useState","setLocation","tempLocation","setTempLocation","setIsOpen","useEffect","window","reload","useMutation","onSuccess","cloneDeep","updateUserLocationId","mutate","htmlFor","onChange","event","target","item","confirmModal","AlertContent","faExclamationTriangle","_extends","i","arguments","source","key","prototype","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgHomeIcon","_ref","svgRef","titleId","width","height","viewBox","fill","xmlns","d","stroke","strokeWidth","strokeMiterlimit","strokeLinecap","ForwardRef","SvgDataIcon","_g","_defs","SvgServicesIcon","transform","SvgCoalitionsIcon","_path3","_path4","SvgUsersIcon","_path5","_path6","_path7","_path8","_path9","_path10","_path11","_path12","_path13","SvgOrganizationsIcon","SvgNationalDataIcon","_g2","_g3","SvgResourceCenterIcon","xmlnsXlink","enableBackground","xmlSpace","strokeLinejoin","SvgDashboardsIcon","style","Navigation","hasOrg","setHasOrg","exact","data-tip","data-for","rel","Footer","showAttribution","currentYear","Date","getFullYear","classnames","AppPage","pathname","useLocation","fullName","email","showLocationSelector","setShowLocationSelector","history","useHistory","logoutRequest","useQueryClient","push","UserStateContext","UserDispatchContext","UserProvider","authDispatch","setError","needsRefresh","setNeedsRefresh","useQueryParams","accountConfirmationSuccess","alreadyConfirmed","orgAuthorizationSuccess","orgAlreadyConfirmed","Boolean","isLoggedIn","setIsLoggedIn","setIsLoading","isConfirmingAccount","setIsConfirmingAccount","getUserData","confirmToken","getPendingCoalitionContributorRequests","refetch","useQuery","enabled","replace","onError","handleLogout","handler","passive","addEventListener","removeEventListener","useEvent","newValue","oldValue","formatUiErrors","coalitionsUserManages","userMembership","contributorRequests","constructPendingContributorRequestConfigs","coalitionIds","all","config","coalitionsWithPendingRequests","pendingRequests","res","ADMIN","DATA_MATRIX","SERVICES_MATRIX","ORGANIZATIONS","CAN_VIEW_ORG","HAS_LEGACY_ORG","HAS_COALITIONS","CAN_VIEW_COALITION","COALITION_CONTRIBUTOR","COALITION_CONTRIBUTOR_ACTIVE","COALITION_CONTRIBUTOR_PENDING","COALITION_MANAGER","COALITION_VIEWER","ORGANIZATION_MANAGER","ORGANIZATION_USER","useRouteGuard","match","params","month","year","useMemo","date","m","y","isValidDate","hasCoalitions","canViewCoalition","isCoalitionContributor","isActiveCoalitionContributor","isPendingCoalitionContributor","isCoalitionManager","isCoalitionViewer","isValid","isFuture","orgMembership","status","dataUseAgreement","previousMonth","subMonths","startOfMonth","currentMonth","getMonthName","monthNum","getDateByMonth","toLocaleString","isNaN","FORM_MODES","addNamespace","namespace","fieldName","index","toString","formatCsvValidationErrors","exampleCSV","includes","EXPORT_DATE_FORMATS","organizationHeaders","transformOrganizationsData","record","ein","createdAt","incorporatedOn","animalSpecies","authorizerPhoneNumber","formatEin","formatDateTime","toLocaleDateString","formatAnimalSpecies","formatPhoneNumberForDisplay","locationHeaders","transformLocationsData","contactPhoneNumber","userAccountHeaders","transformUserAccountsData","coalitionHeaders","transformCoalitionsData","formatDateObject","newDate","setTime","getTime","getTimezoneOffset","trim","formatBusinessNumber","bn","api_phone_regex","phone_regex","phoneNumber","matches","exec","formattedPhone","formatPhoneNumberForFormFields","defaultReturn","extension","formatPhoneNumberForApi","search","split","decodeURIComponent","getQueryParams","routeGuards","useRouteMatch","perms","useHandleRequestStates","invalidateQueries","queries","forEach","query","useInvalidateQueries","handleSuccess","message","toast","success","autoClose","handleError","useManageCoalitionMemberships","createContributorMembership","createNewOrgMembership","deleteContributorMembership","deleteOrgMembership","newCoalitions","dataEntryStatuses","unbegun","incomplete","complete","unavailable","constructGetCoalitionsEndpoint","operatingRegions","region","country","constructGetOrganizationsEndpoint","organizationType","getOrganizationsForUsers","csvIcon","manuallyIcon","dataEntryOptions","dataEntryOptionsMap","heading","getTotalPages","totalCount","Math","ceil","camelToTitle","camelCase","g","toUpperCase","titleCase","str","toLowerCase","word","arr","inc","COALITION_TYPES","getOrgDataStatus","dataStatusRecords","statuses","uniq","rec","COALITION_MEMBERSHIP_ACTIONS","getMonthAbbr","isUnavailable","getMonth","LoginRoute","Component","component","rest","render","UnauthenticatedRoute","PrivateRoute","isSubRoute","computedMatch","redirect","guards","guard","isLegacyRoute","from","PageWrapper","showLogout","FormField","propsClone","required","readOnly","tooltip","tooltipWidthClass","useField","field","useFormikContext","touched","fieldErrors","setFieldErrors","isCheckbox","setIsCheckbox","LabelContent","widthClass","Tooltip","faQuestionCircle","place","FieldErrors","DatePickerField","setValue","aria-hidden","selected","val","OrganizationTypeTooltip","OrganizationStatusTooltip","OrganizationEinTooltip","OrganizationBusinessNumberTooltip","OrganizationAnnualIntakeTooltip","OrganizationAnnualBudgetTooltip","OrganizationMemberRoleTooltip","OrganizationCommunicationsOptInTooltip","OrganizationSearchableOptInTooltip","OrganizationMediaOptInTooltip","LegacyOrganizationDashboard","initialValues","websiteUrl","OrganizationSchema","Yup","shape","url","format","newOrg","updateOrganizationDetails","validateOnMount","validationSchema","onSubmit","handleSubmit","dateFormat","showMonthYearPicker","maxDate","endOfMonth","setMonth","showIcon","size","isLastStackedBar","dataKey","bucketsWithData","speciesBuckets","reverse","bucket","transformGraphData","initMonthsMap","other","monthsMap","species","monthOfRecord","speciesBucket","totalLiveIntakeCount","totalServicesCount","month_of_record","parseInt","graphColors","IntakeOverviewGraphLegend","backgroundColor","IntakeOverviewGraphLegendItem","ButtonIncrement","faCaretLeft","faCaretRight","IntakeOverviewFilter","DateFilter","setYear","ButtonDecrement","IntakeOverviewGraph","coalitionPage","coalitionFilters","searchClick","setSearchClick","adminLocation","dashboardEndpoint","coalitionEndpoint","coalitionYear","orgs","organization_ids","constructEndpoint","req","ResponsiveContainer","BarChart","margin","top","CartesianGrid","vertical","XAxis","tickLine","axisLine","tick","YAxis","tickSize","cursor","labelFormatter","formatter","itemStyle","marginBottom","Bar","stackId","CustomBar","x","rx","CustomXTick","textAnchor","dy","CustomYTick","dx","getRowData","rowLabel","keySubString","accessKeys","sort","b","aIndex","findIndex","bIndex","getRelatedKeys","acc","getTableHeaderClasses","columnWidths","dashboard","columnAlignments","textClasses","alignmentClass","getTableCellClasses","borderClasses","rowLabelCell","original","cell","row","uuid","uuidv4","getCell","columns","accessor","Header","Cell","adultTotal","rows","sum","values","adult","youthTotal","youth","ageUnknownTotal","ageUnknown","getFormAttributes","isNumber","transformAttributesForPayload","getServiceTypeAttributes","rowData","attributeKeys","combinedRows","rowsObj","curr","filteredAttributes","fromEntries","entries","Table","noResultsText","memoizedData","memoizedColumns","rowIndex","useTable","useSortBy","getTableProps","getTableBodyProps","headerGroups","prepareRow","footerGroups","headerGroup","getHeaderGroupProps","column","getHeaderProps","getSortByToggleProps","isSorted","isSortedDesc","colSpan","getRowProps","cells","cellIndex","getCellProps","group","getFooterGroupProps","getFooterProps","pluginHooks","IntakeOverviewTableSpecies","speciesKey","speciesData","transformTableData","includedRecords","rowHeader","transformCoalitionTableData","aggregatedData","totalIntake","totalLiveOutcomes","totalOtherOutcomes","totalFieldServices","totalVeterinaryServices","totalSupportServices","totalBehaviorServices","existingSpecie","IntakeOverviewTable","transformCellStyle","csvData","filename","RecordStatusIndicator","adminOrganization","isService","complete_services_provided","complete_no_services_provided","in_progress","faCircle","RecordStatusTableItem","getStatus","statusClasses","background","border","serviceStatusClasses","defaultStyles","serviceStyles","RecordStatusTable","OrganizationData","queryClient2","totalPages","setTotalPages","setSearch","setOrgId","setLocationId","keepPreviousData","response2","error2","isLoading2","prefetchQuery","marginTop","setFieldValue","placeholder","mutationConfig","fileNamePrefix","buttonText","closeOnClick","limit","AdminDashboard","exportOrganizations","orgExportLoading","exportCoalitions","coalitionExportLoading","exportLocations","locExportLoading","exportUserAccounts","usersExportLoading","getAnimalDataExportContent","dataCsv","DownloadExportLink","DataPortalDashboard","Dashboard","accountConfirmed","DataEntryOption","checked","DataEntryOptionsFilters","faMapMarkerAlt","defaultcurrentMonth","DataEntryOptionsCta","isCsv","cta","setCta","useParams","getCta","faArrowRight","EntryLogs","setResponse","fetchData","DataEntryOptions","setIsCsv","defaultPreviousMonth","GetFormValues","dataEntryOption","optionKey","AnimalCountForm","forwardRef","dataId","isEditing","beginningAnimalCount","setRecalculate","previousEndingAnimalCount","previousEndingFosterAnimalCount","endingAnimalCount","beginningFosterAnimalCount","endingFosterAnimalCount","updateAnimalCounts","toLocaleLowerCase","setQueryData","oldData","newData","counts","speciesIndex","countsRecord","speciesLabel","appearance","min","enableReinitialize","innerRef","AnimalCount","AnimalCounts","animalData","selectedSpecies","endingCounts","recalculate","SpeciesCheckbox","selectedClasses","disabledClasses","disabledSelectedClasses","faCheck","DataStatus","statusContent","faCheckCircle","color","MatrixSettingsModal","dataEntryTypes","tempIdKey","removedSpeciesKey","intakes","outcomes","payloadInitValue","relationships","animal_counts","animal_intakes","animal_outcomes","generatePayload","addedSpecies","removedSpecies","changedSpecies","payloadMap","ids","includedAttributes","location_id","year_of_record","updateSpeciesCache","added","addSpeciesToCache","removed","removeSpeciesFromCache","typeMap","incRecord","countIndex","countRecord","countId","splice","intakeIndex","intakeRecord","intakeId","outcomeIndex","outcomeRecord","outcomeId","AnimalEntryDetailsForm","setIsEditable","formattedDate","defaultSpecies","entryStatus","setChangedSpecies","matrixData","getQueryData","initialSpeciesValues","setMatrixSpecies","getRemovedSpecies","intake","outcome","count","getAddedSpecies","onSettled","isEqual","validate","some","invalid","AnimalEntryDetailsSelected","AnimalEntryDetails","setSpecies","setIsEditing","handleSubmitAll","isEditable","Intl","DateTimeFormat","animalIntakes","adultStrayAtLargeCount","youthStrayAtLargeCount","ageUnknownStrayAtLargeCount","adultRelinquishedByOwnerCount","youthRelinquishedByOwnerCount","ageUnknownRelinquishedByOwnerCount","adultOwnerIntendedEuthanasiaCount","youthOwnerIntendedEuthanasiaCount","ageUnknownOwnerIntendedEuthanasiaCount","adultOtherIntakesCount","youthOtherIntakesCount","ageUnknownOtherIntakesCount","adultTransferredInstateInFromAgencyCount","youthTransferredInstateInFromAgencyCount","ageUnknownTransferredInstateInFromAgencyCount","adultTransferredOutOfStateInFromAgencyCount","youthTransferredOutOfStateInFromAgencyCount","ageUnknownTransferredOutOfStateInFromAgencyCount","adultTransferredInternationallyInFromAgencyCount","youthTransferredInternationallyInFromAgencyCount","ageUnknownTransferredInternationallyInFromAgencyCount","adultSeizedOrImpoundedCount","youthSeizedOrImpoundedCount","ageUnknownSeizedOrImpoundedCount","totalStrayAtLargeCount","totalRelinquishedByOwnerCount","totalOwnerIntendedEuthanasiaCount","totalTransferredInstateInFromAgencyCount","totalTransferredOutOfStateInFromAgencyCount","totalTransferredInternationallyInFromAgencyCount","totalOtherIntakesCount","totalAdultLiveIntakeCount","totalYouthLiveIntakeCount","totalAgeUnknownLiveIntakeCount","totalSeizedOrImpoundedCount","animalOutcomes","adultAdoptionCount","youthAdoptionCount","ageUnknownAdoptionCount","adultReturnedToOwnerCount","youthReturnedToOwnerCount","ageUnknownReturnedToOwnerCount","adultReturnedToFieldCount","youthReturnedToFieldCount","ageUnknownReturnedToFieldCount","adultOtherLiveOutcomeCount","youthOtherLiveOutcomeCount","ageUnknownOtherLiveOutcomeCount","adultDiedInCareCount","youthDiedInCareCount","ageUnknownDiedInCareCount","adultLostInCareCount","youthLostInCareCount","ageUnknownLostInCareCount","adultShelterEuthanasiaCount","youthShelterEuthanasiaCount","ageUnknownShelterEuthanasiaCount","adultTransferredInstateToAnotherAgencyCount","youthTransferredInstateToAnotherAgencyCount","ageUnknownTransferredInstateToAnotherAgencyCount","adultTransferredOutOfStateToAnotherAgencyCount","youthTransferredOutOfStateToAnotherAgencyCount","ageUnknownTransferredOutOfStateToAnotherAgencyCount","adultTransferredInternationallyToAnotherAgencyCount","youthTransferredInternationallyToAnotherAgencyCount","ageUnknownTransferredInternationallyToAnotherAgencyCount","totalAdoptionCount","totalReturnedToOwnerCount","totalTransferredInstateToAnotherAgencyCount","totalTransferredOutOfStateToAnotherAgencyCount","totalTransferredInternationallyToAnotherAgencyCount","totalReturnedToFieldCount","totalOtherLiveOutcomeCount","subtotalAdultLiveOutcomesCount","subtotalYouthLiveOutcomesCount","subtotalAgeUnknownLiveOutcomesCount","subtotalLiveOutcomesCount","totalDiedInCareCount","totalLostInCareCount","totalShelterEuthanasiaCount","subtotalAdultOtherOutcomesCount","subtotalYouthOtherOutcomesCount","subtotalAgeUnknownOtherOutcomesCount","subtotalOtherOutcomesCount","totalAdultOutcomesCount","totalYouthOutcomesCount","totalAgeUnknownOutcomesCount","totalOutcomesCount","Input","TableFormInput","cellInfo","inputName","AnimalIntakeForm","setRow","formColumns","updateAnimalIntakes","PropTypes","string","isRequired","AnimalIntake","AnimalIntakes","AnimalOutcomeForm","updateAnimalOutcomes","outcomesRecord","AnimalOutcome","resultObj","getAllKeys","keyName","v","AnimalOutcomes","el","current","DataEntry","setAnimalSpecies","setSelectedSpecies","submittedAll","setSubmittedAll","speciesMonthEndingCount","setSpeciesMonthEndingCount","newOrganization","setOrganization","newlocation","setNewLocation","animalIntakeForm","useRef","animalOutcomeForm","animalCountForm","getOrg","isLoadingTables","isTableError","dateFilters","statusDateFilters","locationFilter","hash","generateDataEntries","dataToSpeciesArray","speciesArray","intakeHash","outcomeHash","countsHash","endCount","calculateEndingCount","setTimeout","liveOutcome","otherOutcome","autoRecalculate","newIntakes","cur","newIntakesSum","liveOutcomes","otherOutcomes","newLiveOutCome","newliveOutComeSum","newotherOutcomes","Content","SvgUploadIcon","SvgCsvIcon","SvgTrashIcon","DataEntryUpload","file","setFile","uiError","setUiError","onDrop","useCallback","acceptedFiles","reader","FileReader","onabort","console","log","onerror","onload","binaryStr","result","readAsDataURL","file_type","isSuccess","useDropzone","maxFiles","accept","getRootProps","getInputProps","isDragActive","fileRejectionItems","fileRejections","Success","dataEntryHeaders","animalCountKeys","serviceHeaders","generateExport","formValues","dates","newResponse","services","fYear","lYear","fMonth","renameOutcomeEuthanasiaAttributes","isSumGreaterThanZero","obj","yearOfRecord","priorDate","currentDate","transformExportDates","moment","firstDate","lastDate","firstMonthYearString","lastMonthYearString","styles","StyleSheet","create","marginLeft","PDFLogo","mainHeading","fontSize","fontFamily","fontWeight","subHeading","TopHeader","headerName","timeframe","textAlign","borderColor","backColor","live_intake_n","paddingTop","borderWidth","subtotal","TableHeader","container2","flexDirection","borderBottomColor","borderBottomWidth","alignItems","fontStyle","description","paddingLeft","TableRow","items","MainTable","TotalTableHeader","TotalTableRow","live_intake","live_intake1","care_foster","container3","container4","rowWidth","CountsTableRow","canine_c","canine_f","feleine_c","feleine_f","other_c","other_f","CountsTable","CountsTableHeader","SideText","SpecieTableHeader","rowWidth2","SpecieTableRow","key1","key2","key3","SpecieTable","SpecieCountTableHeader","SpecieCountTableRow","total_incare","total_in_foster","SpecieCountTable","LIVE_INTAKE_KEYS","LIVE_OUTCOMES_KEYS","OTHER_OUTCOMES","SP_LIVE_INTAKE_KEYS","subname","SP_LIVE_OUTCOMES_KEYS","SP_OTHER_OUTCOMES","totalTransferDataSumIsNotZero","generateLiveIntakeData","intakesData","orther","f","c","o","getSPServices","sp","specs","rename","getSPIntakes","specieData","generateFieldDataServices","FIELD_DATA","VETERINAY_DATA","BEHAVIORAL_DATA","SUPPORT_DATA","SP_FIELD_DATA_KEYS","SP_VETERINAY_DATA_KEYS","SP_BEHAVIORAL_DATA_KEYS","SP_SUPPORT_DATA_KEYS","Font","register","fontBold","family","section","padding","viewer","innerWidth","innerHeight","container","rightCol","flexGrow","paddingRight","textTransform","leftColumn","leftColumn2","lineHeight","header","CustomSpeciesPage","spIntakes","spOut2","spOut","SP","countsData","years","months_of_first_year","months","last_day","months_of_last_year","s_c","l_c","generateCountsDataSP","PDFExport","liveIntakes","totalSpecies","liveOutComes","s_f","s_o","l_f","l_o","otherTotalStart","otherTotalFosterStart","otherTotalEnd","otherTotalFosterEnd","generateCountsData","toLocaleUpperCase","setDates","onlyYearPicker","toDate","SideTextServices","hideOther","CustomSpeciesService","fieldData","vetData","behaviorlData","supportData","PDFExportServices","ExportSchema","DataEntryExport","headingTag","subheadingTag","newOrgId","exportData","setExportData","pdfData","setPdfData","setnewOrg","HeadingTag","SubheadingTag","isLoadingOrg","errorOrg","dataAtrributes","flat","newObj","commonKeys","groupedData","k","transformCsvData","getData","dirty","as","hidden","MultiDatePickerField","onlyMonthPicker","multiple","plugins","fileName","FormWrapper","LoginSchema","password","Login","oauthConfirmationSuccess","setUIError","uiMessage","setUIMessage","isLoginSuccessful","setIsLoginSuccessful","loginUser","err","loginRequest","loginUserWithOAuth","PageNotFound","RegisterTypeSubForm","DataIcon","RegisterTypeOption","defaultValues","confirmEmail","confirmPassword","AccountSubForm","withNamespace","PasswordTooltip","CountyDropdown","usState","setFieldError","setFieldTouched","fieldValue","initLoad","setInitLoad","apiError","apiErrors","county","StateDropdown","urlRegex","addressLine1","addressLine2","city","provinceOrTerritory","zipCode","postalCode","usCounty","businessNumber","referred","referringOrganizationName","annualIntake","annualOperatingBudget","shelterSoftware","OrganizationSubForm","referral","lastYear","subYears","aria-labelledby","isAuthorizer","authorizerName","authorizerTitle","authorizerEmail","authorizerConfirmEmail","authorizerExtension","AuthorizationSubForm","authorization","communicationsOptIn","searchableOptIn","mediaOptIn","DataSharingSubForm","getAuthorizer","account","organizationAuthorizerName","organizationAuthorizerTitle","organizationAuthorizerEmail","organizationAuthorizerPhoneNumber","Register","formStep","setFormStep","oneOf","when","is","then","dataSharing","nextStep","startsWith","registrationType","registerType","userFullName","userTitle","userEmail","userPassword","organizationName","organizationCountry","organizationWebsiteUrl","organizationBusinessNumber","organizationIncorporatedOn","organizationEin","organizationReferringOrganizationName","organizationAnimalSpecies","array","organizationAnnualIntake","organizationAnnualOperatingBudget","organizationShelterSoftware","organizationCommunicationsOptIn","organizationSearchableOptIn","organizationMediaOptIn","locationAddressLine_1","locationAddressLine_2","locationCity","locationUsState","locationZipCode","locationUsCountyId","locationPostalCode","locationProvinceOrTerritory","locationContactPhoneNumber","constructPayload","submit","AccountSubFormMeta","OrganizationSubFormMeta","AuthorizationSubFormMeta","DataSharingSubFormMeta","SelectRegistrationType","TermsOfService","EmailSchema","ForgotPassword","redirect_url","PasswordSchema","passwordConfirmation","ResetPassword","RouteLeavingGuard","shouldBlockNavigation","modalVisible","setModalVisible","lastLocation","setLastLocation","confirmedNavigation","setConfirmedNavigation","nextLocation","UserProfileForm","formMode","cancelRoute","onUpdateSuccess","onUpdateError","setIsSuccess","showConfirmEmail","setShowConfirmEmail","confirmedAt","setStatus","setRole","isActive","archivedAt","UserProfileSchema","addMember","isLoadingAdd","unconfirmedEmail","updateUserInformation","resetUserPassword","SelectOptions","defaultValue","StatusSelect","RoleSelect","FormContext","resetForm","emailClone","setEmailClone","Profile","resetPassword","LEFT_PAGE","RIGHT_PAGE","Pagination","currentPage","pageNeighbors","onPageChanged","pages","setPages","totalNumbers","startPage","max","endPage","range","hasLeftSpill","hasRightSpill","spillOffset","extraPages","getPages","aria-label","handlePageClick","ActionsMenu","faEllipsisV","Organizations","setPage","deleteOrg","resendAuthorizationEmail","Menu","Tabs","tabs","tab","isNil","activeClassName","OrganizationForm","annualTotal","setAnnualTotal","getInitialValues","iodApiOption","initialIodApiOption","isOrgMember","externalId","aapId","notes","iodApiActive","iodApiOptionUpdated","isViewMode","getFormattedBusinessNumber","getFormattedEin","OrganizationManagers","BackLink","link","text","faAngleDoubleLeft","OrganizationDetails","communicationOptIn","handleUpdateError","isResending","ConfirmationModal","prompt","Locations","locationToDelete","setLocationToDelete","setIsModalOpen","modalError","setModalError","getOrgLocations","triggerDeleteLocationModal","openModal","refetchActive","deleteLocation","isLoadingDeleteLocation","LocationForm","LocationSchema","address_line_1","address_line_2","usCountyId","addLocation","updateLocationDetails","LocationDetails","locId","AddLocation","Members","totalMembers","setTotalMembers","memberToRemove","setMemberToRemove","getOrgMembers","member","isEdited","setEdited","handleRoleChange","updateMember","changeRole","newRole","stopPropagation","editOrSave","triggerRemoveMemberModal","getResourceId","memberId","membershipId","removeMember","isLoadingRemoveMember","DetailsMenu","AddMember","UserSchema","MemberDetails","ProvinceDropdown","REGION_TYPES","RegionDropDown","baseColumnsForSharing","getCoalitionRoles","statusActor","getDataSharingType","communityServiceDataSharing","intakeOutcomeDataSharing","CoalitionsTable","path","handleRespondToInviteSuccess","coalition","updatedMembershipRecord","coalitionName","useHandleRespondToInviteSuccess","handleRequestAccessSuccess","newMembershipRecord","useHandleRequestAccessSuccess","handleLeaveCoalitionSuccess","useHandleLeaveCoalitionSuccess","setIsModelOpen","openUserId","setOpenUserId","setOpenState","openType","setOpenType","initialFilters","filters","setFilters","refetchOnWindowFocus","staleTime","cacheTime","roles","coalitionRoleColumn","Number","requestAccess","leaveCoalition","respondToInvitation","adminMembership","statusChangeAction","vals","getColumns","hasPendingCoalitionInvite","orgHasPendingCoalitionInvite","pendingInvites","canRequestAccess","canLeaveCoalition","isOrgManagerAndCoalitionContributor","CoalitionForm","showState","setShowState","CoalitionSchema","dataUsed","operatingRegionType","operatingRegion","getElementById","of","allIntakeOutcomeDataRequest","allCommunityServiceDataRequest","addCoalition","stateContent","overflow","dataUseTimestamp","AddCoalition","refetchInActive","ComparisonDashboard","script","createElement","async","appendChild","removeChild","position","display","AnalyticsAndForecast","class","SharingPermissions","sharingPermissionsSchema","isOrgLoading","updateSharingPermissions","getUniqueTypeSubtypePairs","uniquePairs","Set","pair","eventType","subtype","inputString","extractSacCategory","intakeOutcomeType","add","sacCategory","intakeCategories","outcomeCategories","ApiMappingTable","setFormMode","sacCategoryGroups","setSacCategoryGroups","sacCategoryData","setSacCategoryData","isFetching","outcomeData","intakeData","handleSave","oldGroupIndex","newGroup","mapCategories","idx","categoryData","CategoryForm","category","ApiMapping","RehomeDashboard","tin","setTin","CommunityServicesTotals","IntakeOutcomeTotals","Organization","cleanUrl","orgApiProvider","test","Users","userToDelete","setUserToDelete","getUsers","triggerDeleteUserModal","deleteUser","isLoadingDeleteUser","UserOrganizations","UserCoalitions","userStatus","UserDetails","CoalitionsNav","PendingCoalitionContributors","Coalitions","MyCoalitions","CoalitionManagers","CoalitionDetails","seformMode","float","ORGANIZATION_TYPES","OrganizationTypeDropDown","COALITION_MEMBERSHIP_STATUSES","mergeIncludesIntoData","resClone","incStatusRecords","dataStatus","updatedAt","statusUpdatedAt","getOrgMembershipStatus","membershipFilter","getMembershipFilter","noStatusActorFilter","Contributors","contributorPage","setContributorPage","activeContributorColumns","sharing","dateRequestedColumn","actionsColumns","getActions","respondToRequest","dateAcceptedColumn","sortType","sortDescFirst","toDateString","removeOrgColumn","dateDeclinedColumn","membershipCoalitionId","actionMessage","startDate","diffTime","abs","diffDays","AddContributor","showTable","setShowTable","orgType","inviteOrg","getDataSharing","updateSharing","getAllDataStatus","servicesStatusRecords","servicesStatuses","dataStatuses","serviceLatestIntake","latestIntake","monthRecord","servicesMonthRecord","DataStatusTable","csvFileData","setCsvFileData","ready","setReady","loadingData","setLoadingData","allStatuses","exportDataStatus","dataStatusLoading","getStatusColumns","serviceStatusColumns","getServiceStatusColumns","yearAsFourDigits","showYearPicker","minDate","getCsvData","dataStatusIndicator","indicatorIcon","colorClass","faExclamationCircle","statusType","organization_name","last_updated","year_completion_status","status_object","past_year","every","s","slice","calculateYearCompletionStatus","EXPORT_STATUS","attachedFilePath","options","ExportData","shouldPoll","setShouldPoll","setSelected","countries","setCountries","selectedCountry","setSelectedCountry","selectedProvinces","setSelectedProvinces","selectedOrgType","setSelectedOrgType","selectedOrg","setSelectedOrg","allOrgs","setallOrgs","allOrgsTypes","setallOrgsTypes","selectedExport","setSelectedExpot","startedRecords","states","us_county_ids","org_types","export_for","oldRes","generateCsv","isGeneratingCsv","callback","delay","savedCallback","setInterval","clearInterval","useInterval","fetchCountries","cont","newStates","fetchOrgs","orgTypes","counties","provinces","dataRequested","localeCompare","fetchOrgTypes","communityService","labelledBy","userToRemove","setUserToRemove","updateUser","removeUser","isLoadingRemoveUser","AddUser","addUser","CoalitionFilter","setCounties","selectedCounty","setSelectedCounty","fetchCounties","Home","setAction","defaultFilters","Settings","coalitionToArchive","setCoalitionToArchive","archiveCoalition","isLoadingArchiveCoalition","activeCoalition","archiveRecord","draftRecord","Coalition","CoalitionAnalytics","MarketingResources","resource","VideoTutorials","videos","hashVideoRx","defaultVideo","videoIndex","setVideoIndex","suggestedQuality","video","maxWidth","autoplay","controls","allowFullscreen","showRelatedVideos","choice","selectVideo","ResourceCenter","Comparison","Rehome","ServicesMatrixOptions","getTableColumns","defaultColumns","col","generateAnimalSpeciesPayload","animal_services","getChangedAttributes","form","newAttributes","allowedAttrs","formAttributes","vet","support","behavior","EntryStatus","ServicesMatrixSettings","handleSubmitServices","editMode","setEditMode","editSettings","submitSettingsForm","servicesRecord","viewSettings","FieldServicesTable","FieldServices","VetServicesTable","VetServices","BehavioralServicesTable","BehavioralServices","SupportServicesTable","SupportServices","ServicesMatrix","updatedData","setUpdatedData","speciesUpdateId","setSpeciesUpdateId","fieldForm","vetForm","behaviourForm","supportForm","isFirstRender","updateServices","isStatusError","isLoadingStatus","orgSpecies","getDefaultAnimalSpecies","cloneDeepWith","isObject","refetchQueries","setUpdatedAttributes","attri","ServicesUpload","ServicesExport","DataUseAgreement","resetPasswordToken","accepted","setAccepted","data_use_agreement","data_use_timestamp","toISOString","AllOrganizations","DataSchema","Aggregation","aggregateData","Routes","LegacyOrganization","Dashboards","CookieConsent","useCookieConsentState","zIndex","gtag","ad_storage","analytics_storage","QueryClient","defaultOptions","retry","queryCache","QueryCache","App","QueryClientProvider","POSITION","TOP_CENTER","transition","Slide","hideProgressBar","zendeskKey","ReactDOM","StrictMode"],"mappings":"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EAA/BA,SAAU85B,EAAqB,EAArBA,eAC3CrC,EAAUrnB,oBAAUpQ,GAS1B,OAPA85B,EAAena,SAAQ,SAAC6a,GACtB,IAAMne,EAAQob,EAAQv3B,KAAKosB,WAAU,SAACzP,GACpC,OAAOA,EAAO9b,KAAOy5B,EAAQz5B,MAE3Bsb,GAAS,GAAGob,EAAQv3B,KAAK66B,OAAO1e,EAAO,MAGtCob,GAUI0iC,GAAuB,SAACC,EAAM1yD,EAAY2yD,GACrD,IAAgBC,EAAiBC,KAAxBH,GACT,OAAOj4D,OAAO6sB,YACZ7sB,OAAO8sB,QAAQorC,GAAelwD,QAC5B,oCAAEgH,EAAF,KAAOwU,EAAP,YACExU,KAAOzJ,GACP4yD,EAAa79C,SAAStL,KACrBzJ,EAAWyJ,KAASwU,GAA4B,IAApBje,EAAWyJ,IAAsB,IAARwU,QASjD40C,GAAiB,iBAAO,CACnC71C,MAAO,CACL,6BACA,6BACA,kCACA,0BACA,0BACA,+BACA,6BACA,2BAEF81C,IAAK,CACH,sCACA,sCACA,2CACA,kCACA,kCACA,uCACA,0CACA,0CACA,+CACA,4BACA,4BACA,iCACA,+BACA,+BACA,oCACA,oCACA,oCACA,yCACA,sCACA,kCACA,0CACA,4BACA,+BACA,qCAEFC,QAAS,CACP,oBACA,oBACA,yBACA,wBACA,wBACA,6BACA,qBACA,qBACA,0BACA,yCACA,yCACA,8CACA,6CACA,6CACA,kDACA,sCACA,sCACA,2CACA,4BACA,4BACA,iCACA,oBACA,wBACA,qBACA,yCACA,6CACA,sCACA,6BAEFC,SAAU,CACR,iCACA,iCACA,sCACA,0BACA,0BACA,+BACA,4BACA,4BACA,iCACA,wCACA,wCACA,6CACA,iCACA,0BACA,4BACA,2CC9RWC,GA3CK,SAAC,GAAgB,IAAD,EAAbr/C,EAAa,EAAbA,OACfsH,EACK,UADLA,EAEQ,aAFRA,EAGsB,2BAHtBA,EAIwB,6BAExBkW,GAAa,mBAChBlW,EAAoC,CACnC9W,QAAS,oBACT3G,KAAM4zB,KACNC,MAAO,cAJQ,cAMhBpW,EAAsC,CACrC9W,QAAS,0CACT3G,KAAM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","file":"static/js/main.85144261.chunk.js","sourcesContent":["export const LOGIN_REQUEST = \"LOGIN_REQUEST\";\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nexport const LOGIN_FAILURE = \"LOGIN_FAILURE\";\n\nexport const LOGOUT_REQUEST = \"LOGOUT_REQUEST\";\n\nexport const REFRESH_TOKEN = \"REFRESH_TOKEN\";\nexport const UPDATE_TOKEN = \"UPDATE_TOKEN\";\n\nexport const UPDATE_USER_ID = \"UPDATE_USER_ID\";\n\nexport const USER_CREATE = \"USER_CREATE\";\nexport const USER_UPDATE = \"USER_UPDATE\";\nexport const USER_CONFIRM = \"USER_CONFIRM\";\nexport const USER_CLEAR = \"USER_CLEAR\";\n\nexport const COOKIE_CONSENT_UPDATE = \"COOKIE_CONSENT_UPDATE\";\nexport const COOKIE_CONSENT_CLEAR = \"COOKIE_CONSENT_CLEAR\";\n","import {\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILURE,\n LOGOUT_REQUEST,\n USER_CLEAR,\n} from \"./actionTypes\";\nimport { AUTH_TOKEN_KEY, API_URL, USER_ID_KEY, formatErrors } from \"../utils\";\n\nexport async function loginUser(dispatch, loginPayload) {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(loginPayload),\n };\n\n dispatch({ type: LOGIN_REQUEST });\n const response = await fetch(`${API_URL}/auth/sign_in`, requestOptions);\n const headers = await response.headers;\n\n try {\n const { data, errors, error } = await response.json();\n\n if (!response.ok) {\n throw new Error(formatErrors(errors || error));\n }\n\n const token = {\n accessToken: headers.get(\"access-token\"),\n client: headers.get(\"client\"),\n uid: headers.get(\"uid\"),\n expiry: headers.get(\"expiry\"),\n };\n\n const userId = data.id;\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: { token, userId },\n });\n\n return true;\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE, error });\n throw new Error(formatErrors(error));\n }\n}\n\n// Allow auth from summa oauth\nexport async function loginUserWithOAuth(dispatch, tokenPayload) {\n try {\n // Extract necessary fields from the OAuth token payload\n const { accessToken, client, uid, expiry, userId } = tokenPayload;\n\n // Directly dispatch LOGIN_SUCCESS since no HTTP request is needed\n const token = { accessToken, client, uid, expiry };\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: { token, userId },\n });\n\n return true;\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE, error });\n throw new Error(formatErrors(error));\n }\n}\n\nexport function logout({ dispatch, userDispatch, queryClient, error = null }) {\n localStorage.removeItem(AUTH_TOKEN_KEY);\n localStorage.removeItem(USER_ID_KEY);\n dispatch({ type: LOGOUT_REQUEST, error });\n userDispatch({ type: USER_CLEAR });\n queryClient.removeQueries();\n}\n","import { camelizeKeys, decamelizeKeys } from \"humps\";\nimport { get, throttle } from \"lodash\";\nimport { REFRESH_TOKEN } from \"actions\";\n\nexport const apiFetch = async ({\n token,\n dispatch,\n endpoint,\n method = \"GET\",\n body = null,\n includeMeta = false,\n}) => {\n if (!token) {\n return null;\n }\n\n const { accessToken, client, expiry, uid } = token;\n\n try {\n const response = await fetch(`${API_URL}${endpoint}`, {\n method,\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: body && JSON.stringify(decamelizeKeys(body)),\n });\n\n const headers = await response.headers;\n\n const responseJson = await response.json();\n const { data, meta, included, errors, error } = responseJson;\n\n if (!response.ok) {\n throw formatErrors(errors || error);\n }\n\n const newToken = {\n accessToken: headers.get(\"access-token\") || accessToken,\n client: headers.get(\"client\") || client,\n uid: headers.get(\"uid\") || uid,\n expiry: headers.get(\"expiry\") || expiry,\n };\n\n dispatch({\n type: REFRESH_TOKEN,\n payload: { token: newToken },\n });\n\n const formattedData = Object.assign(\n { data: camelizeKeys(data || {}) },\n {\n ...(responseJson.hasOwnProperty(\"included\")\n ? { included: included ? camelizeKeys(included) : [] }\n : {}),\n }\n );\n\n return includeMeta ? { ...formattedData, meta } : formattedData;\n } catch (error) {\n throw new Error(formatErrors(error));\n }\n};\n\nexport const getAllRecords = async ({\n token,\n dispatch,\n endpoint,\n queryParams = [],\n perPage = 1000,\n page = 1,\n}) => {\n return new Promise(async (resolve, reject) => {\n let collectedResponses = { data: [], included: [] };\n let total = 0;\n let pageNumber = page;\n let hasMoreRecords = true;\n let numberOfRequests = 0;\n let hasError = false;\n\n const MAKE_REQUEST = throttle(async () => {\n try {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `${endpoint}?page[size]=${perPage}&page[number]=${pageNumber}&stats[total]=count${\n queryParams.length ? `&${queryParams.join(\"&\")}` : \"\"\n }`,\n includeMeta: true,\n });\n total = get(response, \"meta.stats.total.count\" || 0);\n collectedResponses.data = collectedResponses.data.concat(response.data);\n collectedResponses.included = collectedResponses.included.concat(\n response.included\n );\n\n numberOfRequests++;\n pageNumber++;\n hasMoreRecords = total > collectedResponses.data.length;\n } catch (error) {\n hasError = true;\n reject(error);\n }\n }, 250);\n\n while (!hasError && hasMoreRecords && numberOfRequests <= 200) {\n await MAKE_REQUEST();\n }\n\n resolve(collectedResponses);\n });\n};\n\nexport const formatErrors = (errors) => {\n if (!errors || errors instanceof SyntaxError)\n return `There was an error making the request. We've notified our engineers and hope to address this issue shortly.`;\n\n if (typeof errors === \"string\") return errors;\n\n if (Array.isArray(errors)) {\n const errorArray = errors.map((error) => {\n if (typeof error === \"string\") return error;\n const title = error?.title || \"\";\n const detail = error?.detail || \"\";\n return `${title}${title && detail && \": \"}${detail}`;\n });\n if (errorArray.length === 1) return errorArray[0];\n return errorArray;\n }\n\n if (String(errors)) return String(errors);\n\n return `There was an error making the request. We've notified our engineers and hope to address this issue shortly.`;\n};\n\nexport const API_URL = process.env.REACT_APP_API_URL || \"\";\n\nexport const AUTH_TOKEN_KEY = \"@sac-token\";\nexport const USER_ID_KEY = \"@sac-user-id\";\n\nexport const TOKEN = localStorage.getItem(AUTH_TOKEN_KEY)\n ? JSON.parse(localStorage.getItem(AUTH_TOKEN_KEY))\n : {};\n\nexport const USER_ID = localStorage.getItem(USER_ID_KEY) || null;\n\nexport const saveToken = (token) =>\n localStorage.setItem(AUTH_TOKEN_KEY, JSON.stringify(token));\n\nexport const saveUserId = (id) => localStorage.setItem(USER_ID_KEY, id);\n\nexport const ALLSTATES = [\n { label: \"AK\", value: \"AK\" },\n { label: \"AL\", value: \"AL\" },\n { label: \"AR\", value: \"AR\" },\n { label: \"AS\", value: \"AS\" },\n { label: \"AZ\", value: \"AZ\" },\n { label: \"CA\", value: \"CA\" },\n { label: \"CO\", value: \"CO\" },\n { label: \"CT\", value: \"CT\" },\n { label: \"DC\", value: \"DC\" },\n { label: \"DE\", value: \"DE\" },\n { label: \"FL\", value: \"FL\" },\n { label: \"GA\", value: \"GA\" },\n { label: \"GU\", value: \"GU\" },\n { label: \"HI\", value: \"HI\" },\n { label: \"IA\", value: \"IA\" },\n { label: \"ID\", value: \"ID\" },\n { label: \"IL\", value: \"IL\" },\n { label: \"IN\", value: \"IN\" },\n { label: \"KS\", value: \"KS\" },\n { label: \"KY\", value: \"KY\" },\n { label: \"LA\", value: \"LA\" },\n { label: \"MA\", value: \"MA\" },\n { label: \"MD\", value: \"MD\" },\n { label: \"ME\", value: \"ME\" },\n { label: \"MI\", value: \"MI\" },\n { label: \"MN\", value: \"MN\" },\n { label: \"MO\", value: \"MO\" },\n { label: \"MP\", value: \"MP\" },\n { label: \"MS\", value: \"MS\" },\n { label: \"MT\", value: \"MT\" },\n { label: \"NC\", value: \"NC\" },\n { label: \"ND\", value: \"ND\" },\n { label: \"NE\", value: \"NE\" },\n { label: \"NH\", value: \"NH\" },\n { label: \"NJ\", value: \"NJ\" },\n { label: \"NM\", value: \"NM\" },\n { label: \"NV\", value: \"NV\" },\n { label: \"NY\", value: \"NY\" },\n { label: \"OH\", value: \"OH\" },\n { label: \"OK\", value: \"OK\" },\n { label: \"OR\", value: \"OR\" },\n { label: \"PA\", value: \"PA\" },\n { label: \"PR\", value: \"PR\" },\n { label: \"RI\", value: \"RI\" },\n { label: \"SC\", value: \"SC\" },\n { label: \"SD\", value: \"SD\" },\n { label: \"TN\", value: \"TN\" },\n { label: \"TX\", value: \"TX\" },\n { label: \"UT\", value: \"UT\" },\n { label: \"VA\", value: \"VA\" },\n { label: \"VI\", value: \"VI\" },\n { label: \"VT\", value: \"VT\" },\n { label: \"WA\", value: \"WA\" },\n { label: \"WI\", value: \"WI\" },\n { label: \"WV\", value: \"WV\" },\n { label: \"WY\", value: \"WY\" },\n];\n","export default __webpack_public_path__ + \"static/media/canine.91a9e2ea.svg\";","export default __webpack_public_path__ + \"static/media/feline.b11aba33.svg\";","export default __webpack_public_path__ + \"static/media/rabbit.b84b6318.svg\";","export default __webpack_public_path__ + \"static/media/equine.2640df38.svg\";","export default __webpack_public_path__ + \"static/media/small_mammal.cdcb1548.svg\";","export default __webpack_public_path__ + \"static/media/bird.2482dc35.svg\";","export default __webpack_public_path__ + \"static/media/reptile_or_amphibian.3d07a86b.svg\";","export default __webpack_public_path__ + \"static/media/farm_animal.6c56cf4d.svg\";","export default __webpack_public_path__ + \"static/media/upload_icon.c36e9577.svg\";","export default __webpack_public_path__ + \"static/media/sac-logo.7776b610.svg\";","export default __webpack_public_path__ + \"static/media/add_user_to_org.5bf52a52.svg\";","export default __webpack_public_path__ + \"static/media/create_a_coalition.cd6b1fcf.svg\";","export default __webpack_public_path__ + \"static/media/enter_data_manually.19b6be58.svg\";","export default __webpack_public_path__ + \"static/media/enter_data_with_csv.ad902a55.svg\";","export default __webpack_public_path__ + \"static/media/invite_org_to_coalition.51e882df.svg\";","export default __webpack_public_path__ + \"static/media/register_an_org.02102f25.svg\";","export default __webpack_public_path__ + \"static/media/request_to_join_coalition.a27124da.svg\";","export default __webpack_public_path__ + \"static/media/share_data_with_coalition.29811249.svg\";","export default __webpack_public_path__ + \"static/media/data_contributing_member.072aaf40.png\";","import canine from \"./canine.svg\";\nimport feline from \"./feline.svg\";\nimport rabbit from \"./rabbit.svg\";\nimport equine from \"./equine.svg\";\nimport small_mammal from \"./small_mammal.svg\";\nimport bird from \"./bird.svg\";\nimport reptile_or_amphibian from \"./reptile_or_amphibian.svg\";\nimport farm_animal from \"./farm_animal.svg\";\nimport upload_icon from \"./upload_icon.svg\";\nimport logo from \"./sac-logo.svg\";\n\nimport add_user_to_org from \"./add_user_to_org.svg\";\nimport create_a_coalition from \"./create_a_coalition.svg\";\nimport enter_data_manually from \"./enter_data_manually.svg\";\nimport enter_data_with_csv from \"./enter_data_with_csv.svg\";\nimport invite_org_to_coalition from \"./invite_org_to_coalition.svg\";\nimport register_an_org from \"./register_an_org.svg\";\nimport request_to_join_coalition from \"./request_to_join_coalition.svg\";\nimport share_data_with_coalition from \"./share_data_with_coalition.svg\";\n\nimport data_contributing_member from \"./marketing_resources/data_contributing_member.png\";\n\nconst images = {\n canine,\n feline,\n rabbit,\n equine,\n small_mammal,\n bird,\n reptile_or_amphibian,\n farm_animal,\n upload_icon,\n logo,\n};\n\nexport const videoThumbnails = {\n add_user_to_org,\n create_a_coalition,\n enter_data_manually,\n enter_data_with_csv,\n invite_org_to_coalition,\n register_an_org,\n request_to_join_coalition,\n share_data_with_coalition,\n};\n\nexport const marketingResources = [\n {\n id: \"data_contributing_member\",\n icon: data_contributing_member,\n },\n];\n\nexport default images;\n","import svgs from \"images\";\n\nexport const CANINE = \"canine\";\nexport const FELINE = \"feline\";\nexport const RABBIT = \"rabbit\";\nexport const EQUINE = \"equine\";\nexport const SMALL_MAMMAL = \"small_mammal\";\nexport const BIRD = \"bird\";\nexport const FARM_ANIMAL = \"farm_animal\";\nexport const REPTILE_OR_AMPHIBIAN = \"reptile_or_amphibian\";\n\nexport const speciesMap = {\n [CANINE]: {\n label: \"Canines\",\n icon: svgs[CANINE],\n },\n [FELINE]: { label: \"Felines\", icon: svgs[FELINE] },\n [RABBIT]: { label: \"Rabbits\", icon: svgs[RABBIT] },\n [EQUINE]: { label: \"Equines\", icon: svgs[EQUINE] },\n [SMALL_MAMMAL]: {\n label: \"Small Mammals\",\n icon: svgs[SMALL_MAMMAL],\n },\n [BIRD]: { label: \"Birds\", icon: svgs[BIRD] },\n [FARM_ANIMAL]: {\n label: \"Farm Animals\",\n icon: svgs[FARM_ANIMAL],\n },\n [REPTILE_OR_AMPHIBIAN]: {\n label: \"Reptile & Amphibians\",\n icon: svgs[REPTILE_OR_AMPHIBIAN],\n },\n};\n","import {\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGIN_FAILURE,\n LOGOUT_REQUEST,\n REFRESH_TOKEN,\n UPDATE_TOKEN,\n UPDATE_USER_ID,\n} from \"actions\";\nimport { saveToken, saveUserId, TOKEN, USER_ID } from \"utils\";\n\nexport const initialAuthState = {\n token: TOKEN,\n userId: USER_ID,\n};\n\nexport const AuthReducer = (initialState, action) => {\n switch (action.type) {\n case LOGIN_REQUEST:\n return initialState;\n\n case LOGIN_SUCCESS: {\n const { token, userId } = action.payload;\n\n saveToken(token);\n saveUserId(userId);\n\n return {\n ...initialState,\n token,\n userId,\n };\n }\n\n case UPDATE_USER_ID: {\n const { userId } = action.payload;\n\n return {\n ...initialState,\n userId,\n };\n }\n\n case UPDATE_TOKEN: {\n const { token } = action.payload;\n\n return {\n ...initialState,\n token,\n };\n }\n\n case REFRESH_TOKEN: {\n const { token } = action.payload;\n\n saveToken(token);\n\n return {\n ...initialState,\n token,\n };\n }\n\n case LOGIN_FAILURE:\n return {\n ...initialState,\n errorMessage: action.error,\n };\n\n case LOGOUT_REQUEST:\n return {\n token: {},\n userId: null,\n errorMessage: action.error || null,\n };\n\n default:\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n};\n","import { COOKIE_CONSENT_UPDATE, COOKIE_CONSENT_CLEAR } from \"actions\";\nimport { get, set, remove } from \"js-cookie\";\n\nconst cookieValue = get(\"CookieConsent\");\n\nexport const initialCookieConsentState = {\n cookieValue,\n showCookieConsent: !cookieValue,\n};\n\nexport const CookieConsentReducer = (state, action) => {\n switch (action.type) {\n case COOKIE_CONSENT_UPDATE:\n // Set the CookieConsent cookie to expire in 1 year\n set(\"CookieConsent\", action.payload, { expires: 365 });\n return {\n cookieValue: action.payload,\n showCookieConsent: !action.payload,\n };\n case COOKIE_CONSENT_CLEAR:\n remove(\"CookieConsent\");\n return {\n cookieValue: undefined,\n showCookieConsent: true,\n };\n default:\n return state;\n }\n};\n","import { USER_CREATE, USER_UPDATE, USER_CLEAR } from \"actions\";\nimport { getIncludedDataByKey } from \"utils\";\nimport { get } from \"lodash\";\n\nexport const initialUserState = {\n attributes: {},\n coalitions: {},\n locations: [],\n pendingCoalitionContributorRequests: [],\n};\n\nexport const UserReducer = (state, action) => {\n switch (action.type) {\n case USER_CREATE:\n const {\n data: user,\n included,\n pendingCoalitionContributorRequests,\n } = action.payload;\n const userState = getUpdatedUserState({ user, included, state });\n\n return {\n ...state,\n ...userState,\n pendingCoalitionContributorRequests,\n };\n\n case USER_UPDATE: {\n return {\n ...state,\n ...action.payload,\n };\n }\n\n case USER_CLEAR: {\n return {\n ...initialUserState,\n };\n }\n\n default:\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n};\n\n/**\n * Constructs the user state from the /users/:userId API reponse\n * @param {Object} params\n * @param {string} params.user\n * @param {string} params.included\n * @param {string} params.state\n * @returns {Object} userState\n * @returns {string} userState.id\n * @returns {Object} userState.attributes\n * @returns {boolean} userState.isAdmin\n * @returns {boolean} userState.isOrgAdmin\n * @returns {boolean} userState.isDataPortalUser\n * @returns {boolean} userState.isCoalitionOnly\n * @returns {array} userState.coalitions\n * @returns {Object} userState.organization\n * @returns {Array} userState.locations\n */\nexport const getUpdatedUserState = ({ user, included, state }) => {\n const isAdmin = !!user.attributes.systemAdmin;\n\n // Construct the state from the includes\n const includedData = constructIncludedData({\n included,\n state,\n });\n const includedDataState = constructIncludedState(includedData);\n\n // Get the user's primary location (location record for the user's locationId attribute)\n const location = (get(includedData, \"locations\") || []).find(\n (loc) => loc.id === String(user.attributes.locationId)\n );\n // const currentOrganization = get(includedData, \"organizations\");\n const organization = (get(includedData, \"organizations\") || []).find(\n (org) => org.id === String(location?.attributes?.organizationId)\n );\n\n const membership = (get(includedData, \"memberships\") || []).find(\n (membership) => membership.attributes.resourceType === \"Organization\"\n );\n\n const isOrgAdmin =\n membership?.attributes.role === \"organization_manager\" || isAdmin;\n\n const primaryLocation = (get(includedData, \"locations\") || []).find(\n (loc) => loc.attributes.primary === true\n );\n\n return {\n id: user.id,\n attributes: Object.assign(\n user.attributes,\n location ? { locationName: location.attributes.name } : {}\n ),\n isAdmin,\n isOrgAdmin,\n isDataPortalUser: !!organization,\n isCoalitionOnly: !isAdmin && !organization,\n ...includedDataState,\n organization,\n primaryLocation,\n };\n};\n\n/**\n * Separates out records in the included array API response by the records `type` property\n * and returns the coalitions, locations, and organization associated with the logged in user\n * @param {Object} params\n * @param {string} params.included\n * @param {string} params.state\n * @returns {Object} includedData\n * @returns {Array} includedData.coalitions\n * @returns {Object} includedData.organization\n * @returns {Array} includedData.locations\n */\nexport const constructIncludedData = ({ included, state }) => {\n const locations = getLocations(included) || state.locations;\n const organizations = getOrganizations(included) || [];\n // const organization = getOrganization(organizations) || state.organization;\n const coalitions = getCoalitions(included) || state.coalitions;\n const memberships = getUserMemberships(included) || [];\n\n return {\n coalitions,\n organizations,\n locations,\n memberships,\n };\n};\n\n/**\n * Takes the includedData object and omits each property if there is no value\n * @param {Object} params\n * @param {string} [null] - params.coalitions If not null, object will have a `coalitions` property\n * @param {string} [null] - params.organization If not null, object will have a `organization` property\n * @param {string} [null] - params.locations If not null, object will have a `locations` property\n * @returns {Object} includedState\n * @returns {Array} includedState.coalitions\n * @returns {Object} includedState.organization\n * @returns {Array} includedState.locations\n */\nexport const constructIncludedState = (includedData) => {\n return {\n ...(includedData.coalitions ? { coalitions: includedData.coalitions } : {}),\n ...(includedData.locations ? { locations: includedData.locations } : {}),\n };\n};\n\n/**\n * Filters the included array to the location records\n * @param {Array} included\n * @returns {(Array|null)} location records\n */\nexport const getLocations = (included) => {\n return getIncludedDataByKey({ included, type: \"locations\" });\n};\n\n/**\n * Filters the included array to the organiztion records\n * @param {Array} included\n * @returns {(Array|null)} organization records\n */\nexport const getOrganizations = (included) => {\n return getIncludedDataByKey({ included, type: \"organizations\" });\n};\n\n/**\n * Filters the included array to the coalition records\n * @param {Array} included\n * @returns {(Array|null)} coalition records\n */\nexport const getCoalitions = (included) => {\n const coalitionMemberships = getCoalitionMemberships(included) || [];\n const userMemberships = (getUserMemberships(included) || []).filter(\n (membership) => membership.attributes.resourceType === \"Coalition\"\n );\n\n const memberships = [...coalitionMemberships, ...userMemberships];\n\n return memberships.reduce((coalitionMap, membership) => {\n let coalitionId;\n const isCoalitionUser = membership.type === \"user_memberships\";\n\n // The coalition id is the `resourceId` on user membership records and `coalitionId` on coalition membership records\n coalitionId = isCoalitionUser\n ? membership.attributes.resourceId\n : membership.attributes.coalitionId;\n\n const membershipKey = isCoalitionUser ? \"userMembership\" : \"orgMembership\";\n\n if (coalitionMap[coalitionId]) {\n coalitionMap[coalitionId][membershipKey] = membership;\n } else {\n coalitionMap[coalitionId] = {\n [membershipKey]: membership,\n };\n }\n\n return coalitionMap;\n }, {});\n};\n\n/**\n * Filters the included array to the coalition membership records\n * @param {Array} included\n * @returns {(Array|null)} coalition membership records\n */\nexport const getCoalitionMemberships = (included) => {\n return getIncludedDataByKey({\n included,\n type: \"coalition_memberships\",\n });\n};\n\n/**\n * Filters the included array to the user membership records\n * @param {Array} included\n * @returns {(Array|null)} user membership records\n */\nexport const getUserMemberships = (included) => {\n return getIncludedDataByKey({\n included,\n type: \"user_memberships\",\n });\n};\n\n/**\n * Returns the first organization record in an array or org records; returns null if the array is nil\n * @param {Array} organizations\n * @returns {(Object|null)} organization record\n */\nexport const getOrganization = (organizations) => {\n // Organization - If the user has organizations we're assuming it's an array\n // with a length of one, since a user can only have one organization association\n if (!organizations) return null;\n return organizations.length ? organizations[0] : null;\n};\n","import React from \"react\";\nimport { AuthReducer, initialAuthState } from \"../reducers\";\n\nexport const AuthStateContext = React.createContext();\nexport const AuthDispatchContext = React.createContext();\n\nexport function useAuthState() {\n const context = React.useContext(AuthStateContext);\n if (context === undefined) {\n throw new Error(\"useAuthState must be used within a AuthProvider\");\n }\n\n return context;\n}\n\nexport function useAuthDispatch() {\n const context = React.useContext(AuthDispatchContext);\n if (context === undefined) {\n throw new Error(\"useAuthDispatch must be used within a AuthProvider\");\n }\n\n return context;\n}\n\nexport const AuthProvider = ({ children }) => {\n const [authData, dispatch] = React.useReducer(AuthReducer, initialAuthState);\n\n return (\n \n \n {children}\n \n \n );\n};\n","import React from \"react\";\nimport { CookieConsentReducer, initialCookieConsentState } from \"../reducers\";\n\nexport const CookieConsentStateContext = React.createContext();\nexport const CookieConsentDispatchContext = React.createContext();\n\nexport function useCookieConsentState() {\n const context = React.useContext(CookieConsentStateContext);\n if (context === undefined) {\n throw new Error(\n \"useCookieConsentState must be used within a CookieConsentProvider\"\n );\n }\n\n return context;\n}\n\nexport function useCookieConsentDispatch() {\n const context = React.useContext(CookieConsentDispatchContext);\n if (context === undefined) {\n throw new Error(\n \"useCookieConsentDispatch must be used within a CookieConsentProvider\"\n );\n }\n\n return context;\n}\n\nexport const CookieConsentProvider = ({ children }) => {\n const [showCookieConsent, dispatch] = React.useReducer(\n CookieConsentReducer,\n initialCookieConsentState\n );\n\n return (\n \n \n {children}\n \n \n );\n};\n","export default __webpack_public_path__ + \"static/media/sac-logo.7776b610_NEW.8c670d26.svg\";","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport logo from \"images/sac-logo.7776b610_NEW.svg\";\n\nconst LoadingIndicator = ({ inline, content = <>Loading… }) => {\n return (\n \n \n {!inline && (\n \n )}\n
{content}
\n \n \n );\n};\n\nLoadingIndicator.propTypes = {\n inline: PropTypes.bool,\n content: PropTypes.object,\n};\n\nLoadingIndicator.defaultProps = {\n inline: false,\n content: <>Loading…,\n};\n\nexport default LoadingIndicator;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faAngleDown,\n faAngleUp,\n faUser,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { usePermissions, ROUTE_GUARDS } from \"utils\";\nimport {\n Menu,\n MenuItem,\n MenuButton,\n MenuHeader,\n FocusableItem,\n} from \"@szhsin/react-menu\";\n\nconst ProfileDropdown = ({ username, organization, logoutMethod }) => {\n const permissions = usePermissions();\n\n const orgId = organization?.id || null;\n const orgName = organization?.name || null;\n\n const chevron = ({ open }) => {\n const icon = open ? faAngleUp : faAngleDown;\n return ;\n };\n\n const buttonCopy = ({ open }) => {\n return (\n <>\n \n {username || \"My Account\"}\n {chevron({ open })}\n \n );\n };\n\n return (\n (\n \n {buttonCopy({ open })}\n \n )}\n className=\"profile-dropdown\"\n data-testid=\"user-profile-dropdown\"\n align=\"end\"\n >\n {/* Username/Organization */}\n \n {username || \"My Account\"}\n {orgName &&
{orgName}
}\n
\n\n {/* Organization */}\n {permissions[ROUTE_GUARDS.ORG_MEMBER]() ? (\n \n {({ ref, closeMenu }) => (\n \n Organization\n \n )}\n \n ) : null}\n\n {/* Profile */}\n \n {({ ref, closeMenu }) => (\n \n Profile\n \n )}\n \n\n {/* Logout */}\n Logout\n \n );\n};\n\nProfileDropdown.propTypes = {\n username: PropTypes.string,\n organization: PropTypes.object,\n};\n\nProfileDropdown.defaultProps = {\n username: \"My Account\",\n organization: null,\n};\n\nexport default ProfileDropdown;\n","import React from \"react\";\nimport Modal from \"react-modal\";\n\nconst AlertModal = ({\n children,\n isModalOpen,\n closeModal,\n contentLabel,\n shouldCloseOnOverlayClick,\n}) => {\n return (\n // https://github.com/reactjs/react-modal\n \n {children}\n \n );\n};\n\nexport default AlertModal;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\n\nconst Button = ({\n emphasis,\n onClick,\n to,\n href,\n className,\n isLoading,\n disabled,\n loadingText,\n ref,\n children,\n download,\n type = \"button\",\n ...props\n}) => {\n const handleClick = (e) => {\n e.preventDefault();\n onClick();\n };\n\n let ButtonType = \"button\";\n\n if (to) ButtonType = Link;\n if (href) ButtonType = \"a\";\n\n return (\n \n {isLoading && loadingText ? loadingText : children}\n \n );\n};\n\nButton.propTypes = {\n emphasis: PropTypes.oneOf([\n \"primary\",\n \"secondary\",\n \"white\",\n \"transparent\",\n \"link\",\n \"gold\",\n \"teal\",\n ]),\n type: PropTypes.oneOf([\"button\", \"submit\", \"reset\"]),\n onClick: PropTypes.func,\n to: PropTypes.string,\n href: PropTypes.string,\n className: PropTypes.string,\n isLoading: PropTypes.bool,\n loadingText: PropTypes.object,\n disabled: PropTypes.bool,\n download: PropTypes.bool,\n children: PropTypes.node,\n \"data-testid\": PropTypes.string,\n};\n\nButton.defaultProps = {\n className: \"\",\n type: \"button\",\n emphasis: \"primary\",\n isLoading: false,\n disabled: false,\n download: false,\n};\n\nexport default Button;\n","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHomeIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 3L4 13.7445V27.2059H26V13.7445L15 3Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9196 26.7121V17.3262H10.9541V26.7121\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHomeIcon);\nexport default __webpack_public_path__ + \"static/media/home_icon.f4f28fd4.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport { useMutation } from \"react-query\";\nimport { cloneDeep } from \"lodash\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { USER_UPDATE } from \"actions\";\nimport AlertModal from \"components/AlertModal\";\nimport Button from \"components/Button\";\nimport {\n useAuthDispatch,\n useAuthState,\n useUserDispatch,\n useUserState,\n} from \"context\";\nimport { apiFetch } from \"utils\";\n\nconst LocationSelector = ({ locations, locationId }) => {\n const { token, userId } = useAuthState();\n const dispatch = useAuthDispatch();\n const userDispatch = useUserDispatch();\n const { attributes, locations: stateLocations } = useUserState();\n const [location, setLocation] = useState(locationId || \"\");\n const [tempLocation, setTempLocation] = useState(null);\n const [isModalOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n setLocation(locationId || \"\");\n }, [locationId]);\n\n const openModal = (event) => {\n setTempLocation(event.target.value);\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setTempLocation(null);\n setIsOpen(false);\n window.location.reload();\n };\n\n const {\n mutate: updateUserLocationId,\n isLoading,\n error,\n } = useMutation(\n (locationId) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users/${userId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: userId,\n type: \"users\",\n attributes: {\n locationId,\n },\n },\n },\n }),\n {\n onSuccess: (response) => {\n const locationId = response.data.attributes.locationId;\n const location = stateLocations.find(\n (loc) => loc.id === String(locationId)\n );\n userDispatch({\n type: USER_UPDATE,\n payload: {\n attributes: Object.assign(cloneDeep(attributes), {\n locationId,\n ...(location ? { locationName: location.attributes.name } : {}),\n }),\n },\n });\n closeModal();\n },\n }\n );\n\n return (\n locations.length > 1 && (\n
\n \n \n {locations.map((item) => (\n \n ))}\n \n\n \n updateUserLocationId(tempLocation)}\n />\n \n
\n )\n );\n};\n\nexport default LocationSelector;\n\nconst AlertContent = ({ isLoading, error, closeModal, confirmModal }) => {\n return (\n
\n {isLoading ? (\n
Loading…
\n ) : (\n <>\n

\n \n {error ? \"Error\" : \"Warning!\"}\n

\n\n

\n {error\n ? \"There was an error with the request.\"\n : `If you have any changes or edits in progress and switch locations you will lose un-saved data.`}\n

\n\n
\n \n \n
\n \n )}\n
\n );\n};\n","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDataIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2907 13.4549H4V26.0255H26V7.10742H18.7093\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5817 25.9008V3H11.291V26.0253\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDataIcon);\nexport default __webpack_public_path__ + \"static/media/data_icon.e98cbfa4.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgServicesIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.44451 3.74023L4.07812 4.5418C4.07812 5.13711 4.07812 7.46211 4.07812 11.9996C4.07812 16.5371 7.8875 17.7652 9.79219 17.8121C9.5125 20.5152 10.9219 25.9215 16.5 25.9215C22.0781 25.9215 23.25 21.4215 23.25 19.4996C23.25 17.5777 23.25 13.8746 23.25 13.8746\",\n stroke: \"currentColor\",\n strokeWidth: 1.6\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.79668 17.8121C11.7014 17.7652 15.5107 16.5371 15.5107 11.9996C15.5107 7.46211 15.5107 5.13711 15.5107 4.5418L12.1444 3.74023\",\n stroke: \"currentColor\",\n strokeWidth: 1.6\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8313 12.0937C25.8313 10.6722 24.6715 9.5125 23.25 9.5125C21.8285 9.5125 20.6687 10.6722 20.6687 12.0937C20.6687 13.5153 21.8285 14.675 23.25 14.675C24.6715 14.675 25.8313 13.5153 25.8313 12.0937Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", null, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\",\n transform: \"translate(3 3)\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgServicesIcon);\nexport default __webpack_public_path__ + \"static/media/services_icon.35b28b2c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCoalitionsIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 4H4V25.5578H26V4Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.0227 4.39062V10.2346C16.0227 11.0138 15.3832 11.6631 14.6158 11.6631H13.4646C12.6972 11.6631 12.0576 12.3125 12.0576 13.0917V16.8578C12.0576 17.637 12.6972 18.2863 13.4646 18.2863H14.6158C15.3832 18.2863 16.0227 18.9356 16.0227 19.7148V25.5588\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCoalitionsIcon);\nexport default __webpack_public_path__ + \"static/media/coalitions_icon.c8df6d88.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUsersIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.1738 13.5898C13.5458 13.5898 15.4687 11.6669 15.4687 9.29491C15.4687 6.9229 13.5458 5 11.1738 5C8.8018 5 6.87891 6.9229 6.87891 9.29491C6.87891 11.6669 8.8018 13.5898 11.1738 13.5898Z\",\n stroke: \"#919EAB\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.26459 13.903C3.85898 15.2305 3 17.0266 3 19.0048V25.1739H19.3207L19.3467 19.0048C19.3467 17.0786 18.5398 15.3346 17.1862 14.0071C17.1342 13.955 17.1081 13.929 17.0561 13.877\",\n stroke: \"#919EAB\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1844 11.0582C23.8573 11.0582 25.2135 9.70203 25.2135 8.0291C25.2135 6.35617 23.8573 5 22.1844 5C20.5114 5 19.1553 6.35617 19.1553 8.0291C19.1553 9.70203 20.5114 11.0582 22.1844 11.0582Z\",\n stroke: \"#919EAB\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1699 20.957H27.9746L28.0006 16.2196C28.0006 14.7359 27.3759 13.3823 26.3347 12.3672\",\n stroke: \"#919EAB\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUsersIcon);\nexport default __webpack_public_path__ + \"static/media/users_icon.d261674d.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgOrganizationsIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7087 5.13672L8.14746 7.81335\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1781 7.841L17.6436 5.19141\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5254 17.4108V12.1387\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5908 24.3075L22.1787 21.6309\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.06934 21.6016L12.6839 24.3052\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.74805 12.0059V17.3862\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.1364 6.62364C16.6685 6.62364 17.9105 5.36474 17.9105 3.81182C17.9105 2.25889 16.6685 1 15.1364 1C13.6043 1 12.3623 2.25889 12.3623 3.81182C12.3623 5.36474 13.6043 6.62364 15.1364 6.62364Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.1364 28.3619C16.6685 28.3619 17.9105 27.103 17.9105 25.5501C17.9105 23.9972 16.6685 22.7383 15.1364 22.7383C13.6043 22.7383 12.3623 23.9972 12.3623 25.5501C12.3623 27.103 13.6043 28.3619 15.1364 28.3619Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.77408 12.0572C7.30617 12.0572 8.54817 10.7983 8.54817 9.24541C8.54817 7.69249 7.30617 6.43359 5.77408 6.43359C4.242 6.43359 3 7.69249 3 9.24541C3 10.7983 4.242 12.0572 5.77408 12.0572Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 20.1946C3 21.7357 4.227 23.0064 5.77408 23.0064C7.32117 23.0064 8.54817 21.7628 8.54817 20.1946C8.54817 18.6535 7.32117 17.3828 5.77408 17.3828C5.74741 17.3828 5.69406 17.3828 5.66739 17.3828C4.17365 17.4639 3 18.6806 3 20.1946Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.526 23.0065C26.0581 23.0065 27.3001 21.7476 27.3001 20.1946C27.3001 18.6417 26.0581 17.3828 24.526 17.3828C22.994 17.3828 21.752 18.6417 21.752 20.1946C21.752 21.7476 22.994 23.0065 24.526 23.0065Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.526 12.0572C26.0581 12.0572 27.3001 10.7983 27.3001 9.24541C27.3001 7.69249 26.0581 6.43359 24.526 6.43359C22.994 6.43359 21.752 7.69249 21.752 9.24541C21.752 10.7983 22.994 12.0572 24.526 12.0572Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.0561 19.0301C17.3102 19.0301 19.1375 17.2027 19.1375 14.9486C19.1375 12.6945 17.3102 10.8672 15.0561 10.8672C12.8019 10.8672 10.9746 12.6945 10.9746 14.9486C10.9746 17.2027 12.8019 19.0301 15.0561 19.0301Z\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOrganizationsIcon);\nexport default __webpack_public_path__ + \"static/media/organizations_icon.9a7642ba.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNationalDataIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 30,\n viewBox: \"0 0 31 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 25.945H4V4\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.7959 17.7103L12.5436 12.9626L16.7638 17.1828L25.8372 8.10938\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.0488 13.5996V7.79688H20.3516\",\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n strokeMiterlimit: 10\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNationalDataIcon);\nexport default __webpack_public_path__ + \"static/media/national_data_icon.d66713e0.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgResourceCenterIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 31,\n height: 30,\n viewBox: \"0 0 64 64\",\n enableBackground: \"new 0 0 31 30\",\n xmlSpace: \"preserve\",\n fill: \"\",\n stroke: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M24.008,32.038L9.541,27.904c-0.527-0.146-1.084,0.155-1.236,0.688c-0.151,0.53,0.156,1.084,0.688,1.236 l14.467,4.134C23.551,33.987,23.643,34,23.734,34c0.435,0,0.835-0.286,0.961-0.726C24.847,32.744,24.539,32.19,24.008,32.038z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M24.008,39.038L9.541,34.905c-0.527-0.146-1.084,0.155-1.236,0.688c-0.151,0.531,0.156,1.084,0.688,1.236 l14.467,4.133C23.551,40.987,23.643,41,23.734,41c0.435,0,0.835-0.286,0.961-0.726C24.847,39.743,24.539,39.19,24.008,39.038z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M24.008,25.038L9.541,20.904c-0.527-0.146-1.084,0.155-1.236,0.688c-0.151,0.53,0.156,1.084,0.688,1.236 l14.467,4.134C23.551,26.987,23.643,27,23.734,27c0.435,0,0.835-0.286,0.961-0.726C24.847,25.744,24.539,25.19,24.008,25.038z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M24.008,18.038L9.541,13.904c-0.527-0.146-1.084,0.155-1.236,0.688c-0.151,0.53,0.156,1.084,0.688,1.236 l14.467,4.134C23.551,19.987,23.643,20,23.734,20c0.435,0,0.835-0.286,0.961-0.726C24.847,18.744,24.539,18.19,24.008,18.038z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M39.963,33.962c0.092,0,0.184-0.013,0.275-0.038l14.467-4.134c0.531-0.152,0.839-0.706,0.688-1.236 c-0.152-0.532-0.708-0.832-1.236-0.688L39.689,32c-0.531,0.152-0.839,0.706-0.688,1.236C39.128,33.676,39.528,33.962,39.963,33.962 z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M54.459,34.905l-14.467,4.133c-0.531,0.152-0.839,0.705-0.688,1.236C39.431,40.714,39.831,41,40.266,41 c0.092,0,0.184-0.013,0.275-0.038l14.467-4.133c0.531-0.152,0.839-0.705,0.688-1.236C55.543,35.061,54.987,34.761,54.459,34.905z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M54.459,20.904l-14.467,4.134c-0.531,0.152-0.839,0.706-0.688,1.236C39.431,26.714,39.831,27,40.266,27 c0.092,0,0.184-0.013,0.275-0.038l14.467-4.134c0.531-0.152,0.839-0.706,0.688-1.236C55.543,21.06,54.987,20.758,54.459,20.904z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M54.459,13.904l-14.467,4.134c-0.531,0.152-0.839,0.706-0.688,1.236C39.431,19.714,39.831,20,40.266,20 c0.092,0,0.184-0.013,0.275-0.038l14.467-4.134c0.531-0.152,0.839-0.706,0.688-1.236C55.543,14.06,54.987,13.76,54.459,13.904z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"currentColor\",\n strokeWidth: 1.6,\n d: \"M63.219,0.414c-0.354-0.271-0.784-0.413-1.221-0.413c-0.172,0-0.345,0.022-0.514,0.066L32,7.93L2.516,0.067 c-0.17-0.045-0.343-0.066-0.515-0.066c-0.437,0-0.866,0.142-1.22,0.413C0.289,0.793,0,1.379,0,2v49.999 c0,0.906,0.609,1.699,1.484,1.933l25.873,6.899C28.089,62.685,29.887,64,32,64s3.911-1.315,4.643-3.169l25.873-6.899 C63.391,53.698,64,52.905,64,51.999V2C64,1.379,63.711,0.793,63.219,0.414z M32,54c0.173,0,0.347-0.022,0.516-0.067L62,46.07v1.954 l-30,7.941L2,48.024V46.07l29.484,7.862C31.653,53.978,31.827,54,32,54z M1.998,2.001c0,0,0.001,0,0.003,0V2L31,9.733v42L2,44 L1.998,2.001z M34.979,59.205c-0.079,1.143-0.785,2.111-1.788,2.546l-0.676,0.181c-0.169,0.045-0.343,0.067-0.516,0.067 s-0.347-0.022-0.516-0.067l-0.676-0.181c-1.003-0.435-1.709-1.403-1.788-2.546L2,51.999v-1.906l29.744,7.874 C31.828,57.989,31.914,58,32,58s0.172-0.011,0.256-0.033L62,50.093v1.906L34.979,59.205z M33,51.733v-42L62,2v42L33,51.733z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgResourceCenterIcon);\nexport default __webpack_public_path__ + \"static/media/resource_center_icon.acc99552.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDashboardsIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"\",\n id: \"Layer_1\",\n width: 31,\n height: 30,\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 31 32\",\n xmlSpace: \"preserve\",\n enableBackground: \"new 0 0 31 30\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_bgCarrier\",\n strokeWidth: 0\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_tracerCarrier\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"SVGRepo_iconCarrier\"\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n id: \"dashboard_1_\",\n stroke: \"currentColor\",\n d: \"M31,31.36H1c-0.199,0-0.36-0.161-0.36-0.36V1c0-0.199,0.161-0.36,0.36-0.36h30 c0.199,0,0.36,0.161,0.36,0.36v30C31.36,31.199,31.199,31.36,31,31.36z M1.36,30.64h29.28V12.36H1.36V30.64z M13.36,11.64h17.28 V1.36H13.36V11.64z M1.36,11.64h11.28V1.36H1.36V11.64z M9,27.36c-2.956,0-5.36-2.405-5.36-5.36h0.72c0,2.559,2.082,4.64,4.64,4.64 s4.64-2.081,4.64-4.64S11.559,17.36,9,17.36v-0.72c2.956,0,5.36,2.405,5.36,5.36S11.956,27.36,9,27.36z M27.36,27h-0.72V16h0.721 L27.36,27L27.36,27z M23.36,27h-0.72v-8h0.721L23.36,27L23.36,27z M19.36,27h-0.72v-3h0.721L19.36,27L19.36,27z\"\n })), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"_Transparent_Rectangle\",\n style: {\n fill: \"none\"\n },\n width: 32,\n height: 32\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDashboardsIcon);\nexport default __webpack_public_path__ + \"static/media/dashboards_icon.85032369.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect } from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport { useUserState } from \"context\";\nimport { ReactComponent as HomeIcon } from \"images/home_icon.svg\";\nimport { ReactComponent as DataIcon } from \"images/data_icon.svg\";\nimport { ReactComponent as ServicesIcon } from \"images/services_icon.svg\";\nimport { ReactComponent as CoalitionIcon } from \"images/coalitions_icon.svg\";\nimport { ReactComponent as UsersIcon } from \"images/users_icon.svg\";\nimport { ReactComponent as OrganizationsIcon } from \"images/organizations_icon.svg\";\nimport { ReactComponent as NationalDataIcon } from \"images/national_data_icon.svg\";\nimport { ReactComponent as ResourceCenterIcon } from \"images/resource_center_icon.svg\";\nimport { ReactComponent as DashboardsIcon } from \"images/dashboards_icon.svg\";\n\nconst Navigation = () => {\n const { isAdmin, organization, coalitions, isOrgAdmin } = useUserState();\n const [hasOrg, setHasOrg] = useState(false);\n\n useEffect(() => {\n setHasOrg(!!organization);\n }, [organization]);\n\n return (\n \n );\n};\n\nexport default Navigation;\n","import React from \"react\";\nimport { COOKIE_CONSENT_CLEAR } from \"actions\";\nimport { useCookieConsentDispatch } from \"context\";\nimport classnames from \"classnames\";\n\nconst Footer = ({ showAttribution }) => {\n const currentYear = new Date().getFullYear();\n const dispatch = useCookieConsentDispatch();\n\n return (\n
\n
    \n
  • \n \n Privacy policy\n \n
  • \n
  • \n \n Terms of use\n \n
  • \n {showAttribution && (\n
  • \n dispatch({ type: COOKIE_CONSENT_CLEAR })}\n className=\"inline text-dashboard-blue transition-colors duration-300 hover:text-dashboard-blue-hover active:text-dashboard-blue-hover\"\n >\n Manage Consent\n \n
  • \n )}\n
\n \n

©{currentYear} Shelter Animals Count™

\n

\n Built by{\" \"}\n \n Software for Good\n \n

\n
\n \n );\n};\n\nexport default Footer;\n","import React, { useState, useEffect } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { logout } from \"actions\";\nimport { useLocation } from \"react-router-dom\";\nimport { useAuthDispatch, useUserState, useUserDispatch } from \"context\";\nimport { useMutation, useQueryClient } from \"react-query\";\nimport ProfileDropdown from \"components/ProfileDropdown\";\nimport LocationSelector from \"components/LocationSelector\";\nimport Navigation from \"components/Navigation\";\nimport Footer from \"components/Footer\";\nimport logo from \"images/sac-logo.7776b610_NEW.svg\";\n\nconst AppPage = ({ children }) => {\n const user = useUserState();\n const { pathname } = useLocation();\n\n const {\n attributes: { fullName, email, locationId },\n organization,\n locations,\n isCoalitionOnly,\n } = user;\n const dispatch = useAuthDispatch();\n const userDispatch = useUserDispatch();\n const [showLocationSelector, setShowLocationSelector] = useState(\n pathname === \"/\" && locationId && locations && organization\n );\n const history = useHistory();\n\n const { mutate: logoutRequest } = useMutation(logout);\n\n const queryClient = useQueryClient();\n\n const handleLogout = () => {\n logoutRequest({\n dispatch,\n userDispatch,\n queryClient,\n });\n history.push(\"/login\");\n };\n\n useEffect(() => {\n setShowLocationSelector(\n pathname === \"/\" && locationId && locations && organization\n );\n }, [locationId, locations, organization, pathname]);\n\n return (\n
\n
\n \n
\n \n \n \n \n
\n\n
\n \n
\n
\n \n {showLocationSelector && (\n \n )}\n\n \n
\n {children}\n
\n \n );\n};\n\nexport default AppPage;\n","import React, { useReducer, useContext, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { get } from \"lodash\";\nimport { useQuery, useMutation, useQueryClient } from \"react-query\";\nimport { UserReducer, initialUserState } from \"reducers\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { USER_CREATE, UPDATE_TOKEN, UPDATE_USER_ID, logout } from \"actions\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport AppPage from \"components/AppPage\";\nimport {\n apiFetch,\n AUTH_TOKEN_KEY,\n USER_ID_KEY,\n useQueryParams,\n useEvent,\n formatUiErrors,\n} from \"utils\";\nimport { getCoalitions } from \"reducers/user\";\n\nexport const UserStateContext = React.createContext();\nexport const UserDispatchContext = React.createContext();\n\nexport function useUserState() {\n const context = useContext(UserStateContext);\n if (context === undefined) {\n return \"\";\n }\n\n return context;\n}\n\nexport function useUserDispatch() {\n const context = useContext(UserDispatchContext);\n if (context === undefined) {\n throw new Error(\"useUserDispatch must be used within a UserProvider\");\n }\n\n return context;\n}\n\nexport const OrgStateContext = React.createContext();\nexport const OrgDispatchContext = React.createContext();\n\nexport function useOrgState() {\n const context = useContext(OrgStateContext);\n if (context === undefined) {\n throw new Error(\"useOrgState must be used within a OrgProvider\");\n }\n\n return context;\n}\n\nexport function useOrgDispatch() {\n const context = useContext(OrgDispatchContext);\n if (context === undefined) {\n throw new Error(\"useOrgDispatch must be used within a OrgProvider\");\n }\n\n return context;\n}\n\nexport const UserProvider = ({ children }) => {\n const [user, dispatch] = useReducer(UserReducer, initialUserState);\n const { token, userId } = useAuthState();\n const authDispatch = useAuthDispatch();\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const [error, setError] = useState(null);\n const [needsRefresh, setNeedsRefresh] = useState(false);\n\n // Get the query params from the url\n const {\n uid,\n accountConfirmationSuccess,\n alreadyConfirmed,\n orgAuthorizationSuccess,\n orgAlreadyConfirmed,\n } = useQueryParams();\n\n // User is logged in when their userId and token are truthy\n const [isLoggedIn, setIsLoggedIn] = useState(\n Boolean(userId) && Boolean(token?.accessToken)\n );\n\n // isLoading should be set to true if the user is not logged in\n const [isLoading, setIsLoading] = useState(isLoggedIn);\n\n const [isConfirmingAccount, setIsConfirmingAccount] = useState(\n accountConfirmationSuccess === \"true\"\n );\n\n const { mutate: logoutRequest } = useMutation(logout);\n const handleLogout = (error) => {\n logoutRequest({\n dispatch: authDispatch,\n userDispatch: dispatch,\n queryClient,\n error,\n });\n };\n\n const getUserData = async () => {\n // If the user is logged in we need to make a request to the /users/:userId endpoint\n // If confirm = true the getUser function will first make a request to refresh the auth token\n\n setIsLoading(true);\n const confirmToken = { ...token, uid };\n\n if (!!isConfirmingAccount)\n await apiFetch({\n token: confirmToken,\n dispatch: authDispatch,\n endpoint: \"/refresh_token\",\n });\n\n const user = await apiFetch({\n token: !!isConfirmingAccount ? confirmToken : token,\n dispatch: authDispatch,\n endpoint: `/api/v1/users/${userId}?include=locations,user_memberships,organizations,organizations.coalition_memberships`,\n });\n\n const pendingCoalitionContributorRequests =\n await getPendingCoalitionContributorRequests({\n ...user,\n token,\n dispatch: authDispatch,\n });\n\n return { ...user, pendingCoalitionContributorRequests };\n };\n\n const handleUserRequestSuccess = (response) => {\n dispatch({ type: USER_CREATE, payload: response || {} });\n\n if (!!isConfirmingAccount) {\n history.replace(\"/?account_confirmation_success=true\");\n }\n if (alreadyConfirmed === \"true\") {\n history.replace(\"/?already_confirmed=true\");\n }\n if (orgAuthorizationSuccess === \"true\") {\n history.replace(\"/?org_authorization_success=true\");\n }\n if (orgAlreadyConfirmed === \"true\") {\n history.replace(\"/?org_already_confirmed=true\");\n }\n\n setIsLoading(false);\n };\n\n const handleUserRequestError = (error) => {\n setError(null);\n handleLogout(error);\n history.replace(\"/login\");\n };\n\n const { refetch } = useQuery(\"user\", getUserData, {\n enabled: isLoggedIn,\n onSuccess: handleUserRequestSuccess,\n onError: handleUserRequestError,\n });\n\n // Listen to updates from localStorage and update the token in the auth state\n // if the new token is different from the existing one. This makes sure that the user's\n // session is refreshed after they confirm their email change.\n // NOTE: UPDATE_TOKEN differs from REFRESH_TOKEN in that it only updates the auth state\n // but doesn't resave the token to localStorage. That happens during the confirmation flow\n // when the auth token is refreshed with the apiFetch utility function.\n const handleLocalStorageChange = ({ key, newValue, oldValue }) => {\n if (key === AUTH_TOKEN_KEY && newValue !== oldValue) {\n authDispatch({\n type: UPDATE_TOKEN,\n payload: { token: newValue ? JSON.parse(newValue) : {} },\n });\n setNeedsRefresh(true);\n }\n if (key === USER_ID_KEY && newValue !== oldValue) {\n authDispatch({\n type: UPDATE_USER_ID,\n payload: { userId: newValue },\n });\n setNeedsRefresh(true);\n }\n };\n useEvent(\"storage\", handleLocalStorageChange);\n\n // Update the isLoggedIn state\n useEffect(() => {\n setIsLoggedIn(Boolean(userId) && Boolean(token?.accessToken));\n }, [userId, token]);\n\n // Update the isConfirmingAccount state\n useEffect(() => {\n setIsConfirmingAccount(accountConfirmationSuccess === \"true\");\n }, [accountConfirmationSuccess]);\n\n useEffect(() => {\n // Get the user data if the user is logged in\n isLoggedIn ? refetch() : setIsLoading(false);\n }, [isLoggedIn, refetch]);\n\n useEffect(() => {\n // Refresh if the local storage has changed and both auth values are set\n if (token?.accessToken && userId && needsRefresh) {\n refetch();\n setNeedsRefresh(false);\n }\n }, [token, userId, needsRefresh, refetch]);\n\n if (isLoading) return ;\n\n return (\n \n \n {error ? {formatUiErrors(error)} : children}\n \n \n );\n};\n\nconst getPendingCoalitionContributorRequests = async ({\n included,\n token,\n dispatch,\n}) => {\n const coalitions = getCoalitions(included) || [];\n\n const coalitionsUserManages = Object.keys(coalitions).filter(\n (key) =>\n get(coalitions[key].userMembership, \"attributes.role\") ===\n \"coalition_manager\"\n );\n\n // If the user is not a manager of any coalitions, return an empty array\n // because we don't need to make the request to see if any of their coalitions\n // have pending contributor requests\n if (!coalitionsUserManages.length) return [];\n\n const contributorRequests = constructPendingContributorRequestConfigs({\n coalitionIds: coalitionsUserManages,\n token,\n dispatch,\n });\n\n const coalitionsWithPendingRequests = await Promise.all(\n contributorRequests.map((config) => apiFetch(config))\n );\n\n return coalitionsWithPendingRequests.reduce((pendingRequests, res) => {\n if (!!res.included) {\n pendingRequests.push(res.data);\n }\n return pendingRequests;\n }, []);\n};\n\nconst constructPendingContributorRequestConfigs = ({\n coalitionIds,\n token,\n dispatch,\n}) => {\n return coalitionIds.map((coalitionId) => {\n return {\n token,\n dispatch,\n endpoint: `/api/v1/coalitions/${coalitionId}?include=coalition_memberships&filter[coalition_memberships.status]=requested&filter[coalition_memberships.status_actor]=Organization`,\n };\n });\n};\n","import { useEffect, useRef } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router-dom\";\nimport { useQueryClient } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport { cloneDeep } from \"lodash\";\nimport { getQueryParams } from \"./queryParams\";\nimport { useRouteGuard, formatUiErrors } from \"utils\";\nimport { useUserDispatch, useUserState } from \"context\";\nimport { USER_UPDATE } from \"actions\";\n\nexport function useQueryParams() {\n const { search } = useLocation();\n return getQueryParams(search);\n}\n\nexport function useEvent(event, handler, passive = false) {\n useEffect(() => {\n // initiate the event handler\n window.addEventListener(event, handler, passive);\n\n // this will clean up the event every time the component is re-rendered\n return function cleanup() {\n window.removeEventListener(event, handler);\n };\n });\n}\n\n/**\n * Gets route guards and returns permission functions\n * @example\n * const permissions = usePermissions();\n * // returns true if user is a system admin, false if they are not\n * permissions[ROUTE_GUARDS.ADMIN]();\n * @return {object} permissions object\n * @param {string} [key] each key returned is a property on the ROUTE_GUARDS constant\n */\nexport function usePermissions() {\n const match = useRouteMatch();\n const routeGuards = useRouteGuard(match);\n\n const perms = Object.keys(routeGuards).reduce((perms, key) => {\n // The permission version of the routeGuard should cast the routeGuard result\n // to a boolean value and return the opposite. So if a routeGuard returns `\"/coalitions\"`\n // as the redirect value, the corresponding permission should return `false`.\n // The logic is that a truthy routeGuard redirect value will render a \n // component in the PrivateRoute component, and a `false` permission will suppress\n // whatever UI element(s) it's wrapping. Both keep the user from seeing content they\n // should not be allowed to see.\n perms[key] = (...args) => !routeGuards[key](...args);\n return perms;\n }, {});\n return perms;\n}\n\nexport function useInvalidateQueries() {\n const queryClient = useQueryClient();\n\n return function (queries) {\n if (!queries) return;\n queries.forEach((query) => {\n queryClient.invalidateQueries(query.key, { ...query.config });\n });\n };\n}\n\nexport function useHandleRequestStates() {\n const invalidateQueries = useInvalidateQueries();\n\n return {\n handleSuccess: ({ message, queries }) => {\n toast.success(message, {\n autoClose: 3000,\n });\n\n if (queries && queries.length) invalidateQueries(queries);\n },\n handleError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n };\n}\n\nexport function useManageCoalitionMemberships() {\n const { coalitions } = useUserState();\n const dispatch = useUserDispatch();\n\n return {\n createContributorMembership: (membership) => {\n dispatch({\n type: USER_UPDATE,\n payload: {\n coalitions: createNewOrgMembership({ coalitions, membership }),\n },\n });\n },\n deleteContributorMembership: (coalitionId) => {\n dispatch({\n type: USER_UPDATE,\n payload: {\n coalitions: deleteOrgMembership({ coalitions, coalitionId }),\n },\n });\n },\n };\n}\n\nconst createNewOrgMembership = ({ coalitions, membership }) => {\n const newCoalitions = cloneDeep(coalitions);\n const coalitionId = String(membership.attributes.coalitionId);\n\n if (newCoalitions[coalitionId]) {\n newCoalitions[coalitionId].orgMembership = membership;\n } else {\n newCoalitions[coalitionId] = {\n orgMembership: membership,\n };\n }\n\n return newCoalitions;\n};\n\nconst deleteOrgMembership = ({ coalitions, coalitionId }) => {\n const newCoalitions = cloneDeep(coalitions);\n delete newCoalitions[coalitionId].orgMembership;\n return newCoalitions;\n};\n\n/**\n * Sets up an interval and clears it after unmounting\n * @param callback callback function\n * @param delay interval delay in millseconds\n */\nexport function useInterval(callback, delay) {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n","import { useMemo } from \"react\";\nimport { isValid, isFuture } from \"date-fns\";\nimport { get } from \"lodash\";\nimport { useUserState } from \"context\";\n\nexport const ROUTE_GUARDS = {\n ADMIN: \"isAdmin\",\n DATA_MATRIX: \"dataMatrix\",\n SERVICES_MATRIX: \"servicesMatrix\",\n ORG_MEMBER: \"orgMemberOnly\",\n ORGANIZATIONS: \"organizations\",\n CAN_VIEW_ORG: \"canViewOrg\",\n HAS_LEGACY_ORG: \"hasLegacyOrg\",\n HAS_COALITIONS: \"hasCoalitions\",\n CAN_VIEW_COALITION: \"canViewCoalition\",\n COALITION_CONTRIBUTOR: \"coalitionContributor\",\n COALITION_CONTRIBUTOR_ACTIVE: \"coalitionContributorActive\",\n COALITION_CONTRIBUTOR_PENDING: \"coalitionContributorPending\",\n COALITION_MANAGER: \"coalitionManager\",\n COALITION_VIEWER: \"coalitionViewer\",\n ORGANIZATION_MANAGER: \"organizationManager\",\n ORGANIZATION_USER: \"organizationUser\",\n};\n\nexport function useRouteGuard(match) {\n const { isAdmin, organization, coalitions, isOrgAdmin } = useUserState();\n const { params } = match;\n const { month, year, orgId, coalitionId } = params;\n\n const guards = useMemo(() => {\n return {\n [ROUTE_GUARDS.ADMIN]: () => (isAdmin ? null : \"/\"),\n [ROUTE_GUARDS.DATA_MATRIX]: (date) => {\n const { m, y } = date || {};\n return isValidDate({ month: m || month, year: y || year })\n ? null\n : \"/data-entry\";\n },\n [ROUTE_GUARDS.SERVICES_MATRIX]: (date) => {\n const { m, y } = date || {};\n return isValidDate({ month: m || month, year: y || year })\n ? null\n : \"/services\";\n },\n [ROUTE_GUARDS.ORG_MEMBER]: () =>\n !isAdmin && !!organization ? null : \"/\",\n [ROUTE_GUARDS.ORGANIZATIONS]: () =>\n !!organization ? `/organizations/${organization.id}` : null,\n [ROUTE_GUARDS.CAN_VIEW_ORG]: (id) =>\n isAdmin || (id || orgId) === organization?.id ? null : \"/\",\n [ROUTE_GUARDS.HAS_LEGACY_ORG]: () =>\n get(organization, \"attributes.status\") === \"imported\" ? null : \"/\",\n [ROUTE_GUARDS.HAS_COALITIONS]: () =>\n hasCoalitions({ coalitions, organization }) ? null : \"/coalitions\",\n [ROUTE_GUARDS.CAN_VIEW_COALITION]: (id) =>\n isAdmin ||\n canViewCoalition({ coalitionId: id || coalitionId, coalitions })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.COALITION_CONTRIBUTOR]: (id) =>\n isAdmin ||\n isCoalitionContributor({ coalitionId: id || coalitionId, coalitions })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.COALITION_CONTRIBUTOR_ACTIVE]: (id) =>\n isActiveCoalitionContributor({\n coalitionId: id || coalitionId,\n coalitions,\n })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.COALITION_CONTRIBUTOR_PENDING]: (id) =>\n isAdmin ||\n isPendingCoalitionContributor({\n coalitionId: id || coalitionId,\n coalitions,\n })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.COALITION_MANAGER]: (id) =>\n isAdmin ||\n isCoalitionManager({ coalitionId: id || coalitionId, coalitions })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.COALITION_VIEWER]: (id) =>\n isAdmin ||\n isCoalitionViewer({ coalitionId: id || coalitionId, coalitions })\n ? null\n : \"/coalitions\",\n [ROUTE_GUARDS.ORGANIZATION_MANAGER]: () => (isOrgAdmin ? null : \"/\"),\n };\n }, [\n isAdmin,\n organization,\n coalitions,\n month,\n year,\n orgId,\n coalitionId,\n isOrgAdmin,\n ]);\n\n return guards;\n}\n\nexport const isValidDate = ({ month, year }) => {\n const date = new Date(`${year}/${month}/1`);\n return isValid(date) && !isFuture(date);\n};\n\nexport const hasCoalitions = (coalitions) => {\n if (!coalitions) return false;\n return !!Object.keys(coalitions).length;\n};\n\nexport const canViewCoalition = ({ coalitionId, coalitions }) => {\n return get(coalitions[coalitionId], \"userMembership\");\n};\n\nexport const isCoalitionContributor = ({ coalitionId, coalitions }) => {\n return get(coalitions[coalitionId], \"orgMembership\");\n};\n\nexport const isActiveCoalitionContributor = ({ coalitionId, coalitions }) => {\n const orgMembership = get(coalitions[coalitionId], \"orgMembership\");\n return orgMembership && orgMembership.attributes.status === \"active\";\n};\n\nexport const isPendingCoalitionContributor = ({ coalitionId, coalitions }) => {\n const orgMembership = get(coalitions[coalitionId], \"orgMembership\");\n return (\n orgMembership &&\n (orgMembership.attributes.status === \"requested\" ||\n orgMembership.attributes.status === \"reminded\")\n );\n};\n\nexport const isCoalitionManager = ({ coalitionId, coalitions }) => {\n const userMembership = get(coalitions[coalitionId], \"userMembership\");\n return (\n userMembership &&\n userMembership.attributes.role === \"coalition_manager\" &&\n userMembership.attributes.dataUseAgreement === true\n );\n};\n\nexport const isCoalitionViewer = ({ coalitionId, coalitions }) => {\n const userMembership = get(coalitions[coalitionId], \"userMembership\");\n return (\n userMembership &&\n userMembership.attributes.role === \"coalition_viewer\" &&\n userMembership.attributes.dataUseAgreement === true\n );\n};\n","import { subMonths, startOfMonth } from \"date-fns\";\n\nexport const previousMonth = subMonths(startOfMonth(new Date()), 1);\nexport const currentMonth = subMonths(startOfMonth(new Date()), 0);\n\nexport const getMonthName = (monthNum) => {\n return getDateByMonth(monthNum).toLocaleString(\"default\", { month: \"long\" });\n};\n\nexport const getMonthAbbr = (monthNum) => {\n return getDateByMonth(monthNum).toLocaleString(\"default\", { month: \"short\" });\n};\n\nexport const getDateByMonth = (monthNum) => {\n if (\n isNaN(monthNum) ||\n typeof monthNum !== \"number\" ||\n monthNum > 12 ||\n monthNum < 1\n )\n return \"\";\n const year = new Date().getFullYear();\n // Need -1 because the Date function is expecting a 0-indexed month\n return new Date(year, monthNum - 1, 1);\n};\n","export const FORM_MODES = {\n VIEW: \"VIEW\",\n EDIT: \"EDIT\",\n ADD: \"ADD\",\n};\n","export const addNamespace = (namespace = \"\") => {\n return function withNamespace(fieldName) {\n return namespace ? `${namespace}.${fieldName}` : fieldName;\n };\n};\n","export const formatUiErrors = (errors) => {\n if (\n !errors ||\n (!Array.isArray(errors) &&\n typeof errors !== \"string\" &&\n !(errors instanceof Error))\n ) {\n return \"There was an error loading the application. Please contact Shelter Animals Count for support.\";\n }\n\n return Array.isArray(errors) ? (\n
    \n {errors.map((e, index) => (\n
  • {e.toString()}
  • \n ))}\n
\n ) : (\n errors.toString()\n );\n};\n","export const formatCsvValidationErrors = (errors, exampleCSV) => {\n if (\n !errors ||\n (!Array.isArray(errors) &&\n typeof errors !== \"string\" &&\n !(errors instanceof Error))\n ) {\n return \"There was an error loading the application. Please contact Shelter Animals Count for support.\";\n } else if (Array.isArray(errors)) {\n return (\n
    \n {errors.map((e, index) => (\n
  • {e.toString()}
  • \n ))}\n
\n );\n } else if (errors.toString().includes(\"Invalid CSV Headers\")) {\n // invalid CSV Headers is the error title returned from the csv validation service\n // check csv_header_validator.rb in the jsonapi_errors method\n return (\n
\n

\n In order to process this CSV file, the data must be labeled to match\n this example:\n

\n \n Download Example CSV\n \n

\n Files cannot be processed if they are missing expected columns or have\n incorrectly labeled columns.\n

\n

\n Check this error message to see which column header(s) need to be\n updated:\n

\n {errors.toString()}\n
\n );\n } else {\n return errors.toString();\n }\n};\n","export const EXPORT_DATE_FORMATS = {\n MONTH: \"MMMM yyyy\",\n YEAR: \"yyyy\",\n};\n\nexport const organizationHeaders = [\n { label: \"Organization ID\", key: \"id\" },\n { label: \"Organization Name\", key: \"name\" },\n { label: \"Organization Date Created\", key: \"createdAt\" },\n { label: \"Organization Status\", key: \"status\" },\n { label: \"Organization Start Date\", key: \"incorporatedOn\" },\n { label: \"EIN\", key: \"ein\" },\n { label: \"Organization Type\", key: \"organizationType\" },\n { label: \"Annual Intake\", key: \"annualIntake\" },\n { label: \"Animal Species\", key: \"animalSpecies\" },\n { label: \"Budget\", key: \"annualOperatingBudget\" },\n { label: \"Software Provider\", key: \"shelterSoftware\" },\n { label: \"Website\", key: \"websiteUrl\" },\n { label: \"Registration Referral\", key: \"referringOrganizationName\" },\n { label: \"Authorizer Name\", key: \"authorizerName\" },\n { label: \"Authorizer Title\", key: \"authorizerTitle\" },\n { label: \"Authorizer Email\", key: \"authorizerEmail\" },\n { label: \"Authorizer Phone Number\", key: \"authorizerPhoneNumber\" },\n];\n\nexport const transformOrganizationsData = (response) => {\n if (!response || !response.data) return [];\n return response.data.map((record) => {\n const {\n ein,\n createdAt,\n incorporatedOn,\n animalSpecies,\n authorizerPhoneNumber,\n ...attributes\n } = record.attributes;\n return Object.assign(record, {\n ...attributes,\n ein: formatEin(ein),\n createdAt: formatDateTime(createdAt),\n incorporatedOn: new Date(incorporatedOn).toLocaleDateString(),\n animalSpecies: formatAnimalSpecies(animalSpecies),\n authorizerPhoneNumber: formatPhoneNumberForDisplay(authorizerPhoneNumber),\n });\n });\n};\n\nexport const locationHeaders = [\n { label: \"Location ID\", key: \"id\" },\n { label: \"Location Name\", key: \"name\" },\n { label: \"Location Date Created\", key: \"createdAt\" },\n { label: \"Address Line 1\", key: \"addressLine1\" },\n { label: \"Address Line 2\", key: \"addressLine2\" },\n { label: \"City\", key: \"city\" },\n { label: \"State\", key: \"usState\" },\n { label: \"Zip Code\", key: \"zipCode\" },\n { label: \"County\", key: \"usCountyName\" },\n { label: \"Organzation ID\", key: \"organizationId\" },\n { label: \"Is Primary Location\", key: \"primary\" },\n { label: \"Contact Phone Number\", key: \"contactPhoneNumber\" },\n];\n\nexport const transformLocationsData = (response) => {\n if (!response || !response.data) return [];\n return response.data.map((record) => {\n const { createdAt, primary, contactPhoneNumber, ...attributes } =\n record.attributes;\n return Object.assign(record, {\n ...attributes,\n createdAt: formatDateTime(createdAt),\n primary: primary ? String(primary) : \"false\",\n contactPhoneNumber: formatPhoneNumberForDisplay(contactPhoneNumber),\n });\n });\n};\n\nexport const userAccountHeaders = [\n { label: \"User ID\", key: \"id\" },\n { label: \"Full Name\", key: \"fullName\" },\n { label: \"User Date Created\", key: \"createdAt\" },\n { label: \"Title\", key: \"title\" },\n { label: \"Email\", key: \"email\" },\n];\n\nexport const transformUserAccountsData = (response) => {\n if (!response || !response.data) return [];\n return response.data.map((record) => {\n const { createdAt, ...attributes } = record.attributes;\n return Object.assign(record, {\n ...attributes,\n createdAt: formatDateTime(createdAt),\n });\n });\n};\n\nexport const coalitionHeaders = [\n { label: \"Coalition ID\", key: \"id\" },\n { label: \"Coalition Name\", key: \"name\" },\n { label: \"Description\", key: \"description\" },\n { label: \"Operating Region\", key: \"operatingRegion\" },\n { label: \"Region Type\", key: \"operatingRegionType\" },\n];\n\nexport const transformCoalitionsData = (response) => {\n if (!response || !response.data) return [];\n return response.data.map((record) => {\n const { createdAt, ...attributes } = record.attributes;\n return Object.assign(record, {\n ...attributes,\n createdAt: formatDateTime(createdAt),\n });\n });\n};\n\nexport const formatDateTime = (date) => {\n if (!date) return \"\";\n return new Date(date).toLocaleString();\n};\n\nexport const formatDateObject = (date) => {\n if (!date) return \"\";\n const newDate = new Date(date);\n newDate.setTime(newDate.getTime() + newDate.getTimezoneOffset() * 60 * 1000);\n return newDate;\n};\n\nexport const formatEin = (ein) => {\n if (!ein || !String(ein).trim()) return \"\";\n return ein;\n};\n\nexport const formatBusinessNumber = (bn) => {\n if (!bn || !String(bn).trim()) return \"\";\n return bn;\n};\n\nexport const formatAnimalSpecies = (animalSpecies) => {\n if (!animalSpecies || animalSpecies === \"[]\") {\n return null;\n }\n return animalSpecies ? animalSpecies.join(\", \") : null;\n};\n\nconst api_phone_regex = /^[+]?1(\\d{10})(\\sx(\\d*))?$/;\nconst phone_regex = /^\\(?(\\d{3})\\)?[-. ]?(\\d{3})[-. ]?(\\d{4})$/;\n\n/**\n * Converts phone number string form API into an string for display value with formatting\n * i.e. \"+15555555555 x1234\" becomes \"(555) 555-5555 x1234\"\n * @param {string} phoneNumber\n * @returns {string}\n */\nexport const formatPhoneNumberForDisplay = (phoneNumber) => {\n if (!phoneNumber || !String(phoneNumber).trim()) return \"\";\n\n const matches = api_phone_regex.exec(phoneNumber.trim());\n if (!matches) return \"\";\n\n let formattedPhone = matches[1].replace(phone_regex, \"($1) $2-$3\");\n if (matches[3]) {\n formattedPhone += ` x${matches[3]}`;\n }\n return formattedPhone;\n};\n\n/**\n * Converts phone number string form API into an object with phoneNumber and extension values\n * i.e. \"+15555555555 x1234\" becomes {\n * phoneNumber: \"(555) 555-5555\"\n * extension: \"1234\"\n * }\n * @param {string} phoneNumber\n * @returns {Object} phoneNumberFields\n * @returns {string} phoneNumberFields.phoneNumber\n * @returns {string} phoneNumberFields.extension\n */\nexport const formatPhoneNumberForFormFields = (phoneNumber) => {\n const defaultReturn = { phoneNumber: \"\", extension: \"\" };\n if (!phoneNumber || !String(phoneNumber).trim()) return defaultReturn;\n\n const matches = api_phone_regex.exec(phoneNumber.trim());\n\n if (!matches) return defaultReturn;\n\n return {\n phoneNumber: matches[1].replace(phone_regex, \"($1) $2-$3\"),\n extension: matches[3] || \"\",\n };\n};\n\n/**\n * Converts phoneNumber and extension values into an string API consumption\n * * i.e. {\n * phoneNumber: \"(555) 555-5555\"\n * extension: \"1234\"\n * } becomes \"15555555555 x1234\"\n * @param {Object} phoneNumberFields\n * @param {string} phoneNumberFields.phoneNumber\n * @param {string} phoneNumberFields.extension\n * @returns {string}\n */\nexport const formatPhoneNumberForApi = ({\n phoneNumber = \"\",\n extension = \"\",\n}) => {\n if (!phoneNumber) return \"\";\n\n return `1${phoneNumber.replace(/\\D/g, \"\")}${\n extension ? ` x${extension.replace(/\\D/g, \"\")}` : \"\"\n }`;\n};\n","import { camelizeKeys } from \"humps\";\n\nexport const getQueryParams = (search) => {\n if (!search.match(/[^&?]*?=[^&?]*/g)) return {};\n return search.match(/[^&?]*?=[^&?]*/g).reduce((params, value) => {\n const split = value.split(\"=\");\n params[split[0]] = decodeURIComponent(split[1]);\n return camelizeKeys(params);\n }, {});\n};\n","export const dataEntryStatuses = {\n unbegun: \"unbegun\", // no records exist\n incomplete: \"incomplete\", // at least one record exists\n complete: \"complete\", // all records have complete status\n unavailable: \"unavailable\", // front-end only status for current and future months\n};\n","import { apiFetch } from \"utils\";\n\nexport const getOrganizations = async ({\n token,\n dispatch,\n page = 1,\n search = \"\",\n userId = \"\",\n}) => {\n return await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations?page[number]=${page}&extra_fields[organizations]=locations_count,locations_us_states,locations_provinces&stats[total]=count&sort=name${\n search ? `&filter[search]=${search}` : \"\"\n }${userId ? `&filter[user_id]=${userId}` : \"\"}`,\n includeMeta: true,\n });\n};\n\nexport const getLocations = async ({\n token,\n dispatch,\n page = 1,\n search = \"\",\n userId = \"\",\n}) => {\n return await apiFetch({\n token,\n dispatch,\n endpoint: `api/v1/locations?filter[organization_id][eq]=${search}&extra_fields[locations]=us_county_name&page[number]=1&stats[total]=count&sort=name`,\n includeMeta: true,\n });\n};\n\nconst constructGetCoalitionsEndpoint = ({\n page = 1,\n search = \"\",\n operatingRegions = \"\",\n userId = \"\",\n orgId = \"\",\n region = \"\",\n country = \"\",\n}) => {\n let endpoint = `/api/v1/coalitions?page[number]=${page}&extra_fields[coalitions]=organizations_count&stats[total]=count&filter[status][not_eq]=closed`;\n\n if (search) endpoint += `&filter[search]=${search}`;\n if (operatingRegions)\n endpoint += `&filter[operating_regions]=[\"${operatingRegions}\"]`;\n if (userId && orgId)\n endpoint += `&filter[for_user][eq]=${userId}&filter[user_memberships.user_id][eq]=${userId}&filter[coalition_memberships.organization_id][eq]=${orgId}&include=user_memberships,coalition_memberships`;\n if (userId && !orgId)\n endpoint += `&filter[for_user][eq]=${userId}&filter[user_memberships.user_id][eq]=${userId}&include=user_memberships`;\n if (!userId && orgId)\n endpoint += `&filter[for_organization][eq]=${orgId}&filter[coalition_memberships.organization_id][eq]=${orgId}&include=coalition_memberships`;\n if (region) endpoint += `&filter[operating_region_type]=${region}`;\n if (country) endpoint += `&filter[country]=${country}`;\n\n return endpoint;\n};\n\nexport const getCoalitions = ({\n token,\n dispatch,\n page = 1,\n search = \"\",\n operatingRegions = \"\",\n userId = \"\",\n orgId = \"\",\n region = \"\",\n country = \"\",\n}) =>\n apiFetch({\n token,\n dispatch,\n endpoint: constructGetCoalitionsEndpoint({\n page,\n search,\n operatingRegions,\n userId,\n orgId,\n region,\n country,\n }),\n includeMeta: true,\n });\n\nconst constructGetOrganizationsEndpoint = ({\n page = 1,\n search = \"\",\n state = \"\",\n organizationType = \"\",\n country = \"\",\n}) => {\n let endpoint = `/api/v1/organizations?page[number]=${page}&extra_fields[organizations]=locations_us_states,locations_provinces&stats[total]=count&sort=name&filter[searchable_organization][eq]=true`;\n\n if (search) endpoint += `&filter[search]=${search}`;\n if (state) endpoint += `&filter[locations_us_state]=${state}`;\n if (organizationType)\n endpoint += `&filter[organization_type]=${organizationType}`;\n if (country) endpoint += `&filter[country]=${country}`;\n\n return endpoint;\n};\n\nexport const getOrganizationsForUsers = ({\n token,\n dispatch,\n page = 1,\n search = \"\",\n state = \"\",\n organizationType = \"\",\n country = \"\",\n}) =>\n apiFetch({\n token,\n dispatch,\n endpoint: constructGetOrganizationsEndpoint({\n page,\n search,\n state,\n organizationType,\n country,\n }),\n includeMeta: true,\n });\n","// TODO: Uncomment when the software provider import is an option\n// const dataSoftwareIcon = (\n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n// \n// );\n\nconst csvIcon = (\n \n \n \n \n \n);\n\nconst manuallyIcon = (\n \n \n \n);\n\nexport const dataEntryOptions = {\n DATA_SOFTWARE: \"data_software\",\n CSV: \"csv\",\n MANUAL: \"manually\",\n};\n\nexport const dataEntryOptionsMap = {\n // [dataEntryOptions.DATA_SOFTWARE]: {\n // icon: dataSoftwareIcon,\n // heading: \"Data Software\",\n // content:\n // \"My shelter/rescue uses data tracking software and I would like to upload data from there.\",\n // },\n [dataEntryOptions.CSV]: {\n icon: csvIcon,\n heading: \"Upload CSV\",\n content:\n \"My organization uses data tracking software and/or a spreadsheet and I would like to upload a CSV.\",\n },\n [dataEntryOptions.MANUAL]: {\n icon: manuallyIcon,\n heading: \"Manually\",\n content:\n \"My organization does not use data tracking software and I will upload data manually.\",\n },\n};\n","import { uniq } from \"lodash\";\n\nexport * from \"./api\";\nexport * as SPECIES from \"./species\";\nexport { speciesMap } from \"./species\";\nexport * from \"./routeGuards\";\nexport * from \"./dates\";\nexport * from \"./queryParams\";\nexport * from \"./formModes\";\nexport * from \"./addNamespace\";\nexport * from \"./formatUiErrors\";\nexport * from \"./formatCsvValidationErrors\";\nexport * from \"./exports\";\nexport * from \"./hooks\";\nexport * from \"./dataStatus\";\nexport * from \"./requests\";\nexport * from \"./entryOptions\";\n\n/**\n * Calculates the total number number of pages in a paginated data set\n * @param {Object} params\n * @param {number} [0] params.totalCount\n * @param {number} [20] params.perPage\n * @return {number} Total number of pages\n */\nexport const getTotalPages = ({ totalCount = 0, perPage = 20 }) => {\n return Math.ceil(totalCount / perPage);\n};\n\n/**\n * Takes camelCaseString and converts it Camel Case String\n * @param {string} camelCase\n * @return {string} Title Case\n */\nexport const camelToTitle = (camelCase) => {\n if (!camelCase) return camelCase;\n return camelCase\n .replace(/(-|_)([a-z])/g, (g) => g[1].toUpperCase())\n .replace(/([A-Z])/g, (match) => ` ${match}`)\n .replace(/^./, (match) => match.toUpperCase())\n .trim();\n};\n\n/**\n * Takes string and converts it Title Case String\n * @param {string} str\n * @return {string} Title Case\n */\nexport const titleCase = (str) => {\n if (!str || typeof str !== \"string\") return str;\n return str\n .toLowerCase()\n .split(\" \")\n .map(function (word) {\n return word.replace(word[0], word[0].toUpperCase());\n })\n .join(\" \");\n};\n\n/**\n * Filters array to records where record.type === type\n * @param {Object} params\n * @param {array} [[]] params.included\n * @param {array} params.type\n * @return {(Array|null)} Records of the specified type\n */\nexport const getIncludedDataByKey = ({ included = [], type }) => {\n if (!included || !Array.isArray(included)) return null;\n return included.reduce((arr, inc) => {\n if (inc.type === type) {\n arr.push(inc);\n }\n return arr;\n }, []);\n};\n\n/**\n * Returns a coalition's operating region as an array\n * specifically turns a region that's a string into an array with a length of 1\n * i.e. constructCoalitionOperatingRegion(\"MN\") returns [\"MN\"]\n * @param {(Array|string)} region\n * @return {Array} Region as an array\n */\nexport const constructCoalitionOperatingRegion = (region) => {\n if (!region) {\n return [];\n }\n if (!Array.isArray(region)) {\n return [region];\n }\n return region;\n};\n\nexport const COALITION_TYPES = {\n INTERNATIONAL: \"International\",\n NATIONAL: \"National\",\n MULTISTATE: \"Multi-State (2 or more)\",\n STATEWIDE: \"Statewide\",\n COMMUNITY: \"Community\",\n MULTIPROVINCE: \"Multi-province (2 or more)\",\n PROVINCEWIDE: \"Provincewide\",\n};\n\n/**\n * Calculates the data status of a give set of records\n * Status is considered unbegun or complete if ALL records\n * have a status of unbegun or complete, respectively\n * Otherwise default to incomplete\n * @param {Array} dataStatusRecords\n * @return {string} Data status type of the organization\n */\nexport const getOrgDataStatus = (dataStatusRecords) => {\n // Get a list of all the unique statues\n const statuses = uniq(dataStatusRecords.map((rec) => rec.attributes.status));\n\n // If there's only 1 unique status and it's `unbegun` or `complete`\n // that's what all the statuses are\n if (\n statuses.length === 1 &&\n (statuses.includes(\"unbegun\") || statuses.includes(\"complete\"))\n )\n return statuses[0];\n\n // Otherwise we consider the status `incomplete`\n return \"incomplete\";\n};\n\nexport const COALITION_MEMBERSHIP_ACTIONS = {\n ACCEPT: \"accept\",\n REJECT: \"reject\",\n REMIND: \"remind\",\n};\n\nexport const getMonthAbbr = (monthNum) => {\n if (\n isNaN(monthNum) ||\n typeof monthNum !== \"number\" ||\n monthNum > 12 ||\n monthNum < 1\n )\n return \"\";\n const year = new Date().getFullYear();\n // Need -1 because the Date function is expecting a 0-indexed month\n const date = new Date(year, monthNum - 1, 1);\n return date.toLocaleString(\"default\", { month: \"short\" });\n};\n\nexport const isUnavailable = (month, year) => {\n const currentMonth = new Date().getMonth();\n const currentYear = new Date().getFullYear();\n\n if (year === currentYear) {\n return month > currentMonth + 1;\n }\n};\n","import React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { useAuthState, useUserState } from \"context\";\n\nfunction LoginRoute({ component: Component, ...rest }) {\n const { token, userId } = useAuthState();\n const { id } = useUserState();\n\n return (\n {\n // We can consider a user logged in if both the access token and userId are defined\n // In that case, redirect to the dashboard route\n if (Boolean(token?.accessToken) && Boolean(userId) && id) {\n return (\n \n );\n }\n\n return ;\n }}\n />\n );\n}\n\nexport default LoginRoute;\n","import React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport { useAuthState, useUserState } from \"context\";\n\nconst UnauthenticatedRoute = ({ component: Component, ...rest }) => {\n const { token, userId } = useAuthState();\n const { id } = useUserState();\n\n return (\n {\n // We can consider a user logged in if both the access token and userId are defined\n // In that case, redirect to the dashboard route\n if (Boolean(token?.accessToken) && Boolean(userId) && id)\n return (\n \n );\n\n return ;\n }}\n />\n );\n};\n\nexport default UnauthenticatedRoute;\n","import React from \"react\";\nimport { Route, Redirect } from \"react-router-dom\";\nimport AppPage from \"components/AppPage\";\nimport { useAuthState, useUserState } from \"context\";\nimport { useRouteGuard } from \"utils\";\nimport { get } from \"lodash\";\n\nfunction PrivateRoute({\n component: Component,\n meta,\n isSubRoute = false,\n ...rest\n}) {\n const { token, userId } = useAuthState();\n const { organization } = useUserState();\n const routeGuards = useRouteGuard(rest.computedMatch);\n\n let redirect = null;\n if (meta?.guards) {\n for (let i = 0; i < meta.guards.length; i++) {\n const metaKey = meta.guards[i];\n const guard = routeGuards[metaKey]();\n if (guard) {\n redirect = guard;\n break;\n }\n }\n }\n\n return (\n {\n // User is unauthenticated if the accessToken or userId are not defined\n if (!Boolean(token?.accessToken) || !Boolean(userId)) {\n return (\n \n );\n }\n\n // Legacy org redirect\n if (\n get(organization, \"attributes.status\") === \"imported\" &&\n !meta?.isLegacyRoute\n )\n return (\n \n );\n\n if (redirect) {\n return (\n \n );\n }\n\n if (isSubRoute) {\n return ;\n }\n\n return (\n \n \n \n );\n }}\n />\n );\n}\n\nexport default PrivateRoute;\n","import React from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { useMutation, useQueryClient } from \"react-query\";\nimport { logout } from \"actions\";\nimport { useAuthDispatch, useUserDispatch } from \"context\";\nimport logo from \"images/sac-logo.7776b610_NEW.svg\";\nimport Button from \"components/Button\";\n\nconst PageWrapper = ({ showLogout, children }) => {\n const dispatch = useAuthDispatch();\n const userDispatch = useUserDispatch();\n const history = useHistory();\n\n const { mutate: logoutRequest } = useMutation(logout);\n\n const queryClient = useQueryClient();\n\n const handleLogout = () => {\n logoutRequest({\n dispatch,\n userDispatch,\n queryClient,\n });\n history.push(\"/login\");\n };\n\n return (\n <>\n
\n
\n \n \n \n\n
\n {/* TODO: Is this the right link? */}\n \n shelteranimalscount.org\n \n\n {showLogout && }\n
\n
\n
\n\n
{children}
\n \n );\n};\n\nexport default PageWrapper;\n","import React, { useState, useEffect } from \"react\";\nimport { Field, useField, useFormikContext } from \"formik\";\nimport { get } from \"lodash\";\nimport ReactTooltip from \"react-tooltip\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\n\nconst FormField = ({ ...props }) => {\n const propsClone = { ...props };\n const {\n label,\n required,\n readOnly,\n type,\n tooltip,\n tooltipWidthClass,\n className,\n } = props;\n delete propsClone.tooltipWidthClass;\n\n const [field] = useField(props);\n const { name } = field;\n const { errors, touched } = useFormikContext();\n const [fieldErrors, setFieldErrors] = useState(null);\n const [isCheckbox, setIsCheckbox] = useState(false);\n\n useEffect(() => {\n const fieldErrors = get(errors, name);\n setFieldErrors(fieldErrors && get(touched, name) ? fieldErrors : null);\n }, [name, errors, touched]);\n\n useEffect(() => {\n setIsCheckbox(type === \"checkbox\");\n }, [type]);\n\n return (\n
\n \n \n \n \n \n
\n );\n};\n\nexport default FormField;\n\nconst LabelContent = ({\n label,\n required,\n readOnly,\n tooltip,\n tooltipWidthClass,\n name,\n isCheckbox,\n}) => {\n return (\n \n \n {label}\n {required && !readOnly && *}\n \n\n {tooltip && (\n \n )}\n \n );\n};\n\nconst Tooltip = ({ name, tooltip, widthClass }) => (\n <>\n \n \n {tooltip}\n \n \n);\n\nconst FieldErrors = ({ fieldErrors }) => {\n return fieldErrors ? (\n
{fieldErrors}
\n ) : null;\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useField, useFormikContext } from \"formik\";\nimport DatePicker from \"react-datepicker\";\nimport { get } from \"lodash\";\n\nconst DatePickerField = ({ ...props }) => {\n const { label, required, readOnly } = props;\n const [field, { value }, { setValue }] = useField(props);\n const { name } = field;\n const { errors, touched } = useFormikContext();\n const [fieldErrors, setFieldErrors] = useState(null);\n\n useEffect(() => {\n const fieldErrors = get(errors, name);\n setFieldErrors(fieldErrors && get(touched, name) ? fieldErrors : null);\n }, [name, errors, touched]);\n\n if (!label) {\n return (\n setValue(val)}\n />\n );\n }\n\n return (\n
\n \n {fieldErrors && (\n
{fieldErrors}
\n )}\n
\n );\n};\n\nexport default DatePickerField;\n","import React from \"react\";\n\nexport const OrganizationTypeTooltip = () => (\n <>\n
Government animal services
\n
\n
Animal shelter with a government contract
\n
\n (private/nonprofit agency with a physical facility and a contract for\n animal control or housing services)\n
\n
\n
\n
Animal rescue with a government contract
\n
\n (private/nonprofit and foster based agency with a contract for animal\n control or housing services)\n
\n
\n
\n
Shelter without a government contract
\n
(private/nonprofit agency with physical facility)
\n
\n
\n
Rescue without a government contract
\n
(private/nonprofit agency that’s foster-based)
\n
\n
\n
Non-sheltering service provider
\n
(agency that provides direct or partnered services)
\n
\n \n);\n\nexport const OrganizationStatusTooltip = () => (\n <>\n
Organization Status
\n
\n
Registered
\n
\n (New organization, has not clicked the “confirm” link in the\n confirmation email)\n
\n
\n
\n
Confirmed
\n
(Organization registered and confirmed)
\n
\n
\n
Closed
\n
(Organization is closed)
\n
\n
\n
Paused
\n
(Organization participation is paused)
\n
\n \n);\n\nexport const OrganizationEinTooltip = () => (\n <>\n
Employee Identification Number Format _________
\n \n);\n\nexport const OrganizationBusinessNumberTooltip = () => (\n <>\n
Business Number Format _________
\n \n);\n\nexport const OrganizationAnnualIntakeTooltip = () => (\n <>\n
\n This field is for administrative use only; please make your best\n approximation of annual intake of cats and dogs.\n
\n \n);\n\nexport const OrganizationAnnualBudgetTooltip = () => (\n <>\n
\n This field is for administrative use only; please provide an estimate of\n your annual operating budget.\n
\n \n);\n\nexport const OrganizationMemberRoleTooltip = () => (\n <>\n
Organization Managers have full access to the portal.
\n
Organization Viewers have view only access to the portal.
\n \n);\n\nexport const OrganizationCommunicationsOptInTooltip = () => (\n <>\n
\n By opting into this communication, it fosters additional collaboration\n between organizations. It allows SAC staff to forward your organization's\n contact information to other organizations that might be experiencing\n similar issues data related or otherwise.\n
\n \n);\n\nexport const OrganizationSearchableOptInTooltip = () => (\n <>\n
\n By opting into this communication, it fosters additional collaboration\n between organizations. It allows SAC contributing organizations to search\n for your organization by name, business number/ein, organization type,\n organization region or state\n
\n \n);\n\nexport const OrganizationMediaOptInTooltip = () => (\n <>\n
\n At Shelter Animals Count, we understand the importance of sharing the\n stories behind the numbers. We often receive inquiries from journalists\n who are interested in shedding light on the work and experiences of animal\n shelters across the country. If you're a regular SAC contributor and would\n like to be contacted by journalists for potential interviews or features,\n please select \"yes\" in the drop down menu to provide your consent.\n
\n \n);\n","import React from \"react\";\nimport { useMutation } from \"react-query\";\nimport { useHistory } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { toast } from \"react-toastify\";\nimport { endOfMonth, setMonth, format } from \"date-fns\";\nimport { cloneDeep } from \"lodash\";\nimport PageWrapper from \"components/PageWrapper\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport DatePickerField from \"components/DatePickerField\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport { OrganizationEinTooltip } from \"components/Tooltips\";\nimport {\n useAuthState,\n useAuthDispatch,\n useUserState,\n useUserDispatch,\n} from \"context\";\nimport { USER_UPDATE } from \"actions\";\nimport { apiFetch, formatUiErrors, formatDateObject, formatEin } from \"utils\";\n\nconst LegacyOrganizationDashboard = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { organization } = useUserState();\n const userDispatch = useUserDispatch();\n const history = useHistory();\n\n const initialValues = {\n websiteUrl: organization.attributes.websiteUrl || \"\",\n incorporatedOn: organization.attributes.incorporatedOn\n ? formatDateObject(organization.attributes.incorporatedOn)\n : \"\",\n ein: formatEin(organization.attributes.ein) || \"\",\n };\n\n const OrganizationSchema = Yup.object().shape({\n websiteUrl: Yup.string().url(\"Invalid URL\"),\n incorporatedOn: Yup.string().required(\"Date is required\"),\n ein: Yup.string()\n .matches(/^\\d{2}?-\\d{7}$/, \"Invalid EIN\")\n .required(\"EIN is required\"),\n });\n\n const { mutate: updateOrganizationDetails, isLoading } = useMutation(\n ({ websiteUrl, incorporatedOn, ein }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: \"/api/v1/organization_import_finalizers\",\n method: \"POST\",\n body: {\n data: {\n type: \"organization_import_finalizers\",\n attributes: {\n organizationId: organization.id,\n websiteUrl,\n incorporatedOn: format(incorporatedOn, \"dd/MM/yyyy\"),\n ein: ein.replace(/\\D/g, \"\"),\n },\n },\n },\n }),\n {\n onSuccess: (response) => {\n const newOrg = cloneDeep(organization);\n Object.assign(newOrg.attributes, {\n ...response.attributes,\n status: \"registered\",\n });\n userDispatch({\n type: USER_UPDATE,\n payload: {\n organization: newOrg,\n },\n });\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n history.push(\"/\");\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n className: \"toast-center\",\n });\n },\n }\n );\n\n if (!organization) return ;\n\n return (\n \n

{organization.attributes.name}

\n

\n We weren’t able to import this information from the legacy system\n for your organization. Please provide your organization’s start\n date, EIN, and optional website url.\n

\n\n \n {({ handleSubmit }) => (\n
\n
\n {/* Date Started */}\n \n\n {/* EIN */}\n }\n required\n />\n
\n\n
\n {/* Website */}\n \n
\n\n
\n Saving…}\n onClick={handleSubmit}\n >\n Update\n \n
\n
\n )}\n \n
\n );\n};\n\nexport default LegacyOrganizationDashboard;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\n\nconst Error = ({ showIcon, size, className, children }) => {\n return (\n \n {showIcon && (\n \n )}\n
{children}
\n \n );\n};\n\nError.propTypes = {\n size: PropTypes.oneOf([\"small\", \"large\"]),\n showIcon: PropTypes.bool,\n className: PropTypes.string,\n};\n\nError.defaultProps = {\n size: \"small\",\n};\n\nexport default Error;\n","export const isLastStackedBar = (data, dataKey) => {\n const bucketsWithData = Object.keys(speciesBuckets)\n .reverse()\n .reduce((arr, bucket) => {\n if (data[bucket]) arr[bucket] = data[bucket];\n return arr;\n }, {});\n\n return Object.keys(bucketsWithData)[0] === dataKey;\n};\n\nexport const getMonthColor = (monthNum) => {\n const currentMonth = new Date().getMonth();\n\n if (monthNum > currentMonth + 1) {\n return \"text-dashboard-medium-gray\";\n }\n return \"text-medium-gray\";\n};\n\nexport const transformGraphData = (response) => {\n const { included = [] } = response;\n // Create a config object where each key is a month of the year\n // Bootstrap each bucket of totals with zeros\n const initMonthsMap = {};\n for (let i = 1; i <= 12; i++) {\n if (!initMonthsMap[i])\n initMonthsMap[i] = { canine: 0, feline: 0, other: 0 };\n }\n\n const includedRecords = included.filter(\n (inc) => inc.type === \"animal_intakes\" || inc.type === \"animal_services\"\n );\n\n const monthsMap = includedRecords.reduce(\n (arr, item) => {\n const species = item.attributes.species;\n const monthOfRecord = item.attributes.monthOfRecord;\n\n // Assume the correct bucket is \"other\" unless the species is canine or feline\n let speciesBucket = speciesBuckets.other;\n if (\n species === speciesBuckets.canine ||\n species === speciesBuckets.feline\n ) {\n speciesBucket = species;\n }\n\n const total = () => {\n if (\n // totalLiveIntakeCount includes (totalOtherIntakesCount) to the total value\n item.attributes.totalLiveIntakeCount ||\n item.attributes.totalLiveIntakeCount === 0\n ) {\n return item.attributes.totalLiveIntakeCount;\n }\n return item.attributes.totalServicesCount;\n };\n arr[monthOfRecord][speciesBucket] += total();\n\n return arr;\n },\n { ...initMonthsMap }\n );\n\n // Loop through the months and construct an array\n return Object.keys(monthsMap).map((key) => {\n const { canine, feline, other } = monthsMap[key];\n return { month_of_record: parseInt(key, 10), canine, feline, other };\n });\n};\n\nexport const speciesBuckets = {\n canine: \"canine\",\n feline: \"feline\",\n other: \"other\",\n};\n\nexport const graphColors = {\n line: \"#DEE7EF\",\n yAxis: \"728B93\",\n canine: \"#056AA8\",\n feline: \"#2EB5BC\",\n other: \"#C4D1DC\",\n tooltipBg: \"#F5F7FA\",\n};\n\nexport const constructEndpoint = ({\n coalitionId,\n organizationId,\n coalitionYear,\n coalitionFilters,\n action = \"intakes\",\n}) => {\n var orgs = [];\n if (\n coalitionFilters &&\n coalitionFilters.organization_ids &&\n coalitionFilters.organization_ids.length > 0\n ) {\n orgs = coalitionFilters.organization_ids.map((a) => a.value);\n }\n return `/api/v1/locations?&include=${\n action === \"intakes\" ? \"animal_intakes\" : \"animal_services\"\n }&filter[coalition_data_sharing]=${coalitionId}:${\n action === \"intakes\"\n ? \"intake_outcome_data_sharing\"\n : \"community_service_data_sharing\"\n }${\n organizationId\n ? `&filter[organization_id][eq]=${organizationId}`\n : orgs.length > 0\n ? `&filter[organization_id][in_ids]=${orgs}`\n : \"\"\n }&filter[${\n action === \"intakes\" ? \"animal_intakes\" : \"animal_services\"\n }.year_of_record][eq]=${coalitionYear}&page[size]=1000`;\n};\n","import React from \"react\";\nimport { graphColors } from \"./utils\";\n\nconst IntakeOverviewGraphLegend = () => {\n return (\n
\n {/* Legend */}\n
\n \n \n \n
\n
\n );\n};\n\nexport default IntakeOverviewGraphLegend;\n\nconst IntakeOverviewGraphLegendItem = (props) => {\n const { backgroundColor, label } = props;\n return (\n
\n
\n {label}\n \n );\n};\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCaretLeft } from \"@fortawesome/free-solid-svg-icons\";\n\nconst ButtonIncrement = ({ onClick }) => {\n return (\n \n \n \n );\n};\n\nexport default ButtonIncrement;\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCaretRight } from \"@fortawesome/free-solid-svg-icons\";\n\nconst ButtonIncrement = ({ onClick, disabled }) => {\n return (\n \n \n \n );\n};\n\nexport default ButtonIncrement;\n","import React from \"react\";\n\nconst IntakeOverviewFilter = (props) => {\n const { className, year } = props;\n return (\n \n {year}\n \n );\n};\n\nexport default IntakeOverviewFilter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ButtonDecrement from \"components/ButtonDecrement\";\nimport ButtonIncrement from \"components/ButtonIncrement\";\nimport IntakeOverviewFilter from \"components/IntakeOverviewFilter\";\n\nconst DateFilter = ({ setYear, year }) => {\n const currentYear = new Date().getFullYear();\n return (\n
\n setYear(year - 1)} />\n \n setYear(year + 1)}\n />\n
\n );\n};\n\nDateFilter.propTypes = {\n setYear: PropTypes.func.isRequired,\n year: PropTypes.number.isRequired,\n};\n\nexport default DateFilter;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useQuery } from \"react-query\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport {\n apiFetch,\n getMonthName,\n getMonthAbbr,\n formatUiErrors,\n camelToTitle,\n} from \"utils\";\nimport {\n isLastStackedBar,\n getMonthColor,\n transformGraphData,\n speciesBuckets,\n graphColors,\n constructEndpoint,\n} from \"./utils\";\n// TODO: Upgrade recharts to 2.0.x when this issue is fixed:\n// https://github.com/recharts/recharts/issues/2360\nimport {\n ResponsiveContainer,\n BarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n} from \"recharts\";\nimport IntakeOverviewGraphLegend from \"./IntakeOverviewGraphLegend\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport DateFilter from \"components/IntakeOverviewGraphFilters/DateFilter\";\n\nconst IntakeOverviewGraph = ({\n coalitionId,\n coalitionPage,\n coalitionFilters,\n searchClick,\n setSearchClick,\n action,\n adminLocation,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { attributes } = useUserState();\n\n var locationId = attributes.locationId;\n if (!!adminLocation) locationId = adminLocation;\n\n const [year, setYear] = useState(new Date().getFullYear());\n const dashboardEndpoint =\n action === \"services\"\n ? `/api/v1/locations/${locationId}?include=animal_services&filter[animal_services.year_of_record][eq]=${year}`\n : `/api/v1/locations/${locationId}?include=animal_intakes&filter[animal_intakes.year_of_record][eq]=${year}`;\n\n const { orgName: organizationId, year: coalitionYear } = coalitionFilters;\n\n const coalitionEndpoint = constructEndpoint({\n coalitionId,\n organizationId,\n coalitionFilters,\n coalitionYear,\n action,\n });\n\n const {\n isLoading,\n error,\n data: response,\n refetch,\n } = useQuery(`intakeOverviewGraph${action}`, async () => {\n const req = await apiFetch({\n token,\n dispatch,\n endpoint: coalitionPage ? coalitionEndpoint : dashboardEndpoint,\n });\n if (setSearchClick) setSearchClick(false);\n return transformGraphData(req);\n });\n\n useEffect(refetch, [\n locationId,\n year,\n organizationId,\n isLoading,\n coalitionFilters,\n searchClick,\n refetch,\n action,\n ]);\n\n if (isLoading) {\n return (\n Loading intake graph…} />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n {/* Filters */}\n {!coalitionPage && }\n\n {/* Legend */}\n \n {/* Graph */}\n
\n \n \n \n }\n dataKey=\"month_of_record\"\n />\n }\n />\n (\n {getMonthName(val)}\n )}\n formatter={(val, name) => [val, camelToTitle(name)]}\n itemStyle={{ marginBottom: \"-6px\" }}\n />\n }\n />\n }\n />\n }\n />\n \n \n
\n \n );\n};\n\nIntakeOverviewGraph.propTypes = {\n coalitionId: PropTypes.string,\n coalitionPage: PropTypes.bool,\n coalitionFilters: PropTypes.shape({\n orgName: PropTypes.string.isRequired,\n year: PropTypes.string.isRequired,\n }),\n action: PropTypes.string,\n};\n\nIntakeOverviewGraph.defaultProps = {\n coalitionId: \"\",\n coalitionPage: false,\n coalitionFilters: {\n orgName: \"\",\n year: String(new Date().getFullYear()),\n },\n action: \"data-entry\",\n};\n\nexport default IntakeOverviewGraph;\n\nconst CustomBar = (props) => {\n const { dataKey, x, y, fill, width, height, payload } = props;\n\n return (\n <>\n \n\n {/* \"Fakes\" radius=0 on the bottom 2 corners since elements\n can only have a radius value that applies to all 4 corners */}\n {isLastStackedBar(payload, dataKey) ? (\n \n ) : null}\n \n );\n};\n\nconst CustomXTick = (props) => {\n const { x, y, height, textAnchor, payload } = props;\n\n return (\n \n \n {getMonthAbbr(payload.value)}\n \n \n );\n};\n\nconst CustomYTick = (props) => {\n const { index, y, width, payload } = props;\n\n return (\n \n {/* Tick line */}\n \n\n {/* Y axis value */}\n {index !== 0 ? (\n \n {payload.value}\n \n ) : null}\n \n );\n};\n","import ReactTooltip from \"react-tooltip\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { isNumber } from \"lodash\";\n\n/**\n * Takes object array and returns all the unique keys found in dataset.\n * @param {[object]]} data\n * @return arr\n */\nexport const getUniqueKeys = (data) =>\n Array.from(new Set([...data.map((entity) => Object.keys(entity)).flat()]));\n\nconst getRelatedKeys = ({ data, keySubString, accessKeys }) =>\n Object.keys(data)\n .filter((key) => key.includes(keySubString))\n .sort((a, b) => {\n const aIndex = accessKeys.findIndex((key) => a.indexOf(key) > -1);\n const bIndex = accessKeys.findIndex((key) => b.indexOf(key) > -1);\n if (aIndex > bIndex) return 1;\n if (aIndex < bIndex) return -1;\n return 0;\n });\n\n/**\n * Constructs table data based on API record\n * @param {object} data key/value pairs to parse out and group\n * @param {string} rowLabel label used on screen for row\n * @param {string} keySubString keys to select from data\n * @param {array} accessKeys array of \"accessor\" strings set by the columns\n */\nexport const getRowData = ({\n data,\n rowLabel,\n keySubString,\n accessKeys,\n tooltip,\n}) => {\n return getRelatedKeys({ data, keySubString, accessKeys }).reduce(\n (acc, key, i) =>\n !accessKeys[i]\n ? acc\n : {\n ...acc,\n [accessKeys[i]]: data[key],\n attributeKeys: acc[\"attributeKeys\"]\n ? [...acc[\"attributeKeys\"], key]\n : [key],\n },\n { rowLabel, tooltip }\n );\n};\n\n/**\n * Gets classes for each th element\n * @param {number} index index of the current header\n * @param {array} columns array of column values\n * @param {array} [columnWidths=null] array of widths for each column\n * @param {boolean} [dashboard=false] flags if table is dashboard variant\n * @param {array} [columnAlignments=null] array of alignment classes for each column\n * @return {string} classes\n */\nexport const getTableHeaderClasses = ({\n index,\n columnWidths = [],\n dashboard = false,\n columnAlignments = [],\n}) => {\n const defaultClasses = \"px-4 py-2 text-left font-normal text-table\";\n const textClasses = !dashboard\n ? \"bg-table-header-gray\"\n : `${index !== 0 ? \"bg-table-header-gray text-center\" : \"\"}`;\n const widthClass = columnWidths[index] || \"\";\n const alignmentClass = columnAlignments[index] || \"\";\n return `${defaultClasses} ${textClasses} ${widthClass} ${alignmentClass}`\n .trim()\n .replace(/\\s{2,}/g, \" \");\n};\n\n/**\n * Gets classes for each td element\n * @param {number} index index of the current cell\n * @param {boolean} [dashboard=false] flags if table is dashboard variant\n * @param {array} [columnAlignments=null] array of alignment classes for each column\n * @return {string} classes\n */\nexport const getTableCellClasses = ({\n index,\n dashboard = false,\n columnAlignments = [],\n}) => {\n const defaultClasses = \"px-4 py-2 text-table\";\n const borderClasses = `${!dashboard ? \"border\" : \"border-t border-b\"} ${\n index !== 0 ? \"border-l\" : \"\"\n } ${index !== 0 && dashboard ? \"text-center\" : \"\"}`;\n const alignmentClass = columnAlignments[index] || \"\";\n return `${defaultClasses} ${borderClasses} ${alignmentClass}`\n .trim()\n .replace(/\\s{2,}/g, \" \");\n};\n\n/**\n * Constructs JSX for a table row label\n * @param {object}\n * @param {boolean} value index of the current cell\n * @param {object} cell.row.original original row data object\n * @return {jsx} row label markup with optional tooltip\n */\nexport const rowLabelCell = ({\n value,\n cell: {\n row: { original },\n },\n}) => {\n const uuid = uuidv4();\n return (\n
\n {value}\n {original.tooltip && (\n <>\n \n \n {original.tooltip}\n \n \n )}\n
\n );\n};\n\n// This function returns a cell with a red border if the value of the\n// cell has not been added\nconst getCell = ({ value }) => {\n const withValue = value !== null && value !== undefined;\n return withValue ? (\n value\n ) : (\n
 
\n );\n};\n\n// Columns are identified statically since the data contains more than we want\n// the data does not match the \"accessor\" so the getRowData utility parses out keys containing the accessor\nexport const columns = [\n {\n accessor: \"rowLabel\",\n Header: \"\",\n Cell: rowLabelCell,\n Footer: \"Subtotal\",\n },\n {\n accessor: \"adult\",\n Header: \"Adult\",\n Cell: getCell,\n Footer: (data) => {\n // ternary operator because some fields use -1\n const adultTotal = data.rows.reduce(\n (sum, row) => (row.values.adult > 0 ? row.values.adult : 0) + sum,\n 0\n );\n return <>{adultTotal};\n },\n },\n {\n accessor: \"youth\",\n Header: \"Up to 5 mos.\",\n Cell: getCell,\n Footer: (data) => {\n const youthTotal = data.rows.reduce(\n (sum, row) => (row.values.youth > 0 ? row.values.youth : 0) + sum,\n 0\n );\n return <>{youthTotal};\n },\n },\n {\n accessor: \"ageUnknown\",\n Header: \"Age Unknown\",\n Cell: getCell,\n Footer: (data) => {\n const ageUnknownTotal = data.rows.reduce(\n (sum, row) =>\n (row.values.ageUnknown > 0 ? row.values.ageUnknown : 0) + sum,\n 0\n );\n return <>{ageUnknownTotal};\n },\n },\n {\n accessor: \"total\",\n Header: \"Subtotal\",\n Footer: (data) => {\n const total = data.rows.reduce(\n (sum, row) => (row.values.total > 0 ? row.values.total : 0) + sum,\n 0\n );\n return <>{total};\n },\n },\n];\n\n/**\n * Constructs default form values based on API response\n * @param {object} attributes key/value pairs to parse out and group\n * @return {object} key/value pairs, if the value is not a number, defaults to an empty string (\"\")\n */\nexport const getFormAttributes = (attributes) => {\n return Object.keys(attributes).reduce((acc, item) => {\n if (\n item.includes(\"total\") ||\n item.includes(\"dateOfRecord\") ||\n item.includes(\"createdAt\") ||\n item.includes(\"updatedAt\") ||\n item.includes(\"archivedAt\") ||\n item.includes(\"legacy\")\n ) {\n return acc;\n }\n const val = attributes[item];\n return { ...acc, [item]: isNumber(val) ? val : 0 };\n }, {});\n};\n\n/**\n * Constructs payload attributes based on form values\n * @param {object} attributes key/value pairs to parse out and group\n * @return {object} key/value pairs, if the value is not a number, defaults to an empty string (\"\")\n */\nexport const transformAttributesForPayload = (attributes) => {\n return Object.keys(attributes).reduce((acc, item) => {\n if (\n item.includes(\"adult\") ||\n item.includes(\"ageUnknown\") ||\n item.includes(\"youth\") ||\n item.includes(\"beginning\") ||\n item.includes(\"ending\")\n ) {\n const val = attributes[item];\n return {\n ...acc,\n [item]: isNumber(val) ? val : null,\n };\n }\n\n return acc;\n }, {});\n};\n\n/**\n * Eliminates table rows that are not needed for a service type\n * @param {array} rows array of table row data with needed attribute keys\n * @param {object} attributes key/value pairs to parse out and group\n * @return {object} key/value pairs that are needed for a service type\n */\n\nexport const getServiceTypeAttributes = (rows, attributes) => {\n const rowData = rows.map((row) => row.attributeKeys);\n const combinedRows = [].concat(...rowData);\n const rowsObj = combinedRows.reduce((acc, curr, index) => {\n acc[curr] = null;\n return acc;\n }, {});\n\n const filteredAttributes = Object.fromEntries(\n Object.entries(attributes).filter(([key, value]) =>\n combinedRows.includes(key)\n )\n );\n\n return getFormAttributes({ ...rowsObj, ...filteredAttributes });\n};\n","import React, { useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useTable, useSortBy } from \"react-table\";\nimport { getTableHeaderClasses, getTableCellClasses } from \"./utils\";\nimport { formatUiErrors } from \"utils\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\n\n// Docs: https://react-table.tanstack.com/docs/api/overview\n\nconst Table = ({\n data,\n columns,\n dashboard,\n columnWidths = [],\n columnAlignments = [],\n noResultsText = \"No data found\",\n isLoading,\n error,\n}) => {\n const memoizedData = useMemo(() => data, [data]);\n const memoizedColumns = useMemo(() => columns, [columns]);\n var rowIndex = 0;\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n footerGroups,\n } = useTable({ data: memoizedData, columns: memoizedColumns }, useSortBy);\n\n const tableBody = () => {\n if (isLoading)\n return (\n \n \n \n \n \n );\n\n if (error)\n return (\n \n \n {formatUiErrors(error)}\n \n \n );\n\n if (!rows.length)\n return (\n \n \n {noResultsText}\n \n \n );\n\n return rows.map((row, i) => {\n if (row.original.total < 0) {\n return \"\";\n }\n rowIndex += 1;\n prepareRow(row);\n return (\n \n {row.cells.map((cell, cellIndex) => {\n return (\n \n {cell.render(\"Cell\")}\n \n );\n })}\n \n );\n });\n };\n\n const tableFooter = () => {\n return (\n <>\n {footerGroups.map((group) => (\n \n {group.headers.map((column, index) => (\n \n {column.render(\"Footer\")}\n \n ))}\n \n ))}\n \n );\n };\n\n return (\n \n \n {headerGroups.map((headerGroup) => (\n \n {headerGroup.headers.map((column, i) => (\n \n {column.render(\"Header\")}\n {column.isSorted ? (column.isSortedDesc ? \" 🔽\" : \" 🔼\") : \"\"}\n \n ))}\n \n ))}\n \n {tableBody()}\n {!dashboard && {tableFooter()}}\n
\n );\n};\n\nTable.propTypes = {\n data: PropTypes.array.isRequired,\n columns: PropTypes.array.isRequired,\n pluginHooks: PropTypes.array,\n columnWidths: PropTypes.array,\n noResultsText: PropTypes.oneOfType([PropTypes.element, PropTypes.string]),\n isLoading: PropTypes.bool,\n error: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.string,\n PropTypes.object,\n ]),\n};\n\nTable.defaultProps = {\n pluginHooks: [],\n columnWidths: [],\n columnAlignments: [],\n noResultsText: \"No data found\",\n isLoading: false,\n};\n\nexport default Table;\n","import React from \"react\";\nimport { speciesMap } from \"utils\";\n\nconst IntakeOverviewTableSpecies = (props) => {\n const { speciesKey } = props;\n const speciesData = speciesMap[speciesKey];\n\n if (speciesData.icon) {\n return (\n
\n
\n \"\"\n
\n {speciesData.label}\n
\n );\n }\n return speciesData.label;\n};\n\nexport default IntakeOverviewTableSpecies;\n","import IntakeOverviewTableSpecies from \"./IntakeOverviewTableSpecies\";\nimport { speciesMap } from \"utils\";\n\nexport const speciesOrder = {\n unbegun: \"unbegun\", // no records exist\n incomplete: \"incomplete\", // at least one record exists\n complete: \"complete\", // all records have complete status\n};\n\nexport const transformTableData = (response) => {\n const { included = [] } = response;\n\n const includedRecords = included.filter(\n (inc) => inc.type === \"location_ytd_species_totals\"\n );\n\n return Object.keys(speciesMap).reduce((arr, key) => {\n const speciesData =\n includedRecords.find((inc) => inc?.attributes.species === key) || {};\n const { attributes } = speciesData || {};\n\n arr.push({\n rowHeader: ,\n species: key,\n ...attributes,\n });\n return arr;\n }, []);\n};\n\nexport const transformCoalitionTableData = (response) => {\n const { included = [] } = response;\n\n let includedRecords = included.filter(\n (inc) => inc.type === \"location_ytd_species_totals\"\n );\n\n const aggregatedData = [];\n\n includedRecords.forEach((item) => {\n const {\n species,\n totalIntake,\n totalLiveOutcomes,\n totalOtherOutcomes,\n totalFieldServices,\n totalVeterinaryServices,\n totalSupportServices,\n totalBehaviorServices,\n } = item.attributes;\n\n const existingSpecie = aggregatedData.find((i) => i.species === species);\n\n if (existingSpecie) {\n existingSpecie[\"totalIntake\"] =\n existingSpecie[\"totalIntake\"] + totalIntake;\n existingSpecie[\"totalLiveOutcomes\"] =\n existingSpecie[\"totalLiveOutcomes\"] + totalLiveOutcomes;\n existingSpecie[\"totalOtherOutcomes\"] =\n existingSpecie[\"totalOtherOutcomes\"] + totalOtherOutcomes;\n existingSpecie[\"totalFieldServices\"] =\n existingSpecie[\"totalFieldServices\"] + totalFieldServices;\n existingSpecie[\"totalVeterinaryServices\"] =\n existingSpecie[\"totalVeterinaryServices\"] + totalVeterinaryServices;\n existingSpecie[\"totalSupportServices\"] =\n existingSpecie[\"totalSupportServices\"] + totalSupportServices;\n existingSpecie[\"totalBehaviorServices\"] =\n existingSpecie[\"totalBehaviorServices\"] + totalBehaviorServices;\n } else {\n aggregatedData.push({\n species,\n totalIntake,\n totalLiveOutcomes,\n totalOtherOutcomes,\n totalFieldServices,\n totalVeterinaryServices,\n totalSupportServices,\n totalBehaviorServices,\n rowHeader: ,\n });\n }\n });\n\n return aggregatedData;\n};\n\nexport const constructEndpoint = ({\n coalitionId,\n organizationId,\n coalitionYear,\n coalitionFilters,\n action,\n}) => {\n var orgs = [];\n if (\n coalitionFilters &&\n coalitionFilters.organization_ids &&\n coalitionFilters.organization_ids.length > 0\n ) {\n orgs = coalitionFilters.organization_ids.map((a) => a.value);\n }\n\n return `/api/v1/locations?&include=ytd_species_totals&filter[coalition_data_sharing]=${coalitionId}:${\n action === \"intakes\"\n ? \"intake_outcome_data_sharing\"\n : \"community_service_data_sharing\"\n }${\n organizationId\n ? `&filter[organization_id][eq]=${organizationId}`\n : orgs.length > 0\n ? `&filter[organization_id][in_ids]=${orgs}`\n : \"\"\n }&filter[ytd_species_totals.year][eq]=${coalitionYear}&page[size]=1000`;\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useQuery } from \"react-query\";\nimport { CSVLink } from \"react-csv\";\nimport Table from \"components/Table\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport {\n transformTableData,\n transformCoalitionTableData,\n constructEndpoint,\n} from \"./utils\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport DateFilter from \"components/IntakeOverviewGraphFilters/DateFilter\";\n\nconst IntakeOverviewTable = ({\n coalitionId,\n coalitionPage,\n searchClick,\n setSearchClick,\n coalitionFilters,\n action,\n adminLocation,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { attributes } = useUserState();\n var locationId = attributes.locationId;\n if (!!adminLocation) locationId = adminLocation;\n\n const [year, setYear] = useState(new Date().getFullYear());\n const dashboardEndpoint = `/api/v1/locations/${locationId}?include=ytd_species_totals&filter[ytd_species_totals.year][eq]=${year}&filter[ytd_species_totals.action][eq]=${action}`;\n\n const { orgName: organizationId, year: coalitionYear } = coalitionFilters;\n\n const coalitionEndpoint = constructEndpoint({\n coalitionId,\n organizationId,\n coalitionYear,\n coalitionFilters,\n action,\n });\n const { isLoading, error, data, refetch } = useQuery(\n \"overviewAnimalCounts\",\n async () => {\n const res = await apiFetch({\n token,\n dispatch,\n endpoint: coalitionPage ? coalitionEndpoint : dashboardEndpoint,\n });\n if (setSearchClick) setSearchClick(false);\n return coalitionPage\n ? transformCoalitionTableData(res)\n : transformTableData(res);\n }\n );\n\n useEffect(refetch, [\n locationId,\n year,\n organizationId,\n isLoading,\n coalitionFilters,\n searchClick,\n refetch,\n action,\n ]);\n\n if (isLoading) {\n return (\n Loading intake overview table…}\n />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n const columns =\n action === \"services\"\n ? [\n {\n accessor: \"rowHeader\",\n Header: () =>\n coalitionPage ? \"\" : ,\n },\n {\n accessor: \"totalFieldServices\",\n Header: \"Field Services\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n {\n accessor: \"totalSupportServices\",\n Header: \"Support Services\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n {\n accessor: \"totalBehaviorServices\",\n Header: \"Behavior Services\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n {\n accessor: \"totalVeterinaryServices\",\n Header: \"Veterinary Services\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n ]\n : [\n {\n accessor: \"rowHeader\",\n Header: () =>\n coalitionPage ? \"\" : ,\n },\n {\n accessor: \"totalIntake\",\n Header: \"Total Intake\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n {\n accessor: \"totalLiveOutcomes\",\n Header: \"Total Live Outcomes\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n {\n accessor: \"totalOtherOutcomes\",\n Header: \"Other Outcomes\",\n Cell: ({ value }) => transformCellStyle(value),\n },\n ];\n const columnWidths =\n action === \"services\"\n ? [\"w-4/12\", \"sm:px-0\", \"sm:px-0\", \"sm:px-0\", \"sm:px-0\"]\n : [\"w-4/12\"];\n\n const transformCellStyle = (value) => (\n {value || 0}\n );\n\n // Setup what items we want for CSV download\n const csvData = data.reduce((acc, item) => {\n const { locationId, rowHeader, ...rest } = item;\n\n return [...acc, rest];\n }, []);\n\n return (\n <>\n \n \n Export Combined Monthly Totals CSV\n \n \n );\n};\n\nIntakeOverviewTable.propTypes = {\n coalitionId: PropTypes.string,\n coalitionPage: PropTypes.bool,\n coalitionFilters: PropTypes.shape({\n orgName: PropTypes.string.isRequired,\n year: PropTypes.string.isRequired,\n }),\n action: PropTypes.string,\n};\n\nIntakeOverviewTable.defaultProps = {\n coalitionId: \"\",\n coalitionPage: false,\n coalitionFilters: {\n orgName: \"\",\n year: String(new Date().getFullYear()),\n },\n action: \"data-entry\",\n};\n\nexport default IntakeOverviewTable;\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { dataEntryStatuses } from \"utils\";\nimport { Link } from \"react-router-dom\";\nimport classnames from \"classnames\";\nimport { useUserState } from \"context\";\n\nconst RecordStatusIndicator = ({\n month,\n year,\n status,\n action,\n location,\n adminOrganization,\n}) => {\n const isService = action === \"services\";\n const { isAdmin } = useUserState();\n\n switch (status) {\n case dataEntryStatuses.complete:\n case dataEntryStatuses.complete_services_provided:\n case dataEntryStatuses.complete_no_services_provided:\n return (\n \n Complete\n \n );\n case dataEntryStatuses.incomplete:\n case dataEntryStatuses.in_progress:\n return (\n \n In Progress\n \n );\n case dataEntryStatuses.unbegun:\n return (\n \n Enter\n \n );\n case dataEntryStatuses.unavailable:\n return (\n \n );\n default:\n return null;\n }\n};\n\nexport default RecordStatusIndicator;\n","import React from \"react\";\nimport { getMonthAbbr } from \"utils\";\nimport { dataEntryStatuses } from \"utils\";\nimport RecordStatusIndicator from \"../RecordStatusIndicator\";\nimport classnames from \"classnames\";\n\nconst RecordStatusTableItem = (props) => {\n const { month, year, status, action, location, adminOrganization } = props;\n const getStatus = () => {\n switch (status) {\n case \"complete\":\n case \"complete_services_provided\":\n case \"complete_no_services_provided\":\n return \"complete\";\n case \"incomplete\":\n case \"in_progress\":\n return \"incomplete\";\n default:\n return status;\n }\n };\n\n const statusClasses = {\n [dataEntryStatuses.complete]: {\n background: \"bg-dashboard-light-green\",\n border: \"border-dashboard-light-green\",\n },\n [dataEntryStatuses.incomplete]: {\n background: \"bg-gold bg-opacity-25\",\n border: \"border-gold border-opacity-25\",\n },\n [dataEntryStatuses.unbegun]: {\n background: \"bg-transparent\",\n border: \"border-dashboard-pale-blue\",\n },\n [dataEntryStatuses.unavailable]: {\n background: \"bg-light-gray\",\n border: \"border-light-gray\",\n },\n };\n const serviceStatusClasses = {\n [dataEntryStatuses.complete]: {\n background: \"bg-teal\",\n },\n [dataEntryStatuses.incomplete]: {\n background: \"bg-gold\",\n },\n [dataEntryStatuses.unbegun]: {\n background: \"bg-dashboard-blue\",\n },\n [dataEntryStatuses.unavailable]: {\n background: \"bg-dashboard-pale-gray\",\n },\n };\n\n const isService = action === \"services\";\n const defaultStyles = `${statusClasses[getStatus()].background} ${\n statusClasses[getStatus()].border\n } border`;\n const serviceStyles = `${serviceStatusClasses[getStatus()].background}`;\n return (\n
\n \n \n {getMonthAbbr(month)}\n \n\n \n \n
\n \n \n );\n};\n\nexport default RecordStatusTableItem;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useQuery } from \"react-query\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport RecordStatusTableItem from \"../RecordStatusTableItem\";\nimport { isUnavailable } from \"../../utils\";\nimport { dataEntryStatuses } from \"utils\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCaretRight, faCaretLeft } from \"@fortawesome/free-solid-svg-icons\";\n\n// Animal Data Records\nconst RecordStatusTable = ({ action, adminLocation, adminOrganization }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { attributes, isAdmin } = useUserState();\n\n var locationId = attributes.locationId;\n if (!!adminLocation) locationId = adminLocation;\n const [year, setYear] = useState(new Date().getFullYear());\n const currentYear = new Date().getFullYear();\n const endpoint =\n action === \"services\"\n ? `/api/v1/data_entry_status?filter[location_id][eq]=${locationId}&filter[year][eq]=${year}&filter[action][eq]=services`\n : `/api/v1/data_entry_status?filter[location_id][eq]=${locationId}&filter[year][eq]=${year}`;\n\n const {\n isLoading,\n error,\n data: response,\n refetch,\n } = useQuery([`dataStatus${action}`, locationId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint,\n })\n );\n\n useEffect(refetch, [locationId, year, refetch]);\n\n if (isLoading) {\n return (\n Loading record status table…}\n />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n
\n
\n setYear(year - 1)}\n >\n \n \n\n
\n {year}\n
\n\n setYear(year + 1)}\n >\n \n \n
\n\n
\n {response.data.map((record, i) => {\n const { attributes } = record;\n const { month, year, status } = attributes;\n\n return (\n \n );\n })}\n
\n
\n );\n};\n\nRecordStatusTable.propTypes = {\n action: PropTypes.string,\n};\n\nRecordStatusTable.defaultProps = {\n action: \"data-entry\",\n};\n\nexport default RecordStatusTable;\n","import { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport React, { useEffect, useState } from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { getTotalPages, getOrganizations, getLocations } from \"utils\";\nimport { get, uniq } from \"lodash\";\nimport { Form, Formik } from \"formik\";\nimport FormField from \"components/FormField\";\nimport Button from \"components/Button\";\nimport RecordStatusTable from \"components/RecordStatusTable\";\nimport IntakeOverviewGraph from \"components/IntakeOverviewGraph\";\nimport IntakeOverviewTable from \"components/IntakeOverviewTable\";\n\nconst OrganizationData = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const {\n attributes: { fullName },\n } = useUserState();\n const queryClient = useQueryClient();\n const queryClient2 = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [search, setSearch] = useState(\"\");\n const [orgId, setOrgId] = useState(\"\");\n const [locationId, setLocationId] = useState(\"\");\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"organizations\", { page, search }],\n () => getOrganizations({ token, dispatch, page, search }),\n {\n keepPreviousData: true,\n }\n );\n\n const {\n data: response2 = { data: [], included: [] },\n error2,\n isLoading2,\n } = useQuery(\n [\"organizations2\", { page, search: orgId }],\n () => getLocations({ token, dispatch, page: 1, search: orgId }),\n {\n keepPreviousData: true,\n }\n );\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"organizations\", { page: page + 1, search }],\n () => getOrganizations({ token, dispatch, page: page + 1, search })\n );\n }\n }, [response, page, search, queryClient]);\n\n useEffect(() => {\n queryClient2.prefetchQuery(\n [\"organizations2\", { page: page + 1, search: orgId }],\n () => getLocations({ token, dispatch, page: 1, search: orgId })\n );\n }, [orgId]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const handleSubmit = (values) => {\n if (values.search !== search) {\n setSearch(values.search);\n }\n };\n\n return (\n <>\n
\n

Intake and Outcome Records

\n \n {({ setFieldValue }) => (\n
\n
\n \n
\n {\n setOrgId(event.target.value);\n }}\n value={orgId}\n style={{ width: 300 }}\n >\n \n {response.data.map((item) => (\n \n ))}\n \n\n {\n setLocationId(event.target.value);\n }}\n style={{ width: 300 }}\n value={locationId}\n >\n \n {response2.data.map((item) => (\n \n ))}\n \n
\n \n {\n setFieldValue(\"search\", \"\");\n setSearch(\"\");\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n
\n \n )}\n
\n\n {!!locationId && (\n
\n {/* Intake Outcome Database */}\n
\n

\n Intake and Outcome Database (IOD)\n

\n {/* Data Matrix CTA */}\n
\n \n Enter Data: CSV Upload\n \n \n Enter Data: Manual\n \n \n Export Data\n \n
\n\n {/* Records */}\n
\n
\n

\n IOD Data Records\n

\n
\n COMPLETE\n INCOMPLETE\n \n UNBEGUN\n \n
\n
\n \n
\n\n {/* Graph */}\n
\n

IOD Overview by Species

\n \n
\n\n {/* Table */}\n
\n

IOD Overview by Category

\n \n
\n
\n {/* Services Database */}\n
\n

\n Community Services Database (CSD)\n

\n {/* Services Matrix CTA */}\n
\n \n Enter Data: CSV Upload\n \n \n Enter Data: Manual\n \n \n Export Data\n \n
\n\n {/* Records */}\n
\n
\n

\n CSD Data Records\n

\n
\n COMPLETE\n \n INCOMPLETE\n \n UNBEGUN\n
\n
\n \n
\n\n {/* Graph */}\n
\n

CSD Overview by Species

\n \n
\n\n {/* Table */}\n
\n

CSD Overview by Category

\n \n
\n
\n
\n )}\n
\n \n );\n};\n\nexport default OrganizationData;\n","import React from \"react\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport { CSVLink } from \"react-csv\";\nimport { format } from \"date-fns\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport {\n getAllRecords,\n formatUiErrors,\n organizationHeaders,\n transformOrganizationsData,\n locationHeaders,\n transformLocationsData,\n userAccountHeaders,\n transformUserAccountsData,\n coalitionHeaders,\n transformCoalitionsData,\n apiFetch,\n} from \"utils\";\nimport Button from \"components/Button\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Error from \"components/Error\";\nimport IntakeOverviewGraph from \"components/IntakeOverviewGraph\";\nimport IntakeOverviewTable from \"components/IntakeOverviewTable\";\nimport OrganizationData from \"./OrganizationData\";\n\nconst mutationConfig = ({ headers, fileNamePrefix, buttonText }) => {\n return {\n onSuccess: (data) => {\n toast.success(\n ,\n {\n closeOnClick: false,\n autoClose: false,\n limit: 1,\n }\n );\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n };\n};\n\nconst AdminDashboard = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const {\n attributes: { fullName, locationId },\n } = useUserState();\n const {\n data: response,\n isLoading,\n error,\n } = useQuery([\"animalDataExport\"], () =>\n apiFetch({\n token,\n dispatch,\n endpoint:\n \"/api/v1/data_exports?sort=-created_at&page[number]=1&page[size]=1\",\n })\n );\n\n const { mutate: exportOrganizations, isLoading: orgExportLoading } =\n useMutation(\n async () => {\n try {\n const response = await getAllRecords({\n token,\n dispatch,\n endpoint: \"/api/v1/organizations\",\n });\n return transformOrganizationsData(response);\n } catch (error) {\n throw error;\n }\n },\n mutationConfig({\n headers: organizationHeaders,\n fileNamePrefix: \"sac-organizations-export\",\n buttonText: \"Download Organizations CSV\",\n })\n );\n\n const { mutate: exportCoalitions, isLoading: coalitionExportLoading } =\n useMutation(\n async () => {\n try {\n const response = await getAllRecords({\n token,\n dispatch,\n endpoint: \"/api/v1/coalitions\",\n });\n return transformCoalitionsData(response);\n } catch (error) {\n throw error;\n }\n },\n mutationConfig({\n headers: coalitionHeaders,\n fileNamePrefix: \"sac-coalitions-export\",\n buttonText: \"Download Coalitions CSV\",\n })\n );\n\n const { mutate: exportLocations, isLoading: locExportLoading } = useMutation(\n async () => {\n try {\n const response = await getAllRecords({\n token,\n dispatch,\n endpoint: \"/api/v1/locations\",\n queryParams: [\"extra_fields[locations]=us_county_name\"],\n });\n return transformLocationsData(response);\n } catch (error) {\n throw error;\n }\n },\n mutationConfig({\n headers: locationHeaders,\n fileNamePrefix: \"sac-locations-export\",\n buttonText: \"Download Locations CSV\",\n })\n );\n\n const { mutate: exportUserAccounts, isLoading: usersExportLoading } =\n useMutation(\n async () => {\n try {\n const response = await getAllRecords({\n token,\n dispatch,\n endpoint: \"/api/v1/users\",\n });\n return transformUserAccountsData(response);\n } catch (error) {\n throw error;\n }\n },\n mutationConfig({\n headers: userAccountHeaders,\n fileNamePrefix: \"sac-user-accounts-export\",\n buttonText: \"Download User Accounts CSV\",\n })\n );\n\n const getContent = () => {\n if (isLoading) return ;\n\n return (\n <>\n
\n
\n

Animal Data

\n\n {getAnimalDataExportContent()}\n
\n
\n

Organizations

\n\n \n\n Generating your export…}\n emphasis=\"secondary\"\n className=\"w-full\"\n >\n Generate Organizations CSV\n \n
\n
\n

Locations

\n\n Generating your export…}\n emphasis=\"secondary\"\n className=\"w-full\"\n >\n Generate Locations CSV\n \n
\n
\n

Coalitions

\n \n\n Generating your export…}\n emphasis=\"secondary\"\n className=\"w-full\"\n >\n Generate Coalitions CSV\n \n
\n
\n

Users

\n \n\n Generating your export…}\n emphasis=\"secondary\"\n className=\"w-full\"\n >\n Generate User Accounts CSV\n \n
\n
\n \n \n );\n };\n\n const getAnimalDataExportContent = () => {\n if (error) return {formatUiErrors(error)};\n\n if (!response.data || !response.data.length)\n return

The latest animal data CSV is unavailable.

;\n\n return (\n <>\n \n Download the Latest Animal Data CSV\n \n

\n Created{\" \"}\n {format(\n new Date(response.data[0].attributes.createdAt),\n \"MM/dd/yyyy\"\n )}\n

\n \n );\n };\n\n return (\n <>\n

Welcome{fullName ? `, ${fullName}` : null}!

\n {getContent()}\n \n );\n};\n\nexport default AdminDashboard;\n\nconst DownloadExportLink = ({ data, headers, fileNamePrefix, buttonText }) => {\n return (\n \n {buttonText}\n \n );\n};\n","import React from \"react\";\nimport IntakeOverviewGraph from \"components/IntakeOverviewGraph\";\nimport IntakeOverviewTable from \"components/IntakeOverviewTable\";\nimport RecordStatusTable from \"components/RecordStatusTable\";\nimport { useUserState } from \"context\";\nimport Button from \"components/Button\";\n\nconst DataPortalDashboard = () => {\n const {\n attributes: { fullName, locationId },\n isOrgAdmin,\n } = useUserState();\n\n return (\n <>\n

Welcome{fullName ? `, ${fullName}` : null}!

\n {locationId ? (\n
\n {/* Intake Outcome Database */}\n
\n

\n Intake and Outcome Database (IOD)\n

\n {/* Data Matrix CTA */}\n
\n {isOrgAdmin ? (\n \n ) : null}\n {isOrgAdmin ? (\n \n ) : null}\n \n Export Data\n \n
\n {/* Records */}\n
\n
\n

IOD Data Records

\n
\n COMPLETE\n INCOMPLETE\n \n UNBEGUN\n \n
\n
\n \n
\n\n {/* Graph */}\n
\n

IOD Overview by Species

\n \n
\n\n {/* Table */}\n
\n

IOD Overview by Category

\n \n
\n
\n {/* Services Database */}\n
\n

\n Community Services Database (CSD)\n

\n {/* Services Matrix CTA */}\n
\n {isOrgAdmin ? (\n \n ) : null}\n {isOrgAdmin ? (\n \n ) : null}\n \n Export Data\n \n
\n {/* Records */}\n
\n
\n

CSD Data Records

\n
\n COMPLETE\n \n INCOMPLETE\n \n UNBEGUN\n
\n
\n \n
\n\n {/* Graph */}\n
\n

CSD Overview by Species

\n \n
\n\n {/* Table */}\n
\n

CSD Overview by Category

\n \n
\n
\n
\n ) : (\n
\n you must be associated with an organization. Contact your organization\n to be added as a user or email info@shelteranimalscount.org for\n assistance.\n
\n )}\n \n );\n};\n\nexport default DataPortalDashboard;\n","import React, { useEffect } from \"react\";\nimport { toast } from \"react-toastify\";\nimport { Redirect, useHistory } from \"react-router-dom\";\nimport { useUserState } from \"context\";\nimport { useQueryParams } from \"utils\";\nimport AdminDashboard from \"./AdminDashboard\";\nimport DataPortalDashboard from \"./DataPortalDashboard\";\n\nconst Dashboard = () => {\n const { isAdmin, isCoalitionOnly } = useUserState();\n const history = useHistory();\n const {\n accountConfirmationSuccess,\n alreadyConfirmed,\n orgAuthorizationSuccess,\n orgAlreadyConfirmed,\n } = useQueryParams();\n\n useEffect(() => {\n const accountConfirmed =\n accountConfirmationSuccess === \"true\" || alreadyConfirmed === \"true\";\n const orgAuthorized =\n orgAuthorizationSuccess === \"true\" || orgAlreadyConfirmed === \"true\";\n if (accountConfirmed || orgAuthorized) {\n toast.success(\n accountConfirmed\n ? \"Your email address has been confirmed.\"\n : \"Your organization has been authorized.\",\n {\n autoClose: 3000,\n }\n );\n history.replace(\"/\");\n }\n }, [\n accountConfirmationSuccess,\n alreadyConfirmed,\n orgAuthorizationSuccess,\n orgAlreadyConfirmed,\n history,\n ]);\n\n if (isCoalitionOnly)\n return (\n \n );\n\n return isAdmin ? : ;\n};\n\nexport default Dashboard;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Field } from \"formik\";\n\nconst DataEntryOption = ({ id, icon, heading, content, selected }) => {\n return (\n \n \n \n {icon}\n \n
{heading}
\n

{content}

\n \n\n \n \n {selected && (\n \n )}\n \n \n );\n};\n\nDataEntryOption.propTypes = {\n id: PropTypes.string.isRequired,\n icon: PropTypes.element.isRequired,\n heading: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n selected: PropTypes.bool,\n};\n\nexport default DataEntryOption;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faMapMarkerAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport DatePickerField from \"components/DatePickerField\";\nimport { currentMonth as defaultcurrentMonth } from \"utils\";\nimport { useUserState } from \"context\";\n\nconst DataEntryOptionsFilters = ({ currentMonth }) => {\n const {\n attributes: { locationName },\n } = useUserState();\n\n return (\n
\n {/* Location */}\n
\n
Entering Data For:
\n
\n \n {locationName}\n
\n
\n\n {/* Date picker */}\n
\n \n Timeframe:\n \n
\n \n
\n
\n
\n );\n};\n\nDataEntryOptionsFilters.propTypes = {\n currentMonth: PropTypes.instanceOf(Date),\n};\n\nDataEntryOptionsFilters.defaultProps = {\n currentMonth: defaultcurrentMonth,\n};\n\nexport default DataEntryOptionsFilters;\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Button from \"components/Button\";\nimport { isValid } from \"date-fns\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowRight } from \"@fortawesome/free-solid-svg-icons\";\nimport { previousMonth } from \"utils\";\nimport { useUserState } from \"context\";\nimport { useParams } from \"react-router-dom\";\n\nconst DataEntryOptionsCta = ({ date, isCsv, label, action }) => {\n const [cta, setCta] = useState(\"\");\n const { location, organizationId } = useParams();\n const { isOrgAdmin } = useUserState();\n\n useEffect(() => {\n setCta(getCta(date, isCsv));\n }, [date, isCsv]);\n\n const getCta = (date, isCsv) => {\n if (isCsv) {\n if (location) return `/${action}/upload/${location}/${organizationId}`;\n else return `/${action}/upload`;\n }\n if (date && isValid(date)) {\n if (location)\n return `/${action}/${date.getFullYear()}/${\n date.getMonth() + 1\n }/${location}/${organizationId}`;\n else return `/${action}/${date.getFullYear()}/${date.getMonth() + 1}`;\n }\n return \"\";\n };\n\n return (\n
\n \n {isCsv ? \"Select File\" : label}\n \n \n
\n );\n};\n\nDataEntryOptionsCta.propTypes = {\n date: PropTypes.instanceOf(Date),\n isCsv: PropTypes.bool.isRequired,\n label: PropTypes.string.isRequired,\n action: PropTypes.string.isRequired,\n};\n\nDataEntryOptionsCta.defaultProps = {\n date: previousMonth,\n isCsv: false,\n};\n\nexport default DataEntryOptionsCta;\n","import React, { useEffect, useState } from \"react\";\nimport { API_URL, formatDateTime } from \"utils\";\nimport { useParams } from \"react-router-dom\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Table from \"components/Table\";\n\nconst EntryLogs = (props) => {\n const { token } = useAuthState();\n const { attributes, isAdmin } = useUserState();\n const [page] = useState(1);\n const [response, setResponse] = useState([]);\n const [error, setError] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n\n const { location } = useParams();\n\n let locationId = attributes.locationId;\n if (isAdmin && location) locationId = location;\n\n const fetchData = async () => {\n setIsLoading(true);\n const { accessToken, client, expiry, uid } = token;\n const response = await fetch(\n `${API_URL}/api/v1/entry_logs?page=${page}&locationId=${locationId}`,\n {\n method: \"get\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n }\n );\n\n const responseJson = await response.json();\n const { data, error } = responseJson;\n setResponse(data);\n setError(error);\n setIsLoading(false);\n };\n useEffect(() => {\n fetchData();\n }, []);\n\n if (isLoading) {\n return Loading logs…} />;\n }\n\n const columns = [\n {\n accessor: \"created_at\",\n Header: \"Created At\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return formatDateTime(cell.value);\n },\n },\n {\n accessor: \"month\",\n Header: \"Month of Record\",\n },\n {\n accessor: \"year\",\n Header: \"Year of Record\",\n },\n {\n accessor: \"updated_at\",\n Header: \"Updated At\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return formatDateTime(cell.value);\n },\n },\n {\n accessor: \"channel\",\n Header: \"Data Entry Type\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return cell.value.toUpperCase();\n },\n },\n {\n accessor: \"location_id\",\n Header: \"Location Id\",\n },\n ];\n\n return (\n
\n \n\n {/* {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )} */}\n
\n );\n};\n\nexport default EntryLogs;\n","import React, { useEffect, useState } from \"react\";\nimport DataEntryOption from \"./DataEntryOption\";\nimport {\n dataEntryOptions,\n dataEntryOptionsMap,\n} from \"../../utils/entryOptions\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport DataEntryOptionsFilters from \"./DataEntryOptionsFilters\";\nimport DataEntryOptionsCta from \"./DataEntryOptionsCta\";\nimport { previousMonth as defaultPreviousMonth } from \"utils\";\nimport PropTypes from \"prop-types\";\nimport EntryLogs from \"./EntryLogs\";\n\nconst DataEntryOptions = ({ label, action }) => {\n const [isCsv, setIsCsv] = useState(false);\n const previousMonth = defaultPreviousMonth;\n\n const GetFormValues = () => {\n const { values } = useFormikContext();\n useEffect(() => {\n setIsCsv(values.dataEntryOption === dataEntryOptions.CSV);\n }, [values]);\n return null;\n };\n\n return (\n
\n

{`${\n action === \"services\" ? \"Services\" : \"Intakes and Outcomes\"\n }: Get Started`}

\n

\n Let’s get started by uploading data for the selected month.\n

\n
How would you like to enter data?
\n\n \n {({ values }) => (\n
\n {/* Options */}\n
\n {Object.keys(dataEntryOptionsMap).map((optionKey, index) => {\n const data = dataEntryOptionsMap[optionKey];\n return (\n \n \n
\n );\n })}\n
\n\n {values.dataEntryOption === dataEntryOptions.MANUAL && (\n \n )}\n\n \n\n {!!values.dataEntryOption && (\n \n )}\n \n )}\n \n\n {action !== \"services\" ? : null}\n \n );\n};\n\nDataEntryOptions.propTypes = {\n label: PropTypes.string,\n action: PropTypes.string,\n};\n\nDataEntryOptions.defaultProps = {\n label: \"Enter Data\",\n action: \"data-entry\",\n};\n\nexport default DataEntryOptions;\n","import React from \"react\";\nimport EntryOptions from \"../../components/DataEntryOptions\";\n\nconst DataEntryOptions = () => ;\n\nexport default DataEntryOptions;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useQueryClient, useMutation } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { Formik, Form, Field, useFormikContext } from \"formik\";\nimport ReactTooltip from \"react-tooltip\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cloneDeep, isNumber } from \"lodash\";\nimport Table, { transformAttributesForPayload } from \"components/Table\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport {\n speciesMap,\n getMonthName,\n apiFetch,\n useHandleRequestStates,\n} from \"utils\";\nimport Button from \"components/Button\";\n\nconst BEGINNING_COUNT = \"beginningAnimalCount\";\nconst ENDING_COUNT = \"endingAnimalCount\";\nconst BEGINNING_FOSTER_COUNT = \"beginningFosterAnimalCount\";\nconst ENDING_FOSTER_COUNT = \"endingFosterAnimalCount\";\n\nconst AnimalCountForm = forwardRef(\n (\n {\n dataId,\n isEditing,\n species,\n beginningAnimalCount,\n setRecalculate,\n previousEndingAnimalCount,\n previousEndingFosterAnimalCount,\n endingAnimalCount,\n beginningFosterAnimalCount,\n endingFosterAnimalCount,\n },\n ref\n ) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { year, month } = useParams();\n const { handleSuccess, handleError } = useHandleRequestStates();\n // const formProps = useFormikContext();\n\n const {\n attributes: { locationId },\n } = useUserState();\n\n const { mutate: updateAnimalCounts } = useMutation(\n (attributes) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_counts/${dataId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: dataId,\n type: \"animal_counts\",\n attributes: transformAttributesForPayload(attributes),\n },\n },\n }),\n {\n onSuccess: (response) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n species\n ].label.toLocaleLowerCase()} counts`,\n });\n\n return queryClient.setQueryData(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n (oldData = {}) => {\n const newData = cloneDeep(oldData);\n if (!newData.counts) newData.counts = { data: [] };\n const speciesIndex = newData.counts.data.findIndex(\n (countsRecord) => {\n return countsRecord.id === dataId;\n }\n );\n newData.counts.data[speciesIndex] = response.data;\n return newData;\n }\n );\n },\n onError: handleError,\n }\n );\n\n const speciesLabel = speciesMap[species].label;\n const date = `${getMonthName(parseInt(month, 10))} ${year}`;\n const data = [\n {\n rowLabel: `Number of ${speciesLabel.toLowerCase()} in care at the beginning of ${date}`,\n key: BEGINNING_COUNT,\n total: beginningAnimalCount,\n action: \"a\",\n tooltip:\n \"Total animals in care including in shelter, at offsite locations, and in foster care\",\n },\n {\n rowLabel: `Number of ${speciesLabel.toLowerCase()} in care at the end of ${date}`,\n key: ENDING_COUNT,\n total: endingAnimalCount,\n action: \"a\",\n tooltip:\n \"Total animals in care including in shelter, at offsite locations, and in foster care\",\n },\n {\n rowLabel: `Number of foster ${speciesLabel.toLowerCase()} in care at the beginning of ${date}`,\n key: BEGINNING_FOSTER_COUNT,\n total: beginningFosterAnimalCount,\n action: \"a\",\n tooltip: \"Animals in foster care\",\n },\n {\n rowLabel: `Number of foster ${speciesLabel.toLowerCase()} in care at the end of ${date}`,\n key: ENDING_FOSTER_COUNT,\n total: endingFosterAnimalCount,\n tooltip: \"Animals in foster care\",\n },\n ];\n\n const getRowLabelCell = ({\n value,\n cell: {\n row: { original },\n },\n }) => {\n const uuid = uuidv4();\n return (\n
\n \n {isEditing ? (\n \n ) : (\n value\n )}\n \n {original.tooltip && (\n <>\n \n \n {original.tooltip}\n \n \n )}\n
\n );\n };\n\n const getActionCell = ({\n value,\n cell: {\n row: { original },\n },\n }) => {\n const uuid = uuidv4();\n return (\n
\n {isEditing && !!original.action && (\n {\n var key = original.key;\n var val = original.total;\n if (key == \"beginningAnimalCount\")\n val = previousEndingAnimalCount;\n else if (key == \"endingAnimalCount\") val = 1;\n else if (key == \"beginningFosterAnimalCount\")\n val = previousEndingFosterAnimalCount;\n setRecalculate(key, val);\n }}\n >\n Auto Calculate\n \n )}\n
\n );\n };\n\n const getTotalCell = ({\n value,\n cell: {\n row: { original },\n },\n }) => {\n if (isEditing)\n return (\n \n );\n const withValue = value !== null && value !== undefined;\n\n return withValue ? value :
;\n };\n\n const columns = [\n {\n accessor: \"rowLabel\",\n Header: \"\",\n Cell: getRowLabelCell,\n },\n {\n accessor: \"action\",\n Header: \"\",\n Cell: getActionCell,\n },\n {\n accessor: \"total\",\n Header: \"Total\",\n Cell: getTotalCell,\n },\n ];\n\n return (\n updateAnimalCounts(values)}\n innerRef={ref}\n >\n
\n \n \n \n );\n }\n);\n\nAnimalCountForm.propTypes = {\n dataId: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n species: PropTypes.string.isRequired,\n beginningAnimalCount: PropTypes.number,\n endingAnimalCount: PropTypes.number,\n beginningFosterAnimalCount: PropTypes.number,\n endingFosterAnimalCount: PropTypes.number,\n};\n\nexport default AnimalCountForm;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport AnimalCountForm from \"./AnimalCountForm\";\nimport { speciesMap } from \"utils\";\n\nconst AnimalCount = forwardRef(\n (\n {\n dataId,\n species,\n beginningAnimalCount,\n endingAnimalCount,\n previousEndingFosterAnimalCount,\n previousEndingAnimalCount,\n setRecalculate,\n beginningFosterAnimalCount,\n endingFosterAnimalCount,\n isEditing,\n },\n ref\n ) => {\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n
\n To automatically calculate (or recalculate) beginning and ending\n counts, click \"Auto Calculate\" button, in order of fields. Auto\n Calculate will pull beginning counts (total in care and in foster)\n from previous month’s data. Ending total in care is calculated as\n previous month’s beginning count plus intakes minus outcomes.{\" \"}\n \n Ending foster in care cannot be calculated and requires manual\n entry.\n \n
\n\n \n
\n );\n }\n);\n\nAnimalCount.propTypes = {\n dataId: PropTypes.string.isRequired,\n species: PropTypes.string,\n beginningAnimalCount: PropTypes.number,\n endingAnimalCount: PropTypes.number,\n};\n\nexport default AnimalCount;\n","import React, { forwardRef } from \"react\";\nimport AnimalCount from \"./AnimalCount\";\nimport PropTypes from \"prop-types\";\n\nconst AnimalCounts = forwardRef(\n (\n {\n animalData,\n selectedSpecies,\n isEditing,\n endingCounts,\n recalculate,\n setRecalculate,\n },\n ref\n ) => {\n return (\n
\n
\n
\n 5\n
\n\n
\n

Animal Counts

\n {animalData.map(\n ({\n id,\n attributes: {\n species,\n beginningAnimalCount,\n previousEndingAnimalCount,\n previousEndingFosterAnimalCount,\n beginningFosterAnimalCount,\n endingFosterAnimalCount,\n },\n }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n }\n )}\n
\n
\n
\n );\n }\n);\nAnimalCounts.propTypes = {\n animalData: PropTypes.array.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n endingCounts: PropTypes.object.isRequired,\n};\n\nexport default AnimalCounts;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport svgs from \"images\";\nimport { Field } from \"formik\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\n\nconst SpeciesCheckbox = ({ species, fieldName, label, selected, disabled }) => {\n const defaultClasses =\n \"border-2 focus:border-dotted rounded-md flex flex-col p-6 justify-around items-center\";\n const selectedClasses = selected\n ? \"border-teal bg-dashboard-light-green\"\n : \"bg-white\";\n const disabledClasses = disabled ? \"opacity-75\" : \"\";\n const disabledSelectedClasses =\n disabled && selected ? \"border-pale-teal\" : \"\";\n\n return (\n \n
\n \n
\n\n
\n {label}\n
\n\n \n\n \n {selected && }\n \n \n );\n};\n\nSpeciesCheckbox.propTypes = {\n species: PropTypes.string,\n label: PropTypes.string,\n selected: PropTypes.bool,\n};\n\nexport default SpeciesCheckbox;\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCheckCircle,\n faExclamationTriangle,\n faQuestionCircle,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { dataEntryStatuses } from \"utils\";\n\nconst DataStatus = ({ status }) => {\n const statusContent = {\n [dataEntryStatuses.complete]: {\n content: \"Entry is Complete\",\n icon: faCheckCircle,\n color: \"text-teal\",\n },\n [dataEntryStatuses.incomplete]: {\n content: \"Entry is Incomplete\",\n icon: faExclamationTriangle,\n color: \"text-gold\",\n },\n [dataEntryStatuses.unbegun]: {\n content: \"Entry is Unbegun\",\n icon: faQuestionCircle,\n color: \"text-dashboard-blue\",\n },\n [dataEntryStatuses.unavailable]: {\n content: \"Entry status unavailable\",\n icon: faExclamationTriangle,\n color: \"text-red\",\n },\n };\n\n return (\n
\n

\n \n {statusContent[status].content}\n

\n
\n );\n};\n\nexport default DataStatus;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport AlertModal from \"components/AlertModal\";\nimport Button from \"components/Button\";\n\nconst MatrixSettingsModal = ({ isModalOpen, closeModal, confirmModal }) => {\n return (\n \n
\n

\n \n Warning!\n

\n\n

\n If you have existing species and remove them you will lose the tables\n that correspond with that species.\n

\n\n
\n \n Cancel\n \n \n Confirm\n \n
\n
\n
\n );\n};\n\nMatrixSettingsModal.propTypes = {\n isModalOpen: PropTypes.bool.isRequired,\n closeModal: PropTypes.func.isRequired,\n confirmModal: PropTypes.func.isRequired,\n};\n\nexport default MatrixSettingsModal;\n","import { cloneDeep } from \"lodash\";\n\nconst dataEntryTypes = {\n counts: {\n tempIdKey: \"acID\",\n removedSpeciesKey: \"countId\",\n },\n intakes: {\n tempIdKey: \"aiID\",\n removedSpeciesKey: \"intakeId\",\n },\n outcomes: {\n tempIdKey: \"aoID\",\n removedSpeciesKey: \"outcomeId\",\n },\n};\n\nconst payloadInitValue = {\n relationships: {\n animal_counts: {\n data: [],\n },\n animal_intakes: {\n data: [],\n },\n animal_outcomes: {\n data: [],\n },\n },\n included: [],\n};\n\nexport const generatePayload = ({\n addedSpecies,\n removedSpecies,\n locationId,\n year,\n month,\n}) => {\n const changedSpecies = [];\n addedSpecies.forEach((speciesKey) =>\n changedSpecies.push({ speciesKey, method: \"create\" })\n );\n removedSpecies.forEach((species) =>\n changedSpecies.push({\n speciesKey: species.key,\n ...species,\n method: \"destroy\",\n })\n );\n\n // Loop over ADDED species and build relationships object & Included array\n return changedSpecies.reduce((payloadMap, species) => {\n const speciesKey = species.speciesKey;\n\n // Set up unique temp-id keys\n const ids = {\n [dataEntryTypes.counts.tempIdKey]: `ac_${speciesKey}`,\n [dataEntryTypes.intakes.tempIdKey]: `ai_${speciesKey}`,\n [dataEntryTypes.outcomes.tempIdKey]: `ao_${speciesKey}`,\n };\n\n const includedAttributes = {\n location_id: locationId,\n species: speciesKey,\n month_of_record: month,\n year_of_record: year,\n };\n\n Object.keys(dataEntryTypes).forEach((key) => {\n const tempIdKey = dataEntryTypes[key].tempIdKey;\n const removedSpeciesKey = dataEntryTypes[key].removedSpeciesKey;\n\n if (species.method === \"create\") {\n payloadMap.relationships[`animal_${key}`].data.push({\n type: `animal_${key}`,\n method: \"create\",\n \"temp-id\": ids[tempIdKey],\n });\n\n payloadMap.included.push({\n type: `animal_${key}`,\n \"temp-id\": ids[tempIdKey],\n attributes: includedAttributes,\n });\n } else {\n if (species[removedSpeciesKey]) {\n payloadMap.relationships[`animal_${key}`].data.push({\n type: `animal_${key}`,\n method: \"destroy\",\n id: species[removedSpeciesKey],\n });\n }\n }\n });\n\n return payloadMap;\n }, cloneDeep(payloadInitValue));\n};\n\nexport const updateSpeciesCache = ({\n oldData = {},\n response,\n changedSpecies,\n}) => {\n let newData = cloneDeep(oldData);\n\n // Add new species to the cached data\n Object.assign(newData, {\n ...(!!changedSpecies.added.length\n ? addSpeciesToCache({ oldData, response })\n : {}),\n });\n\n // Remove species from the cached data\n if (!!Object.keys(changedSpecies.removed).length) {\n newData = removeSpeciesFromCache({\n response: newData,\n removedSpecies: changedSpecies.removed,\n });\n }\n\n return newData;\n};\n\nexport const addSpeciesToCache = ({ oldData = {}, response }) => {\n const newData = cloneDeep(oldData);\n\n const typeMap = {\n animal_counts: \"counts\",\n animal_intakes: \"intakes\",\n animal_outcomes: \"outcomes\",\n };\n\n response.included.forEach((incRecord) => {\n const type = incRecord.type;\n const cacheType = typeMap[type];\n newData[cacheType].data.push(incRecord);\n });\n\n return newData;\n};\n\nexport const removeSpeciesFromCache = ({ response, removedSpecies }) => {\n const newData = cloneDeep(response);\n\n removedSpecies.forEach((removed) => {\n const countIndex = newData.counts.data.findIndex((countRecord) => {\n return countRecord.id === removed.countId;\n });\n if (countIndex > -1) newData.counts.data.splice(countIndex, 1);\n\n const intakeIndex = newData.intakes.data.findIndex((intakeRecord) => {\n return intakeRecord.id === removed.intakeId;\n });\n if (intakeIndex > -1) newData.intakes.data.splice(intakeIndex, 1);\n\n const outcomeIndex = newData.outcomes.data.findIndex((outcomeRecord) => {\n return outcomeRecord.id === removed.outcomeId;\n });\n if (outcomeIndex > -1) newData.outcomes.data.splice(outcomeIndex, 1);\n });\n\n return newData;\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport Button from \"components/Button\";\nimport { useQueryClient, useMutation } from \"react-query\";\nimport { Formik, Form, FieldArray } from \"formik\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faMapMarkerAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport SpeciesCheckbox from \"components/SpeciesCheckbox/SpeciesCheckbox\";\nimport { speciesMap, apiFetch } from \"utils\";\nimport DataStatus from \"../common/DataStatus\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport { isEqual } from \"lodash\";\nimport MatrixSettingsModal from \"components/MatrixSettingsModal\";\nimport { generatePayload, updateSpeciesCache } from \"./utils\";\n\nconst AnimalEntryDetailsForm = ({\n setIsEditable,\n formattedDate,\n locationName,\n defaultSpecies,\n entryStatus,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { year, month } = useParams();\n const queryClient = useQueryClient();\n const {\n attributes: { locationId },\n } = useUserState();\n\n const [isModalOpen, setIsOpen] = useState(false);\n\n const [changedSpecies, setChangedSpecies] = useState(null);\n\n const matrixData = queryClient.getQueryData([\n \"dataEntry\",\n `${locationId}_${month}/${year}`,\n ]);\n\n const closeModal = () => {\n setIsOpen(false);\n };\n\n const initialSpeciesValues = Object.keys(speciesMap).reduce(\n (map, speciesKey) => {\n map[speciesKey] = defaultSpecies.includes(speciesKey);\n return map;\n },\n {}\n );\n\n // Fires on Form Submit\n const handleSubmitDetailsForm = (values) => {\n if (!isEqual(values, initialSpeciesValues)) {\n const removedSpecies = getRemovedSpecies(values);\n const addedSpecies = getAddedSpecies(values);\n\n // Update state\n setChangedSpecies({\n removed: removedSpecies, // array of objects\n added: addedSpecies, // array of strings\n });\n } else {\n setIsEditable(false);\n }\n };\n\n useEffect(() => {\n // If changedSpecies is null, we know the form is being shown for\n // the first time and we don't want to do anything\n if (!changedSpecies) {\n return;\n }\n if (!!changedSpecies.removed.length) {\n // If species have been removed, open the modal\n setIsOpen(true);\n } else if (!!changedSpecies.added.length) {\n // If species have only been added (and none have been removed),\n // make the API request\n setMatrixSpecies();\n } else {\n // If the species have not changed we can set the form back to it's view mode\n setIsEditable(false);\n }\n }, [changedSpecies]);\n\n const getRemovedSpecies = (animalSpecies) => {\n const removedSpecies = Object.keys(initialSpeciesValues).filter(\n (species) => !!initialSpeciesValues[species] && !animalSpecies[species]\n );\n return removedSpecies.map((speciesKey) => {\n const intakeRecord = matrixData.intakes.data.find((intake) => {\n return intake.attributes.species === speciesKey;\n });\n const outcomeRecord = matrixData.outcomes.data.find((outcome) => {\n return outcome.attributes.species === speciesKey;\n });\n const countRecord = matrixData.counts.data.find((count) => {\n return count.attributes.species === speciesKey;\n });\n\n return {\n key: speciesKey,\n intakeId: intakeRecord?.id,\n outcomeId: outcomeRecord?.id,\n countId: countRecord?.id,\n };\n });\n };\n\n const getAddedSpecies = (animalSpecies) => {\n return Object.keys(initialSpeciesValues).filter(\n (species) => !initialSpeciesValues[species] && !!animalSpecies[species]\n );\n };\n\n // Fire off our API request to add new species to DB\n const { mutate: setMatrixSpecies } = useMutation(\n () => {\n const payload = generatePayload({\n addedSpecies: changedSpecies.added,\n removedSpecies: changedSpecies.removed,\n locationId,\n year,\n month,\n });\n\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: locationId,\n type: \"locations\",\n attributes: {},\n relationships: payload.relationships,\n },\n included: payload.included,\n },\n });\n },\n {\n onSettled: () => setIsEditable(false),\n onSuccess: (response) => {\n return queryClient.setQueryData(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n (oldData) => updateSpeciesCache({ oldData, response, changedSpecies })\n );\n },\n }\n );\n\n return (\n
\n {\n const isValid = Object.keys(values).some((key) => {\n return values[key];\n });\n\n return isValid\n ? {}\n : { invalid: \"You must select at least one species\" };\n }}\n >\n {({ values, handleSubmit, errors }) => (\n <>\n
\n
\n
Entering Data For:
\n\n

\n \n {locationName}\n

\n
\n
\n
Timeframe:
\n

{formattedDate}

\n
\n\n
\n
Data Entry Status:
\n \n
\n\n
\n What types of animals are you entering for?\n
\n
\n {\n return Object.keys(values).map((key) => (\n \n ));\n }}\n />\n
\n {errors.invalid && (\n
{errors.invalid}
\n )}\n
\n setIsEditable(false)}\n >\n Cancel\n \n\n \n Save\n \n
\n\n \n \n \n )}\n \n
\n );\n};\n\nexport default AnimalEntryDetailsForm;\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faMapMarkerAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport { speciesMap } from \"utils\";\nimport DataStatus from \"../common/DataStatus\";\n\nconst AnimalEntryDetailsSelected = ({\n formattedDate,\n locationName,\n defaultSpecies,\n entryStatus,\n}) => {\n return (\n
\n
\n
Entering Data For:
\n\n

\n \n {locationName}\n

\n
\n\n
\n
Timeframe:
\n\n

{formattedDate}

\n
\n\n
\n
Data Entry Status:
\n\n \n
\n\n
\n
\n Animal Types:\n
\n
    \n {defaultSpecies.map((species) => (\n \n {speciesMap[species].label}\n \n ))}\n
\n
\n
\n );\n};\n\nexport default AnimalEntryDetailsSelected;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router\";\nimport AnimalEntryDetailsForm from \"./AnimalEntryDetailsForm\";\nimport AnimalEntryDetailsSelected from \"./AnimalEntryDetailsSelected\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheck } from \"@fortawesome/free-solid-svg-icons\";\nimport Button from \"components/Button\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { apiFetch, speciesMap } from \"utils\";\nimport PropTypes from \"prop-types\";\n\nconst AnimalEntryDetails = ({\n defaultSpecies,\n entryStatus,\n selectedSpecies,\n setSpecies,\n isEditing,\n setIsEditing,\n handleSubmit,\n location,\n handleSubmitAll,\n}) => {\n const [isEditable, setIsEditable] = useState(false);\n const { isOrgAdmin } = useUserState();\n\n const { month, year } = useParams();\n const date = new Date(`${year}/${month}/1`);\n const formattedDate = Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n }).format(date);\n\n return (\n
\n
\n
\n
\n {!isEditable ? (\n \n \n \n ) : (\n 1\n )}\n
\n
\n
\n

Details

\n\n {!isEditable && isOrgAdmin ? (\n \n ) : null}\n
\n\n {!isEditable ? (\n \n ) : (\n \n )}\n
\n
\n
\n
\n
\n
\n

\n
\n 1. Click species button below to edit/enter all data for that\n species.\n
\n
\n 2. Click save to save all data for that species. Any empty\n fields will be highlighted as incomplete.\n
\n
\n 3. Click species button again and then submit button to submit\n all data for all species.\n
\n

\n
\n
\n
\n
\n {defaultSpecies.map((species, index) => {\n return (\n setSpecies(species)}\n >\n {speciesMap[species].label}\n \n );\n })}\n
\n {selectedSpecies ? (\n
\n \n \n
\n ) : (\n \n )}\n
\n
\n
\n );\n};\n\nAnimalEntryDetails.propTypes = {\n defaultSpecies: PropTypes.array.isRequired,\n entryStatus: PropTypes.string.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n setSpecies: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n setIsEditing: PropTypes.func.isRequired,\n handleSubmit: PropTypes.func.isRequired,\n handleSubmitAll: PropTypes.func.isRequired,\n};\n\nexport default AnimalEntryDetails;\n","export const animalIntakes = {\n adultStrayAtLargeCount: 0,\n youthStrayAtLargeCount: 0,\n ageUnknownStrayAtLargeCount: 0,\n adultRelinquishedByOwnerCount: 0,\n youthRelinquishedByOwnerCount: 0,\n ageUnknownRelinquishedByOwnerCount: 0,\n adultOwnerIntendedEuthanasiaCount: 0,\n youthOwnerIntendedEuthanasiaCount: 0,\n ageUnknownOwnerIntendedEuthanasiaCount: 0,\n adultOtherIntakesCount: 0,\n youthOtherIntakesCount: 0,\n ageUnknownOtherIntakesCount: 0,\n adultTransferredInstateInFromAgencyCount: 0,\n youthTransferredInstateInFromAgencyCount: 0,\n ageUnknownTransferredInstateInFromAgencyCount: 0,\n adultTransferredOutOfStateInFromAgencyCount: 0,\n youthTransferredOutOfStateInFromAgencyCount: 0,\n ageUnknownTransferredOutOfStateInFromAgencyCount: 0,\n adultTransferredInternationallyInFromAgencyCount: 0,\n youthTransferredInternationallyInFromAgencyCount: 0,\n ageUnknownTransferredInternationallyInFromAgencyCount: 0,\n adultSeizedOrImpoundedCount: 0,\n youthSeizedOrImpoundedCount: 0,\n ageUnknownSeizedOrImpoundedCount: 0,\n totalStrayAtLargeCount: 0,\n totalRelinquishedByOwnerCount: 0,\n totalOwnerIntendedEuthanasiaCount: 0,\n totalTransferredInstateInFromAgencyCount: 0,\n totalTransferredOutOfStateInFromAgencyCount: 0,\n totalTransferredInternationallyInFromAgencyCount: 0,\n totalOtherIntakesCount: 0,\n totalAdultLiveIntakeCount: 0,\n totalYouthLiveIntakeCount: 0,\n totalAgeUnknownLiveIntakeCount: 0,\n totalSeizedOrImpoundedCount: 0,\n totalLiveIntakeCount: 0,\n};\n","import React from \"react\";\n\nexport const data = [\n {\n org: \"Shelter Animals Count\",\n month: \"September\",\n year: \"2020\",\n status: \"Incomplete\",\n lastModified: new Date(2020, 8, 17).toLocaleDateString(),\n actions: 1,\n },\n {\n org: \"Software for Good\",\n month: \"February\",\n year: \"2020\",\n status: \"Complete\",\n lastModified: new Date(2020, 1, 28).toLocaleDateString(),\n actions: 2,\n },\n {\n org: \"Humane Society of Golden Valley\",\n month: \"December\",\n year: \"2019\",\n status: \"Complete\",\n lastModified: new Date(2019, 11, 10).toLocaleDateString(),\n actions: 3,\n },\n];\n\nexport const columns = [\n {\n Header: \"Organization\",\n accessor: \"org\", // accessor is the \"key\" in the data\n },\n {\n Header: \"Month\",\n accessor: \"month\",\n },\n {\n Header: \"Year\",\n accessor: \"year\",\n },\n {\n Header: \"Status\",\n accessor: \"status\",\n },\n {\n Header: \"Last Modified\",\n accessor: \"lastModified\",\n },\n {\n accessor: \"actions\",\n Cell: ({ value: id }) => (\n <>\n \n Edit\n \n \n Delete\n \n \n ),\n },\n];\n","export const animalOutcomes = {\n adultAdoptionCount: 0,\n youthAdoptionCount: 0,\n ageUnknownAdoptionCount: 0,\n adultReturnedToOwnerCount: 0,\n youthReturnedToOwnerCount: 0,\n ageUnknownReturnedToOwnerCount: 0,\n adultReturnedToFieldCount: 0,\n youthReturnedToFieldCount: 0,\n ageUnknownReturnedToFieldCount: 0,\n adultOtherLiveOutcomeCount: 0,\n youthOtherLiveOutcomeCount: 0,\n ageUnknownOtherLiveOutcomeCount: 0,\n adultDiedInCareCount: 0,\n youthDiedInCareCount: 0,\n ageUnknownDiedInCareCount: 0,\n adultLostInCareCount: 0,\n youthLostInCareCount: 0,\n ageUnknownLostInCareCount: 0,\n adultShelterEuthanasiaCount: 0,\n youthShelterEuthanasiaCount: 0,\n ageUnknownShelterEuthanasiaCount: 0,\n adultOwnerIntendedEuthanasiaCount: 0,\n youthOwnerIntendedEuthanasiaCount: 0,\n ageUnknownOwnerIntendedEuthanasiaCount: 0,\n adultTransferredInstateToAnotherAgencyCount: 0,\n youthTransferredInstateToAnotherAgencyCount: 0,\n ageUnknownTransferredInstateToAnotherAgencyCount: 0,\n adultTransferredOutOfStateToAnotherAgencyCount: 0,\n youthTransferredOutOfStateToAnotherAgencyCount: 0,\n ageUnknownTransferredOutOfStateToAnotherAgencyCount: 0,\n adultTransferredInternationallyToAnotherAgencyCount: 0,\n youthTransferredInternationallyToAnotherAgencyCount: 0,\n ageUnknownTransferredInternationallyToAnotherAgencyCount: 0,\n totalAdoptionCount: 0,\n totalReturnedToOwnerCount: 0,\n totalTransferredInstateToAnotherAgencyCount: 0,\n totalTransferredOutOfStateToAnotherAgencyCount: 0,\n totalTransferredInternationallyToAnotherAgencyCount: 0,\n totalReturnedToFieldCount: 0,\n totalOtherLiveOutcomeCount: 0,\n subtotalAdultLiveOutcomesCount: 0,\n subtotalYouthLiveOutcomesCount: 0,\n subtotalAgeUnknownLiveOutcomesCount: 0,\n subtotalLiveOutcomesCount: 0,\n totalDiedInCareCount: 0,\n totalLostInCareCount: 0,\n totalShelterEuthanasiaCount: 0,\n totalOwnerIntendedEuthanasiaCount: 0,\n subtotalAdultOtherOutcomesCount: 0,\n subtotalYouthOtherOutcomesCount: 0,\n subtotalAgeUnknownOtherOutcomesCount: 0,\n subtotalOtherOutcomesCount: 0,\n totalAdultOutcomesCount: 0,\n totalYouthOutcomesCount: 0,\n totalAgeUnknownOutcomesCount: 0,\n totalOutcomesCount: 0,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useField } from \"formik\";\n\nconst Input = ({ name, label, ...props }) => {\n const [field] = useField(name);\n return (\n
\n \n \n
\n );\n};\n\nInput.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n};\n\nexport default Input;\n","import React from \"react\";\nimport Input from \"components/Input\";\n\nconst TableFormInput = (cellInfo) => {\n const inputName = cellInfo.cell.row.original.attributeKeys.find((key) =>\n key.toUpperCase().includes(cellInfo.cell.column.id.toUpperCase())\n );\n return (\n \n );\n};\nexport default TableFormInput;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useParams } from \"react-router-dom\";\nimport TableFormInput from \"../common/TableFormInput\";\nimport { useQueryClient, useMutation } from \"react-query\";\nimport { Form, Formik } from \"formik\";\nimport { cloneDeep } from \"lodash\";\nimport Table, {\n getRowData,\n rowLabelCell,\n getFormAttributes,\n transformAttributesForPayload,\n} from \"components/Table\";\nimport { animalIntakes } from \"components/Table/__mocks__\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { apiFetch, speciesMap, useHandleRequestStates } from \"utils\";\n\nconst AnimalIntakeForm = forwardRef(({ attributes, dataId }, ref) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { year, month } = useParams();\n const { handleSuccess, handleError } = useHandleRequestStates();\n\n const {\n attributes: { locationId },\n } = useUserState();\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n // Set our Table Columns\n const formColumns = [\n {\n accessor: \"rowLabel\",\n Header: \"\",\n Cell: rowLabelCell,\n },\n {\n accessor: \"adult\",\n Header: \"Adult\",\n Cell: TableFormInput,\n },\n {\n accessor: \"youth\",\n Header: \"Up to 5 mos.\",\n Cell: TableFormInput,\n },\n {\n accessor: \"ageUnknown\",\n Header: \"Age Unknown\",\n Cell: TableFormInput,\n },\n {\n accessor: \"total\",\n Header: \"Subtotal\",\n },\n ];\n\n const data = [\n setRow({\n rowLabel: \"Stray at large\",\n keySubString: \"StrayAtLargeCount\",\n tooltip: \"Stated to be unowned or free-roaming\",\n }),\n setRow({\n rowLabel: \"Relinquished by owner\",\n keySubString: \"RelinquishedByOwnerCount\",\n tooltip:\n \"Admitted by owner, including adoption returns. All returns should be tracked as owner relinquishment.\",\n }),\n setRow({\n rowLabel: \"Owner-intended euthanasia\",\n keySubString: \"OwnerIntendedEuthanasiaCount\",\n tooltip:\n \"Limited to this definition: Euthanasia of pets whose owner brought the pet to the shelter with the INTENT of utilizing euthanasia services.\",\n }),\n setRow({\n rowLabel: \"Transferred in state\",\n keySubString: \"TransferredInstateInFromAgencyCount\",\n tooltip:\n \"Admission from another agency within the same state, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transferred out of state\",\n keySubString: \"TransferredOutOfStateInFromAgencyCount\",\n tooltip:\n \"Admission from another agency in a different state, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transferred internationally\",\n keySubString: \"TransferredInternationallyInFromAgencyCount\",\n tooltip:\n \"Admission from another agency outside the US, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transfers In (undesignated)\",\n keySubString: \"LegacyTransferredInFromAgencyCount\",\n tooltip:\n \"Transfer in to agency (undesignated) represents Transfer In data prior to when agency location break outs.\",\n }),\n setRow({\n rowLabel: \"Seized or impounded\",\n keySubString: \"SeizedOrImpoundedCount\",\n tooltip:\n \"Impounds for pets seized during cruelty cases or for protective custody. This does not include pets relinquished by their owners.\",\n }),\n setRow({\n rowLabel: \"Other intakes\",\n keySubString: \"OtherIntakesCount\",\n tooltip:\n \"Pets born while in care, and other types of admission not captured above.\",\n }),\n ];\n\n const { mutate: updateAnimalIntakes } = useMutation(\n (attributes) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_intakes/${dataId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: dataId,\n type: \"animal_intakes\",\n attributes: transformAttributesForPayload(attributes),\n },\n },\n }),\n {\n onSuccess: (response) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} live intakes`,\n });\n\n // API returns updated table. But cache stores all tables and when you update you lose extra tables.\n return queryClient.setQueryData(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n (oldData = {}) => {\n const newData = cloneDeep(oldData);\n if (newData.intakes) {\n const speciesIndex = newData.intakes.data.findIndex(\n (intakeRecord) => {\n return intakeRecord.id === dataId;\n }\n );\n newData.intakes.data[speciesIndex] = response.data;\n }\n return newData;\n }\n );\n },\n onError: handleError,\n }\n );\n\n return (\n updateAnimalIntakes(values)}\n innerRef={ref}\n >\n
\n \n \n \n );\n});\n\nAnimalIntakeForm.defaultProps = {\n attributes: animalIntakes,\n dataId: PropTypes.string.isRequired,\n};\n\nAnimalIntakeForm.propTypes = {\n attributes: PropTypes.shape({\n species: PropTypes.string.isRequired,\n adultStrayAtLargeCount: PropTypes.number,\n youthStrayAtLargeCount: PropTypes.number,\n ageUnknownStrayAtLargeCount: PropTypes.number,\n adultRelinquishedByOwnerCount: PropTypes.number,\n youthRelinquishedByOwnerCount: PropTypes.number,\n ageUnknownRelinquishedByOwnerCount: PropTypes.number,\n adultOwnerIntendedEuthanasiaCount: PropTypes.number,\n youthOwnerIntendedEuthanasiaCount: PropTypes.number,\n ageUnknownOwnerIntendedEuthanasiaCount: PropTypes.number,\n adultOtherIntakesCount: PropTypes.number,\n youthOtherIntakesCount: PropTypes.number,\n ageUnknownOtherIntakesCount: PropTypes.number,\n adultTransferredInstateInFromAgencyCount: PropTypes.number,\n youthTransferredInstateInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredInstateInFromAgencyCount: PropTypes.number,\n adultTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n youthTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n adultTransferredInternationallyInFromAgencyCount: PropTypes.number,\n youthTransferredInternationallyInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredInternationallyInFromAgencyCount: PropTypes.number,\n adultSeizedOrImpoundedCount: PropTypes.number,\n youthSeizedOrImpoundedCount: PropTypes.number,\n ageUnknownSeizedOrImpoundedCount: PropTypes.number,\n totalStrayAtLargeCount: PropTypes.number,\n totalRelinquishedByOwnerCount: PropTypes.number,\n totalOwnerIntendedEuthanasiaCount: PropTypes.number,\n totalTransferredInstateInFromAgencyCount: PropTypes.number,\n totalTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n totalTransferredInternationallyInFromAgencyCount: PropTypes.number,\n totalOtherIntakesCount: PropTypes.number,\n totalAdultLiveIntakeCount: PropTypes.number,\n totalYouthLiveIntakeCount: PropTypes.number,\n totalAgeUnknownLiveIntakeCount: PropTypes.number,\n totalSeizedOrImpoundedCount: PropTypes.number,\n totalLiveIntakeCount: PropTypes.number,\n }),\n};\n\nexport default AnimalIntakeForm;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Table, { getRowData, columns } from \"components/Table\";\nimport { animalIntakes } from \"components/Table/__mocks__\";\nimport AnimalIntakeForm from \"./AnimalIntakeForm\";\nimport { speciesMap } from \"utils\";\n\nconst AnimalIntake = forwardRef(({ attributes, dataId, isEditing }, ref) => {\n const { species, organizationId } = attributes;\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n var data = [\n setRow({\n rowLabel: \"Stray at large\",\n keySubString: \"StrayAtLargeCount\",\n tooltip: \"Stated to be unowned or free-roaming\",\n }),\n setRow({\n rowLabel: \"Relinquished by owner\",\n keySubString: \"RelinquishedByOwnerCount\",\n tooltip:\n \"Admitted by owner, including adoption returns. All returns should be tracked as owner relinquishment.\",\n }),\n setRow({\n rowLabel: \"Owner-intended euthanasia\",\n keySubString: \"OwnerIntendedEuthanasiaCount\",\n tooltip:\n \"Limited to this definition: Euthanasia of pets whose owner brought the pet to the shelter with the INTENT of utilizing euthanasia services.\",\n }),\n setRow({\n rowLabel: \"Transferred in state\",\n keySubString: \"TransferredInstateInFromAgencyCount\",\n tooltip:\n \"Admission from another agency within the same state, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transferred out of state\",\n keySubString: \"TransferredOutOfStateInFromAgencyCount\",\n tooltip:\n \"Admission from another agency in a different state, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transferred internationally\",\n keySubString: \"TransferredInternationallyInFromAgencyCount\",\n tooltip:\n \"Admission from another agency outside the US, for adoption, large scale seizure support, etc.\",\n }),\n setRow({\n rowLabel: \"Transfers In (undesignated)\",\n keySubString: \"LegacyTransferredInFromAgencyCount\",\n tooltip:\n \"Transfer in to agency (undesignated) represents Transfer In data prior to when agency location break outs.\",\n }),\n setRow({\n rowLabel: \"Seized or impounded\",\n keySubString: \"SeizedOrImpoundedCount\",\n tooltip:\n \"Impounds for pets seized during cruelty cases or for protective custody. This does not include pets relinquished by their owners.\",\n }),\n setRow({\n rowLabel: \"Other intakes\",\n keySubString: \"OtherIntakesCount\",\n tooltip:\n \"Pets born while in care, and other types of admission not captured above.\",\n }),\n ];\n\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n {!isEditing ? (\n \n ) : (\n \n )}\n
\n );\n});\n\nAnimalIntake.propTypes = {\n attributes: PropTypes.array,\n dataId: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n};\n\nAnimalIntake.defaultProps = {\n attributes: animalIntakes,\n};\n\nAnimalIntake.propTypes = {\n attributes: PropTypes.shape({\n species: PropTypes.string.isRequired,\n adultStrayAtLargeCount: PropTypes.number,\n youthStrayAtLargeCount: PropTypes.number,\n ageUnknownStrayAtLargeCount: PropTypes.number,\n adultRelinquishedByOwnerCount: PropTypes.number,\n youthRelinquishedByOwnerCount: PropTypes.number,\n ageUnknownRelinquishedByOwnerCount: PropTypes.number,\n adultOwnerIntendedEuthanasiaCount: PropTypes.number,\n youthOwnerIntendedEuthanasiaCount: PropTypes.number,\n ageUnknownOwnerIntendedEuthanasiaCount: PropTypes.number,\n adultOtherIntakesCount: PropTypes.number,\n youthOtherIntakesCount: PropTypes.number,\n ageUnknownOtherIntakesCount: PropTypes.number,\n adultTransferredInstateInFromAgencyCount: PropTypes.number,\n youthTransferredInstateInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredInstateInFromAgencyCount: PropTypes.number,\n adultTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n youthTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n adultTransferredInternationallyInFromAgencyCount: PropTypes.number,\n youthTransferredInternationallyInFromAgencyCount: PropTypes.number,\n ageUnknownTransferredInternationallyInFromAgencyCount: PropTypes.number,\n adultSeizedOrImpoundedCount: PropTypes.number,\n youthSeizedOrImpoundedCount: PropTypes.number,\n ageUnknownSeizedOrImpoundedCount: PropTypes.number,\n adultLegacyTransferredInFromAgencyCount: PropTypes.number,\n youthLegacyTransferredInFromAgencyCount: PropTypes.number,\n ageUnknownLegacyTransferredInFromAgencyCount: PropTypes.number,\n totalStrayAtLargeCount: PropTypes.number,\n totalRelinquishedByOwnerCount: PropTypes.number,\n totalOwnerIntendedEuthanasiaCount: PropTypes.number,\n totalTransferredInstateInFromAgencyCount: PropTypes.number,\n totalTransferredOutOfStateInFromAgencyCount: PropTypes.number,\n totalTransferredInternationallyInFromAgencyCount: PropTypes.number,\n totalOtherIntakesCount: PropTypes.number,\n totalAdultLiveIntakeCount: PropTypes.number,\n totalYouthLiveIntakeCount: PropTypes.number,\n totalAgeUnknownLiveIntakeCount: PropTypes.number,\n totalSeizedOrImpoundedCount: PropTypes.number,\n totalLegacyTransferredInFromAgencyCount: PropTypes.number,\n totalLiveIntakeCount: PropTypes.number,\n }),\n};\n\nexport default AnimalIntake;\n","import React, { forwardRef } from \"react\";\nimport AnimalIntake from \"./AnimalIntake\";\nimport PropTypes from \"prop-types\";\n\nconst AnimalIntakes = forwardRef(\n ({ animalData, selectedSpecies, isEditing }, ref) => {\n return (\n
\n
\n
\n 2\n
\n
\n
\n

Live Intake

\n
\n\n {animalData.map(\n ({ id, attributes, attributes: { species, locationId } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n }\n )}\n
\n
\n
\n );\n }\n);\n\nAnimalIntakes.propTypes = {\n animalData: PropTypes.array.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n};\n\nexport default AnimalIntakes;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport TableFormInput from \"../common/TableFormInput\";\nimport { useParams } from \"react-router-dom\";\nimport { useQueryClient, useMutation } from \"react-query\";\nimport { Formik, Form } from \"formik\";\nimport { cloneDeep } from \"lodash\";\nimport Table, {\n getRowData,\n rowLabelCell,\n getFormAttributes,\n transformAttributesForPayload,\n} from \"components/Table\";\nimport { animalOutcomes } from \"components/Table/__mocks__\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { apiFetch, speciesMap, useHandleRequestStates } from \"utils\";\n\nconst AnimalOutcomeForm = forwardRef(({ attributes, type, dataId }, ref) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { year, month } = useParams();\n const { handleSuccess, handleError } = useHandleRequestStates();\n\n const {\n attributes: { locationId },\n } = useUserState();\n\n // Set our Table Columns\n const formColumns = [\n {\n accessor: \"rowLabel\",\n Header: \"\",\n Cell: rowLabelCell,\n },\n {\n accessor: \"adult\",\n Header: \"Adult\",\n Cell: TableFormInput,\n },\n {\n accessor: \"youth\",\n Header: \"Up to 5 mos.\",\n Cell: TableFormInput,\n },\n {\n accessor: \"ageUnknown\",\n Header: \"Age Unknown\",\n Cell: TableFormInput,\n },\n {\n accessor: \"total\",\n Header: \"Subtotal\",\n },\n ];\n\n let data = [\n {\n rowLabel: \"Adoption\",\n keySubString: \"AdoptionCount\",\n tooltip: `Final adoptions only, having permanently left the agency's possession. For example, it does NOT include animals placed in foster care or on overnight \"trial\" stays.`,\n },\n {\n rowLabel: \"Returned to owner\",\n keySubString: \"ReturnedToOwnerCount\",\n tooltip: \"Stray or Owner Relinquished animals returned to their owner\",\n },\n {\n rowLabel: \"Transferred in state\",\n keySubString: \"TransferredInstateToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity within the same state or territory.\",\n },\n {\n rowLabel: \"Transferred out of state\",\n keySubString: \"TransferredOutOfStateToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity in a different state or territory.\",\n },\n {\n rowLabel: \"Transferred internationally\",\n keySubString: \"TransferredInternationallyToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity outside the US.\",\n },\n {\n rowLabel: \"Transfers Out (undesignated)\",\n keySubString: \"LegacyTransferredToAnotherAgencyCount\",\n tooltip:\n \"Transfer in to agency (undesignated) represents Transfer In data prior to when agency location break outs.\",\n },\n {\n rowLabel: \"Returned to field\",\n keySubString: \"ReturnedToFieldCount\",\n tooltip:\n \"Animals included in intake, already altered or altered after intake, and returned to stray capture location to be released (often referred to as SNR). This is not TNR.\",\n },\n {\n rowLabel: \"Other live outcome\",\n keySubString: \"OtherLiveOutcomeCount\",\n },\n ].map(({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n })\n );\n\n if (type === \"other\") {\n data = [\n {\n rowLabel: \"Died in care\",\n keySubString: \"DiedInCareCount\",\n },\n {\n rowLabel: \"Lost in care\",\n keySubString: \"LostInCareCount\",\n },\n {\n rowLabel: \"Shelter euthanasia\",\n keySubString: \"ShelterEuthanasiaCount\",\n },\n {\n rowLabel: \"Owner intended euthanasia\",\n keySubString: \"OwnerIntendedEuthanasiaCount\",\n tooltip:\n \"Limited to this definition: Euthanasia of pets whose owner brought the pet to the shelter with the INTENT of utilizing euthanasia services.\",\n },\n ].map(({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n })\n );\n }\n\n const { mutate: updateAnimalOutcomes } = useMutation(\n (attributes) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_outcomes/${dataId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: dataId,\n type: \"animal_outcomes\",\n attributes: transformAttributesForPayload(attributes),\n },\n },\n }),\n {\n onSuccess: async (response) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} ${\n type === \"live\" ? \"live\" : \"other\"\n } outcomes`,\n });\n\n return await queryClient.setQueryData(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n (oldData = {}) => {\n const newData = cloneDeep(oldData);\n if (newData.outcomes) {\n const speciesIndex = newData.outcomes.data.findIndex(\n (outcomesRecord) => {\n return outcomesRecord.id === dataId;\n }\n );\n newData.outcomes.data[speciesIndex] = response.data;\n }\n return newData;\n }\n );\n },\n onError: handleError,\n }\n );\n\n return (\n
\n updateAnimalOutcomes(values)}\n innerRef={ref}\n >\n
\n \n \n \n
\n );\n});\n\nAnimalOutcomeForm.defaultProps = {\n attributes: animalOutcomes,\n};\n\nAnimalOutcomeForm.propTypes = {\n type: PropTypes.oneOf([\"live\", \"other\"]),\n dataId: PropTypes.string.isRequired,\n attributes: PropTypes.shape({\n species: PropTypes.string.isRequired,\n adultAdoptionCount: PropTypes.number,\n youthAdoptionCount: PropTypes.number,\n ageUnknownAdoptionCount: PropTypes.number,\n adultReturnedToOwnerCount: PropTypes.number,\n youthReturnedToOwnerCount: PropTypes.number,\n ageUnknownReturnedToOwnerCount: PropTypes.number,\n adultReturnedToFieldCount: PropTypes.number,\n youthReturnedToFieldCount: PropTypes.number,\n ageUnknownReturnedToFieldCount: PropTypes.number,\n adultOtherLiveOutcomeCount: PropTypes.number,\n youthOtherLiveOutcomeCount: PropTypes.number,\n ageUnknownOtherLiveOutcomeCount: PropTypes.number,\n adultDiedInCareCount: PropTypes.number,\n youthDiedInCareCount: PropTypes.number,\n ageUnknownDiedInCareCount: PropTypes.number,\n adultLostInCareCount: PropTypes.number,\n youthLostInCareCount: PropTypes.number,\n ageUnknownLostInCareCount: PropTypes.number,\n adultShelterEuthanasiaCount: PropTypes.number,\n youthShelterEuthanasiaCount: PropTypes.number,\n ageUnknownShelterEuthanasiaCount: PropTypes.number,\n adultOwnerIntendedEuthanasiaCount: PropTypes.number,\n youthOwnerIntendedEuthanasiaCount: PropTypes.number,\n ageUnknownOwnerIntendedEuthanasiaCount: PropTypes.number,\n adultTransferredInstateToAnotherAgencyCount: PropTypes.number,\n youthTransferredInstateToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredInstateToAnotherAgencyCount: PropTypes.number,\n adultTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n youthTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n adultTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n youthTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n adultLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n youthLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n ageUnknownLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n totalAdoptionCount: PropTypes.number,\n totalReturnedToOwnerCount: PropTypes.number,\n totalTransferredInstateToAnotherAgencyCount: PropTypes.number,\n totalTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n totalTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n totalTransferredToAnotherAgencyCount: PropTypes.number,\n totalReturnedToFieldCount: PropTypes.number,\n totalOtherLiveOutcomeCount: PropTypes.number,\n totalDiedInCareCount: PropTypes.number,\n totalLostInCareCount: PropTypes.number,\n totalShelterEuthanasiaCount: PropTypes.number,\n totalOwnerIntendedEuthanasiaCount: PropTypes.number,\n totalAdultOutcomesCount: PropTypes.number,\n totalYouthOutcomesCount: PropTypes.number,\n totalAgeUnknownOutcomesCount: PropTypes.number,\n totalOutcomesCount: PropTypes.number,\n }),\n};\n\nexport default AnimalOutcomeForm;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Table, { getRowData, columns } from \"components/Table\";\nimport { animalOutcomes } from \"components/Table/__mocks__\";\nimport AnimalOutcomeForm from \"./AnimalOutcomeForm\";\nimport { speciesMap } from \"utils\";\n\nconst AnimalOutcome = forwardRef(\n ({ attributes, type, dataId, isEditing }, ref) => {\n const { species, locationId } = attributes;\n\n let data = [\n {\n rowLabel: \"Adoption\",\n keySubString: \"AdoptionCount\",\n tooltip: `Final adoptions only, having permanently left the agency's possession. For example, it does NOT include animals placed in foster care or on overnight \"trial\" stays.`,\n },\n {\n rowLabel: \"Returned to owner\",\n keySubString: \"ReturnedToOwnerCount\",\n tooltip: \"Stray or Owner Relinquished animals returned to their owner\",\n },\n {\n rowLabel: \"Transferred in state\",\n keySubString: \"TransferredInstateToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity within the same state or territory.\",\n },\n {\n rowLabel: \"Transferred out of state\",\n keySubString: \"TransferredOutOfStateToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity in a different state or territory.\",\n },\n {\n rowLabel: \"Transferred internationally\",\n keySubString: \"TransferredInternationallyToAnotherAgencyCount\",\n tooltip:\n \"Transferred out of the agency's possession to another entity outside the US.\",\n },\n {\n rowLabel: \"Transfers Out (undesignated)\",\n keySubString: \"LegacyTransferredToAnotherAgencyCount\",\n tooltip:\n \"Transfer in to agency (undesignated) represents Transfer In data prior to when agency location break outs.\",\n },\n {\n rowLabel: \"Returned to field\",\n keySubString: \"ReturnedToFieldCount\",\n tooltip:\n \"Animals included in intake, already altered or altered after intake, and returned to stray capture location to be released (often referred to as SNR). This is not TNR.\",\n },\n {\n rowLabel: \"Other live outcome\",\n keySubString: \"OtherLiveOutcomeCount\",\n tooltip: \"Other types of live outcome not captured above.\",\n },\n ].map(({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n })\n );\n\n if (type === \"other\") {\n data = [\n {\n rowLabel: \"Died in care\",\n keySubString: \"DiedInCareCount\",\n tooltip: \"Animals who die, unassisted, while sheltered or fostered.\",\n },\n {\n rowLabel: \"Lost in care\",\n keySubString: \"LostInCareCount\",\n tooltip:\n \"Animals whose outcome is unknown (may have escaped the shelter, outcome was not recorded and unknown).\",\n },\n {\n rowLabel: \"Shelter euthanasia\",\n keySubString: \"ShelterEuthanasiaCount\",\n tooltip:\n \"All euthanasia other than that performed by the definition below as owner intended euthanasia.\",\n },\n {\n rowLabel: \"Owner intended euthanasia\",\n keySubString: \"OwnerIntendedEuthanasiaCount\",\n tooltip:\n \"Animals included in intake whose owner brought the pet to the shelter with the INTENT of requesting euthanasia. OIE provided as a service outside of intake is not counted here.\",\n },\n ].map(({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n })\n );\n }\n\n if (type === \"other\") {\n const arr = [\n \"locationId\",\n \"monthOfRecord\",\n \"yearOfRecord\",\n \"dateOfRecord\",\n \"archivedAt\",\n \"createdAt\",\n \"updatedAt\",\n \"DiedInCareCount\",\n \"LostInCareCount\",\n \"ShelterEuthanasiaCount\",\n \"OwnerIntendedEuthanasiaCount\",\n \"species\",\n ];\n let resultObj = {};\n const getAllKeys = Object.keys(attributes);\n arr.forEach(function (item) {\n getAllKeys.forEach(function (keyName) {\n if (keyName.indexOf(item) !== -1) {\n resultObj[keyName] = attributes[keyName];\n }\n });\n });\n attributes = resultObj;\n } else {\n const arr = [\n \"DiedInCareCount\",\n \"LostInCareCount\",\n \"ShelterEuthanasiaCount\",\n \"OwnerIntendedEuthanasiaCount\",\n ];\n let resultObj = {};\n const getAllKeys = Object.keys(attributes);\n getAllKeys.forEach(function (keyName) {\n if (!arr.some((v) => keyName.includes(v))) {\n resultObj[keyName] = attributes[keyName];\n }\n });\n attributes = resultObj;\n }\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n {!isEditing ? (\n \n ) : (\n
\n \n
\n )}\n
\n );\n }\n);\n\nAnimalOutcome.propTypes = {\n attributes: PropTypes.array,\n dataId: PropTypes.string.isRequired,\n type: PropTypes.oneOf([\"live\", \"other\"]).isRequired,\n isEditing: PropTypes.bool.isRequired,\n};\n\nAnimalOutcome.defaultProps = {\n attributes: animalOutcomes,\n};\n\nAnimalOutcome.propTypes = {\n type: PropTypes.oneOf([\"live\", \"other\"]),\n attributes: PropTypes.shape({\n species: PropTypes.string.isRequired,\n adultAdoptionCount: PropTypes.number,\n youthAdoptionCount: PropTypes.number,\n ageUnknownAdoptionCount: PropTypes.number,\n adultReturnedToOwnerCount: PropTypes.number,\n youthReturnedToOwnerCount: PropTypes.number,\n ageUnknownReturnedToOwnerCount: PropTypes.number,\n adultReturnedToFieldCount: PropTypes.number,\n youthReturnedToFieldCount: PropTypes.number,\n ageUnknownReturnedToFieldCount: PropTypes.number,\n adultOtherLiveOutcomeCount: PropTypes.number,\n youthOtherLiveOutcomeCount: PropTypes.number,\n ageUnknownOtherLiveOutcomeCount: PropTypes.number,\n adultDiedInCareCount: PropTypes.number,\n youthDiedInCareCount: PropTypes.number,\n ageUnknownDiedInCareCount: PropTypes.number,\n adultLostInCareCount: PropTypes.number,\n youthLostInCareCount: PropTypes.number,\n ageUnknownLostInCareCount: PropTypes.number,\n adultShelterEuthanasiaCount: PropTypes.number,\n youthShelterEuthanasiaCount: PropTypes.number,\n ageUnknownShelterEuthanasiaCount: PropTypes.number,\n adultOwnerIntendedEuthanasiaCount: PropTypes.number,\n youthOwnerIntendedEuthanasiaCount: PropTypes.number,\n ageUnknownOwnerIntendedEuthanasiaCount: PropTypes.number,\n adultTransferredInstateToAnotherAgencyCount: PropTypes.number,\n youthTransferredInstateToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredInstateToAnotherAgencyCount: PropTypes.number,\n adultTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n youthTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n adultTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n youthTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n ageUnknownTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n adultLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n youthLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n ageUnknownLegacyTransferredToAnotherAgencyCount: PropTypes.number,\n totalAdoptionCount: PropTypes.number,\n totalReturnedToOwnerCount: PropTypes.number,\n totalTransferredInstateToAnotherAgencyCount: PropTypes.number,\n totalTransferredOutOfStateToAnotherAgencyCount: PropTypes.number,\n totalTransferredInternationallyToAnotherAgencyCount: PropTypes.number,\n totalTransferredToAnotherAgencyCount: PropTypes.number,\n totalReturnedToFieldCount: PropTypes.number,\n totalOtherLiveOutcomeCount: PropTypes.number,\n totalDiedInCareCount: PropTypes.number,\n totalLostInCareCount: PropTypes.number,\n totalShelterEuthanasiaCount: PropTypes.number,\n totalOwnerIntendedEuthanasiaCount: PropTypes.number,\n totalAdultOutcomesCount: PropTypes.number,\n totalYouthOutcomesCount: PropTypes.number,\n totalAgeUnknownOutcomesCount: PropTypes.number,\n totalOutcomesCount: PropTypes.number,\n }),\n};\n\nexport default AnimalOutcome;\n","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgUploadIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 71,\n height: 66,\n viewBox: \"0 0 71 66\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24 14L35 3L46 14\",\n stroke: \"#C4D1DC\",\n strokeWidth: 3,\n strokeMiterlimit: 10\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35 3V54\",\n stroke: \"#C4D1DC\",\n strokeWidth: 3,\n strokeMiterlimit: 10\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.1506 29.8398H7C4.23858 29.8398 2 32.0784 2 34.8398V59.4C2 62.1614 4.23858 64.4 7 64.4H63.6068C66.3682 64.4 68.6068 62.1614 68.6068 59.4V34.8398C68.6068 32.0784 66.3682 29.8398 63.6068 29.8398H52.6184\",\n stroke: \"#C4D1DC\",\n strokeWidth: 3,\n strokeMiterlimit: 10\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUploadIcon);\nexport default __webpack_public_path__ + \"static/media/upload_icon.c36e9577.svg\";\nexport { ForwardRef as ReactComponent };","import React, { forwardRef } from \"react\";\nimport AnimalOutcome from \"./AnimalOutcome\";\nimport PropTypes from \"prop-types\";\n\nconst AnimalOutcomes = forwardRef(\n ({ animalData, selectedSpecies, isEditing }, ref) => {\n return (\n
\n
\n
\n
\n 3\n
\n\n
\n
\n

Live Outcomes

\n
\n\n {animalData.map(\n ({ id, attributes, attributes: { species, locationId } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n (ref.current[\"liveOutcome\"] = el)}\n />\n );\n }\n }\n )}\n
\n
\n
\n
\n
\n
\n 4\n
\n\n
\n
\n

Non-Live (Other) Outcomes

\n
\n {animalData.map(\n ({\n id,\n attributes,\n attributes: { species, organizationId },\n }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n (ref.current[\"otherOutcome\"] = el)}\n />\n );\n }\n }\n )}\n
\n
\n
\n
\n );\n }\n);\n\nAnimalOutcomes.propTypes = {\n animalData: PropTypes.array.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n};\n\nexport default AnimalOutcomes;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { async, hash } from \"rsvp\";\nimport {\n AnimalCounts,\n AnimalIntakes,\n AnimalOutcomes,\n AnimalEntryDetails,\n} from \"./components\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Error from \"components/Error\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport {\n apiFetch,\n API_URL,\n formatUiErrors,\n useHandleRequestStates,\n} from \"utils\";\nimport {\n generatePayload,\n updateSpeciesCache,\n} from \"./components/AnimalEntryDetails/utils\";\nimport Button from \"components/Button\";\n\nconst DataEntry = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { year, month, location, organizationId } = useParams();\n const queryClient = useQueryClient();\n const [animalSpecies, setAnimalSpecies] = useState([\"canine\", \"feline\"]);\n const [selectedSpecies, setSelectedSpecies] = useState(\"\");\n const [recalculate, setRecalculate] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n const [submittedAll, setSubmittedAll] = useState(false);\n const [speciesMonthEndingCount, setSpeciesMonthEndingCount] = useState({});\n const [newOrganization, setOrganization] = useState({});\n const [newlocation, setNewLocation] = useState({});\n\n const animalIntakeForm = useRef(null);\n const animalOutcomeForm = useRef([]);\n const animalCountForm = useRef(null);\n\n const { attributes, isAdmin, organization, isOrgAdmin } = useUserState();\n var locationId = attributes.locationId;\n if (isAdmin) locationId = location;\n\n const getOrg = async () => {\n if (organizationId) {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${organizationId}`,\n });\n setOrganization(response.data);\n }\n const response2 = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n });\n setNewLocation(response2.data);\n };\n\n useEffect(() => {\n getOrg();\n }, []);\n\n const { handleSuccess } = useHandleRequestStates();\n\n const generateDataEntries = ({\n locationId,\n year,\n month,\n token,\n dispatch,\n }) => {\n const dateFilters = `filter[year_of_record][eq]=${year}&filter[month_of_record][eq]=${month}`;\n const statusDateFilters = `filter[year][eq]=${year}&filter[month][eq]=${month}`;\n const locationFilter = `&filter[location_id][eq]=${locationId}`;\n\n return hash({\n status: apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/data_entry_status?${statusDateFilters}${locationFilter}`,\n }),\n counts: apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_counts?${dateFilters}${locationFilter}`,\n }),\n intakes: apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_intakes?${dateFilters}${locationFilter}`,\n }),\n outcomes: apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_outcomes?${dateFilters}${locationFilter}`,\n }),\n });\n };\n\n const {\n mutate: setMatrixSpecies,\n isLoading: isLoadingTables,\n error: isTableError,\n } = useMutation(\n () => {\n const payload = generatePayload({\n addedSpecies: animalSpecies,\n removedSpecies: [],\n locationId,\n year,\n month,\n });\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: locationId,\n type: \"locations\",\n attributes: {},\n relationships: payload.relationships,\n },\n included: payload.included,\n },\n });\n },\n {\n onSuccess: (response) => {\n return queryClient.setQueryData(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n (oldData) =>\n updateSpeciesCache({\n oldData,\n response,\n changedSpecies: { added: animalSpecies, removed: [] },\n })\n );\n },\n }\n );\n\n // Calculate number of species in care at the end of the month\n const calculateEndingCount = () => {\n const { data: intakes } = response.intakes;\n const { data: outcomes } = response.outcomes;\n const { data: counts } = response.counts;\n let intakeHash = {};\n let outcomeHash = {};\n intakes.forEach((intake) => {\n intakeHash[intake.attributes.species] =\n intake.attributes.totalLiveIntakeCount;\n });\n outcomes.forEach((outcome) => {\n outcomeHash[outcome.attributes.species] =\n outcome.attributes.totalOutcomesCount;\n });\n let countsHash = {};\n animalSpecies.forEach((species) => {\n counts.forEach((count) => {\n const endCount = count.attributes.endingAnimalCount;\n if (count.attributes.species === species) {\n const total =\n count.attributes.beginningAnimalCount +\n (intakeHash[species] - outcomeHash[species]);\n Object.assign(\n countsHash,\n endCount === 0 || !endCount\n ? {\n [species]: total < 0 ? 0 : total,\n }\n : {\n [species]: count.attributes.endingAnimalCount,\n }\n );\n }\n });\n });\n setSpeciesMonthEndingCount(countsHash);\n };\n // General Request\n const {\n isLoading,\n error,\n data: response,\n refetch,\n } = useQuery(\n [\"dataEntry\", `${locationId}_${month}/${year}`],\n () => generateDataEntries({ locationId, year, month, token, dispatch }),\n {\n onSuccess: (response) => {\n // IF Counts & Intakes & Outcomes have no data we need to set up our species\n if (\n !response.counts.data.length &&\n !response.intakes.data.length &&\n !response.outcomes.data.length\n ) {\n if (\n organizationId &&\n newOrganization &&\n newOrganization.attributes &&\n newOrganization.attributes.animalSpecies.length !== 0\n ) {\n setAnimalSpecies(newOrganization.attributes.animalSpecies);\n } else if (\n organization &&\n organization.attributes &&\n organization.attributes.animalSpecies.length !== 0\n ) {\n setAnimalSpecies(organization.attributes.animalSpecies);\n }\n } else {\n const dataToSpeciesArray = [\"counts\", \"intakes\", \"outcomes\"].reduce(\n (speciesArray, key) => {\n const subArray = response[key].data;\n\n subArray.forEach((d) => {\n const { attributes } = d;\n const { species } = attributes;\n\n if (speciesArray.indexOf(species) === -1) {\n speciesArray.push(species);\n }\n });\n\n return speciesArray;\n },\n []\n );\n\n setAnimalSpecies(dataToSpeciesArray);\n }\n },\n }\n );\n\n useEffect(() => {\n if (!response) {\n return;\n }\n\n if (\n !response.counts.data.length &&\n !response.intakes.data.length &&\n !response.outcomes.data.length &&\n isOrgAdmin\n ) {\n setMatrixSpecies();\n } else {\n calculateEndingCount();\n }\n }, [response, setMatrixSpecies]);\n\n useEffect(refetch, [locationId, submittedAll]);\n useEffect(() => {\n setTimeout(() => {\n refetch();\n }, 1000);\n }, [isEditing]);\n\n const handleSubmit = async () => {\n await animalIntakeForm.current?.handleSubmit();\n await animalOutcomeForm.current?.liveOutcome.handleSubmit();\n await animalOutcomeForm.current?.otherOutcome.handleSubmit();\n await animalCountForm.current?.handleSubmit();\n setIsEditing(false);\n };\n\n const setSpecies = (species) => {\n if (species === selectedSpecies) {\n setSelectedSpecies(\"\");\n } else {\n setSelectedSpecies(species);\n }\n };\n const autoRecalculate = (key, val) => {\n debugger;\n if (key == \"endingAnimalCount\") {\n const { values: intakes } = animalIntakeForm.current;\n var newIntakes = Object.keys(intakes)\n .filter(\n (a) =>\n ![\n \"locationId\",\n \"species\",\n \"monthOfRecord\",\n \"yearOfRecord\",\n ].includes(a)\n )\n .reduce((cur, key) => {\n return Object.assign(cur, { [key]: intakes[key] });\n }, {});\n var newIntakesSum = Object.values(newIntakes)\n .filter((a) => a >= 0)\n .reduce((a, b) => a + b, 0);\n\n const { values: liveOutcomes } = animalOutcomeForm.current.liveOutcome;\n const { values: otherOutcomes } = animalOutcomeForm.current.otherOutcome;\n\n var newLiveOutCome = Object.keys(liveOutcomes)\n .filter(\n (a) =>\n ![\n \"locationId\",\n \"species\",\n \"monthOfRecord\",\n \"yearOfRecord\",\n ].includes(a)\n )\n .reduce((cur, key) => {\n return Object.assign(cur, { [key]: liveOutcomes[key] });\n }, {});\n var newliveOutComeSum = Object.values(newLiveOutCome)\n .filter((a) => a >= 0)\n .reduce((a, b) => a + b, 0);\n\n var newotherOutcomes = Object.keys(otherOutcomes)\n .filter(\n (a) =>\n ![\n \"locationId\",\n \"species\",\n \"monthOfRecord\",\n \"yearOfRecord\",\n ].includes(a)\n )\n .reduce((cur, key) => {\n return Object.assign(cur, { [key]: otherOutcomes[key] });\n }, {});\n var newotherOutcomesSum = Object.values(newotherOutcomes)\n .filter((a) => a >= 0)\n .reduce((a, b) => a + b, 0);\n\n var total = newliveOutComeSum + newotherOutcomesSum;\n\n val =\n animalCountForm.current.values.beginningAnimalCount +\n newIntakesSum -\n total;\n }\n\n animalCountForm.current.setFieldValue(key, val || 0);\n };\n const handleSubmitAll = () => {\n setSubmittedAll(!submittedAll);\n handleSuccess({\n message: \"All data submitted.\",\n });\n };\n\n const Content = () => {\n if (isLoading || isLoadingTables)\n return (\n Loading data matrix…} />\n );\n\n if (error || isTableError)\n return {formatUiErrors(error || isTableError)};\n\n if (newlocation.attributes?.status == \"closed\") {\n return (\n
\n {newlocation.attributes?.name} - location is closed by system\n admin. If you want to enter data for this location please contact\n Shelter Animals Count helpdesk, info@shelteranimalscount.org\n
\n );\n }\n\n return (\n <>\n {/* Entry Status at this level will only ever return 1 item so we just grab the 0 index */}\n \n \n \n \n {selectedSpecies && (\n
\n setIsEditing(true)}\n >\n Edit\n \n \n
\n )}\n \n );\n };\n\n return (\n
\n

Enter Shelter Intake and Outcome Data

\n

\n Please keep in mind that all data fields must be filled in, even if the\n entry is “0.” Records will be considered incomplete until all fields are\n populated with numeric values.\n

\n\n \n
\n );\n};\n\nexport default DataEntry;\n","export default __webpack_public_path__ + \"static/media/Shelter-Animals-Count_Sample-Import.576f3f42.csv\";","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgCsvIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 25,\n height: 30,\n viewBox: \"0 0 25 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5359 0.265625V6.34928H24.7664L18.5359 0.265625Z\",\n fill: \"#2EB5BC\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 22.6616V8.78327H18.5358C17.1729 8.78327 16.0436 7.68061 16.0436 6.34981V0H0V22.6616H25ZM16.9393 12.1673C16.9393 12.1673 18.2632 16.1977 18.3411 16.5019C18.4579 16.1977 19.8598 12.1673 19.8598 12.1673H21.729L19.081 19.3916H17.5234L15.109 12.1673C15.0701 12.1673 16.9393 12.1673 16.9393 12.1673ZM12.0327 16.4639C11.5265 16.2738 10.0078 15.7795 10.0078 14.2586C10.0078 13.0038 11.0981 12.0913 12.5779 12.0913C13.2788 12.0913 13.9798 12.2433 14.5639 12.6236L14.0576 14.1445C13.6293 13.8403 13.0841 13.6502 12.5779 13.6502C11.9938 13.6502 11.7991 13.9164 11.7991 14.1445C11.7991 14.4106 11.8769 14.6008 12.8115 14.943C13.7072 15.2852 14.7586 15.8555 14.7586 17.2243C14.7586 18.365 13.9019 19.5057 12.0327 19.5057C11.2539 19.5057 10.4751 19.2776 9.85203 18.8593L10.3193 17.3004C10.8255 17.6426 11.4486 17.9468 12.0717 17.9468C12.3442 17.9468 12.9673 17.8707 12.9673 17.3004C12.9673 16.9962 12.8894 16.7681 12.0327 16.4639C11.5265 16.2738 12.8894 16.7681 12.0327 16.4639C11.5265 16.2738 12.8894 16.7681 12.0327 16.4639C11.5265 16.2738 12.8894 16.7681 12.0327 16.4639C11.5265 16.2738 12.8894 16.7681 12.0327 16.4639ZM7.16511 12.0913C7.90498 12.0913 8.60592 12.2053 9.22897 12.5856L8.76168 14.1065C8.25545 13.8403 7.74922 13.6502 7.16511 13.6502C5.84112 13.6502 5.10125 14.4487 5.10125 15.8175C5.10125 17.1483 5.84112 17.9087 7.12617 17.9087C7.71028 17.9087 8.29439 17.7186 8.80062 17.4525L9.19003 18.9734C8.4891 19.3536 7.71028 19.4677 6.93146 19.4677C4.71184 19.4677 3.27103 18.0228 3.27103 15.8175C3.30997 13.6122 4.8676 12.0913 7.16511 12.0913Z\",\n fill: \"#2EB5BC\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 25.1328V29.9997H25V25.1328H0Z\",\n fill: \"#2EB5BC\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCsvIcon);\nexport default __webpack_public_path__ + \"static/media/csv_icon.b2881b09.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgTrashIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 24,\n viewBox: \"0 0 20 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.6364 3.78111H18.1259H14.3497V0.726562H5.28671V3.78111H1.51049H0V5.30838H1.51049V23.6357H18.1259V5.30838H19.6364V3.78111ZM6.7972 2.25384H12.8392V3.78111H6.7972V2.25384ZM16.6154 22.1084H3.02098V5.30838H5.28671H14.3497H16.6154V22.1084Z\",\n fill: \"#F35471\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.79723 7.59766H5.28674V19.8158H6.79723V7.59766Z\",\n fill: \"#F35471\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5734 7.59766H9.06287V19.8158H10.5734V7.59766Z\",\n fill: \"#F35471\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.3496 7.59766H12.8391V19.8158H14.3496V7.59766Z\",\n fill: \"#F35471\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrashIcon);\nexport default __webpack_public_path__ + \"static/media/trash_icon.34cbbcb8.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useEffect, useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { useMutation } from \"react-query\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { ReactComponent as UploadIcon } from \"images/upload_icon.svg\";\nimport { ReactComponent as CsvIcon } from \"images/csv_icon.svg\";\nimport { ReactComponent as TrashIcon } from \"images/trash_icon.svg\";\nimport Error from \"components/Error\";\nimport Button from \"components/Button\";\nimport { apiFetch, formatCsvValidationErrors } from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport PropTypes from \"prop-types\";\n\nconst DataEntryUpload = ({ exampleCSV, action, title }) => {\n const { attributes, isAdmin } = useUserState();\n const { location, organizationId } = useParams();\n var locationId = attributes.location;\n if (isAdmin && location) locationId = location;\n\n if (!locationId) locationId = attributes.locationId;\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const [file, setFile] = useState(null);\n const [uiError, setUiError] = useState(null);\n\n const onDrop = useCallback((acceptedFiles) => {\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n reader.onabort = () => console.log(\"file reading was aborted\");\n reader.onerror = () => console.log(\"file reading has failed\");\n reader.onload = () => {\n const binaryStr = reader.result;\n setFile({\n name: file.name,\n binaryStr,\n });\n };\n reader.readAsDataURL(file);\n });\n }, []);\n\n const {\n mutate: handleSubmit,\n isLoading,\n error,\n isSuccess,\n } = useMutation(() =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/file_imports`,\n method: \"POST\",\n body: {\n data: {\n type: \"file_imports\",\n attributes: {\n locationId,\n file: file.binaryStr,\n file_type: action,\n },\n },\n },\n })\n );\n\n useEffect(() => {\n setUiError(error);\n }, [error]);\n\n const { getRootProps, getInputProps, isDragActive, fileRejections } =\n useDropzone({\n onDrop,\n maxFiles: 1,\n accept: \".csv\",\n disabled: isLoading,\n });\n\n const fileRejectionItems = fileRejections.map(({ errors }) => (\n <>{errors.map((e) => e.message)}\n ));\n\n if (isSuccess) return ;\n\n return (\n
\n
\n

{title}

\n

\n All fields in the data file must contain values. Data upload will\n overwrite data previously entered for same month and year.{\" \"}\n \n View detailed instructions.\n \n

\n
\n\n
\n

Upload formatted CSV

\n {file ? (\n
\n
\n \n {file.name}\n
\n {\n setFile(null);\n setUiError(null);\n }}\n className=\"p-2 border rounded\"\n type=\"button\"\n disabled={isLoading}\n >\n \n Remove file\n \n
\n ) : (\n
\n \n {isDragActive ? (\n
\n \n

Drop File

\n
\n ) : (\n
\n \n

\n \n Choose a file\n {\" \"}\n or drag it here.\n

\n

{fileRejectionItems}

\n
\n )}\n
\n )}\n
\n
\n

\n If you would prefer to format the data yourself, please download the\n CSV template.\n

\n \n Download Example CSV\n \n
\n\n {uiError && (\n {formatCsvValidationErrors(uiError, exampleCSV)}\n )}\n
\n\n
\n Enter data a different way\n\n Loading…}\n onClick={handleSubmit}\n type=\"button\"\n >\n Submit\n \n
\n
\n );\n};\n\nDataEntryUpload.propTypes = {\n exampleCSV: PropTypes.instanceOf(File).isRequired,\n action: PropTypes.string.isRequired,\n title: PropTypes.string,\n};\n\nDataEntryUpload.defaultProps = {\n title: \"Upload Your CSV\",\n};\nexport default DataEntryUpload;\n\nconst Success = () => {\n return (\n
\n
\n \n

\n Thanks! Your entry is complete.\n

\n

No further action is required.

\n
\n\n \n
\n );\n};\n","import React from \"react\";\nimport exampleCSV from \"files/Shelter-Animals-Count_Sample-Import.csv\";\nimport Upload from \"../../components/DataEntryUpload\";\n\nconst DataEntryUpload = () => (\n \n);\n\nexport default DataEntryUpload;\n","import { apiFetch, EXPORT_DATE_FORMATS } from \"utils\";\nimport moment from \"moment\";\n\nexport const dataEntryHeaders = [\n { label: \"Location ID\", key: \"locationId\" },\n { label: \"Record Year\", key: \"yearOfRecord\" },\n { label: \"Record Month\", key: \"monthOfRecord\" },\n { label: \"Species\", key: \"species\" },\n { label: \"Stray At Large Adult\", key: \"adultStrayAtLargeCount\" },\n { label: \"Stray At Large Up To 5 Months\", key: \"youthStrayAtLargeCount\" },\n {\n label: \"Stray At Large Age Unknown\",\n key: \"ageUnknownStrayAtLargeCount\",\n },\n {\n label: \"Relinquished By Owner Adult\",\n key: \"adultRelinquishedByOwnerCount\",\n },\n {\n label: \"Relinquished By Owner Up To 5 Months\",\n key: \"youthRelinquishedByOwnerCount\",\n },\n {\n label: \"Relinquished By Owner Age Unknown\",\n key: \"ageUnknownRelinquishedByOwnerCount\",\n },\n {\n label: \"Intake Owner-Intended Euthanasia Adult\",\n key: \"adultOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Intake Owner-Intended Euthanasia Up To 5 Months\",\n key: \"youthOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Intake Owner-Intended Euthanasia Age Unknown\",\n key: \"ageUnknownOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Legacy Transferred In From Agency Adult\",\n key: \"adultLegacyTransferredInFromAgencyCount\",\n },\n {\n label: \"Legacy Transferred In From Agency Youth\",\n key: \"youthLegacyTransferredInFromAgencyCount\",\n },\n {\n label: \"Legacy Transferred In From Agency Age Unknown\",\n key: \"ageUnknownLegacyTransferredInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Instate Agency Adult\",\n key: \"adultTransferredInstateInFromAgencyCount\",\n },\n {\n label: \"Transferred In From International Agency Adult\",\n key: \"adultTransferredInternationallyInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Out of State Agency Adult\",\n key: \"adultTransferredOutOfStateInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Instate Agency Up To 5 Months\",\n key: \"youthTransferredInstateInFromAgencyCount\",\n },\n {\n label: \"Transferred In From International Agency Up To 5 Months\",\n key: \"youthTransferredInternationallyInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Out of State Agency Up To 5 Months\",\n key: \"youthTransferredOutOfStateInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Instate Agency Age Unknown\",\n key: \"ageUnknownTransferredInstateInFromAgencyCount\",\n },\n {\n label: \"Transferred In From International Agency Age Unknown\",\n key: \"ageUnknownTransferredInternationallyInFromAgencyCount\",\n },\n {\n label: \"Transferred In From Out of State Agency Age Unknown\",\n key: \"ageUnknownTransferredOutOfStateInFromAgencyCount\",\n },\n {\n label: \"Seized Or Impounded Adult\",\n key: \"adultSeizedOrImpoundedCount\",\n },\n {\n label: \"Seized Or Impounded Up To 5 Months\",\n key: \"youthSeizedOrImpoundedCount\",\n },\n {\n label: \"Seized Or Impounded Age Unknown\",\n key: \"ageUnknownSeizedOrImpoundedCount\",\n },\n { label: \"Other Intakes Adult\", key: \"adultOtherIntakesCount\" },\n { label: \"Other Intakes Up To 5 Months\", key: \"youthOtherIntakesCount\" },\n {\n label: \"Other Intakes Age Unknown\",\n key: \"ageUnknownOtherIntakesCount\",\n },\n { label: \"Adoption Adult\", key: \"adultAdoptionCount\" },\n { label: \"Adoption Up To 5 Months\", key: \"youthAdoptionCount\" },\n { label: \"Adoption Age Unknown\", key: \"ageUnknownAdoptionCount\" },\n { label: \"Returned To Owner Adult\", key: \"adultReturnedToOwnerCount\" },\n {\n label: \"Returned To Owner Up To 5 Months\",\n key: \"youthReturnedToOwnerCount\",\n },\n {\n label: \"Returned To Owner Age Unknown\",\n key: \"ageUnknownReturnedToOwnerCount\",\n },\n {\n label: \"Legacy Transferred Out To Agency Adult\",\n key: \"adultLegacyTransferredToAnotherAgencyCount\",\n },\n {\n label: \"Legacy Transferred Out To Agency Youth\",\n key: \"youthLegacyTransferredToAnotherAgencyCount\",\n },\n {\n label: \"Legacy Transferred Out To Agency Age Unknown\",\n key: \"ageUnknownLegacyTransferredToAnotherAgencyCount\",\n },\n\n {\n label: \"Transferred Out To Instate Agency Adult\",\n key: \"adultTransferredInstateToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To International Agency Adult\",\n key: \"adultTransferredInternationallyToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To Out of State Agency Adult\",\n key: \"adultTransferredOutOfStateToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To Instate Agency Up To 5 Months\",\n key: \"youthTransferredInstateToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To International Agency Up To 5 Months\",\n key: \"youthTransferredInternationallyToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To Out of State Agency Up To 5 Months\",\n key: \"youthTransferredOutOfStateToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To Instate Agency Age Unknown\",\n key: \"ageUnknownTransferredInstateToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To International Agency Age Unknown\",\n key: \"ageUnknownTransferredInternationallyToAnotherAgencyCount\",\n },\n {\n label: \"Transferred Out To Out of State Agency Age Unknown\",\n key: \"ageUnknownTransferredOutOfStateToAnotherAgencyCount\",\n },\n { label: \"Returned To Field Adult\", key: \"adultReturnedToFieldCount\" },\n {\n label: \"Returned To Field Up To 5 Months\",\n key: \"youthReturnedToFieldCount\",\n },\n {\n label: \"Returned To Field Age Unknown\",\n key: \"ageUnknownReturnedToFieldCount\",\n },\n { label: \"Other Live Outcome Adult\", key: \"adultOtherLiveOutcomeCount\" },\n {\n label: \"Other Live Outcome Up To 5 Months\",\n key: \"youthOtherLiveOutcomeCount\",\n },\n {\n label: \"Other Live Outcome Age Unknown\",\n key: \"ageUnknownOtherLiveOutcomeCount\",\n },\n { label: \"Died In Care Adult\", key: \"adultDiedInCareCount\" },\n { label: \"Died In Care Up To 5 Months\", key: \"youthDiedInCareCount\" },\n { label: \"Died In Care Age Unknown\", key: \"ageUnknownDiedInCareCount\" },\n { label: \"Lost In Care Adult\", key: \"adultLostInCareCount\" },\n { label: \"Lost In Care Up To 5 Months\", key: \"youthLostInCareCount\" },\n { label: \"Lost In Care Age Unknown\", key: \"ageUnknownLostInCareCount\" },\n { label: \"Shelter Euthanasia Adult\", key: \"adultShelterEuthanasiaCount\" },\n {\n label: \"Shelter Euthanasia Up To 5 Months\",\n key: \"youthShelterEuthanasiaCount\",\n },\n {\n label: \"Shelter Euthanasia Age Unknown\",\n key: \"ageUnknownShelterEuthanasiaCount\",\n },\n {\n label: \"Outcome Owner-Intended Euthanasia Adult\",\n key: \"adultOwnerIntendedEuthanasiaCountOutcome\",\n },\n {\n label: \"Outcome Owner-Intended Euthanasia Up To 5 Months\",\n key: \"youthOwnerIntendedEuthanasiaCountOutcome\",\n },\n {\n label: \"Outcome Owner-Intended Euthanasia Age Unknown\",\n key: \"ageUnknownOwnerIntendedEuthanasiaCountOutcome\",\n },\n { label: \"Beginning Count\", key: \"beginningAnimalCount\" },\n { label: \"Beginning Foster Animal Count\", key: \"beginningFosterAnimalCount\" },\n { label: \"Beginning Count Date\", key: \"beginningAnimalCountDate\" },\n { label: \"Ending Count\", key: \"endingAnimalCount\" },\n { label: \"Ending Foster Animal Count\", key: \"endingFosterAnimalCount\" },\n { label: \"Ending Count Date\", key: \"endingAnimalCountDate\" },\n];\n\nconst animalCountKeys = [\n \"beginningAnimalCount\",\n \"beginningFosterAnimalCount\",\n \"beginningAnimalCountDate\",\n \"endingAnimalCount\",\n \"endingFosterAnimalCount\",\n \"endingAnimalCountDate\",\n \"locationId\",\n \"yearOfRecord\",\n \"monthOfRecord\",\n \"species\",\n];\n\nexport const serviceHeaders = [\n { label: \"Location ID\", key: \"locationId\" },\n { label: \"Record Year\", key: \"yearOfRecord\" },\n { label: \"Record Month\", key: \"monthOfRecord\" },\n { label: \"Species\", key: \"species\" },\n { label: \"Adult Trap Neuter Return\", key: \"adultTrapNeuterReturnCount\" },\n { label: \"Youth Trap Neuter Return\", key: \"youthTrapNeuterReturnCount\" },\n {\n label: \"Age Unknown Trap Neuter Return\",\n key: \"ageUnknownTrapNeuterReturnCount\",\n },\n { label: \"Adult Return To Owner\", key: \"adultReturnToOwnerCount\" },\n { label: \"Youth Return To Owner\", key: \"youthReturnToOwnerCount\" },\n {\n label: \"Age Unknown Return To Owner\",\n key: \"ageUnknownReturnToOwnerCount\",\n },\n {\n label: \"Adult Microchipping Collar Id Tags\",\n key: \"adultMicrochippingCollarIdTagsCount\",\n },\n {\n label: \"Youth Microchipping Collar Id Tags\",\n key: \"youthMicrochippingCollarIdTagsCount\",\n },\n {\n label: \"Age Unknown Microchipping Collar Id Tags\",\n key: \"ageUnknownMicrochippingCollarIdTagsCount\",\n },\n {\n label: \"Adult Spay Neuter Owned Animal\",\n key: \"adultSpayNeuterOwnedAnimalCount\",\n },\n {\n label: \"Youth Spay Neuter Owned Animal\",\n key: \"youthSpayNeuterOwnedAnimalCount\",\n },\n {\n label: \"Age Unknown Spay Neuter Owned Animal\",\n key: \"ageUnknownSpayNeuterOwnedAnimalCount\",\n },\n {\n label: \"Adult Wellness Preventive Medical Care\",\n key: \"adultWellnessPreventiveMedicalCareCount\",\n },\n {\n label: \"Youth Wellness Preventive Medical Care\",\n key: \"youthWellnessPreventiveMedicalCareCount\",\n },\n {\n label: \"Age Unknown Wellness Preventive Medical Care\",\n key: \"ageUnknownWellnessPreventiveMedicalCareCount\",\n },\n { label: \"Adult Basic Animal Care\", key: \"adultBasicAnimalCareCount\" },\n { label: \"Youth Basic Animal Care\", key: \"youthBasicAnimalCareCount\" },\n {\n label: \"Age Unknown Basic Animal Care\",\n key: \"ageUnknownBasicAnimalCareCount\",\n },\n {\n label: \"Adult Advanced Animal Care\",\n key: \"adultAdvancedAnimalCareCount\",\n },\n {\n label: \"Youth Advanced Animal Care\",\n key: \"youthAdvancedAnimalCareCount\",\n },\n {\n label: \"Age Unknown Advanced Animal Care\",\n key: \"ageUnknownAdvancedAnimalCareCount\",\n },\n {\n label: \"Adult Owner Intended Euthanasia\",\n key: \"adultOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Youth Owner Intended Euthanasia\",\n key: \"youthOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Age Unknown Owner Intended Euthanasia\",\n key: \"ageUnknownOwnerIntendedEuthanasiaCount\",\n },\n {\n label: \"Adult Behavior Consultation\",\n key: \"adultBehaviorConsultationCount\",\n },\n {\n label: \"Youth Behavior Consultation\",\n key: \"youthBehaviorConsultationCount\",\n },\n {\n label: \"Age Unknown Behavior Consultation\",\n key: \"ageUnknownBehaviorConsultationCount\",\n },\n { label: \"Adult Group Training\", key: \"adultGroupTrainingCount\" },\n { label: \"Youth Group Training\", key: \"youthGroupTrainingCount\" },\n {\n label: \"Age Unknown Group Training\",\n key: \"ageUnknownGroupTrainingCount\",\n },\n { label: \"Adult Private Training\", key: \"adultPrivateTrainingCount\" },\n { label: \"Youth Private Training\", key: \"youthPrivateTrainingCount\" },\n {\n label: \"Age Unknown Private Training\",\n key: \"ageUnknownPrivateTrainingCount\",\n },\n {\n label: \"Adult Behavior Modification Program\",\n key: \"adultBehaviorModificationProgramCount\",\n },\n {\n label: \"Youth Behavior Modification Program\",\n key: \"youthBehaviorModificationProgramCount\",\n },\n {\n label: \"Age Unknown Behavior Modification Program\",\n key: \"ageUnknownBehaviorModificationProgramCount\",\n },\n { label: \"Adult Pet Food\", key: \"adultPetFoodCount\" },\n { label: \"Youth Pet Food\", key: \"youthPetFoodCount\" },\n { label: \"Age Unknown Pet Food\", key: \"ageUnknownPetFoodCount\" },\n { label: \"Adult Pet Supplies\", key: \"adultPetSuppliesCount\" },\n { label: \"Youth Pet Supplies\", key: \"youthPetSuppliesCount\" },\n { label: \"Age Unknown Pet Supplies\", key: \"ageUnknownPetSuppliesCount\" },\n { label: \"Adult Grooming\", key: \"adultGroomingCount\" },\n { label: \"Youth Grooming\", key: \"youthGroomingCount\" },\n { label: \"Age Unknown Grooming\", key: \"ageUnknownGroomingCount\" },\n {\n label: \"Adult Temporary Housing Owned Animals\",\n key: \"adultTemporaryHousingOwnedAnimalsCount\",\n },\n {\n label: \"Youth Temporary Housing Owned Animals\",\n key: \"youthTemporaryHousingOwnedAnimalsCount\",\n },\n {\n label: \"Age Unknown Temporary Housing Owned Animals\",\n key: \"ageUnknownTemporaryHousingOwnedAnimalsCount\",\n },\n {\n label: \"Adult Temporary Housing People And Animals\",\n key: \"adultTemporaryHousingPeopleAndAnimalsCount\",\n },\n {\n label: \"Youth Temporary Housing People And Animals\",\n key: \"youthTemporaryHousingPeopleAndAnimalsCount\",\n },\n {\n label: \"Age Unknown Temporary Housing People And Animals\",\n key: \"ageUnknownTemporaryHousingPeopleAndAnimalsCount\",\n },\n {\n label: \"Adult Other Pet Retention Services\",\n key: \"adultOtherPetRetentionServicesCount\",\n },\n {\n label: \"Youth Other Pet Retention Services\",\n key: \"youthOtherPetRetentionServicesCount\",\n },\n {\n label: \"Age Unknown Other Pet Retention Services\",\n key: \"ageUnknownOtherPetRetentionServicesCount\",\n },\n { label: \"Adult Rehoming Support\", key: \"adultRehomingSupportCount\" },\n { label: \"Youth Rehoming Support\", key: \"youthRehomingSupportCount\" },\n {\n label: \"Age Unknown Rehoming Support\",\n key: \"ageUnknownRehomingSupportCount\",\n },\n];\n\nexport const generateExport = async ({\n formValues: { location, dateFormat, date },\n organizationId,\n token,\n dispatch,\n action,\n}) => {\n var dates = date;\n var newResponse = {};\n if (action === \"data-entry\") {\n newResponse = {\n counts: { data: [] },\n intakes: { data: [] },\n outcomes: { data: [] },\n };\n } else {\n newResponse = {\n services: { data: [] },\n };\n }\n\n for (let index = 0; index < dates.length; index++) {\n date = dates[index];\n const year = new Date(date).getFullYear();\n const month =\n dateFormat === EXPORT_DATE_FORMATS.MONTH\n ? new Date(date).getMonth() + 1\n : \"\";\n const dateFilters = `filter[year_of_record][eq]=${year}${\n dateFormat === EXPORT_DATE_FORMATS.MONTH\n ? `&filter[month_of_record][eq]=${month}`\n : \"\"\n }`;\n const locationFilter = !!location.trim()\n ? `&filter[location_id][eq]=${location}`\n : `&filter[organization_id][eq]=${organizationId}`;\n if (action === \"data-entry\") {\n var counts = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_counts?${dateFilters}${locationFilter}&page[size]=1000`,\n });\n var intakes = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_intakes?${dateFilters}${locationFilter}&page[size]=1000`,\n });\n var outcomes = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_outcomes?${dateFilters}${locationFilter}&page[size]=1000`,\n });\n newResponse.counts.data = newResponse.counts.data.concat(counts.data);\n newResponse.intakes.data = newResponse.intakes.data.concat(intakes.data);\n newResponse.outcomes.data = newResponse.outcomes.data.concat(\n outcomes.data\n );\n } else {\n let services = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_services?${dateFilters}${locationFilter}&page[size]=1000`,\n });\n newResponse.services.data = newResponse.services.data.concat(\n services.data\n );\n }\n }\n\n const fYear = new Date(dates[0]).getFullYear();\n const lYear = new Date(dates[dates.length - 1]).getFullYear();\n\n const fMonth = new Date(dates[0]).getFullYear();\n return { ...newResponse, year: fYear + \" - \" + lYear, month: fMonth };\n};\n\nexport const transformCsvData = (response) => {\n if (!response) return [];\n\n const allItems = Object.entries(response)\n .filter(([key]) => key !== \"month\" && key !== \"year\")\n .map((key) => {\n if (key[0] === \"outcomes\") {\n key[1].data.forEach((data) =>\n renameOutcomeEuthanasiaAttributes(data.attributes)\n );\n }\n return key;\n })\n .map((key) => key[1].data)\n .flat();\n\n const dataAtrributes = allItems\n .map((data) => data.attributes)\n .map((obj) => {\n const newObj = {};\n if (isSumGreaterThanZero(obj)) {\n for (const key in obj) {\n let value = 0;\n if (key.includes(\"legacy\")) {\n value = 0;\n } else if (animalCountKeys.includes(key)) {\n value = obj[key];\n } else {\n value = obj[key] || 0;\n }\n\n newObj[key] = value;\n }\n } else {\n for (const key in obj) {\n let value = 0;\n if (animalCountKeys.includes(key)) {\n value = obj[key];\n } else {\n value = obj[key] || 0;\n }\n\n newObj[key] = value;\n }\n }\n return newObj;\n });\n\n const commonKeys = [\"locationId\", \"yearOfRecord\", \"monthOfRecord\", \"species\"];\n\n // Use reduce to group the objects based on the common keys\n const groupedData = dataAtrributes.reduce((acc, obj) => {\n // Generate a key based on the common keys\n const key = commonKeys.map((k) => obj[k]).join(\"-\");\n\n // Create a new object for this group if it doesn't exist\n if (!acc[key]) {\n acc[key] = {};\n commonKeys.forEach((k) => {\n acc[key][k] = obj[k];\n });\n }\n\n // Merge the values of the current object into the group object\n Object.keys(obj).forEach((k) => {\n if (!commonKeys.includes(k)) {\n acc[key][k] = obj[k];\n }\n });\n\n return acc;\n }, {});\n\n // Convert the grouped data back into an array\n const mergedData = Object.values(groupedData);\n return mergedData;\n};\n\n// There are attributes in the intake daata with the same name as the outcome data\n// This function renames the outcome attributes to avoid grouping both intake and outcome data together\nconst renameOutcomeEuthanasiaAttributes = (attributes) => {\n attributes[\"adultOwnerIntendedEuthanasiaCountOutcome\"] =\n attributes[\"adultOwnerIntendedEuthanasiaCount\"];\n attributes[\"ageUnknownOwnerIntendedEuthanasiaCountOutcome\"] =\n attributes[\"ageUnknownOwnerIntendedEuthanasiaCount\"];\n attributes[\"youthOwnerIntendedEuthanasiaCountOutcome\"] =\n attributes[\"youthOwnerIntendedEuthanasiaCount\"];\n\n delete attributes[\"adultOwnerIntendedEuthanasiaCount\"];\n delete attributes[\"ageUnknownOwnerIntendedEuthanasiaCount\"];\n delete attributes[\"youthOwnerIntendedEuthanasiaCount\"];\n\n return attributes;\n};\n\nconst isSumGreaterThanZero = (obj) => {\n const keys = [\n \"adultTransferredInstateInFromAgencyCount\",\n \"youthTransferredInstateInFromAgencyCount\",\n \"ageUnknownTransferredInstateInFromAgencyCount\",\n \"adultTransferredOutOfStateInFromAgencyCount\",\n \"youthTransferredOutOfStateInFromAgencyCount\",\n \"ageUnknownTransferredOutOfStateInFromAgencyCount\",\n \"adultTransferredInternationallyInFromAgencyCount\",\n \"youthTransferredInternationallyInFromAgencyCount\",\n \"ageUnknownTransferredInternationallyInFromAgencyCount\",\n\n \"adultTransferredInstateToAnotherAgencyCount\",\n \"youthTransferredInstateToAnotherAgencyCount\",\n \"ageUnknownTransferredInstateToAnotherAgencyCount\",\n \"adultTransferredOutOfStateToAnotherAgencyCount\",\n \"youthTransferredOutOfStateToAnotherAgencyCount\",\n \"ageUnknownTransferredOutOfStateToAnotherAgencyCount\",\n \"adultTransferredInternationallyToAnotherAgencyCount\",\n \"youthTransferredInternationallyToAnotherAgencyCount\",\n \"ageUnknownTransferredInternationallyToAnotherAgencyCount\",\n ];\n const sum = keys.reduce((total, key) => total + (obj[key] || 0), 0);\n\n const year = obj.yearOfRecord;\n const month = obj.monthOfRecord;\n\n const priorDate = new Date(2021, 2);\n const currentDate = new Date(year, month - 1);\n\n const isPriorDate = currentDate < priorDate;\n return sum > 0 && isPriorDate;\n};\n\nexport const transformExportDates = (dates) => {\n if (dates.length < 1) return \"\";\n\n if (dates.length === 1) {\n const date = dates[0];\n if (date.length === 4) {\n return `Jan ${date} - Dec ${date}`;\n }\n const monthYearString = moment(date).format(\"MMM YYYY\");\n return monthYearString;\n }\n\n const firstDate = dates[0];\n const lastDate = dates[dates.length - 1];\n if (firstDate.length === 4) {\n return `Jan ${firstDate} - Dec ${lastDate}`;\n }\n\n const firstMonthYearString = moment(firstDate).format(\"MMM YYYY\");\n const lastMonthYearString = moment(lastDate).format(\"MMM YYYY\");\n return `${firstMonthYearString} - ${lastMonthYearString}`;\n};\n","export default __webpack_public_path__ + \"static/media/Cera-Pro-Bold.2c3b37d3.woff\";","import { View, StyleSheet, Image } from \"@react-pdf/renderer\";\n// Create styles\nconst styles = StyleSheet.create({\n logo: {\n width: 250,\n marginLeft: 10,\n height: 150,\n },\n});\n\nfunction PDFLogo() {\n return (\n \n \n \n );\n}\nexport default PDFLogo;\n","import React from \"react\";\nimport { Text, StyleSheet } from \"@react-pdf/renderer\";\nimport { format } from \"date-fns\";\n\nconst styles = StyleSheet.create({\n mainHeading: {\n color: \"#0F6165\",\n fontSize: \"24px\",\n fontFamily: \"Cera Pro Bold\",\n fontWeight: 900,\n },\n subHeading: {\n color: \"#0F6165\",\n fontFamily: \"Cera Pro Bold\",\n fontSize: \"22px\",\n fontWeight: 900,\n },\n orgName: {\n fontFamily: \"Cera Pro Bold\",\n fontSize: \"15px\",\n fontWeight: 900,\n },\n});\n\nconst TopHeader = ({ orgName, headerName, timeframe, action }) => (\n \n {headerName}\n {\"\\n\"}\n \n {action === \"services\"\n ? \"COMMUNITY SERVICES DATABASE\"\n : \"INTAKE & OUTCOME DATABASE\"}\n \n {\"\\n\"}\n \n {orgName}\n {\"\\n\"}\n {timeframe}\n {\"\\n\"}\n REPORT GENERATED: {format(new Date(), \"MM/dd/yyyy\")}\n {\"\\n\"}\n \n \n);\nexport default TopHeader;\n","import React from \"react\";\nimport { Text, View, StyleSheet, Font } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst backColor = \"#e6e7e8\";\nconst styles = StyleSheet.create({\n live_intake_n: {\n width: \"45%\",\n height: 30,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: borderColor,\n borderWidth: 1,\n color: \"white\",\n },\n canine: {\n width: \"11%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"11%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n subtotal: {\n width: \"11%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n other: {\n width: \"11%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n total: {\n width: \"11%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst TableHeader = (props) => (\n \n {props.name}\n CANINE\n FELINE\n SUB TOTAL\n OTHER*\n TOTAL\n \n);\n\nexport default TableHeader;\n","import React, { Fragment } from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst styles = StyleSheet.create({\n row: {\n flexDirection: \"row\",\n borderBottomColor: borderColor,\n borderBottomWidth: 1,\n alignItems: \"center\",\n fontStyle: \"bold\",\n },\n description: {\n width: \"45%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n paddingLeft: 8,\n borderColor: borderColor,\n borderWidth: 1,\n },\n canine: {\n width: \"11%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"11%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n subtotal: {\n width: \"11%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n other: {\n width: \"11%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n total: {\n width: \"11%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst TableRow = ({ items }) => {\n const rows = items.map((item, i) => {\n return i + 1 === items.length ? (\n \n \n {item.name}\n \n \n {item.canine}\n \n \n {item.feline}\n \n \n {item.feline + item.canine}\n \n \n {item.other}\n \n \n {item.feline + item.canine + item.other}\n \n \n ) : (\n \n {item.name}\n {item.canine}\n {item.feline}\n {item.feline + item.canine}\n {item.other}\n \n {item.feline + item.canine + item.other}\n \n \n );\n });\n return {rows};\n};\n\nexport default TableRow;\n","import { View } from \"@react-pdf/renderer\";\nimport TotalTableHeader from \"./TotalTable/TotalTableHeader\";\nimport TotalTableRow from \"./TotalTable/TotalTableRow\";\n\nconst MainTable = (props) => {\n return (\n \n \n \n \n );\n};\nexport default MainTable;\n","import React from \"react\";\nimport { Text, View, StyleSheet, Font } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst backColor = \"#e6e7e8\";\n\nconst styles = StyleSheet.create({\n live_intake: {\n width: \"22%\",\n height: 30,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: \"#1f6165\",\n borderWidth: 1,\n color: \"white\",\n },\n live_intake1: {\n width: \"22%\",\n height: 30,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: \"#1f6165\",\n borderWidth: 1,\n color: \"white\",\n },\n canine: {\n width: \"26%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"26%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n other: {\n width: \"26%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n care_foster: {\n width: \"13%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst TableHeader = (props) => (\n \n \n ANIMAL\n CANINE\n FELINE\n OTHER*\n \n \n COUNTS\n TOTAL IN CARE\n TOTAL IN FOSTER\n TOTAL IN CARE\n TOTAL IN FOSTER\n TOTAL IN CARE\n TOTAL IN FOSTER\n \n \n);\n\nexport default TableHeader;\n","import React, { Fragment } from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst styles = StyleSheet.create({\n row: {\n flexDirection: \"row\",\n borderBottomColor: borderColor,\n borderBottomWidth: 1,\n alignItems: \"center\",\n fontStyle: \"bold\",\n },\n description: {\n width: \"22%\",\n height: 30,\n paddingTop: 10,\n fontSize: 10,\n paddingLeft: 10,\n borderColor: borderColor,\n borderWidth: 1,\n },\n rowWidth: {\n width: \"13%\",\n height: 30,\n paddingTop: 10,\n fontSize: 10,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst CountsTableRow = ({ items }) => {\n const rows = items.map((item, i) => {\n return (\n \n {item.name}\n {item.canine_c}\n {item.canine_f}\n {item.feleine_c}\n {item.feleine_f}\n {item.other_c}\n {item.other_f}\n \n );\n });\n return {rows};\n};\n\nexport default CountsTableRow;\n","import { View } from \"@react-pdf/renderer\";\nimport CountsTableHeader from \"./TotalTable/CountsTableHeader\";\nimport CountsTableRow from \"./TotalTable/CountsTableRow\";\n\nconst CountsTable = (props) => {\n return (\n \n \n \n \n );\n};\nexport default CountsTable;\n","import { View, Text } from \"@react-pdf/renderer\";\n\nconst SideText = (props) => {\n return (\n \n \n This report is a snapshot of {\"\\n\"} data for all species recorded {\"\\n\"}{\" \"}\n by your organization, within {\"\\n\"}the timeframe selected for\n {\"\\n\"}the report. See additional {\"\\n\"}pages for age breakouts for{\" \"}\n {\"\\n\"}each species.{\"\\n\"}\n {\"\\n\"}\n \n \n For full definitions, visit {\"\\n\"}ShelterAnimalscount.org/IOD{\"\\n\"}\n {\"\\n\"}\n \n LIVE INTAKES:{\"\\n\"}\n \n 1) \"Transfer in to agency {\"\\n\"}(undesignated)\" represents Transfer{\" \"}\n {\"\\n\"}In data prior to when agency location {\"\\n\"}break outs (in state,\n out of state,\n {\"\\n\"}international) were added to the {\"\\n\"}database.{\"\\n\"}\n {\"\\n\"}\n \n LIVE OUTCOMES:{\"\\n\"}\n \n 2) \"Transfer out to agency {\"\\n\"}(undesignated)\" represents Transfer{\" \"}\n {\"\\n\"}Out data prior to when agency\n {\"\\n\"}location break outs (in state, out of {\"\\n\"}state, international)\n were added to the {\"\\n\"}database. {\"\\n\"}\n {\"\\n\"}\n \n *Others:{\"\\n\"}\n \n Rabbits, equines, small\n {\"\\n\"}mammals, farm animals, birds,{\"\\n\"}\n and reptiles & amphibians. {\"\\n\"}\n {\"\\n\"}\n \n \n );\n};\nexport default SideText;\n","import React from \"react\";\nimport { Text, View, StyleSheet, Font } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst backColor = \"#e6e7e8\";\nconst styles = StyleSheet.create({\n live_intake_n: {\n width: \"44%\",\n height: 30,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: borderColor,\n borderWidth: 1,\n color: \"white\",\n },\n canine: {\n width: \"10%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n subtotal: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n total: {\n width: \"10%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieTableHeader = (props) => (\n \n {props.name}\n ADULTS\n UP TO 5 MONTHS\n AGE UNKNOWN\n TOTAL\n \n);\n\nexport default SpecieTableHeader;\n","import React, { Fragment } from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst styles = StyleSheet.create({\n row: {\n flexDirection: \"row\",\n borderBottomColor: borderColor,\n borderBottomWidth: 1,\n alignItems: \"center\",\n fontStyle: \"bold\",\n },\n description: {\n width: \"44%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n paddingLeft: 10,\n borderColor: borderColor,\n borderWidth: 1,\n },\n rowWidth: {\n width: \"18%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n rowWidth2: {\n width: \"10%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieTableRow = ({ items }) => {\n const rows = items.map((item, i) => {\n return i + 1 === items.length ? (\n \n \n {item.name}\n \n \n {item.key1}\n \n \n {item.key2}\n \n \n {item.key3}\n \n \n {item.key1 + item.key2 + item.key3}\n \n \n ) : (\n \n {item.name}\n {item.key1}\n {item.key2}\n {item.key3}\n \n {item.key1 + item.key2 + item.key3}\n \n \n );\n });\n return {rows};\n};\n\nexport default SpecieTableRow;\n","import { View } from \"@react-pdf/renderer\";\nimport SpecieTableHeader from \"../TotalTable/SpecieTableHeader\";\nimport SpecieTableRow from \"../TotalTable/SpecieTableRow\";\n\nconst SpecieTable = (props) => {\n return (\n \n {props.data.length > 0 && (\n \n \n \n \n )}\n \n );\n};\nexport default SpecieTable;\n","import React from \"react\";\nimport { Text, View, StyleSheet, Font } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst backColor = \"#e6e7e8\";\nconst styles = StyleSheet.create({\n live_intake_n: {\n width: \"20%\",\n height: 50,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: borderColor,\n borderWidth: 1,\n color: \"white\",\n },\n canine: {\n width: \"40%\",\n height: 50,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"40%\",\n height: 50,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieCountTableHeader = (props) => (\n \n ANIMAL{\"\\n\"}COUNT\n TOTAL{\"\\n\"}IN CARE\n TOTAL{\"\\n\"}IN FOSTER\n \n);\n\nexport default SpecieCountTableHeader;\n","import React, { Fragment } from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst styles = StyleSheet.create({\n row: {\n flexDirection: \"row\",\n borderBottomColor: borderColor,\n borderBottomWidth: 1,\n alignItems: \"center\",\n fontStyle: \"bold\",\n },\n description: {\n width: \"20%\",\n height: 30,\n paddingTop: 10,\n fontSize: 10,\n paddingLeft: 10,\n borderColor: borderColor,\n borderWidth: 1,\n },\n rowWidth: {\n width: \"40%\",\n height: 30,\n paddingTop: 10,\n fontSize: 10,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieCountTableRow = ({ items }) => {\n const rows = items.map((item, i) => {\n return (\n \n {item.name}\n {item.total_incare}\n {item.total_in_foster}\n \n );\n });\n return {rows};\n};\n\nexport default SpecieCountTableRow;\n","import { View } from \"@react-pdf/renderer\";\nimport SpecieCountTableHeader from \"../TotalTable/SpecieCountTableHeader\";\nimport SpecieCountTableRow from \"../TotalTable/SpecieCountTableRow\";\n\nconst SpecieCountTable = (props) => {\n return (\n \n {props.data.length > 0 && (\n \n \n \n \n \n \n )}\n \n );\n};\nexport default SpecieCountTable;\n","import React, { Fragment } from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst styles = StyleSheet.create({\n row: {\n flexDirection: \"row\",\n borderBottomColor: borderColor,\n borderBottomWidth: 1,\n alignItems: \"center\",\n fontStyle: \"bold\",\n },\n description: {\n width: \"28%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n paddingLeft: 5,\n borderColor: borderColor,\n borderWidth: 1,\n },\n rowWidth: {\n width: \"18%\",\n height: 20,\n paddingTop: 5,\n fontSize: 9,\n textAlign: \"center\",\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieYOYRow = ({ items }) => {\n const rows = items.map((item, i) => {\n return (\n \n {item.name}\n {item.live_intake}\n {item.live_outcome}\n {item.other_outcome}\n \n {item.live_outcome + item.other_outcome}\n \n \n );\n });\n return {rows};\n};\n\nexport default SpecieYOYRow;\n","import React from \"react\";\nimport { Text, View, StyleSheet } from \"@react-pdf/renderer\";\n\nconst borderColor = \"#ccc\";\nconst backColor = \"#e6e7e8\";\nconst styles = StyleSheet.create({\n live_intake_n: {\n width: \"28%\",\n height: 30,\n paddingTop: 7,\n backgroundColor: \"#1f6165\",\n borderColor: borderColor,\n borderWidth: 1,\n color: \"white\",\n },\n canine: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n feline: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n subtotal: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n total: {\n width: \"18%\",\n height: 30,\n paddingTop: 8,\n fontSize: 11,\n backgroundColor: backColor,\n borderColor: borderColor,\n borderWidth: 1,\n },\n});\n\nconst SpecieYOYHeader = (props) => (\n \n YOY\n LIVE INTAKES\n Live OUTCOMES\n OTHER OUTCOMES\n TOTAL OUTCOMES\n \n);\n\nexport default SpecieYOYHeader;\n","export const LIVE_INTAKE_KEYS = [\n { name: \"Stray/At Large\", key: \"totalStrayAtLargeCount\" },\n {\n name: \"Relinquished by Owner\",\n key: \"totalRelinquishedByOwnerCount\",\n },\n {\n name: \"Transferred in from agency (in state) \",\n key: \"totalTransferredInstateInFromAgencyCount\",\n },\n {\n name: \"Transferred in from agency (out of state)\",\n key: \"totalTransferredOutOfStateInFromAgencyCount\",\n },\n {\n name: \"Transferred in from agency (international)\",\n key: \"totalTransferredInternationallyInFromAgencyCount\",\n },\n {\n name: \"Transferred in from agency (undesignated)\",\n key: \"totalLegacyTransferredInFromAgencyCount\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n key: \"totalOwnerIntendedEuthanasiaCount\",\n },\n { name: \"Seizure\", key: \"totalSeizedOrImpoundedCount\" },\n { name: \"Other Intakes\", key: \"totalOtherIntakesCount\" },\n { name: \"TOTAL LIVE INTAKES\", key: \"total\" },\n];\n\nexport const LIVE_OUTCOMES_KEYS = [\n { name: \"Adoption\", key: \"totalAdoptionCount\" },\n {\n name: \"Returned to Owner (RTO)\",\n key: \"totalReturnedToOwnerCount\",\n },\n {\n name: \"Transferred out to agency (InState) \",\n key: \"totalTransferredInstateToAnotherAgencyCount\",\n },\n {\n name: \"Transferred out to agency (out of state)\",\n key: \"totalTransferredOutOfStateToAnotherAgencyCount\",\n },\n {\n name: \"Transferred out to agency (international)\",\n key: \"totalTransferredInternationallyToAnotherAgencyCount\",\n },\n {\n name: \"Transferred out to agency (undesignated)\",\n key: \"totalLegacyTransferredToAnotherAgencyCount\",\n },\n {\n name: \"Returned to Field (RTF)\",\n key: \"totalReturnedToFieldCount\",\n },\n {\n name: \"Other Live Outcomes\",\n key: \"totalOtherLiveOutcomeCount\",\n },\n { name: \"TOTAL OUTCOMES\", key: \"total\" },\n];\n\nexport const OTHER_OUTCOMES = [\n { name: \"Died in Care\", key: \"totalDiedInCareCount\" },\n { name: \"Lost in Care \", key: \"totalLostInCareCount\" },\n {\n name: \"Shelter Euthanasia\",\n key: \"totalShelterEuthanasiaCount\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n key: \"totalOwnerIntendedEuthanasiaCount\",\n },\n { name: \"TOTAL OTHER OUTCOMES \", key: \"total\" },\n];\n\nexport const SP_LIVE_INTAKE_KEYS = [\n {\n name: \"Stray/At Large\",\n key1: \"adultStrayAtLargeCount\",\n key2: \"youthStrayAtLargeCount\",\n key3: \"ageUnknownStrayAtLargeCount\",\n },\n {\n name: \"Relinquished by Owner\",\n key1: \"adultRelinquishedByOwnerCount\",\n key2: \"youthRelinquishedByOwnerCount\",\n key3: \"ageUnknownRelinquishedByOwnerCount\",\n },\n {\n name: \"Transferred in from agency (in state) \",\n key1: \"adultTransferredInstateInFromAgencyCount\",\n key2: \"youthTransferredInstateInFromAgencyCount\",\n key3: \"ageUnknownTransferredInstateInFromAgencyCount\",\n },\n {\n name: \"Transferred in from agency (out of state)\",\n key1: \"adultTransferredOutOfStateInFromAgencyCount\",\n key2: \"youthTransferredOutOfStateInFromAgencyCount\",\n key3: \"ageUnknownTransferredOutOfStateInFromAgencyCount\",\n },\n {\n name: \"Transferred in from agency (international)\",\n key1: \"adultTransferredInternationallyInFromAgencyCount\",\n key2: \"youthTransferredInternationallyInFromAgencyCount\",\n key3: \"ageUnknownTransferredInternationallyInFromAgencyCount\",\n },\n {\n subname: \"undesignated\",\n name: \"Transferred in from agency (undesignated)\",\n key1: \"AdultLegacyTransferredInFromAgencyCount\",\n key2: \"YouthLegacyTransferredInFromAgencyCount\",\n key3: \"AgeUnknownLegacyTransferredInFromAgencyCount\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n key1: \"adultOwnerIntendedEuthanasiaCount\",\n key2: \"youthOwnerIntendedEuthanasiaCount\",\n key3: \"ageUnknownOwnerIntendedEuthanasiaCount\",\n },\n {\n name: \"Seizure\",\n key1: \"adultSeizedOrImpoundedCount\",\n key2: \"youthSeizedOrImpoundedCount\",\n key3: \"ageUnknownSeizedOrImpoundedCount\",\n },\n {\n name: \"Other Intakes\",\n key1: \"adultOtherIntakesCount\",\n key2: \"youthOtherIntakesCount\",\n key3: \"ageUnknownOtherIntakesCount\",\n },\n { name: \"TOTAL LIVE INTAKES\", key: \"total\" },\n];\n\nexport const SP_LIVE_OUTCOMES_KEYS = [\n {\n name: \"Adoption\",\n key1: \"adultAdoptionCount\",\n key2: \"youthAdoptionCount\",\n key3: \"ageUnknownAdoptionCount\",\n },\n {\n name: \"Returned to Owner (RTO)\",\n key1: \"adultReturnedToOwnerCount\",\n key2: \"youthReturnedToOwnerCount\",\n key3: \"ageUnknownReturnedToOwnerCount\",\n },\n {\n name: \"Transferred out to agency (InState) \",\n key1: \"adultTransferredInstateToAnotherAgencyCount\",\n key2: \"youthTransferredInstateToAnotherAgencyCount\",\n key3: \"ageUnknownTransferredInstateToAnotherAgencyCount\",\n },\n {\n name: \"Transferred out to agency (out of state)\",\n key1: \"adultTransferredOutOfStateToAnotherAgencyCount\",\n key2: \"youthTransferredOutOfStateToAnotherAgencyCount\",\n key3: \"ageUnknownTransferredOutOfStateToAnotherAgencyCount\",\n },\n {\n name: \"Transferred out to agency (international)\",\n key1: \"adultTransferredInternationallyToAnotherAgencyCount\",\n key2: \"youthTransferredInternationallyToAnotherAgencyCount\",\n key3: \"ageUnknownTransferredInternationallyToAnotherAgencyCount\",\n },\n {\n subname: \"undesignated\",\n name: \"Transferred out to agency (undesignated)\",\n key1: \"AdultLegacyTransferredToAnotherAgencyCount\",\n key2: \"YouthLegacyTransferredToAnotherAgencyCount\",\n key3: \"AgeUnknownLegacyTransferredToAnotherAgencyCount\",\n },\n {\n name: \"Returned to Field (RTF)\",\n key1: \"adultReturnedToFieldCount\",\n key2: \"youthReturnedToFieldCount\",\n key3: \"ageUnknownReturnedToFieldCount\",\n },\n {\n name: \"Other Live Outcomes\",\n key1: \"adultOtherLiveOutcomeCount\",\n key2: \"youthOtherLiveOutcomeCount\",\n key3: \"ageUnknownOtherLiveOutcomeCount\",\n },\n { name: \"TOTAL OUTCOMES\", key: \"total\" },\n];\n\nexport const SP_OTHER_OUTCOMES = [\n {\n name: \"Died in Care\",\n key1: \"adultDiedInCareCount\",\n key2: \"youthDiedInCareCount\",\n key3: \"ageUnknownDiedInCareCount\",\n },\n {\n name: \"Lost in Care \",\n key1: \"adultLostInCareCount\",\n key2: \"youthLostInCareCount\",\n key3: \"ageUnknownLostInCareCount\",\n },\n {\n name: \"Shelter Euthanasia\",\n key1: \"adultShelterEuthanasiaCount\",\n key2: \"youthShelterEuthanasiaCount\",\n key3: \"ageUnknownShelterEuthanasiaCount\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n key1: \"adultOwnerIntendedEuthanasiaCountOutCome\",\n key2: \"youthOwnerIntendedEuthanasiaCountOutCome\",\n key3: \"ageUnknownOwnerIntendedEuthanasiaCountOutCome\",\n },\n { name: \"TOTAL OTHER OUTCOMES \", key: \"total\" },\n];\n\nconst totalTransferDataSumIsNotZero = (data) => {\n const keys = [\n \"totalTransferredInstateInFromAgencyCount\",\n \"totalTransferredOutOfStateInFromAgencyCount\",\n \"totalTransferredInternationallyInFromAgencyCount\",\n \"totalTransferredInstateToAnotherAgencyCount\",\n \"totalTransferredOutOfStateToAnotherAgencyCount\",\n \"totalTransferredInternationallyToAnotherAgencyCount\",\n ];\n const sum = keys.reduce(\n (total, key) => total + (data.attributes[key] || 0),\n 0\n );\n const year = data.attributes.yearOfRecord;\n const month = data.attributes.monthOfRecord;\n\n const priorDate = new Date(2021, 2);\n const currentDate = new Date(year, month - 1);\n\n const isPriorDate = currentDate < priorDate;\n return sum > 0 && isPriorDate;\n};\n\nexport const generateLiveIntakeData = (intakes, keys) => {\n var intakesData = [];\n\n var feline = intakes.filter((a) => a.attributes.species === \"feline\");\n var canine = intakes.filter((a) => a.attributes.species === \"canine\");\n var orther = intakes.filter(\n (a) =>\n a.attributes.species !== \"canine\" && a.attributes.species !== \"feline\"\n );\n\n for (let i = 0; i < keys.length - 1; i++) {\n let key = keys[i];\n var c = 0,\n f = 0,\n o = 0;\n\n f = feline\n .map((data) => {\n if (totalTransferDataSumIsNotZero(data)) {\n if (\n key.key !== \"totalLegacyTransferredInFromAgencyCount\" &&\n key.key !== \"totalLegacyTransferredToAnotherAgencyCount\"\n ) {\n return data.attributes[key.key];\n }\n } else {\n return data.attributes[key.key];\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n c = canine\n .map((data) => {\n if (totalTransferDataSumIsNotZero(data)) {\n if (\n key.key !== \"totalLegacyTransferredInFromAgencyCount\" &&\n key.key !== \"totalLegacyTransferredToAnotherAgencyCount\"\n ) {\n return data.attributes[key.key];\n }\n } else {\n return data.attributes[key.key];\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n o = orther\n .map((data) => {\n if (totalTransferDataSumIsNotZero(data)) {\n if (\n key.key !== \"totalLegacyTransferredInFromAgencyCount\" &&\n key.key !== \"totalLegacyTransferredToAnotherAgencyCount\"\n ) {\n return data.attributes[key.key];\n }\n } else {\n return data.attributes[key.key];\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n intakesData.push({\n name: key.name,\n canine: c,\n feline: f,\n other: o,\n });\n }\n\n intakesData.push({\n name: keys[keys.length - 1].name,\n canine: intakesData\n .map((a) => a.canine)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n feline: intakesData\n .map((a) => a.feline)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n other: intakesData\n .map((a) => a.other)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n });\n return intakesData;\n};\n\nexport const generateCountsData = (data, month) => {\n var countsData = [];\n var feline = data\n .filter((a) => a.attributes.species === \"feline\")\n .sort((a, b) => {\n return a.attributes.monthOfRecord - b.attributes.monthOfRecord;\n });\n var canine = data\n .filter((a) => a.attributes.species === \"canine\")\n .sort((a, b) => {\n return a.attributes.monthOfRecord - b.attributes.monthOfRecord;\n });\n var orther = data\n .filter(\n (a) =>\n a.attributes.species !== \"canine\" && a.attributes.species !== \"feline\"\n )\n .sort((a, b) => {\n return a.attributes.monthOfRecord - b.attributes.monthOfRecord;\n });\n var s_c = canine;\n var s_f = feline;\n var s_o = orther;\n\n var l_c = canine;\n var l_f = feline;\n var l_o = orther;\n\n if (month !== \"\") {\n var years = canine\n .map((a) => a.attributes.yearOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n var months_of_first_year = canine\n .filter((a) => a.attributes.yearOfRecord == years[0])\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n\n s_c = canine.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_first_year[0] &&\n a.attributes.yearOfRecord == years[0]\n );\n s_f = feline.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_first_year[0] &&\n a.attributes.yearOfRecord == years[0]\n );\n s_o = orther.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_first_year[0] &&\n a.attributes.yearOfRecord == years[0]\n );\n\n // get last month record\n var last_day = years[years.length - 1];\n var months_of_last_year = canine\n .filter((a) => a.attributes.yearOfRecord == last_day)\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n months_of_last_year = months_of_last_year[months_of_last_year.length - 1];\n l_c = canine.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_last_year &&\n a.attributes.yearOfRecord == last_day\n );\n l_f = feline.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_last_year &&\n a.attributes.yearOfRecord == last_day\n );\n l_o = orther.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_last_year &&\n a.attributes.yearOfRecord == last_day\n );\n } else {\n var months = canine\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n\n s_c = canine.filter((a) => a.attributes.monthOfRecord == months[0]);\n s_f = feline.filter((a) => a.attributes.monthOfRecord == months[0]);\n s_o = orther.filter((a) => a.attributes.monthOfRecord == months[0]);\n\n // get last month record\n var months_of_last_year = months[months.length - 1];\n l_c = canine.filter(\n (a) => a.attributes.monthOfRecord == months_of_last_year\n );\n l_f = feline.filter(\n (a) => a.attributes.monthOfRecord == months_of_last_year\n );\n l_o = orther.filter(\n (a) => a.attributes.monthOfRecord == months_of_last_year\n );\n }\n var otherTotalStart = s_o\n .map((a) => a.attributes.beginningAnimalCount)\n .reduce((a, b) => a + b, 0);\n var otherTotalFosterStart = s_o\n .map((a) => a.attributes.beginningFosterAnimalCount)\n .reduce((a, b) => a + b, 0);\n\n var otherTotalEnd = l_o\n .map((a) => a.attributes.endingAnimalCount)\n .reduce((a, b) => a + b, 0);\n var otherTotalFosterEnd = l_o\n .map((a) => a.attributes.endingFosterAnimalCount)\n .reduce((a, b) => a + b, 0);\n\n countsData.push({\n name: \"Beginning Count\",\n canine_c: s_c.length > 0 ? s_c[0].attributes.beginningAnimalCount : 0,\n canine_f: s_c.length > 0 ? s_c[0].attributes.beginningFosterAnimalCount : 0,\n feleine_c: s_f.length > 0 ? s_f[0].attributes.beginningAnimalCount : 0,\n feleine_f:\n s_f.length > 0 ? s_f[0].attributes.beginningFosterAnimalCount : 0,\n other_c: otherTotalStart,\n other_f: otherTotalFosterStart,\n });\n countsData.push({\n name: \"Ending Count\",\n canine_c: l_c.length > 0 ? l_c[0].attributes.endingAnimalCount : 0,\n canine_f: l_c.length > 0 ? l_c[0].attributes.endingFosterAnimalCount : 0,\n feleine_c: l_f.length > 0 ? l_f[0].attributes.endingAnimalCount : 0,\n feleine_f: l_f.length > 0 ? l_f[0].attributes.endingFosterAnimalCount : 0,\n other_c: otherTotalEnd,\n other_f: otherTotalFosterEnd,\n });\n return countsData;\n};\n\nexport const generateYOYData = (\n liveIntakes,\n liveOutComes,\n otherOutcomes,\n year\n) => {\n var YOYdata = [];\n YOYdata.push({\n name: year,\n live_intake_c: liveIntakes[liveIntakes.length - 1].canine,\n live_outcome_c: liveOutComes[liveOutComes.length - 1].canine,\n other_outcome_c: otherOutcomes[otherOutcomes.length - 1].canine,\n total_outcome_c:\n otherOutcomes[otherOutcomes.length - 1].canine +\n liveOutComes[liveOutComes.length - 1].canine,\n live_intake_f: liveIntakes[liveIntakes.length - 1].feleine,\n live_outcome_f: liveOutComes[liveOutComes.length - 1].feleine,\n other_outcome_f: otherOutcomes[otherOutcomes.length - 1].feleine,\n total_outcome_f:\n liveOutComes[liveOutComes.length - 1].feleine +\n otherOutcomes[otherOutcomes.length - 1].feleine,\n live_intake_o: liveIntakes[liveIntakes.length - 1].other,\n live_outcome_o: liveOutComes[liveOutComes.length - 1].other,\n other_outcome_o: otherOutcomes[otherOutcomes.length - 1].other,\n total_outcome_o:\n otherOutcomes[otherOutcomes.length - 1].other +\n liveOutComes[liveOutComes.length - 1].other,\n });\n return YOYdata;\n};\n\nexport const getSPServices = (data, sp, keys) => {\n var current = data.filter((a) => a.attributes.species === sp);\n var specs = [];\n if (current.length !== 0) {\n for (let i = 0; i < keys.length - 1; i++) {\n if (keys[i].name !== \"undesignated\") {\n specs.push({\n name: keys[i].name,\n key1: current\n .map((a) => a.attributes[keys[i].key1])\n .reduce((a, b) => a + b, 0),\n key2: current\n .map((a) => a.attributes[keys[i].key2])\n .reduce((a, b) => a + b, 0),\n key3: current\n .map((a) => a.attributes[keys[i].key3])\n .reduce((a, b) => a + b, 0),\n });\n } else {\n specs.push({\n name: keys[i].rename,\n key1: 0,\n key2: 0,\n key3: 0,\n });\n }\n }\n specs.push({\n name: keys[keys.length - 1].name,\n key1: specs.map((a) => a.key1).reduce((a, b) => a + b, 0),\n key2: specs.map((a) => a.key2).reduce((a, b) => a + b, 0),\n key3: specs.map((a) => a.key3).reduce((a, b) => a + b, 0),\n });\n }\n return specs;\n};\n\nconst isSumGreaterThanZero = (obj) => {\n const keys = [\n \"adultTransferredInstateInFromAgencyCount\",\n \"youthTransferredInstateInFromAgencyCount\",\n \"ageUnknownTransferredInstateInFromAgencyCount\",\n \"adultTransferredOutOfStateInFromAgencyCount\",\n \"youthTransferredOutOfStateInFromAgencyCount\",\n \"ageUnknownTransferredOutOfStateInFromAgencyCount\",\n \"adultTransferredInternationallyInFromAgencyCount\",\n \"youthTransferredInternationallyInFromAgencyCount\",\n \"ageUnknownTransferredInternationallyInFromAgencyCount\",\n\n \"adultTransferredInstateToAnotherAgencyCount\",\n \"youthTransferredInstateToAnotherAgencyCount\",\n \"ageUnknownTransferredInstateToAnotherAgencyCount\",\n \"adultTransferredOutOfStateToAnotherAgencyCount\",\n \"youthTransferredOutOfStateToAnotherAgencyCount\",\n \"ageUnknownTransferredOutOfStateToAnotherAgencyCount\",\n \"adultTransferredInternationallyToAnotherAgencyCount\",\n \"youthTransferredInternationallyToAnotherAgencyCount\",\n \"ageUnknownTransferredInternationallyToAnotherAgencyCount\",\n ];\n const sum = keys.reduce((total, key) => total + (obj[key] || 0), 0);\n return sum > 0;\n};\n\nexport const getSPIntakes = (data, sp, keys) => {\n const current = data.filter((a) => a.attributes.species === sp);\n let specieData = [];\n if (current.length !== 0) {\n for (let i = 0; i < keys.length - 1; i++) {\n specieData.push({\n name: keys[i].name,\n key1: current\n .map((a) => {\n if (isSumGreaterThanZero(a.attributes)) {\n if (keys[i].subname !== \"undesignated\") {\n return a.attributes[keys[i].key1];\n }\n } else {\n return a.attributes[keys[i].key1];\n }\n return 0;\n })\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n key2: current\n .map((a) => {\n if (isSumGreaterThanZero(a.attributes)) {\n if (keys[i].subname !== \"undesignated\") {\n return a.attributes[keys[i].key2];\n }\n } else {\n return a.attributes[keys[i].key2];\n }\n return 0;\n })\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n key3: current\n .map((a) => {\n if (isSumGreaterThanZero(a.attributes)) {\n if (keys[i].subname !== \"undesignated\") {\n return a.attributes[keys[i].key3];\n }\n } else {\n return a.attributes[keys[i].key3];\n }\n return 0;\n })\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n });\n }\n }\n specieData.push({\n name: keys[keys.length - 1].name,\n key1: specieData\n .map((a) => a.key1)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n key2: specieData\n .map((a) => a.key2)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n key3: specieData\n .map((a) => a.key3)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n });\n\n return specieData;\n};\n\nexport const generateCountsDataSP = (data, SP, month) => {\n var current = data.filter((a) => a.attributes.species === SP);\n var countsData = [];\n\n var years = current\n .map((a) => a.attributes.yearOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n var months_of_first_year = current\n .filter((a) => a.attributes.yearOfRecord == years[0])\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n var months = current\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n\n var last_day = years[years.length - 1];\n var months_of_last_year = current\n .filter((a) => a.attributes.yearOfRecord == last_day)\n .map((a) => a.attributes.monthOfRecord)\n .filter((v, i, a) => a.indexOf(v) === i)\n .sort(function (a, b) {\n return a - b;\n });\n months_of_last_year = months_of_last_year[months_of_last_year.length - 1];\n\n if (current.length > 0) {\n var s_c = current;\n var l_c = current;\n if (month !== \"\") {\n s_c = current.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_first_year[0] &&\n a.attributes.yearOfRecord == years[0]\n );\n l_c = current.filter(\n (a) =>\n a.attributes.monthOfRecord == months_of_last_year &&\n a.attributes.yearOfRecord == last_day\n );\n } else {\n var months_of_last_year = months[months.length - 1];\n s_c = current.filter((a) => a.attributes.monthOfRecord == months[0]);\n l_c = current.filter(\n (a) => a.attributes.monthOfRecord == months_of_last_year\n );\n }\n countsData.push({\n name: \"Beginning Count\",\n total_incare:\n s_c.length > 0 ? s_c[0].attributes.beginningAnimalCount : \"\",\n total_in_foster:\n s_c.length > 0 ? s_c[0].attributes.beginningFosterAnimalCount : \"\",\n });\n countsData.push({\n name: \"Ending Count\",\n total_incare: l_c.length > 0 ? l_c[0].attributes.endingAnimalCount : \"\",\n total_in_foster:\n l_c.length > 0 ? l_c[0].attributes.endingFosterAnimalCount : \"\",\n });\n }\n return countsData;\n};\n\nexport const generateFieldDataServices = (intakes, keys) => {\n var intakesData = [];\n var feline = intakes.filter((a) => a.attributes.species === \"feline\");\n var canine = intakes.filter((a) => a.attributes.species === \"canine\");\n var other = intakes.filter(\n (a) =>\n a.attributes.species !== \"canine\" && a.attributes.species !== \"feline\"\n );\n for (let i = 0; i < keys.length - 1; i++) {\n let key = keys[i];\n var c = 0,\n f = 0,\n o = 0;\n\n c = canine\n .map((data) => {\n if (key.key !== \"alltotal\") {\n return data.attributes[key.key] || 0;\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n f = feline\n .map((data) => {\n if (key.key !== \"alltotal\") {\n return data.attributes[key.key] || 0;\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n o = other\n .map((data) => {\n if (key.key !== \"alltotal\") {\n return data.attributes[key.key] || 0;\n }\n return 0;\n })\n .reduce((a, b) => a + b, 0);\n\n intakesData.push({\n name: key.name,\n canine: c,\n feline: f,\n other: o,\n });\n }\n intakesData.push({\n name: keys[keys.length - 1].name,\n canine: intakesData\n .map((a) => a.canine)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n feline: intakesData\n .map((a) => a.feline)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n other: intakesData\n .map((a) => a.other)\n .reduce((a, b) => (a || 0) + (b || 0), 0),\n });\n return intakesData;\n};\n\nexport const FIELD_DATA = [\n { name: \"Trap-Neuter-Return (TNR)\", key: \"totalTrapNeuterReturnCount\" },\n {\n name: \"Return-to-Owner in the Field\",\n key: \"totalReturnToOwnerCount\",\n },\n { name: \"TOTAL FIELD SERVICES\", key: \"alltotal\" },\n];\n\nexport const VETERINAY_DATA = [\n {\n name: \"Microchipping and/or Collar with ID Tag\",\n key: \"totalMicrochippingCollarIdTagsCount\",\n },\n {\n name: \"Spay/Neuter for OwnedAnimals\",\n key: \"totalSpayNeuterOwnedAnimalCount\",\n },\n {\n name: \"Wellness/Preventative Medical Care\",\n key: \"totalWellnessPreventiveMedicalCareCount\",\n },\n {\n name: \"Sick Animal Care/Basic Veterinary Care\",\n key: \"totalBasicAnimalCareCount\",\n },\n {\n name: \"Sick Animal Care/Advanced Veterinary Care\",\n key: \"totalAdvancedAnimalCareCount\",\n },\n {\n name: \"Owner Intended Euthanasia(OIE)\",\n key: \"totalOwnerIntendedEuthanasiaCount\",\n },\n { name: \"TOTAL VETERINARY SERVICES\", key: \"alltotal\" },\n];\n\nexport const BEHAVIORAL_DATA = [\n { name: \"Behavior Consultation\", key: \"totalBehaviorConsultationCount\" },\n { name: \"Group Training\", key: \"totalGroupTrainingCount\" },\n { name: \"Private Training\", key: \"totalPrivateTrainingCount\" },\n {\n name: \"Behavior Modification Program\",\n key: \"totalBehaviorModificationProgramCount\",\n },\n { name: \"TOTAL BEHAVIORAL SERVICES\", key: \"alltotal\" },\n];\n\nexport const SUPPORT_DATA = [\n { name: \"Pet Food\", key: \"totalPetFoodCount\" },\n { name: \"Pet Supplies\", key: \"totalPetSuppliesCount\" },\n { name: \"Grooming\", key: \"totalGroomingCount\" },\n {\n name: \"Temporary Housing for Owned Animals\",\n key: \"totalTemporaryHousingOwnedAnimalsCount\",\n },\n {\n name: \"Temporary Housing for People and Animals\",\n key: \"totalTemporaryHousingPeopleAndAnimalsCount\",\n },\n {\n name: \"Other Pet RetentionServices\",\n key: \"totalOtherPetRetentionServicesCount\",\n },\n { name: \"Rehoming Support\", key: \"totalRehomingSupportCount\" },\n { name: \"TOTAL SUPPORT SERVICES\", key: \"alltotal\" },\n];\n\nexport const SP_FIELD_DATA_KEYS = [\n {\n name: \"Trap-Neuter-Return (TNR)\",\n key1: \"adultTrapNeuterReturnCount\",\n key2: \"youthTrapNeuterReturnCount\",\n key3: \"ageUnknownTrapNeuterReturnCount\",\n },\n {\n name: \"Return-to-Owner in the Field\",\n key1: \"adultReturnToOwnerCount\",\n key2: \"youthReturnToOwnerCount\",\n key3: \"ageUnknownReturnToOwnerCount\",\n },\n { name: \"TOTAL FIELD SERVICES\", key: \"total\" },\n];\n\nexport const SP_VETERINAY_DATA_KEYS = [\n {\n name: \"Microchipping and/or Collar with ID Tag\",\n key1: \"adultMicrochippingCollarIdTagsCount\",\n key2: \"youthMicrochippingCollarIdTagsCount\",\n key3: \"ageUnknownMicrochippingCollarIdTagsCount\",\n },\n {\n name: \"Spay/Neuter for OwnedAnimals\",\n key1: \"adultSpayNeuterOwnedAnimalCount\",\n key2: \"youthSpayNeuterOwnedAnimalCount\",\n key3: \"ageUnknownSpayNeuterOwnedAnimalCount\",\n },\n {\n name: \"Wellness/Preventative Medical Care\",\n key1: \"adultWellnessPreventiveMedicalCareCount\",\n key2: \"youthWellnessPreventiveMedicalCareCount\",\n key3: \"ageUnknownWellnessPreventiveMedicalCareCount\",\n },\n {\n name: \"Sick Animal Care/Basic Veterinary Care\",\n key1: \"adultBasicAnimalCareCount\",\n key2: \"youthBasicAnimalCareCount\",\n key3: \"ageUnknownBasicAnimalCareCount\",\n },\n {\n name: \"Sick Animal Care/Advanced Veterinary Care\",\n key1: \"adultAdvancedAnimalCareCount\",\n key2: \"youthAdvancedAnimalCareCount\",\n key3: \"ageUnknownAdvancedAnimalCareCount\",\n },\n {\n name: \"Owner Intended Euthanasia(OIE)\",\n key1: \"adultOwnerIntendedEuthanasiaCount\",\n key2: \"youthOwnerIntendedEuthanasiaCount\",\n key3: \"ageUnknownOwnerIntendedEuthanasiaCount\",\n },\n { name: \"TOTAL VETERINARY SERVICES\", key: \"total\" },\n];\n\nexport const SP_BEHAVIORAL_DATA_KEYS = [\n {\n name: \"Behavior Consultation\",\n key1: \"adultBehaviorConsultationCount\",\n key2: \"youthBehaviorConsultationCount\",\n key3: \"ageUnknownBehaviorConsultationCount\",\n },\n {\n name: \"Group Training\",\n key1: \"adultGroupTrainingCount\",\n key2: \"youthGroupTrainingCount\",\n key3: \"ageUnknownGroupTrainingCount\",\n },\n {\n name: \"Private Training\",\n key1: \"adultPrivateTrainingCount\",\n key2: \"youthPrivateTrainingCount\",\n key3: \"ageUnknownPrivateTrainingCount\",\n },\n {\n name: \"Behavior Modification Program\",\n key1: \"adultBehaviorModificationProgramCount\",\n key2: \"youthBehaviorModificationProgramCount\",\n key3: \"ageUnknownBehaviorModificationProgramCount\",\n },\n { name: \"TOTAL BEHAVIORAL SERVICES\", key: \"total\" },\n];\n\nexport const SP_SUPPORT_DATA_KEYS = [\n {\n name: \"Pet Food\",\n key1: \"adultPetFoodCount\",\n key2: \"youthPetFoodCount\",\n key3: \"ageUnknownPetFoodCount\",\n },\n {\n name: \"Pet Supplies\",\n key1: \"adultPetSuppliesCount\",\n key2: \"youthPetSuppliesCount\",\n key3: \"ageUnknownPetSuppliesCount\",\n },\n {\n name: \"Grooming\",\n key1: \"adultGroomingCount\",\n key2: \"youthGroomingCount\",\n key3: \"ageUnknownGroomingCount\",\n },\n {\n name: \"Temporary Housing for Owned Animals\",\n key1: \"adultTemporaryHousingOwnedAnimalsCount\",\n key2: \"youthTemporaryHousingOwnedAnimalsCount\",\n key3: \"ageUnknownTemporaryHousingOwnedAnimalsCount\",\n },\n {\n name: \"Temporary Housing for People and Animals\",\n key1: \"adultTemporaryHousingPeopleAndAnimalsCount\",\n key2: \"youthTemporaryHousingPeopleAndAnimalsCount\",\n key3: \"ageUnknownTemporaryHousingPeopleAndAnimalsCount\",\n },\n {\n name: \"Other Pet Retention Services\",\n key1: \"adultOtherPetRetentionServicesCount\",\n key2: \"youthOtherPetRetentionServicesCount\",\n key3: \"ageUnknownOtherPetRetentionServicesCount\",\n },\n {\n name: \"Rehoming Support\",\n key1: \"adultRehomingSupportCount\",\n key2: \"youthRehomingSupportCount\",\n key3: \"ageUnknownRehomingSupportCount\",\n },\n { name: \"TOTAL SUPPORT SERVICES\", key: \"total\" },\n];\n","import React from \"react\";\nimport {\n Document,\n Page,\n Text,\n View,\n StyleSheet,\n Font,\n} from \"@react-pdf/renderer\";\nimport fontBold from \"../../../fonts/Cera-Pro-Bold.woff\";\nimport PDFLogo from \"./PDFLogo\";\nimport TopHeader from \"./TopHeader\";\nimport SideText from \"./Shared/SideText\";\nimport SpecieTable from \"./Shared/SpecieTable\";\nimport SpecieCountTable from \"./Shared/SpecieCountTable\";\nimport SpecieYOYTable from \"./Shared/SpecieYOYTable\";\nimport {\n generateCountsDataSP,\n getSPIntakes,\n SP_LIVE_INTAKE_KEYS,\n SP_LIVE_OUTCOMES_KEYS,\n SP_OTHER_OUTCOMES,\n} from \"./helpers/PDFTableKeys\";\n\nFont.register({\n src: fontBold,\n family: \"Cera Pro Bold\",\n});\n\n// Create styles\nconst styles = StyleSheet.create({\n section: {\n margin: 10,\n padding: 10,\n },\n viewer: {\n width: window.innerWidth, //the pdf viewer will take up all of the width and height\n height: window.innerHeight,\n },\n container: {\n flexDirection: \"row\",\n alignItems: \"stretch\",\n },\n rightCol: {\n flexDirection: \"column\",\n flexGrow: 9,\n paddingLeft: 10,\n paddingRight: 20,\n fontSize: 15,\n textTransform: \"uppercase\",\n },\n container2: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n height: 30,\n paddingTop: 7,\n textAlign: \"center\",\n flexGrow: 1,\n },\n container3: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n paddingTop: 7,\n textAlign: \"center\",\n },\n container4: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n marginTop: \"-5px\",\n textAlign: \"center\",\n },\n leftColumn: {\n width: 400,\n paddingRight: 10,\n },\n leftColumn2: {\n width: 350,\n paddingRight: 0,\n paddingLeft: 20,\n fontSize: 14,\n lineHeight: 1.5,\n fontWeight: 900,\n },\n header: {\n color: \"#0F6165\",\n fontSize: \"24px\",\n paddingLeft: 10,\n fontFamily: \"Cera Pro Bold\",\n fontWeight: 900,\n },\n});\n\n// Create Document Component\nconst CustomSpeciesPage = (props) => {\n var spIntakes = [],\n spOut2 = [],\n spOut = [],\n // YOYData = [],\n counts = [];\n if (props && props.data) {\n spIntakes = getSPIntakes(\n props.data.intakes.data,\n props.sp,\n SP_LIVE_INTAKE_KEYS\n );\n spOut = getSPIntakes(\n props.data.outcomes.data,\n props.sp,\n SP_LIVE_OUTCOMES_KEYS\n );\n spOut2 = getSPIntakes(\n props.data.outcomes.data,\n props.sp,\n SP_OTHER_OUTCOMES\n );\n counts = generateCountsDataSP(\n props.data.counts.data,\n props.sp,\n props.data.month\n );\n }\n return (\n \n \n \n \n \n \n \n \n \n \n {props.title}\n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n \n \n );\n};\nexport default CustomSpeciesPage;\n","import React from \"react\";\nimport {\n Document,\n Page,\n Text,\n View,\n StyleSheet,\n Font,\n} from \"@react-pdf/renderer\";\nimport fontBold from \"../../fonts/Cera-Pro-Bold.woff\";\nimport PDFLogo from \"./ExportPDF/PDFLogo\";\nimport TopHeader from \"./ExportPDF/TopHeader\";\nimport MainTable from \"./ExportPDF/MainTable\";\nimport CountsTable from \"./ExportPDF/CountsTable\";\nimport CustomSpeciesPage from \"./ExportPDF/CustomSpeciesPage\";\nimport {\n generateCountsData,\n generateLiveIntakeData,\n LIVE_INTAKE_KEYS,\n LIVE_OUTCOMES_KEYS,\n OTHER_OUTCOMES,\n} from \"./ExportPDF/helpers/PDFTableKeys\";\nimport SideText from \"./ExportPDF/Shared/SideText\";\n\nFont.register({\n src: fontBold,\n family: \"Cera Pro Bold\",\n});\n\n// Create styles\nconst styles = StyleSheet.create({\n section: {\n margin: 10,\n padding: 10,\n },\n viewer: {\n width: window.innerWidth, //the pdf viewer will take up all of the width and height\n height: window.innerHeight,\n },\n container: {\n flexDirection: \"row\",\n alignItems: \"stretch\",\n },\n rightCol: {\n flexDirection: \"column\",\n flexGrow: 9,\n paddingLeft: 10,\n paddingRight: 20,\n fontSize: 15,\n textTransform: \"uppercase\",\n },\n container2: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n height: 30,\n paddingTop: 7,\n textAlign: \"center\",\n flexGrow: 1,\n },\n container3: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n paddingTop: 7,\n textAlign: \"center\",\n },\n container4: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n marginTop: \"-5px\",\n textAlign: \"center\",\n },\n leftColumn: {\n width: 400,\n paddingRight: 10,\n },\n leftColumn2: {\n width: 350,\n paddingRight: 0,\n paddingLeft: 20,\n fontSize: 14,\n lineHeight: 1.5,\n fontWeight: 900,\n },\n header: {\n color: \"#0F6165\",\n fontSize: \"24px\",\n paddingLeft: 10,\n fontFamily: \"Cera Pro Bold\",\n fontWeight: 900,\n },\n});\n\n// Create Document Component\nconst PDFExport = ({ data, orgName, action, timeframe }) => {\n var totalSpecies = [\n ...data.intakes.data\n .map((a) => a.attributes.species)\n .filter((x, i, a) => a.indexOf(x) === i),\n ...data.outcomes.data\n .map((a) => a.attributes.species)\n .filter((x, i, a) => a.indexOf(x) === i),\n ...data.counts.data\n .map((a) => a.attributes.species)\n .filter((x, i, a) => a.indexOf(x) === i),\n ].filter((x, i, a) => a.indexOf(x) === i);\n\n var liveIntakes = [];\n liveIntakes = generateLiveIntakeData(data.intakes.data, LIVE_INTAKE_KEYS);\n var liveOutComes = [];\n liveOutComes = generateLiveIntakeData(data.outcomes.data, LIVE_OUTCOMES_KEYS);\n var otherOutcomes = [];\n otherOutcomes = generateLiveIntakeData(data.outcomes.data, OTHER_OUTCOMES);\n var countsData = [];\n countsData = generateCountsData(data.counts.data, data.month);\n // Need to comment for now but we need this in future\n // var YOYData = [];\n // YOYData = generateYOYData(\n // liveIntakes,\n // liveOutComes,\n // otherOutcomes,\n // data.year\n // );\n return (\n \n \n \n \n \n \n \n \n \n \n \n ORGANIZATION TOTALS\n \n \n \n {\"\\n\"}\n \n {\"\\n\"}\n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n {totalSpecies.map((sp) => (\n \n ))}\n \n );\n};\nexport default PDFExport;\n","import React, { useState, useEffect } from \"react\";\nimport { useField, useFormikContext } from \"formik\";\nimport { get } from \"lodash\";\nimport DatePicker from \"react-multi-date-picker\";\nimport \"./MultiDatePicker.css\";\n\nconst DatePickerField = ({ ...props }) => {\n const { label, required, readOnly, setDates, onlyYearPicker } = props;\n const [field, { value }, { setValue }] = useField(props);\n const { name } = field;\n const { errors, touched } = useFormikContext();\n const [fieldErrors, setFieldErrors] = useState(null);\n\n useEffect(() => {\n const fieldErrors = get(errors, name);\n setFieldErrors(fieldErrors && get(touched, name) ? fieldErrors : null);\n }, [name, errors, touched]);\n\n if (!label) {\n return (\n setValue(val)}\n />\n );\n }\n\n return (\n
\n \n {fieldErrors && (\n
{fieldErrors}
\n )}\n
\n );\n};\n\nexport default DatePickerField;\n","import { View, Text } from \"@react-pdf/renderer\";\n\nconst SideTextServices = (props) => {\n return (\n \n \n This report is a snapshot of {\"\\n\"} data for all species recorded {\"\\n\"}{\" \"}\n by your organization, within {\"\\n\"}the timeframe selected for\n {\"\\n\"}the report. See additional {\"\\n\"}pages for age breakouts for{\" \"}\n {\"\\n\"}each species.{\"\\n\"}\n {\"\\n\"}\n \n \n For full definitions, visit {\"\\n\"}\n https://www.shelteranimalscount.org/community-services-database-csd/\n {\"\\n\"}\n {\"\\n\"}\n \n \n Community Services are {\"\\n\"}for owned/community {\"\\n\"}supported pets,\n not {\"\\n\"}animals counted as {\"\\n\"}an intake\n {\"\\n\"}\n {\"\\n\"}\n {\"\\n\"}\n {\"\\n\"}\n \n {!props.hideOther && (\n \n * Rabbits, equines, small\n {\"\\n\"}mammals, farm animals, birds,{\"\\n\"}\n and reptiles & amphibians. {\"\\n\"}\n {\"\\n\"}\n \n )}\n \n );\n};\nexport default SideTextServices;\n","import React from \"react\";\nimport {\n Document,\n Page,\n Text,\n View,\n StyleSheet,\n Font,\n} from \"@react-pdf/renderer\";\nimport fontBold from \"../../../fonts/Cera-Pro-Bold.woff\";\nimport PDFLogo from \"./PDFLogo\";\nimport TopHeader from \"./TopHeader\";\nimport SpecieTable from \"./Shared/SpecieTable\";\nimport {\n getSPServices,\n SP_BEHAVIORAL_DATA_KEYS,\n SP_FIELD_DATA_KEYS,\n SP_SUPPORT_DATA_KEYS,\n SP_VETERINAY_DATA_KEYS,\n} from \"./helpers/PDFTableKeys\";\nimport SideTextServices from \"./Shared/SideTextServices\";\n\nFont.register({\n src: fontBold,\n family: \"Cera Pro Bold\",\n});\n\n// Create styles\nconst styles = StyleSheet.create({\n section: {\n margin: 10,\n padding: 10,\n },\n viewer: {\n width: window.innerWidth, //the pdf viewer will take up all of the width and height\n height: window.innerHeight,\n },\n container: {\n flexDirection: \"row\",\n alignItems: \"stretch\",\n },\n rightCol: {\n flexDirection: \"column\",\n flexGrow: 9,\n paddingLeft: 10,\n paddingRight: 20,\n fontSize: 15,\n textTransform: \"uppercase\",\n },\n container2: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n height: 30,\n paddingTop: 7,\n textAlign: \"center\",\n flexGrow: 1,\n },\n container3: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n paddingTop: 7,\n textAlign: \"center\",\n },\n container4: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n marginTop: \"-5px\",\n textAlign: \"center\",\n },\n leftColumn: {\n width: 400,\n paddingRight: 10,\n },\n leftColumn2: {\n width: 350,\n paddingRight: 0,\n paddingLeft: 20,\n fontSize: 14,\n lineHeight: 1.5,\n fontWeight: 900,\n },\n header: {\n color: \"#0F6165\",\n fontSize: \"24px\",\n paddingLeft: 10,\n fontFamily: \"Cera Pro Bold\",\n fontWeight: 900,\n },\n});\n\n// Create Document Component\nconst CustomSpeciesService = (props) => {\n var fieldData = [],\n vetData = [],\n behaviorlData = [],\n supportData = [],\n counts = [];\n if (props && props.data) {\n fieldData = getSPServices(\n props.data.services.data,\n props.sp,\n SP_FIELD_DATA_KEYS\n );\n vetData = getSPServices(\n props.data.services.data,\n props.sp,\n SP_VETERINAY_DATA_KEYS\n );\n behaviorlData = getSPServices(\n props.data.services.data,\n props.sp,\n SP_BEHAVIORAL_DATA_KEYS\n );\n supportData = getSPServices(\n props.data.services.data,\n props.sp,\n SP_SUPPORT_DATA_KEYS\n );\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n {props.title}\n \n \n {\"\\n\"}\n \n {\"\\n\"}\n {\"\\n\"}\n \n {\"\\n\"}\n {\"\\n\"}\n \n {\"\\n\"}\n {\"\\n\"}\n \n \n \n \n \n \n \n );\n};\nexport default CustomSpeciesService;\n","import React from \"react\";\nimport {\n Document,\n Page,\n Text,\n View,\n StyleSheet,\n Font,\n} from \"@react-pdf/renderer\";\nimport fontBold from \"../../fonts/Cera-Pro-Bold.woff\";\nimport PDFLogo from \"./ExportPDF/PDFLogo\";\nimport TopHeader from \"./ExportPDF/TopHeader\";\nimport MainTable from \"./ExportPDF/MainTable\";\nimport CustomSpeciesPage from \"./ExportPDF/CustomSpeciesPage\";\nimport {\n BEHAVIORAL_DATA,\n FIELD_DATA,\n generateFieldDataServices,\n generateVeternaryServices,\n LIVE_INTAKE_KEYS,\n SUPPORT_DATA,\n VETERINAY_DATA,\n} from \"./ExportPDF/helpers/PDFTableKeys\";\nimport SideText from \"./ExportPDF/Shared/SideText\";\nimport SideTextServices from \"./ExportPDF/Shared/SideTextServices\";\nimport CustomSpeciesService from \"./ExportPDF/CustomSpeciesService\";\n\nFont.register({\n src: fontBold,\n family: \"Cera Pro Bold\",\n});\n\n// Create styles\nconst styles = StyleSheet.create({\n section: {\n margin: 20,\n padding: 20,\n },\n viewer: {\n width: window.innerWidth, //the pdf viewer will take up all of the width and height\n height: window.innerHeight,\n },\n container: {\n flexDirection: \"row\",\n alignItems: \"stretch\",\n },\n rightCol: {\n flexDirection: \"column\",\n flexGrow: 9,\n paddingLeft: 10,\n paddingRight: 20,\n fontSize: 16,\n textTransform: \"uppercase\",\n },\n container2: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n height: 40,\n paddingTop: 7,\n textAlign: \"center\",\n flexGrow: 1,\n },\n container3: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n paddingTop: 7,\n textAlign: \"center\",\n },\n container4: {\n flexDirection: \"row\",\n alignItems: \"center\",\n fontFamily: \"Cera Pro Bold\",\n marginTop: \"-5px\",\n textAlign: \"center\",\n },\n leftColumn: {\n width: 400,\n paddingRight: 10,\n },\n leftColumn2: {\n width: 350,\n paddingRight: 0,\n paddingLeft: 20,\n fontSize: 15,\n lineHeight: 1.5,\n fontWeight: 900,\n },\n header: {\n color: \"#0F6165\",\n fontSize: \"24px\",\n paddingLeft: 10,\n fontFamily: \"Cera Pro Bold\",\n fontWeight: 900,\n },\n});\n\nconst PDFExportServices = ({ data, orgName, action, timeframe }) => {\n var totalSpecies = [\n ...data.services.data\n .map((a) => a.attributes.species)\n .filter((x, i, a) => a.indexOf(x) === i),\n ].filter((x, i, a) => a.indexOf(x) === i);\n var liveIntakes = [];\n liveIntakes = generateFieldDataServices(data.services.data, FIELD_DATA);\n var vetData = [];\n vetData = generateFieldDataServices(data.services.data, VETERINAY_DATA);\n var behaviorlData = [];\n behaviorlData = generateFieldDataServices(\n data.services.data,\n BEHAVIORAL_DATA\n );\n var supportData = [];\n supportData = generateFieldDataServices(data.services.data, SUPPORT_DATA);\n return (\n \n \n \n \n \n \n \n \n \n \n \n ORGANIZATION TOTALS\n \n \n \n {\"\\n\"}\n {\"\\n\"}\n \n {\"\\n\"}\n {\"\\n\"}\n \n {\"\\n\"}\n {\"\\n\"}\n \n \n \n \n \n \n \n {totalSpecies.map((sp) => (\n \n ))}\n \n );\n};\nexport default PDFExportServices;\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { CSVLink } from \"react-csv\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport { format } from \"date-fns\";\nimport { useUserState, useAuthState, useAuthDispatch } from \"context\";\nimport { apiFetch, EXPORT_DATE_FORMATS } from \"utils\";\nimport Button from \"components/Button\";\nimport Error from \"components/Error\";\nimport FormField from \"components/FormField\";\nimport * as Yup from \"yup\";\nimport { endOfMonth } from \"date-fns\";\nimport {\n dataEntryHeaders,\n generateExport,\n transformCsvData,\n serviceHeaders,\n transformExportDates,\n} from \"./utils\";\nimport PDFExport from \"./PDFExport\";\nimport { PDFDownloadLink } from \"@react-pdf/renderer\";\nimport DatePanel from \"react-multi-date-picker/plugins/date_panel\";\nimport MultiDatePickerField from \"components/MultiDatePickerField\";\nimport PDFExportServices from \"./PDFExportServices\";\n\nconst ExportSchema = Yup.object().shape({\n location: Yup.string(),\n dateFormat: Yup.string().required(\"Select an export date format\"),\n date: Yup.array().min(1, \"too short\").required(\"Select an export date\"),\n});\n\nconst DataEntryExport = ({\n headingTag = \"h1\",\n subheadingTag = \"h2\",\n title,\n action,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId, organizationId } = useParams();\n const { organization } = useUserState();\n const { isAdmin } = useUserState();\n var newOrgId = orgId;\n if (organization) newOrgId = organization.id;\n\n if (isAdmin && organizationId) newOrgId = organizationId;\n\n // The organization ID we want to use is the orgId in the route if defined\n // otherwise use the user's organization's id\n\n const [exportData, setExportData] = useState([]);\n const [pdfData, setPdfData] = useState([]);\n const [newOrg, setnewOrg] = useState({});\n const [dates, setDates] = useState([]);\n // Allow the user to change the heading level, since this component is used both as a top-level and nested page\n const HeadingTag = headingTag;\n const SubheadingTag = subheadingTag;\n\n // Get the locations for the organizationId\n const {\n data: locations = [],\n isLoading: isLoadingOrg,\n error: errorOrg,\n } = useQuery([\"organizationLocations\", newOrgId], async () => {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${newOrgId}?include=locations`,\n });\n if (!organization) setnewOrg(response.data);\n return response.included.filter((inc) => inc.type === \"locations\");\n });\n\n // API requests to get the CSV data\n const {\n mutate: getData,\n isSuccess,\n isLoading,\n error,\n } = useMutation(\n // Values from formik\n (values) =>\n generateExport({\n formValues: values,\n organizationId: newOrgId,\n token,\n dispatch,\n action,\n }),\n {\n onSuccess: (response) => {\n var res = response;\n setExportData(transformCsvData(response));\n if (action === \"data-entry\" || action === \"services\") {\n setPdfData(res);\n }\n },\n }\n );\n\n const getHeaders = () =>\n action === \"data-entry\" ? dataEntryHeaders : serviceHeaders;\n\n return (\n <>\n {title}\n\n
\n Choose a Month or Year to export.\n\n
\n \n {({ isValid, dirty, values: { dateFormat } }) => (\n
\n
\n
\n \n \n {locations.map((loc) => (\n \n ))}\n \n\n {isLoadingOrg && (\n
\n Loading locations…\n
\n )}\n\n {errorOrg && !isLoadingOrg && (\n
\n Unable to load the locations\n
\n )}\n
\n
\n\n
\n \n \n \n \n \n\n {dateFormat && (\n ]}\n required\n name=\"date\"\n label={\n dateFormat === EXPORT_DATE_FORMATS.MONTH\n ? \"Export Month\"\n : \"Export Year\"\n }\n dateFormat={dateFormat}\n maxDate={endOfMonth(new Date())}\n setDates={setDates}\n />\n )}\n
\n\n
\n Generating Report…}\n >\n Generate Report\n \n
\n {isSuccess && (\n <>\n
\n {action === \"data-entry\" && (\n \n }\n fileName={`sac-${action}_${format(\n new Date(),\n \"yyyy-MM-dd\"\n )}.pdf`}\n style={{ marginBottom: 20 }}\n className=\"btn btn-primary btn-full\"\n >\n Download Export PDF\n \n )}\n {action === \"services\" && (\n \n }\n fileName={`sac-${action}_${format(\n new Date(),\n \"yyyy-MM-dd\"\n )}.pdf`}\n style={{ marginBottom: 20 }}\n className=\"btn btn-primary btn-full\"\n >\n Download Export PDF\n \n )}\n {/* TODO: Add location/org to the file name? */}\n \n Download Export CSV\n \n \n )}\n\n {error && (\n \n Unable to generate the CSV and PDF\n \n )}\n \n )}\n \n
\n
\n \n );\n};\n\nDataEntryExport.propTypes = {\n headingTag: PropTypes.string,\n subheadingTag: PropTypes.string,\n title: PropTypes.string,\n action: PropTypes.string.isRequired,\n};\n\nDataEntryExport.defaultProps = {\n headingTag: \"h1\",\n subheadingTag: \"h2\",\n title: \"Data Entry Export\",\n};\n\nexport default DataEntryExport;\n","import React from \"react\";\nimport Export from \"components/DataEntryExport\";\n\nconst DataEntryExport = () => ;\n\nexport default DataEntryExport;\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Footer from \"components/Footer\";\nimport logo from \"images/sac-logo.7776b610_NEW.svg\";\n\nconst FormWrapper = ({ children, className }) => {\n return (\n
\n
\n \n \n \n\n {children}\n\n
\n
\n
\n );\n};\n\nexport default FormWrapper;\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory, useLocation, Link } from \"react-router-dom\";\nimport { useMutation } from \"react-query\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport Button from \"components/Button\";\nimport Error from \"components/Error\";\nimport FormField from \"components/FormField\";\nimport { loginUser, loginUserWithOAuth } from \"actions\";\nimport { formatUiErrors, useQueryParams } from \"utils\";\nimport { useAuthDispatch, useAuthState } from \"context\";\nimport FormWrapper from \"components/FormWrapper\";\n\nconst LoginSchema = Yup.object().shape({\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n password: Yup.string()\n .min(8, \"Invalid password\")\n .required(\"Password is required\"),\n});\n\nconst Login = () => {\n const { errorMessage } = useAuthState();\n const dispatch = useAuthDispatch();\n const history = useHistory();\n const location = useLocation();\n const {\n accountConfirmationSuccess,\n alreadyConfirmed,\n orgAuthorizationSuccess,\n orgAlreadyConfirmed,\n oauthConfirmationSuccess,\n accessToken,\n client,\n expiry,\n uid,\n userId,\n } = useQueryParams();\n\n const { from } = location.state || { from: { pathname: \"/\" } };\n const [uiError, setUIError] = useState(undefined);\n const [uiMessage, setUIMessage] = useState(undefined);\n const [isLoginSuccessful, setIsLoginSuccessful] = useState(false);\n\n // Standard email/password login mutation\n const {\n mutate: loginRequest,\n isLoading,\n error,\n } = useMutation((payload) => loginUser(dispatch, payload), {\n onSuccess: () => {\n // Clear UI errors locally, don't dispatch LOGIN_FAILURE\n if (errorMessage) {\n setUIError(null);\n }\n\n setIsLoginSuccessful(true);\n },\n onError: (err) => {\n setUIError(formatUiErrors(err));\n },\n });\n\n // Summa OAuth login handler\n useEffect(() => {\n if (oauthConfirmationSuccess === \"true\") {\n const tokenPayload = { accessToken, client, uid, expiry, userId };\n try {\n loginUserWithOAuth(dispatch, tokenPayload);\n setIsLoginSuccessful(true);\n } catch (error) {\n setUIError(formatUiErrors(error));\n }\n }\n }, [\n oauthConfirmationSuccess,\n accessToken,\n client,\n uid,\n expiry,\n userId,\n dispatch,\n ]);\n\n // Handle navigation after login success\n useEffect(() => {\n if (isLoginSuccessful) {\n history.replace(from);\n }\n }, [isLoginSuccessful, history, from]);\n\n useEffect(() => {\n setUIError(errorMessage || error?.message);\n }, [error, errorMessage]);\n\n useEffect(() => {\n if (accountConfirmationSuccess === \"true\" || alreadyConfirmed === \"true\") {\n setUIMessage(\"Your email address has been confirmed.\");\n }\n }, [accountConfirmationSuccess, alreadyConfirmed]);\n\n useEffect(() => {\n if (orgAuthorizationSuccess === \"true\" || orgAlreadyConfirmed === \"true\") {\n setUIMessage(\"Your organization has been authorized.\");\n }\n }, [orgAuthorizationSuccess, orgAlreadyConfirmed]);\n\n return (\n \n

Login

\n\n {uiError && {uiError}}\n {uiMessage && (\n
\n {uiMessage}\n
\n )}\n\n \n {({ dirty, isValid }) => (\n <>\n
\n {/* Email */}\n
\n \n
\n\n {/* Password */}\n
\n \n
\n\n Logging In…}\n className=\"w-full mb-4\"\n type=\"submit\"\n >\n Log in\n \n \n\n
\n Register\n Forgot Password\n
\n \n )}\n \n
\n );\n};\n\nexport default Login;\n","import React, { useEffect } from \"react\";\nimport FormWrapper from \"components/FormWrapper\";\nimport Button from \"components/Button\";\n\nconst PageNotFound = () => {\n useEffect(() => {\n document.body.className = \"four-oh-four\";\n return () => {\n document.body.className = \"\";\n };\n });\n\n return (\n \n

404 - Page Not Found

\n

\n The page you requested could not be found. Check that you typed the\n address correctly, go back to your previous page or try navigating to\n your location from the homepage. Still can't find what you're looking\n for?{\" \"}\n \n Contact us\n \n .\n

\n
\n \n
\n
\n );\n};\n\nexport default PageNotFound;\n","import React from \"react\";\nimport { Field } from \"formik\";\nimport { ReactComponent as DataIcon } from \"images/data_icon.svg\";\n\nconst RegisterTypeSubForm = () => (\n \n);\n\nexport default RegisterTypeSubForm;\n\nconst RegisterTypeOption = ({ id, icon: Component, heading, content }) => {\n return (\n \n \n \n \n \n
{heading}
\n

{content}

\n
\n\n \n \n \n \n \n );\n};\n","import React from \"react\";\nimport * as Yup from \"yup\";\nimport { addNamespace } from \"utils\";\nimport FormField from \"components/FormField\";\n\nexport const defaultValues = {\n fullName: \"\",\n title: \"\",\n email: \"\",\n confirmEmail: \"\",\n password: \"\",\n confirmPassword: \"\",\n};\n\nexport const validationSchema = () => ({\n fullName: Yup.string().required(\"Name is required\"),\n title: Yup.string().required(\"Title is required\"),\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n confirmEmail: Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"email\")], \"Emails do not match\")\n .required(\"Confirm the email\"),\n password: Yup.string()\n .min(8, \"Invalid password\")\n .required(\"Password is required\"),\n confirmPassword: Yup.string()\n .min(8, \"Invalid password\")\n .oneOf([Yup.ref(\"password\")], \"Passwords do not match\")\n .required(\"Confirm your password\"),\n});\n\nconst AccountSubForm = ({ namespace }) => {\n const withNamespace = addNamespace(namespace);\n\n return (\n <>\n

Your Information

\n\n
\n {/* Full Name */}\n \n\n {/* Title */}\n \n
\n\n
\n {/* Email */}\n \n\n {/* Confirm Email */}\n \n
\n\n
\n {/* Password */}\n }\n tooltipWidthClass=\"w-80\"\n required\n />\n\n {/* Confirm Password */}\n \n
\n \n );\n};\n\nexport default AccountSubForm;\n\nconst PasswordTooltip = () => (\n <>\n

Passwords must be between 8 and 18 characters.

\n

\n We recommend using a combination of uppercase letters, lowercase letters,\n numbers, and special characters.\n

\n \n);\n","import React, { useState } from \"react\";\nimport { useQuery } from \"react-query\";\nimport { API_URL } from \"utils\";\nimport { camelizeKeys } from \"humps\";\nimport { useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\n\nconst CountyDropdown = ({\n fieldName,\n usState,\n disabled,\n handleSuccess,\n handleError,\n required,\n ...props\n}) => {\n const { values, setFieldError, setFieldValue, setFieldTouched } =\n useFormikContext();\n const fieldValue = values[fieldName];\n const [initLoad, setInitLoad] = useState(true);\n\n const {\n isLoading,\n error,\n data = [],\n } = useQuery(\n [\"counties\", usState],\n async () => {\n const response = await fetch(\n // Page size is 260 because the max number of counties for a given state is 254\n `${API_URL}/api/v1/us_counties?filter[us_state][eq]=${usState}&page[size]=260`,\n {\n method: \"GET\",\n }\n );\n const {\n data,\n error: apiError,\n errors: apiErrors,\n } = await response.json();\n\n if (!response.ok) {\n const resErrors = apiErrors || apiError;\n throw resErrors;\n }\n\n return camelizeKeys(data || []);\n },\n {\n enabled: !!usState,\n onSuccess: () => {\n setFieldValue(fieldName, initLoad ? fieldValue || \"\" : \"\");\n setFieldTouched(fieldName, false);\n setInitLoad(false);\n },\n onError: () => {\n setFieldError(fieldName, `Unable to load counties for ${usState}.`);\n setFieldTouched(fieldName);\n },\n }\n );\n\n return (\n \n {isLoading ? (\n \n ) : (\n <>\n \n {data.map((county, index) => (\n \n ))}\n \n )}\n \n );\n};\n\nexport default CountyDropdown;\n","import React from \"react\";\nimport FormField from \"components/FormField\";\n\nconst StateDropdown = ({ ...props }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default StateDropdown;\n","import React from \"react\";\nimport { FieldArray, useFormikContext } from \"formik\";\nimport * as Yup from \"yup\";\nimport { endOfMonth, setMonth, subYears } from \"date-fns\";\nimport { speciesMap, addNamespace } from \"utils\";\nimport FormField from \"components/FormField\";\nimport DatePickerField from \"components/DatePickerField\";\nimport SpeciesCheckbox from \"components/SpeciesCheckbox\";\nimport CountyDropdown from \"components/CountyDropdown\";\nimport StateDropdown from \"components/StateDropdown\";\nimport {\n OrganizationTypeTooltip,\n OrganizationEinTooltip,\n OrganizationAnnualIntakeTooltip,\n OrganizationAnnualBudgetTooltip,\n OrganizationBusinessNumberTooltip,\n} from \"components/Tooltips\";\n\nconst urlRegex =\n /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;\n\nexport const defaultValues = {\n name: \"\",\n country: \"United States\",\n addressLine1: \"\",\n addressLine2: \"\",\n city: \"\",\n usState: \"\",\n provinceOrTerritory: \"\",\n zipCode: \"\",\n postalCode: \"\",\n usCounty: \"\",\n organizationType: \"\",\n websiteUrl: \"\",\n incorporatedOn: \"\",\n ein: \"\",\n businessNumber: \"\",\n referred: false,\n referringOrganizationName: \"\",\n animalSpecies: Object.keys(speciesMap).reduce((species, key) => {\n species[key] = false;\n return species;\n }, {}),\n annualIntake: \"\",\n annualOperatingBudget: \"\",\n shelterSoftware: \"\",\n};\n\nexport const validationSchema = () => ({\n name: Yup.string().required(\"Name is required\"),\n country: Yup.string().required(\"Country is required\"),\n addressLine1: Yup.string().required(\"Address is required\"),\n city: Yup.string().required(\"City is required\"),\n usState: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string().required(\"State is required\"),\n }),\n provinceOrTerritory: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string().required(\"Province or territory is required\"),\n }),\n zipCode: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string()\n .matches(/^(\\d{5})(?:[-. ]?(\\d{4}))?$/, \"Invalid zip code\")\n .required(\"Zip code is required\"),\n }),\n postalCode: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string()\n .matches(/^[A-Za-z]\\d[A-Za-z]\\s?\\d[A-Za-z]\\d$/, \"Invalid postal code\")\n .required(\"Postal code is required\"),\n }),\n usCounty: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string().required(\"County is required\"),\n }),\n contactPhoneNumber: Yup.string().matches(\n /^\\(?([2-9]\\d\\d)\\)?[-. ]?(\\d{3})[-. ]?(\\d{4})$/,\n \"Invalid phone number\"\n ),\n organizationType: Yup.string().required(\"Select an organization type\"),\n websiteUrl: Yup.string().matches(urlRegex, \"Invalid URL\"),\n incorporatedOn: Yup.string().required(\"Date is required\"),\n ein: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string()\n .matches(/^\\d{9}$/, \"Invalid EIN\")\n .required(\"EIN is required\"),\n }),\n businessNumber: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string()\n .matches(/^\\d{9}$/, \"Invalid business number\")\n .required(\"Business number is required\"),\n }),\n referral: Yup.boolean(),\n referringOrganizationName: Yup.string().when(\"referral\", {\n is: true,\n then: Yup.string().required(\"Referring organization is required\"),\n }),\n annualIntake: Yup.string().required(\"Animal intake is required\"),\n annualOperatingBudget: Yup.string().required(\n \"Annual operating budget is required\"\n ),\n shelterSoftware: Yup.string().required(\"Shelter software is required\"),\n});\n\nconst OrganizationSubForm = ({ namespace }) => {\n const withNamespace = addNamespace(namespace);\n\n const {\n values: {\n organization: { usState, referral, animalSpecies, country },\n },\n } = useFormikContext();\n const lastYear = subYears(new Date(), 1);\n\n return (\n <>\n

Organization Information

\n\n
\n {/* Organization Name */}\n \n\n {/* Country */}\n \n \n \n \n \n
\n\n
\n {/* Address Line 1 */}\n \n\n {/* Address Line 2 */}\n \n
\n\n
\n {/* City */}\n \n\n {/* State | Province */}\n {country === \"United States\" ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n\n {/* Zip Code | Postac code */}\n {country === \"United States\" ? (\n \n ) : (\n \n )}\n
\n\n
\n {/* County */}\n {country === \"United States\" && (\n \n )}\n
\n\n
\n {/* Contact Phone Number */}\n \n\n {/* Extension */}\n \n
\n\n
\n {/* Org Type */}\n }\n required\n >\n \n \n \n \n \n \n \n \n\n {/* Website */}\n \n
\n\n
\n {/* Date Started */}\n \n\n {/* EIN | Business Number */}\n {country === \"United States\" ? (\n }\n required\n />\n ) : (\n }\n required\n />\n )}\n
\n\n {/* Referral */}\n
\n \n
\n\n {/* Referring Org */}\n {referral && (\n
\n \n
\n )}\n\n
\n {/* Animal Species */}\n
\n What animal species do you work with? (Select all that apply)\n
\n \n \n Object.keys(animalSpecies).map((key) => (\n \n ))\n }\n />\n
\n \n\n
\n {/* Annual Intake */}\n }\n tooltipWidthClass=\"w-80\"\n required\n />\n
\n\n
\n {/* Annual Budget */}\n }\n tooltipWidthClass=\"w-80\"\n required\n />\n
\n\n
\n {/* Software Provider */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default OrganizationSubForm;\n","import React from \"react\";\nimport { useFormikContext } from \"formik\";\nimport * as Yup from \"yup\";\nimport { addNamespace } from \"utils\";\nimport FormField from \"components/FormField\";\n\nexport const defaultValues = {\n isAuthorizer: false,\n authorizerName: \"\",\n authorizerTitle: \"\",\n authorizerEmail: \"\",\n authorizerConfirmEmail: \"\",\n authorizerPhoneNumber: \"\",\n authorizerExtension: \"\",\n};\n\nexport const validationSchema = () => ({\n isAuthorizer: Yup.boolean(),\n authorizerName: Yup.string().when(\"isAuthorizer\", {\n is: false,\n then: Yup.string().required(\"Name is required\"),\n }),\n authorizerTitle: Yup.string().when(\"isAuthorizer\", {\n is: false,\n then: Yup.string().required(\"Title is required\"),\n }),\n authorizerEmail: Yup.string().when(\"isAuthorizer\", {\n is: false,\n then: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n }),\n authorizerConfirmEmail: Yup.string().when(\"isAuthorizer\", {\n is: false,\n then: Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"authorizerEmail\")], \"Emails do not match\")\n .required(\"Confirm the email\"),\n }),\n authorizerPhoneNumber: Yup.string().when(\"isAuthorizer\", {\n is: false,\n then: Yup.string().matches(\n /^\\(?([2-9]\\d\\d)\\)?[-. ]?(\\d{3})[-. ]?(\\d{4})$/,\n \"Invalid phone number\"\n ),\n }),\n});\n\nconst AuthorizationSubForm = ({ namespace }) => {\n const withNamespace = addNamespace(namespace);\n\n const {\n values: { authorization },\n } = useFormikContext();\n\n return (\n <>\n

Authorization

\n

\n A leader (e.g. CEO, executive director, board leadership, etc.) within\n your organization must agree to partipation in our national database.\n Participation will be confirmed via an email sent to your\n organization’s authorized person.\n

\n\n
\n {/* User is Authorizer */}\n \n
\n\n {!authorization.isAuthorizer && (\n <>\n
\n {/* Authorizer Name */}\n \n\n {/* Authorizer Title */}\n \n
\n\n
\n {/* Email */}\n \n\n {/* Confirm Email */}\n \n
\n\n
\n {/* Authorizer Phone Number */}\n \n\n {/* Extension */}\n \n
\n \n )}\n \n );\n};\n\nexport default AuthorizationSubForm;\n","import React from \"react\";\nimport * as Yup from \"yup\";\nimport { addNamespace } from \"utils\";\nimport FormField from \"components/FormField\";\nimport {\n OrganizationSearchableOptInTooltip,\n OrganizationCommunicationsOptInTooltip,\n OrganizationMediaOptInTooltip,\n} from \"components/Tooltips\";\n\nexport const defaultValues = {\n communicationsOptIn: true,\n searchableOptIn: true,\n mediaOptIn: true,\n};\n\nexport const validationSchema = () => ({\n communicationsOptIn: Yup.boolean(),\n searchableOptIn: Yup.boolean(),\n mediaOptIn: Yup.boolean(),\n});\n\nconst DataSharingSubForm = ({ namespace }) => {\n const withNamespace = addNamespace(namespace);\n\n return (\n <>\n

Data Sharing Preferences

\n\n <>\n
\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n
\n \n \n );\n};\n\nexport default DataSharingSubForm;\n","import { format } from \"date-fns\";\nimport { formatPhoneNumberForApi } from \"utils\";\n\nconst getAuthorizer = ({ account, authorization }) => {\n return authorization.isAuthorizer\n ? {\n organizationAuthorizerName: account.fullName,\n organizationAuthorizerTitle: account.title,\n organizationAuthorizerEmail: account.email,\n organizationAuthorizerPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: account.phoneNumber,\n extension: account.extension,\n }),\n }\n : {\n organizationAuthorizerName: authorization.authorizerName,\n organizationAuthorizerTitle: authorization.authorizerTitle,\n organizationAuthorizerEmail: authorization.authorizerEmail,\n organizationAuthorizerPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: authorization.authorizerPhoneNumber,\n extension: authorization.extension,\n }),\n };\n};\n\nexport const constructPayload = (values) => {\n if (\n values.organization.websiteUrl &&\n !values.organization.websiteUrl.startsWith(\"http://\" || \"https://\")\n ) {\n values.organization.websiteUrl = `http://${values.organization.websiteUrl}`;\n }\n\n return {\n data: {\n type: \"registrations\",\n attributes: {\n registrationType: values.registerType,\n userFullName: values.account.fullName,\n userTitle: values.account.title,\n userEmail: values.account.email,\n userPassword: values.account.password,\n organizationName: values.organization.name,\n organizationCountry: values.organization.country,\n organizationType: values.organization.organizationType,\n organizationWebsiteUrl: values.organization.websiteUrl,\n organizationBusinessNumber: values.organization.businessNumber.replace(\n /\\D/g,\n \"\"\n ),\n organizationIncorporatedOn: format(\n values.organization.incorporatedOn,\n \"dd/MM/yyyy\"\n ),\n organizationEin: values.organization.ein.replace(/\\D/g, \"\"),\n ...(values.organization.referral\n ? {\n organizationReferringOrganizationName:\n values.organization.referringOrganizationName,\n }\n : {}),\n organizationAnimalSpecies: Object.keys(\n values.organization.animalSpecies\n ).reduce((array, key) => {\n if (!!values.organization.animalSpecies[key]) {\n array.push(key);\n }\n return array;\n }, []),\n organizationAnnualIntake: values.organization.annualIntake,\n organizationAnnualOperatingBudget:\n values.organization.annualOperatingBudget,\n organizationShelterSoftware: values.organization.shelterSoftware,\n ...getAuthorizer({\n account: values.account,\n authorization: values.authorization,\n }),\n organizationCommunicationsOptIn: values.dataSharing.communicationsOptIn,\n organizationSearchableOptIn: values.dataSharing.searchableOptIn,\n organizationMediaOptIn: values.dataSharing.mediaOptIn,\n locationAddressLine_1: values.organization.addressLine1,\n locationAddressLine_2: values.organization.addressLine2,\n locationCity: values.organization.city,\n locationUsState:\n values.organization.country === \"United States\"\n ? values.organization.usState\n : null,\n locationZipCode:\n values.organization.country === \"United States\"\n ? values.organization.zipCode\n : null,\n locationUsCountyId:\n values.organization.country === \"United States\"\n ? values.organization.usCounty\n : null,\n locationPostalCode: values.organization.postalCode.replace(/\\s/g, \"\"),\n locationProvinceOrTerritory: values.organization.provinceOrTerritory,\n locationContactPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: values.organization.contactPhoneNumber,\n extension: values.organization.extension,\n }),\n },\n },\n };\n};\n","import React, { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useMutation } from \"react-query\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { toast } from \"react-toastify\";\nimport RegisterTypeSubForm from \"./components/RegisterTypeSubForm\";\nimport AccountSubForm, * as AccountSubFormMeta from \"./components/AccountSubForm\";\nimport OrganizationSubForm, * as OrganizationSubFormMeta from \"./components/OrganizationSubForm\";\nimport AuthorizationSubForm, * as AuthorizationSubFormMeta from \"./components/AuthorizationSubForm\";\nimport DataSharingSubForm, * as DataSharingSubFormMeta from \"./components/DataSharingSubForm\";\nimport Button from \"components/Button\";\nimport PageWrapper from \"components/PageWrapper\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { constructPayload } from \"./utils\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\n\nconst Register = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const [formStep, setFormStep] = useState(1);\n\n const validationSchema = Yup.lazy(() =>\n Yup.object({\n account: Yup.object(AccountSubFormMeta.validationSchema()),\n organization: Yup.object(OrganizationSubFormMeta.validationSchema()),\n authorization: Yup.object(AuthorizationSubFormMeta.validationSchema()),\n dataSharing: Yup.object(DataSharingSubFormMeta.validationSchema()),\n })\n );\n\n const nextStep = () => setFormStep(2);\n\n const {\n mutate: submit,\n isLoading,\n isSuccess,\n } = useMutation(\n (values) => {\n const payload = constructPayload(values);\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/registrations`,\n method: \"POST\",\n body: payload,\n });\n },\n {\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n className: \"toast-center\",\n });\n },\n }\n );\n\n return (\n \n {isSuccess ? (\n \n ) : (\n \n {({ handleSubmit, values }) => (\n
\n

Create an Account

\n {formStep === 1 ? (\n \n ) : (\n <>\n
\n

\n Complete this form to create an account and register your\n organization. Registration is open to animal control\n agencies, private shelters, and rescues with adoption\n programs and cat and/or dog intake or outcome data to\n contribute. Your username and password will be used to\n securely access your organization’s account, view\n data, and input monthly data.\n

\n Already a data contributor? Log in.\n
\n\n

\n Fields marked with an asterisk (*) are required.\n

\n\n
\n \n
\n\n
\n \n
\n\n
\n \n
\n\n {values.authorization.isAuthorizer && (\n
\n \n
\n )}\n\n
\n \n
\n\n
\n Creating Account…}\n onClick={handleSubmit}\n type=\"submit\"\n >\n Save and Create Account\n \n
\n \n )}\n \n )}\n \n )}\n
\n );\n};\n\nexport default Register;\n\nconst SelectRegistrationType = ({ nextStep }) => {\n return (\n <>\n
\n
\n Already have an account? Log in.\n
\n\n
\n \n
\n
\n\n
\n \n
\n \n );\n};\n\nconst TermsOfService = () => (\n
\n

Shelter Animals Count - Agreement For Shelter Data

\n

\n Shelter Animals Count (“SAC”) maintains a database of animal\n shelter data (the “Database”), in an effort to create a national database\n for the animal welfare field (the “Project”). When a shelter (“Shelter”)\n provides information (the “Information”) for the Database, it\n will be provided and used on the following terms:\n

\n
    \n
  1. \n Shelter agrees to submit complete data into the SAC data matrix portal\n each month.\n
  2. \n
  3. \n Permission to use Information. SAC has permission to use any Information\n submitted by Shelter to SAC in the Database at no cost to SAC. This\n permission will be on a non-exclusive, worldwide, royalty-free,\n permanent basis, meaning that Shelter may give others permission to use\n the Information in addition to SAC; that the Database may be used\n anywhere and without time limit; SAC does not have to pay any royalties\n for using the Information in the Database.\n
  4. \n
  5. \n Permitted uses of Information. SAC may use the Information by compiling\n it with the data of other participating organizations and otherwise\n supporting its development of a national database for the animal welfare\n field. SAC may make the data in the database available to members of the\n public, both by making it available for review on SAC’s website and also\n by releasing the data in CSV or comparable format. SAC may include the\n Information in data analysis projects, and may disclose, publish, or\n present the results of those projects for any lawful purpose relating to\n the Project, including demonstrating the Project to potential funders.\n SAC may not, however, disclose, distribute, present, or publish any of\n the Information in a way that discloses the identity of any animal or\n any person associated with an animal.\n
  6. \n
  7. \n Shelter owns the Information. Shelter does not transfer ownership of the\n Information to SAC, and these Terms of Use do not limit or restrict in\n any way Shelter’s ownership of the Information. Shelter reserves all\n rights in and to the Information not specifically granted to the SAC in\n these Terms of Use.\n
  8. \n
  9. \n Shelter’s and SAC’s representations to each other. Shelter\n represents to SAC that the Information is accurate and that it is not\n limited in any way from sharing the Information. Shelter agrees to\n SAC’s{\" \"}\n \n TERMS OF USE\n {\" \"}\n AND{\" \"}\n \n PRIVACY POLICY\n \n .\n
  10. \n
\n
\n);\n\nconst Success = () => {\n return (\n
\n
\n \n

\n Thanks! Your account has been registered.\n

\n

You must confirm your account before you log in.

\n
\n\n \n
\n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport { useMutation } from \"react-query\";\nimport Error from \"components/Error\";\nimport FormField from \"components/FormField\";\nimport FormWrapper from \"components/FormWrapper\";\nimport Button from \"components/Button\";\nimport { API_URL } from \"utils\";\nimport * as Yup from \"yup\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\n\nconst EmailSchema = Yup.object().shape({\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n});\n\nconst ForgotPassword = () => {\n const [uiError, setUiError] = useState(null);\n\n const { mutate: handleSubmit, isLoading, data: response } = useMutation(\n async ({ email }) => {\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n email: email,\n redirect_url: `${process.env.REACT_APP_RESET_PASSWORD_REDIRECT_URL}/reset-password`,\n }),\n };\n const response = await fetch(`${API_URL}/auth/password`, requestOptions);\n return await response.json();\n }\n );\n\n useEffect(() => {\n const errors = response?.errors || response?.error;\n setUiError(Array.isArray(errors) ? errors.join(\", \") : errors);\n }, [response]);\n\n return (\n \n

Forgot Password

\n {response?.message ? (\n <>\n
\n \n

{response?.message}

\n\n \n
\n \n ) : (\n <>\n {uiError && {uiError}}\n \n {({ isValid, dirty }) => (\n
\n
\n \n
\n\n Loading…}\n className=\"w-full mb-4\"\n type=\"submit\"\n >\n Send Reset Password Email\n \n \n )}\n \n \n )}\n
\n );\n};\n\nexport default ForgotPassword;\n","import React, { useState, useEffect } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport { API_URL, useQueryParams } from \"utils\";\nimport { useMutation } from \"react-query\";\nimport Error from \"components/Error\";\nimport FormField from \"components/FormField\";\nimport FormWrapper from \"components/FormWrapper\";\nimport Button from \"components/Button\";\nimport * as Yup from \"yup\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheckCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { decamelizeKeys } from \"humps\";\n\nconst PasswordSchema = Yup.object().shape({\n password: Yup.string()\n .min(8, \"Invalid password\")\n .required(\"Password is required\"),\n passwordConfirmation: Yup.string()\n .min(8, \"Invalid password\")\n .oneOf([Yup.ref(\"password\")], \"Passwords do not match\")\n .required(\"Confirm your password\"),\n});\n\nconst ResetPassword = () => {\n const { accessToken, client, expiry, uid } = useQueryParams();\n const [uiError, setUiError] = useState(null);\n\n const { mutate: handleSubmit, isLoading, data } = useMutation(\n async (values) => {\n const requestOptions = {\n method: \"PUT\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: JSON.stringify(\n decamelizeKeys({\n ...values,\n email: uid,\n })\n ),\n };\n const response = await fetch(`${API_URL}/auth/password`, requestOptions);\n return await response.json();\n }\n );\n\n useEffect(() => {\n const errors = data?.errors || data?.error;\n setUiError(Array.isArray(errors) ? errors.join(\", \") : errors);\n }, [data]);\n\n return (\n \n

Reset Password

\n {data?.message ? (\n <>\n
\n \n

{data?.message}

\n \n
\n \n ) : (\n <>\n {uiError && {uiError}}\n \n {({ dirty, isValid }) => (\n
\n
\n }\n tooltipWidthClass=\"w-80\"\n required\n />\n
\n
\n \n
\n\n Loading…}\n className=\"w-full mb-4\"\n type=\"submit\"\n >\n Reset Password\n \n \n )}\n \n \n )}\n
\n );\n};\n\nexport default ResetPassword;\n\nconst PasswordTooltip = () => (\n <>\n

Passwords must be between 8 and 18 characters.

\n

\n We recommend using a combination of uppercase letters, lowercase letters,\n numbers, and special characters.\n

\n \n);\n","import React, { useEffect, useState } from \"react\";\nimport { Prompt, useHistory } from \"react-router-dom\";\nimport AlertModal from \"components/AlertModal\";\nimport Button from \"components/Button\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\n\nconst RouteLeavingGuard = ({ when, shouldBlockNavigation }) => {\n const [modalVisible, setModalVisible] = useState(false);\n const [lastLocation, setLastLocation] = useState(null);\n const [confirmedNavigation, setConfirmedNavigation] = useState(false);\n const history = useHistory();\n\n const closeModal = () => {\n setModalVisible(false);\n };\n\n const handleBlockedNavigation = (nextLocation) => {\n if (!confirmedNavigation && shouldBlockNavigation(nextLocation)) {\n setModalVisible(true);\n setLastLocation(nextLocation);\n return false;\n }\n return true;\n };\n\n const handleConfirmNavigationClick = () => {\n setModalVisible(false);\n setConfirmedNavigation(true);\n };\n\n useEffect(() => {\n if (confirmedNavigation && lastLocation) {\n // Navigate to the previous blocked location with your navigate function\n history.push(lastLocation.pathname);\n setConfirmedNavigation(false);\n }\n }, [confirmedNavigation, lastLocation, history]);\n\n return (\n <>\n \n\n \n
\n

\n \n Warning\n

\n\n

\n You have unsaved changes. If you proceed, these changes will be\n lost.\n

\n\n
\n \n \n
\n
\n \n \n );\n};\nexport default RouteLeavingGuard;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport * as Yup from \"yup\";\nimport { FORM_MODES } from \"utils\";\nimport { useMutation } from \"react-query\";\nimport { apiFetch } from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Button from \"components/Button\";\n\nconst UserProfileForm = ({\n user,\n formMode,\n cancelRoute,\n onUpdateSuccess,\n onUpdateError,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { isAdmin } = useUserState();\n const { orgId } = useParams();\n const [isSuccess, setIsSuccess] = useState(false);\n const [showConfirmEmail, setShowConfirmEmail] = useState(\n formMode === FORM_MODES.ADD\n );\n const [status, setStatus] = useState(!!user.attributes.confirmedAt);\n const [role, setRole] = useState(user.attributes.systemAdmin);\n\n const initialValues = {\n fullName: user.attributes.fullName || \"\",\n title: user.attributes.title || \"\",\n email: user.attributes.email || \"\",\n confirmEmail: \"\",\n confirmedAt: !user.attributes.confirmedAt || false,\n systemAdmin: user.attributes.systemAdmin || false,\n isActive: !user.attributes.archivedAt || false,\n };\n\n const UserProfileSchema = Yup.object().shape({\n fullName: Yup.string().required(\"Name is required\"),\n title: Yup.string().required(\"Title is required\"),\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n confirmEmail: Yup.lazy(() =>\n showConfirmEmail\n ? Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"email\")], \"Emails do not match\")\n .required(\"Confirm the email\")\n : Yup.string()\n ),\n });\n\n const { mutate: addMember, isLoading: isLoadingAdd } = useMutation(\n ({ fullName, title, email }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/user_membership_invites`,\n method: \"POST\",\n body: {\n data: {\n type: \"user_membership_invites\",\n attributes: {\n resourceId: orgId,\n resourceType: \"organization\",\n name: fullName,\n title,\n email,\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n onUpdateError(e);\n },\n }\n );\n\n const { mutate: updateUserInformation, isLoading } = useMutation(\n ({ fullName, title, email, isActive }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users/${user.id}`,\n method: \"PATCH\",\n body: {\n data: {\n id: user.id,\n type: \"users\",\n attributes: {\n fullName,\n title,\n confirmedAt: status === \"true\" ? new Date() : null,\n systemAdmin: role,\n archivedAt: !isActive ? new Date() : null,\n ...(showConfirmEmail ? { unconfirmedEmail: email } : {}),\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n onUpdateError(e);\n },\n }\n );\n\n const { mutate: resetUserPassword } = useMutation(() =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users/${user.id}/reset/`,\n method: \"POST\",\n body: {\n data: {\n id: user.id,\n },\n },\n })\n );\n\n const SelectOptions = ({ props, children }) => {\n const propsClone = { ...props };\n delete propsClone?.className;\n delete propsClone?.value;\n return (\n \n {children}\n \n );\n };\n\n const StatusSelect = (props) => (\n \n \n \n \n );\n\n const RoleSelect = (props) => (\n \n \n \n \n );\n\n return (\n \n {({ handleSubmit }) => (\n
\n
\n {/* Full Name */}\n \n\n {/* Title */}\n \n
\n\n
\n {/* Email */}\n \n\n {/* Confirm Email */}\n {showConfirmEmail && (\n \n )}\n
\n\n {formMode === FORM_MODES.EDIT && formMode !== FORM_MODES.VIEW && (\n
\n {/** User Confirmation Status */}\n setStatus(e.target.value)}\n />\n\n {/** User role */}\n {isAdmin && (\n setRole(e.target.value)}\n />\n )}\n\n {/** Active/Deactivate User */}\n
\n \n
\n
\n )}\n\n {formMode !== FORM_MODES.VIEW && (\n
\n \n\n Saving…}\n onClick={handleSubmit}\n >\n {formMode === FORM_MODES.ADD ? \"Invite\" : \"Update\"}\n \n\n {formMode === FORM_MODES.EDIT && (\n Saving…}\n onClick={resetUserPassword}\n >\n Reset\n \n )}\n
\n )}\n\n \n \n )}\n \n );\n};\n\nUserProfileForm.propTypes = {\n user: PropTypes.object.isRequired,\n formMode: PropTypes.string,\n cancelRoute: PropTypes.string.isRequired,\n onUpdateSuccess: PropTypes.func.isRequired,\n onUpdateError: PropTypes.func.isRequired,\n onResetSuccess: PropTypes.string,\n};\n\nUserProfileForm.defaultProps = {\n formMode: FORM_MODES.VIEW,\n};\n\nexport default UserProfileForm;\nconst FormContext = ({\n formMode,\n user,\n isSuccess,\n setIsSuccess,\n setShowConfirmEmail,\n}) => {\n const {\n resetForm,\n dirty,\n values: { email },\n } = useFormikContext();\n const [emailClone, setEmailClone] = useState(user.attributes.email);\n\n useEffect(() => {\n setEmailClone(user.attributes.email);\n }, [user]);\n\n useEffect(() => {\n resetForm({\n values: {\n fullName: user.attributes.fullName || \"\",\n title: user.attributes.title || \"\",\n email: user.attributes.email || \"\",\n confirmEmail: \"\",\n confirmedAt: !user.attributes.confirmedAt || false,\n systemAdmin: user.attributes.systemAdmin || false,\n isActive: !user.attributes.archivedAt || false,\n },\n });\n }, [formMode, user, resetForm]);\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n useEffect(() => {\n setShowConfirmEmail(email !== emailClone || formMode === FORM_MODES.ADD);\n }, [emailClone, email, setShowConfirmEmail]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useMutation } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport UserProfileForm from \"components/UserProfileForm\";\nimport Button from \"components/Button\";\nimport { useUserDispatch, useUserState, useAuthState } from \"context\";\nimport { FORM_MODES, API_URL, formatUiErrors } from \"utils\";\nimport { USER_UPDATE } from \"actions\";\n\nconst Profile = ({ formMode = FORM_MODES.VIEW }) => {\n const { token } = useAuthState();\n const user = useUserState();\n const userDispatch = useUserDispatch();\n const history = useHistory();\n\n const { mutate: resetPassword, isLoading } = useMutation(\n async () => {\n const { accessToken, client, expiry, uid } = token;\n const requestOptions = {\n method: \"POST\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: JSON.stringify({\n email: user.attributes.email,\n redirect_url: `${process.env.REACT_APP_RESET_PASSWORD_REDIRECT_URL}/reset-password`,\n }),\n };\n const response = await fetch(`${API_URL}/auth/password`, requestOptions);\n const { message, errors, error } = await response.json();\n\n if (!response.ok) throw errors || error;\n\n return message;\n },\n {\n onSuccess: (message) => {\n toast.success(message, {\n autoClose: 3000,\n });\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n }\n );\n\n const handleUpdateSuccess = (response) => {\n userDispatch({\n type: USER_UPDATE,\n payload: {\n attributes: response.data.attributes,\n },\n });\n history.push(\"/profile\");\n\n toast.success(\n
\n {!!response.data.attributes.unconfirmedEmail ? (\n
\n Please check your email account for `\n {response.data.attributes.unconfirmedEmail}` to confirm your new\n email address. Your login information will not change until you\n confirm.\n
\n ) : (\n \"Saved successfully\"\n )}\n
,\n {\n autoClose: !!response.data.attributes.unconfirmedEmail ? 5000 : 3000,\n }\n );\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n return (\n
\n

User Profile

\n\n {formMode === FORM_MODES.VIEW && (\n
\n \n\n Loading…}\n >\n Reset Password\n \n
\n )}\n\n \n
\n );\n};\n\nexport default Profile;\n","import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { range } from \"lodash\";\n\nconst LEFT_PAGE = \"LEFT\";\nconst RIGHT_PAGE = \"RIGHT\";\n\nconst Pagination = ({\n totalPages,\n currentPage,\n pageNeighbors,\n onPageChanged,\n}) => {\n const [pages, setPages] = useState([]);\n\n /**\n * pageNeighbors: is the number of additional page numbers to show on each side of the current page.\n * The value can be 0, 1, or 2 and will default to 0 (set in the defaultValues) if not specified.\n * currentPage: the currentPage\n * totalPages: the total number of pages based on the API response\n */\n const getPages = ({ pageNeighbors, currentPage, totalPages }) => {\n /**\n * totalNumbers: the total page numbers to show, i.e. if pageNeighbors = 2, totalNumbers is 7\n * totalBlocks: totalNumbers + 2 to cover for the left(<) and right(>) controls\n */\n const totalNumbers = pageNeighbors * 2 + 3;\n const totalBlocks = totalNumbers + 2;\n\n if (totalPages > totalBlocks) {\n const startPage = Math.max(2, currentPage - pageNeighbors);\n const endPage = Math.min(totalPages - 1, currentPage + pageNeighbors);\n // We need the + 1 on the second range parameter (`end`) because the lodash range method\n // returns a range *UP TO, BUT NOT INCLUDING* the `end` value\n let pages = range(startPage, endPage + 1);\n\n /**\n * hasLeftSpill: has hidden pages to the left\n * hasRightSpill: has hidden pages to the right\n * spillOffset: number of hidden pages either to the left or to the right\n */\n const hasLeftSpill = startPage > 2;\n const hasRightSpill = totalPages - endPage > 1;\n const spillOffset = totalNumbers - (pages.length + 1);\n\n if (hasLeftSpill && !hasRightSpill) {\n // handle: (1) < {5 6} [7] {8 9} (10)\n // extra pages is the range starting from the max number of pages\n // we want to show BEFORE the startPage, through start page - 1\n // i.e. startPage = 8, spillOffset = 4, extraPages = [4, 5, 6, 7]\n const extraPages = range(startPage - spillOffset, startPage);\n pages = [LEFT_PAGE, ...extraPages, ...pages];\n } else if (!hasLeftSpill && hasRightSpill) {\n // handle: (1) {2 3} [4] {5 6} > (10)\n // extra pages is the range starting from the number AFTER the end range, through the spill offset\n // i.e. endPage = 3, spillOffset = 4, extraPages = [4, 5, 6, 7]\n const extraPages = range(endPage + 1, endPage + spillOffset + 1);\n pages = [...pages, ...extraPages, RIGHT_PAGE];\n } else if (hasLeftSpill && hasRightSpill) {\n // handle: (1) < {4 5} [6] {7 8} > (10)\n pages = [LEFT_PAGE, ...pages, RIGHT_PAGE];\n }\n\n return [1, ...pages, totalPages];\n }\n\n return range(1, totalPages + 1);\n };\n\n useEffect(() => {\n setPages(getPages({ pageNeighbors, currentPage, totalPages }));\n }, [currentPage, pageNeighbors, totalPages]);\n\n const handlePageClick = (page) => {\n switch (page) {\n case RIGHT_PAGE:\n onPageChanged(currentPage + 1);\n break;\n case LEFT_PAGE:\n onPageChanged(currentPage - 1);\n break;\n default:\n onPageChanged(page);\n }\n };\n\n return !!pages.length ? (\n \n ) : null;\n};\n\nPagination.propTypes = {\n totalPages: PropTypes.number.isRequired,\n currentPage: PropTypes.number.isRequired,\n pageNeighbors: PropTypes.oneOf([0, 1, 2]),\n onPageChanged: PropTypes.func,\n};\nPagination.defaultProps = {\n pageNeighbors: 2,\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { Menu, MenuButton } from \"@szhsin/react-menu\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faEllipsisV } from \"@fortawesome/free-solid-svg-icons\";\n\nconst ActionsMenu = ({ children }) => {\n return (\n \n Open menu\n \n \n }\n className=\"actions-menu\"\n align=\"end\"\n >\n {children}\n \n );\n};\n\nexport default ActionsMenu;\n","import React, { useState, useEffect } from \"react\";\nimport { useQuery, useMutation, useQueryClient } from \"react-query\";\nimport { Link } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport Table from \"components/Table\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport Pagination from \"components/Pagination\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport {\n apiFetch,\n formatEin,\n formatBusinessNumber,\n formatDateTime,\n getTotalPages,\n titleCase,\n formatUiErrors,\n getOrganizations,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { MenuItem, FocusableItem } from \"@szhsin/react-menu\";\nimport { get, uniq } from \"lodash\";\nimport { toast } from \"react-toastify\";\n\nconst Organizations = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [search, setSearch] = useState(\"\");\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"organizations\", { page, search }],\n () => getOrganizations({ token, dispatch, page, search }),\n {\n keepPreviousData: true,\n }\n );\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"organizations\", { page: page + 1, search }],\n () => getOrganizations({ token, dispatch, page: page + 1, search })\n );\n }\n }, [response, page, search, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.createdAt\",\n Header: \"Date Created\",\n Cell: ({ cell }) => formatDateTime(cell.value),\n },\n {\n accessor: \"attributes.locationsCount\",\n Header: \"Number of Locations\",\n },\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n {\n accessor: \"attributes.businessNumber\",\n Header: \"Business Number\",\n Cell: ({ cell }) => formatBusinessNumber(cell.value),\n },\n {\n accessor: \"attributes.locationsUsStates\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.locationsProvinces\",\n Header: \"Province/Territory\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n Cell: ({ cell }) => titleCase(cell.value) || \"\",\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original }, cell }) => (\n \n ),\n },\n ];\n\n const deleteOrg = (orgId) => {\n // TODO: Delete\n };\n\n const { mutate: resendAuthorizationEmail } = useMutation(\n (orgId) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/resend_authorization_emails\",\n body: {\n data: {\n type: \"resend_authorization_emails\",\n attributes: {\n organizationId: orgId,\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toast.success(\"Resent authorization email successfully\", {\n autoClose: 3000,\n });\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n }\n );\n\n const handleSubmit = (values) => {\n if (values.search !== search) {\n setSearch(values.search);\n }\n };\n\n return (\n <>\n

Organizations

\n\n
\n \n {({ setFieldValue }) => (\n
\n
\n \n
\n\n
\n \n {\n setFieldValue(\"search\", \"\");\n setSearch(\"\");\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n
\n
\n )}\n
\n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nexport default Organizations;\n\nconst Menu = ({ id, organization, deleteOrg, resendAuthorizationEmail }) => {\n return (\n \n {/* View */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n {/* Edit */}\n \n {({ ref }) => (\n \n Edit Details\n \n )}\n \n {/* Delete */}\n deleteOrg(id)}>Delete Organization\n {/* Resend authorization */}\n {organization.attributes.status !== \"confirmed\" && (\n resendAuthorizationEmail(id)}>\n Resend Authorization Email\n \n )}\n {/* Export */}\n \n {({ ref }) => (\n \n Export Data\n \n )}\n \n \n );\n};\n","import React from \"react\";\nimport { NavLink } from \"react-router-dom\";\nimport { isNil } from \"lodash\";\n\nconst Tabs = ({ tabs, className }) => {\n return (\n
\n {tabs.map((tab, index) => (\n \n {tab.label}\n \n ))}\n
\n );\n};\n\nexport default Tabs;\n","import React, { useEffect, useState } from \"react\";\nimport { endOfMonth, setMonth, subYears, format } from \"date-fns\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form, FieldArray, useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport * as Yup from \"yup\";\nimport { useMutation, useQuery } from \"react-query\";\nimport {\n apiFetch,\n formatEin,\n formatBusinessNumber,\n speciesMap,\n FORM_MODES,\n formatPhoneNumberForFormFields,\n formatPhoneNumberForApi,\n formatDateObject,\n usePermissions,\n ROUTE_GUARDS,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Button from \"components/Button\";\nimport DatePickerField from \"components/DatePickerField\";\nimport SpeciesCheckbox from \"components/SpeciesCheckbox\";\nimport {\n OrganizationTypeTooltip,\n OrganizationEinTooltip,\n OrganizationAnnualBudgetTooltip,\n OrganizationStatusTooltip,\n OrganizationBusinessNumberTooltip,\n} from \"components/Tooltips\";\n\nconst OrganizationForm = ({\n organization,\n formMode,\n onUpdateSuccess,\n onUpdateError,\n orgId,\n}) => {\n const { isAdmin, isOrgAdmin } = useUserState();\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const [isSuccess, setIsSuccess] = useState(false);\n const [showConfirmEmail, setShowConfirmEmail] = useState(false);\n const [annualTotal, setAnnualTotal] = useState(0);\n const lastYear = subYears(new Date(), 1);\n const initialValues = getInitialValues({ organization, formMode });\n const [initialIodApiOption] = useState(initialValues.iodApiOption);\n const permissions = usePermissions();\n const isOrgMember = permissions[ROUTE_GUARDS.CAN_VIEW_ORG]();\n\n const OrganizationSchema = Yup.object().shape({\n name: Yup.string().required(\"Name is required\"),\n country: Yup.string().required(\"Country is required\"),\n organizationType: Yup.string().required(\"Select an organization type\"),\n status: Yup.string().required(\"Select an organization Status\"),\n websiteUrl: Yup.string().url(\n \"Invalid URL: Include https:// prefix to your URL\"\n ),\n incorporatedOn: Yup.string().required(\"Date is required\"),\n ein: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string()\n .matches(/^\\d{9}$/, \"Invalid EIN\")\n .required(\"EIN is required\"),\n }),\n businessNumber: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string()\n .matches(/^\\d{9}$/, \"Invalid business number\")\n .required(\"Business number is required\"),\n }),\n annualIntake: Yup.string().required(\"Animal intake is required\"),\n annualOperatingBudget: Yup.string().required(\n \"Annual operating budget is required\"\n ),\n authorizerName: Yup.string().required(\"Authorizer name is required\"),\n authorizerTitle: Yup.string().required(\"Authorizer title is required\"),\n authorizerEmail: Yup.string()\n .email(\"Invalid email\")\n .required(\"Authorizer email is required\"),\n authorizerConfirmEmail: Yup.lazy(() =>\n showConfirmEmail\n ? Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"authorizerEmail\")], \"Emails do not match\")\n .required(\"Confirm the authorizer email\")\n : Yup.string()\n ),\n authorizerPhoneNumber: Yup.string()\n .matches(\n /^\\(?([2-9]\\d\\d)\\)?[-. ]?(\\d{3})[-. ]?(\\d{4})$/,\n \"Invalid phone number\"\n )\n .required(\"Phone number is required\"),\n iodApiOption: Yup.string(),\n externalId: Yup.string().when(\"iodApiOption\", {\n is: \"yes\",\n then: Yup.string().required(\"Software Unique Identifier is required\"),\n }),\n shelterSoftware: Yup.string().required(\"Shelter software is required\"),\n aapId: Yup.string(),\n notes: Yup.string(),\n });\n\n const { mutate: updateOrganizationDetails, isLoading } = useMutation(\n ({\n name,\n country,\n organizationType,\n websiteUrl,\n incorporatedOn,\n ein,\n businessNumber,\n animalSpecies,\n annualIntake,\n annualOperatingBudget,\n shelterSoftware,\n externalId,\n iodApiOption,\n iodApiActive,\n authorizerName,\n authorizerTitle,\n status,\n authorizerEmail,\n authorizerPhoneNumber,\n authorizerExtension,\n aapId,\n notes,\n }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${organization.id}`,\n method: \"PATCH\",\n body: {\n data: {\n id: organization.id,\n type: \"organizations\",\n attributes: {\n name,\n country,\n organizationType,\n status,\n websiteUrl,\n incorporatedOn: format(incorporatedOn, \"dd/MM/yyyy\"),\n ...(isAdmin ? { ein: ein.replace(/\\D/g, \"\") } : {}),\n ...(isAdmin\n ? { businessNumber: businessNumber.replace(/\\D/g, \"\") }\n : {}),\n animalSpecies: Object.keys(animalSpecies).reduce((array, key) => {\n if (!!animalSpecies[key]) {\n array.push(key);\n }\n return array;\n }, []),\n annualIntake,\n annualOperatingBudget,\n externalId: externalId.trim(),\n iodApiOption,\n iodApiActive,\n shelterSoftware,\n ...(isOrgAdmin\n ? {\n authorizerName,\n authorizerTitle,\n ...(showConfirmEmail ? { authorizerEmail } : {}),\n authorizerPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: authorizerPhoneNumber,\n extension: authorizerExtension,\n }),\n }\n : {}),\n ...(initialIodApiOption !== iodApiOption\n ? { iodApiOptionUpdated: new Date() }\n : {}),\n ...(isAdmin ? { aapId } : {}),\n ...(isAdmin ? { notes } : {}),\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n onUpdateError(e);\n },\n }\n );\n\n useQuery(\n [\"organizationAnnualIntakeTotal\", orgId],\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/annual_intake_totals?filter[organization_id][eq]=${orgId}`,\n }),\n {\n onSuccess: ({ data }) => {\n data > 0 ? setAnnualTotal(data) : setAnnualTotal(0);\n },\n }\n );\n\n return (\n \n {({ handleSubmit, values, setFieldValue }) => (\n
\n
\n {/* Name */}\n \n
\n
\n \n \n \n \n \n
\n
\n {/* Status */}\n {formMode === FORM_MODES.VIEW && isOrgMember && (\n \n )}\n
\n
\n {isOrgAdmin && formMode === FORM_MODES.EDIT && (\n }\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n >\n \n {formMode === FORM_MODES.VIEW && }\n \n \n \n \n \n )}\n
\n\n
\n {/* Org Type */}\n }\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n >\n \n {formMode === FORM_MODES.VIEW && }\n \n \n \n \n \n \n \n
\n
\n {/* Website */}\n \n
\n
\n {/* Date Started */}\n {formMode === FORM_MODES.VIEW &&\n !organization.attributes.incorporatedOn ? (\n \n ) : (\n \n )}\n
\n
\n {/* EIN */}\n\n {(isOrgAdmin || formMode === FORM_MODES.VIEW) &&\n initialValues.country === \"United States\" && (\n }\n required\n />\n )}\n
\n
\n {/* Business Number */}\n {(isOrgAdmin || formMode === FORM_MODES.VIEW) &&\n initialValues.country === \"Canada\" && (\n }\n required\n />\n )}\n
\n
\n {/* Animal Species */}\n \n What animal species do you work with?\n {formMode === FORM_MODES.EDIT && \" (Select all that apply)\"}\n
\n \n \n Object.keys(values.animalSpecies).map((key) => (\n \n ))\n }\n />\n \n \n {isOrgMember && (\n <>\n
\n {/* Annual Intake */}\n
\n \n Click the auto calculate button to fill in your total\n intake count from the previous year. Edit the value if\n your organization didn't enter a full year of data last\n year. Please make your best approximation of annual\n intake of cats and dogs\n
\n }\n tooltipWidthClass=\"w-80\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n />\n {formMode === FORM_MODES.EDIT && (\n {\n setFieldValue(\"annualIntake\", annualTotal);\n }}\n >\n Auto Calculate\n \n )}\n
\n\n {/* Annual Budget */}\n }\n tooltipWidthClass=\"w-80\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n />\n \n\n
\n {/* Software Provider */}\n \n \n {formMode === FORM_MODES.VIEW && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {/* AAP ID */}\n {isAdmin && (\n \n )}\n
\n\n {(isOrgAdmin || formMode === FORM_MODES.VIEW) && (\n
\n \n \n {formMode === FORM_MODES.VIEW && (\n \n )}\n \n \n \n
\n )}\n\n
\n \n
\n\n {(isAdmin || formMode === FORM_MODES.VIEW) && (\n
\n \n \n {formMode === FORM_MODES.VIEW && (\n \n )}\n \n \n \n
\n )}\n\n
\n {/* Notes */}\n {isAdmin && (\n \n )}\n
\n\n {(isOrgAdmin || formMode === FORM_MODES.VIEW) && (\n <>\n

Authorizer Information

\n
\n {/* Authorizer Name */}\n \n\n {/* Authorizer Title */}\n \n
\n\n
\n {/* Email */}\n \n\n {/* Confirm Email */}\n {formMode === FORM_MODES.EDIT && showConfirmEmail && (\n \n )}\n
\n\n
\n {/* Authorizer Phone Number */}\n \n\n {/* Extension */}\n \n
\n \n )}\n \n )}\n\n {formMode !== FORM_MODES.VIEW && (\n
\n \n Cancel\n \n\n Saving…}\n onClick={handleSubmit}\n >\n Update\n \n
\n )}\n\n \n \n )}\n \n );\n};\n\nOrganizationForm.propTypes = {\n organization: PropTypes.object.isRequired,\n formMode: PropTypes.string,\n onUpdateSuccess: PropTypes.func.isRequired,\n onUpdateError: PropTypes.func.isRequired,\n orgId: PropTypes.string.isRequired,\n};\n\nOrganizationForm.defaultProps = {\n formMode: FORM_MODES.VIEW,\n};\n\nexport default OrganizationForm;\n\nconst FormContext = ({\n formMode,\n organization,\n isSuccess,\n setIsSuccess,\n setShowConfirmEmail,\n}) => {\n const {\n resetForm,\n dirty,\n values: { authorizerEmail },\n } = useFormikContext();\n const [emailClone, setEmailClone] = useState(\n organization.attributes.authorizerEmail\n );\n\n useEffect(() => {\n setEmailClone(organization.attributes.authorizerEmail);\n }, [organization]);\n\n useEffect(() => {\n resetForm({\n values: getInitialValues({ organization, formMode }),\n });\n }, [formMode, organization, resetForm]);\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n useEffect(() => {\n setShowConfirmEmail(authorizerEmail !== emailClone);\n }, [emailClone, authorizerEmail, setShowConfirmEmail]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n\nconst getInitialValues = ({ organization, formMode }) => {\n const isViewMode = formMode === FORM_MODES.VIEW;\n const authorizerPhoneNumber = formatPhoneNumberForFormFields(\n organization.attributes.authorizerPhoneNumber\n );\n return {\n name: organization.attributes.name || (isViewMode ? \"--\" : \"\"),\n status: organization.attributes.status || (isViewMode ? \"--\" : \"\"),\n country: organization.attributes.country || (isViewMode ? \"--\" : \"\"),\n organizationType:\n organization.attributes.organizationType || (isViewMode ? \"--\" : \"\"),\n websiteUrl: organization.attributes.websiteUrl || (isViewMode ? \"--\" : \"\"),\n incorporatedOn:\n formatDateObject(organization.attributes.incorporatedOn) ||\n (isViewMode ? \"--\" : \"\"),\n businessNumber: getFormattedBusinessNumber({\n businessNumber: organization.attributes.businessNumber,\n formMode,\n }),\n ein: getFormattedEin({ ein: organization.attributes.ein, formMode }),\n animalSpecies: Object.keys(speciesMap).reduce((species, key) => {\n species[key] = organization.attributes.animalSpecies.indexOf(key) > -1;\n return species;\n }, {}),\n annualIntake:\n organization.attributes.annualIntake || (isViewMode ? \"--\" : \"\"),\n annualOperatingBudget:\n organization.attributes.annualOperatingBudget || (isViewMode ? \"--\" : \"\"),\n externalId: organization.attributes.externalId || (isViewMode ? \"--\" : \"\"),\n iodApiActive:\n organization.attributes.iodApiActive || (isViewMode ? \"--\" : \"\"),\n iodApiOption:\n organization.attributes.iodApiOption || (isViewMode ? \"--\" : \"\"),\n shelterSoftware:\n organization.attributes.shelterSoftware || (isViewMode ? \"--\" : \"\"),\n authorizerName:\n organization.attributes.authorizerName || (isViewMode ? \"--\" : \"\"),\n authorizerTitle:\n organization.attributes.authorizerTitle || (isViewMode ? \"--\" : \"\"),\n authorizerEmail:\n organization.attributes.authorizerEmail || (isViewMode ? \"--\" : \"\"),\n authorizerConfirmEmail: \"\",\n authorizerPhoneNumber:\n authorizerPhoneNumber.phoneNumber || (isViewMode ? \"--\" : \"\"),\n authorizerExtension:\n authorizerPhoneNumber.extension || (isViewMode ? \"--\" : \"\"),\n aapId: organization.attributes.aapId || (isViewMode ? \"--\" : \"\"),\n notes: organization.attributes.notes || (isViewMode ? \"--\" : \"\"),\n };\n};\n\nconst getFormattedEin = ({ ein, formMode }) => {\n if (formMode === FORM_MODES.VIEW) {\n return ein ? formatEin(ein) : \"--\";\n }\n return formatEin(ein || \"\");\n};\n\nconst getFormattedBusinessNumber = ({ businessNumber, formMode }) => {\n if (formMode === FORM_MODES.VIEW) {\n return businessNumber ? formatBusinessNumber(businessNumber) : \"--\";\n }\n return formatBusinessNumber(businessNumber || \"\");\n};\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQuery } from \"react-query\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Table from \"components/Table\";\n\nconst OrganizationManagers = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId } = useParams();\n\n const {\n isLoading,\n error,\n data: response,\n } = useQuery([\"OrganizationManagers\", orgId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users?&filter[organization_managers][eq]=${orgId}`,\n })\n );\n\n if (isLoading) {\n return (\n Loading Organization managers…}\n />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n const columns = [\n {\n accessor: \"attributes.fullName\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.email\",\n Header: \"Email\",\n },\n ];\n\n return (\n <>\n

Organization Managers

\n \n \n );\n};\n\nexport default OrganizationManagers;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Link } from \"react-router-dom\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faAngleDoubleLeft } from \"@fortawesome/free-solid-svg-icons\";\n\nconst BackLink = ({ link, text }) => (\n \n \n {text}\n \n);\n\nBackLink.propTypes = {\n link: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n};\n\nexport default BackLink;\n","import React from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport {\n apiFetch,\n formatUiErrors,\n FORM_MODES,\n usePermissions,\n ROUTE_GUARDS,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Button from \"components/Button\";\nimport OrganizationForm from \"components/OrganizationForm\";\nimport OrganizationManagers from \"./components/OrganizationManagers\";\nimport BackLink from \"components/BackLink\";\n\nconst OrganizationDetails = ({ formMode = FORM_MODES.VIEW }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { isAdmin, isOrgAdmin } = useUserState();\n const { orgId } = useParams();\n const queryClient = useQueryClient();\n const history = useHistory();\n const permissions = usePermissions();\n\n const {\n isLoading,\n error,\n data: response,\n } = useQuery([\"organization\", orgId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${orgId}`,\n })\n );\n\n const isOrgMember = permissions[ROUTE_GUARDS.CAN_VIEW_ORG]();\n\n const communicationOptIn = response?.data.attributes.communicationsOptIn;\n\n const { mutate: resendAuthorizationEmail, isLoading: isResending } =\n useMutation(\n () =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/resend_authorization_emails\",\n body: {\n data: {\n type: \"resend_authorization_emails\",\n attributes: {\n organizationId: orgId,\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toast.success(\"Resent authorization email successfully\", {\n autoClose: 3000,\n });\n },\n onError: (error) => {\n handleUpdateError(error);\n },\n }\n );\n\n const handleUpdateSuccess = (data) => {\n history.push(`/organizations/${orgId}`);\n window.location.reload();\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n return queryClient.setQueryData([\"organization\", orgId], data);\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n if (isLoading) {\n return (\n Loading organization…} />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n
\n {isAdmin && (\n \n )}\n

{formMode === FORM_MODES.EDIT && \"Editing \"}Details

\n\n {isOrgAdmin && formMode === FORM_MODES.VIEW && isOrgMember && (\n
\n \n\n {response.data.attributes.status === \"registered\" && (\n Resending authorization email…}\n >\n Resend Authorization Email\n \n )}\n
\n )}\n
\n\n {!isOrgMember && communicationOptIn && (\n
\n \n
\n )}\n\n \n \n );\n};\n\nexport default OrganizationDetails;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { faExclamationTriangle } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { formatUiErrors } from \"utils\";\nimport Button from \"components/Button\";\n\nconst ConfirmationModal = ({\n prompt,\n isLoading,\n error,\n closeModal,\n confirmModal,\n}) => {\n return (\n
\n {isLoading ? (\n
Loading…
\n ) : (\n <>\n {error ? (\n <>\n

\n \n Error\n

\n
{formatUiErrors(error)}
\n \n ) : (\n

{prompt}

\n )}\n\n
\n \n \n
\n \n )}\n
\n );\n};\n\nConfirmationModal.propTypes = {\n prompt: PropTypes.string.isRequired,\n isLoading: PropTypes.bool,\n error: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n closeModal: PropTypes.func.isRequired,\n confirmModal: PropTypes.func.isRequired,\n};\n\nConfirmationModal.defaultProps = {\n isLoading: false,\n error: null,\n};\n\nexport default ConfirmationModal;\n","import React, { useEffect, useState } from \"react\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport { get } from \"lodash\";\nimport { MenuItem, FocusableItem } from \"@szhsin/react-menu\";\nimport { ROUTE_GUARDS, apiFetch, getTotalPages, usePermissions } from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport ConfirmationModal from \"components/ConfirmationModal\";\nimport AlertModal from \"components/AlertModal\";\nimport Button from \"components/Button\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\n\nconst Locations = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const permissions = usePermissions();\n const { organization, isAdmin } = useUserState();\n const { orgId } = useParams();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [locationToDelete, setLocationToDelete] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalError, setModalError] = useState(null);\n const isOrgMember = permissions[ROUTE_GUARDS.CAN_VIEW_ORG]();\n const getOrgLocations = ({ page = 1 }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations?filter[organization_id][eq]=${orgId}&extra_fields[locations]=us_county_name&page[number]=${page}&stats[total]=count&sort=name`,\n includeMeta: true,\n });\n\n // Initial query\n const {\n data: response = { data: [] },\n error,\n isLoading,\n } = useQuery(\n [\"organizationLocations\", { orgId, page }],\n () => getOrgLocations({ page }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"organizationLocations\", { orgId, page: page + 1 }],\n () => getOrgLocations({ page: page + 1 })\n );\n }\n }, [response, page, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"id\",\n Header: \"Location Id\",\n },\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"address\",\n Header: \"Address\",\n Cell: ({ row: { original } }) => (\n <>\n {isOrgMember && `${original.attributes.addressLine1}`}\n {isOrgMember && original.attributes.addressLine2 && (\n <>\n
\n {original.attributes.addressLine2}\n
\n \n )}\n {original.attributes.city},{\" \"}\n {`${\n original.attributes.country === \"United States\"\n ? original.attributes.usState\n : original.attributes.provinceOrTerritory\n }, `}\n {original.attributes.country === \"United States\"\n ? original.attributes.zipCode\n : original.attributes.postalCode}\n \n ),\n },\n ...[\n organization?.attributes.country === \"United States\"\n ? {\n accessor: \"attributes.usCountyName\",\n Header: \"County\",\n }\n : {\n accessor: \"attributes.provinceOrTerritory\",\n Header: \"Province/Territory\",\n },\n ],\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n },\n ];\n\n if (\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n permissions[ROUTE_GUARDS.CAN_VIEW_ORG]()\n ) {\n columns.push({\n accessor: \"orgId\",\n Header: \"\",\n Cell: ({ row: { original } }) => (\n \n ),\n });\n }\n\n const openModal = (location) => {\n setLocationToDelete(location);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n setModalError(null);\n setLocationToDelete(null);\n };\n\n const { mutate: deleteLocation, isLoading: isLoadingDeleteLocation } =\n useMutation(\n ({ id }) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/resource_archivers\",\n body: {\n data: {\n type: \"resource_archivers\",\n attributes: {\n resourceId: id,\n resourceType: \"location\",\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toast.success(\n isAdmin\n ? `Deleted ${locationToDelete.attributes.name} successfully`\n : \"SAC administrators have been notified that you would like this location deleted.\",\n {\n autoClose: 3000,\n }\n );\n // Refresh the org members queries\n queryClient.invalidateQueries([\"organizationLocations\", { orgId }], {\n refetchActive: true,\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n return (\n <>\n
\n

Locations

\n\n {/* TODO: https://app.asana.com/0/1179331329125530/1199708861796442/f */}\n {permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n permissions[ROUTE_GUARDS.CAN_VIEW_ORG]() && (\n
\n \n Add Location\n \n
\n )}\n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n\n \n deleteLocation(locationToDelete)}\n />\n \n \n );\n};\n\nexport default Locations;\n\nconst Menu = ({ location, orgId, triggerDeleteLocationModal }) => (\n \n {/* View */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n {/* Edit */}\n \n {({ ref }) => (\n \n Edit Details\n \n )}\n \n {/* Remove */}\n {!location.attributes.primary && (\n triggerDeleteLocationModal(location)}>\n Delete Location\n \n )}\n \n);\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport CountyDropdown from \"components/CountyDropdown\";\nimport StateDropdown from \"components/StateDropdown\";\nimport * as Yup from \"yup\";\nimport { useMutation } from \"react-query\";\nimport {\n apiFetch,\n FORM_MODES,\n formatPhoneNumberForFormFields,\n formatPhoneNumberForApi,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Button from \"components/Button\";\n\nconst LocationForm = ({\n location,\n formMode,\n cancelRoute,\n onUpdateSuccess,\n onUpdateError,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId } = useParams();\n const [isSuccess, setIsSuccess] = useState(false);\n const initialValues = getInitialValues({ location, formMode });\n const { isAdmin } = useUserState();\n\n const LocationSchema = Yup.object().shape({\n name: Yup.string().required(\"Name is required\"),\n country: Yup.string().required(\"Country is required\"),\n addressLine1: Yup.string().required(\"Address is required\"),\n city: Yup.string().required(\"City is required\"),\n usState: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string().required(\"State is required\"),\n }),\n provinceOrTerritory: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string().required(\"Province or territory is required\"),\n }),\n zipCode: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string()\n .matches(/^(\\d{5})(?:[-. ]?(\\d{4}))?$/, \"Invalid zip code\")\n .required(\"Zip code is required\"),\n }),\n postalCode: Yup.string().when(\"country\", {\n is: \"Canada\",\n then: Yup.string()\n .matches(/^[A-Za-z]\\d[A-Za-z]\\s?\\d[A-Za-z]\\d$/, \"Invalid postal code\")\n .required(\"Postal code is required\"),\n }),\n usCounty: Yup.string().when(\"country\", {\n is: \"United States\",\n then: Yup.string().required(\"County is required\"),\n }),\n contactPhoneNumber: Yup.string()\n .matches(\n /^\\(?([2-9]\\d\\d)\\)?[-. ]?(\\d{3})[-. ]?(\\d{4})$/,\n \"Invalid phone number\"\n )\n .required(\"Phone number is required\"),\n });\n\n const { mutate: addLocation, isLoading: isLoadingAdd } = useMutation(\n ({\n name,\n country,\n addressLine1,\n addressLine2,\n city,\n usState,\n provinceOrTerritory,\n zipCode,\n postalCode,\n usCounty,\n contactPhoneNumber,\n extension,\n primary,\n }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations`,\n method: \"POST\",\n body: {\n data: {\n type: \"locations\",\n attributes: {\n organizationId: orgId,\n name,\n country,\n address_line_1: addressLine1,\n address_line_2: addressLine2,\n city,\n provinceOrTerritory:\n country === \"Canada\" ? provinceOrTerritory : null,\n usState: country === \"United States\" ? usState : null,\n zipCode: country === \"United States\" ? zipCode : null,\n postalCode: country === \"Canada\" ? postalCode : null,\n usCountyId: country === \"United States\" ? usCounty : null,\n contactPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: contactPhoneNumber,\n extension: extension,\n }),\n primary,\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n onUpdateError(e);\n },\n }\n );\n\n const { mutate: updateLocationDetails, isLoading } = useMutation(\n ({\n name,\n country,\n addressLine1,\n addressLine2,\n city,\n usState,\n provinceOrTerritory,\n zipCode,\n postalCode,\n usCounty,\n contactPhoneNumber,\n extension,\n primary,\n status,\n }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${location.id}`,\n method: \"PATCH\",\n body: {\n data: {\n id: location.id,\n type: \"locations\",\n attributes: {\n name,\n country,\n address_line_1: addressLine1,\n address_line_2: addressLine2,\n city,\n provinceOrTerritory:\n country === \"Canada\" ? provinceOrTerritory : null,\n usState: country === \"United States\" ? usState : null,\n zipCode: country === \"United States\" ? zipCode : null,\n postalCode: country === \"Canada\" ? postalCode : null,\n usCountyId: country === \"United States\" ? usCounty : null,\n contactPhoneNumber: formatPhoneNumberForApi({\n phoneNumber: contactPhoneNumber,\n extension: extension,\n }),\n primary,\n status: status ? \"closed\" : \"active\",\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n onUpdateError(e);\n },\n }\n );\n\n return (\n \n {({ handleSubmit, values }) => (\n
\n
\n {/* Name */}\n \n\n \n \n \n \n \n
\n\n
\n {/* Address Line 1 */}\n \n\n {/* Address Line 2 */}\n \n
\n\n
\n {/* City */}\n \n\n {/* State | Province */}\n {values.country === \"United States\" ? (\n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n\n {/* Zip Code | Postal code */}\n {values.country === \"United States\" ? (\n \n ) : (\n \n )}\n
\n\n
\n {/* County */}\n {values.country === \"United States\" && (\n \n )}\n
\n\n
\n {/* Contact Phone Number */}\n \n\n {/* Extension */}\n \n
\n\n {/* Primary */}\n
\n \n\n {formMode !== FORM_MODES.ADD && isAdmin && (\n \n )}\n
\n\n {formMode !== FORM_MODES.VIEW && (\n
\n \n\n Saving…}\n onClick={handleSubmit}\n >\n {formMode === FORM_MODES.ADD ? \"Add\" : \"Update\"}\n \n
\n )}\n\n \n \n )}\n \n );\n};\n\nLocationForm.propTypes = {\n location: PropTypes.object.isRequired,\n formMode: PropTypes.string,\n cancelRoute: PropTypes.string.isRequired,\n onUpdateSuccess: PropTypes.func.isRequired,\n onUpdateError: PropTypes.func.isRequired,\n};\n\nLocationForm.defaultProps = {\n formMode: FORM_MODES.VIEW,\n};\n\nexport default LocationForm;\n\nconst FormContext = ({ formMode, location, isSuccess, setIsSuccess }) => {\n const { resetForm, dirty } = useFormikContext();\n\n useEffect(() => {\n resetForm({\n values: getInitialValues({ location, formMode }),\n });\n }, [formMode, location, resetForm]);\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n\nconst getInitialValues = ({ location, formMode }) => {\n const isViewMode = formMode === FORM_MODES.VIEW;\n const contactPhoneNumber = formatPhoneNumberForFormFields(\n location.attributes.contactPhoneNumber\n );\n\n return {\n name: location.attributes.name || (isViewMode ? \"--\" : \"\"),\n country:\n location.attributes.country || (isViewMode ? \"--\" : \"United States\"),\n addressLine1: location.attributes.addressLine1 || (isViewMode ? \"--\" : \"\"),\n addressLine2: location.attributes.addressLine2 || (isViewMode ? \"--\" : \"\"),\n city: location.attributes.city || (isViewMode ? \"--\" : \"\"),\n usState: location.attributes.usState || (isViewMode ? \"--\" : \"\"),\n zipCode: location.attributes.zipCode || (isViewMode ? \"--\" : \"\"),\n provinceOrTerritory:\n location.attributes.provinceOrTerritory || (isViewMode ? \"--\" : \"\"),\n postalCode: location.attributes.postalCode || (isViewMode ? \"--\" : \"\"),\n usCounty: location.attributes.usCountyId || (isViewMode ? \"--\" : \"\"),\n contactPhoneNumber:\n contactPhoneNumber.phoneNumber || (isViewMode ? \"--\" : \"\"),\n extension: contactPhoneNumber.extension || (isViewMode ? \"--\" : \"\"),\n primary: location.attributes.primary || false,\n status: location.attributes.status === \"closed\" || false,\n };\n};\n","import React from \"react\";\nimport { toast } from \"react-toastify\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { useQuery, useQueryClient } from \"react-query\";\nimport { apiFetch, formatUiErrors, FORM_MODES } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Button from \"components/Button\";\nimport LocationForm from \"components/LocationForm\";\nimport BackLink from \"components/BackLink\";\n\nconst LocationDetails = ({ formMode = FORM_MODES.VIEW }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId, locId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const { isLoading, error, data: response } = useQuery(\n [\"location\", locId],\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locId}`,\n })\n );\n\n const handleUpdateSuccess = (data) => {\n history.push(`/organizations/${orgId}/locations/${locId}`);\n\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n\n queryClient.invalidateQueries([\"organizationLocations\", { orgId }], {\n refetchActive: true,\n });\n\n return queryClient.setQueryData([\"location\", locId], data);\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n if (isLoading) {\n return Loading location…} />;\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n
\n \n

\n {formMode === FORM_MODES.EDIT && \"Editing \"}\n {response.data.attributes.name}\n

\n\n {formMode === FORM_MODES.VIEW && (\n
\n \n
\n )}\n
\n\n \n \n );\n};\n\nexport default LocationDetails;\n","import React from \"react\";\nimport { useQueryClient } from \"react-query\";\nimport { useParams, useHistory } from \"react-router-dom\";\n\nimport { toast } from \"react-toastify\";\nimport { formatUiErrors, FORM_MODES } from \"utils\";\nimport BackLink from \"components/BackLink\";\nimport LocationForm from \"components/LocationForm\";\n\nconst AddLocation = () => {\n const { orgId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const handleUpdateSuccess = () => {\n history.push(`/organizations/${orgId}/locations`);\n\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n\n queryClient.invalidateQueries([\"organizationLocations\", { orgId }], {\n refetchActive: true,\n });\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n return (\n <>\n
\n \n

Add Location

\n
\n\n \n \n );\n};\n\nexport default AddLocation;\n","import React, { useEffect, useState } from \"react\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { Link, useParams } from \"react-router-dom\";\nimport { get } from \"lodash\";\nimport { Menu, MenuItem, FocusableItem, MenuButton } from \"@szhsin/react-menu\";\nimport { toast } from \"react-toastify\";\nimport {\n apiFetch,\n getTotalPages,\n usePermissions,\n ROUTE_GUARDS,\n camelToTitle,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport Button from \"components/Button\";\nimport AlertModal from \"components/AlertModal\";\nimport ConfirmationModal from \"components/ConfirmationModal\";\n\nconst Members = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { orgId } = useParams();\n const permissions = usePermissions();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [totalMembers, setTotalMembers] = useState(0);\n const [memberToRemove, setMemberToRemove] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalError, setModalError] = useState(null);\n const { isAdmin } = useUserState();\n\n const getOrgMembers = async ({ page = 1 }) => {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users?filter[${\n isAdmin ? \"organization_id_for_admin\" : \"organization_id\"\n }][eq]=${orgId}&include=user_memberships&page[number]=${page}&stats[total]=count&sort=full_name`,\n includeMeta: true,\n });\n return {\n data: response.data.map((member) => {\n const membership = response.included.find(\n (inc) =>\n String(inc.attributes.userId) === member.id &&\n String(inc.attributes.resourceId) === orgId\n );\n return Object.assign(member, {\n membership,\n });\n }),\n meta: response.meta,\n };\n };\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"organizationMembers\", { orgId, page }],\n () => getOrgMembers({ page }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"organizationMembers\", { orgId, page: page + 1 }],\n () => getOrgMembers({ page: page + 1 })\n );\n }\n }, [response, page, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalMembers = get(response, \"meta.stats.total.count\") || 0;\n const totalPages = getTotalPages({\n totalCount: totalMembers,\n });\n setTotalPages(totalPages);\n setTotalMembers(totalMembers);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.fullName\",\n Header: \"Full Name\",\n },\n {\n accessor: \"attributes.email\",\n Header: \"Email\",\n },\n {\n accessor: \"attributes.confirmedAt\",\n Header: \"Status\",\n Cell: ({ cell }) => (cell.value ? \"Confirmed\" : \"Unconfirmed\"),\n },\n {\n accessor: \"membership.attributes.role\",\n Header: \"Role\",\n Cell: ({ cell }) => {\n const [isEdited, setEdited] = useState(false);\n const [role, setRole] = useState(cell.value);\n\n const handleRoleChange = async () => {\n const user = cell.row.original;\n user.membership.attributes.role = role;\n updateMember(user);\n };\n\n const editOrSave = (e) => {\n if (isEdited === true) {\n e.stopPropagation();\n setEdited(false);\n handleRoleChange();\n }\n };\n\n const changeRole = (newRole) => {\n if (newRole === role) {\n return;\n } else {\n setRole(newRole);\n setEdited(true);\n }\n };\n\n return (\n
\n {camelToTitle(role) || \"\"}\n\n {permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() && (\n
\n \n editOrSave(e)}>\n {!isEdited ? \"Edit\" : \"Save\"}\n \n \n }\n className=\"actions-menu\"\n align=\"end\"\n >\n changeRole(\"organization_viewer\")}>\n Organization Viewer\n \n changeRole(\"organization_manager\")}>\n Organization Manager\n \n \n
\n )}\n
\n );\n },\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original } }) =>\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() && (\n \n ),\n },\n ];\n\n const getResourceId = (memberId) => {\n if (!response || !response.data) return null;\n\n const member = response.data.find((member) => {\n return member.id === memberId;\n });\n\n return get(member, \"membership.id\") || null;\n };\n\n const openModal = (member) => {\n setMemberToRemove(member);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n setModalError(null);\n setMemberToRemove(null);\n };\n\n const { mutate: removeMember, isLoading: isLoadingRemoveMember } =\n useMutation(\n async ({ id }) => {\n const membershipId = getResourceId(id);\n return await apiFetch({\n token,\n dispatch,\n method: \"DELETE\",\n endpoint: `/api/v1/user_memberships/${membershipId}`,\n body: {\n data: {\n id: membershipId,\n type: \"user_memberships\",\n },\n },\n });\n },\n {\n onSuccess: () => {\n toast.success(\n `Removed ${memberToRemove.attributes.fullName} successfully`,\n {\n autoClose: 3000,\n }\n );\n // Refresh the org members queries\n queryClient.invalidateQueries([\"organizationMembers\", { orgId }], {\n refetchActive: true,\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n const { mutate: updateMember } = useMutation(\n async (user) => {\n const membershipId = getResourceId(user.id);\n return await apiFetch({\n token,\n dispatch,\n method: \"PATCH\",\n endpoint: `/api/v1/user_memberships/${membershipId}`,\n body: {\n data: {\n id: membershipId,\n type: \"user_memberships\",\n attributes: {\n role: user.membership.attributes.role,\n },\n },\n },\n });\n },\n {\n onSuccess: (res) => {\n toast.success(\n `Updated member ${res.data.attributes.userId} to ${res.data.attributes.role} successfully`,\n {\n autoClose: 3000,\n }\n );\n // Refresh the org members queries\n queryClient.invalidateQueries([\"organizationMembers\", { orgId }], {\n refetchActive: true,\n });\n },\n onError: (err) => {\n toast.error(`Failed to update user to new role!`, {\n autoClose: 3000,\n });\n },\n }\n );\n\n return (\n <>\n
\n

Members

\n\n {permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() && (\n
\n \n Invite Member\n \n
\n )}\n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n\n \n removeMember(memberToRemove)}\n />\n \n \n );\n};\n\nexport default Members;\n\nconst DetailsMenu = ({\n member,\n orgId,\n triggerRemoveMemberModal,\n totalMembers,\n}) => (\n \n {/* View */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n {/* Edit */}\n \n {({ ref }) => (\n \n Edit Details\n \n )}\n \n {/* Remove */}\n {totalMembers !== 1 && (\n triggerRemoveMemberModal(member)}>\n Remove Member from Organization\n \n )}\n \n);\n","import React, { useState, useEffect } from \"react\";\nimport { useMutation, useQueryClient } from \"react-query\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport * as Yup from \"yup\";\nimport { toast } from \"react-toastify\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport FormField from \"components/FormField\";\nimport Button from \"components/Button\";\nimport { OrganizationMemberRoleTooltip } from \"components/Tooltips\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport BackLink from \"components/BackLink/BackLink\";\n\nexport default function AddMember() {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n // const { isAdmin } = useUserState();\n const { orgId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n const [isSuccess, setIsSuccess] = useState(false);\n\n const UserSchema = Yup.object().shape({\n fullName: Yup.string().required(\"Name is required\"),\n role: Yup.string().required(\"Role is required\"),\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n confirmEmail: Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"email\")], \"Emails do not match\")\n .required(\"Confirm the email\"),\n title: Yup.string().required(\"Title is required\"),\n });\n\n const handleAddSuccess = () => {\n history.push(`/organizations/${orgId}/members`);\n\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n\n queryClient.invalidateQueries([\"organizationMembers\", { orgId }], {\n refetchActive: true,\n });\n };\n\n const handleAddError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n const { mutate: addMember, isLoading } = useMutation(\n ({ fullName, role, email, title }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/user_membership_invites`,\n method: \"POST\",\n body: {\n data: {\n type: \"user_membership_invites\",\n attributes: {\n resourceId: orgId,\n resourceType: \"organization\",\n name: fullName,\n role,\n email,\n title,\n },\n },\n },\n }),\n {\n onSuccess: () => {\n setIsSuccess(true);\n handleAddSuccess();\n },\n onError: () => {\n setIsSuccess(false);\n handleAddError();\n },\n }\n );\n return (\n <>\n
\n \n

Invite Member

\n
\n\n \n {({ handleSubmit }) => (\n
\n
\n {/* Full Name */}\n \n\n {/* Title */}\n \n\n {/* Email */}\n \n\n {/* Confirm Email */}\n \n\n {/* Role */}\n }\n >\n \n \n \n \n
\n\n
\n \n Cancel\n \n\n Saving…}\n onClick={handleSubmit}\n >\n Invite\n \n
\n\n \n \n )}\n \n \n );\n}\n\nconst FormContext = ({ isSuccess, setIsSuccess }) => {\n const { dirty } = useFormikContext();\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQueryClient, useQuery } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport { useHistory } from \"react-router-dom\";\nimport { apiFetch, formatUiErrors, FORM_MODES } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Error from \"components/Error\";\nimport Button from \"components/Button\";\nimport UserProfileForm from \"components/UserProfileForm\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport BackLink from \"components/BackLink\";\n\nconst MemberDetails = ({ formMode = FORM_MODES.VIEW }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId, userId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const { isLoading, error, data: response } = useQuery([\"user\", userId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users/${userId}`,\n })\n );\n\n const handleUpdateSuccess = (response) => {\n history.push(`/organizations/${orgId}/members/${userId}`);\n\n toast.success(\n
\n {!!response.data.attributes.unconfirmedEmail ? (\n
\n An email was sent to the account for `\n {response.data.attributes.unconfirmedEmail}` to confirm the new\n email address.\n
\n ) : (\n \"Saved successfully\"\n )}\n
,\n {\n autoClose: !!response.data.attributes.unconfirmedEmail ? 5000 : 3000,\n }\n );\n\n queryClient.invalidateQueries([\"organizationMembers\", { orgId }], {\n refetchActive: true,\n });\n\n return queryClient.setQueryData([\"user\", userId], response);\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n if (isLoading) {\n return Loading member…} />;\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n
\n \n

\n {formMode === FORM_MODES.EDIT && \"Editing \"}\n {response.data.attributes.fullName}\n

\n\n {formMode === FORM_MODES.VIEW && (\n
\n \n
\n )}\n
\n\n \n \n );\n};\n\nexport default MemberDetails;\n","import React from \"react\";\nimport FormField from \"components/FormField\";\n\nconst ProvinceDropdown = ({ ...props }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ProvinceDropdown;\n","export const REGION_TYPES = {\n ALL: \"All Regions\",\n NATIONAL: \"National\",\n MULTISTATE: \"Multi-State (2 or more)\",\n STATEWIDE: \"Statewide\",\n COMMUNITY: \"Community\",\n MULTIPROVINCE: \"Multi-province (2 or more)\",\n PROVINCEWIDE: \"Provincewide\",\n};\n","import React from \"react\";\nimport FormField from \"components/FormField\";\nimport { REGION_TYPES } from \"./utils\";\n\nconst RegionDropDown = ({ ...props }) => {\n const { country } = props;\n return (\n \n \n \n {country === \"United States\" ? (\n \n ) : (\n \n )}\n {country === \"United States\" ? (\n \n ) : (\n \n )}\n \n \n );\n};\n\nexport default RegionDropDown;\n","import { faEdit } from \"@fortawesome/free-solid-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport AlertModal from \"components/AlertModal\";\nimport { get, uniq } from \"lodash\";\nimport { useState } from \"react\";\nimport {\n camelToTitle,\n COALITION_MEMBERSHIP_ACTIONS,\n useManageCoalitionMemberships,\n useHandleRequestStates,\n titleCase,\n} from \"utils\";\n\nexport const getBaseColumns = (country) => {\n return [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n Cell: ({ cell }) => cell.value,\n },\n ...[\n country === \"United States\"\n ? {\n accessor: \"attributes.operatingRegion\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n }\n : {\n accessor: \"attributes.operatingRegion\",\n Header: \"Provinces/Territory\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n ],\n {\n accessor: \"attributes.operatingRegionType\",\n Header: \"Region Type\",\n },\n {\n accessor: \"attributes.organizationsCount\",\n Header: \"Shelters\",\n Cell: ({ cell }) =>
{cell.value}
,\n },\n {\n accessor: \"attributes.description\",\n Header: \"Description\",\n },\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n Cell: ({ cell }) => titleCase(cell.value),\n },\n ];\n};\n// Columns - Map up with accessor from Data - attributes.name etc.\nexport const baseColumns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n Cell: ({ cell }) => cell.value,\n },\n {\n accessor: \"attributes.operatingRegion\",\n Header: \"States/Provinces\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.operatingRegionType\",\n Header: \"Region Type\",\n },\n {\n accessor: \"attributes.organizationsCount\",\n Header: \"Shelters\",\n Cell: ({ cell }) =>
{cell.value}
,\n },\n {\n accessor: \"attributes.description\",\n Header: \"Description\",\n },\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n Cell: ({ cell }) => titleCase(cell.value),\n },\n];\n\nexport const baseColumnsForSharing = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n Cell: ({ cell }) => cell.value,\n },\n {\n accessor: \"attributes.organizationsCount\",\n Header: \"Shelters\",\n Cell: ({ cell }) =>
{cell.value}
,\n },\n {\n accessor: \"attributes.description\",\n Header: \"Description\",\n },\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n Cell: ({ cell }) => titleCase(cell.value),\n },\n];\n/**\n * Constructs array of a user's roles in a given coalition\n * @param {Object} params\n * @param {string} params.coalitionId\n * @param {Object} params.coalitions\n * @return arr Returns array of roles\n */\nexport const getCoalitionRoles = ({ coalitionId, coalitions }) => {\n if (!coalitions || !coalitions[coalitionId]) return [];\n\n const memberships = coalitions[coalitionId];\n return Object.keys(memberships).map((key) => {\n const membership = memberships[key];\n let role =\n camelToTitle(membership.attributes.role) || \"Coalition Contributor\";\n\n if (\n membership.attributes.status === \"requested\" ||\n membership.attributes.status === \"reminded\"\n ) {\n role += ` (${\n membership.attributes.statusActor === \"Organization\"\n ? \"requested\"\n : \"invited\"\n })`;\n } else if (membership.attributes.status === \"rejected\") {\n role += ` (${\n membership.attributes.statusActor === \"Organization\"\n ? \"rejected by organization\"\n : \"rejected by coalition\"\n })`;\n }\n\n return role;\n });\n};\n\nexport const getDataSharing = ({ coalitionId, coalitions, type }) => {\n if (!coalitions || !coalitions[coalitionId]) return [];\n\n const memberships = coalitions[coalitionId];\n return Object.keys(memberships).map((key) => {\n const membership = memberships[key];\n let role = membership.attributes.intakeOutcomeDataSharing;\n if (type == \"community\")\n role = membership.attributes.communityServiceDataSharing;\n return role;\n });\n};\n\nexport const getDataSharingType = ({ coalitionId, coalitions, type }) => {\n if (!coalitions || !coalitions[coalitionId]) return \"None\";\n\n const memberships = coalitions[coalitionId];\n const orgMembership = memberships[\"orgMembership\"];\n\n let status = false;\n\n if (type === \"community\")\n status = orgMembership?.attributes.communityServiceDataSharing;\n else status = orgMembership?.attributes.intakeOutcomeDataSharing;\n\n return status ? \"All\" : \"None\";\n};\n\n/**\n * Returns markup for My Role column based on user's roles in a coalition\n * @param {Object} params\n * @param {string} params.coalitionId\n * @param {Object} params.coalitions\n * @return JSX\n */\nexport const coalitionRoleColumn = ({ coalitionId, coalitions }) => {\n const roles = getCoalitionRoles({ coalitionId, coalitions });\n\n if (!roles.length) return \"--\";\n return (\n
\n {roles.map((role, i) => {\n return
{role}
;\n })}\n
\n );\n};\n\nexport const coalitionSharing = ({\n coalitionId,\n coalitions,\n type,\n openModel,\n}) => {\n const roles = getDataSharing({ coalitionId, coalitions, type });\n const coaRoles = getCoalitionRoles({ coalitionId, coalitions });\n\n return (\n
\n {roles.includes(true) ? \"Yes\" : \"No\"}   \n {(coaRoles.includes(\"Coalition Contributor\") ||\n coaRoles.includes(\"Coalition Contributor (invited)\")) && (\n \n openModel({ id: coalitionId, type, state: roles.includes(true) })\n }\n />\n )}\n
\n );\n};\n\n/**\n * Hook that handles success of respond to coalition invite request\n * @param {Object} params\n * @param {Object} params.response API response\n * @param {Object} params.organization User's organization\n * @param {Array} params.coalition\n * @param {string} params.action \"accept\" || \"reject\"\n * @return {function}\n */\nexport const useHandleRespondToInviteSuccess = () => {\n const { createContributorMembership } = useManageCoalitionMemberships();\n const { handleSuccess } = useHandleRequestStates();\n\n return ({ response, organization, coalition, action }) => {\n const updatedMembershipRecord = response.data;\n const coalitionName = get(coalition, \"attributes.name\");\n\n createContributorMembership(updatedMembershipRecord);\n const message =\n action === COALITION_MEMBERSHIP_ACTIONS.ACCEPT\n ? `${organization.attributes.name} is now an active contributor of ${coalitionName}`\n : `Declined invitation to join ${coalitionName}`;\n\n handleSuccess({\n message,\n queries: [\n {\n key: \"myCoalitions\",\n config: {\n refetchActive: true,\n },\n },\n {\n key: \"coalitions\",\n },\n {\n key: [\"coalitionContributors\", coalition.id],\n },\n {\n key: [\"searchOrganizations\", { coalitionId: coalition.id }],\n },\n ],\n });\n };\n};\n\n/**\n * Hook that handles success of request access to coalition request\n * @param {Object} params\n * @param {Object} params.response API response\n * @param {Array} params.coalition\n * @return {function}\n */\nexport const useHandleRequestAccessSuccess = () => {\n const { createContributorMembership } = useManageCoalitionMemberships();\n const { handleSuccess } = useHandleRequestStates();\n\n return ({ response, coalition }) => {\n const newMembershipRecord = response.data;\n const coalitionId = String(newMembershipRecord.attributes.coalitionId);\n\n createContributorMembership(newMembershipRecord);\n\n handleSuccess({\n message: `A request email has been sent to the members of ${get(\n coalition,\n \"attributes.name\"\n )}`,\n queries: [\n {\n key: \"coalitions\",\n config: {\n refetchActive: true,\n },\n },\n {\n key: \"myCoalitions\",\n },\n {\n key: [\"coalitionContributors\", coalition.id],\n },\n {\n key: [\"searchOrganizations\", { coalitionId: coalition.id }],\n },\n ],\n });\n };\n};\n\n/**\n * Hook that handles success of leave coalition request\n * @param {Object} coalition\n * @return {function}\n */\nexport const useHandleLeaveCoalitionSuccess = () => {\n const { deleteContributorMembership } = useManageCoalitionMemberships();\n const { handleSuccess } = useHandleRequestStates();\n\n return (coalition) => {\n deleteContributorMembership(coalition.id);\n\n handleSuccess({\n message: `Your organization has been successfully removed from ${get(\n coalition,\n \"attributes.name\"\n )}`,\n queries: [\n {\n key: \"myCoalitions\",\n config: {\n refetchActive: true,\n },\n },\n {\n key: \"coalitions\",\n },\n {\n key: [\"coalitionContributors\", coalition.id],\n },\n {\n key: [\"searchOrganizations\", { coalitionId: coalition.id }],\n },\n ],\n });\n };\n};\n","import React, { useState, useEffect } from \"react\";\nimport { Link, useLocation } from \"react-router-dom\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { FocusableItem, MenuItem } from \"@szhsin/react-menu\";\nimport { Formik, Form, Field } from \"formik\";\nimport { isEqual, get } from \"lodash\";\nimport {\n apiFetch,\n getTotalPages,\n usePermissions,\n useHandleRequestStates,\n ROUTE_GUARDS,\n getCoalitions,\n COALITION_MEMBERSHIP_ACTIONS,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport FormField from \"components/FormField\";\nimport Button from \"components/Button\";\nimport StateDropdown from \"components/StateDropdown\";\nimport ProvinceDropdown from \"components/ProvinceDropdown\";\nimport RegionDropDown from \"components/RegionDropDown\";\nimport {\n coalitionRoleColumn,\n useHandleRespondToInviteSuccess,\n useHandleRequestAccessSuccess,\n useHandleLeaveCoalitionSuccess,\n getDataSharingType,\n baseColumnsForSharing,\n getBaseColumns,\n} from \"./utils\";\nimport AlertModal from \"components/AlertModal\";\n\nconst CoalitionsTable = ({ userId, organization, path = \"\" }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitions, isAdmin } = useUserState();\n const queryClient = useQueryClient();\n const { handleError } = useHandleRequestStates();\n const handleRespondToInviteSuccess = useHandleRespondToInviteSuccess();\n const handleRequestAccessSuccess = useHandleRequestAccessSuccess();\n const handleLeaveCoalitionSuccess = useHandleLeaveCoalitionSuccess();\n const orgId = get(organization, \"id\");\n const { pathname } = useLocation();\n const [isModalOpen, setIsModelOpen] = useState(false);\n const [openUserId, setOpenUserId] = useState(0);\n const [state, setOpenState] = useState(false);\n const [openType, setOpenType] = useState(\"\");\n\n // Pagination\n const [totalPages, setTotalPages] = useState(0);\n const [page, setPage] = useState(1);\n\n // const openModel = (data) => {\n // setIsModelOpen(true);\n // setOpenUserId(data.id);\n // setOpenType(data.type);\n // setOpenState(data.state);\n // };\n // Form Filters\n const initialFilters = {\n search: \"\",\n operatingRegions: \"\",\n region: \"\",\n country: \"United States\",\n };\n const [filters, setFilters] = useState(initialFilters);\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n isLoading,\n error,\n } = useQuery(\n [\n userId\n ? \"myCoalitions\"\n : path\n ? [\"orgCoalitions\", `${orgId}`]\n : \"coalitions\",\n { page, ...filters },\n ],\n () =>\n getCoalitions({\n token,\n dispatch,\n page,\n ...filters,\n userId,\n orgId: pathname === \"/coalitions\" ? \"\" : orgId,\n }),\n {\n keepPreviousData: true,\n refetchOnWindowFocus: true,\n staleTime: 0,\n cacheTime: 0,\n }\n );\n\n // Prefetch the next page of coalitions\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\n userId\n ? \"myCoalitions\"\n : path\n ? [\"orgCoalitions\", `${orgId}`]\n : \"coalitions\",\n { page: page + 1, ...filters },\n ],\n () =>\n getCoalitions({\n token,\n dispatch,\n page: page + 1,\n ...filters,\n userId,\n orgId: pathname === \"/coalitions\" ? \"\" : orgId,\n })\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [response, totalPages, filters, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n ...(userId\n ? baseColumnsForSharing\n : getBaseColumns(organization?.attributes.country)),\n ...(userId\n ? [\n {\n accessor: \"id\",\n Header: \"My Role\",\n Cell: ({ cell }) =>\n coalitionRoleColumn({ coalitionId: cell.value, coalitions }),\n },\n {\n accessor: \"id1\",\n Header: \"Community Service Data Sharing\",\n Cell: ({ cell }) =>\n getDataSharingType({\n coalitionId: cell.row.original.id,\n coalitions,\n type: \"community\",\n }),\n },\n\n {\n accessor: \"id2\",\n Header: \"Intake/outcome Data Sharing\",\n Cell: ({ cell }) =>\n getDataSharingType({\n coalitionId: cell.row.original.id,\n coalitions,\n type: \"intake_outcome\",\n }),\n },\n ]\n : []),\n {\n accessor: \"actions\",\n Header: \"\",\n Cell: ({ row: { original } }) => {\n const membership = response?.included?.find(\n (data) =>\n data.type === \"coalition_memberships\" &&\n data.attributes.coalitionId === Number(original.id)\n );\n\n return (\n \n );\n },\n },\n ];\n\n const getColumns = (columns) => {\n if (userId) {\n columns.splice(-1, 0, columns.splice(-3, 1)[0]);\n }\n return columns;\n };\n\n /**\n * ACTIONS\n */\n\n // ACCEPT/DECLINE INVITE\n const { mutate: respondToInvitation } = useMutation(\n async ({ coalition, action }) => {\n const adminMembership = response.included.find(\n (data) =>\n data.type === \"coalition_memberships\" &&\n data.attributes.coalitionId === Number(coalition.id)\n );\n const membership = isAdmin\n ? adminMembership\n : coalitions[coalition.id].orgMembership;\n return await apiFetch({\n token,\n dispatch,\n method: \"PATCH\",\n endpoint: `/api/v1/coalition_memberships/${membership.id}`,\n body: {\n data: {\n type: \"coalition_memberships\",\n id: membership.id,\n attributes: {\n statusChangeAction: action,\n statusActor: \"Organization\",\n },\n },\n },\n });\n },\n {\n onSuccess: (res, { coalition, action }) => {\n handleRespondToInviteSuccess({\n response: res,\n organization,\n coalition,\n action,\n });\n },\n onError: handleError,\n }\n );\n\n // LEAVE (AS CONTRIBUTOR)\n const { mutate: leaveCoalition } = useMutation(\n async (coalition) => {\n const adminMembership = response.included.find(\n (data) =>\n data.type === \"coalition_memberships\" &&\n data.attributes.coalitionId === Number(coalition.id)\n );\n const membership = isAdmin\n ? adminMembership\n : get(coalitions[coalition.id], \"orgMembership\");\n return await apiFetch({\n token,\n dispatch,\n method: \"DELETE\",\n endpoint: `/api/v1/coalition_memberships/${membership.id}`,\n body: {\n data: {\n type: \"coalition_memberships\",\n id: membership.id,\n },\n },\n });\n },\n {\n onSuccess: (res, coalition) => {\n handleLeaveCoalitionSuccess(coalition);\n },\n onError: handleError,\n }\n );\n\n // REQUEST ACCESS\n const { mutate: requestAccess } = useMutation(\n ({ coalition, orgId }) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/coalition_memberships\",\n body: {\n data: {\n type: \"coalition_memberships\",\n attributes: {\n organizationId: orgId,\n coalitionId: coalition.id,\n statusActor: \"Organization\",\n },\n },\n },\n }),\n {\n onSuccess: (res, { coalition }) => {\n handleRequestAccessSuccess({\n response: res,\n coalition,\n });\n },\n onError: handleError,\n }\n );\n\n /**\n * FORM METHODS\n */\n const onSubmitFilters = (values) => {\n if (!isEqual(values, filters)) {\n setFilters(values);\n }\n };\n\n const onValidateForm = (values) => {\n const formValues = [\n \"search\",\n \"operatingRegions\",\n \"region\",\n \"country\",\n ].reduce((vals, key) => {\n if (values[key]) {\n vals.push(values[key]);\n }\n return vals;\n }, []);\n return !!formValues.length ? {} : { error: \"Select at least one filter.\" };\n };\n\n return (\n <>\n {!userId && (\n
\n \n
\n )}\n\n {\n setIsModelOpen(false);\n setOpenUserId(0);\n setOpenType(\"\");\n setOpenState(false);\n }}\n >\n {\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/coalition_memberships/update_sharing\",\n body: {\n data: {\n type: \"coalition_memberships\",\n attributes: {\n orgId: organization.id,\n userId: userId,\n coalitionId: openUserId,\n state: state,\n type: openType,\n },\n },\n },\n });\n setIsModelOpen(false);\n setOpenUserId(0);\n setOpenType(\"\");\n setOpenState(false);\n window.location.reload();\n }}\n >\n {({ resetForm, errors, touched, handleSubmit }) => (\n
\n
\n \n \n \n {openType === \"intake_outcome\"\n ? \"Intake/Outcome Data Sharing\"\n : \"Community Service Data Sharing\"}\n (\n <>\n
\n {\n setOpenState(true);\n }}\n type=\"radio\"\n />\n \n
\n\n
\n {\n setOpenState(false);\n }}\n />\n \n
\n \n )}\n />\n
\n\n
\n \n
\n
\n )}\n \n \n\n
\n \n {({\n resetForm,\n errors,\n touched,\n handleSubmit,\n values: { country },\n }) => (\n
\n
\n
\n \n
\n\n
\n \n \n \n \n \n
\n\n {country === \"Canada\" && (\n \n )}\n {country === \"United States\" && (\n \n )}\n \n
\n\n
\n {\n resetForm();\n setFilters(initialFilters);\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n \n
\n {errors.error && touched.error && (\n
{errors.error}
\n )}\n
\n )}\n \n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nexport default CoalitionsTable;\n\nconst Menu = ({\n memberships,\n coalition,\n organization,\n userId,\n requestAccess,\n leaveCoalition,\n respondToInvitation,\n path,\n isAdmin,\n}) => {\n const permissions = usePermissions();\n const hasPendingCoalitionInvite =\n (userId || isAdmin) &&\n permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR_PENDING](coalition.id) &&\n get(memberships, \"orgMembership.attributes.statusActor\") === \"Coalition\";\n const orgHasPendingCoalitionInvite =\n path &&\n permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR_PENDING](coalition.id) &&\n get(memberships, \"orgMembership.attributes.statusActor\") === \"Organization\";\n const pendingInvites =\n hasPendingCoalitionInvite || orgHasPendingCoalitionInvite;\n const canRequestAccess =\n !isAdmin &&\n !userId &&\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n !permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR](coalition.id);\n const canLeaveCoalition =\n (userId || path || isAdmin) &&\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR](coalition.id);\n const isOrgManagerAndCoalitionContributor =\n permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR](coalition.id) &&\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n coalition.attributes.status === \"active\";\n\n return (\n \n {/* View Coalition (Any User) Details */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n {/* Request Access (Org Managers) */}\n {canRequestAccess && (\n \n requestAccess({\n coalition,\n orgId: organization.id,\n })\n }\n >\n Request to Join as Contributor\n \n )}\n {/* Accept Invite to join Coalition */}\n {pendingInvites && (\n \n respondToInvitation({\n coalition,\n action: COALITION_MEMBERSHIP_ACTIONS.ACCEPT,\n })\n }\n >\n Accept Invitation to Join as Contributor\n \n )}\n {/* Decline Invite to join Coalition */}\n {pendingInvites && (\n \n respondToInvitation({\n coalition,\n action: COALITION_MEMBERSHIP_ACTIONS.REJECT,\n })\n }\n >\n Decline Invitation to Join as Contributor\n \n )}\n {/* Leave Coalition (Coalition Contributor) */}\n {canLeaveCoalition && (\n leaveCoalition(coalition)}>\n Leave Coalition as Contributor\n \n )}\n\n {/* Sharing Permissions */}\n {isOrgManagerAndCoalitionContributor && (\n \n {({ ref }) => (\n \n Sharing Permissions\n \n )}\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport StateDropdown from \"components/StateDropdown\";\nimport * as Yup from \"yup\";\nimport { useMutation } from \"react-query\";\nimport {\n apiFetch,\n FORM_MODES,\n COALITION_TYPES,\n constructCoalitionOperatingRegion,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Button from \"components/Button\";\n\nconst CoalitionForm = ({\n coalition,\n formMode,\n cancelRoute,\n onUpdateSuccess,\n onUpdateError,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const [isSuccess, setIsSuccess] = useState(false);\n const initialValues = getInitialValues({ coalition, formMode });\n const [showState, setShowState] = useState(false);\n\n const CoalitionSchema = Yup.object().shape({\n name: Yup.string().required(\"Name is required\"),\n country: Yup.string().required(\"Country is required\"),\n description: Yup.string().required(\"Description is required\"),\n dataUsed: Yup.string().required(\"This is required\"),\n dataUseAgreement: Yup.boolean().oneOf([true], \"This is required\"),\n operatingRegionType: Yup.string().required(\"Geographic area is required\"),\n operatingRegion: Yup.lazy((val) => {\n const isRequired = document.getElementById(\"operatingRegion\");\n if (Array.isArray(val) && isRequired) {\n return Yup.array()\n .of(Yup.string())\n .required(\"State/Province is required\");\n } else if (Array.isArray(val)) {\n return Yup.array().of(Yup.string());\n } else if (isRequired) {\n return Yup.string().required(\"State/Province is required\");\n }\n return Yup.string();\n }),\n allIntakeOutcomeDataRequest: Yup.boolean(),\n allCommunityServiceDataRequest: Yup.boolean(),\n });\n\n const { mutate: addCoalition, isLoading } = useMutation(\n ({\n name,\n country,\n description,\n dataUsed,\n dataUseAgreement,\n operatingRegionType,\n operatingRegion,\n allIntakeOutcomeDataRequest,\n allCommunityServiceDataRequest,\n }) =>\n apiFetch({\n token,\n dispatch,\n endpoint:\n formMode === FORM_MODES.EDIT\n ? \"/api/v1/coalitions/\" + coalition.id\n : \"/api/v1/coalitions\",\n method: formMode === FORM_MODES.EDIT ? \"PUT\" : \"POST\",\n body: {\n data: {\n id: coalition.id,\n type: \"coalitions\",\n attributes: {\n name,\n country,\n description,\n operatingRegionType,\n dataUsed,\n dataUseAgreement,\n operatingRegion:\n constructCoalitionOperatingRegion(operatingRegion),\n allIntakeOutcomeDataRequest,\n allCommunityServiceDataRequest,\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n if (typeof onUpdateSuccess === \"function\") onUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n if (typeof onUpdateError === \"function\") onUpdateError(e);\n },\n }\n );\n\n const stateContent = ({ operatingRegion, operatingRegionType, country }) => {\n // Suppress State field/value if showState is false (operatingRegionType === \"National\")\n if (!showState) return null;\n\n if (formMode === FORM_MODES.VIEW) {\n // Has multiple states (operatingRegionType === \"Multi-State (2 or more)\")\n if (Array.isArray(operatingRegion) && !!operatingRegion.length) {\n return (\n
\n
\n {country === \"United States\" ? \"State\" : \"Province/Territory\"}\n
\n
{operatingRegion.join(\", \")}
\n
\n );\n }\n // Has one state (operatingRegionType === \"Statewide\" || operatingRegionType === \"Community\")\n if (typeof operatingRegion === \"string\" && !!operatingRegion) {\n return (\n
\n
\n {country === \"United States\" ? \"State\" : \"Province/Territory\"}\n
\n
{operatingRegion}
\n
\n );\n }\n // No state value\n return (\n
\n
State
\n
--
\n
\n );\n }\n\n if (country === \"Canada\") {\n return (\n \n To select multiple provinces, hold down the Ctrl key (Windows) or\n the Command key (Mac) and click on each province.\n \n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n return (\n \n To select multiple states, hold down the Ctrl key (Windows) or the\n Command key (Mac) and click on each state.\n \n }\n tooltipWidthClass=\"w-80\"\n />\n );\n };\n\n return (\n \n {({\n handleSubmit,\n values: {\n operatingRegion,\n operatingRegionType,\n country,\n allIntakeOutcomeDataRequest,\n allCommunityServiceDataRequest,\n },\n setFieldValue,\n }) => (\n
\n
\n {/* Name */}\n \n
\n\n
\n {/* Country */}\n \n \n \n \n \n
\n\n
\n {/* Type */}\n \n Please select the state your coalition serves, or select\n multi-state (for more than one) or national.\n
\n }\n tooltipWidthClass=\"w-80\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n onChange={(e) => {\n const fieldValue = e.target.value;\n setFieldValue(\"operatingRegionType\", fieldValue);\n\n // Reset field2 if field1 meets certain condition\n if (\n fieldValue === \"International\" ||\n fieldValue === \"National\"\n ) {\n setFieldValue(\"operatingRegion\", \"\");\n }\n }}\n >\n \n \n \n {country === \"United States\" ? (\n \n ) : (\n \n )}\n {country === \"United States\" ? (\n \n ) : (\n \n )}\n \n \n\n {/* State */}\n {stateContent({ operatingRegion, operatingRegionType, country })}\n \n\n
\n {/* Requested Data */}\n

\n Requested Data\n

\n\n
\n
\n

Intake/Outcome Data

\n \n
\n
\n

Community Service Data

\n \n
\n
\n
\n\n
\n {/* Description */}\n {formMode === FORM_MODES.VIEW ? (\n <>\n \n Description should contain your coalition’s mission\n and focus (e.g. dog, cat, breed, or issue-specific, etc.).\n
\n }\n tooltipWidthClass=\"w-80\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n />\n {coalition.attributes.description}\n \n ) : (\n \n Description should contain your coalition’s mission\n and focus (e.g. dog, cat, breed, or issue-specific, etc.).\n \n }\n tooltipWidthClass=\"w-80\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n required\n />\n )}\n \n\n
\n {formMode === FORM_MODES.VIEW ? (\n <>\n \n {coalition.attributes.dataUsed}\n \n ) : (\n \n )}\n
\n\n
\n
\n Data Use Agreement\n
\n
\n
\n Shelter Animals Count - Data Use Policy\n \n Shelter Animals Count (“SAC”) collects and shares information\n and data on Shelters & Rescues, Intake/Outcome Data, Community\n Services Data and other information relating to the operation\n of animal shelters for the benefit of animals and communities.\n SAC also provides a platform for the formation of groups of\n shelters/rescues through its Coalition Builder tool to foster\n collaboration and provide data tracking and reporting among\n these groups at local, regional, and national levels (a\n “Coalition”). For purposes of this Coalition Data Use\n Agreement, all of the information and data collected and made\n available by SAC, including information that is shared by an\n SAC member organization with other Coalition members on the\n SAC platform, is referred to as “Data” and the assembled Data\n in any format maintained by SAC is referred to as the\n “Database.”{\" \"}\n \n Backgroud\n \n In the spirit of the SAC mission statement, “to create, share\n and steward the national database of sheltered animals that\n provides facts and enables insights to save lives”, the SAC\n Board of Directors has established a policy and agreement to\n ensure we can both share Data and be good stewards of the Data\n and its use.\n \n
    \n
  • \n .It is the\n responsibility of those requesting access to Data and\n forming Coalitions to take the time to fully understand the\n limitations of the dataset (i.e. the Data may be incomplete\n for a particular period of time, community-related Data may\n not represent the bulk of animal intakes in that community,\n etc.).\n
  • \n
  • \n .Data alone is not a\n complete representation of the work of an organization. To\n truly understand the impact and value of an organization you\n must seek out context for the numbers and explore the work\n and impact of an organization beyond the numbers.\n
  • \n
  • \n .Individuals,\n institutions, or others seeking to utilize the Database by\n downloading Data from the SAC website, forming a Coalition,\n or sharing Data among Coalition members must adhere to this\n Coalition Data Use Agreement.\n
  • \n
\n\n Data Use\n \n This Coalition Data Use Agreement (“Agreement”) is between\n you, the manager/owner of the Coalition and user of the Data\n (“Recipient”), and SAC. Recipient agrees to comply with this\n Agreement for each Coalition that you form and for all Data\n that you collect from, use, or distribute to Coalition\n members.\n \n \n If you are requesting Data on behalf of an entity or\n organization, this Agreement applies to the entire\n organization, and “Recipient” means you and that organization.\n You represent and agree that you have the authority, and will\n ensure that, all employees and contractors of your entity or\n organization understand and will abide by this Agreement.\n \n \n After the Effective Date of this Agreement, Recipient's use or\n Publication (as defined below) of Data that was received by\n Recipient prior to the Effective Date shall become subject to\n the terms of this Agreement.\n \n\n Term and Termination\n \n This Agreement will remain in full force and effect until\n terminated as set forth herein. This Agreement will terminate\n \n \n (1) automatically without notice from SAC if Recipient fails\n to comply with the provisions of this Agreement, or\n \n \n (2) immediately upon written notice by either Recipient or SAC\n to the other. Recipient agrees that upon termination of this\n Agreement, it shall return or destroy all copies of any Data,\n in any and all media, in Recipient's custody or control;\n provided that Recipient may retain a copy of the Data on its\n system-wide back-up storage media, 931 Monroe Dr NE | Ste A102\n #109 | Atlanta, GA 30308on the condition that any such\n retained copies are not generally accessible and remain\n subject to the terms of this Agreement. Recipient shall\n certify as to its return or destruction of Data upon request\n by SAC. Within 10 days after termination of this Agreement,\n SAC shall have the right to terminate the Coalition and notify\n all Coalition members of the termination.\n \n \n SAC reserves the right to limit or deny access to the Data,\n Database, downloads, or Coalition Builder tool and to require\n return or destruction of Data by Recipient, with or without\n stated cause, at any time.\n \n\n Use of Data\n \n SAC hereby grants to the Recipient a non-exclusive, revocable,\n limited, non-transferable license to use the Data solely for\n (1) research, reporting, scholarly, or academic purposes, or\n (2) Recipient's internal, non-commercial use. Recipient shall\n not disclose any Data except as permitted by this Agreement\n and subject to the following requirements:\n \n \n SAC reserves the right to limit or deny access to the Data,\n Database, downloads, or Coalition Builder tool and to require\n return or destruction of Data by Recipient, with or without\n stated cause, at any time.\n \n
    \n
  • \n Data that is included in scholarly, research, or academic\n publications or in any news reporting, websites, email,\n social media, written communication, or video (collectively,\n “Publication”) must not identify any person, individual\n animal, organization, or shelter.\n
  • \n
  • \n Data that is included in any Publication must include only\n aggregated or summarized Data and shall not include the\n complete or original Data set provided by SAC.\n
  • \n
  • \n No Publication may disparage or otherwise portray in a\n negative light SAC or any contributor to the Data. SAC has\n adopted a purposefully positive view of the efforts and\n intentions of individuals and agencies in animal welfare and\n control. As a result, Recipient must, in the context of the\n use of the Data, treat the member organizations of the\n Database with respect, regardless of Recipient's personal\n opinions.\n
  • \n
  • \n .Each Publication\n shall include an acknowledgement of “Shelter Animals Count”\n as the source of the Data and include the following\n legend:“The information contained herein was derived from\n data supplied by Shelter Animals Count. Shelter Animals\n Count specifically disclaims all responsibility for any\n analysis, interpretations, conclusions and opinions\n contained in or derived from the information presented.”\n
  • \n
  • \n .Recipient shall\n promptly notify SAC of any Publication in news reporting,\n website, social media, promotional email, or video form and\n provide the appropriate citation or location of such\n Publication.\n
  • \n
  • \n .Recipient must\n promptly report to SAC any use or disclosure of the Data\n that is not permitted by this Agreement of which it becomes\n aware.\n
  • \n
\n\n Prohibited Uses\n \n Except as set forth herein, Recipient may not reproduce,\n lease, loan, distribute, or sublicense, disclose, or otherwise\n transfer any Data, in whole or in part, to any other person or\n entity. In addition, Recipient shall not:\n \n
    \n
  • \n .Use Data to rate,\n rank, score, or compare a shelter, organization, or Data\n contributor to any other shelter, organization, or Data\n contributor\n
  • \n
  • \n .Use Data as\n justification for criticizing, making negative statements\n about, or vilifying the work of any individual,\n organization, or shelter\n
  • \n
  • \n .Use the Data to\n create any derived product for resale, lease, or license\n
  • \n
  • \n .Use the Data for any\n commercial purpose without prior written consent from SAC\n
  • \n
  • \n .Use the Data for any\n illegal purpose\n
  • \n
  • \n .Introduce into the\n Data or the SAC website viruses, worms, or other material\n that is malicious or technologically harmful\n
  • \n
  • \n .Upload illegal,\n infringing, or defamatory content.{\" \"}\n
  • \n
\n \n Recipient shall take all reasonable measures to prevent the\n disclosure of the Data except as set forth in this Agreement\n or as may be required by law. If Recipient receives a request\n pursuant to court order or governmental proceeding to disclose\n Data, then, prior to any such disclosure, Recipient will\n provide SAC with reasonable prior notice and will use\n reasonable efforts assist SAC in obtaining a protective order\n or confidential treatment of the Data.{\" \"}\n \n \n SAC has taken measures to ensure that the Data is devoid of\n information that could be used to identify individual animals,\n persons, or organizations. If Recipient discovers any\n individual-identifying or organization-identifying information\n in the Data, Recipient shall immediately notify SAC and delete\n such identifying information.\n \n\n SAC Representations and Warranties\n \n SAC REPRESENTS THAT IT HAS ALL RIGHTS REQUIRED TO MAKE\n AVAILABLE AND DISTRIBUTE THE DATA ON THE TERMS SET FORTH IN\n THIS AGREEMENT. EXCEPT FOR SUCH REPRESENTATION, THE DATA IS\n PROVIDED “AS IS” AND “AS AVAILABLE” AND WITHOUT WARRANTY OF\n ANY KIND, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\n NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE, AND ANY WARRANTIES IMPLIED BY ANY COURSE OF\n PERFORMANCE OR USAGE OF TRADE, ALL OF WHICH ARE EXPRESSLY\n DISCLAIMED. WITHOUT LIMITING THE FOREGOING, SAC DOES NOT\n WARRANT THAT: (A) THE DATA IS ACCURATE, COMPLETE, RELIABLE, OR\n CORRECT; (B) THE DATA WILL BE AVAILABLE AT ANY PARTICULAR TIME\n OR LOCATION; (C) ANY DEFECTS OR ERRORS WILL BE CORRECTED; (D)\n THE DATA IS FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS; OR\n (E) THE RESULTS OF USING THE DATA WILL MEET RECIPIENT'S\n REQUIREMENTS. RECIPIENT'S USE OF THE DATA IS SOLELY AT\n RECIPIENT'S OWN RISK.\n \n\n Recipient's Representations\n \n Recipient represents and warrants that it is in compliance\n with all applicable local, state, tribal, and federal laws,\n regulations and other requirements to which Recipient is\n subject. The individual signing this Agreement as, or on\n behalf of, Recipient is duly authorized to enter into this\n Agreement. This Agreement is binding and enforceable on\n Recipient in accordance with its terms.\n \n\n Limitation of Liability\n \n IN NO EVENT SHALL SAC BE LIABLE TO RECIPIENT OR ANY THIRD\n PARTY, UNDER CONTRACT, TORT, STRICT LIABILITY, NEGLIGENCE OR\n ANY OTHER LEGAL THEORY WITH RESPECT TO THE DATA FOR ANY (A)\n DIRECT DAMAGES, OR (B) LOST PROFITS OR SPECIAL, INDIRECT,\n INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES OF ANY KIND\n WHATSOEVER, INCLUDING WITHOUT LIMITATION DAMAGES FOR THE\n INABILITY TO USE EQUIPMENT OR ACCESS DATA, LOSS OF BUSINESS,\n LOSS OF REVENUE OR PROFITS, BUSINESS INTERRUPTIONS, LOSS OF\n INFORMATION OR DATA, OR OTHER FINANCIAL LOSS, ARISING OUT OF\n THE USE OF, OR INABILITY TO USE, THE DATA, EVEN IF SAC HAS\n BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n \n\n Indemnification\n \n Recipient shall defend, indemnify, and hold harmless SAC,\n including its respective affiliates, directors, officers,\n managers, employees, representatives, agents, assigns, and\n successors, for, from, and against all costs, claims, losses,\n liabilities, property damage, bodily injury or death, or\n intellectual property infringement (including reasonable\n attorneys' fees and expenses), incident to or arising out of\n Recipient's: (a) breach of this Agreement; (b) infringement of\n any third-party intellectual property right; (c) violation of\n applicable law; and (d) use of the Data and any Publication.\n \n\n Equitable Relief\n \n Recipient recognizes and acknowledges that a breach of this\n Agreement may cause SAC irreparable damage which cannot be\n readily remedied in monetary damages in an action at law. In\n the event of any default or breach by Recipient of this\n Agreement, SAC shall be entitled to immediate injunctive\n relief and/or specific performance as a remedy, without the\n necessity of posting a bond or proving the inadequacy of money\n damages. Such remedy shall be in addition to any other\n remedies available.\n \n\n Miscellaneous\n \n (a) SAC may assign, transfer, or delegate any of its rights\n and obligations hereunder at any time. Recipient shall not\n transfer, assign, or sublicense, in whole or in part, any of\n its rights or obligations under this Agreement without the\n prior written consent of SAC.\n \n \n (b) No agency, partnership, joint venture, or employment\n relationship is created as a result of the Agreement and\n neither party has any authority of any kind to bind the other\n in any respect outside of the terms described within this\n Agreement.\n \n \n (c) This Agreement represents the entire agreement between\n Recipient and SAC with respect to the Data and the Database\n and supersedes all prior or contemporaneous communications and\n proposals (whether oral, written or electronic). If any\n provision of this Agreement is found to be unenforceable or\n invalid, that provision will be limited or eliminated to the\n minimum extent necessary so that the Agreement will otherwise\n remain in full force and effect and enforceable, and the\n invalid or unenforceable provision shall be modified to the\n extent necessary to allow for enforceability and to give\n effect to the original intent of the parties to the extent\n possible. The failure of either party to insist upon the\n performance of any term or provision of this Agreement or to\n exercise any right herein conferred shall not be construed as\n a waiver or relinquishment to any extent of such party's right\n to assert or rely upon any such term or right on any future\n occasion. This Agreement shall not be construed for or against\n any party on the basis of which party drafted this Agreement,\n and each party acknowledges that it has had the opportunity to\n review this Agreement with its respective legal counsel to the\n party's satisfaction.\n \n \n (d) All provisions that logically ought to survive termination\n shall survive of this Agreement, including without limitation\n provisions relating to obligations of non-disclosure,\n limitation on liability, indemnity provisions, and choice of\n law and dispute resolution.\n \n \n (e) SAC may modify the terms of this Agreement at any time.\n SAC shall make reasonable efforts to inform Recipient of the\n modifications. Continued management/ownership of a Coalition,\n creation of new Coalitions, and use of Data subsequent to such\n modification shall be subject to the modified terms.\n \n\n \n (f) Notices shall be deemed served when received by addressee\n or, if delivery fails by reason of some fault or action of the\n addressee, when tendered for delivery. All notices shall be in\n writing, reference this Agreement, and be delivered by\n electronic mail, hand, prepaid courier, or registered or\n certified mail (postage prepaid) to the address provided at\n the time the parties enter into this Agreement.\n \n \n (g) This Agreement shall be governed by and construed in\n accordance with the laws of the United States of America and\n the District of Columbia, excluding conflict of law\n provisions. Recipient expressly agrees to jurisdiction for any\n claim or action arising out of or relating to this Agreement\n in the state or federal courts located in the District of\n Columbia, and further agrees and submits to the exercise of\n personal jurisdiction of those courts for the purpose of\n litigating any such claim or action. SAC may seek injunctive\n or equitable relief in any court of competent jurisdiction. In\n any action or proceeding to enforce rights or obligations\n under the Agreement, the prevailing party will be entitled to\n recover costs and attorneys' fees.\n \n \n (h) Recipient shall not use the name or trademarks of SAC in\n any advertising, publicity, endorsement, promotion, or other\n publicly available document without SAC's prior written\n consent, except for inclusion of the required legend as\n described above under “Use of Data.”\n \n \n BY CLICKING “OUR COALITION AGREES TO THE DATA USE AGREEMENT\n ABOVE” YOU ACKNOWLEDGE THAT YOU HAVE READ, UNDERSTAND, AND\n AGREE TO BE BOUND BY THESE TERMS. THESE TERMS ARE A LEGAL\n CONTRACT THAT WILL BIND BOTH OF US AS SOON AS YOU CLICK THE\n ASSENT BUTTON. IF YOU REJECT THE PROPOSED TERMS, YOU WILL BE\n DENIED ACCESS TO THE FORMATION OF A COALITION AND/OR THE DATA\n THAT YOU ARE REQUESTING.\n \n
\n
\n
\n\n
\n {\n \n }\n
\n {formMode === FORM_MODES.VIEW &&\n coalition.attributes.dataUseTimestamp && (\n <>\n Last agreement :{\" \"}\n {new Date(\n coalition.attributes.dataUseTimestamp\n ).toLocaleString()}\n \n )}\n
\n
\n\n {formMode !== FORM_MODES.VIEW && (\n
\n \n\n Saving…}\n onClick={handleSubmit}\n >\n {formMode === FORM_MODES.EDIT ? \"Update\" : \"Add\"}\n \n
\n )}\n\n \n \n )}\n \n );\n};\n\nCoalitionForm.propTypes = {\n coalition: PropTypes.object.isRequired,\n formMode: PropTypes.string,\n cancelRoute: PropTypes.string,\n onUpdateSuccess: PropTypes.func,\n onUpdateError: PropTypes.func,\n};\n\nCoalitionForm.defaultProps = {\n formMode: FORM_MODES.VIEW,\n};\n\nexport default CoalitionForm;\n\nconst FormContext = ({\n formMode,\n coalition,\n isSuccess,\n setIsSuccess,\n setShowState,\n}) => {\n const {\n resetForm,\n dirty,\n values: { operatingRegionType },\n setFieldValue,\n } = useFormikContext();\n\n useEffect(() => {\n resetForm({\n values: getInitialValues({ coalition, formMode }),\n });\n }, [formMode, coalition, resetForm]);\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n useEffect(() => {\n setShowState(\n !!operatingRegionType &&\n operatingRegionType !== COALITION_TYPES.NATIONAL &&\n operatingRegionType !== COALITION_TYPES.INTERNATIONAL\n );\n }, [operatingRegionType, setFieldValue]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n\nconst getInitialValues = ({ coalition, formMode }) => {\n const isViewMode = formMode === FORM_MODES.VIEW;\n return {\n name: coalition.attributes.name || (isViewMode ? \"--\" : \"\"),\n country:\n coalition.attributes.country || (isViewMode ? \"--\" : \"United States\"),\n description: coalition.attributes.description || (isViewMode ? \"--\" : \"\"),\n dataUsed: coalition.attributes.dataUsed || (isViewMode ? \"--\" : \"\"),\n dataUseAgreement: coalition.attributes.dataUseAgreement || false,\n dataUseTimestamp: coalition.attributes.dataUseTimestamp || \"\",\n operatingRegionType:\n coalition.attributes.operatingRegionType || (isViewMode ? \"--\" : \"\"),\n operatingRegion:\n coalition.attributes.operatingRegion ||\n (coalition.attributes.operatingRegionType === COALITION_TYPES.MULTISTATE\n ? []\n : \"\"),\n allIntakeOutcomeDataRequest:\n formMode === FORM_MODES.ADD\n ? true\n : coalition.attributes.allIntakeOutcomeDataRequest,\n allCommunityServiceDataRequest:\n formMode === FORM_MODES.ADD\n ? true\n : coalition.attributes.allCommunityServiceDataRequest,\n };\n};\n","import React from \"react\";\nimport { useQueryClient } from \"react-query\";\nimport { useHistory } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport { FORM_MODES, formatUiErrors } from \"utils\";\nimport CoalitionForm from \"components/CoalitionForm\";\nimport BackLink from \"components/BackLink\";\n\nconst AddCoalition = ({ path = \"\" }) => {\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const handleUpdateSuccess = () => {\n history.push(`${path}/coalitions`);\n\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n\n queryClient.invalidateQueries([\"coalitions\"], {\n refetchInActive: true,\n });\n queryClient.invalidateQueries([\"myCoalitions\"], {\n refetchInActive: true,\n });\n queryClient.invalidateQueries([\"orgCoalitions\"], {\n refetchInActive: true,\n });\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n return (\n <>\n
\n \n

Create Coalition

\n
\n\n \n \n );\n};\n\nexport default AddCoalition;\n","import React, { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst ComparisonDashboard = () => {\n const { orgId } = useParams();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ComparisonDashboard;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { API_URL, formatDateTime } from \"utils\";\nimport { useAuthState } from \"context\";\nimport Table from \"components/Table\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\n\nconst EntryLogs = () => {\n const { token } = useAuthState();\n const { orgId } = useParams();\n const [response, setResponse] = useState([]);\n const [error, setError] = useState(\"\");\n const [isLoading, setIsLoading] = useState(true);\n\n const fetchData = async () => {\n setIsLoading(true);\n const { accessToken, client, expiry, uid } = token;\n const response = await fetch(\n `${API_URL}/api/v1/entry_logs?page=1&orgId=${orgId}`,\n {\n method: \"get\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n }\n );\n\n const responseJson = await response.json();\n const { data, error } = responseJson;\n setResponse(data);\n setError(error);\n setIsLoading(false);\n };\n useEffect(() => {\n fetchData();\n }, []);\n if (isLoading) {\n return Loading logs…} />;\n }\n\n const columns = [\n {\n accessor: \"created_at\",\n Header: \"Created At\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return formatDateTime(cell.value);\n },\n },\n {\n accessor: \"month\",\n Header: \"Month of Record\",\n },\n {\n accessor: \"year\",\n Header: \"Year of Record\",\n },\n {\n accessor: \"updated_at\",\n Header: \"Updated At\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return formatDateTime(cell.value);\n },\n },\n {\n accessor: \"channel\",\n Header: \"Data Entry Type\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return cell.value.toUpperCase();\n },\n },\n {\n accessor: \"location_id\",\n Header: \"Location Id\",\n },\n ];\n\n return (\n
\n \n
\n );\n};\n\nexport default EntryLogs;\n","import React, { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst AnalyticsAndForecast = () => {\n const { orgId } = useParams();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AnalyticsAndForecast;\n","import React from \"react\";\nimport * as Yup from \"yup\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport FormField from \"components/FormField\";\nimport {\n OrganizationSearchableOptInTooltip,\n OrganizationCommunicationsOptInTooltip,\n OrganizationMediaOptInTooltip,\n} from \"components/Tooltips\";\nimport { Form, Formik } from \"formik\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport Button from \"components/Button\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Error from \"components/Error\";\n\nconst SharingPermissions = () => {\n const { orgId } = useParams();\n const { token } = useAuthState();\n const { isOrgAdmin } = useUserState();\n const dispatch = useAuthDispatch();\n\n const sharingPermissionsSchema = Yup.object().shape({\n communicationsOptIn: Yup.boolean(),\n searchableOptIn: Yup.boolean(),\n mediaOptIn: Yup.boolean(),\n });\n\n const {\n isOrgLoading,\n error,\n data: response,\n } = useQuery([\"organization\", orgId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${orgId}`,\n })\n );\n\n const initialValues = getInitialValues(response?.data);\n\n const { mutate: updateSharingPermissions, isLoading } = useMutation(\n ({ communicationsOptIn, searchableOptIn, mediaOptIn }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${orgId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: orgId,\n type: \"organizations\",\n attributes: {\n ...(isOrgAdmin\n ? {\n communicationsOptIn,\n searchableOptIn,\n mediaOptIn,\n }\n : {}),\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toast.success(\"Sharing permissions updated successfully\", {\n autoClose: 3000,\n });\n },\n onError: (e) => {\n toast.error(() => formatUiErrors(e), {\n autoClose: 5000,\n });\n },\n }\n );\n\n if (isOrgLoading) {\n return (\n Loading organization…} />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n

Sharing Permissions

\n\n \n {({ handleSubmit }) => (\n
\n
\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n\n }\n tooltipWidthClass=\"w-80\"\n >\n \n \n \n\n
\n Saving…}\n onClick={handleSubmit}\n >\n Update\n \n
\n
\n
\n )}\n \n \n );\n};\n\nexport default SharingPermissions;\n\nconst getInitialValues = (organization) => {\n return {\n communicationsOptIn: organization?.attributes.communicationsOptIn,\n searchableOptIn: organization?.attributes.searchableOptIn,\n mediaOptIn: organization?.attributes.mediaOptIn,\n };\n};\n","export function getUniqueTypeSubtypePairs(data) {\n const uniquePairs = new Set();\n\n data.forEach((obj) => {\n const pair = `${obj.eventType}=${obj.subtype}=${extractSacCategory(\n obj.intakeOutcomeType\n )}`;\n uniquePairs.add(pair);\n });\n\n const uniquePairsArray = Array.from(uniquePairs);\n\n const result = uniquePairsArray.map((pair) => {\n const [type, subtype, sacCategory] = pair.split(\"=\");\n const key = `${type}=${subtype}`;\n return { type, subtype, key, sacCategory };\n });\n\n return result; // Return the array of unique type and subtype pairs\n}\n\nexport const intakeCategories = [\n {\n name: \"Stray at Large\",\n value: \"stray_at_large_count\",\n },\n {\n name: \"Relinquished by Owner\",\n value: \"relinquished_by_owner_count\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n value: \"owner_intended_euthanasia_count\",\n },\n {\n name: \"Transferred In State\",\n value: \"transferred_instate_in_from_agency_count\",\n },\n {\n name: \"Transferred Out of State\",\n value: \"transferred_out_of_state_in_from_agency_count\",\n },\n {\n name: \"Transferred Internationally\",\n value: \"transferred_internationally_in_from_agency_count\",\n },\n {\n name: \"Transferred Undesignated\",\n value: \"legacy_transferred_in_from_agency_count\",\n },\n {\n name: \"Seized or Impounded\",\n value: \"seized_or_impounded_count\",\n },\n {\n name: \"Other Intakes\",\n value: \"other_intakes_count\",\n },\n {\n name: \"Do not include\",\n value: \"do_not_include\",\n },\n];\n\nexport const outcomeCategories = [\n {\n name: \"Adoption\",\n value: \"adoption_count\",\n },\n {\n name: \"Return to Owner\",\n value: \"returned_to_owner_count\",\n },\n {\n name: \"Return to field\",\n value: \"returned_to_field_count\",\n },\n {\n name: \"Transferred In State\",\n value: \"transferred_instate_to_another_agency_count\",\n },\n {\n name: \"Transferred Out of State\",\n value: \"transferred_out_of_state_to_another_agency_count\",\n },\n {\n name: \"Transferred Internationally\",\n value: \"transferred_internationally_to_another_agency_count\",\n },\n {\n name: \"Transferred Undesignated\",\n value: \"legacy_transferred_to_another_agency_count\",\n },\n {\n name: \"Shelter Euthanasia\",\n value: \"shelter_euthanasia_count\",\n },\n {\n name: \"Died in Care\",\n value: \"died_in_care_count\",\n },\n {\n name: \"Lost in Care\",\n value: \"lost_in_care_count\",\n },\n {\n name: \"Owner Intended Euthanasia\",\n value: \"owner_intended_euthanasia_count\",\n },\n {\n name: \"Do not include\",\n value: \"do_not_include\",\n },\n];\n\nfunction extractSacCategory(inputString) {\n if (!inputString || inputString === \"null\") {\n return null;\n }\n\n return inputString;\n}\n","import React, { useState } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport FormField from \"components/FormField\";\nimport Button from \"components/Button\";\nimport {\n intakeCategories,\n outcomeCategories,\n getUniqueTypeSubtypePairs,\n} from \"./utils\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport { toast } from \"react-toastify\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { useMutation, useQuery } from \"react-query\";\nimport Error from \"components/Error\";\nimport { FORM_MODES } from \"utils\";\nimport { useParams } from \"react-router-dom\";\n\nexport default function ApiMappingTable({ formMode, setFormMode }) {\n const { token } = useAuthState();\n const { orgId } = useParams();\n const dispatch = useAuthDispatch();\n const [sacCategoryGroups, setSacCategoryGroups] = useState([]);\n const [sacCategoryData, setSacCategoryData] = useState([]);\n\n const { isFetching, error } = useQuery(\n [\"organizationAnimalEvents\", { orgId }],\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_events?filter[org_id][eq]=${orgId}`,\n includeMeta: true,\n }),\n {\n onSuccess: (data) => {\n setSacCategoryGroups(data.data);\n setSacCategoryData(getUniqueTypeSubtypePairs(data.data));\n },\n }\n );\n\n const outcomeData = sacCategoryData.filter((obj) =>\n obj?.type?.includes(\"Outcome\")\n );\n const intakeData = sacCategoryData.filter((obj) =>\n obj?.type?.includes(\"Intake\")\n );\n\n const handleSave = (group) => {\n const oldGroupIndex = sacCategoryData.findIndex(\n (obj) => obj.key === group.key\n );\n const newGroup = sacCategoryData.filter((obj) => obj.key !== group.key);\n newGroup.splice(oldGroupIndex, 0, group);\n setSacCategoryData([...newGroup]);\n };\n\n const { mutate: mapCategories, isLoading } = useMutation(\n () =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/animal_events/map_sac_categories\",\n body: {\n orgId,\n sacCategoryData,\n },\n }),\n {\n onSuccess: () => {\n toast.success(`SAC Categories mapped successfully`, {\n autoClose: 3000,\n });\n setFormMode(\"VIEW\");\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n className: \"toast-center\",\n });\n },\n }\n );\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n
\n {formMode !== FORM_MODES.VIEW && (\n
\n {\n setFormMode(\"VIEW\");\n setSacCategoryData(\n getUniqueTypeSubtypePairs(sacCategoryGroups)\n );\n }}\n >\n Cancel\n \n
\n )}\n\n {formMode === FORM_MODES.VIEW && (\n
\n {\n setFormMode(\"EDIT\");\n setSacCategoryData(\n getUniqueTypeSubtypePairs(sacCategoryGroups)\n );\n }}\n >\n Edit\n \n
\n )}\n
\n
\n
\n \n Intakes\n \n \n Subtypes\n \n \n SAC Category\n \n
\n
\n {isFetching && intakeData.length === 0 ? (\n
\n \n Loading data…\n \n
\n ) : (\n intakeData.length === 0 && (\n
\n \n No data found\n \n
\n )\n )}\n {intakeData.map((obj, idx) => (\n \n ))}\n
\n
\n
\n
\n \n Outcomes\n \n \n Subtypes\n \n \n SAC Category\n \n
\n
\n {isFetching ? (\n
\n \n Loading data…\n \n
\n ) : (\n outcomeData.length === 0 && (\n
\n \n No data found\n \n
\n )\n )}\n {outcomeData.map((obj, idx) => (\n \n ))}\n
\n
\n
\n {formMode !== FORM_MODES.VIEW && (\n Mapping…}\n onClick={mapCategories}\n type=\"button\"\n >\n Save\n \n )}\n {formMode !== FORM_MODES.VIEW && (\n {\n setFormMode(\"VIEW\");\n setSacCategoryData(getUniqueTypeSubtypePairs(sacCategoryGroups));\n }}\n >\n Cancel\n \n )}\n\n {formMode === FORM_MODES.VIEW && (\n {\n setFormMode(\"EDIT\");\n setSacCategoryData(getUniqueTypeSubtypePairs(sacCategoryGroups));\n }}\n >\n Edit\n \n )}\n
\n \n );\n}\n\nconst CategoryForm = ({ data, categoryData, idx, handleSave, formMode }) => (\n \n {({ values }) => (\n \n \n \n {\n handleSave({ ...values, sacCategory: e.target.value });\n }}\n >\n \n {categoryData.map((category) => (\n \n ))}\n \n \n )}\n \n);\n","import React, { useState } from \"react\";\nimport ApiMappingTable from \"components/ApiMappingTable\";\n\nexport default function ApiMapping() {\n const [formMode, setFormMode] = useState(\"VIEW\");\n\n return (\n
\n \n
\n );\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { apiFetch } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { useQuery } from \"react-query\";\n\nexport default function RehomeDashboard() {\n const [tin, setTin] = useState(\"\");\n const { orgId } = useParams();\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n\n useQuery(\n [\"organizationLocations\", orgId],\n async () => {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${orgId}`,\n });\n\n return response.data;\n },\n {\n onSuccess: (data) => {\n setTin(\n data.attributes.country === \"United States\"\n ? data.attributes.ein\n : data.attributes.businessNumber\n );\n },\n }\n );\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst CommunityServicesTotals = () => {\n const { orgId } = useParams();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CommunityServicesTotals;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst IntakeOutcomeTotals = () => {\n const { orgId } = useParams();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IntakeOutcomeTotals;\n","import React from \"react\";\nimport { useQuery } from \"react-query\";\nimport {\n useParams,\n Switch,\n Route,\n Redirect,\n useRouteMatch,\n} from \"react-router-dom\";\nimport {\n apiFetch,\n formatUiErrors,\n FORM_MODES,\n ROUTE_GUARDS,\n usePermissions,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Tabs from \"components/Tabs\";\nimport OrganizationDetails from \"./components/OrganizationDetails\";\nimport Locations from \"./components/Locations\";\nimport LocationDetails from \"./components/LocationDetails\";\nimport AddLocation from \"./components/AddLocation\";\nimport Members from \"./components/Members\";\nimport AddMember from \"./components/AddMember\";\nimport MemberDetails from \"./components/MemberDetails\";\nimport DataEntryExport from \"screens/DataEntryExport\";\nimport { PrivateRoute } from \"components/Routes\";\nimport CoalitionsTable from \"components/CoalitionsTable\";\nimport AddCoalition from \"screens/CoalitionBuilder/AddCoalition\";\nimport ComparisonDashboard from \"./components/ComparisonDashboard\";\nimport EntryLogs from \"./components/EntryLogs\";\nimport AnalyticsAndForecast from \"./components/AnalyticsAndForecast\";\nimport SharingPermissions from \"./components/SharingPermissions\";\nimport ApiMapping from \"./components/ApiMapping\";\nimport RehomeDashboard from \"./components/RehomeDashboard\";\nimport CommunityServicesTotals from \"./components/CommunityServicesTotals\";\nimport IntakeOutcomeTotals from \"./components/IntakeOutcomeTotals\";\n\nconst Organization = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { orgId } = useParams();\n const { url, path } = useRouteMatch();\n const cleanUrl = url.replace(/\\/$/, \"\");\n const { isOrgAdmin } = useUserState();\n const permissions = usePermissions();\n\n const isAdmin = permissions[ROUTE_GUARDS.ADMIN]();\n\n const isOrgMember = permissions[ROUTE_GUARDS.CAN_VIEW_ORG]();\n\n const {\n isLoading,\n error,\n data: response,\n } = useQuery([\"organization\", orgId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${orgId}`,\n })\n );\n\n const orgApiProvider = response?.data?.attributes?.shelterSoftware;\n\n const tabs = [\n {\n to: cleanUrl,\n label: \"Details\",\n isActive: (match, location) => {\n const editRegex = /\\/organizations\\/[\\d]+\\/edit[/]?/;\n return match || editRegex.test(location.pathname);\n },\n },\n {\n to: `${cleanUrl}/locations`,\n label: \"Locations\",\n exact: false,\n },\n ...(isOrgMember\n ? [\n {\n to: `${cleanUrl}/members`,\n label: \"Members\",\n exact: false,\n },\n ]\n : []),\n ...(isAdmin\n ? [\n {\n to: `${cleanUrl}/coalitions`,\n label: \"Coalitions\",\n },\n {\n to: `${cleanUrl}/export`,\n label: \"Export Data\",\n },\n ]\n : []),\n ...(isAdmin\n ? [\n {\n to: `${cleanUrl}/entry-logs`,\n label: \"Data Entry Log\",\n },\n {\n to: `${cleanUrl}/comparison_dashboard`,\n label: \"Comparison Tableau\",\n exact: false,\n },\n {\n to: `${cleanUrl}/analytics_forecast`,\n label: \"Analytics & Forecast\",\n exact: false,\n },\n {\n to: `${cleanUrl}/rehome_dashboard`,\n label: \"Rehome Dashboard\",\n exact: false,\n },\n {\n to: `${cleanUrl}/community-services-totals`,\n label: \"Community Services Totals\",\n exact: false,\n },\n {\n to: `${cleanUrl}/intake-outcome-totals`,\n label: \"Intake Outcome Totals\",\n exact: false,\n },\n ]\n : []),\n ...(isOrgAdmin && isOrgMember\n ? [\n {\n to: `${cleanUrl}/sharing-permissions`,\n label: \"Sharing Permissions\",\n exact: false,\n },\n ]\n : []),\n ...(isOrgAdmin &&\n isOrgMember &&\n (orgApiProvider === \"ShelterLuv\" || orgApiProvider === \"ShelterBuddy\")\n ? [\n {\n to: `${cleanUrl}/api-mapping`,\n label: \"API Mapping\",\n exact: false,\n },\n ]\n : []),\n ];\n\n if (isLoading) {\n return (\n Loading organization…} />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n const {\n data: organization,\n data: {\n attributes: { name },\n },\n } = response;\n\n return (\n <>\n

{name}

\n\n \n\n
\n \n \n }\n />\n \n \n \n \n \n \n \n \n \n \n {isOrgAdmin && isOrgMember && (\n \n )}\n \n \n \n \n \n {isAdmin && (\n <>\n (\n <>\n

Coalitions

\n \n \n )}\n />\n }\n />\n (\n \n )}\n />\n \n )}\n \n
\n
\n \n );\n};\n\nexport default Organization;\n","import React, { useState, useEffect } from \"react\";\nimport { useQuery, useMutation, useQueryClient } from \"react-query\";\nimport { Link } from \"react-router-dom\";\nimport { MenuItem, FocusableItem } from \"@szhsin/react-menu\";\nimport { toast } from \"react-toastify\";\nimport { get } from \"lodash\";\nimport { apiFetch, getTotalPages } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { Formik, Form } from \"formik\";\nimport Table from \"components/Table\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport Pagination from \"components/Pagination\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport AlertModal from \"components/AlertModal\";\nimport ConfirmationModal from \"components/ConfirmationModal\";\n\nconst Users = () => {\n const { token, userId } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [search, setSearch] = useState(\"\");\n const [status, setStatus] = useState(\"\");\n const [userToDelete, setUserToDelete] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalError, setModalError] = useState(null);\n\n const getUsers = async ({ page = 1, search = \"\", status = \"\" }) => {\n return await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users?page[number]=${page}&filter[id][not_eq]=${userId}&stats[total]=count&sort=full_name${\n search ? `&filter[search]=${search}` : \"\"\n }${status ? `&filter[status][eq]=${status}` : \"\"}`,\n includeMeta: true,\n });\n };\n\n // Initial query\n const {\n data: response = { data: [] },\n error,\n isLoading,\n } = useQuery(\n [\"users\", { page, search, status }],\n () => getUsers({ page, search, status }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of users\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"users\", { page: page + 1, search, status }],\n () => getUsers({ page: page + 1, search, status })\n );\n }\n }, [response, page, search, queryClient, status]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.fullName\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.email\",\n Header: \"Email\",\n },\n {\n accessor: \"attributes.confirmedAt\",\n Header: \"Confirmation Status\",\n Cell: ({ cell }) => (cell.value ? \"Confirmed\" : \"Unconfirmed\"),\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original }, cell }) => (\n \n ),\n },\n ];\n\n const openModal = (user) => {\n setUserToDelete(user);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n setModalError(null);\n setUserToDelete(null);\n };\n\n const { mutate: deleteUser, isLoading: isLoadingDeleteUser } = useMutation(\n ({ id }) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/resource_archivers\",\n body: {\n data: {\n type: \"resource_archivers\",\n attributes: {\n resourceId: id,\n resourceType: \"user\",\n },\n },\n },\n }),\n {\n onSuccess: () => {\n toast.success(\n `Deleted ${userToDelete.attributes.fullName} successfully`,\n {\n autoClose: 3000,\n }\n );\n // Refresh the users queries\n queryClient.invalidateQueries(\"users\", {\n refetchActive: true,\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n const handleSubmit = (values) => {\n if (values.search !== search) {\n setSearch(values.search);\n }\n if (values.status !== status) {\n setStatus(values.status);\n }\n };\n\n return (\n <>\n

Users

\n\n
\n \n {({ setFieldValue }) => (\n
\n
\n \n
\n\n
\n \n \n \n \n \n
\n\n
\n \n {\n setFieldValue(\"search\", \"\");\n setFieldValue(\"status\", \"\");\n setSearch(\"\");\n setStatus(\"\");\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n
\n
\n )}\n
\n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n\n \n deleteUser(userToDelete)}\n />\n \n \n );\n};\n\nexport default Users;\n\nconst Menu = ({ id, user, triggerDeleteUserModal }) => {\n return (\n \n {/* View */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n {/* Edit */}\n \n {({ ref }) => (\n \n Edit Details\n \n )}\n \n {/* Delete */}\n {!user.attributes.archivedAt && (\n triggerDeleteUserModal(user)}>\n Delete User\n \n )}\n \n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useQuery, useQueryClient } from \"react-query\";\nimport Table from \"components/Table\";\nimport Button from \"components/Button\";\nimport Pagination from \"components/Pagination\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Error from \"components/Error\";\nimport {\n formatEin,\n formatDateTime,\n getTotalPages,\n titleCase,\n formatUiErrors,\n getOrganizations,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { get, uniq } from \"lodash\";\n\nconst UserOrganizations = ({ userId }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"userOrgs\", { page, userId }],\n () => getOrganizations({ token, dispatch, page, userId }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery([\"userOrgs\", { page: page + 1, userId }], () =>\n getOrganizations({ token, dispatch, page: page + 1, userId })\n );\n }\n }, [response, page, userId, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.incorporatedOn\",\n Header: \"Date Created\",\n Cell: ({ cell }) => formatDateTime(cell.value),\n },\n {\n accessor: \"attributes.locationsCount\",\n Header: \"Number of Locations\",\n },\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n {\n accessor: \"attributes.locationsUsStates\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.status\",\n Header: \"Status\",\n Cell: ({ cell }) => titleCase(cell.value) || \"\",\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ cell }) => (\n \n View Organization\n \n ),\n },\n ];\n\n if (isLoading) {\n return (\n Loading organizations…} />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n

Organizations

\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nUserOrganizations.propTypes = {\n userId: PropTypes.string.isRequired,\n};\n\nexport default UserOrganizations;\n","import React, { useState, useEffect } from \"react\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { useQuery, useQueryClient } from \"react-query\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport { getTotalPages, camelToTitle, getCoalitions } from \"utils\";\nimport { uniq, get } from \"lodash\";\nimport Button from \"components/Button\";\n\nconst UserCoalitions = ({ userId }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n\n // Pagination\n const [totalPages, setTotalPages] = useState(0);\n const [page, setPage] = useState(1);\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n isLoading,\n error,\n } = useQuery(\n [\"userCoalitions\", { page, userId }],\n () => getCoalitions({ token, dispatch, page, userId }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of coalitions\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"userCoalitions\", { page: page + 1, userId }],\n () => getCoalitions({ token, dispatch, page: page + 1, userId })\n );\n }\n }, [response, page, userId, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n // Columns - Map up with accessor from Data - attributes.name etc.\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.operatingRegion\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.operatingRegionType\",\n Header: \"Region Type\",\n },\n {\n accessor: \"attributes.organizationsCount\",\n Header: \"Shelters\",\n Cell: ({ cell }) =>
{cell.value}
,\n },\n {\n accessor: \"attributes.description\",\n Header: \"Description\",\n },\n ...(userId\n ? [\n {\n accessor: \"attributes.userRole\",\n Header: \"My Role\",\n Cell: ({ cell, row: { original } }) =>\n `${camelToTitle(cell.value)}${\n original.attributes.userStatus === \"requested\"\n ? ` - (${original.attributes.userStatus})`\n : \"\"\n }`,\n },\n ]\n : []),\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ cell }) => (\n \n View Coalition\n \n ),\n },\n ];\n\n return (\n <>\n

Coalitions

\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nexport default UserCoalitions;\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQueryClient, useQuery } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport { useHistory } from \"react-router-dom\";\nimport { apiFetch, formatUiErrors, FORM_MODES } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Error from \"components/Error\";\nimport Button from \"components/Button\";\nimport UserProfileForm from \"components/UserProfileForm\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport BackLink from \"components/BackLink\";\nimport UserOrganizations from \"./components/UserOrganizations\";\nimport UserCoalitions from \"./components/UserCoalitions\";\n\nconst UserDetails = ({ formMode = FORM_MODES.VIEW }) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { userId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const { isLoading, error, data: response } = useQuery([\"user\", userId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users/${userId}`,\n })\n );\n\n const handleUpdateSuccess = (response) => {\n history.push(`/users/${userId}`);\n\n toast.success(\n
\n {!!response.data.attributes.unconfirmedEmail ? (\n
\n An email was sent to the account for `\n {response.data.attributes.unconfirmedEmail}` to confirm the new\n email address.\n
\n ) : (\n \"Saved successfully\"\n )}\n
,\n {\n autoClose: !!response.data.attributes.unconfirmedEmail ? 5000 : 3000,\n }\n );\n\n queryClient.invalidateQueries([\"users\"], {\n refetchActive: true,\n });\n\n return queryClient.setQueryData([\"user\", userId], response);\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n if (isLoading) {\n return Loading user…} />;\n }\n\n if (error) return {formatUiErrors(error)};\n\n return (\n <>\n
\n \n

\n {formMode === FORM_MODES.EDIT && \"Editing \"}\n {response.data.attributes.fullName}\n

\n\n {formMode === FORM_MODES.VIEW && (\n
\n \n
\n )}\n
\n\n \n\n {formMode === FORM_MODES.VIEW && (\n <>\n
\n \n \n \n )}\n \n );\n};\n\nexport default UserDetails;\n","import React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport Tabs from \"components/Tabs\";\nimport { usePermissions, ROUTE_GUARDS } from \"utils\";\n\nconst CoalitionsNav = () => {\n const { pathname } = useLocation();\n const permissions = usePermissions();\n\n const tabs = [\n {\n to: \"/coalitions\",\n label: \"All Coalitions\",\n isActive: (match) => {\n return match?.url === \"/coalitions\" || pathname === \"/coalitions/add\";\n },\n },\n ...(permissions[ROUTE_GUARDS.HAS_COALITIONS]()\n ? [\n {\n to: `/coalitions/mine`,\n label: \"My Coalitions\",\n },\n ]\n : []),\n ];\n\n return ;\n};\n\nexport default CoalitionsNav;\n","import React from \"react\";\n\nimport { Link } from \"react-router-dom\";\n\nconst PendingCoalitionContributors = ({ data }) => {\n if (!data || !data.length) return null;\n\n return (\n
\n

Pending Coalition Requests

\n\n {data.map((coalition) => (\n
\n
\n {coalition.attributes.name}:{\" \"}\n \n View Contributors\n \n
\n
\n ))}\n
\n );\n};\n\nexport default PendingCoalitionContributors;\n","import React from \"react\";\nimport CoalitionsNav from \"components/CoalitionsNav\";\nimport CoalitionsTable from \"components/CoalitionsTable\";\nimport PendingCoalitionContributors from \"components/PendingCoalitionContributors\";\nimport { useUserState } from \"context\";\n\nconst Coalitions = () => {\n const { organization, pendingCoalitionContributorRequests } = useUserState();\n\n return (\n <>\n

All Coalitions

\n\n \n\n \n\n
\n {/* TODO: Do we need to pass the entire organization object or can we just pass ID? */}\n \n
\n \n );\n};\n\nexport default Coalitions;\n","import React from \"react\";\nimport CoalitionsNav from \"components/CoalitionsNav\";\nimport CoalitionsTable from \"components/CoalitionsTable\";\nimport PendingCoalitionContributors from \"components/PendingCoalitionContributors\";\nimport { useUserState, useAuthState } from \"context\";\n\nconst MyCoalitions = () => {\n const { userId } = useAuthState();\n const { organization, pendingCoalitionContributorRequests } = useUserState();\n\n return (\n <>\n

My Coalitions

\n\n \n\n \n\n
\n \n
\n \n );\n};\n\nexport default MyCoalitions;\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQuery } from \"react-query\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Table from \"components/Table\";\n\nconst CoalitionManagers = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n\n const {\n isLoading,\n error,\n data: response,\n } = useQuery([\"coalitionManagers\", coalitionId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users?&filter[coalition_managers][eq]=${coalitionId}`,\n })\n );\n\n if (isLoading) {\n return (\n Loading coalition managers…}\n />\n );\n }\n\n if (error) return {formatUiErrors(error)};\n\n const columns = [\n {\n accessor: \"attributes.fullName\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.email\",\n Header: \"Email\",\n },\n ];\n\n return (\n <>\n

Coalition Managers

\n \n \n );\n};\n\nexport default CoalitionManagers;\n","import React, { useState } from \"react\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport { useQuery, useQueryClient } from \"react-query\";\nimport { ROUTE_GUARDS, apiFetch, formatUiErrors, usePermissions } from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Error from \"components/Error\";\nimport CoalitionForm from \"components/CoalitionForm\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport BackLink from \"components/BackLink\";\nimport CoalitionManagers from \"./components/CoalitionManagers\";\nimport Button from \"components/Button\";\nimport { toast } from \"react-toastify\";\n\nconst CoalitionDetails = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const permissions = usePermissions();\n const { coalitionId } = useParams();\n const [formMode, seformMode] = useState(\"VIEW\");\n const { isAdmin } = useUserState();\n const isCoalitionManager =\n permissions[ROUTE_GUARDS.COALITION_MANAGER](coalitionId);\n const history = useHistory();\n const queryClient = useQueryClient();\n\n const {\n isLoading,\n error,\n data: response,\n refetch,\n } = useQuery([\"coalition\", coalitionId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalitions/${coalitionId}`,\n })\n );\n\n if (isLoading) {\n return Loading coalition…} />;\n }\n\n if (error) return {formatUiErrors(error)};\n\n const handleUpdateSuccess = () => {\n history.push(`/coalitions/${coalitionId}/detail`);\n refetch();\n seformMode(\"VIEW\");\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n\n queryClient.invalidateQueries([\"coalitions\"], {\n refetchInActive: true,\n });\n queryClient.invalidateQueries([\"myCoalitions\"], {\n refetchInActive: true,\n });\n queryClient.invalidateQueries([\"orgCoalitions\"], {\n refetchInActive: true,\n });\n };\n\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n return (\n
\n
\n
\n \n\n

Details

\n
\n\n \n
\n\n
\n {(isCoalitionManager || isAdmin) && (\n
\n {\n seformMode(\"EDIT\");\n }}\n >\n Edit\n \n
\n )}\n \n
\n
\n );\n};\n\nexport default CoalitionDetails;\n","export const ORGANIZATION_TYPES = {\n ALL: \"All Organization Types\",\n GOVERNMENT_ANIMAL_SERVICES: \"Government Animal Services\",\n ANIMAL_SHELTER_WITH_A_GOVERNMENT_CONTRACT:\n \"Animal Shelter with a Government Contract\",\n ANIMAL_RESCUE_WITH_A_GOVERNMENT_CONTRACT:\n \"Animal Rescue with a Government Contract\",\n SHELTER_WITHOUT_A_GOVERNMENT_CONTRACT:\n \"Shelter without a Government Contract\",\n RESCUE_WITHOUT_A_GOVERNMENT_CONTRACT: \"Rescue without a Government Contract\",\n};\n","import React from \"react\";\nimport FormField from \"components/FormField\";\nimport { ORGANIZATION_TYPES } from \"./utils\";\n\nconst OrganizationTypeDropDown = ({ ...props }) => {\n return (\n \n \n \n \n {ORGANIZATION_TYPES.ANIMAL_SHELTER_WITH_A_GOVERNMENT_CONTRACT}\n \n \n {ORGANIZATION_TYPES.ANIMAL_RESCUE_WITH_A_GOVERNMENT_CONTRACT}\n \n \n \n \n );\n};\n\nexport default OrganizationTypeDropDown;\n","import { cloneDeep } from \"lodash\";\nimport { titleCase, getOrgDataStatus } from \"utils\";\n\nexport const COALITION_MEMBERSHIP_STATUSES = {\n ACTIVE: \"Active\",\n ORG_INVITE_PENDING: \"Organization Invite Pending\",\n COALITION_APPROVAL_PENDING: \"Coalition Approval Pending\",\n ORG_DECLINED: \"Organization Declined\",\n COALITION_DECLINED: \"Coalition Declined\",\n COALITION_REINVITED: \"Coalition Invite Resent\",\n COALITION_PENDING: \"All Pending\",\n COALITION_INVITE_PENDING: \"Coalition Invite Accept Pending\",\n};\n\n/**\n * Transforms API response by adding relevant included records to each data record\n * @param {Object} params\n * @param {Object} params.response\n * @param {string} params.coalitionId\n * @return Object - clone of the response object supplemented with the included records\n */\nexport const mergeIncludesIntoData = ({ response, coalitionId }) => {\n const resClone = cloneDeep(response);\n resClone.data.forEach((org) => {\n const incStatusRecords = (resClone.included || []).filter((inc) => {\n return (\n inc.type === \"organization_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n const membership = (resClone.included || []).find((inc) => {\n return (\n inc.type === \"coalition_memberships\" &&\n String(inc.attributes.organizationId) === org.id &&\n String(inc.attributes.coalitionId) === coalitionId\n );\n });\n\n if (!!incStatusRecords.length) {\n org.attributes.dataStatus = getOrgDataStatus(incStatusRecords);\n }\n\n if (!!membership) {\n org.membership = {\n id: membership.id,\n status: membership.attributes.status,\n statusActor: membership.attributes.statusActor,\n updatedAt: new Date(membership.attributes.updatedAt),\n statusUpdatedAt: new Date(membership.attributes.statusUpdatedAt),\n };\n }\n });\n return resClone;\n};\n\n/**\n * Converts object with status and statusActor properties to a single line of text\n * @param {Object} membership\n * @return status - String\n */\nexport const getOrgMembershipStatus = (membership) => {\n if (!membership || !membership.status) return \"\";\n if (\n membership.status === \"requested\" &&\n membership.statusActor === \"Organization\"\n )\n return COALITION_MEMBERSHIP_STATUSES.COALITION_APPROVAL_PENDING;\n if (\n membership.status === \"requested\" &&\n membership.statusActor === \"Coalition\"\n )\n return COALITION_MEMBERSHIP_STATUSES.ORG_INVITE_PENDING;\n if (\n membership.status === \"rejected\" &&\n membership.statusActor === \"Organization\"\n )\n return COALITION_MEMBERSHIP_STATUSES.ORG_DECLINED;\n if (\n membership.status === \"rejected\" &&\n membership.statusActor === \"Coalition\"\n )\n return COALITION_MEMBERSHIP_STATUSES.COALITION_DECLINED;\n if (\n membership.status === \"reminded\" &&\n membership.statusActor === \"Coalition\"\n )\n return COALITION_MEMBERSHIP_STATUSES.COALITION_INVITE_PENDING;\n return titleCase(membership.status);\n};\n\n/**\n * Converts status filter to object with status and statusActor properties for API consumption\n * @param {string} status\n * @return filter object - { status: \"\", statusActor: \"\" }\n */\nexport const getMembershipFilter = (status) => {\n switch (status) {\n case COALITION_MEMBERSHIP_STATUSES.ORG_INVITE_PENDING:\n return {\n status: \"requested\",\n statusActor: \"Coalition\",\n };\n case COALITION_MEMBERSHIP_STATUSES.COALITION_APPROVAL_PENDING:\n return {\n status: \"requested\",\n statusActor: \"Organization\",\n };\n case COALITION_MEMBERSHIP_STATUSES.ORG_DECLINED:\n return {\n status: \"rejected\",\n statusActor: \"Organization\",\n };\n case COALITION_MEMBERSHIP_STATUSES.COALITION_DECLINED:\n return {\n status: \"rejected\",\n statusActor: \"Coalition\",\n };\n case COALITION_MEMBERSHIP_STATUSES.ACTIVE:\n return {\n status: \"active\",\n };\n case COALITION_MEMBERSHIP_STATUSES.COALITION_REINVITED:\n return {\n status: \"reminded\",\n statusActor: \"Coalition\",\n };\n case COALITION_MEMBERSHIP_STATUSES.COALITION_PENDING:\n return {\n status: \"requested,invited\",\n };\n default:\n return {};\n }\n};\n\n/**\n * Constructs API endpoint for getting list of a coalition's contributors\n * @param {Object} params\n * @param {string} params.coalitionId\n * @param {string} params.page\n * @param {string} params.search\n * @param {string} params.status\n * @return endpoint - String\n */\nexport const constructEndpoint = ({\n coalitionId,\n page = 1,\n search,\n status,\n organizationType,\n state,\n}) => {\n const membershipFilter = getMembershipFilter(status);\n let noStatusActorFilter = true;\n // if a status has been picked from the dropdown, filter by it\n if (membershipFilter.status && membershipFilter.statusActor) {\n noStatusActorFilter = false;\n } else if (status && !membershipFilter.status) {\n // if a status hasn't been picked from the dropdown, show that status from both organizations and coalitions\n membershipFilter.status = status;\n }\n\n return `/api/v1/organizations?page[number]=${page}&filter[status][not_eq]=closed&filter[coalition_id][eq]=${coalitionId}&filter[coalition_memberships.coalition_id][eq]=${coalitionId}&include=data_entry_statuses,coalition_memberships&extra_fields[organizations]=locations_us_states&stats[total]=count&sort=name${\n search ? `&filter[search]=${search}` : \"\"\n }${\n organizationType ? `&filter[organization_type][eq]=${organizationType}` : \"\"\n }${state ? `&filter[locations_us_state]=${state}` : \"\"}${\n membershipFilter.status\n ? `&filter[coalition_membership_status][eq]=${membershipFilter.status}`\n : \"\"\n }${\n membershipFilter.statusActor && !noStatusActorFilter\n ? `&filter[coalition_membership_status_actor][eq]=${membershipFilter.statusActor}`\n : \"\"\n }`;\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { useMutation, useQuery, useQueryClient } from \"react-query\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport ReactTooltip from \"react-tooltip\";\nimport { Formik, Form } from \"formik\";\nimport { get, uniq, isEqual } from \"lodash\";\nimport {\n usePermissions,\n ROUTE_GUARDS,\n apiFetch,\n getTotalPages,\n formatEin,\n titleCase,\n useHandleRequestStates,\n COALITION_MEMBERSHIP_ACTIONS,\n} from \"utils\";\nimport {\n useAuthState,\n useAuthDispatch,\n useUserState,\n useUserDispatch,\n} from \"context\";\nimport Button from \"components/Button\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport FormField from \"components/FormField\";\nimport OrganizationTypeDropDown from \"components/OrganizationTypeDropDown\";\nimport StateDropdown from \"components/StateDropdown\";\nimport { USER_UPDATE } from \"actions\";\nimport {\n getOrgMembershipStatus,\n mergeIncludesIntoData,\n constructEndpoint,\n COALITION_MEMBERSHIP_STATUSES,\n} from \"./utils\";\nimport { format } from \"date-fns\";\nimport { toast } from \"react-toastify\";\n\nconst Contributors = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { pendingCoalitionContributorRequests } = useUserState();\n const userDispatch = useUserDispatch();\n const { coalitionId } = useParams();\n const permissions = usePermissions();\n const queryClient = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const { handleSuccess, handleError } = useHandleRequestStates();\n const { pathname } = useLocation();\n const [contributorPage, setContributorPage] = useState(\"\");\n\n const initialFilters = {\n search: \"\",\n status:\n contributorPage === \"requested\" ? \"requested,reminded\" : contributorPage,\n organizationType: \"\",\n state: \"\",\n };\n\n const [filters, setFilters] = useState(initialFilters);\n\n useEffect(() => {\n switch (pathname) {\n case `/coalitions/${coalitionId}/contributors/active`:\n setContributorPage(\"active\");\n filters.status = \"active\";\n break;\n case `/coalitions/${coalitionId}/contributors/pending`:\n setContributorPage(\"requested\");\n filters.status = \"requested,reminded\";\n break;\n case `/coalitions/${coalitionId}/contributors/declined`:\n setContributorPage(\"rejected\");\n filters.status = \"rejected\";\n break;\n default:\n setContributorPage(\"active\");\n }\n setFilters(filters);\n getOrganizations({ page, ...filters });\n }, [pathname]);\n\n const getOrganizations = async ({\n page = 1,\n search = \"\",\n status = \"\",\n organizationType = \"\",\n state = \"\",\n }) => {\n // gets called on Submit\n // need tup update this to get it to work\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: constructEndpoint({\n coalitionId,\n page,\n search,\n status,\n organizationType,\n state,\n }),\n includeMeta: true,\n });\n response.data.forEach((org) => {\n if (org.type === \"organizations\") {\n // convert the updatedAt to a date object instead of a string here instead of the cell so sort will work\n org.attributes.updatedAt = new Date(org.attributes.updatedAt);\n }\n });\n return mergeIncludesIntoData({ response, coalitionId });\n };\n\n // Initial query\n const {\n data: response,\n error,\n isLoading,\n } = useQuery(\n [\"coalitionContributors\", coalitionId, { page, ...filters }],\n () => getOrganizations({ page, ...filters }),\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"coalitionContributors\", coalitionId, { page: page + 1, ...filters }],\n () => getOrganizations({ page: page + 1, ...filters })\n );\n }\n }, [response, page, filters, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.locationsUsStates\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n {\n accessor: \"attributes.dataStatus\",\n Header: () => {\n return (\n <>\n
\n Data Status\n \n
\n \n Data status is calculated for the latest 12 months\n \n \n );\n },\n Cell: ({ cell }) => titleCase(cell.value) || null,\n },\n {\n accessor: \"membership\",\n Header: \"Org Status\",\n Cell: ({ cell }) => getOrgMembershipStatus(cell.value),\n },\n ];\n\n const activeContributorColumns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n {\n accessor: \"attributes.intakeOutcomeDataSharing\",\n Header: \"Intake Outcome Data Sharing\",\n Cell: ({ cell }) => {\n var sharing = response.included.filter(\n (a) =>\n a.id ==\n cell.row.original.relationships.coalitionMemberships.data[0].id\n );\n if (sharing.length > 0) {\n return sharing[0].attributes.intakeOutcomeDataSharing ? \"Yes\" : \"No\";\n } else {\n return \"No\";\n }\n },\n },\n {\n accessor: \"attributes.communityServiceDataSharing\",\n Header: \"Community Service Data Sharing\",\n Cell: ({ cell }) => {\n var sharing = response.included.filter(\n (a) =>\n a.id ==\n cell.row.original.relationships.coalitionMemberships.data[0].id\n );\n if (sharing.length > 0) {\n return sharing[0].attributes.communityServiceDataSharing\n ? \"Yes\"\n : \"No\";\n } else {\n return \"No\";\n }\n },\n },\n {\n accessor: \"attributes.dataStatus\",\n Header: () => {\n return (\n <>\n
\n Data Status\n \n
\n \n Data status is calculated for the latest 12 months\n \n \n );\n },\n Cell: ({ cell }) => titleCase(cell.value) || null,\n },\n {\n accessor: \"membership\",\n Header: \"Org Status\",\n Cell: ({ cell }) => getOrgMembershipStatus(cell.value),\n },\n ];\n\n if (contributorPage === \"requested\") {\n const dateRequestedColumn = {\n accessor: \"membership.updatedAt\",\n Header: \"Date Invited/Requested\",\n Cell: ({ cell }) => format(new Date(cell.value), \"MM-dd-yyyy\"),\n };\n\n const actionsColumns = {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original } }) =>\n getActions({\n organization: original,\n respondToRequest,\n }),\n };\n\n columns.push(dateRequestedColumn);\n columns.push(actionsColumns);\n }\n\n if (contributorPage === \"active\") {\n const dateAcceptedColumn = {\n accessor: \"membership.statusUpdatedAt\",\n Header: \"Date Accepted\",\n sortType: \"datetime\",\n sortDescFirst: true,\n Cell: ({ cell }) => {\n const formattedDate = cell.value\n ? format(new Date(cell.value), \"MM-dd-yyyy\")\n : \"N/A\";\n return (\n <>\n {cell.value &&\n cell.value.toDateString() !== new Date(1970).toDateString() ? (\n {formattedDate}\n ) : (\n N/A\n )}\n \n );\n },\n };\n\n const removeOrgColumn = {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ cell }) => {\n const orgId = cell.row.original.membership.id;\n const { mutate: handleSubmit } = useMutation(\n async () => {\n return await apiFetch({\n token,\n dispatch,\n method: \"PATCH\",\n endpoint: `/api/v1/coalition_memberships/${orgId}`,\n body: {\n data: {\n id: orgId,\n type: \"coalition_memberships\",\n attributes: {\n status: \"rejected\",\n statusActor: \"Organization\",\n },\n },\n },\n });\n },\n {\n onSuccess: () => {\n handleSuccess({\n message: `Contributor removed`,\n queries: [\n {\n key: [\"coalitionContributors\", coalitionId],\n config: {\n refetchActive: true,\n },\n },\n {\n key: [\"searchOrganizations\", { coalitionId }],\n },\n {\n key: \"coalitions\",\n },\n {\n key: \"myCoalitions\",\n },\n ],\n });\n },\n onError: (err) => {\n toast.error(`Failed to remove contributor`, {\n autoClose: 3000,\n });\n },\n }\n );\n\n return (\n
\n \n
\n );\n },\n };\n\n columns.push(dateAcceptedColumn, removeOrgColumn);\n activeContributorColumns.push(dateAcceptedColumn, removeOrgColumn);\n }\n\n if (contributorPage === \"rejected\") {\n const dateDeclinedColumn = {\n accessor: \"membership.statusUpdatedAt\",\n Header: \"Date Declined\",\n sortType: \"datetime\",\n sortDescFirst: true,\n Cell: ({ cell }) => {\n const formattedDate = cell.value\n ? format(new Date(cell.value), \"MM-dd-yyyy\")\n : \"N/A\";\n return (\n <>\n {cell.value &&\n cell.value.toDateString() !== new Date(1970).toDateString() ? (\n {formattedDate}\n ) : (\n N/A\n )}\n \n );\n },\n };\n\n columns.push(dateDeclinedColumn);\n }\n\n const { mutate: respondToRequest } = useMutation(\n ({ organization, action }) =>\n apiFetch({\n token,\n dispatch,\n method: \"PATCH\",\n endpoint: `/api/v1/coalition_memberships/${organization.membership.id}`,\n body: {\n data: {\n id: organization.membership.id,\n type: \"coalition_memberships\",\n attributes: {\n statusChangeAction: action,\n statusActor: \"Coalition\",\n },\n },\n },\n }),\n {\n onSuccess: (response, { action }) => {\n const membership = response.data;\n const membershipCoalitionId = String(membership.attributes.coalitionId);\n\n userDispatch({\n type: USER_UPDATE,\n payload: {\n pendingCoalitionContributorRequests:\n pendingCoalitionContributorRequests.filter(\n (coalition) => coalition.id !== String(membershipCoalitionId)\n ),\n },\n });\n const actionMessage = (action) => {\n switch (action) {\n case COALITION_MEMBERSHIP_ACTIONS.REJECT:\n return \"Declined request successfully\";\n case COALITION_MEMBERSHIP_ACTIONS.ACCEPT:\n return \"Accepted request successfully\";\n case COALITION_MEMBERSHIP_ACTIONS.REMIND:\n return \"Re-invite request successfully\";\n default:\n return \"\";\n }\n };\n\n handleSuccess({\n message: actionMessage(action),\n queries: [\n {\n key: [\"coalitionContributors\", coalitionId],\n config: {\n refetchActive: true,\n },\n },\n {\n key: [\"searchOrganizations\", { coalitionId }],\n },\n {\n key: \"coalitions\",\n },\n {\n key: \"myCoalitions\",\n },\n ],\n });\n },\n onError: handleError,\n }\n );\n\n /**\n * FORM METHODS\n */\n const onSubmitFilters = (values) => {\n if (!isEqual(values, filters)) {\n setFilters(values);\n }\n };\n\n return (\n <>\n
\n

Coalition Contributors

\n\n {permissions[ROUTE_GUARDS.COALITION_MANAGER]() && (\n
\n \n Invite Contributor\n \n
\n )}\n
\n\n
\n \n {({ resetForm, handleSubmit }) => (\n
\n
\n
\n \n\n \n {contributorPage === \"active\" && (\n \n )}\n {contributorPage === \"requested\" && (\n <>\n \n {COALITION_MEMBERSHIP_STATUSES.COALITION_PENDING}\n \n \n {COALITION_MEMBERSHIP_STATUSES.ORG_INVITE_PENDING}\n \n \n {\n COALITION_MEMBERSHIP_STATUSES.COALITION_APPROVAL_PENDING\n }\n \n \n {COALITION_MEMBERSHIP_STATUSES.COALITION_REINVITED}\n \n \n )}\n {contributorPage === \"rejected\" && (\n <>\n \n \n {COALITION_MEMBERSHIP_STATUSES.ORG_DECLINED}\n \n \n {COALITION_MEMBERSHIP_STATUSES.COALITION_DECLINED}\n \n \n )}\n \n \n \n
\n\n
\n \n {\n resetForm();\n setFilters(initialFilters);\n }}\n emphasis=\"transparent\"\n >\n Reset Filters\n \n
\n
\n
\n )}\n
\n
\n\n \n\n {!!(response?.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nexport default Contributors;\n\nconst getActions = ({ organization, respondToRequest }) => {\n if (\n organization.membership.status === \"requested\" &&\n organization.membership.statusActor === \"Organization\"\n ) {\n return (\n
\n {/* Accept Contributor Request */}\n \n respondToRequest({\n organization,\n action: COALITION_MEMBERSHIP_ACTIONS.ACCEPT,\n })\n }\n >\n Accept\n \n\n {/* Decline Contributor Request */}\n \n respondToRequest({\n organization,\n action: COALITION_MEMBERSHIP_ACTIONS.REJECT,\n })\n }\n >\n Decline\n \n
\n );\n } else if (\n organization.membership.status === \"requested\" &&\n organization.membership.statusActor === \"Coalition\"\n ) {\n return (\n \n respondToRequest({\n organization,\n action: COALITION_MEMBERSHIP_ACTIONS.REMIND,\n })\n }\n >\n Resend Invite\n \n );\n } else if (\n organization.membership.status === \"reminded\" &&\n organization.membership.statusActor === \"Coalition\"\n ) {\n const startDate = organization.membership.statusUpdatedAt;\n const currentDate = new Date();\n const diffTime = Math.abs(currentDate - startDate);\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n\n return (\n
\n Invite Resent. You'll be able to send another reminder in{\" \"}\n {60 - diffDays} days\n
\n );\n }\n // TODO: Deactivate - https://app.asana.com/0/1179331329125530/1199405047540888/f\n // return (\n // \n // );\n\n return null;\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport ReactTooltip from \"react-tooltip\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faQuestionCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport { toast } from \"react-toastify\";\nimport { isEqual, get, uniq } from \"lodash\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport StateDropdown from \"components/StateDropdown\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport {\n apiFetch,\n getTotalPages,\n formatEin,\n titleCase,\n getOrgDataStatus,\n useHandleRequestStates,\n useManageCoalitionMemberships,\n formatBusinessNumber,\n} from \"utils\";\nimport ProvinceDropdown from \"components/ProvinceDropdown\";\n\nconst AddContributor = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { coalitionId } = useParams();\n const history = useHistory();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [showTable, setShowTable] = useState(false);\n const { createContributorMembership } = useManageCoalitionMemberships();\n const { handleSuccess, handleError } = useHandleRequestStates();\n\n // We need to manage the isLoading state manually, instead of relying on\n // the useQuery isLoading property, so we can have more granular control\n // over when we display the table to prevent a flicker of the records from\n // the previous search\n const [isLoading, setIsLoading] = useState(false);\n\n const initialFilters = {\n search: \"\",\n state: \"\",\n provinceOrTerritory: \"\",\n orgType: \"\",\n country: \"United States\",\n };\n\n const [filters, setFilters] = useState(initialFilters);\n\n const getOrganizations = async ({\n page = 1,\n search = \"\",\n state = \"\",\n orgType = \"\",\n country = \"\",\n }) => {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations?page[number]=${page}&filter[status][eq]=confirmed${\n search ? `&filter[search]=${search}` : \"\"\n }${\n orgType ? `&filter[organization_type]=${orgType}` : \"\"\n }&filter[country][eq]=${country}&filter[coalition_membership_by_id_and_status][eq]=${coalitionId}&include=data_entry_statuses&extra_fields[organizations]=locations_us_states,locations_provinces&stats[total]=count&sort=name${\n state ? `&filter[locations_us_state]=${state}` : \"\"\n }`,\n includeMeta: true,\n });\n response.data.map((org) => {\n const incStatusRecords = response.included.filter((inc) => {\n return (\n inc.type === \"organization_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n if (!!incStatusRecords.length) {\n org.attributes.dataStatus = getOrgDataStatus(incStatusRecords);\n }\n\n return org;\n });\n return response;\n };\n\n // Initial query\n const { data: response = { data: [], included: [] }, error } = useQuery(\n [\"searchOrganizations\", { coalitionId, page, ...filters }],\n () => {\n // Manually set isLoading to true when the request kicks off\n setIsLoading(true);\n return getOrganizations({ page, ...filters });\n },\n {\n enabled: !isEqual(filters, initialFilters),\n keepPreviousData: true,\n // If the request errors out, set isLoading to false\n onError: () => setIsLoading(false),\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"searchOrganizations\", { coalitionId, page: page + 1, ...filters }],\n () => getOrganizations({ page: page + 1, ...filters })\n );\n }\n }, [response, page, filters, queryClient]);\n\n useEffect(() => {\n // We can assume that the response was successful if the response changes\n // and we set isLoading to false\n setIsLoading(false);\n }, [response]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n ...(filters.country === \"United States\"\n ? [\n {\n accessor: \"attributes.locationsUsStates\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n ]\n : []),\n ...(filters.country === \"Canada\"\n ? [\n {\n accessor: \"attributes.locationsProvinces\",\n Header: \"Province/Territory\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n ]\n : []),\n ...(filters.country === \"United States\"\n ? [\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n ]\n : []),\n ...(filters.country === \"Canada\"\n ? [\n {\n accessor: \"attributes.businessNumber\",\n Header: \"Business Number\",\n Cell: ({ cell }) => formatBusinessNumber(cell.value),\n },\n ]\n : []),\n {\n accessor: \"attributes.organizationType\",\n Header: \"Type\",\n },\n {\n accessor: \"attributes.dataStatus\",\n Header: () => {\n return (\n <>\n
\n Data Status\n \n
\n \n Data status is calculated for the latest 12 months\n \n \n );\n },\n Cell: ({ cell }) => (cell.value ? titleCase(cell.value) : null),\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original } }) => (\n inviteOrg(original)}\n >\n Invite Organization\n \n ),\n },\n ];\n\n /**\n * ACTIONS\n */\n // INVITE CONTRIBUTOR\n const { mutate: inviteOrg } = useMutation(\n (organization) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/coalition_memberships\",\n body: {\n data: {\n type: \"coalition_memberships\",\n attributes: {\n organizationId: organization.id,\n coalitionId,\n statusActor: \"Coalition\",\n },\n },\n },\n }),\n {\n onSuccess: (res, organization) => {\n setIsLoading(true);\n createContributorMembership(res.data);\n handleSuccess({\n message: `An invitation email has been sent to the members of ${organization.attributes.name}`,\n queries: [\n {\n key: [\"coalitionContributors\", coalitionId],\n config: {\n refetchActive: true,\n },\n },\n {\n key: [\"searchOrganizations\", { coalitionId }],\n },\n {\n key: \"coalitions\",\n },\n {\n key: \"myCoalitions\",\n },\n ],\n });\n\n history.push(`/coalitions/${coalitionId}/contributors`);\n },\n onError: (error) => {\n setIsLoading(false);\n handleError(error);\n },\n }\n );\n /**\n * FORM METHODS\n */\n const onSubmitFilters = (values) => {\n setShowTable(true);\n if (!isEqual(values, filters)) {\n setFilters(values);\n }\n };\n\n const onValidateForm = (values) => {\n const formValues = [\"search\", \"state\", \"orgType\"].reduce((vals, key) => {\n if (values[key]) {\n vals.push(values[key]);\n }\n return vals;\n }, []);\n return !!formValues.length ? {} : { error: \"Select at least one filter.\" };\n };\n\n return (\n <>\n

Invite Contributor

\n\n
\n \n {({\n resetForm,\n errors,\n touched,\n handleSubmit,\n values: { country },\n }) => (\n
\n
\n
\n \n\n
\n \n \n \n \n \n
\n\n {country === \"Canada\" && (\n \n )}\n {country === \"United States\" && (\n \n )}\n\n \n \n \n \n \n \n \n \n
\n\n
\n {\n resetForm();\n setShowTable(false);\n setFilters(initialFilters);\n }}\n emphasis=\"transparent\"\n >\n Reset Filters\n \n\n \n
\n
\n\n {errors.error && touched.error && (\n
{errors.error}
\n )}\n
\n )}\n \n
\n\n {showTable && (\n <>\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n )}\n \n );\n};\n\nexport default AddContributor;\n","import React, { useEffect, useState } from \"react\";\nimport { Form, Formik, useFormikContext } from \"formik\";\nimport FormField from \"components/FormField\";\nimport * as Yup from \"yup\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { FORM_MODES, apiFetch, formatUiErrors } from \"utils\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport { useMutation } from \"react-query\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\nimport { toast } from \"react-toastify\";\nimport Button from \"components/Button\";\n\nexport default function SharingPermissions() {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitions } = useUserState();\n const { coalitionId } = useParams();\n const [isSuccess, setIsSuccess] = useState(false);\n const [formMode, setFormMode] = useState(\"VIEW\");\n const history = useHistory();\n const initialValues = getDataSharing({ coalitionId, coalitions });\n\n const sharingPermissionsSchema = Yup.object().shape({\n intakeOutcomeDataSharing: Yup.boolean(),\n communityServiceDataSharing: Yup.boolean(),\n });\n\n const handleUpdateSuccess = () => {\n history.push(`/coalitions/${coalitionId}/sharing-permissions`);\n setFormMode(\"VIEW\");\n window.location.reload();\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n };\n const handleUpdateError = (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n };\n\n const { mutate: updateSharing, isLoading } = useMutation(\n ({ intakeOutcomeDataSharing, communityServiceDataSharing }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalition_memberships/${initialValues.id}`,\n method: \"PATCH\",\n body: {\n data: {\n id: initialValues.id,\n type: \"coalition_memberships\",\n attributes: {\n intakeOutcomeDataSharing,\n communityServiceDataSharing,\n },\n },\n },\n }),\n {\n onSuccess: (data) => {\n setIsSuccess(true);\n handleUpdateSuccess(data);\n },\n onError: (e) => {\n setIsSuccess(false);\n handleUpdateError(e);\n },\n }\n );\n\n return (\n \n {({\n handleSubmit,\n values: { intakeOutcomeDataSharing, communityServiceDataSharing },\n setFieldValue,\n }) => (\n
\n
\n {/* Requested Data */}\n

Shared Data

\n\n
\n setFieldValue(\"intakeOutcomeDataSharing\", true)}\n type=\"checkbox\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n />\n\n \n setFieldValue(\"intakeOutcomeDataSharing\", false)\n }\n type=\"checkbox\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n />\n\n \n setFieldValue(\"communityServiceDataSharing\", true)\n }\n type=\"checkbox\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n />\n \n setFieldValue(\"communityServiceDataSharing\", false)\n }\n type=\"checkbox\"\n readOnly={formMode === FORM_MODES.VIEW}\n disabled={formMode === FORM_MODES.VIEW}\n />\n
\n
\n\n {formMode !== FORM_MODES.VIEW && (\n
\n {\n setFormMode(\"VIEW\");\n }}\n >\n Cancel\n \n\n Updating…}\n onClick={handleSubmit}\n >\n Update\n \n
\n )}\n\n {formMode === FORM_MODES.VIEW && (\n
\n {\n setFormMode(\"EDIT\");\n }}\n >\n Edit\n \n
\n )}\n\n \n \n )}\n \n );\n}\n\nconst FormContext = ({\n formMode,\n coalitionId,\n coalitions,\n isSuccess,\n setIsSuccess,\n}) => {\n const { resetForm, dirty } = useFormikContext();\n\n useEffect(() => {\n resetForm({\n values: getDataSharing({ coalitions, coalitionId }),\n formMode,\n });\n }, [formMode, coalitions, coalitionId, resetForm]);\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n\nconst getDataSharing = ({ coalitionId, coalitions }) => {\n if (!coalitions || !coalitions[coalitionId]) return {};\n\n const memberships = coalitions[coalitionId];\n const orgMembership = memberships[\"orgMembership\"];\n\n return {\n id: orgMembership.id,\n intakeOutcomeDataSharing: orgMembership.attributes.intakeOutcomeDataSharing,\n communityServiceDataSharing:\n orgMembership.attributes.communityServiceDataSharing,\n };\n};\n","import { apiFetch } from \"utils\";\n\nexport const getAllDataStatus = async ({\n token,\n dispatch,\n coalitionId,\n year,\n search,\n}) => {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations?&filter[active_coalition][eq]=${coalitionId}&filter[coalition_membership_status][eq]=active&filter[data_entry_statuses.year][eq]=${year}&filter[community_data_entry_statuses.year][eq]=${year}${\n search ? `&filter[search]=${search}` : \"\"\n }&include=data_entry_statuses,community_data_entry_statuses&sort=name&page[size]=1000&page[number]=1&stats[total]=count`,\n includeMeta: true,\n });\n\n await Promise.all(\n response.data.map(async (org) => {\n const intakes = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_intakes?filter[organization_id][eq]=${org.id}&sort=-updated_at&page[size]=1&page[number]=0`,\n });\n\n const services = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_services?filter[organization_id][eq]=${org.id}&sort=-updated_at&page[size]=1&page[number]=0`,\n });\n\n const incStatusRecords = response.included.filter((inc) => {\n return (\n inc.type === \"organization_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n const servicesStatusRecords = response.included.filter((inc) => {\n return (\n inc.type === \"organization_community_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n org.servicesStatuses = {};\n org.dataStatuses = {};\n org.serviceLatestIntake = new Date(1970);\n org.latestIntake = new Date(1970);\n if (intakes.data[0]?.attributes.updatedAt) {\n org.latestIntake = new Date(intakes?.data[0].attributes.updatedAt);\n }\n if (services.data[0]?.attributes.updatedAt) {\n org.serviceLatestIntake = new Date(\n services?.data[0].attributes.updatedAt\n );\n }\n\n for (let i = 0; i < 12; i++) {\n const month = i + 1;\n const monthRecord = (incStatusRecords || []).find(\n (rec) => rec.attributes.month === month\n );\n\n const servicesMonthRecord = (servicesStatusRecords || []).find(\n (rec) => rec.attributes.month === month\n );\n org.dataStatuses[month] = monthRecord\n ? monthRecord.attributes.status\n : \"unbegun\";\n\n org.servicesStatuses[month] = servicesMonthRecord\n ? servicesMonthRecord.attributes.status\n : \"unbegun\";\n }\n\n return org;\n })\n );\n\n return response;\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { getAllDataStatus } from \"./utils\";\nimport { toast } from \"react-toastify\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCheckCircle,\n faExclamationCircle,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { faCircle } from \"@fortawesome/free-regular-svg-icons\";\nimport ReactTooltip from \"react-tooltip\";\nimport { Formik, Form } from \"formik\";\nimport { isEqual, get } from \"lodash\";\nimport { endOfMonth, startOfMonth } from \"date-fns\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport {\n apiFetch,\n camelToTitle,\n getMonthAbbr,\n getTotalPages,\n EXPORT_DATE_FORMATS,\n formatUiErrors,\n} from \"utils\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport DatePickerField from \"components/DatePickerField\";\nimport { format } from \"date-fns\";\nimport { CSVLink } from \"react-csv\";\n\nconst DataStatusTable = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const currentYear = new Date().getFullYear();\n const [csvFileData, setCsvFileData] = useState([]);\n const [ready, setReady] = useState(false);\n const initialFilters = {\n search: \"\",\n year: String(currentYear),\n };\n const [filters, setFilters] = useState(initialFilters);\n const [loadingData, setLoadingData] = useState(false);\n\n const getOrganizations = async ({\n page = 1,\n search = \"\",\n year = currentYear,\n }) => {\n setLoadingData(true);\n // TODO: Validate the data_entry_status filter works as expected\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations?page[number]=${page}&filter[active_coalition][eq]=${coalitionId}&filter[coalition_membership_status][eq]=active&include=data_entry_statuses,community_data_entry_statuses&stats[total]=count&sort=name&filter[data_entry_statuses.year][eq]=${year}&filter[community_data_entry_statuses.year][eq]=${year}${\n search ? `&filter[search]=${search}` : \"\"\n }`,\n includeMeta: true,\n });\n\n await Promise.all(\n response.data.map(async (org) => {\n const intakes = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_intakes?filter[organization_id][eq]=${org.id}&sort=-updated_at&page[size]=1&page[number]=0`,\n });\n\n const services = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_services?filter[organization_id][eq]=${org.id}&sort=-updated_at&page[size]=1&page[number]=0`,\n });\n\n const incStatusRecords = response.included.filter((inc) => {\n return (\n inc.type === \"organization_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n const servicesStatusRecords = response.included.filter((inc) => {\n return (\n inc.type === \"organization_community_data_entry_statuses\" &&\n String(inc.attributes.organizationId) === org.id\n );\n });\n\n org.servicesStatuses = {};\n org.dataStatuses = {};\n org.serviceLatestIntake = new Date(1970);\n org.latestIntake = new Date(1970);\n if (intakes.data[0]?.attributes.updatedAt) {\n org.latestIntake = new Date(intakes?.data[0].attributes.updatedAt);\n }\n if (services.data[0]?.attributes.updatedAt) {\n org.serviceLatestIntake = new Date(\n services?.data[0].attributes.updatedAt\n );\n }\n\n for (let i = 0; i < 12; i++) {\n const month = i + 1;\n const monthRecord = (incStatusRecords || []).find(\n (rec) => rec.attributes.month === month\n );\n\n const servicesMonthRecord = (servicesStatusRecords || []).find(\n (rec) => rec.attributes.month === month\n );\n org.dataStatuses[month] = monthRecord\n ? monthRecord.attributes.status\n : \"unbegun\";\n\n org.servicesStatuses[month] = servicesMonthRecord\n ? servicesMonthRecord.attributes.status\n : \"unbegun\";\n }\n\n return org;\n })\n );\n\n setLoadingData(false);\n return response;\n };\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"constributorsDataStatus\", { coalitionId, page, ...filters }],\n () => getOrganizations({ page, ...filters }),\n {\n keepPreviousData: false,\n }\n );\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n useEffect(() => {\n getOrganizations({ page, ...filters });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters]);\n\n const onSubmitFilters = (values) => {\n if (!isEqual(values, filters)) {\n if (typeof values.year != \"string\") {\n const yearAsFourDigits = String(values.year.getFullYear());\n values.year = yearAsFourDigits;\n }\n setFilters(values);\n }\n };\n\n const { mutate: exportDataStatus, isLoading: dataStatusLoading } =\n useMutation(\n async () => {\n const allStatuses = await getAllDataStatus({\n token,\n dispatch,\n coalitionId,\n year: filters.year,\n search: filters.search,\n });\n setCsvFileData(allStatuses);\n\n return;\n },\n {\n onSuccess: () => {\n setReady(true);\n },\n }\n );\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n ...getStatusColumns(),\n {\n accessor: `latestIntake`,\n Header: \"Last Update\",\n sortType: \"datetime\",\n sortDescFirst: true,\n Cell: ({ cell }) => {\n const formattedDate = format(new Date(cell.value), \"MM-dd-yyyy\");\n return (\n <>\n {cell.value &&\n cell.value.toDateString() !== new Date(1970).toDateString() ? (\n {formattedDate}\n ) : (\n N/A\n )}\n \n );\n },\n },\n ];\n\n const serviceStatusColumns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n ...getServiceStatusColumns(),\n {\n accessor: `serviceLatestIntake`,\n Header: \"Last Update\",\n sortType: \"datetime\",\n sortDescFirst: true,\n Cell: ({ cell }) => {\n const formattedDate = format(new Date(cell.value), \"MM-dd-yyyy\");\n return (\n <>\n {cell.value &&\n cell.value.toDateString() !== new Date(1970).toDateString() ? (\n {formattedDate}\n ) : (\n N/A\n )}\n \n );\n },\n },\n ];\n\n let columnWidths = new Array(13).fill(null, 1, 13);\n columnWidths[0] = \"w-40\";\n columnWidths[13] = \"w-36\";\n\n return (\n <>\n
\n

Intake/Outcome Data Entry Status

\n\n
\n \n {({ resetForm, handleSubmit }) => (\n
\n
\n
\n \n\n \n
\n\n
\n \n {\n resetForm();\n setFilters(initialFilters);\n }}\n emphasis=\"transparent\"\n >\n Reset Filters\n \n
\n
\n
\n )}\n
\n
\n\n 0 ? response.data : []}\n columns={columns}\n columnWidths={columnWidths}\n noResultsText=\"No contributors found\"\n isLoading={isLoading || loadingData}\n error={error}\n />\n\n {ready ? (\n \n Download Intake Data Status Table as CSV\n \n ) : (\n {\n exportDataStatus(\"dataStatuses\");\n }}\n isLoading={dataStatusLoading}\n loadingText={<>Generating your export…}\n emphasis=\"secondary\"\n className=\"w-max mt-4\"\n >\n Generate Intakes Data Status CSV\n \n )}\n\n {!!(response.data || []).length && (\n
\n {\n setPage(page);\n }}\n />\n
\n )}\n
\n\n
\n

Community Services Data Entry Status

\n\n 0 ? response.data : []}\n columns={serviceStatusColumns}\n columnWidths={columnWidths}\n noResultsText=\"No contributors found\"\n isLoading={isLoading || loadingData}\n error={error}\n />\n\n {ready ? (\n \n Download Community Services Data Status Table as CSV\n \n ) : (\n {\n exportDataStatus(\"servicesStatuses\");\n }}\n isLoading={dataStatusLoading}\n loadingText={<>Generating your export…}\n emphasis=\"secondary\"\n className=\"w-max mt-4\"\n >\n Generate Community Services Data Status CSV\n \n )}\n\n {!!(response.data || []).length && (\n
\n {\n setPage(page);\n }}\n />\n
\n )}\n
\n \n );\n};\n\nexport default DataStatusTable;\n\nconst getStatusColumns = () => {\n let columns = [];\n for (let i = 0; i < 12; i++) {\n columns.push({\n accessor: `dataStatuses.${i + 1}`,\n Header: getMonthAbbr(i + 1),\n Cell: ({ cell, row: { original } }) =>\n dataStatusIndicator({\n status: cell.value,\n month: i + 1,\n id: original.id,\n }),\n });\n }\n return columns;\n};\n\nconst getServiceStatusColumns = () => {\n let columns = [];\n for (let i = 0; i < 12; i++) {\n columns.push({\n accessor: `servicesStatuses.${i + 1}`,\n Header: getMonthAbbr(i + 1),\n Cell: ({ cell, row: { original } }) =>\n dataStatusIndicator({\n status: cell.value,\n month: i + 1,\n id: original.id,\n data: \"services\",\n }),\n });\n }\n return columns;\n};\n\nconst indicatorIcon = ({ icon, colorClass }) => {\n return ;\n};\n\nconst dataStatusIndicator = ({ status, month, id, data = \"intakes\" }) => {\n let icon = null;\n switch (status) {\n case \"unbegun\":\n icon = indicatorIcon({\n icon: faCircle,\n colorClass: \"text-dashboard-medium-gray\",\n });\n break;\n case \"incomplete\":\n icon = indicatorIcon({\n icon: faExclamationCircle,\n colorClass: \"text-gold\",\n });\n break;\n case \"complete\":\n icon = indicatorIcon({ icon: faCheckCircle, colorClass: \"text-teal\" });\n break;\n default:\n icon = \"--\";\n break;\n }\n\n const uuid = `${data}_${month}_${id}`;\n\n return (\n <>\n \n {icon}\n \n \n {camelToTitle(status) || \"Unavailable\"}\n \n \n );\n};\n\nfunction getCsvData(data, year, statusType) {\n return data.map((item) => {\n const organization_name = item.attributes.name;\n let dataEntryStatuses = {};\n Object.entries(item[statusType]).map(([key, value]) => {\n const month = getMonthAbbr(Number(key));\n dataEntryStatuses[month] = value;\n return null; // Add a return statement here\n });\n const last_updated =\n statusType === \"dataStatuses\"\n ? item.latestIntake\n : item.serviceLatestIntake;\n const year_completion_status = calculateYearCompletionStatus(\n item[statusType],\n year\n );\n\n return {\n organization_name,\n ...dataEntryStatuses,\n year,\n last_updated,\n year_completion_status,\n };\n });\n}\n\nfunction calculateYearCompletionStatus(status_object, year) {\n const statuses = Object.values(status_object);\n\n const past_year = year < new Date().getFullYear();\n const currentMonth = new Date().getMonth() + 1; // Adding 1 because months are 0-indexed in JavaScript\n if (\n statuses.every((s) => s === \"unbegun\") ||\n !statuses.includes(\"complete\")\n ) {\n return \"Unbegun\";\n }\n\n if (past_year) {\n if (statuses.every((s) => s === \"complete\")) return \"Full-Annual\";\n\n return \"Partial - Annual\";\n } else {\n if (\n statuses.slice(0, currentMonth).every((s) => s === \"complete\") &&\n statuses.slice(currentMonth).every((s) => s === \"unbegun\")\n )\n return \"Full - Year to Date\";\n\n return \"Partial - Year to Date\";\n }\n}\n","import { getMonthName, formatDateTime } from \"utils\";\n\nexport const EXPORT_STATUS = {\n STARTED: \"started\",\n COMPLETED: \"completed\",\n FAILED: \"failed\",\n};\n\nexport const ALLSTATES = [\n { label: \"AK\", value: \"AK\" },\n { label: \"AL\", value: \"AL\" },\n { label: \"AR\", value: \"AR\" },\n { label: \"AS\", value: \"AS\" },\n { label: \"AZ\", value: \"AZ\" },\n { label: \"CA\", value: \"CA\" },\n { label: \"CO\", value: \"CO\" },\n { label: \"CT\", value: \"CT\" },\n { label: \"DC\", value: \"DC\" },\n { label: \"DE\", value: \"DE\" },\n { label: \"FL\", value: \"FL\" },\n { label: \"GA\", value: \"GA\" },\n { label: \"GU\", value: \"GU\" },\n { label: \"HI\", value: \"HI\" },\n { label: \"IA\", value: \"IA\" },\n { label: \"ID\", value: \"ID\" },\n { label: \"IL\", value: \"IL\" },\n { label: \"IN\", value: \"IN\" },\n { label: \"KS\", value: \"KS\" },\n { label: \"KY\", value: \"KY\" },\n { label: \"LA\", value: \"LA\" },\n { label: \"MA\", value: \"MA\" },\n { label: \"MD\", value: \"MD\" },\n { label: \"ME\", value: \"ME\" },\n { label: \"MI\", value: \"MI\" },\n { label: \"MN\", value: \"MN\" },\n { label: \"MO\", value: \"MO\" },\n { label: \"MP\", value: \"MP\" },\n { label: \"MS\", value: \"MS\" },\n { label: \"MT\", value: \"MT\" },\n { label: \"NC\", value: \"NC\" },\n { label: \"ND\", value: \"ND\" },\n { label: \"NE\", value: \"NE\" },\n { label: \"NH\", value: \"NH\" },\n { label: \"NJ\", value: \"NJ\" },\n { label: \"NM\", value: \"NM\" },\n { label: \"NV\", value: \"NV\" },\n { label: \"NY\", value: \"NY\" },\n { label: \"OH\", value: \"OH\" },\n { label: \"OK\", value: \"OK\" },\n { label: \"OR\", value: \"OR\" },\n { label: \"PA\", value: \"PA\" },\n { label: \"PR\", value: \"PR\" },\n { label: \"RI\", value: \"RI\" },\n { label: \"SC\", value: \"SC\" },\n { label: \"SD\", value: \"SD\" },\n { label: \"TN\", value: \"TN\" },\n { label: \"TX\", value: \"TX\" },\n { label: \"UT\", value: \"UT\" },\n { label: \"VA\", value: \"VA\" },\n { label: \"VI\", value: \"VI\" },\n { label: \"VT\", value: \"VT\" },\n { label: \"WA\", value: \"WA\" },\n { label: \"WI\", value: \"WI\" },\n { label: \"WV\", value: \"WV\" },\n { label: \"WY\", value: \"WY\" },\n];\n\nexport const OrgTypes = [\n { label: \"Government Animal Services\", value: \"Government Animal Services\" },\n {\n label: \"Animal Shelter with a Government Contract\",\n value: \"Animal Shelter with a Government Contract\",\n },\n {\n label: \"Animal Rescue with a Government Contract\",\n value: \"Animal Rescue with a Government Contract\",\n },\n {\n label: \"Shelter without a Government Contract\",\n value: \"Shelter without a Government Contract\",\n },\n {\n label: \"Rescue without a Government Contract\",\n value: \"Rescue without a Government Contract\",\n },\n];\n\nexport const columns = [\n {\n accessor: \"attributes.createdAt\",\n Header: \"Created At\",\n Cell: ({ cell }) => formatDateTime(cell.value),\n },\n {\n accessor: \"attributes.monthOfRecord\",\n Header: \"Month of Record\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return getMonthName(cell.value);\n },\n },\n {\n accessor: \"attributes.yearOfRecord\",\n Header: \"Year of Record\",\n },\n {\n accessor: \"attributes.exportFor\",\n Header: \"Export\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n if (cell.value === \"intake_outcome\") {\n return \"Intake/Outcome Export\";\n } else if (cell.value === \"community\") {\n return \"Community Services Data\";\n } else {\n return \"Contributors Data\";\n }\n },\n },\n {\n accessor: \"attributes.updatedAt\",\n Header: \"Completed At\",\n Cell: ({ cell }) => {\n if (!cell.value) return \"--\";\n return formatDateTime(cell.value);\n },\n },\n {\n accessor: \"attributes.status\",\n Header: \"\",\n Cell: ({ cell, row: { original } }) => {\n if (cell.value === EXPORT_STATUS.STARTED) {\n return (\n \n Generating CSV…\n \n );\n }\n if (cell.value === EXPORT_STATUS.FAILED) {\n return (\n \n Export failed\n \n );\n }\n return (\n \n Download CSV\n \n );\n },\n },\n];\n","import React, { useState, useEffect } from \"react\";\nimport { useQuery, useMutation, useQueryClient } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport * as Yup from \"yup\";\nimport { endOfMonth } from \"date-fns\";\nimport {\n EXPORT_DATE_FORMATS,\n useInterval,\n useHandleRequestStates,\n apiFetch,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport Table from \"components/Table\";\nimport DatePickerField from \"components/DatePickerField\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport { columns, EXPORT_STATUS, ALLSTATES } from \"./utils\";\nimport { MultiSelect } from \"react-multi-select-component\";\nimport { API_URL } from \"utils\";\nimport { decamelizeKeys } from \"humps\";\n\nconst options = ALLSTATES;\n\nconst ExportData = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n const queryClient = useQueryClient();\n const { handleError } = useHandleRequestStates();\n const [shouldPoll, setShouldPoll] = useState(false);\n const [selected, setSelected] = useState([]);\n const [countries, setCountries] = useState([]);\n const [selectedCountry, setSelectedCountry] = useState([]);\n const [selectedProvinces, setSelectedProvinces] = useState([]); // for Canada\n const provinces = [\n { label: \"AB\", value: \"AB\" },\n { label: \"BC\", value: \"BC\" },\n { label: \"MB\", value: \"MB\" },\n { label: \"NB\", value: \"NB\" },\n { label: \"NL\", value: \"NL\" },\n { label: \"NT\", value: \"NT\" },\n { label: \"NS\", value: \"NS\" },\n { label: \"NU\", value: \"NU\" },\n { label: \"ON\", value: \"ON\" },\n { label: \"PE\", value: \"PE\" },\n { label: \"QC\", value: \"QC\" },\n { label: \"SK\", value: \"SK\" },\n { label: \"YT\", value: \"YT\" },\n ];\n const [selectedOrgType, setSelectedOrgType] = useState([]);\n const [selectedOrg, setSelectedOrg] = useState([]);\n const [allOrgs, setallOrgs] = useState([]);\n const [allOrgsTypes, setallOrgsTypes] = useState([]);\n const [selectedExport, setSelectedExpot] = useState(\"intake_outcome\");\n\n const ExportSchema = Yup.object().shape({\n dateFormat: Yup.string().when([], {\n is: () => selectedExport !== \"contributors\",\n then: Yup.string().required(\"Select a date format\"),\n }),\n date: Yup.string().when([], {\n is: () => selectedExport !== \"contributors\",\n then: Yup.string().required(\"Select an export date\"),\n }),\n });\n\n // Get CSV exports\n const {\n data: response = { data: [] },\n refetch,\n isLoading,\n error,\n } = useQuery(\n [\"coalitionExports\", coalitionId],\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalition_data_exports?filter[coalition_id]=${coalitionId}&sort=-created_at`,\n }),\n {\n onSuccess: (res) => {\n // Start polling when there are records with a status of `started`\n const startedRecords = res.data.filter(\n (rec) => rec.attributes.status === EXPORT_STATUS.STARTED\n );\n setShouldPoll(!!startedRecords.length);\n },\n }\n );\n\n // API requests to trigger the CSV generation\n const { mutate: generateCsv, isLoading: isGeneratingCsv } = useMutation(\n ({ dateFormat, date, state, usCountyId }) => {\n const year = new Date(date).getFullYear();\n const month = new Date(date).getMonth() + 1;\n\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalition_data_exports?filter[coalition_id]=${coalitionId}`,\n method: \"POST\",\n body: {\n data: {\n type: \"coalition_data_exports\",\n attributes: {\n state,\n usCountyId,\n states: selected.map((s) => s.value),\n us_county_ids: selectedCountry.map((s) => s.value),\n org_types: selectedOrgType.map((s) => s.value),\n export_for: selectedExport,\n organization_ids: selectedOrg.map((s) => s.value),\n coalitionId,\n yearOfRecord:\n selectedExport === \"contributors\"\n ? new Date().getFullYear()\n : year,\n ...(dateFormat === EXPORT_DATE_FORMATS.MONTH\n ? { monthOfRecord: month }\n : {}),\n },\n },\n },\n });\n },\n {\n onSuccess: (res) => {\n // When we have successfully generating a report, set shouldPoll to true\n // and add the newly created record to the top of the exports cache,\n // which will also add the new record to the top of the table\n setShouldPoll(true);\n queryClient.setQueryData(\n [\"coalitionExports\", coalitionId],\n (oldRes = { data: [] }) => {\n return Object.assign(oldRes, {\n data: [res.data, ...oldRes.data],\n });\n }\n );\n },\n onError: handleError,\n }\n );\n\n // When shouldPoll is true, call the refetch function to re-fetch\n // the available exports every 10 seconds\n useInterval(refetch, shouldPoll ? 10000 : null);\n\n const fetchCountries = async (usState) => {\n var states = usState.map((a) => a.value);\n if (states.length == 0) return \"\";\n var cont = [];\n for (let index = 1; index < 5; index++) {\n const response = await fetch(\n // Page size is 260 because the max number of counties for a given state is 254\n `${API_URL}/api/v1/us_counties?filter[us_state][eq]=${states}&page[size]=1000&page[number]=${index}`,\n {\n method: \"GET\",\n }\n );\n const {\n data,\n error: apiError,\n errors: apiErrors,\n } = await response.json();\n\n if (!response.ok) {\n const resErrors = apiErrors || apiError;\n throw resErrors;\n }\n var newStates = data.map((a) => {\n return { label: a.attributes.name, value: a.id };\n });\n cont = cont.concat(newStates);\n }\n setCountries(cont);\n };\n\n const fetchOrgs = async (orgTypes) => {\n const { accessToken, client, expiry, uid } = token;\n var orgType = orgTypes.map((a) => a.value);\n try {\n const response = await fetch(\n `${API_URL}/api/v1/organizations/coalition_organization`,\n {\n method: \"POST\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: JSON.stringify(\n decamelizeKeys({\n coalitionId: coalitionId,\n counties: selectedCountry,\n provinces: selectedProvinces,\n orgType: orgType,\n dataRequested: selectedExport,\n })\n ),\n }\n );\n const res = await response.json();\n var orgs = res.map((a) => {\n return { label: a.name, value: a.id };\n });\n setallOrgs(orgs.sort((a, b) => a.label.localeCompare(b.label)));\n } catch (error) {}\n };\n useEffect(() => {\n fetchCountries(selected);\n }, [selected]);\n\n useEffect(() => {\n fetchOrgs(selectedOrgType);\n }, [selectedOrgType, selectedExport, selectedProvinces]);\n\n const fetchOrgTypes = async (selectedCountry, selectedProvinces) => {\n const { accessToken, client, expiry, uid } = token;\n if (selectedCountry.length === 0 && selectedProvinces.length === 0) return;\n\n try {\n const response = await fetch(\n `${API_URL}/api/v1/organizations/coalition_organization_types`,\n {\n method: \"POST\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: JSON.stringify(\n decamelizeKeys({\n coalitionId: coalitionId,\n counties: selectedCountry,\n provinces: selectedProvinces,\n communityService: selectedExport !== \"intake_outcome\",\n })\n ),\n }\n );\n const res = await response.json();\n var orgs = res.map((a) => {\n return { label: a, value: a };\n });\n setallOrgsTypes(orgs);\n } catch (error) {}\n };\n\n useEffect(() => {\n fetchOrgTypes(selectedCountry, selectedProvinces);\n }, [selectedCountry, selectedProvinces]);\n\n const validAttrs = () => {\n if (selectedExport === \"contributors\" && selectedOrg.length > 0) {\n return true;\n } else if (selectedOrg.length > 0) {\n return true;\n } else {\n return false;\n }\n };\n return (\n <>\n

Export Coalition Data

\n \n {\n setSelectedExpot(\"contributors\");\n }}\n >\n Contributor Contacts\n \n {\n setSelectedExpot(\"intake_outcome\");\n }}\n >\n Intake/Outcome Export\n \n {\n setSelectedExpot(\"community\");\n }}\n >\n Community Services Data\n \n \n
\n

Choose a Month or Year to export.

\n\n
\n
\n {selectedExport !== \"contributors\" && (\n <>\n
\n State\n \n
\n
\n Counties\n \n
\n
\n Provinces\n \n
\n\n
\n Organization Type\n 0 || selectedProvinces.length > 0\n ? allOrgsTypes\n : []\n }\n value={selectedOrgType}\n className=\"grid gap-6 mb-6\"\n onChange={setSelectedOrgType}\n />\n
\n \n )}\n\n
\n Organization*\n \n
\n
\n \n {({\n isValid,\n dirty,\n values: { dateFormat, state, usCountyId },\n }) => {\n return (\n
\n
\n {selectedExport !== \"contributors\" && (\n \n \n \n \n \n )}\n\n {dateFormat && (\n \n )}\n
\n\n
\n Generating CSV…}\n >\n Generate CSV\n \n
\n
\n );\n }}\n \n
\n
\n\n

Available Exports

\n \n \n );\n};\n\nexport default ExportData;\n","import React, { useEffect, useState } from \"react\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { useParams } from \"react-router-dom\";\nimport { toast } from \"react-toastify\";\nimport { get } from \"lodash\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport {\n usePermissions,\n ROUTE_GUARDS,\n apiFetch,\n formatUiErrors,\n getTotalPages,\n camelToTitle,\n} from \"utils\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Button from \"components/Button\";\nimport Table from \"components/Table\";\nimport Pagination from \"components/Pagination\";\nimport AlertModal from \"components/AlertModal\";\nimport ConfirmationModal from \"components/ConfirmationModal\";\nimport { Menu, MenuButton, MenuItem } from \"@szhsin/react-menu\";\n\nconst Users = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const { coalitionId } = useParams();\n const permissions = usePermissions();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [userToRemove, setUserToRemove] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalError, setModalError] = useState(null);\n\n const getUsers = ({ page = 1 }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/users?&filter[coalition_id][eq]=${coalitionId}&page[number]=${page}&stats[total]=count&sort=full_name&include=user_memberships&filter[user_memberships.resource_id]=${coalitionId}`,\n includeMeta: true,\n });\n\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"coalitionUsers\", { coalitionId, page }],\n async () => {\n const response = await getUsers({ page });\n response.data.map((user) => {\n const membership = response.included.find(\n (inc) =>\n String(inc.attributes.userId) === user.id &&\n String(inc.attributes.resourceId) === coalitionId\n );\n return Object.assign(user, {\n membership,\n });\n });\n return response;\n },\n {\n keepPreviousData: true,\n }\n );\n\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"coalitionUsers\", { coalitionId, page: page + 1 }],\n () => getUsers({ page: page + 1 })\n );\n }\n }, [response, page, queryClient]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.fullName\",\n Header: \"Name\",\n },\n {\n accessor: \"attributes.email\",\n Header: \"Email\",\n },\n {\n accessor: \"membership.attributes.role\",\n Header: \"Role\",\n Cell: ({ cell }) => {\n const [isEdited, setEdited] = useState(false);\n const [role, setRole] = useState(cell.value);\n\n const handleRoleChange = async () => {\n const user = cell.row.original;\n user.membership.attributes.role = role;\n updateUser(user);\n };\n\n const editOrSave = (e) => {\n if (isEdited === true) {\n e.stopPropagation();\n setEdited(false);\n handleRoleChange();\n }\n };\n\n const changeRole = (newRole) => {\n if (newRole === role) {\n return;\n } else {\n setRole(newRole);\n setEdited(true);\n }\n };\n\n return (\n
\n {camelToTitle(role) || \"\"}\n\n {permissions[ROUTE_GUARDS.COALITION_MANAGER]() && (\n
\n \n editOrSave(e)}>\n {!isEdited ? \"Edit\" : \"Save\"}\n \n \n }\n className=\"actions-menu\"\n align=\"end\"\n >\n changeRole(\"coalition_viewer\")}>\n Coalition Viewer\n \n changeRole(\"coalition_manager\")}>\n Coalition Manager\n \n \n
\n )}\n
\n );\n },\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ row: { original: user } }) => (\n openModal(user)}\n >\n Remove from Coalition\n \n ),\n },\n ];\n\n const openModal = (user) => {\n setUserToRemove(user);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n setModalError(null);\n setUserToRemove(null);\n };\n\n const getResourceId = (userId) => {\n if (!response || !response.data) return null;\n\n const user = response.data.find((user) => {\n return user.id === userId;\n });\n\n return get(user, \"membership.id\") || null;\n };\n\n const { mutate: removeUser, isLoading: isLoadingRemoveUser } = useMutation(\n async ({ id }) => {\n const membershipId = getResourceId(id);\n return await apiFetch({\n token,\n dispatch,\n method: \"DELETE\",\n endpoint: `/api/v1/user_memberships/${membershipId}`,\n body: {\n data: {\n id: membershipId,\n type: \"user_memberships\",\n },\n },\n });\n },\n {\n onSuccess: () => {\n toast.success(\n `Removed ${userToRemove.attributes.fullName} successfully`,\n {\n autoClose: 3000,\n }\n );\n // Refresh the org members queries\n queryClient.invalidateQueries([\"coalitionUsers\", { coalitionId }], {\n refetchActive: true,\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n const { mutate: updateUser } = useMutation(\n async (user) => {\n const membershipId = getResourceId(user.id);\n return await apiFetch({\n token,\n dispatch,\n method: \"PATCH\",\n endpoint: `/api/v1/user_memberships/${membershipId}`,\n body: {\n data: {\n id: membershipId,\n type: \"user_memberships\",\n attributes: {\n role: user.membership.attributes.role,\n },\n },\n },\n });\n },\n {\n onSuccess: (res) => {\n toast.success(\n `Updated user ${res.data.attributes.userId} to ${res.data.attributes.role} successfully`,\n {\n autoClose: 3000,\n }\n );\n // Refresh the org members queries\n queryClient.invalidateQueries([\"coalitionUsers\", { coalitionId }], {\n refetchActive: true,\n });\n },\n onError: (err) => {\n console.log(err);\n toast.error(`Failed to update user to new role!`, {\n autoClose: 3000,\n });\n },\n }\n );\n\n return (\n <>\n
\n

Users

\n\n {permissions[ROUTE_GUARDS.COALITION_MANAGER]() && (\n
\n \n
\n )}\n
\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n\n \n removeUser(userToRemove)}\n />\n \n \n );\n};\n\nexport default Users;\n","import React, { useState, useEffect } from \"react\";\nimport { useMutation, useQueryClient } from \"react-query\";\nimport { useParams, useHistory } from \"react-router-dom\";\nimport { Formik, Form, useFormikContext } from \"formik\";\nimport * as Yup from \"yup\";\nimport { toast } from \"react-toastify\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport FormField from \"components/FormField\";\nimport Button from \"components/Button\";\nimport RouteLeavingGuard from \"components/RouteLeavingGuard\";\n\nconst AddUser = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n const history = useHistory();\n const queryClient = useQueryClient();\n const [isSuccess, setIsSuccess] = useState(false);\n\n const UserSchema = Yup.object().shape({\n fullName: Yup.string().required(\"Name is required\"),\n role: Yup.string().required(\"Role is required\"),\n email: Yup.string().email(\"Invalid email\").required(\"Email is required\"),\n confirmEmail: Yup.string()\n .email(\"Invalid email\")\n .oneOf([Yup.ref(\"email\")], \"Emails do not match\")\n .required(\"Confirm the email\"),\n });\n\n const { mutate: addUser, isLoading } = useMutation(\n ({ fullName, role, email }) =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/user_membership_invites`,\n method: \"POST\",\n body: {\n data: {\n type: \"user_membership_invites\",\n attributes: {\n resourceId: coalitionId,\n resourceType: \"coalition\",\n name: fullName,\n role,\n email,\n },\n },\n },\n }),\n {\n onSuccess: () => {\n setIsSuccess(true);\n toast.success(\"Saved successfully\", {\n autoClose: 3000,\n });\n queryClient.invalidateQueries([\"coalitionUsers\", { coalitionId }], {\n refetchActive: true,\n });\n history.push(`/coalitions/${coalitionId}/users`);\n },\n onError: (error) => {\n setIsSuccess(false);\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n }\n );\n\n return (\n <>\n

Invite User

\n\n \n {({ handleSubmit }) => (\n
\n
\n {/* Full Name */}\n \n\n {/* Role */}\n \n \n \n \n \n
\n\n
\n {/* Email */}\n \n\n {/* Confirm Email */}\n \n
\n\n
\n \n Cancel\n \n\n Saving…}\n onClick={handleSubmit}\n >\n Invite\n \n
\n\n \n \n )}\n \n \n );\n};\n\nexport default AddUser;\n\nconst FormContext = ({ isSuccess, setIsSuccess }) => {\n const { dirty } = useFormikContext();\n\n useEffect(() => {\n if (dirty) {\n setIsSuccess(false);\n }\n }, [dirty, setIsSuccess]);\n\n return (\n !isSuccess && dirty}\n />\n );\n};\n","import React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport DatePickerField from \"components/DatePickerField\";\nimport { Formik, Form } from \"formik\";\nimport { API_URL, ALLSTATES } from \"utils\";\nimport { useAuthState } from \"context\";\nimport { decamelizeKeys } from \"humps\";\nimport Button from \"components/Button\";\nimport { endOfMonth, startOfMonth } from \"date-fns\";\nimport { MultiSelect } from \"react-multi-select-component\";\n\nconst options = ALLSTATES;\n\nconst CoalitionFilter = ({ coalitionId, filters, setFilters, searchClick }) => {\n const currentYear = new Date().getFullYear();\n\n const [allOrgs, setallOrgs] = useState([]);\n const { token } = useAuthState();\n const [counties, setCounties] = useState([]);\n const [selectedCounty, setSelectedCounty] = useState([]);\n const [selectedOrgType, setSelectedOrgType] = useState([]);\n const [selectedOrg, setSelectedOrg] = useState([]);\n const [selected, setSelected] = useState([]);\n\n const fetchOrgs = async (orgTypes) => {\n const { accessToken, client, expiry, uid } = token;\n var orgType = orgTypes.map((a) => a.value);\n try {\n const response = await fetch(\n `${API_URL}/api/v1/organizations/coalition_organization`,\n {\n method: \"POST\",\n headers: {\n \"access-token\": accessToken,\n \"token-type\": \"Bearer\",\n \"Content-Type\": \"application/json\",\n client,\n expiry,\n uid,\n },\n body: JSON.stringify(\n decamelizeKeys({\n coalitionId: coalitionId,\n counties: selectedCounty,\n orgType: orgType,\n })\n ),\n }\n );\n const res = await response.json();\n var orgs = res.map((a) => {\n return { label: a.name, value: a.id };\n });\n setallOrgs(orgs.sort((a, b) => a.label.localeCompare(b.label)));\n } catch (error) {}\n };\n const fetchCounties = async (usState) => {\n var states = usState.map((a) => a.value);\n if (states.length == 0) return \"\";\n var cont = [];\n for (let index = 1; index < 5; index++) {\n const response = await fetch(\n // Page size is 260 because the max number of counties for a given state is 254\n `${API_URL}/api/v1/us_counties?filter[us_state][eq]=${states}&page[size]=1000&page[number]=${index}`,\n {\n method: \"GET\",\n }\n );\n const {\n data,\n error: apiError,\n errors: apiErrors,\n } = await response.json();\n\n if (!response.ok) {\n const resErrors = apiErrors || apiError;\n throw resErrors;\n }\n var newStates = data.map((a) => {\n return { label: a.attributes.name, value: a.id };\n });\n cont = cont.concat(newStates);\n }\n setCounties(cont);\n };\n\n useEffect(() => {\n fetchCounties(selected);\n }, [selected]);\n\n useEffect(() => {\n fetchOrgs(selectedOrgType);\n }, [selectedOrgType]);\n\n useEffect(() => {\n setFilters(filters);\n }, [setFilters, filters]);\n\n /**\n * FORM METHODS\n */\n const onSubmitFilters = (values) => {\n if (values.year instanceof Date) {\n const yearAsFourDigits = String(values.year.getFullYear());\n values.year = yearAsFourDigits;\n }\n values.organization_ids = selectedOrg;\n setFilters(values);\n localStorage.setItem(\n \"filters\",\n JSON.stringify({\n orgName: filters.orgName,\n year: String(currentYear),\n })\n );\n searchClick(true);\n };\n\n return (\n
\n
\n
\n
\n State*\n \n
\n
\n Counties*\n \n
\n\n
\n Organization Type*\n \n
\n\n
\n Organization Name*\n \n
\n
\n
\n \n {({ handleSubmit, values }) => {\n return (\n
\n
\n \n
\n \n {\n values.orgName = \"\";\n values.year = String(currentYear);\n localStorage.setItem(\n \"filters\",\n JSON.stringify({\n orgName: \"\",\n year: String(currentYear),\n })\n );\n setFilters({\n orgName: \"\",\n year: String(currentYear),\n });\n setCounties([]);\n setSelectedCounty([]);\n setSelectedOrgType([]);\n setSelected([]);\n }}\n emphasis=\"transparent\"\n >\n Reset Filters\n \n
\n
\n
\n );\n }}\n
\n
\n );\n};\n\nCoalitionFilter.propTypes = {\n coalitionId: PropTypes.string.isRequired,\n filters: PropTypes.shape({\n orgName: PropTypes.string,\n year: PropTypes.string,\n }).isRequired,\n setFilters: PropTypes.func.isRequired,\n};\n\nexport default CoalitionFilter;\n","import React, { useState } from \"react\";\nimport IntakeOverviewGraph from \"components/IntakeOverviewGraph\";\nimport IntakeOverviewTable from \"components/IntakeOverviewTable\";\nimport CoalitionFilter from \"components/IntakeOverviewGraphFilters/CoalitionFilter\";\nimport { useParams } from \"react-router-dom\";\n\nconst Home = () => {\n const [action, setAction] = useState(\"intakes\");\n const defaultFilters = JSON.parse(localStorage.getItem(\"filters\"));\n const [filters, setFilters] = useState(defaultFilters);\n const [searchClick, setSearchClick] = useState(true);\n const { coalitionId } = useParams();\n\n return (\n
\n \n\n
\n
\n \n {\n setAction(e.target.value);\n }}\n value={action}\n >\n \n \n \n
\n
\n
\n {action === \"intakes\"\n ? \"Intake Overview\"\n : \"Community Services Overview\"}\n
\n \n
\n {action === \"intakes\"\n ? \"Intake Overview\"\n : \"Community Services Overview\"}\n
\n \n
\n );\n};\nexport default Home;\n","import React, { useState } from \"react\";\nimport AlertModal from \"components/AlertModal\";\nimport ConfirmationModal from \"components/ConfirmationModal\";\nimport { useHandleRequestStates, apiFetch } from \"utils\";\nimport { useMutation, useQuery } from \"react-query\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport { useParams } from \"react-router-dom\";\nimport { get } from \"lodash\";\nimport Button from \"components/Button\";\n\nconst Settings = () => {\n const { handleSuccess } = useHandleRequestStates();\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n const { isAdmin } = useUserState();\n\n const [coalitionToArchive, setCoalitionToArchive] = useState(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [modalError, setModalError] = useState(null);\n\n const { isLoading, data: response } = useQuery(\n [\"coalition\", coalitionId],\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalitions/${coalitionId}`,\n })\n );\n\n /**\n * MODAL METHODS\n */\n const openModal = (coalition) => {\n setCoalitionToArchive(coalition);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n setModalError(null);\n setCoalitionToArchive(null);\n };\n\n // ARCHIVE\n const { mutate: archiveCoalition, isLoading: isLoadingArchiveCoalition } =\n useMutation(\n ({ id }) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/resource_archivers\",\n body: {\n data: {\n type: \"resource_archivers\",\n attributes: {\n resourceId: id,\n resourceType: \"coalition\",\n },\n },\n },\n }),\n {\n onSuccess: () => {\n handleSuccess({\n message: `Updated ${coalitionToArchive.attributes.name} successfully`,\n queries: [\n {\n key: \"coalition\",\n config: {\n refetchActive: true,\n },\n },\n {\n key: \"coalitions\",\n },\n {\n key: \"myCoalitions\",\n },\n ],\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n // Active from draft\n const { mutate: activeCoalition, isLoading: isLoadingActiveCoalition } =\n useMutation(\n ({ id }) =>\n apiFetch({\n token,\n dispatch,\n method: \"PUT\",\n endpoint: \"/api/v1/coalitions/\" + id,\n body: {\n data: {\n type: \"coalitions\",\n id: id,\n attributes: {\n status: \"active\",\n },\n },\n },\n }),\n {\n onSuccess: () => {\n handleSuccess({\n message: `Updated ${coalitionToArchive.attributes.name} successfully`,\n queries: [\n {\n key: \"coalition\",\n config: {\n refetchActive: true,\n },\n },\n {\n key: \"coalitions\",\n },\n {\n key: \"myCoalitions\",\n },\n ],\n });\n closeModal();\n },\n onError: setModalError,\n }\n );\n\n const archiveRecord = response.data.attributes.status === \"active\";\n const draftRecord = response.data.attributes.status === \"draft\";\n return (\n
\n

{response.data.attributes.name} Settings

\n {/* Archive coalition (admin or manager only) */}\n {draftRecord && isAdmin && (\n openModal(response.data)}\n >\n Activate Coalition\n \n )}\n {/* Only sys admin can delete records */}\n {!draftRecord && isAdmin && (\n openModal(response.data)}\n >\n {archiveRecord ? \"Delete Coalition\" : \"Activate Coalition\"}\n \n )}\n \n {\n draftRecord\n ? activeCoalition(coalitionToArchive)\n : archiveCoalition(coalitionToArchive);\n }}\n />\n \n
\n );\n};\n\nexport default Settings;\n","import React, { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nconst AnalyticsAndForecast = () => {\n const { coalitionId } = useParams();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AnalyticsAndForecast;\n","import React, { useEffect } from \"react\";\nimport { useQuery } from \"react-query\";\nimport {\n useParams,\n Switch,\n Route,\n Redirect,\n useRouteMatch,\n} from \"react-router-dom\";\nimport { apiFetch, formatUiErrors, usePermissions, ROUTE_GUARDS } from \"utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport Error from \"components/Error\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Tabs from \"components/Tabs\";\nimport CoalitionDetails from \"./components/CoalitionDetails\";\nimport Contributors from \"./components/Contributors\";\nimport AddContributor from \"./components/AddContributor\";\nimport SharingPermissions from \"./components/SharingPermissions\";\nimport DataStatusTable from \"./components/DataStatusTable\";\nimport ExportData from \"./components/ExportData\";\nimport Users from \"./components/Users\";\nimport AddUser from \"./components/AddUser\";\nimport Home from \"./components/Home\";\nimport Settings from \"./components/Settings\";\nimport CoalitionAnalytics from \"./components/CoalitionAnalytics\";\n\nconst Coalition = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { coalitionId } = useParams();\n const { url, path } = useRouteMatch();\n const cleanUrl = url.replace(/\\/$/, \"\");\n const permissions = usePermissions();\n const { isAdmin } = useUserState();\n\n const canViewCoalition = permissions[ROUTE_GUARDS.COALITION_VIEWER]();\n const isCoalitionManager = permissions[ROUTE_GUARDS.COALITION_MANAGER]();\n const isActiveCoalitionContributor =\n permissions[ROUTE_GUARDS.ORGANIZATION_MANAGER]() &&\n permissions[ROUTE_GUARDS.COALITION_CONTRIBUTOR]();\n\n if (!localStorage.getItem(\"filters\")) {\n localStorage.setItem(\n \"filters\",\n JSON.stringify({\n orgName: \"\",\n year: String(new Date().getFullYear()),\n })\n );\n }\n\n useEffect(() => {\n return () => {\n window.addEventListener(\n \"beforeunload\",\n localStorage.removeItem(\"filters\")\n );\n window.addEventListener(\n \"beforeunload\",\n localStorage.removeItem(\"defaultOrg\")\n );\n };\n }, []);\n\n const tabs =\n canViewCoalition || isCoalitionManager\n ? [\n {\n to: cleanUrl,\n label: \"Home\",\n },\n { to: `${cleanUrl}/detail`, label: \"Detail\" },\n { to: `${cleanUrl}/data-status`, label: \"Data Status Table\" },\n {\n to: `${cleanUrl}/coalition-analytics`,\n label: \"Coalition Analytics\",\n },\n { to: `${cleanUrl}/export`, label: \"Export Data\" },\n ...(isCoalitionManager\n ? [\n {\n to: `${cleanUrl}/contributors/active`,\n label: \"Active Contrib.\",\n },\n {\n to: `${cleanUrl}/contributors/pending`,\n label: \"Pending Contrib.\",\n },\n {\n to: `${cleanUrl}/contributors/declined`,\n label: \"Declined Contrib.\",\n },\n ]\n : []),\n ...(isActiveCoalitionContributor\n ? [\n {\n to: `${cleanUrl}/sharing-permissions`,\n label: \"Sharing Permissions\",\n },\n ]\n : []),\n ...(isCoalitionManager\n ? [{ to: `${cleanUrl}/users`, label: \"Users\", exact: false }]\n : []),\n ...(isAdmin\n ? [{ to: `${cleanUrl}/settings`, label: \"Settings\" }]\n : []),\n ]\n : [\n { to: `${cleanUrl}`, label: \"Detail\" },\n ...(isActiveCoalitionContributor\n ? [\n {\n to: `${cleanUrl}/sharing-permissions`,\n label: \"Sharing Permissions\",\n },\n ]\n : []),\n ];\n\n const {\n isLoading,\n error,\n data: response,\n } = useQuery([\"coalition\", coalitionId], () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/coalitions/${coalitionId}`,\n })\n );\n\n if (isLoading) {\n return Loading coalition…} />;\n }\n\n if (error) return {formatUiErrors(error)};\n\n if (response.data.attributes.status === \"closed\" && !isAdmin) {\n return (\n <>\n

{response.data.attributes.name}

\n

\n This Coalition has been closed, contact{\" \"}\n \n info@shelteranimalscount.org\n {\" \"}\n for more information.\n

\n \n );\n }\n\n return (\n <>\n

{response.data.attributes.name}

\n\n \n\n
\n {canViewCoalition || isCoalitionManager ? (\n \n {/* Home */}\n \n\n {/* Details */}\n \n\n {/* Coalition Analytics */}\n \n\n {/* Active contributors table */}\n {isCoalitionManager && (\n \n )}\n\n {/* Pending contributors table */}\n {isCoalitionManager && (\n \n )}\n\n {/* Declined contributors table */}\n {isCoalitionManager && (\n \n )}\n\n {isActiveCoalitionContributor && (\n \n )}\n\n {/* Add Contributor */}\n {isCoalitionManager && (\n \n )}\n\n {/* Data status */}\n {canViewCoalition || isCoalitionManager ? (\n \n ) : null}\n\n {/* Export coalition data */}\n {canViewCoalition || isCoalitionManager ? (\n \n ) : null}\n\n {/* Coalition Settings */}\n {isAdmin && (\n \n )}\n\n {/* Users, Add User */}\n {isCoalitionManager && (\n <>\n \n \n \n )}\n\n \n \n ) : (\n \n \n {isActiveCoalitionContributor && (\n \n )}\n \n )}\n
\n \n );\n};\n\nexport default Coalition;\n","import React from \"react\";\nimport { marketingResources } from \"images\";\n\nconst MarketingResources = () => {\n return (\n
\n {marketingResources.map((resource) => (\n \n \n \n Download Now\n \n
\n ))}\n \n );\n};\n\nexport default MarketingResources;\n","import React, { useState } from \"react\";\nimport YouTube from \"@u-wave/react-youtube\";\nimport { videoThumbnails } from \"images\";\n\nconst VideoTutorials = () => {\n const videos = [\n {\n id: \"l3aa1PrPScE\",\n name: \"How to Register an Organization\",\n icon: \"register_an_org\",\n },\n {\n id: \"b_OtS423urY\",\n name: \"How to Add a User to an Organization\",\n icon: \"add_user_to_org\",\n },\n {\n id: \"cCvi5ePMLt4\",\n name: \"How to Enter Data with a CSV File Upload\",\n icon: \"enter_data_with_csv\",\n },\n {\n id: \"N8LEzcW98mc\",\n name: \"How to Enter Data Manually\",\n icon: \"enter_data_manually\",\n },\n {\n id: \"oDGkZbSjncM\",\n name: \"How to Create a Coalition\",\n icon: \"create_a_coalition\",\n },\n {\n id: \"-i9uf-WVOno\",\n name: \"How to Request to Join a Coalition\",\n icon: \"request_to_join_coalition\",\n },\n {\n id: \"LP1HvVTpbeA\",\n name: \"How to Invite Organizations to a Coalition\",\n icon: \"invite_org_to_coalition\",\n },\n {\n id: \"-JhiwvcgJOY\",\n name: \"How to Opt into Sharing Data with a Coalition\",\n icon: \"share_data_with_coalition\",\n },\n ];\n\n const hashVideoRx = /^#!\\/video\\/(\\d)$/;\n const hash =\n typeof window.location !== \"undefined\" ? window.location.hash : \"\"; // eslint-disable-line no-undef\n const defaultVideo = hashVideoRx.test(hash)\n ? parseInt(hash.replace(hashVideoRx, \"$1\"), 10)\n : 0;\n\n const [videoIndex, setVideoIndex] = useState(defaultVideo);\n const [suggestedQuality] = useState(\"auto\");\n\n const video = videos[videoIndex];\n\n const selectVideo = (index) => {\n setVideoIndex(index);\n };\n\n return (\n <>\n
\n \n\n
\n
Shelter Animals Count \"How To\" Videos
\n
\n {videos.map((choice, index) => (\n \n \n selectVideo(index)}\n >\n {choice.name}\n \n
\n ))}\n
\n
\n \n \n );\n};\n\nexport default VideoTutorials;\n","import React from \"react\";\nimport { Switch, Route } from \"react-router-dom\";\nimport { useLocation } from \"react-router-dom\";\nimport Tabs from \"components/Tabs\";\nimport MarketingResources from \"./components/MarketingResources/MarketingResources\";\nimport VideoTutorials from \"./components/VideoTutorials/VideoTutorials\";\n\nconst ResourceCenter = () => {\n const { pathname } = useLocation();\n const tabs = [\n {\n to: \"/resource-center/marketing-resources\",\n label: \"Marketing Resources\",\n exact: false,\n isActive: () => {\n return pathname === \"/resource-center/marketing-resources\";\n },\n },\n {\n to: \"/resource-center/video-tutorials\",\n label: \"Video Tutorials\",\n exact: false,\n isActive: () => {\n return pathname === \"/resource-center/video-tutorials\";\n },\n },\n ];\n return (\n <>\n

Resource Center

\n\n \n\n
\n \n \n \n \n
\n \n );\n};\n\nexport default ResourceCenter;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useUserState } from \"context\";\n\nconst Comparison = () => {\n const { organization } = useUserState();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Comparison;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useUserState } from \"context\";\n\nconst AnalyticsAndForecast = () => {\n const { organization } = useUserState();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n {\" \"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AnalyticsAndForecast;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useUserState } from \"context\";\n\nexport default function Rehome() {\n const { organization, isAdmin } = useUserState();\n\n const tin = () => {\n if (isAdmin) {\n return \"\";\n }\n\n return organization.attributes.country === \"United States\"\n ? organization.attributes.ein\n : organization.attributes.businessNumber;\n };\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useUserState } from \"context\";\n\nconst CommunityServicesTotals = () => {\n const { organization } = useUserState();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default CommunityServicesTotals;\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React, { useEffect } from \"react\";\nimport { useUserState } from \"context\";\n\nconst IntakeOutcomeTotals = () => {\n const { organization } = useUserState();\n\n useEffect(() => {\n const script = document.createElement(\"script\");\n script.src = \"https://public.tableau.com/javascripts/api/viz_v1.js\";\n script.async = true;\n document.body.appendChild(script);\n\n return () => {\n document.body.removeChild(script);\n };\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default IntakeOutcomeTotals;\n","import React from \"react\";\nimport { Switch, Route } from \"react-router-dom\";\nimport { useLocation } from \"react-router-dom\";\nimport Tabs from \"components/Tabs\";\nimport Comparison from \"./components/Comparison\";\nimport AnalyticsAndForecast from \"./components/AnalyticsAndForecast\";\nimport Rehome from \"./components/Rehome\";\nimport CommunityServicesTotals from \"./components/CommunityServicesTotals\";\nimport IntakeOutcomeTotals from \"./components/IntakeOutcomeTotals\";\n\nconst ResourceCenter = () => {\n const { pathname } = useLocation();\n const tabs = [\n {\n to: \"/dashboards/comparison\",\n label: \"Comparison\",\n exact: false,\n isActive: () => {\n return pathname === \"/dashboards/comparison\";\n },\n },\n {\n to: \"/dashboards/analytics-and-forecast\",\n label: \"Analytics & Forecast\",\n exact: false,\n isActive: () => {\n return pathname === \"/dashboards/analytics-and-forecast\";\n },\n },\n {\n to: \"/dashboards/rehome\",\n label: \"Rehome\",\n exact: false,\n isActive: () => {\n return pathname === \"/dashboards/rehome\";\n },\n },\n {\n to: \"/dashboards/community-services-totals\",\n label: \"Community Services Totals\",\n exact: false,\n isActive: () => {\n return pathname === \"/dashboards/community-services-totals\";\n },\n },\n {\n to: \"/dashboards/intake-outcome-totals\",\n label: \"Intake and Outcome Totals\",\n exact: false,\n isActive: () => {\n return pathname === \"/dashboards/intake-outcome-totals\";\n },\n },\n ];\n return (\n <>\n

Dashboards

\n\n \n\n
\n \n \n \n \n \n \n \n
\n \n );\n};\n\nexport default ResourceCenter;\n","import React from \"react\";\nimport EntryOptions from \"../../components/DataEntryOptions\";\n\nconst ServicesMatrixOptions = () => (\n \n);\n\nexport default ServicesMatrixOptions;\n","import { Field } from \"formik\";\nimport { cloneDeep, get } from \"lodash\";\n\n/**\n * Determines if the table cell should be editable\n * @param {string} key key/value pairs to parse out and group\n * @return {boolean}\n */\nexport const isEditableKey = (key) => {\n return [\"adult\", \"youth\", \"ageUnknown\"].indexOf(key) > -1;\n};\n\n/**\n * Generates columns array for the table\n * Conditionally renders Field components when table is in edit mode\n * @param {array} params.defaultColumns array of default columns\n * @param {boolean} params.isEditing if table is in editMode\n * @param {string} params.species table species\n * @return {array} table columns\n */\nexport const getTableColumns = ({ defaultColumns, isEditing, species }) => {\n return defaultColumns.map((col) => {\n const showField = isEditing && isEditableKey(col.accessor);\n\n if (showField) {\n return {\n ...col,\n Cell: ({\n cell: {\n row: { original },\n },\n }) => {\n const key = original.attributeKeys.find((key) =>\n key.includes(col.accessor)\n );\n return (\n \n );\n },\n };\n }\n\n return col;\n });\n};\n\n/**\n * Returns the initial animal species\n * @param {array} params.data API response data array\n * @param {object} params.organization user's organization\n * @param {function} params.setAnimalSpecies function to update the animalSpecies state\n */\nexport const getDefaultAnimalSpecies = ({\n data,\n organization,\n setAnimalSpecies,\n entryStatus,\n}) => {\n const orgSpecies = get(organization, \"attributes.animalSpecies\");\n\n if (!data.length) {\n if (!!orgSpecies && !!orgSpecies.length) {\n setAnimalSpecies(orgSpecies);\n }\n } else {\n const dataToSpeciesArray = data.reduce((speciesArray, item) => {\n const {\n attributes: { species },\n } = item;\n\n if (speciesArray.indexOf(species) === -1) {\n speciesArray.push(species);\n }\n\n return speciesArray;\n }, []);\n setAnimalSpecies(dataToSpeciesArray);\n }\n};\n\n/**\n * Generates payload for updating the animal species records\n * for a given location/year/month combination\n * @param {array} params.addedSpecies array of species to add\n * @param {array} params.removedSpecies array of species to remove\n * @param {string} params.locationId\n * @param {string} params.year\n * @param {string} params.month\n * @return {object} payload for updating the animal species\n */\nexport const generateAnimalSpeciesPayload = ({\n addedSpecies,\n removedSpecies,\n locationId,\n year,\n month,\n}) => {\n const changedSpecies = [];\n addedSpecies.forEach((speciesKey) =>\n changedSpecies.push({ speciesKey, method: \"create\" })\n );\n removedSpecies.forEach((species) =>\n changedSpecies.push({\n speciesKey: species.key,\n ...species,\n method: \"destroy\",\n })\n );\n\n // Loop over ADDED species and build relationships object & Included array\n return changedSpecies.reduce(\n (payloadMap, species) => {\n const speciesKey = species.speciesKey;\n\n const includedAttributes = {\n location_id: locationId,\n species: speciesKey,\n month_of_record: month,\n year_of_record: year,\n };\n\n if (species.method === \"create\") {\n payloadMap.relationships.animal_services.data.push({\n type: \"animal_services\",\n method: \"create\",\n \"temp-id\": species.speciesKey,\n });\n payloadMap.included.push({\n type: \"animal_services\",\n \"temp-id\": species.speciesKey,\n attributes: includedAttributes,\n });\n } else {\n if (species.id) {\n payloadMap.relationships.animal_services.data.push({\n type: \"animal_services\",\n method: \"destroy\",\n id: species.id,\n });\n }\n }\n\n return payloadMap;\n },\n cloneDeep({\n relationships: {\n animal_services: {\n data: [],\n },\n },\n included: [],\n })\n );\n};\n\n/**\n * Generates updated data for the services matrix cache\n * for a given location/year/month combination\n * @param {object} params.oldData existing cache data\n * @param {object} params.response API response\n * @param {object} params.changedSpecies object containing the species to add and remove\n * @return {object} updated cache value\n */\nexport const updateSpeciesCache = ({\n oldData = { data: [] },\n response,\n changedSpecies,\n}) => {\n let newData = cloneDeep(oldData);\n\n // Add new species to the cached data\n Object.assign(newData, {\n ...(!!changedSpecies.added.length\n ? addSpeciesToCache({ oldData, response })\n : {}),\n });\n\n // Remove species from the cached data\n if (!!Object.keys(changedSpecies.removed).length) {\n newData = removeSpeciesFromCache({\n response: newData,\n removedSpecies: changedSpecies.removed,\n });\n }\n\n return newData;\n};\n\n/**\n * Generates updated data for the services matrix cache\n * for the species to add to a given location/year/month combination\n * @param {object} params.oldData existing cache data\n * @param {object} params.response API response\n * @return {object} updated cache value\n */\nexport const addSpeciesToCache = ({ oldData = { data: [] }, response }) => {\n const newData = cloneDeep(oldData);\n\n response.included.forEach((incRecord) => {\n newData.data.push(incRecord);\n });\n\n return newData;\n};\n\n/**\n * Generates updated data for the services matrix cache\n * for the species to remove from a given location/year/month combination\n * @param {object} params.oldData existing cache data\n * @param {object} params.response API response\n * @return {object} updated cache value\n */\nexport const removeSpeciesFromCache = ({ response, removedSpecies }) => {\n const newData = cloneDeep(response);\n\n removedSpecies.forEach((removed) => {\n const index = newData.data.findIndex((record) => {\n return record.id === removed.id;\n });\n if (index > -1) newData.data.splice(index, 1);\n });\n\n return newData;\n};\n\n/**\n * Generates attributes to be updated for the service matrix cache\n * @param {string} params.form name of form to get required attributes\n * @param {array} params.attributes attributes passed tn the form\n * @param {object} params.newAttributes all attributes with values\n * @return {object} only updated attributes\n */\nexport const getChangedAttributes = (form, attributes, newAttributes) => {\n const { [form]: allowedAttrs } = formAttributes();\n return Object.fromEntries(\n Object.entries(newAttributes).filter(\n ([key, val]) =>\n key in attributes &&\n allowedAttrs.includes(key) &&\n (attributes[key] !== val || (attributes[key] === 0 && val === 0))\n )\n );\n};\n\n/**\n * Generates keys for form attributes\n * @return {object} Object contains a list of attributes in the form\n */\nexport const formAttributes = () => ({\n field: [\n \"adultTrapNeuterReturnCount\",\n \"youthTrapNeuterReturnCount\",\n \"ageUnknownTrapNeuterReturnCount\",\n \"adultReturnToOwnerCount\",\n \"youthReturnToOwnerCount\",\n \"ageUnknownReturnToOwnerCount\",\n \"totalTrapNeuterReturnCount\",\n \"totalReturnToOwnerCount\",\n ],\n vet: [\n \"adultMicrochippingCollarIdTagsCount\",\n \"youthMicrochippingCollarIdTagsCount\",\n \"ageUnknownMicrochippingCollarIdTagsCount\",\n \"adultSpayNeuterOwnedAnimalCount\",\n \"youthSpayNeuterOwnedAnimalCount\",\n \"ageUnknownSpayNeuterOwnedAnimalCount\",\n \"adultWellnessPreventiveMedicalCareCount\",\n \"youthWellnessPreventiveMedicalCareCount\",\n \"ageUnknownWellnessPreventiveMedicalCareCount\",\n \"adultBasicAnimalCareCount\",\n \"youthBasicAnimalCareCount\",\n \"ageUnknownBasicAnimalCareCount\",\n \"adultAdvancedAnimalCareCount\",\n \"youthAdvancedAnimalCareCount\",\n \"ageUnknownAdvancedAnimalCareCount\",\n \"adultOwnerIntendedEuthanasiaCount\",\n \"youthOwnerIntendedEuthanasiaCount\",\n \"ageUnknownOwnerIntendedEuthanasiaCount\",\n \"totalMicrochippingCollarIdTagsCount\",\n \"totalSpayNeuterOwnedAnimalCount\",\n \"totalWellnessPreventiveMedicalCareCount\",\n \"totalBasicAnimalCareCount\",\n \"totalAdvancedAnimalCareCount\",\n \"totalOwnerIntendedEuthanasiaCount\",\n ],\n support: [\n \"adultPetFoodCount\",\n \"youthPetFoodCount\",\n \"ageUnknownPetFoodCount\",\n \"adultPetSuppliesCount\",\n \"youthPetSuppliesCount\",\n \"ageUnknownPetSuppliesCount\",\n \"adultGroomingCount\",\n \"youthGroomingCount\",\n \"ageUnknownGroomingCount\",\n \"adultTemporaryHousingOwnedAnimalsCount\",\n \"youthTemporaryHousingOwnedAnimalsCount\",\n \"ageUnknownTemporaryHousingOwnedAnimalsCount\",\n \"adultTemporaryHousingPeopleAndAnimalsCount\",\n \"youthTemporaryHousingPeopleAndAnimalsCount\",\n \"ageUnknownTemporaryHousingPeopleAndAnimalsCount\",\n \"adultOtherPetRetentionServicesCount\",\n \"youthOtherPetRetentionServicesCount\",\n \"ageUnknownOtherPetRetentionServicesCount\",\n \"adultRehomingSupportCount\",\n \"youthRehomingSupportCount\",\n \"ageUnknownRehomingSupportCount\",\n \"totalPetFoodCount\",\n \"totalPetSuppliesCount\",\n \"totalGroomingCount\",\n \"totalTemporaryHousingOwnedAnimalsCount\",\n \"totalTemporaryHousingPeopleAndAnimalsCount\",\n \"totalOtherPetRetentionServicesCount\",\n \"totalRehomingSupportCount\",\n ],\n behavior: [\n \"adultBehaviorConsultationCount\",\n \"youthBehaviorConsultationCount\",\n \"ageUnknownBehaviorConsultationCount\",\n \"adultGroupTrainingCount\",\n \"youthGroupTrainingCount\",\n \"ageUnknownGroupTrainingCount\",\n \"adultPrivateTrainingCount\",\n \"youthPrivateTrainingCount\",\n \"ageUnknownPrivateTrainingCount\",\n \"adultBehaviorModificationProgramCount\",\n \"youthBehaviorModificationProgramCount\",\n \"ageUnknownBehaviorModificationProgramCount\",\n \"totalBehaviorConsultationCount\",\n \"totalGroupTrainingCount\",\n \"totalPrivateTrainingCount\",\n \"totalBehaviorModificationProgramCount\",\n ],\n});\n","import React from \"react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCheckCircle,\n faExclamationTriangle,\n faQuestionCircle,\n} from \"@fortawesome/free-solid-svg-icons\";\nimport { camelCase } from \"lodash\";\n\nconst EntryStatus = ({ status }) => {\n const statuses = {\n unbegun: \"unbegun\",\n inProgress: \"inProgress\",\n completeServicesProvided: \"completeServicesProvided\",\n completeNoServicesProvided: \"completeNoServicesProvided\",\n };\n const statusContent = {\n [statuses.completeServicesProvided]: {\n content: \"Entry is Complete\",\n icon: faCheckCircle,\n color: \"text-teal\",\n },\n [statuses.completeNoServicesProvided]: {\n content: \"Entry is Complete, No Services Provided\",\n icon: faCheckCircle,\n color: \"text-teal\",\n },\n [statuses.inProgress]: {\n content: \"Entry is Incomplete\",\n icon: faExclamationTriangle,\n color: \"text-gold\",\n },\n [statuses.unbegun]: {\n content: \"Entry is Unbegun\",\n icon: faQuestionCircle,\n color: \"text-dashboard-blue\",\n },\n };\n\n return (\n
\n

\n \n {statusContent[camelCase(status)].content}\n

\n
\n );\n};\n\nexport default EntryStatus;\n","import React, { useEffect, useState } from \"react\";\nimport { useQueryClient, useMutation } from \"react-query\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\nimport { isEqual } from \"lodash\";\nimport { Formik, Form, FieldArray } from \"formik\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faCheck, faMapMarkerAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport { useAuthDispatch, useAuthState, useUserState } from \"context\";\nimport { speciesMap, apiFetch, useHandleRequestStates } from \"utils\";\nimport { generateAnimalSpeciesPayload, updateSpeciesCache } from \"../../utils\";\nimport Button from \"components/Button\";\nimport SpeciesCheckbox from \"components/SpeciesCheckbox\";\nimport MatrixSettingsModal from \"components/MatrixSettingsModal\";\nimport EntryStatus from \"../common/EntryStatus\";\n\nconst ServicesMatrixSettings = ({\n data,\n defaultSpecies,\n locationName,\n locationId,\n month,\n year,\n entryStatus,\n selectedSpecies,\n setSpecies,\n setIsEditing,\n isEditing,\n handleSubmitServices,\n}) => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { isOrgAdmin } = useUserState();\n const queryClient = useQueryClient();\n const { handleSuccess, handleError } = useHandleRequestStates();\n const [editMode, setEditMode] = useState(false);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [changedSpecies, setChangedSpecies] = useState({\n added: [],\n removed: [],\n });\n\n const date = new Date(`${year}/${month}/1`);\n const formattedDate = Intl.DateTimeFormat(\"en-US\", {\n year: \"numeric\",\n month: \"long\",\n }).format(date);\n\n const initialValues = Object.keys(speciesMap).reduce((map, speciesKey) => {\n map[speciesKey] = defaultSpecies.includes(speciesKey);\n return map;\n }, {});\n\n const getRemovedSpecies = (animalSpecies) => {\n const removedSpecies = Object.keys(initialValues).filter(\n (species) => !!initialValues[species] && !animalSpecies[species]\n );\n return removedSpecies.map((speciesKey) => {\n const servicesRecord = data.find((record) => {\n return record.attributes.species === speciesKey;\n });\n\n return {\n key: speciesKey,\n id: servicesRecord?.id,\n };\n });\n };\n\n const getAddedSpecies = (animalSpecies) => {\n return Object.keys(initialValues).filter(\n (species) => !initialValues[species] && !!animalSpecies[species]\n );\n };\n\n // Fire off our API request to add new species to DB\n const { mutate: setMatrixSpecies } = useMutation(\n () => {\n const payload = generateAnimalSpeciesPayload({\n addedSpecies: changedSpecies.added,\n removedSpecies: changedSpecies.removed,\n locationId,\n year,\n month,\n });\n\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: locationId,\n type: \"locations\",\n attributes: {},\n relationships: payload.relationships,\n },\n included: payload.included,\n },\n });\n },\n {\n onSettled: () => setEditMode(false),\n onSuccess: (res) => {\n handleSuccess({\n message: \"Updated the animal types\",\n });\n setIsModalOpen(false);\n\n return queryClient.setQueryData(\n [\"servicesMatrix\", `${locationId}_${month}/${year}`],\n (oldData) =>\n updateSpeciesCache({\n oldData,\n response: res,\n changedSpecies,\n })\n );\n },\n onError: handleError,\n }\n );\n\n const submitSettingsForm = (values) => {\n if (!isEqual(values, initialValues)) {\n const removedSpecies = getRemovedSpecies(values);\n const addedSpecies = getAddedSpecies(values);\n\n // Update state\n setChangedSpecies({\n removed: removedSpecies, // array of objects\n added: addedSpecies, // array of strings\n });\n } else {\n setEditMode(false);\n }\n };\n\n useEffect(() => {\n // If changedSpecies is null, we know the form is being shown for\n // the first time and we don't want to do anything\n if (!changedSpecies) {\n return;\n }\n if (!!changedSpecies.removed.length) {\n // If species have been removed, open the modal\n setIsModalOpen(true);\n } else if (!!changedSpecies.added.length) {\n // If species have only been added (and none have been removed),\n // make the API request\n setMatrixSpecies();\n } else {\n // If the species have not changed we can set the form back to it's view mode\n setEditMode(false);\n }\n }, [changedSpecies]);\n\n return (\n <>\n \n
\n {/* Icon */}\n
\n {!editMode ? (\n \n \n \n ) : (\n 1\n )}\n
\n\n {/* Form */}\n
\n
\n

Details

\n\n {!editMode && isOrgAdmin ? (\n \n ) : null}\n
\n\n {editMode\n ? editSettings({\n initialValues,\n locationName,\n formattedDate,\n isModalOpen,\n setEditMode,\n setIsModalOpen,\n submitSettingsForm,\n setMatrixSpecies,\n })\n : viewSettings({\n defaultSpecies,\n locationName,\n formattedDate,\n entryStatus,\n })}\n
\n
\n \n {/** Species selector */}\n
\n
\n
\n

\n
\n 1. Click species button below to edit/enter all data for that\n species.\n
\n
\n 2. Click save to save all data for that species. Any empty\n fields will be highlighted as incomplete.\n
\n
\n 3. Click species button again to view data for all species.\n
\n

\n
\n
\n
\n
\n {defaultSpecies.map((species, index) => {\n return (\n setSpecies(species)}\n >\n {speciesMap[species].label}\n \n );\n })}\n
\n {selectedSpecies && (\n
\n \n \n
\n )}\n
\n
\n \n );\n};\n\nServicesMatrixSettings.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n defaultSpecies: PropTypes.arrayOf(PropTypes.string).isRequired,\n locationName: PropTypes.string.isRequired,\n locationId: PropTypes.number.isRequired,\n month: PropTypes.string.isRequired,\n year: PropTypes.string.isRequired,\n entryStatus: PropTypes.string.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n setSpecies: PropTypes.func.isRequired,\n setIsEditing: PropTypes.func.isRequired,\n isEditing: PropTypes.bool.isRequired,\n handleSubmitServices: PropTypes.func.isRequired,\n};\n\nexport default ServicesMatrixSettings;\n\nconst editSettings = ({\n initialValues,\n locationName,\n formattedDate,\n isModalOpen,\n setEditMode,\n setIsModalOpen,\n submitSettingsForm,\n setMatrixSpecies,\n}) => {\n return (\n {\n const isValid = Object.keys(values).some((key) => {\n return values[key];\n });\n\n return isValid\n ? {}\n : { invalid: \"You must select at least one species\" };\n }}\n >\n {({ handleSubmit, values, errors }) => (\n <>\n
\n {/* Location */}\n
\n
Entering Data For:
\n

\n \n {locationName}\n

\n
\n\n {/* Timeframe */}\n
\n
Timeframe:
\n

{formattedDate}

\n
\n\n {/* Animal Species */}\n
\n What types of animals are you entering for?\n
\n
\n {\n return Object.keys(values).map((key) => (\n \n ));\n }}\n />\n
\n\n {/* Errors */}\n {errors.invalid && (\n
{errors.invalid}
\n )}\n\n {/* Buttons */}\n
\n setEditMode(false)}\n >\n Cancel\n \n\n \n
\n
\n\n setIsModalOpen(false)}\n confirmModal={setMatrixSpecies}\n />\n \n )}\n \n );\n};\n\nconst viewSettings = ({\n defaultSpecies,\n locationName,\n formattedDate,\n entryStatus,\n}) => {\n return (\n <>\n
\n
Entering Data For:
\n\n

\n \n {locationName}\n

\n
\n\n
\n
Timeframe:
\n\n

{formattedDate}

\n
\n
\n
Services Entry Status:
\n \n
\n\n
\n
\n Animal Types:\n
\n
    \n {defaultSpecies.map((species) => (\n \n {speciesMap[species].label}\n \n ))}\n
\n
\n \n );\n};\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form } from \"formik\";\nimport Table, {\n getRowData,\n columns as defaultColumns,\n getServiceTypeAttributes,\n} from \"components/Table\";\nimport { speciesMap, useHandleRequestStates } from \"utils\";\nimport { getTableColumns, getChangedAttributes } from \"../../utils\";\n\nconst FieldServicesTable = forwardRef(\n ({ id, attributes, species, isEditing, submit }, ref) => {\n const columns = getTableColumns({ defaultColumns, isEditing, species });\n\n const { handleSuccess } = useHandleRequestStates();\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n const data = [\n setRow({\n rowLabel: \"Trap-Neuter-Return (TNR)\",\n keySubString: \"TrapNeuterReturnCount\",\n tooltip:\n \"Animals not included in intake, already altered or altered after trapping, and returned to capture location.\",\n }),\n setRow({\n rowLabel: \"Return-to-Owner in the Field\",\n keySubString: \"ReturnToOwnerCount\",\n tooltip: \"Stray animals returned to their owner prior to intake.\",\n }),\n ];\n\n const handleSubmit = async (values) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} field services`,\n });\n\n await submit(id, getChangedAttributes(\"field\", attributes, values));\n };\n\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n\n handleSubmit(values)}\n innerRef={ref}\n >\n {() => (\n
\n {/* Form Table */}\n \n \n )}\n \n
\n );\n }\n);\n\nFieldServicesTable.propTypes = {\n id: PropTypes.string.isRequired,\n attributes: PropTypes.object.isRequired,\n species: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default FieldServicesTable;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport FieldServicesTable from \"../FieldServicesTable\";\n\nconst FieldServices = forwardRef(\n ({ data, selectedSpecies, isEditing, submit }, ref) => {\n return (\n
\n
\n
\n 2\n
\n\n
\n

Field Services

\n {data.map(({ id, attributes, attributes: { species } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n })}\n
\n
\n
\n );\n }\n);\n\nFieldServices.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default FieldServices;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form } from \"formik\";\nimport Table, {\n getRowData,\n columns as defaultColumns,\n getServiceTypeAttributes,\n} from \"components/Table\";\nimport { speciesMap, useHandleRequestStates } from \"utils\";\nimport { getTableColumns, getChangedAttributes } from \"../../utils\";\n\nconst VetServicesTable = forwardRef(\n ({ id, attributes, species, isEditing, submit }, ref) => {\n const { handleSuccess } = useHandleRequestStates();\n\n const columns = getTableColumns({ defaultColumns, isEditing, species });\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n const data = [\n setRow({\n rowLabel: \"Microchipping and/or Collar with ID tags\",\n keySubString: \"MicrochippingCollarIdTagsCount\",\n tooltip:\n \"Animals receiving insertion of microchip and/or application of long-wear collar with identification, as well as registering microchip/recording identification.\",\n }),\n setRow({\n rowLabel: \"Spay/Neuter for Owned Animals\",\n keySubString: \"SpayNeuterOwnedAnimalCount\",\n tooltip:\n \"Owned animals receiving spay/neuter services. Trap-Neuter-Return is not counted here. Count TNR above in Field Services.\",\n }),\n setRow({\n rowLabel: \"Wellness/Preventive Medical Care\",\n keySubString: \"WellnessPreventiveMedicalCareCount\",\n tooltip:\n \"Routine preventative care provided to healthy pets and/or same treatments provided to mildly affected pets (i.e. vaccinations, routine deworming, flea/tick treatment, heartworm prevention, etc.)\",\n }),\n setRow({\n rowLabel: \"Sick Animal Care/Basic Veterinary Care\",\n keySubString: \"BasicAnimalCareCount\",\n tooltip:\n \"Minor medical or surgical care provided to pets with a condition requiring single course of treatment (i.e. dentistry, tooth extraction, minor heartworm disease, routine skin allergy, ear infection, etc.)\",\n }),\n setRow({\n rowLabel: \"Sick Animal Care/Advanced Veterinary Care\",\n keySubString: \"AdvancedAnimalCareCount\",\n tooltip:\n \"Animal presents with illness as complaint and illness requires more than routine preventative medical or surgical care to address. Condition requires ongoing or chronic care or hospitalization to prevent death/disability (i.e. fractures, chronic diarrhea, URI, parvo, diabetes, cancer, etc.)\",\n }),\n setRow({\n rowLabel: \"Owner Intended Euthanasia\",\n keySubString: \"OwnerIntendedEuthanasiaCount\",\n tooltip:\n \"Limited to this definition: Owner makes an appointment with the shelter to euthanize their animal due to a medical or behavioral condition OR owner selects euthanasia as the best treatment option after consultation with a veterinarian. OIE provided to pets received at intake for OIE is not counted here.\",\n }),\n ];\n\n const handleSubmit = async (values) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} veterninary services`,\n });\n\n await submit(id, getChangedAttributes(\"vet\", attributes, values));\n };\n\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n\n handleSubmit(values)}\n innerRef={ref}\n >\n {() => (\n
\n {/* Form Table */}\n \n \n )}\n \n
\n );\n }\n);\n\nVetServicesTable.propTypes = {\n id: PropTypes.string.isRequired,\n attributes: PropTypes.object.isRequired,\n species: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default VetServicesTable;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport VetServicesTable from \"../VetServicesTable\";\n\nconst VetServices = forwardRef(\n ({ data, selectedSpecies, isEditing, submit }, ref) => {\n return (\n
\n
\n
\n 3\n
\n\n
\n

Veterinary Services

\n {data.map(({ id, attributes, attributes: { species } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n })}\n
\n
\n
\n );\n }\n);\n\nVetServices.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n isEditing: PropTypes.bool.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default VetServices;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form } from \"formik\";\nimport Table, {\n getRowData,\n columns as defaultColumns,\n getServiceTypeAttributes,\n} from \"components/Table\";\nimport { speciesMap, useHandleRequestStates } from \"utils\";\nimport { getTableColumns, getChangedAttributes } from \"../../utils\";\n\nconst BehavioralServicesTable = forwardRef(\n ({ id, attributes, species, isEditing, submit }, ref) => {\n const { handleSuccess } = useHandleRequestStates();\n\n const columns = getTableColumns({ defaultColumns, isEditing, species });\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n const data = [\n setRow({\n rowLabel: \"Behavior Consultation\",\n keySubString: \"BehaviorConsultationCount\",\n tooltip:\n \"Owned animals receiving behavior consultation in-person, by phone, or online. Limited to this defintion: consult is provided as a free or low-cost community service.\",\n }),\n setRow({\n rowLabel: \"Group Training\",\n keySubString: \"GroupTrainingCount\",\n tooltip:\n \"Owned animals receiving training in a group setting. Limited to this definition: training provided as a free or low-cost community service, not all training classes provided by an organization.\",\n }),\n setRow({\n rowLabel: \"Private Training\",\n keySubString: \"PrivateTrainingCount\",\n tooltip:\n \"Owned animals receiving training in a private setting. Limited to this definitioN: training provided as a free or low-cost community service, not all training classes provided by an organization.\",\n }),\n setRow({\n rowLabel: \"Behavior Modification Program\",\n keySubString: \"BehaviorModificationProgramCount\",\n tooltip:\n \"Owned animals participating in a behavior modification program. Limited to this definition: training provided as a free or low-cost community service, not all training classes provided by an organization.\",\n }),\n ];\n const handleSubmit = async (values) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} behavioral services`,\n });\n\n await submit(id, getChangedAttributes(\"behavior\", attributes, values));\n };\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n\n handleSubmit(values)}\n innerRef={ref}\n >\n {() => (\n
\n {/* Form Table */}\n \n \n )}\n \n
\n );\n }\n);\n\nBehavioralServicesTable.propTypes = {\n attributes: PropTypes.object.isRequired,\n species: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default BehavioralServicesTable;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport BehavioralServicesTable from \"../BehavioralServicesTable\";\n\nconst BehavioralServices = forwardRef(\n ({ data, selectedSpecies, isEditing, submit }, ref) => {\n return (\n
\n
\n
\n 4\n
\n\n
\n

Behavioral Services

\n {data.map(({ id, attributes, attributes: { species } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n })}\n
\n
\n
\n );\n }\n);\n\nBehavioralServices.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n isEditing: PropTypes.bool.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default BehavioralServices;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Formik, Form } from \"formik\";\nimport Table, {\n getRowData,\n columns as defaultColumns,\n getServiceTypeAttributes,\n} from \"components/Table\";\nimport { speciesMap, useHandleRequestStates } from \"utils\";\nimport { getTableColumns, getChangedAttributes } from \"../../utils\";\n\nconst SupportServicesTable = forwardRef(\n ({ id, attributes, species, isEditing, submit }, ref) => {\n const { handleSuccess } = useHandleRequestStates();\n\n const columns = getTableColumns({ defaultColumns, isEditing, species });\n\n const setRow = ({ rowLabel, keySubString, tooltip }) =>\n getRowData({\n data: attributes,\n accessKeys: [\"adult\", \"youth\", \"ageUnknown\", \"total\"],\n rowLabel,\n keySubString,\n tooltip,\n });\n\n const data = [\n setRow({\n rowLabel: \"Pet Food\",\n keySubString: \"PetFoodCount\",\n tooltip:\n \"Animals receiving pet food through pet pantries or similar services.\",\n }),\n setRow({\n rowLabel: \"Pet Supplies\",\n keySubString: \"PetSuppliesCount\",\n tooltip:\n \"Animals receiving leashes and collars, cat carriers, or other supplies.\",\n }),\n setRow({\n rowLabel: \"Grooming\",\n keySubString: \"GroomingCount\",\n tooltip: \"Animals receiving grooming services.\",\n }),\n setRow({\n rowLabel: \"Temporary Housing for Owned Animals\",\n keySubString: \"TemporaryHousingOwnedAnimalsCount\",\n tooltip:\n \"Animals receiving temporary short or long term housing WITHOUT their owner.\",\n }),\n setRow({\n rowLabel: \"Temporary Housing for People and Animals\",\n keySubString: \"TemporaryHousingPeopleAndAnimalsCount\",\n tooltip:\n \"Animals receiving temporary short or long term housing WITH their owner.\",\n }),\n setRow({\n rowLabel: \"Other Pet Retention Services\",\n keySubString: \"OtherPetRetentionServicesCount\",\n tooltip:\n \"Animals receiving other support not captured above (i.e. fence repairs/builds, dog houses, pet deposits).\",\n }),\n setRow({\n rowLabel: \"Rehoming Support\",\n keySubString: \"RehomingSupport\",\n tooltip:\n \"Animals receiving rehoming assistance outside of owner relinquishment or other shelter/rescue intake.\",\n }),\n ];\n\n const handleSubmit = async (values) => {\n handleSuccess({\n message: `Updated the ${speciesMap[\n attributes.species\n ].label.toLocaleLowerCase()} support services`,\n });\n\n await submit(id, getChangedAttributes(\"support\", attributes, values));\n };\n\n return (\n
\n
\n

\n \"\"\n {speciesMap[species].label}\n

\n
\n\n handleSubmit(values)}\n innerRef={ref}\n >\n {() => (\n
\n {/* Form Table */}\n \n \n )}\n \n
\n );\n }\n);\n\nSupportServicesTable.propTypes = {\n attributes: PropTypes.object.isRequired,\n species: PropTypes.string.isRequired,\n isEditing: PropTypes.bool.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default SupportServicesTable;\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport SupportServicesTable from \"../SupportServicesTable\";\n\nconst SupportServices = forwardRef(\n ({ data, selectedSpecies, isEditing, submit }, ref) => {\n return (\n
\n
\n
\n 5\n
\n\n
\n

Support Services

\n {data.map(({ id, attributes, attributes: { species } }) => {\n if (species === selectedSpecies || !selectedSpecies) {\n return (\n \n );\n }\n })}\n
\n
\n
\n );\n }\n);\n\nSupportServices.propTypes = {\n data: PropTypes.arrayOf(PropTypes.object).isRequired,\n isEditing: PropTypes.bool.isRequired,\n selectedSpecies: PropTypes.string.isRequired,\n submit: PropTypes.func.isRequired,\n};\n\nexport default SupportServices;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useQuery, useQueryClient, useMutation } from \"react-query\";\nimport { apiFetch, formatUiErrors, useHandleRequestStates } from \"utils\";\nimport {\n getDefaultAnimalSpecies,\n generateAnimalSpeciesPayload,\n updateSpeciesCache,\n} from \"./utils\";\nimport { useAuthState, useAuthDispatch, useUserState } from \"context\";\nimport LoadingIndicator from \"components/LoadingIndicator\";\nimport Error from \"components/Error\";\nimport ServicesMatrixSettings from \"./components/ServicesMatrixSettings\";\nimport FieldServices from \"./components/FieldServices\";\nimport VetServices from \"./components/VetServices\";\nimport BehavioralServices from \"./components/BehavioralServices\";\nimport SupportServices from \"./components/SupportServices\";\nimport Button from \"components/Button\";\nimport { transformAttributesForPayload } from \"components/Table\";\nimport { cloneDeepWith, isObject } from \"lodash\";\n\nconst ServicesMatrix = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const { attributes, organization, isAdmin, isOrgAdmin } = useUserState();\n const queryClient = useQueryClient();\n const { handleError } = useHandleRequestStates();\n const { month, year, location, organizationId } = useParams();\n const [isLoading, setIsLoading] = useState(true);\n const [animalSpecies, setAnimalSpecies] = useState([\"canine\", \"feline\"]);\n const [isEditing, setIsEditing] = useState(false);\n const [selectedSpecies, setSelectedSpecies] = useState(\"\");\n const [updatedData, setUpdatedData] = useState({});\n const [updatingData, setUpdatingdData] = useState(false);\n const [speciesUpdateId, setSpeciesUpdateId] = useState();\n const [newOrganization, setOrganization] = useState({});\n const [newlocation, setNewLocation] = useState({});\n\n const fieldForm = useRef(null);\n const vetForm = useRef(null);\n const behaviourForm = useRef(null);\n const supportForm = useRef(null);\n const isFirstRender = useRef(true);\n var locationId = attributes.locationId;\n if (isAdmin) locationId = location;\n\n const getOrg = async () => {\n if (organizationId) {\n const response = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/organizations/${organizationId}`,\n });\n setOrganization(response.data);\n }\n const response2 = await apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n });\n setNewLocation(response2.data.attributes);\n };\n\n useEffect(() => {\n getOrg();\n }, []);\n\n const setSpecies = (species) => {\n if (species === selectedSpecies) {\n setSelectedSpecies(\"\");\n } else {\n setSelectedSpecies(species);\n }\n };\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n } else {\n updateServices();\n }\n }, [updatedData]);\n\n const {\n error: isStatusError,\n data: status,\n isLoading: isLoadingStatus,\n } = useQuery(\n [\"servicesMatrixStatus\", `${locationId}_${month}/${year}`],\n () => {\n setIsLoading(true);\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/data_entry_status?filter[year][eq]=${year}&filter[month][eq]=${month}&filter[location_id][eq]=${locationId}&filter[action][eq]=services`,\n });\n },\n {\n onSettled: () => setIsLoading(false),\n }\n );\n\n const {\n error,\n data: response,\n refetch,\n } = useQuery(\n [\"servicesMatrix\", `${locationId}_${month}/${year}`],\n () => {\n setIsLoading(true);\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_services?filter[year_of_record][eq]=${year}&filter[month_of_record][eq]=${month}&filter[location_id][eq]=${locationId}`,\n });\n },\n {\n onSuccess: (res) => {\n var org = organizationId ? newOrganization : organization;\n getDefaultAnimalSpecies({\n data: res.data,\n organization: org,\n setAnimalSpecies,\n entryStatus: status ? status.data[0].attributes.status : \"unbegun\",\n });\n\n isFirstRender.current = true;\n setUpdatedData(() =>\n Object.assign(\n {},\n res.data\n .map((species) => ({\n [species.id]: species.attributes,\n }))\n .reduce((acc, curr) => Object.assign(acc, curr), {})\n )\n );\n },\n onError: () => setIsLoading(false),\n }\n );\n\n const {\n mutate: setMatrixSpecies,\n isLoading: isLoadingTables,\n error: isTableError,\n } = useMutation(\n () => {\n const payload = generateAnimalSpeciesPayload({\n addedSpecies: animalSpecies,\n removedSpecies: [],\n locationId,\n year,\n month,\n });\n\n return apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/locations/${locationId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: locationId,\n type: \"locations\",\n attributes: {},\n relationships: payload.relationships,\n },\n included: payload.included,\n },\n });\n },\n {\n onSuccess: (res) => {\n queryClient.setQueryData(\n [\"servicesMatrix\", `${locationId}_${month}/${year}`],\n (oldData) =>\n updateSpeciesCache({\n oldData,\n response: res,\n changedSpecies: { added: animalSpecies, removed: [] },\n })\n );\n },\n onSettled: () => setIsLoading(false),\n }\n );\n\n const { mutate: updateServices } = useMutation(\n () =>\n apiFetch({\n token,\n dispatch,\n endpoint: `/api/v1/animal_services/${speciesUpdateId}`,\n method: \"PATCH\",\n body: {\n data: {\n id: speciesUpdateId,\n type: \"animal_services\",\n attributes: transformAttributesForPayload(\n updatedData[speciesUpdateId]\n ),\n },\n },\n }),\n {\n onSuccess: (res) => {\n // API returns updated table. But cache stores all tables and when you update you lose extra tables.\n queryClient.setQueryData(\n [\"servicesMatrix\", `${locationId}_${month}/${year}`],\n (oldData) =>\n cloneDeepWith(oldData, (value) => {\n if (isObject(value) && value.id === speciesUpdateId) {\n Object.assign(value, res.data);\n }\n })\n );\n\n queryClient.refetchQueries([\n \"servicesMatrixStatus\",\n `${locationId}_${month}/${year}`,\n ]);\n },\n onError: handleError,\n }\n );\n\n const setUpdatedAttributes = (id, attributes) => {\n setSpeciesUpdateId(id);\n var attri = {\n ...fieldForm.current.values,\n ...behaviourForm.current.values,\n ...vetForm.current.values,\n ...supportForm.current.values,\n };\n\n setUpdatedData(() =>\n cloneDeepWith(updatedData, (value) => {\n if (isObject(value) && value[id]) {\n Object.assign(value[id], attri);\n }\n })\n );\n };\n\n const handleSubmit = async () => {\n await fieldForm.current.handleSubmit();\n // await vetForm.current.handleSubmit();\n // await behaviourForm.current.handleSubmit();\n // await supportForm.current.handleSubmit();\n setIsEditing(false);\n };\n\n useEffect(() => {\n if (!response) {\n return;\n }\n\n if (!response.data.length && isOrgAdmin) {\n setMatrixSpecies();\n } else {\n setIsLoading(false);\n }\n }, [response, animalSpecies]);\n\n useEffect(refetch, [locationId, refetch]);\n // useEffect(refetch, []);\n\n const getContent = () => {\n if (isLoading || isLoadingTables || isLoadingStatus)\n return (\n Loading services matrix…}\n />\n );\n\n if (error || isTableError || isStatusError)\n return (\n {formatUiErrors(error || isTableError || isStatusError)}\n );\n\n if (newlocation.status == \"closed\") {\n return (\n
\n {newlocation.name} - location is closed by system admin. If you\n want to enter data for this location please contact Shelter Animals\n Count helpdesk,{\" \"}\n \n info@shelteranimalscount.org\n \n .\n
\n );\n }\n return (\n <>\n {/* Settings */}\n \n {/* Tables */}\n \n \n \n \n {selectedSpecies && (\n
\n setIsEditing(true)}\n >\n Edit\n \n \n
\n )}\n \n );\n };\n\n return (\n
\n

Enter Services Data

\n

\n Please keep in mind that all data fields must be filled in, even if the\n entry is “0.” Records will be considered incomplete until all fields are\n populated with numeric values.\n

\n\n {getContent()}\n
\n );\n};\n\nexport default ServicesMatrix;\n","export default __webpack_public_path__ + \"static/media/Shelter-Animals-Count_Sample_Services-Import.a91fab62.csv\";","import React from \"react\";\nimport Upload from \"../../components/DataEntryUpload\";\nimport exampleCSV from \"files/Shelter-Animals-Count_Sample_Services-Import.csv\";\n\nconst ServicesUpload = () => (\n \n);\n\nexport default ServicesUpload;\n","import React from \"react\";\nimport Export from \"components/DataEntryExport\";\n\nconst ServicesExport = () => (\n \n);\n\nexport default ServicesExport;\n","import React, { useState } from \"react\";\nimport { API_URL, useQueryParams } from \"utils\";\nimport { useMutation } from \"react-query\";\nimport { toast } from \"react-toastify\";\nimport FormWrapper from \"components/FormWrapper\";\nimport Button from \"components/Button\";\nimport { formatUiErrors } from \"utils\";\n\nexport default function DataUseAgreement() {\n const { membershipId, resetPasswordToken } = useQueryParams();\n const [accepted, setAccepted] = useState(false);\n\n const baseUrl = process.env.REACT_APP_BASE_URL_SENDGRID;\n const reactRedirectUrl = process.env.REACT_APP_RESET_PASSWORD_REDIRECT_URL;\n\n const { mutate: handleSubmit, isLoading } = useMutation(\n async (e) => {\n e.preventDefault();\n const requestOptions = {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n data: {\n data_use_agreement: true,\n data_use_timestamp: new Date().toISOString(),\n },\n }),\n };\n const response = await fetch(\n `${API_URL}/api/v1/user_memberships/${membershipId}/data_use_agreement`,\n requestOptions\n );\n return await response.json();\n },\n {\n onSuccess: () => {\n setAccepted(true);\n toast.success(\"You have accepted the data use agreement\", {\n autoClose: 3000,\n });\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n });\n },\n }\n );\n return (\n \n

Data Use Agreement

\n
\n
\n Shelter Animals Count - Data Use Policy\n \n Shelter Animals Count (“SAC”) collects and shares information and\n data on Shelters & Rescues, Intake/Outcome Data, Community Services\n Data and other information relating to the operation of animal\n shelters for the benefit of animals and communities. SAC also\n provides a platform for the formation of groups of shelters/rescues\n through its Coalition Builder tool to foster collaboration and\n provide data tracking and reporting among these groups at local,\n regional, and national levels (a “Coalition”). For purposes of this\n Coalition Data Use Agreement, all of the information and data\n collected and made available by SAC, including information that is\n shared by an SAC member organization with other Coalition members on\n the SAC platform, is referred to as “Data” and the assembled Data in\n any format maintained by SAC is referred to as the “Database.”{\" \"}\n \n Backgroud\n \n In the spirit of the SAC mission statement, “to create, share and\n steward the national database of sheltered animals that provides\n facts and enables insights to save lives”, the SAC Board of\n Directors has established a policy and agreement to ensure we can\n both share Data and be good stewards of the Data and its use.\n \n
    \n
  • \n It is the responsibility of those requesting access to Data and\n forming Coalitions to take the time to fully understand the\n limitations of the dataset (i.e. the Data may be incomplete for a\n particular period of time, community-related Data may not\n represent the bulk of animal intakes in that community, etc.).\n
  • \n
  • \n Data alone is not a complete representation of the work of an\n organization. To truly understand the impact and value of an\n organization you must seek out context for the numbers and explore\n the work and impact of an organization beyond the numbers.\n
  • \n
  • \n Individuals, institutions, or others seeking to utilize the\n Database by downloading Data from the SAC website, forming a\n Coalition, or sharing Data among Coalition members must adhere to\n this Coalition Data Use Agreement.\n
  • \n
\n\n Data Use\n \n This Coalition Data Use Agreement (“Agreement”) is between you, the\n manager/owner of the Coalition and user of the Data (“Recipient”),\n and SAC. Recipient agrees to comply with this Agreement for each\n Coalition that you form and for all Data that you collect from, use,\n or distribute to Coalition members.\n \n \n If you are requesting Data on behalf of an entity or organization,\n this Agreement applies to the entire organization, and “Recipient”\n means you and that organization. You represent and agree that you\n have the authority, and will ensure that, all employees and\n contractors of your entity or organization understand and will abide\n by this Agreement.\n \n \n After the Effective Date of this Agreement, Recipient's use or\n Publication (as defined below) of Data that was received by\n Recipient prior to the Effective Date shall become subject to the\n terms of this Agreement.\n \n\n Term and Termination\n \n This Agreement will remain in full force and effect until terminated\n as set forth herein. This Agreement will terminate\n \n \n (1) automatically without notice from SAC if Recipient fails to\n comply with the provisions of this Agreement, or\n \n \n (2) immediately upon written notice by either Recipient or SAC to\n the other. Recipient agrees that upon termination of this Agreement,\n it shall return or destroy all copies of any Data, in any and all\n media, in Recipient's custody or control; provided that Recipient\n may retain a copy of the Data on its system-wide back-up storage\n media, 931 Monroe Dr NE | Ste A102 #109 | Atlanta, GA 30308on the\n condition that any such retained copies are not generally accessible\n and remain subject to the terms of this Agreement. Recipient shall\n certify as to its return or destruction of Data upon request by SAC.\n Within 10 days after termination of this Agreement, SAC shall have\n the right to terminate the Coalition and notify all Coalition\n members of the termination.\n \n \n SAC reserves the right to limit or deny access to the Data,\n Database, downloads, or Coalition Builder tool and to require return\n or destruction of Data by Recipient, with or without stated cause,\n at any time.\n \n\n Use of Data\n \n SAC hereby grants to the Recipient a non-exclusive, revocable,\n limited, non-transferable license to use the Data solely for (1)\n research, reporting, scholarly, or academic purposes, or (2)\n Recipient's internal, non-commercial use. Recipient shall not\n disclose any Data except as permitted by this Agreement and subject\n to the following requirements:\n \n \n SAC reserves the right to limit or deny access to the Data,\n Database, downloads, or Coalition Builder tool and to require return\n or destruction of Data by Recipient, with or without stated cause,\n at any time.\n \n
    \n
  • \n Data that is included in scholarly, research, or academic\n publications or in any news reporting, websites, email, social\n media, written communication, or video (collectively,\n “Publication”) must not identify any person, individual animal,\n organization, or shelter.\n
  • \n
  • \n Data that is included in any Publication must include only\n aggregated or summarized Data and shall not include the complete\n or original Data set provided by SAC.\n
  • \n
  • \n No Publication may disparage or otherwise portray in a negative\n light SAC or any contributor to the Data. SAC has adopted a\n purposefully positive view of the efforts and intentions of\n individuals and agencies in animal welfare and control. As a\n result, Recipient must, in the context of the use of the Data,\n treat the member organizations of the Database with respect,\n regardless of Recipient's personal opinions.\n
  • \n
  • \n Each Publication shall include an acknowledgement of “Shelter\n Animals Count” as the source of the Data and include the following\n legend:“The information contained herein was derived from data\n supplied by Shelter Animals Count. Shelter Animals Count\n specifically disclaims all responsibility for any analysis,\n interpretations, conclusions and opinions contained in or derived\n from the information presented.”\n
  • \n
  • \n Recipient shall promptly notify SAC of any Publication in news\n reporting, website, social media, promotional email, or video form\n and provide the appropriate citation or location of such\n Publication.\n
  • \n
  • \n Recipient must promptly report to SAC any use or disclosure of the\n Data that is not permitted by this Agreement of which it becomes\n aware.\n
  • \n
\n\n Prohibited Uses\n \n Except as set forth herein, Recipient may not reproduce, lease,\n loan, distribute, or sublicense, disclose, or otherwise transfer any\n Data, in whole or in part, to any other person or entity. In\n addition, Recipient shall not:\n \n
    \n
  • \n Use Data to rate, rank, score, or compare a shelter, organization,\n or Data contributor to any other shelter, organization, or Data\n contributor\n
  • \n
  • \n Use Data as justification for criticizing, making negative\n statements about, or vilifying the work of any individual,\n organization, or shelter\n
  • \n
  • \n Use the Data to create any derived product for resale, lease, or\n license\n
  • \n
  • \n Use the Data for any commercial purpose without prior written\n consent from SAC\n
  • \n
  • Use the Data for any illegal purpose
  • \n
  • \n Introduce into the Data or the SAC website viruses, worms, or\n other material that is malicious or technologically harmful\n
  • \n
  • Upload illegal, infringing, or defamatory content.
  • \n
\n \n Recipient shall take all reasonable measures to prevent the\n disclosure of the Data except as set forth in this Agreement or as\n may be required by law. If Recipient receives a request pursuant to\n court order or governmental proceeding to disclose Data, then, prior\n to any such disclosure, Recipient will provide SAC with reasonable\n prior notice and will use reasonable efforts assist SAC in obtaining\n a protective order or confidential treatment of the Data.{\" \"}\n \n \n SAC has taken measures to ensure that the Data is devoid of\n information that could be used to identify individual animals,\n persons, or organizations. If Recipient discovers any\n individual-identifying or organization-identifying information in\n the Data, Recipient shall immediately notify SAC and delete such\n identifying information.\n \n\n SAC Representations and Warranties\n \n SAC REPRESENTS THAT IT HAS ALL RIGHTS REQUIRED TO MAKE AVAILABLE AND\n DISTRIBUTE THE DATA ON THE TERMS SET FORTH IN THIS AGREEMENT. EXCEPT\n FOR SUCH REPRESENTATION, THE DATA IS PROVIDED “AS IS” AND “AS\n AVAILABLE” AND WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n INCLUDING, BUT NOT LIMITED TO, NON-INFRINGEMENT, MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE, AND ANY WARRANTIES IMPLIED BY ANY\n COURSE OF PERFORMANCE OR USAGE OF TRADE, ALL OF WHICH ARE EXPRESSLY\n DISCLAIMED. WITHOUT LIMITING THE FOREGOING, SAC DOES NOT WARRANT\n THAT: (A) THE DATA IS ACCURATE, COMPLETE, RELIABLE, OR CORRECT; (B)\n THE DATA WILL BE AVAILABLE AT ANY PARTICULAR TIME OR LOCATION; (C)\n ANY DEFECTS OR ERRORS WILL BE CORRECTED; (D) THE DATA IS FREE OF\n VIRUSES OR OTHER HARMFUL COMPONENTS; OR (E) THE RESULTS OF USING THE\n DATA WILL MEET RECIPIENT'S REQUIREMENTS. RECIPIENT'S USE OF THE DATA\n IS SOLELY AT RECIPIENT'S OWN RISK.\n \n\n Recipient's Representations\n \n Recipient represents and warrants that it is in compliance with all\n applicable local, state, tribal, and federal laws, regulations and\n other requirements to which Recipient is subject. The individual\n signing this Agreement as, or on behalf of, Recipient is duly\n authorized to enter into this Agreement. This Agreement is binding\n and enforceable on Recipient in accordance with its terms.\n \n\n Limitation of Liability\n \n IN NO EVENT SHALL SAC BE LIABLE TO RECIPIENT OR ANY THIRD PARTY,\n UNDER CONTRACT, TORT, STRICT LIABILITY, NEGLIGENCE OR ANY OTHER\n LEGAL THEORY WITH RESPECT TO THE DATA FOR ANY (A) DIRECT DAMAGES, OR\n (B) LOST PROFITS OR SPECIAL, INDIRECT, INCIDENTAL, PUNITIVE, OR\n CONSEQUENTIAL DAMAGES OF ANY KIND WHATSOEVER, INCLUDING WITHOUT\n LIMITATION DAMAGES FOR THE INABILITY TO USE EQUIPMENT OR ACCESS\n DATA, LOSS OF BUSINESS, LOSS OF REVENUE OR PROFITS, BUSINESS\n INTERRUPTIONS, LOSS OF INFORMATION OR DATA, OR OTHER FINANCIAL LOSS,\n ARISING OUT OF THE USE OF, OR INABILITY TO USE, THE DATA, EVEN IF\n SAC HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\n \n\n Indemnification\n \n Recipient shall defend, indemnify, and hold harmless SAC, including\n its respective affiliates, directors, officers, managers, employees,\n representatives, agents, assigns, and successors, for, from, and\n against all costs, claims, losses, liabilities, property damage,\n bodily injury or death, or intellectual property infringement\n (including reasonable attorneys' fees and expenses), incident to or\n arising out of Recipient's: (a) breach of this Agreement; (b)\n infringement of any third-party intellectual property right; (c)\n violation of applicable law; and (d) use of the Data and any\n Publication.\n \n\n Equitable Relief\n \n Recipient recognizes and acknowledges that a breach of this\n Agreement may cause SAC irreparable damage which cannot be readily\n remedied in monetary damages in an action at law. In the event of\n any default or breach by Recipient of this Agreement, SAC shall be\n entitled to immediate injunctive relief and/or specific performance\n as a remedy, without the necessity of posting a bond or proving the\n inadequacy of money damages. Such remedy shall be in addition to any\n other remedies available.\n \n\n Miscellaneous\n \n (a) SAC may assign, transfer, or delegate any of its rights and\n obligations hereunder at any time. Recipient shall not transfer,\n assign, or sublicense, in whole or in part, any of its rights or\n obligations under this Agreement without the prior written consent\n of SAC.\n \n \n (b) No agency, partnership, joint venture, or employment\n relationship is created as a result of the Agreement and neither\n party has any authority of any kind to bind the other in any respect\n outside of the terms described within this Agreement.\n \n \n (c) This Agreement represents the entire agreement between Recipient\n and SAC with respect to the Data and the Database and supersedes all\n prior or contemporaneous communications and proposals (whether oral,\n written or electronic). If any provision of this Agreement is found\n to be unenforceable or invalid, that provision will be limited or\n eliminated to the minimum extent necessary so that the Agreement\n will otherwise remain in full force and effect and enforceable, and\n the invalid or unenforceable provision shall be modified to the\n extent necessary to allow for enforceability and to give effect to\n the original intent of the parties to the extent possible. The\n failure of either party to insist upon the performance of any term\n or provision of this Agreement or to exercise any right herein\n conferred shall not be construed as a waiver or relinquishment to\n any extent of such party's right to assert or rely upon any such\n term or right on any future occasion. This Agreement shall not be\n construed for or against any party on the basis of which party\n drafted this Agreement, and each party acknowledges that it has had\n the opportunity to review this Agreement with its respective legal\n counsel to the party's satisfaction.\n \n \n (d) All provisions that logically ought to survive termination shall\n survive of this Agreement, including without limitation provisions\n relating to obligations of non-disclosure, limitation on liability,\n indemnity provisions, and choice of law and dispute resolution.\n \n \n (e) SAC may modify the terms of this Agreement at any time. SAC\n shall make reasonable efforts to inform Recipient of the\n modifications. Continued management/ownership of a Coalition,\n creation of new Coalitions, and use of Data subsequent to such\n modification shall be subject to the modified terms.\n \n\n \n (f) Notices shall be deemed served when received by addressee or, if\n delivery fails by reason of some fault or action of the addressee,\n when tendered for delivery. All notices shall be in writing,\n reference this Agreement, and be delivered by electronic mail, hand,\n prepaid courier, or registered or certified mail (postage prepaid)\n to the address provided at the time the parties enter into this\n Agreement.\n \n \n (g) This Agreement shall be governed by and construed in accordance\n with the laws of the United States of America and the District of\n Columbia, excluding conflict of law provisions. Recipient expressly\n agrees to jurisdiction for any claim or action arising out of or\n relating to this Agreement in the state or federal courts located in\n the District of Columbia, and further agrees and submits to the\n exercise of personal jurisdiction of those courts for the purpose of\n litigating any such claim or action. SAC may seek injunctive or\n equitable relief in any court of competent jurisdiction. In any\n action or proceeding to enforce rights or obligations under the\n Agreement, the prevailing party will be entitled to recover costs\n and attorneys' fees.\n \n \n (h) Recipient shall not use the name or trademarks of SAC in any\n advertising, publicity, endorsement, promotion, or other publicly\n available document without SAC's prior written consent, except for\n inclusion of the required legend as described above under “Use of\n Data.”\n \n \n BY CLICKING “I AGREE TO THE DATA USE AGREEMENT ABOVE” YOU\n ACKNOWLEDGE THAT YOU HAVE READ, UNDERSTAND, AND AGREE TO BE BOUND BY\n THESE TERMS. THESE TERMS ARE A LEGAL CONTRACT THAT WILL BIND BOTH OF\n US AS SOON AS YOU CLICK THE ASSENT BUTTON. IF YOU REJECT THE\n PROPOSED TERMS, YOU WILL BE DENIED ACCESS TO THE FORMATION OF A\n COALITION AND/OR THE DATA THAT YOU ARE REQUESTING.\n \n
\n\n {accepted ? (\n
\n \n \n New Users\n \n
\n ) : (\n Accepting…}\n className=\"w-full mb-4\"\n type=\"submit\"\n >\n I AGREE TO THE DATA USE AGREEMENT ABOVE\n \n )}\n \n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useQuery, useQueryClient } from \"react-query\";\nimport { Link } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport Table from \"components/Table\";\nimport Button from \"components/Button\";\nimport FormField from \"components/FormField\";\nimport Pagination from \"components/Pagination\";\nimport ActionsMenu from \"components/ActionsMenu\";\nimport {\n formatEin,\n formatBusinessNumber,\n formatDateTime,\n getTotalPages,\n getOrganizationsForUsers,\n} from \"utils\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { FocusableItem } from \"@szhsin/react-menu\";\nimport { get, uniq, isEqual } from \"lodash\";\nimport StateDropdown from \"components/StateDropdown/StateDropdown\";\nimport ProvinceDropdown from \"components/ProvinceDropdown/ProvinceDropdown\";\n\nconst AllOrganizations = () => {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n const queryClient = useQueryClient();\n const [page, setPage] = useState(1);\n const [totalPages, setTotalPages] = useState(0);\n const [search, setSearch] = useState(\"\");\n\n // Form Filters\n const initialFilters = {\n search: \"\",\n state: \"\",\n organizationType: \"\",\n country: \"United States\",\n };\n const [filters, setFilters] = useState(initialFilters);\n // Initial query\n const {\n data: response = { data: [], included: [] },\n error,\n isLoading,\n } = useQuery(\n [\"allOrganizations\", { page, ...filters }],\n () => getOrganizationsForUsers({ token, dispatch, page, ...filters }),\n {\n keepPreviousData: true,\n }\n );\n // Prefetch the next page of organizations\n useEffect(() => {\n if (totalPages > page) {\n queryClient.prefetchQuery(\n [\"allOrganizations\", { page: page + 1, ...filters }],\n () =>\n getOrganizationsForUsers({\n token,\n dispatch,\n page: page + 1,\n ...filters,\n })\n );\n }\n }, [response, page, filters, queryClient, totalPages]);\n\n // Update the total pages count from the API/query response\n useEffect(() => {\n const totalPages = getTotalPages({\n totalCount: get(response, \"meta.stats.total.count\") || 0,\n });\n setTotalPages(totalPages);\n }, [response]);\n\n const columns = [\n {\n accessor: \"attributes.name\",\n Header: \"Name\",\n },\n ...(filters.country === \"United States\"\n ? [\n {\n accessor: \"attributes.locationsUsStates\",\n Header: \"States\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n ]\n : []),\n ...(filters.country === \"Canada\"\n ? [\n {\n accessor: \"attributes.locationsProvinces\",\n Header: \"Province/Territory\",\n Cell: ({ cell }) => (cell.value ? uniq(cell.value).join(\", \") : \"\"),\n },\n ]\n : []),\n ...(filters.country === \"United States\"\n ? [\n {\n accessor: \"attributes.ein\",\n Header: \"EIN\",\n Cell: ({ cell }) => formatEin(cell.value),\n },\n ]\n : []),\n ...(filters.country === \"Canada\"\n ? [\n {\n accessor: \"attributes.businessNumber\",\n Header: \"Business Number\",\n Cell: ({ cell }) => formatBusinessNumber(cell.value),\n },\n ]\n : []),\n {\n accessor: \"attributes.organizationType\",\n Header: \"Organization Type\",\n },\n {\n accessor: \"id\",\n Header: \"\",\n Cell: ({ cell }) => ,\n },\n ];\n\n const onSubmitFilters = (values) => {\n if (!isEqual(values, filters)) {\n setFilters(values);\n }\n };\n\n const onValidateForm = (values) => {\n const formValues = [\n \"search\",\n \"state\",\n \"organizationType\",\n \"country\",\n ].reduce((vals, key) => {\n if (values[key]) {\n vals.push(values[key]);\n }\n return vals;\n }, []);\n return !!formValues.length ? {} : { error: \"Select at least one filter.\" };\n };\n\n return (\n <>\n

All Organizations

\n
\n \n {({\n resetForm,\n errors,\n touched,\n handleSubmit,\n values: { country },\n }) => (\n
\n
\n
\n \n
\n\n
\n \n \n \n \n \n
\n\n {country === \"Canada\" && (\n \n )}\n {country === \"United States\" && (\n \n )}\n
\n \n \n \n \n \n \n \n \n \n
\n
\n\n
\n {\n resetForm();\n setFilters(initialFilters);\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n \n
\n {errors.error && touched.error && (\n
{errors.error}
\n )}\n
\n )}\n \n
\n {/*
\n \n {({ setFieldValue }) => (\n
\n
\n \n
\n\n
\n \n {\n setFieldValue(\"search\", \"\");\n setSearch(\"\");\n }}\n emphasis=\"transparent\"\n >\n Clear Search\n \n
\n
\n )}\n
\n
*/}\n\n \n\n {!!(response.data || []).length && (\n
\n setPage(page)}\n />\n
\n )}\n \n );\n};\n\nexport default AllOrganizations;\n\nconst Menu = ({ id }) => {\n return (\n \n {/* View */}\n \n {({ ref }) => (\n \n View Details\n \n )}\n \n \n );\n};\n","import React from \"react\";\nimport { useMutation } from \"react-query\";\nimport { Formik, Form } from \"formik\";\nimport { useAuthState, useAuthDispatch } from \"context\";\nimport { apiFetch, formatUiErrors } from \"utils\";\nimport Button from \"components/Button\";\nimport moment from \"moment\";\nimport FormField from \"components/FormField\";\nimport * as Yup from \"yup\";\nimport { endOfMonth } from \"date-fns\";\nimport DatePickerField from \"components/DatePickerField\";\nimport { toast } from \"react-toastify\";\n\nconst DataSchema = Yup.object().shape({\n orgId: Yup.string(),\n date: Yup.string().required(\"Date is required\"),\n});\n\nfunction Aggregation() {\n const { token } = useAuthState();\n const dispatch = useAuthDispatch();\n\n const { mutate: aggregateData, isLoading } = useMutation(\n ({ orgId, date }) =>\n apiFetch({\n token,\n dispatch,\n method: \"POST\",\n endpoint: \"/api/v1/shelterluv_aggregations\",\n body: {\n orgId: orgId.trim(),\n month: moment(date).format(\"M\"),\n year: moment(date).format(\"YYYY\"),\n },\n }),\n {\n onSuccess: () => {\n toast.success(`Aggregation job has been queued successfully`, {\n autoClose: 3000,\n });\n },\n onError: (error) => {\n toast.error(() => formatUiErrors(error), {\n autoClose: 5000,\n className: \"toast-center\",\n });\n },\n }\n );\n return (\n <>\n
\n

ShelterLuv Aggregation

\n
\n\n
\n \n {({ isValid, dirty }) => (\n
\n
\n
\n \n Type a single OrgID to aggregate data for a specific\n organization. Leave blank to aggregate data for all\n organizations.\n
\n }\n />\n
\n
\n\n
\n \n
\n\n
\n Aggregating Data…}\n >\n Aggregate Data\n \n
\n \n )}\n \n \n \n );\n}\n\nexport default Aggregation;\n","import React from \"react\";\nimport { Switch, Route, Redirect } from \"react-router-dom\";\nimport { FORM_MODES, ROUTE_GUARDS } from \"utils\";\nimport {\n LoginRoute,\n UnauthenticatedRoute,\n PrivateRoute,\n} from \"components/Routes\";\nimport LegacyOrganization from \"screens/LegacyOrganization\";\nimport Dashboard from \"screens/Dashboard\";\nimport DataEntryOptions from \"screens/DataEntryOptions\";\nimport DataEntry from \"screens/DataEntry\";\nimport DataEntryUpload from \"screens/DataEntryUpload\";\nimport DataEntryExport from \"screens/DataEntryExport\";\nimport Login from \"screens/Login\";\nimport PageNotFound from \"screens/PageNotFound\";\nimport Register from \"screens/Register\";\nimport ForgotPassword from \"screens/ForgotPassword\";\nimport ResetPassword from \"screens/ResetPassword\";\nimport Profile from \"screens/Profile\";\nimport Organizations from \"screens/OrganizationManagement/Organizations\";\nimport Organization from \"screens/OrganizationManagement/Organization\";\nimport Users from \"screens/Users\";\nimport UserDetails from \"screens/Users/UserDetails\";\nimport Coalitions from \"screens/CoalitionBuilder/Coalitions\";\nimport MyCoalitions from \"screens/CoalitionBuilder/MyCoalitions\";\nimport AddCoalition from \"screens/CoalitionBuilder/AddCoalition\";\nimport Coalition from \"screens/CoalitionBuilder/Coalition\";\nimport ResourceCenter from \"screens/ResourceCenter\";\nimport Dashboards from \"screens/Dashboards\";\nimport DataMigration from \"screens/DataMigration\";\nimport ServicesMatrixOptions from \"screens/ServicesMatrixOptions\";\nimport ServicesMatrix from \"screens/ServicesMatrix\";\nimport ServicesUpload from \"screens/ServicesUpload\";\nimport ServicesExport from \"screens/ServicesExport\";\nimport DataUseAgreement from \"screens/DataUseAgreement\";\nimport AllOrganizations from \"screens/AllOrganizations\";\nimport Aggregation from \"screens/Aggregation\";\n\nconst Routes = () => {\n return process.env.REACT_APP_DATA_IMPORT_SPLASH_SCREEN ? (\n \n \n \n \n ) : (\n \n \n \n\n \n \n \n\n {/* Dashboard */}\n \n\n \n\n {/* Profile */}\n \n \n\n {/* Admin */}\n \n \n \n\n {/* Data Portal */}\n \n \n \n \n \n \n \n \n {/* Services Matrix */}\n \n \n \n \n \n \n \n \n\n {/* Organizations */}\n \n\n \n \n\n {/* Coalition Builder */}\n \n \n \n \n \n\n {/* Resource Center Builder */}\n \n \n \n\n {/* Dashboards */}\n \n \n \n \n \n \n\n \n\n \n \n );\n};\n\nexport default Routes;\n","import React from \"react\";\nimport { remove } from \"js-cookie\";\nimport {\n useAuthState,\n useCookieConsentState,\n useCookieConsentDispatch,\n} from \"context\";\nimport { COOKIE_CONSENT_UPDATE } from \"actions\";\nimport Button from \"components/Button\";\n\nconst CookieConsent = () => {\n const { userId, token } = useAuthState();\n const { showCookieConsent } = useCookieConsentState();\n const dispatch = useCookieConsentDispatch();\n const isLoggedIn = Boolean(token?.accessToken) && Boolean(userId);\n\n const acceptCookies = () => {\n dispatch({ type: COOKIE_CONSENT_UPDATE, payload: String(true) });\n\n if (window.gtag) {\n window.gtag(\"consent\", \"update\", {\n ad_storage: \"granted\",\n analytics_storage: \"granted\",\n });\n }\n };\n\n const declineCookies = () => {\n dispatch({ type: COOKIE_CONSENT_UPDATE, payload: String(false) });\n\n remove(\"_ga\");\n remove(\"_gid\");\n remove(`_gad_${process.env.REACT_APP_GA_MEASUREMENT_ID}`);\n\n if (window.gtag) {\n window.gtag(\"consent\", \"update\", {\n ad_storage: \"denied\",\n analytics_storage: \"denied\",\n });\n }\n };\n\n if (!isLoggedIn || !showCookieConsent) return null;\n\n return (\n \n
\n We use cookies to improve user experience, and analyze website traffic.\n For these reasons, we may share your site usage data with our analytics\n partners. By clicking “Accept Cookies,” you consent to store\n on your device all the technologies described in our{\" \"}\n \n Privacy Policy\n \n .\n
\n
\n \n \n
\n \n );\n};\n\nexport default CookieConsent;\n","import React from \"react\";\nimport { QueryClientProvider, QueryClient, QueryCache } from \"react-query\";\nimport { ToastContainer, Slide, toast } from \"react-toastify\";\nimport Zendesk from \"react-zendesk\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\nimport Routes from \"./Routes\";\nimport { AuthProvider, CookieConsentProvider, UserProvider } from \"context\";\nimport CookieConsent from \"components/CookieConsent\";\nimport DataMigrationBanner from \"components/DataMigrationBanner\";\n\nconst ZENDESK_KEY = process.env.REACT_APP_ZENDESK_KEY;\nconst showBanner = process.env.REACT_APP_DATA_IMPORT_BANNER === \"true\";\n\nif (showBanner) {\n document.body.classList.add(\"data-migration-banner\");\n}\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n staleTime: 5 * 60 * 1000,\n retry: false,\n },\n },\n});\nconst queryCache = new QueryCache();\n\nfunction App() {\n return (\n \n \n \n \n \n {showBanner && }\n\n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./App\";\nimport \"./styles/tailwind.css\";\n\n// Start the mocking conditionally.\nif (\n process.env.NODE_ENV === \"development\" &&\n process.env.REACT_APP_MOCK_SERVER\n) {\n const { worker } = require(\"./__mocks__/browser\");\n worker.start();\n}\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\n// serviceWorker.unregister();\n"],"sourceRoot":""}