{"version":3,"sources":["utils/plotySharedConfig.ts","utils/functions/getAuth.ts","assets/images/logo-white-text-beta.png","utils/functions/general.ts","assets/images/logo_beta.png","assets/icons sync /^/.//.*$","assets/icons/close-btn.svg","assets/icons/deviceMap.svg","assets/icons/gasesAverages.svg","assets/icons/gasesChart.svg","assets/icons/hamburger-btn.svg","assets/icons/networkGases.svg","assets/icons/networkMap.svg","assets/icons/networkParticulates.svg","assets/icons/noxSources.svg","utils/functions/slotValidator.ts","assets/icons/particulatesAverages.svg","assets/icons/particulatesChart.svg","assets/icons/pm25Sources.svg","assets/icons/rainfall.svg","assets/icons/summaryTable.svg","assets/icons/th.svg","assets/icons/wind.svg","reducers/airAlerts.ts","reducers/alerts.ts","reducers/aq101.ts","reducers/aside.ts","reducers/auth.ts","reducers/dataConfig.ts","reducers/feedback.ts","reducers/getStyleGroups.ts","reducers/getZephyrs.ts","reducers/getZephyrHistoricalData.ts","reducers/loading.ts","reducers/mappAirFilters.ts","reducers/mapsLocationLoaded.ts","reducers/modal.ts","reducers/publicAdvice.ts","reducers/queryStringParams.ts","reducers/showAQMQLayer.ts","reducers/setAveragingPeriods.ts","reducers/setDisplayConfig.ts","reducers/setLocation.ts","reducers/setOverlays.ts","reducers/setThresholdTab.ts","reducers/setTimePeriods.ts","reducers/setUserConfig.ts","reducers/setVersions.ts","translations/en/translations.js","translations/es/translations.js","translations/i18n.js","translations/zh/translations.js","reducers/setLocale.ts","reducers/setZephyr.ts","reducers/tour.ts","reducers/annualAverage.ts","reducers/thresholds.ts","reducers/modularFeatures.ts","reducers/addVZephyrs.ts","reducers/index.ts","reducers/draggedUnit.ts","reducers/setTodayData.ts","reducers/mapAirPointValueHistory.ts","reducers/chartViewMode.ts","store.js","utils/functions/wideScreenFinder.ts","utils/functions/tallScreenFinder.ts","utils/functions/analyticsEventFirer.ts","actions/auth.ts","actions/queryStringParams.ts","actions/mappAirFilters.ts","actions/layers.ts","actions/feedback.ts","actions/locations.ts","actions/airAlerts.ts","components/shared_components/Dropdown.tsx","utils/functions/speciesExtentFinder.ts","utils/functions/airAlertsInterface.ts","components/shared_components/Spinner.tsx","components/view_components/AirAlertsConfigurator.tsx","components/view_components/AirAlertsOverview.tsx","utils/functions/alertsFormatter.ts","components/view_components/AlertsTour.tsx","components/views/AirAlerts.tsx","components/shared_components/Modal.tsx","components/view_components/AppIntroModal.tsx","components/view_components/AgreementModal.tsx","actions/alerts.ts","components/view_components/Alerts.tsx","components/view_components/AnalyticsPlots.tsx","components/views/Analytics.tsx","canvasjs.react.js","components/view_components/DataChartDownloadButton.tsx","utils/functions/tabFinder.ts","utils/functions/chartHelper.ts","components/view_components/DataLineChart.tsx","components/view_components/DataChartDisclaimer.tsx","components/view_components/DataChartHeader.tsx","components/view_components/DataChartLabelCanvas.tsx","components/view_components/DataChartLabels.tsx","components/shared_components/Tooltip.tsx","components/view_components/DataUnits.tsx","components/shared_components/ProgressBar.tsx","components/view_components/DataChartContainer.tsx","components/view_components/DataDiagnosticsModal.tsx","components/view_components/DataDownloadButton.tsx","components/view_components/DataDownloadModal.tsx","components/view_components/ExceededThreshold.tsx","components/view_components/DataGroupTabs.tsx","components/view_components/DataSpeciesFilters.tsx","utils/functions/getAvailableAveragingOption.ts","components/view_components/DataTimeAveragingOptions.tsx","components/view_components/DataCustomDate.tsx","components/view_components/DataTimePeriodOptions.tsx","actions/modal.ts","utils/functions/csvGenerator.ts","components/shared_components/Banner.tsx","components/views/Data.tsx","actions/stylegroups.ts","utils/functions/thresholdFormatter.ts","components/view_components/AQColourscale.tsx","components/view_components/AQUnit.tsx","components/view_components/AQOther.tsx","utils/functions/zephyrMetDataEnricher.ts","components/view_components/AQLatestData.tsx","components/view_components/AQSAChart.tsx","components/view_components/AQSA.tsx","components/view_components/AQTemporalChart.tsx","components/view_components/AQTemporalChartModal.tsx","components/view_components/AQTemporal.tsx","components/view_components/AQWindChart.tsx","components/view_components/AQWind.tsx","components/view_components/AQModelData.tsx","components/view_components/AnnualAveragesAccordion.tsx","components/view_components/AQIIndex.tsx","utils/functions/publicAdviceFinder.ts","utils/functions/googleFormatter.ts","components/view_components/LatestMeasurementsPublic.tsx","utils/functions/latestMeasurementMapper.ts","hooks/useOutsideClick.js","components/view_components/LocationSearch.tsx","components/view_components/TimeSlider.tsx","components/view_components/LocationControls.tsx","components/view_components/LocationLicensing.tsx","components/view_components/LocationPopover.tsx","utils/functions/overlayUnitFinder.ts","utils/functions/vZephyr.ts","components/view_components/AddZephyrModal.tsx","actions/annualAverage.ts","actions/mapAirPointValueHistory.ts","components/view_components/AddVZephyr/CursorIcon.tsx","actions/addVZephyrs.ts","components/view_components/AddVZephyr/Instructions.tsx","components/views/Location.tsx","components/view_components/AirQuality101.tsx","actions/aside.ts","actions/dataAnalytics.ts","components/shared_components/Confirmation.tsx","components/view_components/ZephyrQuoteModal.tsx","components/view_components/AsidePrompt.tsx","components/view_components/AsidePublicOverlays.tsx","components/view_components/AsideOverlays.tsx","components/view_components/NetworkCredentialsModal.tsx","components/view_components/AsideUnit.tsx","components/view_components/PublicAsideUnit.tsx","components/view_components/AddVZephyr/VZCreationMenu.tsx","components/view_components/AsideUnitList.tsx","components/shared_components/Aside.tsx","components/view_components/FeedbackQuestions.tsx","components/view_components/FeedbackTag.tsx","components/view_components/Feedback.tsx","components/view_components/HeaderContactModal.tsx","components/view_components/HeaderTutorialModal.tsx","components/view_components/HeaderVersionHistoryModal.tsx","components/view_components/AreaOfInterest.tsx","components/view_components/MappairQuoteModal.tsx","components/shared_components/Slider.tsx","components/view_components/RemoveZephyrModal.tsx","actions/tour.ts","actions/aq101.ts","actions/setLocale.ts","components/view_components/AnalyticsView.tsx","actions/thresholdsActions.ts","components/view_components/AnalyticsViewModal.tsx","components/view_components/AnalyticsFeedbackForm.tsx","components/shared_components/BasicPopover.tsx","components/shared_components/Accordions.tsx","components/view_components/FilterBar/UnitList/UnitList.tsx","actions/chartViewMode.ts","components/view_components/FilterBar/AnalysisTour.tsx","components/view_components/FilterBar/FilterBar1.tsx","hooks/useDeviceManagerLink.ts","components/view_components/MobileNavigation/MobileNavigationMenu.tsx","components/shared_components/Header.tsx","components/views/Login.tsx","utils/functions/qualityCalculator.ts","utils/functions/todayDataPackager.ts","actions/today.ts","components/views/Today.tsx","components/view_components/UserTour.js","utils/functions/tableSubRowGenerator.ts","components/view_components/FleetManagementFilter.tsx","components/view_components/FleetManagementGenerator.tsx","components/view_components/FleetManagementHeaders.tsx","components/views/FleetManagement.tsx","utils/functions/zephyrSorter.ts","utils/functions/aqiCalculator.ts","components/views/SmsGroupAlerts.tsx","components/shared_components/AnalyticsProgressBar.tsx","components/view_components/DataAnalyticsChartCtas/ComparisonTooltip.tsx","components/view_components/FilterBar/FilterBar2.tsx","components/shared_components/FeedbackFormModal.tsx","components/views/DataAnalyticsContainer.tsx","actions/modularFeaturesActions.ts","components/shared_components/WidgetsLibraryMenu.tsx","components/view_components/NotFound.tsx","components/AppContainer.tsx","utils/functions/queryStringParser.ts","App.js","serviceWorker.js","index.js","utils/functions/dataAnalytics.ts","utils/functions/saDataPackager.ts","utils/functions/cardinalDirectionFinder.ts","components/view_components/ReactGridLayout/DynamicChart.tsx","components/view_components/ReactGridLayout/ReactGridLayout.tsx","utils/consts.ts","utils/functions/colourFinder.ts","utils/request.ts","reducers/dataAnalytics.ts","utils/functions/dateFinder.ts","assets/images/logo-white-text.png","assets/icons/air_quality_icon.png","assets/icons/schools_icon.png","assets/icons/real_time_icon.png","assets/icons/annual_averages_icon.png","assets/icons/smoke-control_icon.png","assets/images/save-view.svg","assets/images/load-view.svg","assets/images/icon-kebab-dark.svg","assets/images/remove.svg","assets/images/download.svg","components/view_components/DataAnalyticsChartCtas/index.tsx","actions/zephyrs.ts","assets/images/icon-maximize.svg","utils/styles.ts","components/view_components/Markers.tsx","components/view_components/LocationMarker.tsx","components/view_components/LocationMarkerList.tsx","assets/images/icon-kebab-sg.svg","assets/images/layers.png","assets/images/layer-default.png","assets/images/layer-grayscale.png","assets/images/layer-satellite.png","assets/images/icon-drag.svg","assets/images/bin.svg","assets/images/run-view.svg","assets/images/arrow-right.svg","assets/images/icon-chevron.svg","assets/images/icon-close.svg","assets/images/logo.png","assets/images/add-widget.svg","assets/images/refresh-icon.svg","utils/interface.ts","actions/types.ts","utils/functions/slotFinder.ts","canvasjs.min.js"],"names":["plotConfig","responsive","displayModeBar","autosizable","modeBarButtons","displaylogo","plotStyle","width","height","plotlyPrecipitationMargin","l","b","t","plotlyMargin","plotlyTHPMargin","commonLegend","y","plotlyFont","family","size","color","chartWatermarkConfigs","x","sizex","sizey","xanchor","yanchor","layer","source","staticPlotlyChartLayout","xaxis","hoverformat","yaxis","automargin","margin","font","shapes","polar","barmode","bargap","angularaxis","ticklen","direction","radialaxis","angle","tickcolor","tickwidth","tickangle","fixedrange","tickmode","nticks","tickfont","autosize","legend","images","defaultPlotlyChartLayout","unit","title","defaultWindLayout","grid","rows","columns","text","standoff","showline","yaxis2","tickvals","ticktext","range","createThresholdLine","thresholdLabel","thresholdValue","type","xref","yref","x0","x1","y0","y1","name","line","dash","addAnnotationsIfNeeded","layout","threshold","isThresholdHidden","annotations","thresholds","lowerThreshold","value","upperThreshold","showarrow","ax","ay","visible","bgcolor","colDict","TVOC","NO","NO2","particulatePM1","particulatePM25","particulatePM10","PM1","PM25","PM10","CO","CO2","CH4","C6H6","O3","SO2","H2S","NH3","Temperature","Humidity","tempC","ambPressure","ambHumidity","getAnnotations","thresholdProp","sourceApportionmentPalette","getAuth","btoa","localStorage","getItem","module","exports","isStringDefinedAndNotEmpty","str","getEnvVar","v","ret","process","undefined","Error","is404","basename","path","window","location","pathname","isInternal","match","input","isNonPublic","publicPortals","includes","isPublic","allowedPublicPaths","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","code","keys","Object","resolve","slotValidator","newZephyrHistory","unitHistories","unitValues","values","availableSlots","length","i","slots","slotFinder","availableSpeciesArr","getAvailableSpecies","availableSlotsArr","forEach","s","speciesData","data","push","isNull","every","entries","slot","filter","initState","alerts","on","agreements","sectionId","initialState","isAuthenticated","loading","loginFailed","token","user","userInfo","appIntro","authorityLink","caching","info","logo","maxLat","maxLng","minLat","minLng","projectLink","showDetailedZephyrInfo","showSmileyFaces","subtitle","startingLat","startingLng","startingZoom","today","todayCustomInfo","todaySpecies","userCustomInfo","sections","userStandardInfo","mappair","bearerToken","averagingChain","ctv","idx","oneTimeAutomation","questions","styleGroups","zephyrs","zephyrHistory","zType","isHistoricalDataNull","aurnLastHour","initApp","zephyrLastHour","showMappAirFilters","selectedFilters","showAllLabels","showSelectedLabel","mapsLoaded","contact","mappairQuote","mappairTimeseries","zephyrQuote","advice","diagnostics","opacity","overlay","mappairPointModeOn","showAQMALayer","showSchoolsLayer","showSmokeControlZones","showOverlayLayer","showSatelliteLayer","showOSM","showAALayer","annualAverage","periods","tabs","group","species","label","HTMLLabel","HTMLUnitLabel","dataIdentifier","defaultLocation","state","action","payload","SET_LOCATION","SET_UNIT_LOCATION","nameHTML","tab","showTour","TRANSLATIONS_EN","AppIntroButton","AppIntroModelContent","AirQuality101Title","HeaderContent","AnalyticsHeader","AlertsHeader","FleetManagementHeader","DataAnalyticsHeader","ContactLinkTitle","CouncilProjectTitle","DataHeader","DefaultHeaderTitle","HelpHeader","LoadingAURNHeader","LoadingZephyrHeader","LocationHeader","LocationHeaderPublic","LogoutLinkTitle","MappairUpgradePrompt","MissingOverlayEnd","MissingOverlayIntro","MissingOverlayMid","PrivacyLinkTitle","ResourcesLinkTitle","SourceEmissionTooltipIntro","SourceEmissionTooltipEnd","SourceEmissionTooltipMissingSpecies","SourceEmissionTooltipSelectedIntro","SourceEmissionTooltipSelectedEnd","SourcesSubHeader","SpeciesSubHeader","TodayTitle","TooltipMarkerContent","TourLinkTitle","TutorialLinkTitle","VersionLinkTitle","FeedbackPrompt","AQCButton","AQColourscaleContent","AQCButtonPublic","OverlaysAQMA","AsideOverlaysContent","OverlaysSchools","OverlaysUKSmokeControlZones","OverlaysAURN","OverlaysHeader","OverlaysDefault","OverlaysMappair","OverlaysRemoveAll","OverlaysSatellite","OverlaysOSM","OverlaysShowAll","OverlaysZephyrs","MapDetails","MapTypes","OverlaysAA","ModelLayers","ChooseYear","BaseMaps","OverlaysMappairContentPublic","AsideOverlaysContentPublic","OverlaysAQMAContentPublic","OverlaysSchoolsContentPublic","OverlaysUKSmokeControlZonesPublic","OverlaysHeaderContentPublic","OverlaysDefaultContentPublic","OverlaysAAContentPublic","DataPOHeader","DataTimePeriodOptionsContent","DataPOSubheader","DataTAHeader","DataTimeAveragingOptionsContent","DataTASubheader","DataChartHeaderTzPrefix","DataChartHeaderContent","DataChartHeaderTzUTC","DataChartHeaderLoading","DataChartHeaderNull","DataChartSomeTimedOut","DataChartAllTimedOut","ZoomResetButton","vZephyrLoadingMsg","DataChart_240","DataChart_400","DataChart_401","DataChart_403","DataChart_404","DataChart_429","DataChart_500","AdviceHeader","TodayContent","BehaviourHeader","CloseModal","ForecastHeader","GeneralAdviceHeader","HealthAdviceHeader","HumidityHeader","PollenHeader","PollutionHeader","SensitiveAdviceHeader","TempHeader","WoodBurningHeader","Low","High","naeiCRLink","content","osmCRLink","maptilerCRLink","publicCRLink","mapboxCRLink","mapboxImproveLink","maxarCRLink","routePaths","analytics","app","login","tableRowforYr","annualAvgtext","tabContentTitleForChartPrefix","tabContentTitleForChartPostfix","tabContentTitleForListPrefix","tabContentTitleForListPostfix","nodata","AAChartHeader","AADownloadData","AASeeMore","annualAvgNotAuthorised","annualAvgAccordionTitle","aqlOtherTab","customTimePeriod","labelHTML","AACValidationFailure","AirAlertsConfiguratorContent","AACDataSourceHeader","AACDataSourceSelection","AACValidationFailureSources","AACAlertDataHeader","AACGasColumn","AACThresholdColumn","AACAlertColumn","AACPeriodColumn","AACRepeatColumn","AACUnitStatusSelection","AACValidationFailureData","AACOutputHeader","AACOutputName","AACValidationFailureName","AACOuputEmail","AACOutputPhoneNumber","AACValidationFailureEmail","AACValidationFailurePhoneNumber","AACValidationFailureCommunication","AAOHeader","AirAlertsOverviewContent","AAOCreateNew","AAONameColumn","AAOAlertDataColumn","AAOStatusColumn","AAOActionscolumn","AAONoAlerts","AQ101header","AirQuality101Content","AQAurnLabel","AQLatestDataContent","AQLatestDataButton","AQZephyrLabel","AQVZephyrLabel","AQDisclaimerGFS","AQOtherContent","AQDisclaimerMet","AQGFSDesc","AQMetDesc","AQPeriodGFS","AQPeriodMet","AQModelDataButton","AQModelDataContent","AQModelDataLoading","AQModelDataClickPrompt","AQModelNoData","AQTotal","AQSAContent","AQUnits","AQChartHeader","AQTemporalContent","AQCloseModal","AQDownloadData","AQSummaryHeader","AQUnitContent","AQPeriod","AQNoData","AQNoOwnership","AQChartHeaderOne","AQWindContent","AQChartSubheader","AsideHeader","AsideContent","PublicAsideHeader","AsideButtonContent","AsidePromptContent","AsidePromptExplainer","AsideAnalyticsPrompt","AsideAnalyticsButton","AsideUnitBatteryCharging","AsideUnitContent","AsideUnitBatteryChargingDesc","AsideUnitBatteryDischarging","AsideUnitBatteryDischargingDesc","AsideUnitBatteryExplainer","AsideUnitBatteryFlat","AsideUnitBatteryFlatDesc","AsideUnitNoBattery","AsideUnitBatteryPower","AsideUnitCartridgeBlank","AsideUnitCartridgeExplainerStandard","AsideUnitCartridgeExplainerEnhanced","AsideUnitCartridgeExplainerEnhancedPlus","AsideUnitCartridgeExplainderEnhancedPP","AsideUnitConnectionGSM","AsideUnitConnectionNetwork","AsideUnitLocationHeader","AsideUnitUpdatedHeader","AsideUnitIdHeader","AsideUnitStatusHeader","AsideUnitFrequencyHeader","AsideUnitCertificateDownloadButton","AsideUnitConnectionExplainer","AsideUnitConnectionWarning","AsideUnitConnectionAlert","AsideUnitEditName","VZUnitDeleteName","AsideUnitEditNetwork","AsideUnitDeleteName","AsideUnitOwnership","AsideUnitSamplingData","AsideUnitSamplingExplainerHigh","AsideUnitSamplingExplainerMed","AsideUnitSamplingExplainerLow","AsideUnitSamplingOff","AsideUnitSamplingOn","AsideUnitStatus","AsideUnitStatusRetired","AsideUnitType","AsideUnitTypeAURN","AsideUnitTypeVirtualZephyr","AsideUnitTypeZephyr","EditWifiCredentials","WiFiCredentialsContent","EditWifiCloseModal","EditWifiSaveButton","StaticWiFiCredentials","DynamicWiFiCredentials","NetworkNameLabel","NetworkPasswordLabel","NetworkCredentialsError","PCBExplainer","PermissionCookieBannerContent","PCBExplainerPreSpan","PCBExplainerSpan","PCBExplainPostSpan","PCBButtonAccept","PCBButtonReject","PCBButtonOk","DataAQSummaryHeader","DataAQSummaryContent","DataChartDisclaimer","DataChartDisclaimerContent","DataCustomDatePickerMessage","DataCustomDateContent","DataCustomeDateSubmit","DataCustomDateSave","dataDiagnosticsHeader","dataDiagnosticsModalContent","dataDiagnosticsIndex","dataDiagnosticsModalContentClose","DataDownloadButtonText","DataDownloadButtonContent","DataDiagnosticsButtonText","DataUnitsHeaderMultiUnits","DataUnitsContent","DataUnitsRemoveUnit","DataUnitsSingleUnit","DataUnitsTooltipContent","DataUnitsTooltipMakerContent","downloadHeader","DownloadModalContent","downloadSubheader","downloadCoordinates","downloadButton","feedbackQuestionsHeader","FeedbackQuestionsContent","feedbackScoreLabelsLow","feedbackScoreLabelsHigh","feedbackCommentsPlaceholder","feedbackButtonNext","feedbackEmailHeader","feedbackOptional","feedbackConfirmationHeader","feedbackConfirmationText","feedbackButtonConfirmation","feedbackTagButton","FeedbackTagContent","confirmationHeader","HeaderContactModalContent","confirmationText","contactHeader","contactSubheader","contactFirstName","contactLastName","contactEmail","contactCompany","contactDetails","contactEnquiry","contactComments","contactButton","messageSuccess","messageProblem","messageMissingFields","requiredFields","popoverCTAText","AddZephyrModalContent","headerText","zephyrNameLabel","secondaryCta","primaryCta1","totalPrefix","totalPostfix","maxReachPrefix","limitReachedSubtitle","contactUsCtaTxt","RemoveZephyrHeaderText","RemoveZephyrModalContent","confirmationTextPrefix","confirmationTextPostFix","warningText","RemoveZephyrSecondaryCta","primaryCta","versionHistoryHeader","headerVersionHistoryModalContent","currentVersionDescriptor","incorrectPassword","loginContent","loginHeader","welcomeMessage","loginButton","heroHeader","heroSubheader","usernameField","passwordField","aoi","MappairQuoteModalContent","area","centre","comments","MappairQuoteConfirmationHeader","MappairQuoteConfirmationText","MappairQuoteContactHeader","MappairQuoteContactFirstName","MappairQuoteContactLastName","MappairQuoteContactEmail","MappairQuoteContactCompany","MappairQuoteContactButton","MappairQuoteCloseModal","mappairLinkPost","mappairLinkPre","mappairOptionalCommentsPlaceholder","mappairMessageProblem","mapairMessageMissingFields","output","polygon","pollutants","mapairRequiredFields","resolution","selectArea","LocationSearchPlaceholder","LocationSearchContent","InvalidSearchPlaceholder","updateTitle","VersionLatestModalContent","ZephyrConfirmationHeader","ZephyrQuoteModalContent","ZephyrConfirmationText","ZephyrContactHeader","ZephyrContactFirstName","ZephyrContactLastName","ZephyrContactEmail","ZephyrContactCompany","ZephyrContactButton","measurements","ZephyrContactMessageProblem","ZephyrContactMessageMissingFields","powerOptions","ZephyrQuoteRequiredFields","TRANSLATIONS_ES","i18n","use","LanguageDetector","initReactI18next","init","order","fallbackLng","interpolation","format","lng","Date","moment","Intl","NumberFormat","resources","en","translation","es","zh","err","console","error","language","i18nextLng","editMode","set","zephyr","hasInitialSet","clickMap","openTour","openAsideFilter","openAQIndex","openAQData","openAQColourscale","openAQMAIndex","openAQModelData","openAside","openHelp","openLocationSearch","gases","thresholdLimitsInitState","particulate","networkViewGases","networkViewParticulates","thresholdsReducer","SET_THRESHOLDS","timeSlider","isPrivate","fleetManagement","schools","smokeControlZones","annualAverages","dseIntegration","dataAnalytics","addVZIconClicked","cursorIconDropped","settings","virtualZephyrName","vzCreationMenuOpened","initCursorPosition","appReducer","combineReducers","airAlerts","SET_AIR_ALERTS","ALERTS_ON","ALERTS_OFF","aq101","SET_AQ101_OFF","SET_AQ101_ON","SET_AQ101_SECTION","aside","OPEN_ASIDE","CLOSE_ASIDE","auth","USERINFO_LOADED","USER_LOADED","LOGIN_SUCCESS","setItem","key","AUTH_ERROR","LOGIN_FAIL","LOGOUT","removeItem","SET_MASTER_AUTH_BEARER_TOKEN","dataConfig","SET_DATA_CONFIG","draggedUnit","SET_DRAGGED_UNIT","CLEAR_DRAGGED_UNIT","feedback","SET_FEEDBACK_IDX","SET_FEEDBACK_OFF","SET_FEEDBACK_ON","SET_FEEDBACK","getStyleGroups","GET_STYLE_GROUPS","getZephyrs","ADD_ZEPHYRS","GET_ZEPHYRS","GET_AURNS","getZephyrHistoricalData","GET_ZEPHYR_HISTORICAL_DATA","SET_ZEPHYR_HISTORICAL_DATA_LOADING","LOADING_INIT_APP_OFF","LOADING_INIT_APP_ON","LOADING_INIT_APP_DATA_OFF","LOADING_INIT_APP_DATA_ON","LOADING_INIT_APP_THIRDPARTY_DATA_OFF","LOADING_INIT_APP_THIRDPARTY_DATA_ON","mappAirFilters","SHOW_MAP_AIR_FILTERS","SET_SELECTED_FILTER","mapsLocationLoaded","MAPS_LOCATION_LOADED","modal","SET_CONTACT_MODAL_ON","SET_DATA_MODAL_ON","SET_MAPPAIR_QUOTE_MODAL_ON","SET_MAPPAIR_TIMESERIES_MODAL_ON","SET_MODALS_OFF","SET_ZEPHYR_QUOTE_MODAL_ON","publicAdvice","SET_PUBLIC_ADVICE","queryStringParams","SET_QUERY_STRING_PARAMS","CHANGE_OVERLAY_OPACITY","CHANGE_OVERLAY_LAYER","SET_MAPPAIR_POINT_MODE_ON","SET_MAPPAIR_POINT_MODE_OFF","SHOW_AQMA_LAYER","SHOW_SCHOOLS_LAYER","SHOW_SMOKE_CONTROL_ZONES","SHOW_OVERLAY_LAYER","SHOW_SATELLITE_LAYER","SHOW_OSM_LAYER","SHOW_AA_LAYER","SET_ANNUAL_AVERAGE","setAveragingPeriods","SET_AVERAGING_PERIODS","setDisplayConfig","SET_DISPLAY_CONFIG","setLocation","setOverlays","SET_OVERLAYS","setTimePeriods","SET_TIME_PERIODS","setTodayData","SET_TODAY_DATA","setThresholdTab","SET_ACTIVE_THRESHOLD","setUnitLocation","setUserConfig","SET_USER_CONFIG","setVersions","SET_VERSIONS","setLocale","SET_LOCALE","setZephyr","SET_ZEPHYR","SET_ZEPHYR_IN_EDIT_MODE","SET_HAS_INITIAL_SET","tour","TOUR_LAUNCHED","TOUR_FINISHED","TOUR_OPEN_ASIDE_FILTER","TOUR_CLOSE_ASIDE_FILTER","TOUR_OPEN_AQ_DATA_INDEX","TOUR_CLOSE_AQ_DATA_INDEX","TOUR_OPEN_AQ_COLORSCALE_INDEX","TOUR_CLOSE_AQ_COLORSCALE_INDEX","TOUR_OPEN_AQMA_INDEX","TOUR_CLOSE_AQMA_INDEX","TOUR_OPEN_ASIDE","TOUR_CLOSE_ASIDE","TOUR_OPEN_HELP","TOUR_CLOSE_HELP","TOUR_OPEN_LOCATION_SEARCH","TOUR_CLOSE_LOCATION_SEARCH","TOUR_MAP_CLICK","TOUR_CLOSE_MODEL_DATA_INDEX","TOUR_OPEN_MODEL_DATA_INDEX","setAnnualAverages","AnnualAvgDataInitialState","SET_ANNUAL_AVERAGES","setMapAirPointValueHistory","MapAirPointValueHistoryInitialState","SET_MAPPAIR_POINT_VALUE_HISTORY","modularFeatures","SET_MODULAR_FEATURES","unitHistoriesOptions","analysisTourOpen","alertsTourOpen","selectChartModeOpen","selectedChartViewMode","addVZephyrs","SET_VZ_ICON_CLICKED","SET_CURSOR_ICON_DROPPED","SET_ADD_VZ_SETTINGS","SET_VZ_NAME","SET_VZ_CREATION_MENU","SET_INIT_CURSOR_POSITION","rootReducer","middleware","thunk","store","createStore","composeWithDevTools","applyMiddleware","wideScreenFinder","pixels","w","d","document","documentElement","g","getElementsByTagName","innerWidth","clientWidth","tallScreenFinder","innerHeight","clientHeight","analyticsEventFirer","eventIdentifier","labelEnrichment","eventProps","gtmEvents","category","utilsRequest","fireTrackingEvent","loadingInitAppOff","dispatch","a","loadingInitAppOn","loadingInitAppDataOff","loadingInitAppDataOn","loadingInitAppThirdPartyDataOff","loadingInitAppThirdPartyDataOn","logout","gtmEventIdentifiers","setFailedLogin","todayData","setPublicAdvice","displayConfig","overlays","initOverlay","find","ol","isMappairOverlay","setAlerts","setFeedback","feedbackQuestions","userConfig","setStylegroups","stylegroups","setThreshold","timePeriods","averagingPeriods","setDataConfig","setUserInfo","versions","setMasterAuthBearerToken","urlQueryStringParams","setSelectedFilters","changeOverlayLayer","changeOverlayOpacity","setMappairPointModeOff","isLayerOn","showOSMLayer","isAALayerOn","setAnnualAverage","annualAvg","setFeedbackIdx","setFeedbackOff","setFeedbackOn","checkLocation","searchBias","newLocation","newGeometry","results","geometry","lat","loaded","setAirAlerts","connect","curOverlayName","currentPollutant","setCurrentPollutant","additionalClass","currentSelectionValue","handleSelection","placeholderSelectionLabel","selections","alert","selectedAlert","annualAveragesOn","dynamicStyles","useState","showDropdown","setShowDropdown","currentSelectionLabel","Duration","toString","useEffect","curStylegroup","getOverlay","updatedSpeciesIdentifier","speciesIdentifier","isSAOverlay","className","style","minWidth","onClick","parse","onMouseLeave","position","top","sf","pointerEvents","sg","reformattedSpecie","preventDefault","orderSpeciesExtent","mappedSpeciesExtent","orderedMappedSpeciesExtent","speciesExtentFinder","zephyrsList","zList","alertZephyrsList","z","zephyrFounded","id_pod","HasCertificate","speciesExtent","slotSpeciesCombined","gaseousSlots","gs","slotsInfo","slotInfo","sp","zSe","spE","speciesExtentIdentifier","dcSE","dcSES","HTMLShortUnitLabel","newSpeciesExtent","speciesMatch","getDataIdentifier","speciesExtentProvider","se","aa","Species","formattedAa","period","Comparator","repeat","alertLevel","Threshold","status","enrichedSpeciesExtent","uuidv4","mSE","mapSpeciesExtentToAlerts","speciesExtentUpdater","updatedMappedSpeciesExtent","umSE","umSE2","airAlertsApiPackager","apiAlerts","aA","returnValue","batteryAlert","znum","comparator","batteryCharge","batteryVoltage","externalVoltage","units","email","phoneNumbers","JSON","jsonOutput","ap","Znumbers","alertId","targets","aT","emailAddress","phoneNumber","Spinner","endEdit","updateAlert","addTarget","removeAlertTarget","translate","useTranslation","alertsGasses","alertZephyrs","errors","outputEmail","outputPhoneNumber","searchZephyrs","zephyrSearch","zephyrSearchActive","unitSelection","startingUnitSelection","unitSelections","unitSelectionOptions","userCurZephyrs","userEndTimeDate","determineStartingUnitSelection","periodSelection","setAlert","alertGasses","setAlertGasses","setAlertZephyrs","setErrors","setOutputEmail","setPhoneNumber","setSearchZephyrs","setZephyrSearch","setZephyrSearchActive","setUnitSelection","setTimePeriod","isCartridgeDataLoading","setIsCartridgeDataLoading","useSelector","enrichedUserAlertZephyrs","alertStatus","selectedAlertZephyrSet","enrichedSelectedUserAlertZephyrs","zNumber","determinedSpecificUnit","selectedZephyrs","updateCartridgeData","packagedSlotsInfo","slotA","slotB","slotSerial","gS","getCartridge","copyZephyrsList","newData","zR","setZephyrs","addEmailAddress","updatedAlertEmailList","updatedAlert","submitAddingTarget","removeError","addPhoneNumbers","changeAlertZephyrStatus","updatedAlertZephyrs","updatedAlertZephyr","updatedSearchUnits","selectedAlertZephyrs","updatedAlertGasses","checkCompleteGasAlert","airAlertId","typeAdded","ag","determineSearchableList","target","targetId","firstName","lastName","organisation","handleAlertSubmission","auth2","az","alertGassesList","newAlertGas","parseInt","username","userkey","updatedSpecificErrors","emailList","phoneNumbersList","packagedAirAlertsRequest","configuredAlerts","newAlertMetaTargets","AlertId","AlertClassId","Name","Organisation","FirstName","String","LastName","PhoneNumber","EmailAddress","StartDate","current","EndDate","Interval","TimeOffset","Targets","JsonInput","airAlertsConfiguratorPackager","Alerts","handleGasThreshold","alertThreshold","updatedAlertGas","targetToRemove","isEmail","getTarget","updateAlertData","p","removeTarget","updatedErrors","data-alerts-tour","option","htmlFor","checked","onChange","unitSelectionOption","clearAlertStatus","handleUnitSelectionChange","disabled","cursor","search","userNonAlertZephyrs","newFilteredZephyrs","slice","toLowerCase","indexOf","handleUnitSearch","placeholder","searchableZephyrs","handleSearchToggle","xmlns","viewBox","fill","arr","speciesDataIdentifier","affectedAlerts","handleGasSelection","alertThresholdSelections","th","rawThreshold","formattedThreshold","postVerb","handleGasAlertLevel","display","idwedontcareabout","alertPeriod","alertPeriodSelections","rawPeriod","formattedPeriod","onKeyPress","address","firstThreeDigits","phoneNumSplit","split","lastThreeDigits","digitsArr","digit","concat","join","asteriskOutPhoneDigits","AirAlertsOverview","changeAlertStatus","deleteAlert","setAlertConfigurator","startNewAlert","asideOn","description","airAlert","speciesUnit","SpeciesFormatter","alertsFormatter","maxHeight","overflowX","overflowY","pNum","colSpan","stepStyle","flexDirection","justifyContent","AlertsTour","onEnd","tourRef","React","show","setShow","isWaiting","setIsWaiting","tourOpen","useDispatch","waitForElement","selector","timeout","Promise","reject","startTime","now","checkElement","element","querySelector","requestAnimationFrame","handleAsyncAction","btn","getElementById","click","firstUnitButton","HTMLElement","steps","node","ref","isOpen","onRequestClose","onAfterOpen","disableBodyScroll","onBeforeClose","enableBodyScroll","enableBody","startAt","closeWithMask","disableInteraction","disableKeyboardNavigation","disableDotsNavigation","showNavigationNumber","lastStepNextButton","fontSize","badgeContent","curr","accentColor","rounded","update","showButtons","bindActionCreators","setEditMode","setSelectedAlert","isAlertDataLoading","setIsAlertDataLoading","useLocation","getAlertsData","getAirAlerts","packagedAirAlerts","AddTarget","all","packagedAPIAlerts","airAlertRequest","updatedAirAlerts","updatedUserAlerts","deleteAirAlert","Modal","modalComponent","AppIntroModal","completeAppIntro","header","body","AgreementModal","agreement","buttonText","signAgreement","setAgreementModalOn","terms","setAlertsOn","setAlertsOff","internalUser","appIntroInternal","setAppIntroInternal","agreementsInternal","setAgreementsInternal","agreementModalOn","clearAllBodyScrollLocks","mua_id","signUserAgreement","updatedAgreements","AnalyticsPlots","polarPlots","plotKey","src","alt","getZephyrData","setLoading","setPolarPlots","getAnalyticsReport","minDataAllowance","startDT","dateFinder","setHours","endDT","isoStartDT","toISOString","isoEndDT","ZStart","ZEnd","packagedZephyrData","rawZephyrData","exclusionList","dataObj","dp","getTodayData","parseFloat","latitude","longitude","metData","packagedGFSData","windDataPackager","zephyrDTs","dateTime","gfsDTs","zephyrFirstDT","zephyrLastDT","gfsFirstDT","gfsLastDT","clipCount","dt","gfsKey","gfsValue","clippedArr","updatedPackagedGFSData","parsedZDT","repeatDirVal","repeatSpeedVal","speed","diff","newGFSDate","subtract","splice","finalPackagedData","getPolarPlots","requestedPlots","require","CanvasJS","Chart","CanvasJSChart","props","options","containerProps","chartContainerId","_cjsContainerId","this","chart","render","onRef","nextProps","nextState","destroy","Component","CanvasJSReact","DataChartDownloadButton","handleChartDownload","data-html2canvas-ignore","defaultProps","speciesObjFinder","targetSpecies","dataIdentifiers","ans","speciesColourFinder","unitIdx","rgb","colour","r","speciesFinder","unitData","availableSpecies","chartableSpecies","sDI","some","mappairSpeciesFinder","curOverlay","speciesLabelFinder","defaultSpecies","extentTabFinder","unitNumber","extentTabConfigs","unitId","unitHistory","firstSlot","tabConfig","tabFinder","HTMLGroupLabel","curSlot","sortedExtentTabConfigs","dcGroup","etGroup","aS","activeTabFinder","specifiedGroup","tabConfigs","tabConfigArr","tcGroup","labels","extentActiveTabFinder","unitAvailableSpecies","filteredDisplayConfig","aqMetMapper","externalMetData","met","aqTabFinder","lastHourUnitData","convertRawData","dataArr","speciesObj","rD","conversionDivider","Math","round","conversionMultiplier","getChartDataset","averagingOption","activeTab","activeTabIdx","unitList","targetTab","tS","tDS","u","speciesColour","rawData","processedData","speciesLabel","unitNameLabel","hidden","defaultColour","featureColour","borderDash","borderDashConfigs","borderDash2","borderDashConfigs2","getIdxOfUnit","getSlotData","slotData","avgKey","avgInfo","getTzConfig","tzType","tzSpecific","localDateTime","tzHistory","timezone","getTzConfigFromAllHistories","tzConfig","unitTzConfig","getDateObjectArray","dates","date","hasAvailableData","datasets","dataset","valReturned","wrangleLineChartData","chartData","handleUnitSpeciesFilter","wrangledData","ds","updatedMap","secondaryAxis","otherSpeciesList","primaryAxisDatasets","determineSecondaryAxis","dd","nullifiedUpdatedMap","um","curDate","halfwayDate","getTime","axisYType","axisYIndex","wD","dataPoints","lineColor","lineDashType","markerSize","markerColor","markerBorderColor","markerBorderThickness","xValueFormatString","DataLineChart","downloadOn","showingAnnualAverage","wrangledChartData","secondaryAxisConfig","secondaryAxisDS","voidedAxisConfig","placeholderAxisConfig","void","dataInRange","max","min","allDataIsInRange","maximum","minimum","finalSecondaryAxisDs","sAD","inConfig","fSAD","comparisonConfig","getSecondaryAxisConfigs","useRef","animationEnabled","zoomEnabled","backgroundColor","toolTip","borderColor","cornerRadius","fontFamily","contentFormatter","formattedDate","CanasJSReact","formatDate","dataPoint","dataSeries","axisY","gridColor","gridThickness","labelFontFamily","axisY2","titleFontColor","titleFontSize","titleFontFamily","placeholderAxis","axisX","valueFormatString","labelAngle","labelAutoFit","labelWrap","interval","intervalType","labelMaxWidth","prefix","DataChartDisclaimerWrapper","styled","div","ChartHeader","DataChartHeader","progressBarOn","requestErrors","tz","annualAvgData","statusCode","statusDescription","list","message","ZephyrTypes","virtual","getHeaderText","DataChartLabelsCanvas","canvasId","dashPattern","strokeColor","canvas","ctx","getContext","strokeStyle","lineWidth","beginPath","setLineDash","moveTo","lineTo","stroke","DataChartLabels","Tooltip","containerClassName","tooltipMarkerContent","AADataCoordinates","latlon","toFixed","lon","DataUnits","handleRemoveUnit","ProgressBar","dataLoading","setProgressBarOn","timeEstimate","time","setTime","callback","delay","savedCallback","setInterval","clearInterval","useInterval","ChartContainer","setUnitList","setUnitListGrowing","timePeriod","timePeriodSwitching","isDSEEnabled","setRequestErrors","setUnitHistories","setHasZephyrNull","hasZephyrNull","readyForDrop","setReadyForDrop","compRef","createRef","onDragOver","stopPropagation","handleDragOver","onDrop","onDragLeave","handleDragLeave","unitCount","timeOption","subtractTwoDates","start","end","quantity","getRequestTimeEstimate","fileName","replace","item","parentNode","overflow","html2canvasOptions","ignoreElements","windowWidth","outerWidth","logging","documentMode","html2canvas","then","canvasToImage","quality","ModalContainer","DataDiagnosticsModal","dataNarrative","handleDataNarrativeDialog","narrative","narrativeIdx","updateIdx","DataDownloadButton","diagnosticMode","handleDownloadDialog","DataDownloadModal","handleDownloadData","downloadTypes","downloadType","selected","setSelected","ExceededThreshold","thresholdExceedingSpecies","isTooltipShowing","setIsTooltipShowing","right","borderRadius","zIndex","specie","fontStyle","onMouseEnter","transform","historicalData","handleTabSwitch","defaultActiveTab","setDefaultActiveTab","setActiveTab","setTabs","sortByGroup","lowerCaseA","lowerCaseB","localeCompare","sortButtonsByGroup","arrObj","getNO2PM","getRest","sort","getExceededThresholdSpecie","secondSlot","tabsFirstSlot","tabsSecondSlot","removeNewDataSetDuplicates","index","self","findIndex","sortedNewDataSetDuplicates","isThresholdExceeded","checkSpeciesThresholdResult","DataSpeciesFilters","handleSpeciesFilter","speciesFiltered","handleSlotChange","timeAveragingOptions","chartDatasets","filterSpecies","fs","hiddenStatus","speciesFilterFinder","getAvailableAveragingOption","availableSpeciesSlotA","availableSpeciesSlotB","hData","aPeriod","allowAveragingOption","allowAvgOption","hasAvgPeriodAnyData","val","concatedSpecies","DataTimeAveragingOptions","curAveraging","handleAveragingOption","isHistoricalDataLoading","historicalDataZType","isLoaded","lastUnitHistory","validateAveragingOption","allNull","DataCustomDate","curTimePeriod","endDate","handleCustomDateChange","handleCustomSubmit","handleTimePeriod","toggleCustom","setToggleCustom","startDate","curState","setSelectedTimePeriod","defaultChecked","dateFormat","selectsStart","maxDate","selectsEnd","minDate","valueOf","setIsDSEEnabled","tp","startEndFinder","event","setContactModalOn","setDataModalOn","setMappairQuoteModalOn","setMappairTimeseriesModalOn","setModalsOff","setZephyrQuoteModalOn","defaultOptions","fieldSeparator","quoteStrings","decimalSeparator","showLabels","showTitle","useTextFile","useBom","useKeysAsHeaders","csvGenerator","oneTimeColumns","activeUnitIdx","activeUnitSlot","processSlot","dtIdx","newDataset","UTS","slotAgnosticData","head","sADItem","dataHolder","availableSlot","metricKey","speciesInDisplayConfig","metricValues","convertedData","CSVOrder","dh","unitMetricData","filename","getDateFromTimestamp","ExportToCsv","generateCsv","mappairCsvGenerator","chartDataset","curSpecies","hdms","newDataPoint","formattedHdms","getShortDateFromISO","Banner","setIsModalOpened","bannerValue","dataTab","AnnouncementBanner","SpeciesTabs","hasVirtualZephyr","asideOpen","downloadModalOn","endLoading","startLoading","hourAveraginPeriod","indexOfHourAveragingPeriod","chartRedraw","chartZoomOn","dataNarrativeModalOn","unitListGrowing","fetchMetData","selectedAnnualAvgYrs","coordinates","setAveragingOption","setChartData","setChartRedraw","setChartZoomOn","setDataNarrative","setDataNarrativeModalOn","setDate","setSlot","setSpeciesFiltered","setTimePeriodSwitching","setTimezone","setFetchMetData","setShowingAnnualAverage","setCoordinates","zephyrAvgData","setZephyrAvgData","setStatusCode","setStatusDescription","setThresholdExceedingSpecies","isModalOpened","updatedUnitList","updatedUnit","updatedDatasets","updatedDataset","handleChartReset","annualAvgShowing","Array","isArray","getZephyrHistory","unitOverplot","defaultAveragingOption","HR8Mean","HR24Mean","O3FreeSpeciesArr","exceededSpeciesThresholds","no2","o3","pm10","pm25","n","specieObj","res","validOption","getValidAveraginOption","processTab","startingDataset","addUnitDataToChart","averageOfLastHourOfData","newError","unitName","errorType","keepPullutantTogglingState","newDatasets","defaultStartEnd","defaultStartEndFinder","h","m","unformattedEnd","startEnd","startUTC","utcConvertor","endUTC","updatedDataConfig","newUnitHistory","unitStatusCode","responseCode","newAveragingPeriod","addNewAveragingToChart","timeAveragingSwitch","handleTimePeriodChange","newTimePeriod","newRequestErrors","newUnitHistories","newDataNarrative","correctedStart","correctedEnd","utcStart","utcEnd","newTzConfig","newLabels","unitKey","unitValue","processUnitHistorySet","handleDownloadModal","handleDataNarrativeModal","displayConfigCopy","metDataCSVPromise","unitItem","HasMetStation","getZephyrMetData","itemsKVP","Unaveraged","itemsArr","headerObj","itemsArrSorted","headers","numberOfRows","j","availableUnits","slotString","downloadDataKML","dataDownload","processChartDataset","newUnitList","availableUnit","activeTabConfig","extentActiveTabConfig","updatedNewDatasets","unitProcessSlot","secondProcessSlot","firstSlotDataSet","secondSlotDataSet","removeDataSetDuplicates","getFilteredDataSet","updatedDataSet","filteredNewDataset","hasDataSetDuplicates","updateChartDatasetsWithNewSlot","newSlot","updatedActiveTab","updatedExtentActiveTab","newAveragingOption","processTabSwitch","newDate","formattedEnd","timePeriodSwitch","zephyrType","zephyrStartDate","userStartTimeDate","zephyrEndDate","curAveragingOption","slotOption","newActiveTab","speciesGroupSwitch","prevFilterStatus","newChartData","updatedData","newSpeciesFilters","unitZNumber","listUnit","newRequestErrorList","re","pointBorderColor","pointHoverBorderColor","updateChartDatasets","overallFiltered","flipOverall","newSpeciesFiltered","theresholdFormatter","thArr","activeOverlay","convertToLastDP","newThArr","newTH","nextMin","subtractor","stringAns","parsedAns","thresholdDecimalFinder","finalSubtractor","StylegroupSelectorWrapper","kebab","tourAQColourscaleOpen","mappairOptions","thresholdTab","activeStylegroup","toggleAccordion","isOn","stylegroupMenuActive","setStylegroupMenuActive","closeStyleGroupMenu","data-user-tour","displayedNameHTML","stylegroup","colourscaleSelect","tArr","backgroundImage","AQUnit","checkIfSensorData","rawGroup","context","TableScore","HTMLExposedUnitLabel","AQOther","windDir","siteId","siteName","toUpperCase","specificZephyrMetDataEnricher","specificZephyrMetRequestPackager","locationId","tourAQDataOpen","aqlIsOn","changeLatestMeasurementTab","switchAQLTab","availableTabs","aqTabHeaders","uTH","newUnitTabHeader","contextLabel","aqTabHeaderFinder","metStationData","other","generateMetInfoToZephyr","actualZephyr","packagedMetRequest","getLatestMetDataForUser","enrichedZephyr","addMetInfoToZephyr","metInfo","addMetInfoToZephyrsList","op","AQSAChart","reversed","tickLength","labelPlacement","AQSA","saData","meta","total","precedingContent","href","url","AQTemporalChart","intervals","additionalOptions","annual","axisXIntervalType","stripLines","labelBackgroundColor","labelFontColor","AQTemporalChartModal","parentRef","AQTemporal","temporalModelData","mappairLink","timeseriesExpansion","AQWindChart","windData","showlegend","pad","dragmode","config","useResizeHandler","background","marker","AQWind","tourAQModelDataOpen","mapAirPointValueHistory","aqmIsOn","changeMapAirModelTab","points","windModelData","aqmWind","aqmSA","aqmTemp","switchAQMTab","aqmOptions","aqmO","Loader","Tabs","aaIsOn","changeTab","isModalShown","setModalShow","navigateToDataTab","annualAvgTab","role","values_timestamps","timestamp","ChartComponent","scope","toLocaleUpperCase","valueTimestamp","ListComponent","changeMapAnnualAverageTab","history","useHistory","aqIsOn","aqData","aqColourscale","aqModelData","setAQIsOn","setAQLIsOn","setAQMIsOn","setAAIsOn","saValue","saDataPackager","temporalDataset","valueHistory","pointDataPackager","windDataset","windRoseDataPackagerFromMetData","updatedAQIsOn","aqiIndexSwitch","updatedAQLIsOn","aqlIndexSwitch","updatedAQMIsOn","aqmIndexSwitch","updatedTabisOn","publicAdviceFinder","no_advice_found","defaultAdvice","advice_sensitive","behavioural_change","lower_limit_value","AQIAdvice","any_entries_for_species","formatGoogleAddress","shortFormat","formattedGoogleAddress","googleAddressArray","cancelPopup","curZephyr","internalPoints","setInternalPoints","popoverElement","ZephyrName","PollutionValue","PublicAdviceComponent","AQI","namedLocation","formatted_address","checkAvailableData","curOverlayLabel","pollutant","pA","secondaryValue","mappedMeasurements","measurement","identifier","latestMeasurementMapper","useOutsideClick","handleClickDocument","contains","handleClickOutside","addEventListener","removeEventListener","tourOpenSearch","handleLocationSearch","invalidSearch","setInvalidSearch","showSearch","setShowSearch","typedLocation","setTypedLocation","inputEl","handleSearch","focus","TimeSlider","curTimeSliderOption","setCurTimeSliderOption","wmsDateTime","setWMSDateTime","changeTimeSliderOption","setDateTime","timeSliderOptions","fillRule","clipRule","LocationControls","showLocationSearch","zoom","mappairOn","satelliteOn","osmOn","aqmaOn","schoolsOn","smokeControlZonesOn","dateTimePickerPositionAsideOn","dateTimePickerPositionAsideOff","isLayerOpen","setLayerOpen","isAnnualAvgOptionsOpened","setIsAnnualAvgOptionsOpened","selectedYear","setSelectedYear","aqiError","setAQIError","snackbarOpen","setSnackbarOpen","snackbarMessage","setSnackbarMessage","dateTimePickerOpen","setDateTimePickerOpen","aqiErrorModal","getAttribute","fireToggleAnalyticsEvent","itemStatus","closeAnnualAvgModalAndOpenLayer","calculateMinMaxDates","getDate","handleSnackbarClose","reason","isOutsideClick","isCancelButton","innerHTML","DateTimePicker","selectedDate","toDate","isToday","toDateString","currentTime","isSelectedDateInPast","onOpen","open","left","borderBottom","Snackbar","autoHideDuration","onClose","anchorOrigin","vertical","horizontal","Alert","severity","sx","padding","layers","annualAveragesArr","annualAveragesToggle","aqmaToggle","airQualityIcon","schoolsToggle","schoolsIcon","smokeControlZonesToggle","smokeControlIcon","mappairToggle","realTimeIcon","annualAvgIcon","allToggle","defaultLayer","satelliteToggle","satelliteLayer","osmToggle","osmLayer","tourFilterOpen","LocationLicensing","LocationPopover","closePopup","setZephyrModalOpen","vZephyrsConfig","hdmsSplitter","defaultModelUnit","sources","overlayUnitFinder","active","new30Days","new30DaysMax","getUnitTypeCountTxt","unitType","addZephyrs","getUserVirtualZephyrs","dndPoints","setDndPoints","setName","invalidZephyrName","setInvalidZephyrName","limitReached","handleSubmit","addVZephyr","virtualZephyrs","vZephyrToAdd","vz","onSubmit","vZephyrsTitle","required","CursorIcon","setCursorIconDropped","isCursorIconDuplicationVisible","setIsCursorIconDuplicationVisible","cursorPosition","setCursorPosition","initialOffset","setInitialOffset","handleMouseMove","clientX","clientY","iconStyle","duplicationStyle","stroke-width","stroke-linejoin","filterUnits","color-interpolation-filters","flood-opacity","result","in","radius","operator","dy","stdDeviation","mode","in2","setVZIconClicked","bool","setAddVZSettings","setVZName","setVZCreationMenu","setInitCursorPosition","Instructions","maxWidth","bottom","alignItems","gap","boxShadow","fontWeight","alignSelf","mappairOlArr","annualAveragesOlArr","ownProps","tourClick","unitFilters","isBannerShowing","curOpacity","setCancelPopup","setMap","mapLoading","setMapLoading","setPoints","zephyrModalOpen","mapElement","mapRef","thresholdRef","mappairOptionsRef","cancelPopupRef","removeOverlay","getOverlayById","sessionStorage","mapExtent","fromLonLat","popover","Overlay","stopEvent","autoPan","autoPanAnimation","duration","initMap","Map","interactions","defaults","dragPan","mouseWheelZoom","pinchRotate","extend","DragPan","condition","getPointerCount","platformModifierKeyOnly","MouseWheelZoom","TileLayer","preload","Infinity","XYZ","MAPTILER_URL","wrapX","view","View","center","extent","handleMapClick","un","generateTileLayerByOverlayType","keyword","species_string","osm","OSM","tileGrid","getTileGrid","setTileLoadFunction","imageTile","imageSrc","dynamicTileLoader","newMappairLayer","getSource","setOpacity","setProperties","imageWMSLoader","ImageLayer","ImageWMS","mappairAPI","APIPaths","pathMappair","getMappairOverlayImage","serverType","ratio","params","imageLoadFunction","image","overlayLoader","imageLayerSource","refreshTilesState","olArr","setZIndex","removeLayer","separateTilings","olf","addLayer","separatePPTilings","parser","WMTSCapabilities","getCapabilities","caps","read","generatePPTileLayerByOverlayType","layername","optionsFromCapabilities","urls","layerExtent","WMTS","transition","tileLoadFunction","PPTileLoader","generateAAOverlay","overlayName","aaLayer","dynamicAnnualAveragesTileLoder","generateAATiles","baseLayer","getLayers","getArray","setVisible","maptiler","mapTilerKey","satLayer","aqmaLayer","getMappairAQMAImage","schoolsLayer","getMappairSchoolsImage","schoolsOverlayLoader","smokeControlZonesOverlayLoader","unitPosition","overlayExists","getOverlays","getId","unitElement","newUnitOverlay","addOverlay","hdRef","ml","layerProps","getProperties","layerName","updatedOpacity","determineColour","LayerGroup","refresh","updatedCenter","getView","animate","getMapAirModelData","pointsParam","curMappairOverlay","speciesRef","ignore","hdValue","pointValue","secondaryPointValue","availableHighDefLayers","highDefinitionPointsGroup","hdm","users","hdmo","highDefOverlayConfig","ahdl","highDefConfig","highDefRef","hdPointvalue","values_coordinates","mapSize","getSize","getValueAtPoint","calculateExtent","crs","updatePointTime","getLocation","namedLocationValue","setPosition","handleMapClickRequest","properTime","getHours","getMinutes","getSeconds","finalDate","timestamps","historyData","handleMapClickGetMapAirPointValueHistory","endDateObj","getFullYear","setFullYear","enddt","startDateObj","numberYrsHistory","startdt","getAnnualAvgAtCoords","annualAvgRawData","selectedOverlay","speciesWithData","annualAvgChartData","raw","handleMapClickGetAnnualAvg","coordinate","getCenter","evt","pixel","getPixelFromCoordinate","dispatchEvent","overlayID","colourFinder","locationSearch","containsXY","getPoints","toLonLat","toStringHDMS","0","1","updateVZSettings","pts","locationName","cursorIcon","originalEvent","closest","getImage","tileCoord","tileCoordExtent","getTileCoordExtent","minMaxXY","tileCoordToLonLat","xMin","yMin","xMax","yMax","dimensions","axios","method","responseType","Authorization","response","URL","createObjectURL","dynamicSpecies","minMaxArr","bbox","LocationMarkerList","isAnalysis","increase","mapView","currentZoomLevel","getZoom","setZoom","VZInstructionsModal","header1","text1","header2","text2","authorityInfo","standardInfo","handleAQ101Modal","sectionsInView","setSectionsInview","sectionEl","scrollIntoView","checkActiveSection","section","numSectionsInView","updateElementsInView","updatedSectionsInView","el","rect","getBoundingClientRect","viewHeight","checkElementInViewport","to","scroll","behavior","block","AQ101CloseModal","onScroll","html","closeAside","setUnitHistoriesList","SET_UNIT_HISTORIES","setUnitHistoriesLoading","SET_UNIT_HISTORIES_LOADING","setThresholdLimits","SET_THRESHOLD_LIMITS","setZephyrCoveragesList","SET_ZEPHYR_COVERAGES_LIST","increaseArrivedRequests","INCREASE_ARRIVED_REQUESTS","restartArrivedRequests","SET_ARRIVED_REQUESTS_TO_INIT_STATE","setNullableUnits","SET_NULLABLE_UNITS","proceedWithAnalysis","SET_PROCEED_WITH_ANALYSIS","setIsViewLoaded","SET_IS_VIEW_LOADED","SET_IS_CARTRIDGE_DATA_LOADING","setIsWidgetLibraryVisible","SET_IS_WIDGETS_LIBRARY_VISIBLE","Confirmation","confirmationOpen","showTick","contactFormOptions","confirmationScreen","setConfirmationScreen","formData","setFormData","userMessage","setUserMessage","company","powerOption","details","detailsContactFormLookup","Sales","speciesList","formSubmission","enquiry","submitContactForm","defaultZephyrForm","updatedFormData","zephyrPowerOptions","updatedMeasurementsList","removeMeasurement","zephyrMeasurementOptions","zMO","fDs","addMeasurement","AsidePrompt","selectedUnitListCheck","isOverlayMenuVisible","setIsOverlayMenuVisible","AsideOverlaysPublicSpecies","speciesMap","sm","newFilters","nF","updatedNewFilters","newFilter","filterOverlays","anualAveragesOn","allUnits","showAllUnits","aurn","subMenus","setSubMenus","newSubMenu","changeSubMenusToOff","showAllStatus","zephyrsAvailable","aurnsAvailable","virtualZephyrsAvailable","allAvailableUnitsSelected","allOverlaysSelected","defaultSelectedFilters","handleShowAll","AsideOverlaysSpecies","changeSubMenus","mappAirFilterToggles","mFT","sF","updatedFilters","updatedOverlayOptions","changeOverlayOptions","closeModal","confirmSubmit","networkCredentials","setNetworkCredentials","networkCredentialsError","setNetworkCredentialsError","apiGetWifiCredentials","credentials","defaultSSID","DefaultSSID","defaultPassword","DefaultPassword","networkName","ssid","networkPassword","wpaKey","getNetworkCredentials","handleChangeNetworkCredentials","handleSaveWifiCredentials","networkCredentialsData","apiRenameUnitWifiNetwork","readOnly","RenderSampling","samplingPeriod","RenderCartridgeText","cartridgeLabel","VZephyrBox","RenderBattery","isNaN","zephyrCoveragesList","isDataAvailabilityChartLoading","hasInitialUnitSet","setDraggedUnit","setZephyrInEditMode","setInitialUnitSet","mappairPointMode","prevUnit","selectUnit","selectedUnit","setColour","setSelectedVZephyrToDelete","unSubSelectedVZephyr","selectedUnitIdPod","setFilteredZephyrs","filteredZephyrs","isDeviceDropdownOpen","setIsDeviceDropdownOpen","noVZephyrs","editNetwork","expanded","nameInput","optionsMenuOpen","subscribed","setEditNetwork","setExpanded","setNameInput","setOptionsMenuOpenMenuOpen","handleNameChangeReset","unitInputRef","dragImage","Image","dragIcon","handleNameSubmit","formattedNameInput","editVZephyr","createZephyrAlias","newZephyr","newZephyrList","getUnitCartridgeData","isUnitRetired","addUnitToAnalyticsList","prevState","unitToChange","isSelected","timestampDate","currentDate","Box","marginTop","Button","tagName","100","textAlign","textTransform","border","paddingTop","paddingBottom","unitTypeAsString","arrow","placement","componentsProps","tooltip","marginRight","clip-path","draggable","onDragStart","dataTransfer","setDragImage","handleDragStart","handleNameChange","onBlur","onKeyDown","downloadCalibrationCertificate","unitCertificateDownload","getTimeOld","lastConnectionDT","lastDataDT","SampPeriod","latLngAltered","reverse","CommercialName","dangerouslySetInnerHTML","__html","convertUnitTimeToLocalTime","getCurrentTimeZoneAbbreviation","PublicAsideUnit","virtualZephyrsNumber","handleResetConfigurations","handleVirtualZephyrCreation","trim","flexShrink","flex","borderTop","selectedZephyr","useMemo","flag","setFlag","activeBeacon","handleDropdownOpenByType","refreshedSelectedUnitWithLastHourData","unitSelect","fillColour","devices","timeAverage","unitHistoriesLoading","isUnitHistoriesLoading","unitHistoriesList","dseOn","requests","nullableUnits","toProceed","viewLoaded","getUpdatedFilteredZephyrsList","filteredZephyr","virtualUnits","zephyrUnits","aurnsUnits","aurns","selectedUnitList","setComments","setEmail","score","setScore","scoreClicked","setScoreClicked","screen","setScreen","handleConfirmationClose","handleCloseModal","handleFeedbackSubmit","mufId","postUserFeedback","nextIdx","getUserFeedbackQuestions","sortedFeedbackQuestions","handleScore","handleScreenIncrement","question","onFocus","commentsQuestion","FeedbackTag","handleContactDialog","defaultContactForm","handleDropdown","enquiryContactForm","HeaderTutorialModal","handleTutorialDialog","videoId","opts","playerVars","autoplay","versionHistory","handleVersionDialog","versionId","versionNotes","handleAreaOfInterest","hasFeatures","setHasFeatures","Fill","solidFill","Stroke","Style","VectorSource","featuresLayer","VectorLayer","styles","Point","Circle","LineString","Polygon","draw","Draw","feature","getGeometry","getType","removeAllAreas","addInteraction","clear","areaConfig","defaultAreaConfig","getFeatures","f","polygonGeometry","areaSize","getArea","latLngGeometry","getExtent","centreHdmsRaw","centreHdms","handleAreasComplete","defaultMappairOptions","areaOfInterestScreen","setAreaOfInterestScreen","formattedPollutants","formattedComments","flatCoordinates","defaultMappairForm","mappairMeasurementOptions","mMO","newPollutants","Slider","actionCreator","handleSliderChange","selectedVZephyrToDelete","confirmDelete","startTour","closeTour","setShowTour","tourOpenAsideFilter","tourCloseAsideFilter","tourOpenAQDataIndex","tourCloseAQDataIndex","tourOpenAQColorscaleIndex","tourCloseAQColorscaleIndex","tourOpenHelp","tourCloseHelp","tourOpenLocationSearch","tourCloseLocationSearch","tourMapClick","tourCloseModelDataIndex","tourOpenModelDataIndex","setAQ101Off","setAQ101On","setAQ101Section","locale","views","setViews","deletePrompt","setDeletePrompt","deleteButton","noButton","yesButton","toggleViewDeletionButtons","deleteView","viewid","filteredViews","marginBottom","viewsCopy","currentView","toggleViewSelection","viewname","savedate","aria-label","BinIcon","setThresholds","thresholdLimits","setIsSaveViewOpened","setIsLoadViewOpened","nullableUnitsBoolean","zephyrsPollutantData","setZephyrsPollutantData","selectedTimePeriod","selectedTimeAveraging","setSelectedTimeAveraging","isLoadViewOpened","isViewNameValidated","setIsViewNameValidated","setViewLoaded","customDate","setCustomDate","setStartDate","setEndDate","layouts","setLayouts","setScatterChartsCounter","viewName","setViewName","isFieldBlank","setIsFieldBlank","isUnitListEmpty","setIsUnitListEmpty","noViewSelected","setNoViewSelected","noViews","setNoViews","thresholdsList","thresholdsPOSTReformatter","reformattedThresholdList","lowerthreshold","upperthreshold","saveViewToDB","selectionCriteria","pollutantData","isChecked","averageoption","timeperiod","stringify","validateViewName","saveView","log","userViewsCopy","getUserViews","newUserViews","handleProceedingWithAnalysis","paddingLeft","defaultValue","existingView","getExistingUser","viewToLoad","defaultLayoutGenerator","deviceView","gasWidget","particulateWidget","thpWidget","wsdWidget","networkView","networkGasWidget","networkParticulateWidget","getNumberOfLimitedScatterCharts","newAverageOption","aV","tP","filteredZephyrsCopy","hashTable","getSelectedZephyrsFromView","updatedPollutantData","thresholdsGETReformatter","convertedTimePeriod","AnalyticsFeedbackForm","setFeedbackModalOn","onLoad","BasicPopover","children","anchorElement","anchorElements","setAnchorElements","handleClick","targetElement","anchorElementsCopy","currentAnchorElement","anchorEl","anchorId","Boolean","aria-describedby","currentTarget","AccordionContainer","AccordionTitle","button","AccordionIcon","span","ChevronIconURL","AccordionContent","Accordion","isOpenInitially","setAccordionIndexes","setIsOpen","contentRef","aria-expanded","RetiredBadge","UnitList","accordionIndexes","selectedDeviceKeys","groupedZephyrs","reduce","acc","retired","getGroupedZephyrs","typeKey","getZephyrType","isRetired","toLocaleDateString","setChartViewMode","viewMode","AnalysisTour","highlightedSelectors","tPaP","chemicalJSXMap","TaskBarCtas","checkBeforeGenerateHistoricalData","toggleSaveAndLoadViewModals","hasSelectedZephyrAndPollutant","resetViewsStateFromLocalStorage","hasSelectedZephyr","hasCheckedPollutant","data-tour","RunViewIcon","SaveViewIcon","LoadViewIcon","isZephyrsLoading","isGetZephyrHistoricalDataLoading","isViewLoaded","initialRenderSet","setInitialRenderSet","editingModeFilterBarOn","toggleEditingMode","deviceApplied","setDeviceApplied","pollutantApplied","setPollutantApplied","timePeriodApplied","setTimePeriodApplied","timeAverageApplied","setTimeAverageApplied","2","3","generateHistoricalData","prevStateCopy","random","historiesList","zephyrsCopy","convertedTimeToUTCAndUpdatedDataConfig","getZephyrHistoryData","selectedPollutants","updateSelectedAnalyticsOptions","zephyrZNumber","newUnitHistoryObj","handleUnitExistanceValidationAndGetUpdatedUnitHistories","prevUnitHistories","isZephyrInList","updatedUnitHistories","selectedZephyrsKeys","filteredUnitHistories","validZephyr","removeUnitHistoriesDuplicates","counter","zephyrHistoryData","handleFilterBarUpdateOnPublicPortals","onChangeDateRangePicker","bulkPollutantsStateUpdate","selectAllPollutants","areAllPollutantCheckboxesChecked","extractPolluntantUnitCards","filteredPollutantData","unshift","inputLabel","pollutantDataCopy","pollutantToChange","pollutantIdx","handlePollutantSelection","getGuardRailsStylesForVZephyrs","extractTimeAndAveragingPeriodsUnitCards","modifiedTimePeriods","assign","modifiedAveragingPeriods","curOption","dateAgo","calculateFn","setMonth","getMonth","getDateByPeriod","selectsRange","inline","areAnyZephyrsSelected","isPollutantDataEmpty","getDateRange","dateObj","formatter","DateTimeFormat","day","month","year","parsedDate","pollutantsListElements","checkedPollutants","allChecked","HTMLReactParser","getCheckedPollutantsList","selectedDevicesText","names","alias","getUnitHistoriesListNames","selectedDevicesTextElement","selectedPollutantsTextElement","verticalAlign","selectedTimePeriodTextElement","selectedTimeAveragingElement","getSelectedTimePeriodText","ArrowRightIcon","extractAnalyticsOptions","useDeviceManagerLink","isMobileNavOpened","setIsMobileNavOpened","showTourMenu","setVersionHistoryOpen","setTutorialOpen","setIsHelpMenuOpened","handleDeviceManagerClick","handleCloseMobileNavMenu","activeClassName","exact","rel","helpkitButton","helpResourceLink","resourcesLink","privacyPolicyLink","esLogo","esLogoMain","DeviceManagerLink","withRouter","zephyrList","accountMenuOpen","contactFormOpen","helpMenuOpen","mappairQuoteFormOpen","tutorialOpen","versionHistoryOpen","defaultVZephyrsConfig","isSaveViewOpened","feedbackModalOn","setAccountMenuOpen","setContactFormOptions","setHelpMenuOpen","alertDropdownOpened","setAlertsDropdownOpened","InitStateFilters","staticPollutantsList","hasRunInitalRenderEffect","prevOverlay","newOverlay","accessGranted","handleChangeOverlay","newChangedOverlay","getCurrentSpecies","filteredOverlays","getCurrentSpeciesObj","getSourcesDropdown","sourcesDropdown","getSourceSelection","saSelectionCheck","updatedOverlay","handleMissingAnnualColourscale","handleSpeciesDropdown","pollutantSelect","handleSourcesDropdown","sourcesOff","sourceSelect","unsubFromVZephyr","parent","parentElement","removeChild","unitCard","getSetVersions","getVersions","isAnnualColourscaleEnabled","hourColourscale","displayedName","userViews","classList","toggle","scrollTo","hideTourMenuOnPages","smsAlerts","data-analysis-tour","stroke-linecap","indOverlay","gsd","initContactFormOptions","Logo","LogoMain","envVars","Variable","string","setAuthReq","password","seePassword","setSeePassword","passwordFieldActive","setPasswordFieldActive","handleLogin","internal","queryString","usernameChange","passwordChange","envVar","qualityCalculator","styleGroupName","styleGroup","qualityScore","averageAQIData","startIndex","endIndex","subset","averageValue","sum","closestMatch","smallestDifference","abs","difference","Number","todayDataPackager","setUTCHours","rawTodayData","day1","day2","day3","googleLocation","locationDesc","enhancedTodayData","desc","curDay","setCurDay","packagedTodayData","setPackagedTodayData","predictions","setPredictions","setSearch","searchOn","setSearchOn","formattedTodayData","rvt","dayOfWeek","newRVT","finalPackagedTodayData","species_list","getCurOverlay","getSpeciesLabel","getSpeciesColor","getSpeciesScore","handleAQ101","handlePlaceSelection","placeId","getLocationFromPlaceId","place","updatedTodayData","getLocationSuggestions","googlePredictions","updatedPredictions","gp","place_id","handleSearchStatus","td","nrOfLevels","arcPadding","arcWidth","percent","aqPercentage","curVal","aqScore","getGaugePercentage","formatTextValue","textColor","colors","curStylegroups","colourConverter","getSpeciesColorArray","customTitle","preText","spanSectionLink","spanText","postText","UserTour","alertsOn","appLoading","mappAirOn","initialAsideOn","toggleMappAir","errorMessages","extractSlotSpecies","speciesText","filteredSpecies","tableSubRowGenerator","hasSlotASpecies","hasSlotBSpecies","slotASpecies","slotBSpecies","hasZephyrLocation","hasPowerMode","powerMode","externalSensorsConnected","FleetManagementFilter","sampIntervalRef","slotsRef","batteryPercentageRef","lastConnectedRef","filterTableData","FleetManagementGenerator","tableData","table","csvOption","setCsvOption","downloadCSVFile","csv_data","CSVFile","Blob","temp_link","createElement","download","appendChild","exportAsPNG","imageFileName","toDataURL","downloadImage","blob","remove","cols","querySelectorAll","csvrow","lastIdx","csvHeaders","processTableDataForCSV","FleetManagementHeaders","csvHeader","isExpandButtonClicked","setTableData","fleetTable","setFleetTable","tableDataToUse","setTableDataToUse","availableZephyrTypes","setAvailableZephyrTypes","setDefaultAllZephyrs","zephyrsData","omitHistoricMappings","sampPeriod","transmissionInterval","slotAName","slotA_SN","slotBName","slotB_SN","lastConnected","DataTable","orderable","defaultContent","ordering","stateSave","sampIntervalChecked","slotsChecked","batteryPercentageChecked","defaultAvailableZephyrType","filteredData","getFilteredTableData","fleetManagementTable","toggleRow","getAvailableZephyrTypes","defaultZephyrType","filteredZephyrTypes","FleetManagementAvailableSpecies","validateCheckedButtons","obj","emptyValue","hours","tableDataCopy","checkedButtons","sampInterval","lastTimeConnected","filteredDataByZephyr","getFiltredTableDataByZephyr","getZephyrCheckBoxState","indexOfZephyrObj","vZephyr","getCurrentZephyr","tr","setUnitCartridgeData","toggleRowButton","row","child","isShown","hide","zephyrSorter","filteredUnits","aqiBands","PM2p5","aqiCalculator","aqiBandsArr","AQIMax","aqiSpecies","aSC","updatedAqiBands","aqiBandsObj","bands","formattedSpecie","band_lower_limit","band","aqiBandsObjPopulator","validFileExtensions","AlertsEndpoint","alertsAPI","airAlertsApi","PutAlertsEndpoint","GetAlertsAsCsv","requestOptions","fetch","AddAlertsAsCSV","files","file","SmsGroupAlerts","csvData","setCsvData","setFileName","readCsvOnLoad","lengthMenu","retrieve","searching","scrollY","getExtension","inputID","extentionsArray","RegExp","test","csvToArray","uploadNewCsv","x2","Sentry","getAlertsAsCSV","customerCsvData","flatNumberIndex","phoneNumberIndex","hashedPhoneNumber","marginLeft","Wrapper","ProgressBarWrapper","progressWidth","setProgressWidth","widthChunk","currentChunk","updateProgressStateWhenResponseArrives","newWidth","ceil","floor","increaseProgressBarPercentage","Stack","ComparisonTooltip","setIsWarningTooltipOpened","setErrorZephyr","strokeWidth","strokeLinecap","strokeLinejoin","FilterBar2","selectedWeatherZephyr","getSelectedZephyrs","selectedView","getCsvData","networkViewUnitList","comparisonViewZephyrs","handleFilterBarUpdates","getComparisonViewCSV","defaultComparisonView","defaultComparisonViewLayout","carouselRef","isAtStart","setIsAtStart","isAtEnd","setIsAtEnd","isDragging","setIsDragging","startX","setStartX","scrollLeft","setScrollLeft","zephyrsCount","virtualZephyrsCount","aurnsCount","zephyrsDataCounts","setZephyrsDataCounts","isWarningTooltipOpened","errorZephyr","debouncedCalculatePrevNextVisibility","useCallback","debounce","calculatePrevNextVisibility","carousel","scrollWidth","offsetWidth","counts","onMouseDown","pageX","offsetLeft","onMouseUp","onMouseMove","walk","SelectChartMode","getIcon","handleComparisonZIPDownload","zipName","generateCSVName","saveAs","AddWidgetIcon","prevLayouts","defaultDeviceView","deviceViewLayout","defaultDeviceViewLayout","defaultNetworkView","networkViewLayout","defaultNetworkViewLayout","comparisonView","comparisonViewLayout","sCC","RefreshIcon","DownloadCSVHistoriesButton","DownloadIcon","DeviceCounts","pluralize","count","singular","isOpenFromRedux","localOpen","setLocalOpen","CustomSelect","labelId","newView","CustomMenuItem","Select","MenuItem","FeedbackFormModal","showModal","setShowModal","toggleModal","sliderInitState","setSelectedPollutants","selectedPollutant","setSelectedPollutant","setSelectedWeatherZephyr","selectedZephyrObj","setSelectedZephyrObj","selectedAveragingPeriod","setSelectedAveragingPeriod","chartOptions","setChartOptions","setLegendsState","setSliderState","setNetworkViewUnitLIst","setComparisonViewZephyrs","loadingComparison","setLoadingComparison","setDefaultComparisonView","setDefaultComparisonViewLayout","setThresholdsList","stateSetter","thpChartPlotly","windSpeedDirChartPlotly","getSelectedPollutants","isUnitHistoriesListUpdated","getSelectedZephyrObj","viewType","allSelectedKeys","filteredZephyrsToBeSelected","activateView","hasOwnProperty","currentThresholdList","concatenatedLayouts","layoutsObject","layoutName","comparisonlayouts","items","defaultItems","pollutantWidgetName","pollutantWidget","moved","static","maxH","minH","minW","isRemoved","uid","setSelectedView","handleWeatherZephyrSwitching","handleZephyrsTogglingOnComparisonView","formatDateStringWithoutSeperator","datetime","getTimePeriod","timestampEnding","datetimeString","local","csvDataArray","unitHistoryItem","unitObj","slotA_BIC","slotB_BIC","deviceCSVGenerator","tableTitles","summaryTableGenerator","csvConstantData","formattedAveraginOption","selectedZephyrNumbers","commonUnits","zip","JSZip","comparisonViewCSVGenerator","csvContent","utf8Blob","generateAsync","ReactGridLayout","notMerge","localStorageKeysToSaveTo","setNewModularFeaturesState","WidgetsLibraryMenu","memo","scatterChartsCounter","isWidgetLibraryVisible","closeWidgetsLibrary","menuRef","handleCloseWidgetsLibraryMenu","borderTopLeftRadius","borderBottomLeftRadius","boxSizing","widgetsGenerator","widget","subTitle","imageURL","widgetName","getScatterChartNumber","isDisabled","scatterChartLimit","handleAddWidget","updateScatterChartNumber","Container","TextContainer","Pipe","AnchorTag","NotFound","pp","hrefPath","anchorText","userLocation","userLoading","zephyrSet","setAurns","parsedQueryString","setIsBannerShowing","setBannerValue","setAqiBands","bannerText","authReq","setVZephyrsConfig","screenWidth","setScreenWidth","dataConfigRef","displayConfigRef","isAuthenticatedRef","oneTimeFeedbackAutomation","userLocationRef","zephyrsRef","isDefaultZephyrSelected","metaDescription","setAttribute","linkCanonical","removeAttribute","handleResize","cancel","latestVersionViewedId","latestVersionViewed","lastVersionId","Helpkit","updateUserLatestVersionViewed","updateVersion","getMasterAuthToken","masterAuthBearerToken","rawQueryString","qsParams","curKey","char","validateAndPushNewParam","queryStringParser","setUserInfoInternal","authIsInternal","getUserInfo","updatedUserInfo","AQISpecies","appendHelpkitsScriptTag","script","async","loginState","getFetchToken","checkValidToken","userId","c","charCodeAt","tagManagerArgs","dataLayer","TagManager","authenticate","isDue","feedbackDueDateStr","dateObject","currentMonth","dueMonth","savedObj","savedUser","dueDate","savedCurrentMonth","savedFeedbackShown","feedbackShown","objectTosave","isFeedbackDue","setTimeout","clearTimeout","aurnsList","launch","getPublicAdvice","getDisplayConfig","getUserAgreements","getUserConfig","getStylegroups","getTimePeriods","getAveragingPeriods","getDataConfig","getUserVZephyrConfig","updatedOverlays","dataConfigInternal","vZephyrsConfigResponse","active_vzephyrs","active_vzephyrs_max","new_vzephyrs_30days","new_vzephyrs_30days_max","setUnits","foundOneCompatibleOverlayWithPollution","getAvailableSpeciesLabels","getAvailableSpeciesIdentifiers","tSD","getSpeciesLabelFromSpeciesIdentifier","getUsersAurns","getAurns","userAurnList","enrichedUserAurnList","userAurn","enrichedAurn","getUsersZephyrs","userZephyrList","virtualZephyrList","arrOfZephyrs","getUsersZephyrsData","aurnsCalled","currentDT","backstopDT","subtractTimeFromNow","twoHourDt","TwoHourDataConfig","enrichedUserZephyrList","userZephyr","measurementDataParams","userZephyrLastHour","dateStart","getDataAtCoords","spec","zephyrLastConnectionTime","slotsData","isCurData","isDifLessThanTwoHours","getZephyrMeasurementData","userZephyrLastHourData","packagedUserZephyrLastHourData","aSValues","slotValue","averagedASValues","Pm2p5","getInitZephyrList","userZephyrsList","userZephyrsListWithNames","sUN","sortedUserZephyrsList","getUnits","userZephyrsWithData","userZephyrs","sortedUnits","addUnitList","isPolling","initZephyrList","userUnits","counterMax","catch","updateStatesAfterReloading","getVZephyrWithDefaultData","vzCreated","endDt","end_dt","species_keywords","start_dt","sampleFreqMins","sample_freq_mins","backLogCount","firmwareVersion","id_location","locationStartTimeDate","locationType","measurementCount","mobileLocation","serialNumber","slotA_start","slotB_start","from","Set","getVZephyrs","vzephyrs","vZephyrDataList","addBannerToLocalStorage","isBannerShowingToString","setBannerWithExpiryTime","updateBannerStatus","isBannerExpired","routeProps","AirAlerts","App","getRouterBasename","optOutCookie","Cookies","get","permissionCookieSettings","initialize","gtmConfig","utils","DateMomentUtils","hostname","_sentryEnable","REACT_APP_SENTRY_ENABLED_LOCAL","dotenvConfig","sentryENABLED","_sentryDSN","REACT_APP_SENTRY_DSN_LOCAL","sentryDSN","_sentryRelease","REACT_APP_SENTRY_RELEASE_LOCAL","sentryRELEASE","_sentryEnvironment","REACT_APP_SENTRY_ENVIRONMENT_LOCAL","sentryENVIRONMENT","dsn","release","environment","integrations","replaysSessionSampleRate","replaysOnErrorSampleRate","tracesSampleRate","ReactDOM","fallback","navigator","serviceWorker","ready","registration","unregister","splitByFirstNumber","defaultMobilePublicPortalItems","defaultMobilePublicPortalLayout","defaultPublicPortalItems","defaultPublicPortalLayout","increment","updatedCounter","lineTypes","temperatureHumidityPressure","mappairDateParser","minutes","seconds","mDate","tzConverter","populateObjectWithZephyrHistory","updatedZephyrHistory","zephyrData","categorizeWindDataByDirectionAndSpeed","windCategories","packagedWindData","windCategoryConfigMap","wCC","dataTemplate","cardinalDirectionsPlus","theta","cD","dirName","hoverinfo","dir","cardinal","directionCount","dirBucket","minDegrees","cardinalDirectionFinder","thetaIdx","bin","minVal","pointData","packagedWindRoseData","todayDT","wDirArr","wSpeedArr","wDateTimeArr","wDirExists","pointDataResultsArr","isWDir","isWSpeed","windCheck","wDirValues","wSpeedValues","ts","parsedDT","formattedDT","checkExclusions","ms","firstTimeStamp","pm2p5Obj","dataFinder","excludedFromAnalysis","tsValues","spData","packagedSpData","auxinfo","auxSP","layer_names","getMinOrMax","calculatePercentile","sortedArray","percentile","lower","upper","weight","sortArray","generateMinMaxMeanStatisticsObject","selectedOption","aggData","meanValues","minValues","maxValues","fivePercentile","median","ninetyFivePercentile","pollutantNameMapping","getMaxNumber","getPopulatedAveragingPeriods","avPeriods","truncateLegendName","maxLength","substring","plotlyPollutantComparisonGenerator","slotWithValidData","getCommonUnits","series","slotId","timeStamp","legendgroup","hovertemplate","plotlyChartDataGenerator","selectedZephyrNumber","chartType","timeStamps","yAxis","selectedPollutantName","dataCheck","lineStyle","showSymbol","symbol","symbolSize","yAxisIndex","generateChartConfigurations","serieNames","serie","plotlyTHPDataGenerator","domain","titlefont","side","overlaying","thpSeries","plotlyWindDirectionSpeedGenerator","selectedWeatherZephyrNumber","windSeries","zephyrNumber","proxyVZData","proxyVZSlots","pop","relWindSpeed","relWindDir","relWindSpeedData","relWindDirData","dateTimeStamps","plotlyPrecipitationGenerator","precipitationSeries","precipitation","precipitationSerie","precipitationLayout","plotlyMinMaxMeanStatisticsGenerator","pollutantUnits","finalObject","formattedData","pollutantName","pollutantUnit","pollutantUnitText","customdata","_","fillcolor","flat","getMinMaxMeanStatisticsPlotlyDataAndLayout","getSourceApportionmentConfigurations","isNO2","proxyVZSourceApportionmentData","averagingData","sa","curSALabels","saLabelsNox","saLabelsPm2p5","filteredSAObject","fromEntries","average","roundedToFixed","digits","rounder","pow","formatCustomDate","csv","averagingPeriod","titlesPushed","zIdx","utcStartTime","utcEndTime","unSyncedStartDate","unSyncedEndDate","getDateTime","averagingOptionData","sIdx","zephyrID","tableRowData","pIdx","pollutantTitleObj","dateTimeArr","sortedArr","mean","getMinMaxMean","dateToFormat","getUTCDate","padStart","getUTCMonth","getUTCFullYear","getUTCHours","getUTCMinutes","tablePollutantsTitles","latList","lonList","zephyrObj","humidity","precipitationIntensity","WINDSPEED","WINDDIR","RAINFALL","tableMetDataTitles","tableProxyVZephyrMetDataTitles","isProxyVZDataValid","networkViewComponents","networkViewMap","component","lazy","networkViewPollutantSummary","deviceViewComponents","gasAverages","pmAverages","sourceApportionmentNO2","sourceApportionmentPM25","lazyComponents","DynamicChart","onRemoveWidget","draggedItem","hoveredWidget","setHoveredWidget","chartsClassName","curChartClassName","draggingWidgetStyles","isWidgetHovered","ResponsiveReactGridLayout","WidthProvider","Responsive","AddRemoveLayout","chartProps","setItems","layoutMap","setLayoutMap","compactType","breakpoints","lg","md","xs","xxs","rowHeight","isDraggable","isResizable","setDraggedItem","defaultLayout","layoutSaved","layoutMapSaved","itemInfo","getGridItemInfo","itemKey","data-grid","onRemoveItem","openConfirmModal","setOpenConfirmModal","itemToRemove","setItemToRemove","handleCloseConfirmModal","handleOpenConfirmModal","updateLayoutMap","gridItem_i","newLayoutMap","aria-labelledby","variant","newItems","UID","draggableHandle","onLayoutChange","customizedLayouts","foundItem","debouncedResizeEventToFixPlotlyScroll","oldItem","draggedItemId","onDragStop","ChartNoDependencyDataMessage","proxyVZText","updatedText","func","wait","args","later","Event","NoOfYearsTypes","machine","myAirApi","zephyrAPI","zephyrDataAPI","vZephyrAPI","mappairTiledAPI","masterAuthAPI","enableGridDragAndDrop","enableAutoLoadFirstView","gtmId","preview","api","csvDataDownload","cachedDataForViewBySlotsAveraged","dataForViewBySlotsAveraged","GetMeasurementData","GetMeasurmentData","GetMeasurmentDataDSE","getAirAlertTypes","updateAlertParameters","updateAlertTargets","addAlertTarget","getToken","getLocationGoogle","getLocationSuggestionsGoogle","getMappairAPIVersion","getMappairOverlays","getMappairStylegroups","getMappairOverlaySAValues","getMappairOverlayValue","getMappairOverlayImageTiled","getMappairPoint","getMyAirVersions","kmlDataDownload","mapboxSatellite","postAirAlerts","postContactFormEmail","setUserTour","updateAirAlert","zephyrsForUserWithHistory","zephyrsForUserWithHistoryAndAQ","GoogleMaps","Mapbox","versionModal","tutorialModal","contactModal","aurnToggle","zephyrToggle","vZephyrToggle","mapClick","expiry","combinedpollen","pm2p5","relhum","temperature","24","48","72","week","default","Feedback","Support","two","three","four","five","six","seven","eight","nine","labelFontSize","lineThickness","AACValidationCommunicationType","translationOptions","icon","averagingChains","thresholdMenuItemStyles","thresholdMainItemStyles","DEFRALimits","subscript","WHOLimits","pollutantsOrder","LRP","NRT","RT","RWC","LPS","rgbHex","requestType","possibleColours","version","urlencoded","URLSearchParams","append","grant_type","post","access_token","step","queryParams","getSAAtPoint","bounds","latLon","includeText","requestConfig","muaId","wifiData","axiosConfig","SSID","Password","getCachedZephyrHistoricalData","cache","acOverride","cartridgeSerial","getUserZephyrsWithHistory","getUserZephyrsWithHistoryAndAQ","getAURNs","queryValues","averagingOptionMapping","getVZephyrData","vzephyrid","averaging","vzephyr_id","average_all","getProxyVZephyrData","pod_id","id_user_target","patch","isPathLocation","DSE","isDA","znumber","pollutionArr","hasPollutionArrParticulates","DSEOFF","DSEON","statusText","errorCopy","isDescriptionValid","KmlRequest","link","usertoken","delete","updateAlertParameter","parameters","AddAlertTarget","put","postAirAlert","filteredZNumbers","suggestionsCallback","autoCompleteService","google","maps","places","AutocompleteService","biasBounds","LatLngBounds","LatLng","getPlacePredictions","viewId","downloadDataCSV","timeAveraging","zephyrExists","newState","requestMade","coverageData","SET_IS_DATA_AVAILABILITY_CHART_LOADING","SET_DSE_CHECKBOX_STATE","momentTimezone","dtFormat","daysDiff","past","endTime","getTimezoneOffset","targetDate","periodQuantity","periodUnit","strStart","strEnd","dateSplicer","dateString","diffStart","tzOffset","ukOffset","zonesForCountry","offset","add","curTimeZone","guess","convertedTime","toLocaleString","timeZone","KebabMenuCta","setIsThresholdModalOpen","setSelectedOption","isComparisonView","setAnchorEl","menu2AnchorEl","setMenu2AnchorEl","statisticsMenuAnchorEl","setStatisticsMenuAnchorEl","openChartMenu","openSubMenu","openStatisticsMenu","handleMainMenuClosing","handleClose","handleStatisticsClose","updateThresholdsList","handleThresholdToggling","updatedThresholds","aria-controls","aria-haspopup","KebabIcon","MenuListProps","PaperProps","RemoveIcon","linesExist","transformOrigin","subMenuItems","ModalWithCta","modalChart","isModalOpen","setIsModalOpen","MaximiseIcon","styleModalWithCta","CloseIcon","CustomMenu","TitleBarCtas","useCustomMenu","ChartTitleBar","customModal","isNetworkMap","chartBadge","tpValues","multiMode","dse","dataInCache","checkCacheForZephyrData","zephyrHistoricalData","proxyVZHistoricalData","disqualifiedFromCache","startDateUTC","utc","endDateUTC","startDateISO","substr","endDateISO","vZephyrDataResponse","vZephyrSourceApportionmentDataResponse","convertVZephyrDataToZephyrHistoricalData","proxyVZUnformattedData","proxyVZSourceApportionmentUnformattedData","containsData","slotAContainsData","checkDataResponseForData","slotBContainsData","headContainsData","customTP","populateCustomCache","populateStandardCache","getLocalStorageData","clearSpaceInStorage","stringCache","newCache","updatedUnitsCache","dataCount","curUnit","shift","stdKey","standard","custKey","custom","stringUpdatedUnitsCache","createdAt","zCache","unaveragedSlotData","objKey","hasData","discountedSpecies","speciesKey","speciesValues","notNull","unformattedData","isModelled","isSa","dateDataDueISO","outputs","convertVZephyrRawToCSV","avgValue","setAveragePties","localDateTimeDataArr","UTSDataArr","dateTimeDataArr","PM2P5Keys","dateToLocalISO","off","absoff","formattedResults","averaging_hours","proportion_percentage","sa_layer_HTML_label","headerspecimen","headerHTMLLabel","headergroup","headerkey","headerlabel","startOfDay","timestamp_start","timestamp_end","dataToAdd","pt","px","pb","shimmer","keyframes","ShimmerOverlay","SVGBase","svg","isALHDLoading","gammaCorrect","rgbaToHsl","rgba","whiteToGrey","Square","isActive","hslColor","y2","stopColor","cx","cy","mask","Triangle","colorInterpolationFilters","floodOpacity","MarkerType","markerColour","borderBottomColor","LocationMarkerWrapper","LocationMarker","isVisible","showLabel","wrapperRef","unitFilter","filters","filterApproved","typeMap","uf","unitActive","getMarkerColour","StateStatus","ma","k","prototype","bb","constructor","base","Va","setMilliseconds","getMilliseconds","setSeconds","setMinutes","W","Ea","charAt","Aa","roundRect","oa","D","F","fillStyle","quadraticCurveTo","closePath","Pa","R","cb","Ba","db","Fa","fSDec","ga","_fTWm","Wa","Xa","pa","createTextNode","offsetHeight","N","solid","shortDash","shortDot","shortDashDot","shortDashDotDot","dot","dashDot","longDash","longDashDot","longDashDotDot","K","eb","passive","capture","attachEvent","cancelBubble","call","Ya","X","getImageData","ha","La","Za","Ma","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","Qa","scale","gb","hb","va","creditHref","creditText","updateOption","_creditLink","renderCount","_canvasJSContainer","ra","Ga","canvasCount","G_vmlCanvasManager","initElement","na","ta","toolbar","fontColor","WebkitUserSelect","MozUserSelect","msUserSelect","userSelect","outline","lineHeight","_cultureInfo","ib","Ka","arguments","Ra","H","_defaultsKey","_themeOptionsKey","_index","_eventListeners","theme","predefinedThemes","light1","themeOptions","_isPlaceholder","setOptions","Ca","_padding","_x1","_y1","_x2","_y2","_rightOccupied","_leftOccupied","_bottomOccupied","_topOccupied","ia","_isDirty","_wrappedText","_initialize","Sa","optionsName","wa","subtitles","horizontalAlign","dockInsidePlotArea","getAutoFontSize","Ha","isOptionsInArray","Ta","pool","Ia","Ja","L","Q","da","ca","zoomType","animationDuration","dataPointWidth","dataPointMinWidth","dataPointMaxWidth","colorSet","culture","interactivityEnabled","exportEnabled","exportFileName","rangeChanging","rangeChanged","publicProperties","axisX2","container","Title","borderThickness","wrap","Subtitle","Toolbar","backgroundColorOnHover","fontColorOnHover","Legend","itemmouseover","itemmouseout","itemmousemove","itemclick","markerMargin","itemMaxWidth","itemWidth","itemWrap","itemTextFormatter","ToolTip","enabled","shared","updated","Axis","viewportMinimum","viewportMaximum","logarithmic","logarithmBase","titleFontWeight","titleFontStyle","titleWrap","titleMaxWidth","titleBackgroundColor","titleBorderColor","titleBorderThickness","titleCornerRadius","labelFontWeight","labelFontStyle","labelFormatter","labelBorderColor","labelBorderThickness","labelCornerRadius","labelTextAlign","suffix","includeZero","tickColor","tickThickness","tickPlacement","gridDashType","interlacedColor","scaleBreaks","crosshair","StripLine","startValue","endValue","thickness","labelAlign","showOnTop","axis","ScaleBreaks","autoCalculate","collapsibleThreshold","maxNumberOfAutoBreaks","spacing","fillOpacity","customBreaks","autoBreaks","Break","Crosshair","snapToDataPoint","DataSeries","bevelEnabled","highlightEnabled","indexLabel","indexLabelPlacement","indexLabelOrientation","indexLabelFontColor","indexLabelFontSize","indexLabelFontStyle","indexLabelFontFamily","indexLabelFontWeight","indexLabelBackgroundColor","indexLabelLineColor","indexLabelLineThickness","indexLabelLineDashType","indexLabelMaxWidth","indexLabelWrap","indexLabelFormatter","connectNullData","nullDataLineDashType","risingColor","fallingColor","startAngle","innerRadius","neckHeight","neckWidth","valueRepresents","linkedDataSeriesIndex","whiskerThickness","whiskerDashType","whiskerColor","whiskerLength","stemThickness","stemColor","stemDashType","upperBoxColor","lowerBoxColor","xValueType","axisXType","axisXIndex","yValueFormatString","zValueFormatString","percentFormatString","showInLegend","legendMarkerType","legendMarkerColor","legendText","legendMarkerBorderColor","legendMarkerBorderThickness","markerType","mouseover","mouseout","mousemove","toolTipContent","TextBlock","textBaseline","CultureInfo","digitGroupSeparator","zoomText","panText","resetText","menuText","saveJPGText","savePNGText","printText","days","shortDays","months","shortMonths","Da","xa","colorSet1","colorSet2","colorSet3","Ua","ba","$a","ab","light2","dark1","dark2","theme1","theme2","theme3","U","numberDuration","yearDuration","monthDuration","weekDuration","dayDuration","hourDuration","minuteDuration","secondDuration","millisecondDuration","dayOfWeekFromInt","defineProperty","jb","clearRect","fillRect","kb","ya","O","SyntaxError","J","V","Y","isFinite","LN10","Na","offsetX","offsetY","layerX","layerY","pageY","offsetTop","devicePixelRatio","Z","save","globalAlpha","restore","createLinearGradient","addColorStop","fromCharCode","reset","pan","menu","createUserOptions","stockChart","addTo","trackChanges","sessionVariables","isBeingTracked","_oldOptions","hasOptionChanged","eventHandler","removeAllEventListeners","registerSpace","unRegisterSpace","getFreeSpace","topPadding","rightPadding","bottomPadding","leftPadding","measureText","_lineHeight","_getFontString","rotate","PI","lines","fillText","setText","_wrapText","_getLineWithWidth","frontSize","setLayout","plotArea","layoutManager","_menuButton","_textBlock","Oa","addTheme","addColorSet","addCultureInfo","formatNumber","panel","_containerId","_objectsInitialized","overlaidCanvasCtx","_indexLabels","_panTimerId","_lastTouchEventType","_lastTouchData","isAnimating","disableToolTip","animatedRender","canvasPool","allDOMEventHandlers","panEnabled","_defaultCursor","_dataInRenderedOrder","_selectedColorSet","_preRenderCanvas","_preRenderCtx","overlaidCanvas","webkitTapHighlightColor","_eventManager","windowResizeHandler","_updateSize","_toolBar","cssText","_mouseEventHandler","_dropdownMenu","msPointerEnabled","_touchEventHandler","A","trimLength","dashType","ghostCtx","orientation","horizontalSpacing","_ctx","noDataPointsInPlotArea","objectMap","objectType","dataSeriesIndex","dataPointEOs","dataPointIds","plotUnit","axisPlacement","getDefaultAxisPlacement","intervalStartPosition","_stripLineLabels","_ticks","_labels","dataInfo","viewPortMin","viewPortMax","minDiff","_position","lineCoordinates","lastObjectId","_titleTextBlock","newViewportMinimum","newViewportMaximum","_appliedBreaks","_thicknessType","sqrt","currentDataPointIndex","currentSeriesIndex","_prevY","_prevX","NaN","containerTransitionDuration","mozContainerTransition","getContainerTransition","rectangularRegionEventSubscriptions","previousDataPointEventObject","ghostCanvas","mouseoveredObjectMaps","animations","animationRequestId","_animator","cancelAllAnimations","detachEvent","hasChildNodes","lastChild","_resetButton","_zoomButton","_breaksCanvas","_updateOptions","borderRight","WebkitTransition","userAgent","childNodes","WebkitFilter","resetOverlayedCanvas","_rangeEventParameter","charts","_dispatchRangeEvent","syncCharts","hoverFfontColorOnHoverontColor","_dropDownCloseTime","blur","print","exportChart","fb","isNavigator","_axes","funnelPyramidClickHandler","pieDoughnutClickHandler","clearCanvas","_events","plotInfo","plotTypes","_supportedChartTypes","_colorSet","_linkedSeries","_plotAreaElements","_processData","_breaksCanvasCtx","renderElements","preparePlotArea","drawImage","miterLimit","globalCompositeOperation","plotUnits","targetCanvas","targetCanvasCtx","renderLine","renderStepLine","renderSpline","renderColumn","renderBar","renderArea","renderStepArea","renderSplineArea","renderStackedColumn","renderStackedColumn100","renderStackedBar","renderStackedBar100","renderStackedArea","renderStackedArea100","renderBubble","renderScatter","renderPie","renderFunnel","renderCandlestick","renderRangeColumn","renderError","renderRangeBar","renderRangeArea","renderRangeSplineArea","renderWaterfall","renderBoxAndWhisker","dataSeriesIndexes","dest","animationCallback","fadeInAnimation","easingFunction","easing","easeInQuad","animationBase","startTimePercent","renderIndexLabels","createMask","attachPlotAreaEventHandlers","_updateToolTip","maskCanvas","maskCtx","mousedown","_plotAreaMouseDown","mouseup","_plotAreaMouseUp","_plotAreaMouseMove","categoriseDataSeries","totalDataSeries","previousDataSeriesCount","plotType","yTotals","assignIdToDataPoints","_processMultiseriesPlotUnit","_processStackedPlotUnit","_processStacked100PlotUnit","_processMultiYPlotUnit","_processSpecificPlotUnit","calculateAutoBreaks","q","valueType","fa","dataPointYPositiveSums","apply","dataPointYNegativeSums","dataPointYSums","isCumulativeSum","cumulativeSumYStartValue","cumulativeSum","isIntermediateSum","_dataRanges","renderCrosshairs","_hidden","showCrosshair","_updatedValue","getDataPointAtXY","distance","getObjectAtXY","dataPointIndex","changedTouches","isDrag","createEvent","initMouseEvent","screenX","screenY","preventManipulation","cancelable","trigger","srcElement","which","capturedEventParam","releaseCapture","_ignoreNextEvent","setCapture","mouseEventHandler","dragStartPoint","_zoomPanToSelectedRegion","_axisXMin","_axisXMax","renderCrosshair","mouseMoveHandler","validateRegion","isValid","axesWithValidRange","axesRanges","setViewPortRange","val1","val2","convertPixelToValue","getApparentDifference","getPercentAndTotal","indexKeyword","E","replaceKeywordsWithValue","C","B","point","axisSwapped","clip","convertValueToPixel","getMarkerProperties","drawMarkers","xClipAnimation","linear","newStrokeStyle","newLineDashArray","bezierCurveTo","yScaleAnimation","easeOutQuart","xScaleAnimation","T","S","ja","$","dataPointIndexes","ea","ka","G","drawMarker","x3","y3","x4","y4","za","M","ua","qa","P","y5","isXYSwapped","stemProperties","whiskerProperties","arc","endAngle","cos","midAngle","sin","exploded","highlightObjects","percentInnerRadius","lineJoin","indexLabelText","indexLabelTextBlock","hemisphere","acos","indexLabelAngle","atan2","explodeOnClick","x5","x6","y6","globalAplha","I","textBlock","isDirty","la","fNg","funnelSection","requestAnimFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","cancelRequestAnimFrame","cancelAnimationFrame","webkitCancelRequestAnimationFrame","mozCancelRequestAnimationFrame","oCancelRequestAnimationFrame","msCancelRequestAnimationFrame","atob","ArrayBuffer","Uint8Array","buffer","msSaveBlob","downloadurl","fireEvent","write","close","contentWindow","contentDocument","autoValueFormatString","errorMarkerColor","getDefaultLegendMarker","legendItemIndex","getDataPointAtX","getXValueAt","createExtraLabelsForLog","logLabelValues","noTicks","getNiceNumber","createLabels","firstBreakIndex","equidistantInterval","effectiveHeight","getLabelStartPoint","breaksLabelType","labelMaxHeight","stripLine","createLabelsAndCalculateWidth","effectiveWidth","createLabelsAndCalculateHeight","calculateAxisParameters","viewPortMinimum","lastBreakIndex","calculateValueToPixelConversionParameters","calculateBreaksSizeInValues","conversionParameters","lnLogarithmBase","pixelPerUnit","calculateStripLinesThicknessInValues","calculateBreaksInPixels","alignVerticalAxes","renderLabelsTicksAndTitle","renderStripLinesOfThicknessType","renderInterlacedColors","renderGrid","renderBreaksBackground","renderAxisLine","startPixel","endPixel","getPixelCoordinatesOnAxis","reference","calculateLogarithmicAxisParameters","generateValueFormatString","getNiceExponent","getDay","showAt","clearedOverlayedCanvas","_crosshairValue","_crosshairY2Value","_entries","contentDiv","firstChild","_lastUpdated","getToolTipInnerHTML","borderRightColor","borderLeftColor","borderWidth","fixMozTransitionDelay","disableAnimation","enableAnimation","MozTransition","positionLeft","positionBottom","xValue","MsTransition","showAtIndex","showAtX","mouseX","eventObjects","getNewObjectTrackingId","eventParameter","eventContext","userContext","onComplete","easeOutQuad","easeInQuart","context_","namespaces","g_vml_","g_o_","styleSheets","ex_canvas_","createStyleSheet","owningElement","propertyName","attributes","nodeValue","lineCap","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","arcScaleX_","arcScaleY_","lineScale_","alpha","m_","mStack_","aStack_","currentPath_","ownerDocument","cloneNode","element_","cp1x","cp1y","cp2x","cp2y","currentX_","currentY_","type_","x1_","y1_","x0_","y0_","r0_","r1_","colors_","src_","nodeType","readyState","repetition_","width_","height_","init_","specified","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","grey","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","butt","textMeasureEl_","removeNode","xStart","yStart","xEnd","yEnd","strokeRect","createRadialGradient","runtimeStyle","insertAdjacentHTML","setTransform","drawText_","fontVariant","currentStyle","strokeText","arcTo","createPattern","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","VALIDATION_ERR","TYPE_MISMATCH_ERR","CanvasRenderingContext2D","CanvasGradient","CanvasPattern","DOMException"],"mappings":"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","file":"static/js/main.673bfe38.chunk.js","sourcesContent":["import { Layout } from \"plotly.js\";\nimport { ThresholdLimits } from \"./interface\";\n\nexport interface ColDict {\n\t[key: string]: number[];\n}\n\nexport const plotConfig: any = {\n\tresponsive: true,\n\tdisplayModeBar: true,\n\tautosizable: true,\n\tmodeBarButtons: [\n\t\t['zoom2d', 'pan3d', 'autoScale2d', 'toImage']\n\t],\n\tdisplaylogo: false\n};\nexport const plotStyle = { width: \"100%\", height: \"100%\" };\n\nexport const plotlyPrecipitationMargin = {\n\tl: 10,\n\t// r: 0,\n\tb: 32,\n\tt: 32,\n};\nexport const plotlyMargin = {\n\tl: 20,\n\t// r: 0,\n\tb: 29,\n\tt: 35,\n};\nexport const plotlyTHPMargin = {\n\tl: 50,\n\t// r: 15,\n\tb: 40,\n\tt: 30,\n\t// t: 15,\n\t// pad: 4,\n};\nexport const commonLegend = {\n\ty: 0.9,\n};\n\nexport const plotlyFont = { family: '\"Open Sans\", verdana, arial, sans-serif', size: 10, color: \"#252834\" };\n\nexport const chartWatermarkConfigs = [\n\t{\n\t\tx: 0.02,\n\t\ty: 0.92,\n\t\tsizex: 0.18,\n\t\tsizey: 0.18,\n\t\txanchor: 'left',\n\t\tyanchor: 'top',\n\t\tlayer: 'below',\n\t\tsource: 'data:image/png;base64,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',\n\t}\n];\n\nexport const staticPlotlyChartLayout = () => {\n\treturn {\n\t\txaxis: { hoverformat: '%d-%m-%Y %H:%M UTC' },\n\t\tyaxis: { hoverformat: '.3r', automargin: true },\n\t\tmargin: plotlyMargin,\n\t\tfont: plotlyFont,\n\t\tshapes: [], // will be updated with threshold limits from modal\n\t\t// annotations: [], // will be updated with threshold limits from modal\n\t\tpolar: {\n\t\t\tbarmode: \"overlay\",\n\t\t\tbargap: 0,\n\t\t\tangularaxis: {\n\t\t\t\tticklen: 10,\n\t\t\t\tcolor: \"#252834\",\n\t\t\t\tdirection: \"clockwise\",\n\t\t\t},\n\t\t\tradialaxis: {\n\t\t\t\tangle: 0,\n\t\t\t\ttickcolor: \"#252834\",\n\t\t\t\ttickwidth: 1,\n\t\t\t\ttickangle: 0,\n\t\t\t\tticklen: 3,\n\t\t\t\tfixedrange: true,\n\t\t\t\ttickmode: \"auto\",\n\t\t\t\tnticks: 4,\n\t\t\t\ttickfont: {\n\t\t\t\t\tfamily: \"Open Sans\",\n\t\t\t\t\tsize: 10,\n\t\t\t\t},\n\t\t\t},\n\n\t\t\t// margin: {\n\t\t\t// l: 0,\n\t\t\t// r: 0,\n\t\t\t// b: 0,\n\t\t\t// t: 0,\n\t\t\t// pad: 0,\n\t\t\t// },\n\t\t},\n\t\tresponsive: true,\n\t\tautosize: true,\n\t\t// dragmode: false,\n\t\tlegend: commonLegend,\n\t\timages: chartWatermarkConfigs\n\t}\n}\n\n\nexport const defaultPlotlyChartLayout = (unit?: string) => {\n\treturn unit ? { ...staticPlotlyChartLayout(), yaxis: { title: unit, automargin: true, hoverformat: '.3r' } } : staticPlotlyChartLayout();\n};\n\nexport const defaultWindLayout = {\n\txaxis: { hoverformat: '%d-%m-%Y %H:%M UTC' },\n\tmargin: plotlyTHPMargin,\n\tfont: plotlyFont,\n\tgrid: { rows: 2, columns: 1 },\n\tyaxis: {\n\t\ttitle: {\n\t\t\ttext: \"Wind Speed (m/s)\",\n\t\t\tstandoff: 1,\n\t\t},\n\t\tshowline: true,\n\t\tautomargin: true,\n\t},\n\tyaxis2: {\n\t\ttitle: {\n\t\t\ttext: \"Wind Direction (°)\",\n\t\t\tstandoff: 1,\n\t\t},\n\t\ttickvals: [0, 90, 180, 270, 360],\n\t\tticktext: [\"0\\tN\", \"90\\tE\", \"180\\tS\", \"270\\tW\", \"360\\tN\"],\n\t\trange: [0, 360],\n\t\tshowline: true,\n\t\tautomargin: true,\n\t},\n\tlegend: commonLegend,\n};\n\n// Function to create a threshold line shape\nexport const createThresholdLine = (\n\tthresholdLabel: string,\n\tthresholdValue: number,\n\tcolor = \"gray\",\n): any => ({\n\ttype: \"line\",\n\txref: \"paper\",\n\tyref: \"y\",\n\tx0: 0,\n\tx1: 1,\n\ty0: thresholdValue,\n\ty1: thresholdValue,\n\tname: thresholdLabel,\n\tline: {\n\t\tcolor,\n\t\twidth: 2,\n\t\tdash: \"dash\",\n\t},\n});\n\nexport const addAnnotationsIfNeeded = (\n\tlayout: Layout | any,\n\tthreshold: ThresholdLimits,\n\tisThresholdHidden: boolean,\n) => {\n\tif (!layout.annotations || (threshold.thresholds.lowerThreshold.value === null && threshold.thresholds.upperThreshold.value === null)) {\n\t\tlayout.annotations = [];\n\t}\n\tif (typeof threshold.thresholds.lowerThreshold.value === 'number') {\n\t\tlayout.annotations[0] = {\n\t\t\tx: 1,\n\t\t\ty: threshold.thresholds.lowerThreshold.value,\n\t\t\txref: \"paper\",\n\t\t\tyref: \"y\",\n\t\t\ttext: threshold.thresholds.lowerThreshold.title || \"\",\n\t\t\tshowarrow: false,\n\t\t\tax: 0,\n\t\t\tay: 0,\n\t\t\tvisible: isThresholdHidden,\n\t\t\tyanchor: \"bottom\",\n\t\t\tlayer: 'above',\n\t\t\tfont: {\n\t\t\t\tsize: 12\n\t\t\t},\n\t\t\tbgcolor: 'rgba(255, 255, 255, 0.8)',\n\t\t};\n\t}\n\tif (typeof threshold.thresholds.upperThreshold.value === 'number') {\n\t\tlayout.annotations[1] = {\n\t\t\tx: 1,\n\t\t\ty: threshold.thresholds.upperThreshold.value,\n\t\t\txref: \"paper\",\n\t\t\tyref: \"y\",\n\t\t\ttext: threshold.thresholds.upperThreshold.title || \"\",\n\t\t\tshowarrow: false,\n\t\t\tax: 0,\n\t\t\tay: 0,\n\t\t\tvisible: isThresholdHidden,\n\t\t\tyanchor: \"bottom\",\n\t\t\tlayer: 'above',\n\t\t\tfont: {\n\t\t\t\tsize: 12\n\t\t\t},\n\t\t\tbgcolor: 'rgba(255, 255, 255, 0.8)',\n\t\t};\n\t}\n};\nexport const colDict: ColDict = {\n // total volatile organic compounds\n TVOC: [255, 201, 39],\n // nitrogen\n NO: [252, 129, 129],\n 'NO(μg/m³)': [252, 129, 12],\n NO2: [197, 48, 48],\n 'NO₂(μg/m³)': [197, 48, 48],\n // particulate\n particulatePM1: [141, 165, 237],\n 'PM1(μg/m³)': [30, 105, 255],\n particulatePM25: [65, 105, 225],\n 'PM2.5(μg/m³)': [65, 105, 225],\n particulatePM10: [0, 0, 139],\n 'PM10(μg/m³)': [0, 0, 139],\n PM1: [141, 165, 237],\n PM25: [65, 105, 225],\n PM10: [0, 0, 139],\n // carbon\n CO: [107, 70, 193],\n 'CO(mg/m³)': [107, 70, 193],\n CO2: [68, 51, 122],\n CH4: [183, 148, 244],\n C6H6: [233, 216, 253],\n // ozone\n O3: [0, 181, 216],\n 'O₃(μg/m³)': [0, 181, 216],\n // sulphur\n SO2: [246, 173, 85],\n 'SO₂(μg/m³)': [246, 173, 85],\n H2S: [192, 86, 33],\n 'H₂S(μg/m³)': [192, 86, 33],\n // Amonia\n NH3: [56, 161, 105],\n // others\n Temperature: [255, 45, 85],\n Humidity: [255, 149, 0],\n tempC: [255, 45, 85],\n ambPressure: [13, 129, 254],\n ambHumidity: [255, 149, 0],\n};\n\nexport const getAnnotations = (thresholdProp: { value: number, title: string }, visible: boolean) => {\n\treturn {\n\t\tx: 1,\n\t\ty: thresholdProp.value,\n\t\txref: \"paper\",\n\t\tyref: \"y\",\n\t\ttext: thresholdProp.title || \"\",\n\t\tshowarrow: false,\n\t\tax: 0,\n\t\tay: 0,\n\t\tvisible,\n\t\tyanchor: \"bottom\",\n\t\tlayer: 'above',\n\t\tfont: {\n\t\t\tsize: 12\n\t\t},\n\t\tbgcolor: 'rgba(255, 255, 255, 0.8)',\n\t}\n}\n\nexport const sourceApportionmentPalette = {\n\tNO2: ['#c53030', '#d66e6e', '#e29797', '#eec1c1', '#f8d5d5'],\n\tparticulatePM25: ['#4169e1', '#7a96ea', '#a0b4f0', '#c6d2f6', '#d5defb'],\n};\n","/* Function\nDESC: generateAuth returns the based-64 encoded string required to make protected calls to the Mappair and Zephyr APIs\n*/\nexport const getAuth = () =>\n btoa(`${localStorage.getItem('user')}:${localStorage.getItem('key')}`);\n","module.exports = __webpack_public_path__ + \"static/media/logo-white-text-beta.a5dc51b0.png\";","/* Function\nDESC: General utility functions\n*/\n\nimport { publicPortals } from \"../consts\";\n\nexport function isStringDefinedAndNotEmpty(str: string): boolean {\n return typeof str !== 'undefined' && str !== '';\n}\n\n//function to avoid runtime errors when importing the config below\nexport function getEnvVar(v: string): string {\n const ret = process.env[v];\n\n if (ret === undefined) {\n throw new Error('process.env.' + v + ' is undefined!');\n }\n return ret;\n}\n\nexport function is404(basename: any): boolean {\n const path = window.location.pathname;\n const matchesPath = path.match(/\\w+[^\\/]/)?.input || '';\n const isInternal = basename === 'internal';\n\n const allowedInternalPaths = [\n '/internal', '/internal/',\n '/internal/analysis', '/internal/analysis/',\n '/internal/alerts', '/internal/alerts/',\n '/internal/login', '/internal/login/'\n ];\n\n const isNonPublic = basename && basename !== 'internal' && !publicPortals.includes(basename);\n const isPublic = publicPortals.includes(basename);\n\n const allowedPublicPaths = [\n `/${basename}`, `/${basename}/`,\n `/${basename}/today`, `/${basename}/today/`,\n `/${basename}/analysis`, `/${basename}/analysis/`\n ];\n\n return (isInternal && !allowedInternalPaths.includes(path)) || (isNonPublic) || (isPublic && !allowedPublicPaths.includes(path));\n}","module.exports = \"data:image/png;base64,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\"","var map = {\n\t\"./air_quality_icon.png\": 485,\n\t\"./annual_averages_icon.png\": 488,\n\t\"./close-btn.svg\": 1111,\n\t\"./deviceMap.svg\": 1112,\n\t\"./gasesAverages.svg\": 1113,\n\t\"./gasesChart.svg\": 1114,\n\t\"./hamburger-btn.svg\": 1115,\n\t\"./networkGases.svg\": 1116,\n\t\"./networkMap.svg\": 1117,\n\t\"./networkParticulates.svg\": 1118,\n\t\"./noxSources.svg\": 1119,\n\t\"./particulatesAverages.svg\": 1120,\n\t\"./particulatesChart.svg\": 1121,\n\t\"./pm25Sources.svg\": 1122,\n\t\"./rainfall.svg\": 1123,\n\t\"./real_time_icon.png\": 487,\n\t\"./schools_icon.png\": 486,\n\t\"./smoke-control_icon.png\": 489,\n\t\"./summaryTable.svg\": 1124,\n\t\"./th.svg\": 1125,\n\t\"./wind.svg\": 1126\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1110;","module.exports = __webpack_public_path__ + \"static/media/close-btn.10c480bb.svg\";","module.exports = __webpack_public_path__ + \"static/media/deviceMap.d2f1f095.svg\";","module.exports = __webpack_public_path__ + \"static/media/gasesAverages.850ded3e.svg\";","module.exports = __webpack_public_path__ + \"static/media/gasesChart.c9f80373.svg\";","module.exports = __webpack_public_path__ + \"static/media/hamburger-btn.ba95d4d5.svg\";","module.exports = __webpack_public_path__ + \"static/media/networkGases.010c3a19.svg\";","module.exports = __webpack_public_path__ + \"static/media/networkMap.87bd71e9.svg\";","module.exports = __webpack_public_path__ + \"static/media/networkParticulates.350d83af.svg\";","module.exports = __webpack_public_path__ + \"static/media/noxSources.70bcd484.svg\";","import { SlotOptions, ZephyrHistory, ZephyrHistoryWithId } from \"../interface\";\nimport { slotFinder } from \"./slotFinder\";\n\nconst slotValidator = (newZephyrHistory: ZephyrHistory, unitHistories?: ZephyrHistoryWithId | null): SlotOptions[] => {\n const unitValues: ZephyrHistory[] | null = unitHistories ? Object.values(unitHistories) : null;\n let availableSlots: SlotOptions[] = [];\n if (unitValues && unitValues.length > 0) {\n for (let i = 0; i < unitValues.length; i++) {\n const slots = slotFinder(unitValues[i]);\n for (const [_, value] of Object.entries(unitValues[i])) {\n if (slots) {\n slots.map((v: SlotOptions) => {\n const availableSpeciesArr = getAvailableSpecies(value[v]);\n const availableSlotsArr: any = [];\n availableSpeciesArr?.forEach((s: any) => {\n const speciesData = value[v]![s].data;\n availableSlotsArr.push(...speciesData);\n })\n const isNull = availableSlotsArr?.every((v: number | null) => v === null);\n if (availableSlotsArr && !isNull) {\n if (!availableSlots.includes(v))\n availableSlots.push(v);\n }\n })\n }\n }\n }\n } else if (newZephyrHistory) {\n const slots = slotFinder(newZephyrHistory);\n for (const [_, value] of Object.entries(newZephyrHistory)) {\n if (slots) {\n slots.map((v: SlotOptions) => {\n const availableSpeciesArr = getAvailableSpecies(value[v]);\n const availableSlotsArr: any = [];\n availableSpeciesArr?.forEach((s: any) => {\n const speciesData = value[v]![s].data;\n availableSlotsArr.push(...speciesData);\n })\n const isNull = availableSlotsArr?.every((v: number | null) => v === null);\n if (availableSlotsArr && !isNull) {\n if (!availableSlots.includes(v))\n availableSlots.push(v);\n }\n })\n }\n }\n }\n return availableSlots;\n}\n\n\nexport const getAvailableSpecies = (slot: any) => {\n if (!slot) return null\n const slotKeys = Object.keys(slot);\n return slotKeys.filter((s: string) => {\n if (s !== 'UTS' && s !== 'dateTime' && s !== 'humidity' && s !== 'localDateTime' && s !== 'tempC' && s !== 'latitude' && s !== 'longitude') return s;\n })\n}\n\nexport { slotValidator };\n","module.exports = __webpack_public_path__ + \"static/media/particulatesAverages.6bd0b33c.svg\";","module.exports = __webpack_public_path__ + \"static/media/particulatesChart.83d3b791.svg\";","module.exports = __webpack_public_path__ + \"static/media/pm25Sources.a7ffa2cb.svg\";","module.exports = __webpack_public_path__ + \"static/media/rainfall.5638c12b.svg\";","module.exports = __webpack_public_path__ + \"static/media/summaryTable.2d9c5b5d.svg\";","module.exports = __webpack_public_path__ + \"static/media/th.58ca6e89.svg\";","module.exports = __webpack_public_path__ + \"static/media/wind.ab3f299d.svg\";","// Types Imports=\nimport { SET_AIR_ALERTS } from '../actions/types';\n\n// Type Imports\nimport { AirAlerts } from '../utils/interface';\n\n//State\nconst initState: AirAlerts | null = {\n alerts: [],\n};\n\ninterface SetAirAlerts {\n type: typeof SET_AIR_ALERTS;\n payload: AirAlerts;\n}\n\n// Reducer\nexport default function (state = initState, action: SetAirAlerts) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_AIR_ALERTS:\n return {\n ...state,\n alerts: payload.alerts,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { ALERTS_ON, ALERTS_OFF } from '../actions/types';\n\n// Type Imports\nimport { Agreement } from '../utils/interface';\n\n// Type Safety\ninterface AlertsState {\n on: boolean;\n agreements: any[];\n}\n\ninterface SetAlerts {\n type: typeof ALERTS_ON | typeof ALERTS_OFF;\n payload: Agreement[];\n}\n\n// State\nconst initState: AlertsState = {\n on: false,\n agreements: [],\n};\n\n// Reducer\nexport default function (state = initState, action: SetAlerts) {\n const { type, payload } = action;\n\n switch (type) {\n case ALERTS_ON:\n return {\n ...state,\n on: true,\n agreements: payload,\n };\n\n case ALERTS_OFF:\n return {\n ...state,\n on: false,\n };\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport {\n SET_AQ101_OFF,\n SET_AQ101_ON,\n SET_AQ101_SECTION,\n} from '../actions/types';\n\n// Type Safety\ninterface InitState {\n on: boolean;\n sectionId: string;\n}\n\ninterface SetAQ101 {\n type: typeof SET_AQ101_OFF | typeof SET_AQ101_ON | typeof SET_AQ101_SECTION;\n payload: string;\n}\n\n// State\nconst initState: InitState = { on: false, sectionId: '' };\n\n// Reducer\nexport default function (state = initState, action: SetAQ101) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_AQ101_OFF:\n return { ...state, on: false };\n case SET_AQ101_ON:\n return { ...state, on: true };\n case SET_AQ101_SECTION:\n return { ...state, sectionId: payload };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { OPEN_ASIDE, CLOSE_ASIDE } from '../actions/types';\n\n// Type Safety\ninterface AsideState {\n on: boolean;\n}\n\ninterface Aside {\n type: typeof OPEN_ASIDE | typeof CLOSE_ASIDE;\n payload: boolean;\n}\n\n// State\nconst initState: AsideState = {\n on: true,\n};\n\n// Reducer\nexport default function (state = initState, action: Aside) {\n const { type } = action;\n\n switch (type) {\n case OPEN_ASIDE:\n return {\n on: true,\n };\n\n case CLOSE_ASIDE:\n return {\n on: false,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n AUTH_ERROR,\n LOGIN_FAIL,\n LOGIN_SUCCESS,\n LOGOUT,\n USER_LOADED,\n USERINFO_LOADED,\n SET_MASTER_AUTH_BEARER_TOKEN,\n} from '../actions/types';\n\n// Type Imports\nimport { UserInfo } from '../utils/interface';\n\n// Type Safety\ninterface AuthState {\n isAuthenticated: null | boolean;\n loading: boolean;\n loginFailed: boolean;\n token: null | string;\n user: null | string;\n userInfo: UserInfo;\n bearerToken: null | string;\n}\n\ninterface Auth {\n type:\n | typeof AUTH_ERROR\n | typeof LOGIN_FAIL\n | typeof LOGIN_SUCCESS\n | typeof LOGOUT\n | typeof USER_LOADED\n | typeof USERINFO_LOADED\n | typeof SET_MASTER_AUTH_BEARER_TOKEN;\n payload: { userInfo: UserInfo; user: string; key: string; token: string, bearerToken: string };\n}\n\n// State\nconst initialState: AuthState = {\n isAuthenticated: null,\n loading: true,\n loginFailed: false,\n token: localStorage.getItem('token'),\n user: localStorage.getItem('user'),\n userInfo: {\n appIntro: null,\n authorityLink: '',\n caching: 0,\n info: '',\n isInternal: false,\n isPublic: false,\n logo: null,\n maxLat: 0,\n maxLng: 0,\n minLat: 0,\n minLng: 0,\n projectLink: '',\n showDetailedZephyrInfo: false,\n showSmileyFaces: false,\n subtitle: '',\n startingLat: 0,\n startingLng: 0,\n startingZoom: 10,\n today: false,\n todayCustomInfo: null,\n todaySpecies: null,\n title: '',\n userCustomInfo: { sections: [] },\n userStandardInfo: { sections: [] },\n mappair: false,\n },\n bearerToken: null,\n};\n\n// Reducer\nexport default function (state = initialState, action: Auth) {\n const { type, payload } = action;\n\n switch (type) {\n case USERINFO_LOADED:\n return {\n ...state,\n userInfo: payload.userInfo,\n };\n\n case USER_LOADED:\n return {\n ...state,\n isAuthenticated: true,\n loading: false,\n userInfo: payload.userInfo,\n };\n\n case LOGIN_SUCCESS:\n localStorage.setItem('key', payload.key);\n localStorage.setItem('user', payload.user);\n return {\n ...state,\n ...payload,\n loginFailed: false,\n isAuthenticated: true,\n loading: false,\n };\n case AUTH_ERROR:\n case LOGIN_FAIL:\n return {\n ...state,\n loginFailed: true,\n };\n case LOGOUT:\n localStorage.removeItem('token');\n localStorage.removeItem('key');\n localStorage.removeItem('user');\n localStorage.removeItem('data');\n localStorage.removeItem('isPublic');\n\n return {\n ...state,\n token: null,\n isAuthenticated: false,\n loading: false,\n userInfo: null,\n };\n case SET_MASTER_AUTH_BEARER_TOKEN:\n return {\n ...state,\n bearerToken: payload,\n }\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SET_DATA_CONFIG } from '../actions/types';\n\n// Type Safety\ninterface DataConfig {\n averagingChain: number;\n ctv: string;\n}\n\ninterface SetDataConfig {\n type: typeof SET_DATA_CONFIG;\n payload: DataConfig;\n}\n\n// State\nconst initState: DataConfig = {\n averagingChain: 0,\n ctv: 'proposedMyAirPublic_metAPIOverhaul',\n};\n\n// Reducer\nexport default function (state = initState, action: SetDataConfig) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_DATA_CONFIG:\n return {\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n SET_FEEDBACK,\n SET_FEEDBACK_IDX,\n SET_FEEDBACK_OFF,\n SET_FEEDBACK_ON,\n} from '../actions/types';\nimport { Feedback, FeedbackQuestion } from '../utils/interface';\n\n// Type Safety\ninterface SetAlerts {\n type: typeof SET_FEEDBACK;\n payload: FeedbackQuestion[];\n}\n\n// State\nconst initState: Feedback = {\n idx: 0,\n on: false,\n oneTimeAutomation: true,\n questions: [],\n};\n\n// Reducer\nexport default function (state = initState, action: SetAlerts) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_FEEDBACK_IDX:\n return {\n ...state,\n idx: payload,\n };\n\n case SET_FEEDBACK_OFF:\n return {\n ...state,\n on: false,\n oneTimeAutomation: false,\n };\n\n case SET_FEEDBACK_ON:\n return {\n ...state,\n on: true,\n oneTimeAutomation: false,\n };\n\n case SET_FEEDBACK:\n return {\n ...state,\n questions: payload,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { GET_STYLE_GROUPS } from '../actions/types';\n\n// Type Imports\nimport { Stylegroup } from '../utils/interface';\n\n// Type Safety\ninterface StyleGroups {\n styleGroups: Stylegroup[] | any[];\n}\n\ninterface getStyleGroups {\n type: typeof GET_STYLE_GROUPS;\n payload: Stylegroup[];\n}\n\n// State\nconst initialState: StyleGroups = {\n styleGroups: [],\n};\n\n// Reducer\nexport default function (state = initialState, action: getStyleGroups) {\n const { type, payload } = action;\n\n switch (type) {\n case GET_STYLE_GROUPS:\n return {\n ...state,\n styleGroups: payload,\n };\n default:\n return state;\n }\n}\n","// Types Imports\nimport { GET_AURNS, GET_ZEPHYRS, ADD_ZEPHYRS } from '../actions/types';\n\n// Type Imports\nimport { Zephyr } from '../utils/interface';\n\n// Type Safety\ninterface GetZephyrs {\n loading: boolean;\n zephyrs: Zephyr[];\n}\n\ninterface getZephyrs {\n type: typeof GET_ZEPHYRS;\n payload: Zephyr[];\n}\n\n// State\nconst initialState: GetZephyrs = {\n loading: true,\n zephyrs: [],\n};\n\n// Reducer\nexport default function (state = initialState, action: getZephyrs) {\n const { type, payload } = action;\n\n switch (type) {\n case ADD_ZEPHYRS:\n return {\n ...state,\n zephyrs: [...state.zephyrs, ...payload],\n loading: false,\n };\n case GET_ZEPHYRS:\n return {\n ...state,\n zephyrs: payload,\n loading: false,\n };\n\n case GET_AURNS:\n return {\n ...state,\n zephyrs: [...state.zephyrs, ...payload],\n loading: false,\n };\n\n default:\n return state;\n }\n}\n","// Types Imporrts\nimport {\n GET_ZEPHYR_HISTORICAL_DATA,\n SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n} from '../actions/types';\n\n// Type Imports\nimport { ZephyrHistory } from '../utils/interface';\n\n// Type Safety\ninterface ZephyrHistoricalData {\n zephyrHistory: ZephyrHistory | null;\n loading: boolean | null;\n zType?: number | null;\n isHistoricalDataNull: boolean;\n}\n\ninterface getZephyrHistoricalData {\n type:\n | typeof GET_ZEPHYR_HISTORICAL_DATA\n | typeof SET_ZEPHYR_HISTORICAL_DATA_LOADING;\n payload: {\n data: ZephyrHistory | false | null,\n zType: number | null\n isHistoricalDataNull: boolean,\n };\n}\n\n// State\nconst initialState: ZephyrHistoricalData = {\n zephyrHistory: null,\n loading: null,\n zType: null,\n isHistoricalDataNull: false,\n};\n\n// Reducer\nexport default function (\n state = initialState,\n action: getZephyrHistoricalData,\n) {\n const { type, payload } = action;\n\n switch (type) {\n case GET_ZEPHYR_HISTORICAL_DATA:\n return {\n ...state,\n zephyrHistory: payload.data,\n zType: payload.zType,\n isHistoricalDataNull: payload.isHistoricalDataNull\n };\n case SET_ZEPHYR_HISTORICAL_DATA_LOADING:\n return {\n ...state,\n loading: payload,\n };\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n LOADING_INIT_APP_OFF,\n LOADING_INIT_APP_ON,\n LOADING_INIT_APP_DATA_OFF,\n LOADING_INIT_APP_DATA_ON,\n LOADING_INIT_APP_THIRDPARTY_DATA_OFF,\n LOADING_INIT_APP_THIRDPARTY_DATA_ON,\n} from '../actions/types';\n\n// Type Imports\nimport { Loading } from '../utils/interface';\n\n// Type Safety\ninterface LoadingReducer {\n type:\n | typeof LOADING_INIT_APP_OFF\n | typeof LOADING_INIT_APP_ON\n | typeof LOADING_INIT_APP_DATA_OFF\n | typeof LOADING_INIT_APP_DATA_ON\n | typeof LOADING_INIT_APP_THIRDPARTY_DATA_OFF\n | typeof LOADING_INIT_APP_THIRDPARTY_DATA_ON;\n}\n\n// State\nconst initState: Loading = {\n aurnLastHour: false,\n initApp: false,\n zephyrLastHour: false,\n};\n\n// Reducer\nexport default function (state = initState, action: LoadingReducer) {\n const { type } = action;\n\n switch (type) {\n case LOADING_INIT_APP_OFF:\n return {\n ...state,\n initApp: false,\n };\n\n case LOADING_INIT_APP_ON:\n return {\n ...state,\n initApp: true,\n };\n\n case LOADING_INIT_APP_DATA_OFF:\n return {\n ...state,\n zephyrLastHour: false,\n };\n\n case LOADING_INIT_APP_DATA_ON:\n return {\n ...state,\n zephyrLastHour: true,\n };\n\n case LOADING_INIT_APP_THIRDPARTY_DATA_OFF:\n return {\n ...state,\n aurnLastHour: false,\n };\n\n case LOADING_INIT_APP_THIRDPARTY_DATA_ON:\n return {\n ...state,\n aurnLastHour: true,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SHOW_MAP_AIR_FILTERS, SET_SELECTED_FILTER } from '../actions/types';\n\n// Type Imports\nimport { MappAirFilters } from '../utils/interface';\n\ninterface mappAirFilters {\n type: typeof SHOW_MAP_AIR_FILTERS | typeof SET_SELECTED_FILTER;\n payload: boolean | string[];\n}\n\n// State\nconst initialState: MappAirFilters = {\n showMappAirFilters: false,\n selectedFilters: [\n // { name: 'zephyr', showAllLabels: false, showSelectedLabel: true },\n { name: 'virtual', showAllLabels: true, showSelectedLabel: true },\n ],\n};\n\n// Reducer\nexport default function (state = initialState, action: mappAirFilters) {\n const { type, payload } = action;\n\n switch (type) {\n case SHOW_MAP_AIR_FILTERS:\n return {\n ...state,\n showMappAirFilters: payload ? payload : !state.showMappAirFilters,\n };\n case SET_SELECTED_FILTER:\n return {\n ...state,\n selectedFilters: action.payload,\n };\n default:\n return state;\n }\n}\n","// Types Imports\nimport { MAPS_LOCATION_LOADED } from '../actions/types';\n\n// Type Safety\ninterface MapsLocationLoaded {\n mapsLoaded: boolean;\n}\n\ninterface mapLocationLoaded {\n type: typeof MAPS_LOCATION_LOADED;\n payload: boolean;\n}\n\n// State\nconst initialState: MapsLocationLoaded = {\n mapsLoaded: false,\n};\n\n// Reducer\nexport default function (state = initialState, action: mapLocationLoaded) {\n const { type, payload } = action;\n\n switch (type) {\n case MAPS_LOCATION_LOADED:\n return {\n ...state,\n mapsLoaded: payload,\n };\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n SET_CONTACT_MODAL_ON,\n SET_DATA_MODAL_ON,\n SET_MAPPAIR_QUOTE_MODAL_ON,\n SET_MAPPAIR_TIMESERIES_MODAL_ON,\n SET_MODALS_OFF,\n SET_ZEPHYR_QUOTE_MODAL_ON,\n} from '../actions/types';\n\n// Type Imports\nimport { Modal } from '../utils/interface';\n\n// Type Safety\ninterface ModalReducer {\n type:\n | typeof SET_CONTACT_MODAL_ON\n | typeof SET_DATA_MODAL_ON\n | typeof SET_MAPPAIR_QUOTE_MODAL_ON\n | typeof SET_MAPPAIR_TIMESERIES_MODAL_ON\n | typeof SET_MODALS_OFF\n | typeof SET_ZEPHYR_QUOTE_MODAL_ON;\n}\n// State\nconst initState: Modal = {\n contact: false,\n data: false,\n mappairQuote: false,\n mappairTimeseries: false,\n zephyrQuote: false,\n};\n\n// Reducer\nexport default function (state = initState, action: ModalReducer) {\n const { type } = action;\n\n switch (type) {\n case SET_CONTACT_MODAL_ON:\n return {\n ...initState,\n contact: true,\n };\n\n case SET_DATA_MODAL_ON:\n return {\n ...initState,\n data: true,\n };\n\n case SET_MAPPAIR_QUOTE_MODAL_ON:\n return {\n ...initState,\n mappairQuote: true,\n };\n\n case SET_MAPPAIR_TIMESERIES_MODAL_ON:\n return {\n ...initState,\n mappairTimeseries: true,\n };\n\n case SET_MODALS_OFF:\n return initState;\n\n case SET_ZEPHYR_QUOTE_MODAL_ON:\n return {\n ...initState,\n zephyrQuote: true,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SET_PUBLIC_ADVICE } from '../actions/types';\n\n// Type Imports\nimport { PublicAdvice } from '../utils/interface';\n\n// Type Safety\ninterface PublicAdviceConfig {\n advice: PublicAdvice[][];\n}\n\ninterface SetPublicAdviceConfig {\n type: typeof SET_PUBLIC_ADVICE;\n payload: PublicAdvice[][];\n}\n\n// State\nconst initState: PublicAdviceConfig = {\n advice: [],\n};\n\n// Reducer\nexport default function (state = initState, action: SetPublicAdviceConfig) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_PUBLIC_ADVICE:\n return {\n ...state,\n advice: payload,\n };\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_QUERY_STRING_PARAMS } from '../actions/types';\n\nimport { UrlQueryStringParams } from '../utils/interface';\n\n// Type Safety\ninterface SetQueryStringParams {\n type: typeof SET_QUERY_STRING_PARAMS;\n payload: UrlQueryStringParams;\n}\n\n// State\nconst initState: UrlQueryStringParams = {\n ctv: '',\n diagnostics: '',\n};\n\n// Reducer\nexport default function (state = initState, action: SetQueryStringParams) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_QUERY_STRING_PARAMS:\n return {\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n CHANGE_OVERLAY_LAYER,\n CHANGE_OVERLAY_OPACITY,\n SET_MAPPAIR_POINT_MODE_ON,\n SET_MAPPAIR_POINT_MODE_OFF,\n SET_ANNUAL_AVERAGE,\n SHOW_AQMA_LAYER,\n SHOW_OVERLAY_LAYER,\n SHOW_SATELLITE_LAYER,\n SHOW_OSM_LAYER,\n SHOW_SCHOOLS_LAYER,\n SHOW_AA_LAYER,\n SHOW_SMOKE_CONTROL_ZONES,\n} from '../actions/types';\n\n// Type Imports\nimport { ShowAQMALayer } from '../utils/interface';\n\n// Type Safety\ninterface showAQMALayer {\n type:\n | typeof CHANGE_OVERLAY_LAYER\n | typeof CHANGE_OVERLAY_OPACITY\n | typeof SET_MAPPAIR_POINT_MODE_OFF\n | typeof SET_MAPPAIR_POINT_MODE_ON\n | typeof SHOW_AQMA_LAYER\n | typeof SHOW_OVERLAY_LAYER\n | typeof SHOW_SATELLITE_LAYER\n | typeof SHOW_OSM_LAYER\n | typeof SHOW_SCHOOLS_LAYER\n | typeof SHOW_SMOKE_CONTROL_ZONES\n | typeof SHOW_AA_LAYER\n | typeof SET_ANNUAL_AVERAGE;\n payload: string | number | any;\n}\n\n// State\nconst initialState: ShowAQMALayer = {\n opacity: 65,\n overlay: '',\n mappairPointModeOn: false,\n showAQMALayer: false,\n showSchoolsLayer: false,\n showSmokeControlZones: false,\n showOverlayLayer: false,\n showSatelliteLayer: false,\n showOSM: false,\n showAALayer: false,\n annualAverage: null,\n};\n\n// Reducer\nexport default function (state = initialState, action: showAQMALayer) {\n const { type, payload } = action;\n\n switch (type) {\n case CHANGE_OVERLAY_OPACITY:\n return {\n ...state,\n opacity: payload,\n };\n\n case CHANGE_OVERLAY_LAYER:\n return {\n ...state,\n overlay: payload,\n };\n\n case SET_MAPPAIR_POINT_MODE_ON:\n return {\n ...state,\n mappairPointModeOn: true,\n };\n\n case SET_MAPPAIR_POINT_MODE_OFF:\n return {\n ...state,\n mappairPointModeOn: false,\n };\n\n case SHOW_AQMA_LAYER:\n return {\n ...state,\n showAQMALayer: !state.showAQMALayer,\n };\n\n case SHOW_SCHOOLS_LAYER:\n return {\n ...state,\n showSchoolsLayer: !state.showSchoolsLayer,\n };\n\n case SHOW_SMOKE_CONTROL_ZONES:\n return {\n ...state,\n showSmokeControlZones: !state.showSmokeControlZones,\n };\n\n case SHOW_OVERLAY_LAYER:\n return {\n ...state,\n showOverlayLayer: payload ? payload : !state.showOverlayLayer,\n };\n\n case SHOW_SATELLITE_LAYER:\n return {\n ...state,\n showSatelliteLayer: !state.showSatelliteLayer,\n };\n\n case SHOW_OSM_LAYER:\n return {\n ...state,\n showOSM: !state.showOSM,\n };\n\n case SHOW_AA_LAYER:\n return {\n ...state,\n showAALayer: payload ? payload : !state.showAALayer,\n };\n\n case SET_ANNUAL_AVERAGE:\n return {\n ...state,\n annualAverage: payload,\n };\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_AVERAGING_PERIODS } from '../actions/types';\n\n// Types Imports\nimport { AveragingPeriods } from '../utils/interface';\n\n// Type Safety\ninterface SetAveragingPeriods {\n type: typeof SET_AVERAGING_PERIODS;\n payload: AveragingPeriods;\n}\n\n// State\nconst initState: AveragingPeriods = { periods: [] };\n\n// Reducer\nexport default function (state = initState, action: SetAveragingPeriods) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_AVERAGING_PERIODS:\n return payload;\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_DISPLAY_CONFIG } from '../actions/types';\n\n// Type Safety\ninterface DisplayConfig {\n tabs: {\n group: string;\n species: {\n label: string;\n HTMLLabel: string;\n HTMLUnitLabel: string;\n dataIdentifier: string;\n }[];\n }[];\n}\n\ninterface SetDisplayConfigAction {\n type: typeof SET_DISPLAY_CONFIG;\n payload: DisplayConfig;\n}\n\n// State\n/*TODO: Fix this to the DisplayConfig in interface.ts*/\nconst initState: DisplayConfig = {\n tabs: [\n {\n group: '',\n species: [\n {\n label: '',\n HTMLLabel: '',\n HTMLUnitLabel: '',\n dataIdentifier: '',\n },\n ],\n },\n ],\n};\n\n// Reducer\nexport default function (state = initState, action: SetDisplayConfigAction) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_DISPLAY_CONFIG:\n return {\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","// Const Imports\nimport { defaultLocation } from '../utils/consts';\n\n// Type Imports\nimport { LocationCoordinates } from '../utils/interface';\n\n// Types Imports\nimport { SET_LOCATION, SET_UNIT_LOCATION } from '../actions/types';\n\n// Type Safety\ninterface SetLocation {\n location: LocationCoordinates;\n}\n\ninterface setLocation {\n type: typeof SET_LOCATION | typeof SET_UNIT_LOCATION;\n payload: LocationCoordinates;\n}\n\n// State\nconst initialState: SetLocation = {\n location: defaultLocation,\n};\n\n// Reducer\nexport default function (state = initialState, action: setLocation) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_LOCATION:\n return {\n ...state,\n location: payload,\n };\n case SET_UNIT_LOCATION:\n return {\n ...state,\n location: payload,\n };\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SET_OVERLAYS } from '../actions/types';\n\n// Type Improts\nimport { Overlays } from '../utils/interface';\n\n// Type Safety\ninterface SetOverlays {\n type: typeof SET_OVERLAYS;\n payload: Overlays;\n}\n\n// State\nconst initState: Overlays = [{ name: '', nameHTML: '' }];\n\n// Reducer\nexport default function (state = initState, action: SetOverlays) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_OVERLAYS:\n return payload;\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SET_ACTIVE_THRESHOLD } from '../actions/types';\n\n// Type Safety\ninterface ThresholdTab {\n tab: string;\n}\n\ninterface setThresholdTab {\n type: typeof SET_ACTIVE_THRESHOLD;\n payload: string;\n}\n\n// State\nconst initialState: ThresholdTab = {\n tab: '',\n};\n\n// Reducer\nexport default function (state = initialState, action: setThresholdTab) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_ACTIVE_THRESHOLD:\n return {\n ...state,\n tab: payload,\n };\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_TIME_PERIODS } from '../actions/types';\n\n// Types Imports\nimport { TimePeriods } from '../utils/interface';\n\n// Type Safety\ninterface SetTimePeriods {\n type: typeof SET_TIME_PERIODS;\n payload: TimePeriods;\n}\n\n// State\nconst initState: TimePeriods = { periods: [] };\n\n// Reducer\nexport default function (state = initState, action: SetTimePeriods) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_TIME_PERIODS:\n return payload;\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_USER_CONFIG } from '../actions/types';\n\n// Type Safety\ninterface UserConfig {\n showTour: boolean;\n}\n\ninterface SetUserConfig {\n type: typeof SET_USER_CONFIG;\n payload: UserConfig;\n}\n\n// State\nconst initState: UserConfig = {\n showTour: false,\n};\n\n// Reducer\nexport default function (state = initState, action: SetUserConfig) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_USER_CONFIG:\n return {\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_VERSIONS } from '../actions/types';\n\n// Type Safety\ninterface SetVersions {\n type: typeof SET_VERSIONS;\n payload: string[];\n}\n\n// State\nconst initState: string[] = [];\n\n// Reducer\nexport default function (state = initState, action: SetVersions) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_VERSIONS:\n return payload;\n\n default:\n return state;\n }\n}\n","import {\n AppIntroModelContent,\n HeaderContent,\n AQColourscaleContent,\n AsideOverlaysContentPublic,\n AsideOverlaysContent,\n DataTimePeriodOptionsContent,\n DataTimeAveragingOptionsContent,\n DataChartHeaderContent,\n TodayContent,\n naeiCRLink,\n osmCRLink,\n publicCRLink,\n mapboxCRLink,\n mapboxImproveLink,\n maxarCRLink,\n routePaths,\n annualAvgtext,\n customTimePeriod,\n aqlOtherTab,\n AirAlertsConfiguratorContent,\n AirAlertsOverviewContent,\n AirQuality101Content,\n AQLatestDataContent,\n AQOtherContent,\n AQModelDataContent,\n AQSAContent,\n AQTemporalContent,\n AQUnitContent,\n AQWindContent,\n AsideContent,\n AsidePromptContent,\n AsideUnitContent,\n PermissionCookieBannerContent,\n DataAQSummaryContent,\n DataChartDisclaimerContent,\n DataCustomDateContent,\n dataDiagnosticsModalContent,\n DataDownloadButtonContent,\n DataUnitsContent,\n DownloadModalContent,\n FeedbackQuestionsContent,\n FeedbackTagContent,\n HeaderContactModalContent,\n AddZephyrModalContent,\n RemoveZephyrModalContent,\n headerVersionHistoryModalContent,\n loginContent,\n MappairQuoteModalContent,\n LocationSearchContent,\n VersionLatestModalContent,\n ZephyrQuoteModalContent,\n WiFiCredentialsContent,\n maptilerCRLink,\n} from '../../utils/consts';\n\nconst TRANSLATIONS_EN = {\n AppIntroButton: AppIntroModelContent.AppIntroButton,\n // #region HeaderContent\n AirQuality101Title: HeaderContent.AirQuality101Title,\n AnalyticsHeader: HeaderContent.AnalyticsHeader,\n AlertsHeader: HeaderContent.AlertsHeader,\n FleetManagementHeader: HeaderContent.FleetManagementHeader,\n DataAnalyticsHeader: HeaderContent.DataAnalyticsHeader,\n ContactLinkTitle: HeaderContent.ContactLinkTitle,\n CouncilProjectTitle: HeaderContent.CouncilProjectTitle,\n DataHeader: HeaderContent.DataHeader,\n DefaultHeaderTitle: HeaderContent.DefaultHeaderTitle,\n HelpHeader: HeaderContent.HelpHeader,\n LoadingAURNHeader: HeaderContent.LoadingAURNHeader,\n LoadingZephyrHeader: HeaderContent.LoadingZephyrHeader,\n LocationHeader: HeaderContent.LocationHeader,\n LocationHeaderPublic: HeaderContent.LocationHeaderPublic,\n LogoutLinkTitle: HeaderContent.LogoutLinkTitle,\n MappairUpgradePrompt: HeaderContent.MappairUpgradePrompt,\n MissingOverlayEnd: HeaderContent.MissingOverlayEnd,\n MissingOverlayIntro: HeaderContent.MissingOverlayIntro,\n MissingOverlayMid: HeaderContent.MissingOverlayMid,\n PrivacyLinkTitle: HeaderContent.PrivacyLinkTitle,\n ResourcesLinkTitle: HeaderContent.ResourcesLinkTitle,\n SourceEmissionTooltipIntro: HeaderContent.SourceEmissionTooltipIntro,\n SourceEmissionTooltipEnd: HeaderContent.SourceEmissionTooltipEnd,\n SourceEmissionTooltipMissingSpecies:\n HeaderContent.SourceEmissionTooltipMissingSpecies,\n SourceEmissionTooltipSelectedIntro:\n HeaderContent.SourceEmissionTooltipSelectedIntro,\n SourceEmissionTooltipSelectedEnd:\n HeaderContent.SourceEmissionTooltipSelectedEnd,\n SourcesSubHeader: HeaderContent.SourcesSubHeader,\n SpeciesSubHeader: HeaderContent.SpeciesSubHeader,\n TodayTitle: HeaderContent.TodayTitle,\n TooltipMarkerContent: HeaderContent.TooltipMarkerContent,\n TourLinkTitle: HeaderContent.TourLinkTitle,\n TutorialLinkTitle: HeaderContent.TutorialLinkTitle,\n VersionLinkTitle: HeaderContent.VersionLinkTitle,\n FeedbackPrompt: HeaderContent.FeedbackPrompt,\n // #endregion\n\n // #region AQColourscaleContent\n AQCButton: AQColourscaleContent.AQCButton,\n AQCButtonPublic: AQColourscaleContent.AQCButtonPublic,\n // #endregion\n\n OverlaysAQMA: AsideOverlaysContent.OverlaysAQMA,\n OverlaysSchools: AsideOverlaysContent.OverlaysSchools,\n OverlaysUKSmokeControlZones: AsideOverlaysContent.OverlaysUKSmokeControlZones,\n OverlaysAURN: AsideOverlaysContent.OverlaysAURN,\n OverlaysHeader: AsideOverlaysContent.OverlaysHeader,\n OverlaysDefault: AsideOverlaysContent.OverlaysDefault,\n OverlaysMappair: AsideOverlaysContent.OverlaysMappair,\n OverlaysRemoveAll: AsideOverlaysContent.OverlaysRemoveAll,\n OverlaysSatellite: AsideOverlaysContent.OverlaysSatellite,\n OverlaysOSM: AsideOverlaysContent.OverlaysOSM,\n OverlaysShowAll: AsideOverlaysContent.OverlaysShowAll,\n OverlaysZephyrs: AsideOverlaysContent.OverlaysZephyrs,\n MapDetails: AsideOverlaysContent.MapDetails,\n MapTypes: AsideOverlaysContent.MapTypes,\n OverlaysAA: AsideOverlaysContent.OverlaysAA,\n ModelLayers: AsideOverlaysContent.ModelLayers,\n ChooseYear: AsideOverlaysContent.ChooseYear,\n BaseMaps: AsideOverlaysContent.BaseMaps,\n //\n OverlaysMappairContentPublic: AsideOverlaysContentPublic.OverlaysMappair,\n OverlaysAQMAContentPublic: AsideOverlaysContentPublic.OverlaysAQMA,\n OverlaysSchoolsContentPublic: AsideOverlaysContentPublic.OverlaysSchools,\n OverlaysUKSmokeControlZonesPublic: AsideOverlaysContentPublic.OverlaysUKSmokeControlZones,\n OverlaysHeaderContentPublic: AsideOverlaysContentPublic.OverlaysHeader,\n OverlaysDefaultContentPublic: AsideOverlaysContentPublic.OverlaysDefault,\n OverlaysAAContentPublic: AsideOverlaysContent.OverlaysAA,\n //\n DataPOHeader: DataTimePeriodOptionsContent.DataPOHeader,\n DataPOSubheader: DataTimePeriodOptionsContent.DataPOSubheader,\n //\n DataTAHeader: DataTimeAveragingOptionsContent.DataTAHeader,\n DataTASubheader: DataTimeAveragingOptionsContent.DataTASubheader,\n //\n DataChartHeaderTzPrefix: DataChartHeaderContent.DataChartHeaderTzPrefix,\n DataChartHeaderTzUTC: DataChartHeaderContent.DataChartHeaderTzUTC,\n DataChartHeaderLoading: DataChartHeaderContent.DataChartHeaderLoading,\n DataChartHeaderNull: DataChartHeaderContent.DataChartHeaderNull,\n DataChartSomeTimedOut: DataChartHeaderContent.DataChartSomeTimedOut,\n DataChartAllTimedOut: DataChartHeaderContent.DataChartAllTimedOut,\n ZoomResetButton: DataChartHeaderContent.ZoomResetButton,\n vZephyrLoadingMsg: DataChartHeaderContent.vZephyrLoadingMsg,\n DataChart_240: DataChartHeaderContent.DataChart_240,\n DataChart_400: DataChartHeaderContent.DataChart_400,\n DataChart_401: DataChartHeaderContent.DataChart_401,\n DataChart_403: DataChartHeaderContent.DataChart_403,\n DataChart_404: DataChartHeaderContent.DataChart_404,\n DataChart_429: DataChartHeaderContent.DataChart_429,\n DataChart_500: DataChartHeaderContent.DataChart_500,\n\n //\n AdviceHeader: TodayContent.AdviceHeader,\n BehaviourHeader: TodayContent.BehaviourHeader,\n CloseModal: TodayContent.CloseModal,\n ForecastHeader: TodayContent.ForecastHeader,\n GeneralAdviceHeader: TodayContent.GeneralAdviceHeader,\n HealthAdviceHeader: TodayContent.HealthAdviceHeader,\n HumidityHeader: TodayContent.HumidityHeader,\n PollenHeader: TodayContent.PollenHeader,\n PollutionHeader: TodayContent.PollutionHeader,\n SensitiveAdviceHeader: TodayContent.SensitiveAdviceHeader,\n TempHeader: TodayContent.TempHeader,\n WoodBurningHeader: TodayContent.WoodBurningHeader,\n //\n Low: TodayContent.Low,\n High: TodayContent.High,\n\n // #region Copyright links and statements\n naeiCRLink: naeiCRLink.content,\n osmCRLink: osmCRLink.content,\n maptilerCRLink: maptilerCRLink.content,\n publicCRLink: publicCRLink.content,\n mapboxCRLink: mapboxCRLink.content,\n mapboxImproveLink: mapboxImproveLink.content,\n maxarCRLink: maxarCRLink.content,\n routePaths: routePaths.content,\n // #endregion\n\n // #region\n // Not sure if we need to translate route path, will cause lots of breakage\n alerts: routePaths.alerts,\n analytics: routePaths.analytics,\n app: routePaths.app,\n data: routePaths.data,\n login: routePaths.login,\n today: routePaths.today,\n // #endregion\n\n // #region annualAvgtext\n tableRowforYr: annualAvgtext.tableRowforYr,\n tabContentTitleForChartPrefix: annualAvgtext.tabContentTitleForChartPrefix,\n tabContentTitleForChartPostfix: annualAvgtext.tabContentTitleForChartPostfix,\n tabContentTitleForListPrefix: annualAvgtext.tabContentTitleForListPrefix,\n tabContentTitleForListPostfix: annualAvgtext.tabContentTitleForListPostfix,\n nodata: annualAvgtext.nodata,\n AAChartHeader: annualAvgtext.AAChartHeader,\n AADownloadData: annualAvgtext.AADownloadData,\n AASeeMore: annualAvgtext.AASeeMore,\n annualAvgNotAuthorised: annualAvgtext.annualAvgNotAuthorised,\n annualAvgAccordionTitle: annualAvgtext.annualAvgAccordionTitle,\n // #endregion\n\n aqlOtherTab: aqlOtherTab.label,\n customTimePeriod: customTimePeriod.labelHTML,\n\n // #region AirAlertsConfiguratorContent\n AACValidationFailure: AirAlertsConfiguratorContent.AACValidationFailure,\n AACDataSourceHeader: AirAlertsConfiguratorContent.AACDataSourceHeader,\n AACDataSourceSelection: AirAlertsConfiguratorContent.AACDataSourceSelection,\n AACValidationFailureSources:\n AirAlertsConfiguratorContent.AACValidationFailureSources,\n AACAlertDataHeader: AirAlertsConfiguratorContent.AACAlertDataHeader,\n AACGasColumn: AirAlertsConfiguratorContent.AACGasColumn,\n AACThresholdColumn: AirAlertsConfiguratorContent.AACThresholdColumn,\n AACAlertColumn: AirAlertsConfiguratorContent.AACAlertColumn,\n AACPeriodColumn: AirAlertsConfiguratorContent.AACPeriodColumn,\n AACRepeatColumn: AirAlertsConfiguratorContent.AACRepeatColumn,\n AACUnitStatusSelection: AirAlertsConfiguratorContent.AACUnitStatusSelection,\n AACValidationFailureData:\n AirAlertsConfiguratorContent.AACValidationFailureData,\n AACOutputHeader: AirAlertsConfiguratorContent.AACOutputHeader,\n AACOutputName: AirAlertsConfiguratorContent.AACOutputName,\n AACValidationFailureName:\n AirAlertsConfiguratorContent.AACValidationFailureName,\n AACOuputEmail: AirAlertsConfiguratorContent.AACOuputEmail,\n AACOutputPhoneNumber: AirAlertsConfiguratorContent.AACOutputPhoneNumber,\n AACValidationFailureEmail:\n AirAlertsConfiguratorContent.AACValidationFailureEmail,\n AACValidationFailurePhoneNumber: AirAlertsConfiguratorContent.AACValidationFailurePhoneNumber,\n AACValidationFailureCommunication: AirAlertsConfiguratorContent.AACValidationFailureCommunication,\n // #endregion\n\n // #region AirAlertsOverviewContent\n AAOHeader: AirAlertsOverviewContent.AAOHeader,\n AAOCreateNew: AirAlertsOverviewContent.AAOCreateNew,\n AAONameColumn: AirAlertsOverviewContent.AAONameColumn,\n AAOAlertDataColumn: AirAlertsOverviewContent.AAOAlertDataColumn,\n AAOStatusColumn: AirAlertsOverviewContent.AAOStatusColumn,\n AAOActionscolumn: AirAlertsOverviewContent.AAOActionscolumn,\n AAONoAlerts: AirAlertsOverviewContent.AAONoAlerts,\n // #endregion\n\n AQ101header: AirQuality101Content.AQ101header,\n\n // #region AQLatestDataContent\n AQAurnLabel: AQLatestDataContent.AQAurnLabel,\n AQLatestDataButton: AQLatestDataContent.AQLatestDataButton,\n AQZephyrLabel: AQLatestDataContent.AQZephyrLabel,\n AQVZephyrLabel: AQLatestDataContent.AQVZephyrLabel,\n // #endregion\n\n // #region AQOtherContent\n AQDisclaimerGFS: AQOtherContent.AQDisclaimerGFS,\n AQDisclaimerMet: AQOtherContent.AQDisclaimerMet,\n AQGFSDesc: AQOtherContent.AQGFSDesc,\n AQMetDesc: AQOtherContent.AQMetDesc,\n AQPeriodGFS: AQOtherContent.AQPeriodGFS,\n AQPeriodMet: AQOtherContent.AQPeriodMet,\n // #endregion\n\n // #region AQModelDataContent\n AQModelDataButton: AQModelDataContent.AQModelDataButton,\n AQModelDataLoading: AQModelDataContent.AQModelDataLoading,\n AQModelDataClickPrompt: AQModelDataContent.AQModelDataClickPrompt,\n AQModelNoData: AQModelDataContent.AQModelNoData,\n // #endregion\n\n // #region AQSAContent\n AQTotal: AQSAContent.AQTotal,\n AQUnits: AQSAContent.AQUnits,\n // #endregion\n\n // #region AQTemporalContent\n AQChartHeader: AQTemporalContent.AQChartHeader,\n AQCloseModal: AQTemporalContent.AQCloseModal,\n AQDownloadData: AQTemporalContent.AQDownloadData,\n // #endregion\n\n // #region AQUnitContent\n AQSummaryHeader: AQUnitContent.AQSummaryHeader,\n AQPeriod: AQUnitContent.AQPeriod,\n AQNoData: AQUnitContent.AQNoData,\n AQNoOwnership: AQUnitContent.AQNoOwnership,\n // #endregion\n\n // #region AQWindContent\n AQChartHeaderOne: AQWindContent.AQChartHeaderOne,\n AQChartSubheader: AQWindContent.AQChartSubheader,\n // #endregion\n\n // #region AsideContent\n AsideHeader: AsideContent.AsideHeader,\n PublicAsideHeader: AsideContent.PublicAsideHeader,\n // #endregion\n\n // #region AsidePromptContent\n AsideButtonContent: AsidePromptContent.AsideButtonContent,\n AsidePromptExplainer: AsidePromptContent.AsidePromptExplainer,\n AsideAnalyticsPrompt: AsidePromptContent.AsideAnalyticsPrompt,\n AsideAnalyticsButton: AsidePromptContent.AsideAnalyticsButton,\n // #endregion\n\n // #region AsideUnitContent\n AsideUnitBatteryCharging: AsideUnitContent.AsideUnitBatteryCharging,\n AsideUnitBatteryChargingDesc: AsideUnitContent.AsideUnitBatteryChargingDesc,\n AsideUnitBatteryDischarging: AsideUnitContent.AsideUnitBatteryDischarging,\n AsideUnitBatteryDischargingDesc:\n AsideUnitContent.AsideUnitBatteryDischargingDesc,\n AsideUnitBatteryExplainer: AsideUnitContent.AsideUnitBatteryExplainer,\n AsideUnitBatteryFlat: AsideUnitContent.AsideUnitBatteryFlat,\n AsideUnitBatteryFlatDesc: AsideUnitContent.AsideUnitBatteryFlatDesc,\n AsideUnitNoBattery: AsideUnitContent.AsideUnitNoBattery,\n AsideUnitBatteryPower: AsideUnitContent.AsideUnitBatteryPower,\n AsideUnitCartridgeBlank: AsideUnitContent.AsideUnitCartridgeBlank,\n AsideUnitCartridgeExplainerStandard:\n AsideUnitContent.AsideUnitCartridgeExplainerStandard,\n AsideUnitCartridgeExplainerEnhanced:\n AsideUnitContent.AsideUnitCartridgeExplainerEnhanced,\n AsideUnitCartridgeExplainerEnhancedPlus:\n AsideUnitContent.AsideUnitCartridgeExplainerEnhancedPlus,\n AsideUnitCartridgeExplainderEnhancedPP:\n AsideUnitContent.AsideUnitCartridgeExplainderEnhancedPP,\n AsideUnitConnectionGSM: AsideUnitContent.AsideUnitConnectionGSM,\n AsideUnitConnectionNetwork: AsideUnitContent.AsideUnitConnectionNetwork,\n AsideUnitLocationHeader: AsideUnitContent.AsideUnitLocationHeader,\n AsideUnitUpdatedHeader: AsideUnitContent.AsideUnitUpdatedHeader,\n AsideUnitIdHeader: AsideUnitContent.AsideUnitIdHeader,\n AsideUnitStatusHeader: AsideUnitContent.AsideUnitStatusHeader,\n AsideUnitFrequencyHeader: AsideUnitContent.AsideUnitFrequencyHeader,\n AsideUnitCertificateDownloadButton:\n AsideUnitContent.AsideUnitCertificateDownloadButton,\n AsideUnitConnectionExplainer: AsideUnitContent.AsideUnitConnectionExplainer,\n AsideUnitConnectionWarning: AsideUnitContent.AsideUnitConnectionWarning,\n AsideUnitConnectionAlert: AsideUnitContent.AsideUnitConnectionAlert,\n AsideUnitEditName: AsideUnitContent.AsideUnitEditName,\n VZUnitDeleteName: AsideUnitContent.VZUnitDeleteName,\n AsideUnitEditNetwork: AsideUnitContent.AsideUnitEditNetwork,\n AsideUnitDeleteName: AsideUnitContent.AsideUnitDeleteName,\n AsideUnitOwnership: AsideUnitContent.AsideUnitOwnership,\n AsideUnitSamplingData: AsideUnitContent.AsideUnitSamplingData,\n AsideUnitSamplingExplainerHigh:\n AsideUnitContent.AsideUnitSamplingExplainerHigh,\n AsideUnitSamplingExplainerMed: AsideUnitContent.AsideUnitSamplingExplainerMed,\n AsideUnitSamplingExplainerLow: AsideUnitContent.AsideUnitSamplingExplainerLow,\n AsideUnitSamplingOff: AsideUnitContent.AsideUnitSamplingOff,\n AsideUnitSamplingOn: AsideUnitContent.AsideUnitSamplingOn,\n AsideUnitStatus: AsideUnitContent.AsideUnitStatus,\n AsideUnitStatusRetired: AsideUnitContent.AsideUnitStatusRetired,\n AsideUnitType: AsideUnitContent.AsideUnitType,\n AsideUnitTypeAURN: AsideUnitContent.AsideUnitTypeAURN,\n AsideUnitTypeVirtualZephyr: AsideUnitContent.AsideUnitTypeVirtualZephyr,\n AsideUnitTypeZephyr: AsideUnitContent.AsideUnitTypeZephyr,\n // #endregion\n\n EditWifiCredentials: WiFiCredentialsContent.EditWifiCredentials,\n EditWifiCloseModal: WiFiCredentialsContent.EditWifiCloseModal,\n EditWifiSaveButton: WiFiCredentialsContent.EditWifiSaveButton,\n StaticWiFiCredentials: WiFiCredentialsContent.StaticWiFiCredentials,\n DynamicWiFiCredentials: WiFiCredentialsContent.DynamicWiFiCredentials,\n NetworkNameLabel: WiFiCredentialsContent.NetworkNameLabel,\n NetworkPasswordLabel: WiFiCredentialsContent.NetworkPasswordLabel,\n NetworkCredentialsError: WiFiCredentialsContent.NetworkCredentialsError,\n\n // #region PermissionCookieBannerContent\n PCBExplainer: PermissionCookieBannerContent.PCBExplainer,\n PCBExplainerPreSpan: PermissionCookieBannerContent.PCBExplainerPreSpan,\n PCBExplainerSpan: PermissionCookieBannerContent.PCBExplainerSpan,\n PCBExplainPostSpan: PermissionCookieBannerContent.PCBExplainPostSpan,\n PCBButtonAccept: PermissionCookieBannerContent.PCBButtonAccept,\n PCBButtonReject: PermissionCookieBannerContent.PCBButtonReject,\n PCBButtonOk: PermissionCookieBannerContent.PCBButtonOk,\n // #endregion\n\n DataAQSummaryHeader: DataAQSummaryContent.DataAQSummaryHeader,\n DataChartDisclaimer: DataChartDisclaimerContent.DataChartDisclaimer,\n DataCustomDatePickerMessage:\n DataCustomDateContent.DataCustomDatePickerMessage,\n DataCustomeDateSubmit: DataCustomDateContent.DataCustomeDateSubmit,\n DataCustomDateSave: DataCustomDateContent.DataCustomDateSave,\n\n // #region\n dataDiagnosticsHeader: dataDiagnosticsModalContent.dataDiagnosticsHeader,\n dataDiagnosticsIndex: dataDiagnosticsModalContent.dataDiagnosticsIndex,\n dataDiagnosticsModalContentClose:\n dataDiagnosticsModalContent.dataDiagnosticsModalContentClose,\n // #endregion\n\n // #region\n DataDownloadButtonText: DataDownloadButtonContent.DataDownloadButtonText,\n DataDiagnosticsButtonText:\n DataDownloadButtonContent.DataDiagnosticsButtonText,\n // #endregion\n\n // #region\n DataUnitsHeaderMultiUnits: DataUnitsContent.DataUnitsHeaderMultiUnits,\n DataUnitsRemoveUnit: DataUnitsContent.DataUnitsRemoveUnit,\n DataUnitsSingleUnit: DataUnitsContent.DataUnitsSingleUnit,\n DataUnitsTooltipContent: DataUnitsContent.DataUnitsTooltipContent,\n DataUnitsTooltipMakerContent: DataUnitsContent.DataUnitsTooltipMakerContent,\n // #endregion\n\n // #region\n downloadHeader: DownloadModalContent.downloadHeader,\n downloadSubheader: DownloadModalContent.downloadSubheader,\n downloadCoordinates: DownloadModalContent.downloadCoordinates,\n downloadButton: DownloadModalContent.downloadButton,\n // #endregion\n\n // #region\n feedbackQuestionsHeader: FeedbackQuestionsContent.feedbackQuestionsHeader,\n feedbackScoreLabelsLow: FeedbackQuestionsContent.feedbackScoreLabelsLow,\n feedbackScoreLabelsHigh: FeedbackQuestionsContent.feedbackScoreLabelsHigh,\n feedbackCommentsPlaceholder:\n FeedbackQuestionsContent.feedbackCommentsPlaceholder,\n feedbackButtonNext: FeedbackQuestionsContent.feedbackButtonNext,\n feedbackEmailHeader: FeedbackQuestionsContent.feedbackEmailHeader,\n feedbackOptional: FeedbackQuestionsContent.feedbackOptional,\n feedbackConfirmationHeader:\n FeedbackQuestionsContent.feedbackConfirmationHeader,\n feedbackConfirmationText: FeedbackQuestionsContent.feedbackConfirmationText,\n feedbackButtonConfirmation:\n FeedbackQuestionsContent.feedbackButtonConfirmation,\n feedbackTagButton: FeedbackTagContent.feedbackTagButton,\n // #endregion\n\n // #region\n confirmationHeader: HeaderContactModalContent.confirmationHeader,\n confirmationText: HeaderContactModalContent.confirmationText,\n contactHeader: HeaderContactModalContent.contactHeader,\n contactSubheader: HeaderContactModalContent.contactSubheader,\n contactFirstName: HeaderContactModalContent.contactFirstName,\n contactLastName: HeaderContactModalContent.contactLastName,\n contactEmail: HeaderContactModalContent.contactEmail,\n contactCompany: HeaderContactModalContent.contactCompany,\n contactDetails: HeaderContactModalContent.contactDetails,\n contactEnquiry: HeaderContactModalContent.contactEnquiry,\n contactComments: HeaderContactModalContent.contactComments,\n contactButton: HeaderContactModalContent.contactButton,\n messageSuccess: HeaderContactModalContent.messageSuccess,\n messageProblem: HeaderContactModalContent.messageProblem,\n messageMissingFields: HeaderContactModalContent.messageMissingFields,\n requiredFields: HeaderContactModalContent.requiredFields,\n // #endregion\n\n // #region\n popoverCTAText: AddZephyrModalContent.popoverCTAText,\n headerText: AddZephyrModalContent.headerText,\n zephyrNameLabel: AddZephyrModalContent.zephyrNameLabel,\n secondaryCta: AddZephyrModalContent.secondaryCta,\n primaryCta1: AddZephyrModalContent.primaryCta1,\n totalPrefix: AddZephyrModalContent.totalPrefix,\n totalPostfix: AddZephyrModalContent.totalPostfix,\n maxReachPrefix: AddZephyrModalContent.maxReachPrefix,\n limitReachedSubtitle: AddZephyrModalContent.limitReachedSubtitle,\n contactUsCtaTxt: AddZephyrModalContent.contactUsCtaTxt,\n // #endregion\n\n // #region\n RemoveZephyrHeaderText: RemoveZephyrModalContent.RemoveZephyrHeaderText,\n confirmationTextPrefix: RemoveZephyrModalContent.confirmationTextPrefix,\n confirmationTextPostFix: RemoveZephyrModalContent.confirmationTextPostFix,\n warningText: RemoveZephyrModalContent.warningText,\n RemoveZephyrSecondaryCta: RemoveZephyrModalContent.RemoveZephyrSecondaryCta,\n primaryCta: RemoveZephyrModalContent.primaryCta,\n // #endregion\n\n // #region\n versionHistoryHeader: headerVersionHistoryModalContent.versionHistoryHeader,\n currentVersionDescriptor:\n headerVersionHistoryModalContent.currentVersionDescriptor,\n // #endregion\n\n // #region\n incorrectPassword: loginContent.incorrectPassword,\n loginHeader: loginContent.loginHeader,\n welcomeMessage: loginContent.welcomeMessage,\n loginButton: loginContent.loginButton,\n heroHeader: loginContent.heroHeader,\n heroSubheader: loginContent.heroSubheader,\n usernameField: loginContent.usernameField,\n passwordField: loginContent.passwordField,\n // #endregion\n\n // #region\n aoi: MappairQuoteModalContent.aoi,\n area: MappairQuoteModalContent.area,\n centre: MappairQuoteModalContent.centre,\n comments: MappairQuoteModalContent.comments,\n MappairQuoteConfirmationHeader:\n MappairQuoteModalContent.MappairQuoteConfirmationHeader,\n MappairQuoteConfirmationText:\n MappairQuoteModalContent.MappairQuoteConfirmationText,\n MappairQuoteContactHeader: MappairQuoteModalContent.MappairQuoteContactHeader,\n MappairQuoteContactFirstName:\n MappairQuoteModalContent.MappairQuoteContactFirstName,\n MappairQuoteContactLastName:\n MappairQuoteModalContent.MappairQuoteContactLastName,\n MappairQuoteContactEmail: MappairQuoteModalContent.MappairQuoteContactEmail,\n MappairQuoteContactCompany:\n MappairQuoteModalContent.MappairQuoteContactCompany,\n MappairQuoteContactButton: MappairQuoteModalContent.MappairQuoteContactButton,\n MappairQuoteCloseModal: MappairQuoteModalContent.MappairQuoteCloseModal,\n mappairLinkPost: MappairQuoteModalContent.mappairLinkPost,\n mappairLinkPre: MappairQuoteModalContent.mappairLinkPre,\n mappairOptionalCommentsPlaceholder:\n MappairQuoteModalContent.mappairOptionalCommentsPlaceholder,\n mappairMessageProblem: MappairQuoteModalContent.mappairMessageProblem,\n mapairMessageMissingFields:\n MappairQuoteModalContent.mapairMessageMissingFields,\n output: MappairQuoteModalContent.output,\n polygon: MappairQuoteModalContent.polygon,\n pollutants: MappairQuoteModalContent.pollutants,\n mapairRequiredFields: MappairQuoteModalContent.mapairRequiredFields,\n resolution: MappairQuoteModalContent.resolution,\n selectArea: MappairQuoteModalContent.selectArea,\n // #endregion\n\n // #region\n LocationSearchPlaceholder: LocationSearchContent.LocationSearchPlaceholder,\n InvalidSearchPlaceholder: LocationSearchContent.InvalidSearchPlaceholder,\n // #endregion\n\n // #region\n updateTitle: VersionLatestModalContent.updateTitle,\n // #endregion\n\n // #region\n ZephyrConfirmationHeader: ZephyrQuoteModalContent.ZephyrConfirmationHeader,\n ZephyrConfirmationText: ZephyrQuoteModalContent.ZephyrConfirmationText,\n ZephyrContactHeader: ZephyrQuoteModalContent.ZephyrContactHeader,\n ZephyrContactFirstName: ZephyrQuoteModalContent.ZephyrContactFirstName,\n ZephyrContactLastName: ZephyrQuoteModalContent.ZephyrContactLastName,\n ZephyrContactEmail: ZephyrQuoteModalContent.ZephyrContactEmail,\n ZephyrContactCompany: ZephyrQuoteModalContent.ZephyrContactCompany,\n ZephyrContactButton: ZephyrQuoteModalContent.ZephyrContactButton,\n measurements: ZephyrQuoteModalContent.measurements,\n ZephyrContactMessageProblem:\n ZephyrQuoteModalContent.ZephyrContactMessageProblem,\n ZephyrContactMessageMissingFields:\n ZephyrQuoteModalContent.ZephyrContactMessageMissingFields,\n powerOptions: ZephyrQuoteModalContent.powerOptions,\n ZephyrQuoteRequiredFields: ZephyrQuoteModalContent.ZephyrQuoteRequiredFields,\n zephyrs: ZephyrQuoteModalContent.zephyrs,\n // #endregion\n};\n\nexport { TRANSLATIONS_EN };\n","import {\n AppIntroModelContent,\n HeaderContent,\n AQColourscaleContent,\n AsideOverlaysContentPublic,\n AsideOverlaysContent,\n DataTimePeriodOptionsContent,\n DataTimeAveragingOptionsContent,\n DataChartHeaderContent,\n TodayContent,\n naeiCRLink,\n osmCRLink,\n publicCRLink,\n mapboxCRLink,\n mapboxImproveLink,\n maxarCRLink,\n routePaths,\n annualAvgtext,\n customTimePeriod,\n aqlOtherTab,\n AirAlertsConfiguratorContent,\n AirAlertsOverviewContent,\n AirQuality101Content,\n AQLatestDataContent,\n AQOtherContent,\n AQModelDataContent,\n AQSAContent,\n AQTemporalContent,\n AQUnitContent,\n AQWindContent,\n AsideContent,\n AsidePromptContent,\n AsideUnitContent,\n PermissionCookieBannerContent,\n DataAQSummaryContent,\n DataChartDisclaimerContent,\n DataCustomDateContent,\n dataDiagnosticsModalContent,\n DataDownloadButtonContent,\n DataUnitsContent,\n DownloadModalContent,\n FeedbackQuestionsContent,\n FeedbackTagContent,\n HeaderContactModalContent,\n AddZephyrModalContent,\n RemoveZephyrModalContent,\n headerVersionHistoryModalContent,\n loginContent,\n MappairQuoteModalContent,\n LocationSearchContent,\n VersionLatestModalContent,\n ZephyrQuoteModalContent,\n maptilerCRLink,\n} from '../../utils/consts';\n\nconst TRANSLATIONS_ES = {\n AppIntroButton: 'OK',\n // #region HeaderContent\n AirQuality101Title: 'Información',\n AnalyticsHeader: 'Análisis',\n AlertsHeader: 'Alertas',\n ContactLinkTitle: 'Contáctenos',\n CouncilProjectTitle: 'Acerca de',\n DataHeader: 'Datos',\n DefaultHeaderTitle: 'EarthSense',\n HelpHeader: 'Ayuda',\n LoadingAURNHeader: 'Cargando los más recientes datos de terceros',\n LoadingZephyrHeader: 'Cargando la más reciente información de calidad del aire', // TODO: check capitalization\n LocationHeader: 'Ubicación',\n LocationHeaderPublic: 'Mapa',\n LogoutLinkTitle: 'Cerrar sesión',\n MappairUpgradePrompt: 'Actualizar a MappAir Enhanced',\n MissingOverlayEnd: 'MappAir',\n MissingOverlayIntro: 'Contáctenos ', // TODO: sentence split might not be correct in spanish\n MissingOverlayMid: 'para tener acceso a ',\n PrivacyLinkTitle: 'Política de privacidad',\n ResourcesLinkTitle: 'Recursos',\n SourceEmissionTooltipIntro: 'Ver capas de fuentes de emisión para',\n SourceEmissionTooltipEnd: '.',\n SourceEmissionTooltipMissingSpecies: 'N/A',\n SourceEmissionTooltipSelectedIntro: 'Viendo',\n SourceEmissionTooltipSelectedEnd: 'capa de fuente de emisión.',\n SourcesSubHeader: 'Fuentes:',\n SpeciesSubHeader: 'Contaminante:',\n TodayTitle: 'Hoy',\n TooltipMarkerContent: '?',\n TourLinkTitle: 'Tour',\n TutorialLinkTitle: 'Tutorial',\n VersionLinkTitle: 'Versión',\n // #endregion\n\n // #region AQColourscaleContent\n AQCButton: 'Escala de color',\n AQCButtonPublic: 'escala de color del mapa',\n // #endregion\n\n OverlaysAQMA: 'AQMA',\n OverlaysAURN: 'AURN',\n OverlaysHeader: 'Capas',\n OverlaysDefault: 'Predeterminado',\n OverlaysMappair: 'Modelo de calidad del aire MappAir',\n OverlaysRemoveAll: 'Quitar todo',\n OverlaysSatellite: 'Satélite',\n OverlaysOSM: 'Calles abiertas',\n OverlaysShowAll: 'Mostrar todo',\n OverlaysZephyrs: 'Zephyr',\n MapDetails: 'Detalles del mapa',\n MapTypes: 'Tipo de mapa',\n //\n OverlaysMappairContentPublic: 'Modelo de contaminación',\n OverlaysAQMAContentPublic: 'Área de manejo de calidad de aire',\n OverlaysHeaderContentPublic: AsideOverlaysContentPublic.OverlaysHeader, // not used\n OverlaysHeaderContentPublic: AsideOverlaysContentPublic.OverlaysDefault,\n //\n DataPOHeader: 'Periodo de tiempo',\n DataPOSubheader: 'Mostrar datos para:',\n //\n DataTAHeader: 'Promedio temporal',\n DataTASubheader: 'Promediar datos por:',\n //\n DataChartHeaderTzPrefix: 'Zona horaria de los datos:',\n DataChartHeaderTzUTC: 'UTC',\n DataChartHeaderLoading: 'Cargando datos...', // TODO: bad elipsis in the english version\n DataChartHeaderNull: 'No hay datos para mostrar',\n DataChartSomeTimedOut: 'Algunas solicitudes de datos no terminaron a tiempo.',\n DataChartAllTimedOut: 'Ninguna unidad con datos disponibles respondió a tiempo. Intente solicitar los datos en \\\n segmentos más pequeños.',\n ZoomResetButton: 'Reiniciar el nivel de zoom',\n vZephyrLoadingMsg: 'Su Zephyr Virtual está siendo inicializado y los datos estarán disponibles \\\n en breve. (1-2 horas)',\n //\n AdviceHeader: 'Recomendaciones',\n BehaviourHeader: 'Su parte', // TODO: check context\n CloseModal: 'x',\n ForecastHeader: 'Pronóstico de Calidad del Aire',\n GeneralAdviceHeader: 'Población en general:',\n HealthAdviceHeader: 'Recomendaciones para la salud',\n HumidityHeader: 'Humedad',\n PollenHeader: 'Polen',\n PollutionHeader: 'Nivel de polución',\n SensitiveAdviceHeader: 'Recomendaciones para grupos sensibles:',\n TempHeader: 'Temperatura',\n WoodBurningHeader: 'Quema de biomasa y fogatas',\n //\n Low: 'Bajo',\n High: 'Alto',\n\n // #region Copyright links and statements\n naeiCRLink: naeiCRLink.content,\n osmCRLink: osmCRLink.content,\n maptilerCRLink: maptilerCRLink.content,\n publicCRLink: publicCRLink.content,\n mapboxCRLink: mapboxCRLink.content,\n mapboxImproveLink: mapboxImproveLink.content,\n maxarCRLink: maxarCRLink.content,\n routePaths: routePaths.content,\n // #endregion\n\n // #region\n // Not sure if we need to translate route path, will cause lots of breakage\n alerts: '/alerts',\n analytics: '/analytics',\n app: '/',\n data: '/data',\n login: '/login',\n today: '/today',\n // #endregion\n\n // #region annualAvgtext\n tableRowforYr: 'Año',\n tabContentTitleForChartPrefix: 'Último(s) ',\n tabContentTitleForChartPostfix: ' año(s)',\n tabContentTitleForListPrefix: 'Área - Último(s) ',\n tabContentTitleForListPostfix: ' año(s)',\n nodata: 'No se encontraron datos para las coordenadas seleccionadas...',\n AAChartHeader: 'Zephyr virtual',\n AADownloadData: 'Descargar datos',\n AASeeMore: 'Ver más datos',\n annualAvgNotAuthorised: annualAvgtext.annualAvgNotAuthorised,\n annualAvgAccordionTitle: annualAvgtext.annualAvgAccordionTitle,\n // #endregion\n\n aqlOtherTab: aqlOtherTab.label,\n customTimePeriod: customTimePeriod.labelHTML,\n\n // #region AirAlertsConfiguratorContent\n AACValidationFailure: 'Por favor corrija los errores para enviar esta alerta',\n AACDataSourceHeader: 'Seleccione el origen de datos',\n AACDataSourceSelection: 'Seleccione Zephyrs',\n AACValidationFailureSources: 'Por favor seleccione por lo menos un Zephyr',\n AACAlertDataHeader: 'Información de alerta',\n AACGasColumn: 'Seleccione la variable', // TODO: Change \"Gas\" to \"Variable\" in 'en' version\n AACThresholdColumn: 'Umbral',\n AACAlertColumn: 'Nivel de alerta',\n AACPeriodColumn: 'Periodo',\n AACRepeatColumn: 'Repetir',\n AACUnitStatusSelection: 'Enviar alertas de estado para:',\n AACValidationFailureData: 'Por favor seleccione por lo menos una variable o estado a seguir', // TODO: Change \"Gas\" to \"Variable\" in 'en' version\n AACOutputHeader: 'Salida',\n AACOutputName: 'Nombre', // TODO: Add \"Add a name for this alert\" text to component content\n AACValidationFailureName: 'Por favor asigne un nombre a esta alerta',\n AACOuputEmail: 'Direcciones de correo electrónico',\n AACOutputPhoneNumber: 'phone number', // TODO: Add \"Add email addresses for this alert\" text to component content\n AACValidationFailureEmail: 'Por favor añada por lo menos una dirección de correo electrónico',\n AACValidationFailurePhoneNumber: '',\n AACValidationCommunicationType: '',\n // #endregion\n\n // #region AirAlertsOverviewContent\n AAOHeader: 'Alertas (Máx 5 por usuario estándar)',\n AAOCreateNew: 'Crear nueva alerta',\n AAONameColumn: 'Nombre',\n AAOAlertDataColumn: 'Datos de alerta',\n AAOStatusColumn: 'Estado',\n AAOActionscolumn: 'Acciones',\n AAONoAlerts: \"Todavía no se ha creado ninguna alerta\",\n // #endregion\n\n AQ101header: 'Información de Calidad del Aire',\n\n // #region AQLatestDataContent\n AQAurnLabel: 'AURN',\n AQLatestDataButton: 'Últimas mediciones',\n AQZephyrLabel: 'Zephyr',\n // #endregion\n\n // #region AQOtherContent\n AQDisclaimerGFS:'Nota: los datos del modelo GFS presentados en este mapa son de acceso público. Éstos no han \\\n sido ratificados y no son propiedad de EarthSense. EarthSense no se hace resposable por la \\\n precisión o actualidad de los datos presentados en este mapa.',\n AQDisclaimerMet:'Nota: los datos de la Met Office presentados en este mapa son de acceso público. Éstos no han \\\n sido ratificados y no son propiedad de EarthSense. EarthSense no se hace resposable por la \\\n precisión o actualidad de los datos presentados en este mapa.',\n AQGFSDesc: 'Pronóstico Global NOAA',\n AQMetDesc: 'Estación Met Office',\n AQPeriodGFS: 'últimas 3 horas',\n AQPeriodMet: 'última hora',\n // #endregion\n\n // #region AQModelDataContent\n AQModelDataButton: 'Datos del modelo MappAir',\n AQModelDataLoading: 'Cargando datos del modelo',\n AQModelDataClickPrompt:'Haga clic en una zona del mapa para ver datos adicionales del modelo',\n AQModelNoData: 'No hay datos del modelo adicionales disponibles para esta ubicación.',\n // #endregion\n\n // #region AQSAContent\n AQTotal: 'Total',\n AQUnits: '2018 toneladas/año',\n // #endregion\n\n // #region AQTemporalContent\n AQChartHeader: 'Histórico y pronóstico',\n AQCloseModal: 'x',\n AQDownloadData: 'Descargar datos',\n // #endregion\n\n // #region AQUnitContent\n AQSummaryHeader: 'valor: ',\n AQPeriod: 'Promedios horarios más recientes',\n AQNoData: 'No hay datos disponibles.',\n AQNoOwnership: 'No hay datos disponibles.',\n // #endregion\n\n // #region AQWindContent\n AQChartHeaderOne: 'Frecuencia y velocidad',\n AQChartSubheader: 'Últimos 30 días',\n // #endregion\n\n // #region AsideContent\n AsideHeader: 'Inventario de productos',\n PublicAsideHeader: 'Fuentes de datos de Calidad del Aire',\n // #endregion\n\n // #region AsidePromptContent\n AsideButtonContent: 'Solicitar cotización',\n AsidePromptExplainer: 'Expandir la red Zephyr',\n AsideAnalyticsPrompt: 'Volver al Menú de Configuración',\n AsideAnalyticsButton: 'Atrás',\n // #endregion\n\n // #region AsideUnitContent\n AsideUnitBatteryCharging: 'Cargando',\n AsideUnitBatteryChargingDesc: AsideUnitContent.AsideUnitBatteryChargingDesc,\n AsideUnitBatteryDischarging: 'Descargando',\n AsideUnitBatteryDischargingDesc:\n AsideUnitContent.AsideUnitBatteryDischargingDesc,\n AsideUnitBatteryExplainer: 'Operando con la batería interna',\n AsideUnitBatteryFlat: 'Sin carga',\n AsideUnitBatteryFlatDesc: AsideUnitContent.AsideUnitBatteryFlatDesc,\n AsideUnitBatteryPower: 'Potencia',\n AsideUnitCartridgeBlank: 'Vacío', // TODO: check context\n AsideUnitCartridgeExplainerStandard:'Sensores incluidos: NO2, NO, O3, PM1, PM2.5, \\\n PM10, Presión, Temperatura y Humedad relativa',\n AsideUnitCartridgeExplainerEnhanced:'Sensores incluidos: NO2, NO, O3, PM1, PM2.5, \\\n PM10, CO, SO2, H2S, Presión, Temperatura y Humedad relativa',\n AsideUnitCartridgeExplainerEnhancedPlus:'Sensores incluidos: NO2, NO, O3, PM1, PM2.5, \\\n PM10, CO, SO2, H2S, CO2, Presión, Temperatura y \\\n Humedad relativa',\n AsideUnitCartridgeExplainderEnhancedPP:'Sensores incluidos: NO2, NO, O3, PM1, PM2.5, \\\n PM10, CO, SO2, H2S, CO2, TVOCs, Presión, \\\n Temperatura y Humedad relativa',\n AsideUnitConnectionGSM: 'GSM',\n AsideUnitConnectionNetwork: 'Red',\n AsideUnitLocationHeader: 'Ubicación:',\n AsideUnitUpdatedHeader: 'Última actualización:',\n AsideUnitIdHeader: 'ID:',\n AsideUnitStatusHeader: 'Estado',\n AsideUnitFrequencyHeader: 'Frecuencia',\n AsideUnitCertificateDownloadButton: 'Descargar certificados de calibración',\n AsideUnitConnectionExplainer:'El dispositivo está conectado a la red, datos recibidos en las pasadas 2 horas',\n AsideUnitConnectionWarning:'El dispositivo está tempralmente desconectado de la red. No se han recibido datos en las \\\n pasadas 2 horas, pero si en las pasadas 24 horas. Las mediciones están almacenadas en el \\\n dispositivo',\n AsideUnitConnectionAlert: 'No se han recibido datos en las pasadas 24 horas.',\n AsideUnitEditName: 'Cambiar nombre',\n AsideUnitDeleteName: 'Eliminar',\n AsideUnitOwnership: 'Propietario:', // TODO: check context\n AsideUnitSamplingData: 'Datos',\n AsideUnitSamplingExplainerHigh: 'Frecuencia de muestreo: 10 segundos',\n AsideUnitSamplingExplainerMed: 'Frecuencia de muestreo: 60 segundos',\n AsideUnitSamplingExplainerLow: 'Frecuencia de muestreo: 60 segundos', // TODO: This is likely not correct. Should be a slower sample rate\n AsideUnitSamplingOff: 'Sin muestras',\n AsideUnitSamplingOn: 'Muestreo', // TODO: check context\n AsideUnitStatus: 'Estado:',\n AsideUnitStatusRetired: 'Retirado:',\n AsideUnitType: 'Tipo:',\n AsideUnitTypeAURN: 'AURN',\n AsideUnitTypeVirtualZephyr: 'Zephyr Virtual',\n AsideUnitTypeZephyr: 'Zephyr',\n // #endregion\n\n // #region PermissionCookieBannerContent\n PCBExplainer:'MyAir usa cookies analíticas de terceros para informarle de publicación de versiones mejoradas en el \\\n futuro',\n PCBExplainerPreSpan: 'Usamos',\n PCBExplainerSpan: 'opcionales',\n PCBExplainPostSpan:'cookies analíticas de terceros para entender cómo podemos construir mejores productos', // TODO: sentence split might not be correct in spanish\n PCBButtonAccept: 'Aceptar',\n PCBButtonReject: 'Rechazar',\n PCBButtonOk: 'OK',\n // #endregion\n\n DataAQSummaryHeader: 'Última hora',\n DataChartDisclaimer:'Nota: los datos de DEFRA AURN presentados en este mapa son de acceso público. Éstos no han \\\n sido ratificados y no son propiedad de EarthSense. EarthSense no se hace resposable por la \\\n precisión o actualidad de los datos presentados en este mapa.',\n DataCustomDatePickerMessage: 'Seleccione un periodo de hasta 31 días',\n DataCustomeDateSubmit: 'Enviar',\n\n // #region\n dataDiagnosticsHeader: 'Diagnóstico de datos', // TODO: check context\n dataDiagnosticsIndex: 'Datos solicitados:', // TODO: check context\n dataDiagnosticsModalContentClose:\n dataDiagnosticsModalContent.dataDiagnosticsModalContentClose,\n // #endregion\n\n // #region\n DataDownloadButtonText: 'Descargar datos',\n DataDiagnosticsButtonText: 'Diagnósticos',\n // #endregion\n\n // #region\n DataUnitsHeaderMultiUnits: 'Dispositivos:', // TODO: check if \"units\" or \"devices\" is more apropiate, avoid confusion between units of measure and zephyr units\n DataUnitsRemoveUnit: 'x',\n DataUnitsSingleUnit: 'Dispositivo:',\n DataUnitsTooltipContent:'Arrastre y suelte los dispositivos que desea de la pestaña de inventario de productos para \\\n agregarlos al gráfico',\n DataUnitsTooltipMakerContent: 'i',\n // #endregion\n\n // #region\n downloadHeader: 'Descargar datos',\n downloadSubheader: 'Obtener datos de',\n downloadCoordinates: 'coordenadas',\n downloadButton: 'Descargar',\n // #endregion\n\n // #region\n feedbackQuestionsHeader: 'Compartanos sus observaciones',\n feedbackScoreLabelsLow: 'Poco probable',\n feedbackScoreLabelsHigh: 'Muy probable',\n feedbackCommentsPlaceholder: 'Escriba aquí sus observaciones',\n feedbackButtonNext: 'Siguiente',\n feedbackEmailHeader: 'Dirección de correo electrónico',\n feedbackOptional: 'Opcional',\n feedbackConfirmationHeader: 'Gracias por compartirnos sus observaciones',\n feedbackConfirmationText: 'Su opinión es muy importante para nosotros y será usada para mejorar nuestros productos y \\\n servicios.',\n feedbackButtonConfirmation: 'Listo',\n feedbackTagButton: 'Observaciones', // TODO: check context\n // #endregion\n\n // #region\n confirmationHeader: 'Gracias por su mensaje',\n confirmationText: 'Estaremos en contacto con usted en breve.',\n contactHeader: 'Contáctenos',\n contactSubheader: 'Describa en detalle su solicitud',\n contactFirstName: 'Nombre(s)*',\n contactLastName: 'Apellido(s)*',\n contactEmail: 'Dirección de correo electrónico*',\n contactCompany: 'Empresa*',\n contactDetails: 'Detalles',\n contactEnquiry: 'Razón de la solicitud*',\n contactComments: 'Comentarios',\n contactButton: 'Enviar',\n messageSuccess: 'Gracias, su mensaje ha sido enviado.',\n messageProblem: 'Hubo un problema al enviar su mensaje.',\n messageMissingFields: 'Por favor, complete todos los campos requeridos.',\n requiredFields: '*Campos requeridos',\n // #endregion\n\n // #region\n popoverCTAText: 'Agregar Zephyr Virtual',\n headerText: 'Agregar Zephyr Virtual',\n zephyrNameLabel: 'Nombre',\n secondaryCta: 'Cancelar',\n primaryCta1: 'Agregar',\n totalPrefix: 'Éste será ', // TODO: check context\n totalPostfix: 'Zephyr virtuales',\n maxReachPrefix: 'Ha alcanzado su límite de ',\n limitReachedSubtitle: 'Puede deshabilitar algunos de sus Zephyr virtuales o ponerse en contacto con nosotros para \\\n agregar más',\n contactUsCtaTxt: 'Contáctenos',\n // #endregion\n\n // #region\n RemoveZephyrHeaderText: RemoveZephyrModalContent.RemoveZephyrHeaderText,\n confirmationTextPrefix: \"'Está seguro que desea eleminar el Zephyr virtual '\", // TODO: sentence split might not be correct in spanish\n confirmationTextPostFix: \"'?\",\n warningText: 'Atención: Esta acción no se puede deshacer',\n RemoveZephyrSecondaryCta: RemoveZephyrModalContent.RemoveZephyrSecondaryCta,\n primaryCta: 'Eliminar',\n // #endregion\n\n // #region\n versionHistoryHeader: 'Historial de versiones',\n currentVersionDescriptor: 'Versión actual: ',\n // #endregion\n\n // #region\n incorrectPassword: 'Credenciales de acceso no válidas, por favor intente de nuevo',\n loginHeader: 'Iniciar sesión',\n welcomeMessage:'Bienvenido. Para continuar, por favor ingrese su nombre de usuario y contraseña.',\n loginButton: 'Iniciar sesión',\n heroHeader: 'Bienvenido a MyAir',\n heroSubheader:'Consulte, administre y descarge su información de calidad del aire de Zephyr y MappAir.',\n usernameField: 'Nombre de usuario',\n passwordField: 'Contraseña',\n // #endregion\n\n // #region\n aoi: 'Área de interés',\n area: MappairQuoteModalContent.area,\n centre: ' Centro: ',\n comments: 'Comentarios',\n MappairQuoteConfirmationHeader:\n MappairQuoteModalContent.MappairQuoteConfirmationHeader,\n MappairQuoteConfirmationText:\n MappairQuoteModalContent.MappairQuoteConfirmationText,\n MappairQuoteContactHeader: MappairQuoteModalContent.MappairQuoteContactHeader,\n MappairQuoteContactFirstName:\n MappairQuoteModalContent.MappairQuoteContactFirstName,\n MappairQuoteContactLastName:\n MappairQuoteModalContent.MappairQuoteContactLastName,\n MappairQuoteContactEmail: MappairQuoteModalContent.MappairQuoteContactEmail,\n MappairQuoteContactCompany:\n MappairQuoteModalContent.MappairQuoteContactCompany,\n MappairQuoteContactButton: MappairQuoteModalContent.MappairQuoteContactButton,\n MappairQuoteCloseModal: MappairQuoteModalContent.MappairQuoteCloseModal,\n mappairLinkPost:' tienen una resolución de 10 m y utilizan mecánica de fluidos computacional (CDF) para simular \\\n la dispersión de contaminantes al rededor de edificios y en cañones urbanos en un modelo 3D.', // TODO: sentence split might not be correct in spanish\n // TODO: review CFD enphasis\n mappairLinkPre: 'Los models MappAir Enhanced ',\n mappairOptionalCommentsPlaceholder:'Por favor, utlice este espacio para incluir comentarios sobre los requerimientos específicos \\\n de su proyecto y los detalles de su caso de interés.',\n mappairMessageProblem: MappairQuoteModalContent.mappairMessageProblem,\n mapairMessageMissingFields:\n MappairQuoteModalContent.mapairMessageMissingFields,\n output: 'Salida',\n polygon: 'Polígono personalizado -',\n pollutants: 'Contaminantes',\n mapairRequiredFields: MappairQuoteModalContent.mapairRequiredFields,\n resolution: 'Resolución',\n selectArea: 'Seleccione un área',\n // #endregion\n\n // #region\n LocationSearchPlaceholder: 'Buscar ubicación',\n InvalidSearchPlaceholder: 'La ubicación está fuera del mapa',\n // #endregion\n\n // #region\n updateTitle: 'Actualizaciones de MyAir®', // TODO: check use of ® symbol across all components\n // #endregion\n\n // #region\n ZephyrConfirmationHeader: ZephyrQuoteModalContent.ZephyrConfirmationHeader,\n ZephyrConfirmationText: ZephyrQuoteModalContent.ZephyrConfirmationText,\n ZephyrContactHeader: ZephyrQuoteModalContent.ZephyrContactHeader,\n ZephyrContactFirstName: ZephyrQuoteModalContent.ZephyrContactFirstName,\n ZephyrContactLastName: ZephyrQuoteModalContent.ZephyrContactLastName,\n ZephyrContactEmail: ZephyrQuoteModalContent.ZephyrContactEmail,\n ZephyrContactCompany: ZephyrQuoteModalContent.ZephyrContactCompany,\n ZephyrContactButton: ZephyrQuoteModalContent.ZephyrContactButton,\n measurements: 'Sensores*',\n ZephyrContactMessageProblem:\n ZephyrQuoteModalContent.ZephyrContactMessageProblem,\n ZephyrContactMessageMissingFields:\n ZephyrQuoteModalContent.ZephyrContactMessageMissingFields,\n powerOptions: 'Suministro de energía*',\n ZephyrQuoteRequiredFields: ZephyrQuoteModalContent.ZephyrQuoteRequiredFields,\n zephyrs: 1,\n // #endregion\n};\n\nexport { TRANSLATIONS_ES };\n\n","import i18n from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport moment from 'moment';\nimport { initReactI18next } from 'react-i18next';\nimport { TRANSLATIONS_EN } from './en/translations';\nimport { TRANSLATIONS_ES } from './es/translations';\nimport { TRANSLATIONS_ZH } from './zh/translations';\n\n// http://localhost:3000/login/?lng=es\ni18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init(\n {\n // order and from where user language should be detected\n order: [\n 'localStorage',\n 'querystring',\n 'cookie',\n 'sessionStorage',\n 'navigator',\n 'htmlTag',\n 'path',\n 'subdomain',\n ],\n fallbackLng: 'en', // https://www.i18next.com/principles/fallback#fallback-to-different-languages:~:text=Copied!-,Fallback%20to%20different%20languages,-If%20you%20can\n interpolation: {\n format: function (value, format, lng) {\n if (value instanceof Date) return moment(value).format(format);\n if (typeof value === 'number')\n return new Intl.NumberFormat().format(value);\n return value;\n },\n },\n resources: {\n en: {\n translation: TRANSLATIONS_EN,\n },\n es: {\n translation: TRANSLATIONS_ES,\n },\n zh: {\n translation: TRANSLATIONS_ZH,\n },\n },\n },\n (err, t) => {\n if (err)\n return console.error('something went wrong loading translator', err);\n t('key'); // -> same as i18next.t\n },\n );\n\n// i18n.changeLanguage('en');\n\nexport { i18n };\n","export const TRANSLATIONS_ZH = {\n\n};\n","// Type Imports\nimport { SET_LOCALE } from '../actions/types';\nimport { i18n } from '../translations/i18n';\n\n// Type Safety\ninterface setLocale {\n type: typeof SET_LOCALE;\n payload: string[];\n}\n\n// State\nconst initState: string = i18n.language || localStorage.i18nextLng;\n\n// Reducer\nexport default function (state = initState, action: setLocale) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_LOCALE:\n return payload;\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n SET_ZEPHYR,\n ADD_ZEPHYRS,\n SET_ZEPHYR_IN_EDIT_MODE,\n SET_HAS_INITIAL_SET,\n} from '../actions/types';\n\n// Type Imports\nimport { Zephyr } from '../utils/interface';\n\n// Type Safety\ninterface ZephyrSet {\n editMode: boolean;\n set: boolean;\n zephyr: Zephyr | any;\n hasInitialSet: boolean;\n}\n\ninterface SetZephyr {\n type: typeof SET_ZEPHYR | typeof SET_ZEPHYR_IN_EDIT_MODE | typeof SET_HAS_INITIAL_SET;\n payload: string[];\n}\n\n// State\nconst initialState: ZephyrSet = {\n editMode: false,\n set: false,\n zephyr: [],\n hasInitialSet: false,\n};\n\n// Reducer\nexport default function (state = initialState, action: SetZephyr) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_ZEPHYR:\n return {\n ...state,\n zephyr: payload,\n editMode: false,\n set: true,\n };\n case ADD_ZEPHYRS:\n return {\n ...state,\n zephyrs: payload,\n editMode: false,\n set: true,\n };\n case SET_ZEPHYR_IN_EDIT_MODE:\n return {\n ...state,\n zephyr: payload,\n editMode: true,\n set: true,\n };\n case SET_HAS_INITIAL_SET:\n return {\n ...state,\n hasInitialSet: true\n }\n default:\n return state;\n }\n}\n","// Types Imports\nimport {\n TOUR_LAUNCHED,\n TOUR_FINISHED,\n TOUR_OPEN_ASIDE_FILTER,\n TOUR_CLOSE_ASIDE_FILTER,\n TOUR_OPEN_AQ_DATA_INDEX,\n TOUR_CLOSE_AQ_DATA_INDEX,\n TOUR_OPEN_AQ_COLORSCALE_INDEX,\n TOUR_CLOSE_AQ_COLORSCALE_INDEX,\n TOUR_OPEN_AQMA_INDEX,\n TOUR_CLOSE_AQMA_INDEX,\n TOUR_OPEN_ASIDE,\n TOUR_CLOSE_ASIDE,\n TOUR_OPEN_HELP,\n TOUR_CLOSE_HELP,\n TOUR_OPEN_LOCATION_SEARCH,\n TOUR_CLOSE_LOCATION_SEARCH,\n TOUR_MAP_CLICK,\n TOUR_CLOSE_MODEL_DATA_INDEX,\n TOUR_OPEN_MODEL_DATA_INDEX,\n} from '../actions/types';\n\n// Type Imports\nimport { Tour } from '../utils/interface';\n\ninterface SetTour {\n type:\n | typeof TOUR_LAUNCHED\n | typeof TOUR_FINISHED\n | typeof TOUR_OPEN_ASIDE_FILTER\n | typeof TOUR_CLOSE_ASIDE_FILTER\n | typeof TOUR_OPEN_AQ_DATA_INDEX\n | typeof TOUR_CLOSE_AQ_DATA_INDEX\n | typeof TOUR_OPEN_AQ_COLORSCALE_INDEX\n | typeof TOUR_CLOSE_AQ_COLORSCALE_INDEX\n | typeof TOUR_OPEN_AQMA_INDEX\n | typeof TOUR_CLOSE_AQMA_INDEX\n | typeof TOUR_OPEN_ASIDE\n | typeof TOUR_CLOSE_ASIDE\n | typeof TOUR_OPEN_HELP\n | typeof TOUR_CLOSE_HELP\n | typeof TOUR_OPEN_LOCATION_SEARCH\n | typeof TOUR_CLOSE_LOCATION_SEARCH\n | typeof TOUR_MAP_CLICK\n | typeof TOUR_CLOSE_MODEL_DATA_INDEX\n | typeof TOUR_OPEN_MODEL_DATA_INDEX;\n}\n\n// State\nconst initialState: Tour = {\n clickMap: false,\n openTour: false,\n openAsideFilter: false,\n openAQIndex: {\n openAQData: false,\n openAQColourscale: false,\n openAQMAIndex: false,\n openAQModelData: false,\n },\n openAside: false,\n openHelp: false,\n openLocationSearch: false,\n};\n\n// Reducer\nexport default function (state = initialState, action: SetTour) {\n const { type } = action;\n\n switch (type) {\n case TOUR_LAUNCHED:\n return {\n ...state,\n openTour: true,\n };\n\n case TOUR_FINISHED:\n return initialState;\n\n case TOUR_OPEN_ASIDE_FILTER:\n return {\n ...state,\n openAsideFilter: true,\n };\n\n case TOUR_CLOSE_ASIDE_FILTER:\n return {\n ...state,\n openAsideFilter: false,\n };\n\n case TOUR_OPEN_AQ_DATA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQData: true },\n };\n\n case TOUR_CLOSE_AQ_DATA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQData: false },\n };\n\n case TOUR_OPEN_AQ_COLORSCALE_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQColourscale: true },\n };\n\n case TOUR_CLOSE_AQ_COLORSCALE_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQColourscale: false },\n };\n\n case TOUR_OPEN_AQMA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQMAIndex: true },\n };\n\n case TOUR_CLOSE_AQMA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQMAIndex: false },\n };\n\n case TOUR_OPEN_ASIDE:\n return {\n ...state,\n openAside: true,\n };\n\n case TOUR_CLOSE_ASIDE:\n return {\n ...state,\n openAside: false,\n };\n\n case TOUR_OPEN_HELP:\n return {\n ...state,\n openHelp: true,\n };\n\n case TOUR_CLOSE_HELP:\n return {\n ...state,\n openHelp: false,\n };\n\n case TOUR_OPEN_LOCATION_SEARCH:\n return {\n ...state,\n openLocationSearch: true,\n };\n\n case TOUR_CLOSE_LOCATION_SEARCH:\n return {\n ...state,\n openLocationSearch: false,\n };\n\n case TOUR_MAP_CLICK:\n return {\n ...state,\n clickMap: !state.clickMap,\n };\n\n case TOUR_CLOSE_MODEL_DATA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQModelData: false },\n };\n\n case TOUR_OPEN_MODEL_DATA_INDEX:\n return {\n ...state,\n openAQIndex: { ...state.openAQIndex, openAQModelData: true },\n };\n\n default:\n return state;\n }\n}\n\ntype AnalysisTourAction = {\n type: 'analysis_tour_toggle'\n}\nconst initialAnalysisTour = false\nexport function AnalysisTour(state = initialAnalysisTour, action: AnalysisTourAction) {\n switch (action.type) {\n case 'analysis_tour_toggle':\n return !state\n default:\n return state\n }\n}\n\ntype SelectChartOpenAction = {\n type: 'select-chart-mode-toggle' | 'select-chart-mode-open' | 'select-chart-mode-close'\n}\nexport function selectChartModeOpen(state = false, action: SelectChartOpenAction) {\n switch (action.type) {\n case 'select-chart-mode-toggle':\n return !state\n case 'select-chart-mode-open':\n return true\n case 'select-chart-mode-close':\n return false\n default:\n return state\n }\n}\n\ntype AlertsTourAction = {\n type: 'alerts_tour_toggle';\n};\nconst initialAlertsTour = false;\nexport function AlertsTour(\n state = initialAlertsTour,\n action: AlertsTourAction,\n) {\n switch (action.type) {\n case 'alerts_tour_toggle':\n return !state;\n default:\n return state;\n }\n}","// Types Imports\nimport { SET_ANNUAL_AVERAGES } from '../actions/types';\nimport { AnnualAvgData } from '../utils/interface';\nimport { AnnualAvgDataInitialState } from '../utils/consts';\n\n// Type Safety\ninterface setAnnualAverages {\n type: typeof SET_ANNUAL_AVERAGES;\n payload: AnnualAvgData;\n}\n\n// Reducer\nexport default function (\n state = AnnualAvgDataInitialState,\n action: setAnnualAverages,\n) {\n const { type, payload } = action;\n switch (type) {\n case SET_ANNUAL_AVERAGES:\n return {\n ...state,\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","import { SET_THRESHOLDS } from '../actions/types';\nimport type { ThresholdsList } from '../utils/interface'\nimport { thresholdLimitsInitState } from './dataAnalytics';\n\ninterface SetThresholds {\n type: typeof SET_THRESHOLDS;\n payload?: any;\n}\n\nconst initialState: ThresholdsList = {\n gases: thresholdLimitsInitState,\n particulate: thresholdLimitsInitState,\n networkViewGases: thresholdLimitsInitState,\n networkViewParticulates: thresholdLimitsInitState,\n}\n\nfunction thresholdsReducer(state = initialState, action: SetThresholds) {\n switch (action.type) {\n case SET_THRESHOLDS:\n if (typeof action.payload === 'function') {\n return action.payload(state);\n }\n return {\n ...state,\n ...action.payload,\n }\n default:\n return state\n }\n}\n\nexport default thresholdsReducer;","import { SET_MODULAR_FEATURES } from \"../actions/types\";\n\nexport interface ModularFeatures {\n timeSlider: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n fleetManagement: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n alerts: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n schools: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n smokeControlZones: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n annualAverages: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n dseIntegration: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n dataAnalytics: {\n isPrivate: boolean,\n isPublic: boolean,\n },\n}\n\ninterface SetModularFeatures {\n type: typeof SET_MODULAR_FEATURES;\n payload: ModularFeatures;\n}\n\nconst initState: ModularFeatures = {\n timeSlider: {\n isPrivate: true,\n isPublic: false,\n },\n fleetManagement: {\n isPrivate: true,\n isPublic: false,\n },\n alerts: {\n isPrivate: true,\n isPublic: false,\n },\n schools: {\n isPrivate: true,\n isPublic: true,\n },\n smokeControlZones: {\n isPrivate: true,\n isPublic: true,\n },\n annualAverages: {\n isPrivate: true,\n isPublic: false,\n },\n dseIntegration: {\n isPrivate: false,\n isPublic: false,\n },\n dataAnalytics: {\n isPrivate: true,\n isPublic: true,\n },\n}\n\n// Reducer\nexport default function (state = initState, action: SetModularFeatures) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_MODULAR_FEATURES:\n return {\n ...payload,\n };\n\n default:\n return state;\n }\n}","// Types Imports\nimport { SET_VZ_ICON_CLICKED, SET_CURSOR_ICON_DROPPED, SET_ADD_VZ_SETTINGS, SET_VZ_NAME, SET_VZ_CREATION_MENU, SET_INIT_CURSOR_POSITION } from '../actions/types';\nimport { AddVZephyr } from '../utils/interface';\n\ninterface AddVZephyrAction {\n type: string;\n payload: any;\n};\n\n// State\nconst initState: AddVZephyr = {\n addVZIconClicked: false,\n cursorIconDropped: false,\n settings: null,\n virtualZephyrName: \"\",\n vzCreationMenuOpened: false,\n initCursorPosition: { x: 0, y: 0 }\n};\n\n// Reducer\nexport default function (state = initState, action: AddVZephyrAction) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_VZ_ICON_CLICKED:\n return {\n ...state,\n addVZIconClicked: payload,\n };\n\n case SET_CURSOR_ICON_DROPPED:\n return {\n ...state,\n cursorIconDropped: payload,\n };\n\n case SET_ADD_VZ_SETTINGS:\n return {\n ...state,\n settings: payload,\n };\n\n case SET_VZ_NAME:\n return {\n ...state,\n virtualZephyrName: payload,\n };\n\n case SET_VZ_CREATION_MENU:\n return {\n ...state,\n vzCreationMenuOpened: payload,\n };\n\n case SET_INIT_CURSOR_POSITION:\n return {\n ...state,\n initCursorPosition: payload\n }\n\n default:\n return state;\n }\n};\n","// Package Imports\nimport { combineReducers } from 'redux';\n\n// Reducer Imports\nimport airAlerts from './airAlerts';\nimport alerts from './alerts';\nimport aq101 from './aq101';\nimport aside from './aside';\nimport auth from './auth';\nimport dataConfig from './dataConfig';\nimport draggedUnit from './draggedUnit';\nimport feedback from './feedback';\nimport getStyleGroups from './getStyleGroups';\nimport getZephyrs from './getZephyrs';\nimport getZephyrHistoricalData from './getZephyrHistoricalData';\n//import getZephyrMeasurementData from './getZephyrMeasurementData';\nimport loading from './loading';\nimport mappAirFilters from './mappAirFilters';\nimport mapsLocationLoaded from './mapsLocationLoaded';\nimport modal from './modal';\nimport publicAdvice from './publicAdvice';\nimport queryStringParams from './queryStringParams';\nimport showAQMALayer from './showAQMQLayer';\nimport setAveragingPeriods from './setAveragingPeriods';\nimport setDisplayConfig from './setDisplayConfig';\nimport setLocation from './setLocation';\nimport setOverlays from './setOverlays';\nimport setThresholdTab from './setThresholdTab';\nimport setTimePeriods from './setTimePeriods';\nimport setTodayData from './setTodayData';\nimport setUnitLocation from './setLocation';\nimport setUserConfig from './setUserConfig';\nimport setVersions from './setVersions';\nimport setLocale from './setLocale';\nimport setZephyr from './setZephyr';\nimport tour, { AlertsTour, AnalysisTour, selectChartModeOpen } from './tour';\nimport setAnnualAverages from './annualAverage';\nimport setMapAirPointValueHistory from './mapAirPointValueHistory';\nimport unitHistoriesOptions from './dataAnalytics';\nimport thresholdsReducer from './thresholds';\nimport selectedChartViewMode from './chartViewMode';\nimport modularFeatures from './modularFeatures';\nimport addVZephyrs from './addVZephyrs';\n\n\n// Types Imports\nimport { LOGOUT } from '../actions/types';\n\n// Type Safety\ninterface Logout {\n type: typeof LOGOUT;\n}\n\nconst appReducer = combineReducers({\n airAlerts,\n alerts,\n aq101,\n aside,\n auth,\n dataConfig,\n draggedUnit,\n feedback,\n getStyleGroups,\n getZephyrs,\n getZephyrHistoricalData,\n loading,\n mappAirFilters,\n mapsLocationLoaded,\n modal,\n publicAdvice,\n queryStringParams,\n showAQMALayer,\n setAveragingPeriods,\n setDisplayConfig,\n setLocation,\n setOverlays,\n setTimePeriods,\n setTodayData,\n setThresholdTab,\n setUnitLocation,\n setUserConfig,\n setVersions,\n setLocale,\n setZephyr,\n tour,\n setAnnualAverages,\n setMapAirPointValueHistory,\n modularFeatures,\n unitHistoriesOptions,\n thresholds: thresholdsReducer,\n analysisTourOpen: AnalysisTour,\n alertsTourOpen: AlertsTour,\n selectChartModeOpen,\n selectedChartViewMode,\n addVZephyrs,\n});\n\nconst rootReducer = (\n state: ReturnType | undefined,\n action: Logout,\n) => {\n if (action.type === LOGOUT) {\n // reset state on logout\n state = undefined;\n }\n return appReducer(state, action);\n};\n\nexport default rootReducer;\n","// Types Imports\nimport { CLEAR_DRAGGED_UNIT, SET_DRAGGED_UNIT } from '../actions/types';\n\n// Type Imports\nimport { Zephyr } from '../utils/interface';\n\n// Type Safety\ninterface SetDraggedUnitAction {\n type: typeof SET_DRAGGED_UNIT;\n payload: Zephyr;\n}\n\n// State\nconst initState = null;\n\n// Reducer\nexport default function (state = initState, action: SetDraggedUnitAction) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_DRAGGED_UNIT:\n return payload;\n\n case CLEAR_DRAGGED_UNIT:\n return null;\n\n default:\n return state;\n }\n}\n","// Type Imports\nimport { SET_TODAY_DATA } from '../actions/types';\n\n// Types Imports\nimport { TodayData } from '../utils/interface';\n\n// Type Safety\ninterface SetTodayData {\n type: typeof SET_TODAY_DATA;\n payload: TodayData;\n}\n\n// State\nconst initState: TodayData | null = null;\n\n// Reducer\nexport default function (state = initState, action: SetTodayData) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_TODAY_DATA:\n return payload;\n\n default:\n return state;\n }\n}\n","// Types Imports\nimport { SET_MAPPAIR_POINT_VALUE_HISTORY } from '../actions/types';\nimport { MapAirPointValueHistoryData } from '../utils/interface';\nimport { MapAirPointValueHistoryInitialState } from '../utils/consts';\n\n// Type Safety\ninterface setMapAirPointValueHistory {\n type: typeof SET_MAPPAIR_POINT_VALUE_HISTORY;\n payload: MapAirPointValueHistoryData;\n}\n\n// Reducer\nexport default function (\n state = MapAirPointValueHistoryInitialState,\n action: setMapAirPointValueHistory,\n) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_MAPPAIR_POINT_VALUE_HISTORY:\n return {\n ...state,\n ...payload,\n };\n\n default:\n return state;\n }\n}\n","type SelectChartOpenAction = {\n type: 'SET_CHART_VIEW_MODE';\n payload: State;\n};\n\ntype State = 'deviceView' | 'networkView' | 'comparisonView';\n\nexport default function selectedChartViewMode(\n state: State = 'deviceView',\n action: SelectChartOpenAction,\n) {\n switch (action.type) {\n case 'SET_CHART_VIEW_MODE':\n return action.payload;\n default:\n return state;\n }\n}\n","import { createStore, applyMiddleware } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport thunk from 'redux-thunk';\nimport rootReducer from './reducers/index';\n\nconst initialState = {};\n\nconst middleware = [thunk];\n\nconst store = createStore(\n rootReducer,\n initialState,\n composeWithDevTools(applyMiddleware(...middleware)),\n);\n\nexport default store;\n","/* Function\nDESC: wideScreenFinder returns true for screen sizes over a specified amoung\nARGS: screen size cut-off in pixels, anything above this, will return true\n*/\nexport const wideScreenFinder = (pixels: number) => {\n const w = window;\n const d = document;\n const e = d.documentElement;\n const g = d.getElementsByTagName('body')[0];\n const windowWidth = w.innerWidth || e.clientWidth || g.clientWidth;\n\n return windowWidth > pixels;\n};\n","/* Function\nDESC: tallScreenFinder returns true for screen sizes over a specified amoung\nARGS: screen size cut-off in pixels, anything above this, will return true\n*/\nexport const tallScreenFinder = (pixels: number) => {\n const w = window;\n const d = document;\n const e = d.documentElement;\n const g = d.getElementsByTagName('body')[0];\n const windowHeight = w.innerHeight || e.clientHeight || g.clientHeight;\n\n return windowHeight > pixels;\n};\n","// Util Imports\nimport utilsRequest from '../request';\n\n// Const Imports\nimport { gtmEvents } from '../consts';\n\nconst analyticsEventFirer = (\n eventIdentifier: string,\n labelEnrichment?: string,\n) => {\n const eventProps = { ...gtmEvents[eventIdentifier] };\n if (labelEnrichment) {\n eventProps.label = `${eventProps.label} - ${labelEnrichment}`;\n }\n const { category, action, label, value } = eventProps;\n utilsRequest.fireTrackingEvent(action, category, label, value);\n};\n\nexport default analyticsEventFirer;\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Util Imports\nimport { wideScreenFinder } from '../utils/functions/wideScreenFinder';\nimport { tallScreenFinder } from '../utils/functions/tallScreenFinder';\nimport analyticsEventFirer from '../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport { gtmEventIdentifiers } from '../utils/consts';\n\n// Types Imports\nimport {\n ALERTS_ON,\n CHANGE_OVERLAY_LAYER,\n GET_STYLE_GROUPS,\n LOADING_INIT_APP_OFF,\n LOADING_INIT_APP_ON,\n LOADING_INIT_APP_DATA_OFF,\n LOADING_INIT_APP_DATA_ON,\n LOADING_INIT_APP_THIRDPARTY_DATA_OFF,\n LOADING_INIT_APP_THIRDPARTY_DATA_ON,\n LOGIN_FAIL,\n LOGOUT,\n SET_ACTIVE_THRESHOLD,\n SET_AVERAGING_PERIODS,\n SET_DATA_CONFIG,\n SET_DISPLAY_CONFIG,\n SET_FEEDBACK,\n SET_OVERLAYS,\n SET_PUBLIC_ADVICE,\n SET_TIME_PERIODS,\n SET_TODAY_DATA,\n SET_USER_CONFIG,\n SET_VERSIONS,\n USER_LOADED,\n SET_MASTER_AUTH_BEARER_TOKEN,\n} from './types';\n\n// Type Imports\nimport {\n Agreement,\n AveragingPeriods,\n DataConfig,\n DisplayConfig,\n FeedbackQuestion,\n Overlay,\n PublicAdvice,\n Stylegroup,\n TimePeriods,\n TodayData,\n UserConfig,\n UserInfo,\n} from '../utils/interface';\nimport { dispatch } from 'd3';\n\n// Action Creators\nconst loadingInitAppOff = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_OFF,\n });\n};\n\nconst loadingInitAppOn = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_ON,\n });\n};\n\nconst loadingInitAppDataOff = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_DATA_OFF,\n });\n};\n\nconst loadingInitAppDataOn = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_DATA_ON,\n });\n};\n\nconst loadingInitAppThirdPartyDataOff = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_THIRDPARTY_DATA_OFF,\n });\n};\n\nconst loadingInitAppThirdPartyDataOn = () => async (dispatch: Dispatch) => {\n dispatch({\n type: LOADING_INIT_APP_THIRDPARTY_DATA_ON,\n });\n};\n\nconst logout = () => async (dispatch: Dispatch) => {\n dispatch({ type: LOGOUT });\n analyticsEventFirer(gtmEventIdentifiers.logout);\n};\n\nconst setFailedLogin = () => async (dispatch: Dispatch) => {\n dispatch({ type: LOGOUT });\n dispatch({ type: LOGIN_FAIL });\n};\n\nconst setTodayData = (todayData: TodayData) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_TODAY_DATA,\n payload: todayData,\n });\n};\n\nconst setPublicAdvice = (publicAdvice: PublicAdvice) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_PUBLIC_ADVICE,\n payload: publicAdvice,\n });\n};\n\nconst setDisplayConfig = (displayConfig: DisplayConfig) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_DISPLAY_CONFIG,\n payload: displayConfig,\n });\n};\n\nconst setOverlays = (overlays: Overlay[]) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_OVERLAYS,\n payload: overlays,\n });\n const initOverlay =\n wideScreenFinder(800) && tallScreenFinder(500)\n ? overlays.find((ol: Overlay) => !ol.isMappairOverlay)\n : overlays.find((ol: Overlay) => ol.isMappairOverlay);\n if (initOverlay) {\n dispatch({\n type: CHANGE_OVERLAY_LAYER,\n payload: initOverlay.name,\n });\n }\n};\n\nconst setAlerts = (agreements: Agreement[]) => async (dispatch: Dispatch) => {\n if (agreements.length > 0) {\n dispatch({\n type: ALERTS_ON,\n payload: agreements,\n });\n }\n};\n\nconst setFeedback = (feedbackQuestions: FeedbackQuestion[]) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_FEEDBACK,\n payload: feedbackQuestions,\n });\n};\n\nconst setUserConfig = (userConfig: UserConfig) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_USER_CONFIG,\n payload: userConfig,\n });\n};\n\nconst setStylegroups = (stylegroups: Stylegroup[]) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: GET_STYLE_GROUPS,\n payload: stylegroups,\n });\n};\n\nconst setThreshold = (threshold: string) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_ACTIVE_THRESHOLD,\n payload: threshold,\n });\n};\n\nconst setTimePeriods = (timePeriods: TimePeriods) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_TIME_PERIODS,\n payload: timePeriods,\n });\n};\n\nconst setAveragingPeriods = (averagingPeriods: AveragingPeriods) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_AVERAGING_PERIODS,\n payload: averagingPeriods,\n });\n};\n\nconst setDataConfig = (dataConfig: DataConfig) => async (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_DATA_CONFIG,\n payload: dataConfig,\n });\n};\n\nconst setUserInfo = (userInfo: UserInfo) => async (dispatch: Dispatch) => {\n dispatch({\n type: USER_LOADED,\n payload: userInfo,\n });\n};\n\nconst setVersions = (versions: string[]) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_VERSIONS,\n payload: versions,\n });\n};\n\nconst setMasterAuthBearerToken = (bearerToken: string) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_MASTER_AUTH_BEARER_TOKEN,\n payload: bearerToken,\n });\n};\n\nexport {\n loadingInitAppDataOff,\n loadingInitAppDataOn,\n loadingInitAppThirdPartyDataOff,\n loadingInitAppThirdPartyDataOn,\n loadingInitAppOff,\n loadingInitAppOn,\n logout,\n setAlerts,\n setAveragingPeriods,\n setDataConfig,\n setDisplayConfig,\n setFailedLogin,\n setFeedback,\n setPublicAdvice,\n setOverlays,\n setStylegroups,\n setThreshold,\n setTimePeriods,\n setTodayData,\n setUserConfig,\n setUserInfo,\n setVersions,\n setMasterAuthBearerToken,\n};\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Types Imports\nimport { SET_QUERY_STRING_PARAMS } from './types';\n\n// Type Imports\nimport { UrlQueryStringParams } from '../utils/interface';\n\n// Action Creators\nexport const queryStringParams = (\n urlQueryStringParams: UrlQueryStringParams,\n) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_QUERY_STRING_PARAMS,\n payload: urlQueryStringParams,\n });\n};\n","// Type Imports\nimport { Dispatch } from 'redux';\nimport { SHOW_MAP_AIR_FILTERS, SET_SELECTED_FILTER } from './types';\n\n// Action Creators\nexport const mappAirFilters = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_MAP_AIR_FILTERS,\n payload\n });\n};\n\nexport const setSelectedFilters = (payload: string[]) => (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_SELECTED_FILTER,\n payload,\n });\n};\n","// Type Imports\nimport { Dispatch } from 'redux';\nimport {\n CHANGE_OVERLAY_LAYER,\n CHANGE_OVERLAY_OPACITY,\n SET_MAPPAIR_POINT_MODE_OFF,\n SET_MAPPAIR_POINT_MODE_ON,\n SET_ANNUAL_AVERAGE,\n SHOW_AQMA_LAYER,\n SHOW_OVERLAY_LAYER,\n SHOW_SATELLITE_LAYER,\n SHOW_OSM_LAYER,\n SHOW_SCHOOLS_LAYER,\n SHOW_AA_LAYER,\n SHOW_SMOKE_CONTROL_ZONES,\n} from './types';\n\n// Action Creators\nexport const changeOverlayLayer = (overlay: string) => (dispatch: Dispatch) => {\n dispatch({\n type: CHANGE_OVERLAY_LAYER,\n payload: overlay,\n });\n};\n\nexport const changeOverlayOpacity = (opacity: number) => (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: CHANGE_OVERLAY_OPACITY,\n payload: opacity,\n });\n};\n\nexport const setMappairPointModeOff = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_MAPPAIR_POINT_MODE_OFF,\n });\n};\n\nexport const setMappairPointModeOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_MAPPAIR_POINT_MODE_ON,\n });\n};\n\nexport const showAQMALayer = () => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_AQMA_LAYER,\n loading: true,\n });\n};\n\nexport const showSchoolsLayer = () => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_SCHOOLS_LAYER,\n loading: true,\n });\n};\n\nexport const showSmokeControlZones = () => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_SMOKE_CONTROL_ZONES,\n loading: true,\n });\n};\n\nexport const showOverlayLayer = (isLayerOn?: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_OVERLAY_LAYER,\n payload: isLayerOn\n });\n};\n\nexport const showSatelliteLayer = () => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_SATELLITE_LAYER,\n });\n};\n\nexport const showOSMLayer = () => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_OSM_LAYER,\n });\n};\n\nexport const showAALayer = (isAALayerOn?: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SHOW_AA_LAYER,\n payload: isAALayerOn\n });\n};\n\nexport const setAnnualAverage = (annualAvg: number) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ANNUAL_AVERAGE,\n payload: annualAvg\n })\n}","// Types Imports\nimport { Dispatch } from 'redux';\nimport {\n SET_FEEDBACK,\n SET_FEEDBACK_IDX,\n SET_FEEDBACK_OFF,\n SET_FEEDBACK_ON,\n} from './types';\n\n// Type Imports\nimport { FeedbackQuestion } from '../utils/interface';\n\n// Action Creators\nexport const setFeedback = (feedback: FeedbackQuestion[]) => (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_FEEDBACK,\n payload: feedback,\n });\n};\n\nexport const setFeedbackIdx = (idx: number) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_FEEDBACK_IDX,\n payload: idx,\n });\n};\n\nexport const setFeedbackOff = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_FEEDBACK_OFF,\n });\n};\n\nexport const setFeedbackOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_FEEDBACK_ON,\n });\n};\n","// Util Imports\nimport { Dispatch } from 'redux';\nimport utilsRequest from '../utils/request';\n\n// Type Imports\nimport { SET_LOCATION, SET_UNIT_LOCATION, MAPS_LOCATION_LOADED } from './types';\n\n// Action Creators\nexport const checkLocation = async (location: string, searchBias = 'null') => {\n if (location) {\n const newLocation = await utilsRequest.setLocation(location, searchBias);\n const newGeometry = newLocation.results[0].geometry.location;\n return newGeometry;\n }\n return null;\n};\n\nexport const setLocation = (location: string, searchBias: string) => async (\n dispatch: Dispatch,\n) => {\n if (location) {\n const newLocation = await checkLocation(location, searchBias);\n dispatch({\n type: SET_LOCATION,\n payload: [newLocation.lng, newLocation.lat],\n });\n }\n};\n\nexport const setUnitLocation = (lng: number, lat: number) => (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_UNIT_LOCATION,\n payload: [lng, lat],\n });\n};\n\nexport const mapsLocationLoaded = (loaded: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: MAPS_LOCATION_LOADED,\n payload: loaded,\n });\n};\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Types Imports\nimport { SET_AIR_ALERTS } from './types';\n\n// Type Imports\nimport { AirAlerts } from '../utils/interface';\n\n// Action Creators\nexport const setAirAlerts = (airAlerts: AirAlerts) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_AIR_ALERTS,\n payload: airAlerts,\n });\n};\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport parse from 'html-react-parser';\n\n// Type Imports\nimport { DropdownSelection, Overlay, ReduxState, Stylegroup } from '../../utils/interface';\nimport { connect } from 'react-redux';\n\n// Type Safety\ninterface DropdownProps {\n currentPollutant?: string | null;\n setCurrentPollutant?: Function;\n additionalClass?: string;\n currentSelectionValue: string;\n handleSelection: Function;\n id: string;\n placeholderSelectionLabel: string;\n selections: DropdownSelection[];\n stylegroups: Stylegroup[];\n threshold: string;\n curOverlayName: string;\n overlays: Overlay[];\n mappAirFilters: boolean;\n alert?: any;\n selectedAlert?: any;\n annualAveragesOn?: boolean;\n dynamicStyles?: any;\n}\n\n// Component\nconst Dropdown = ({\n currentPollutant,\n setCurrentPollutant,\n additionalClass,\n currentSelectionValue,\n handleSelection,\n id,\n placeholderSelectionLabel,\n selections,\n alert,\n selectedAlert,\n annualAveragesOn,\n stylegroups,\n threshold,\n curOverlayName,\n overlays,\n mappAirFilters,\n dynamicStyles,\n}: DropdownProps) => {\n const [showDropdown, setShowDropdown] = useState(false);\n\n const currentSelectionLabel = !selectedAlert || (id !== 'perioddropdown' && currentSelectionValue)\n ? selections.filter((s) => s.value === currentSelectionValue).length\n ? selections.filter((s) => s.value === currentSelectionValue)[0].label\n : placeholderSelectionLabel\n : !currentSelectionValue && id === 'perioddropdown' && alert.airAlerts[0].Duration ? selections.filter((s) => s.value === alert.airAlerts[0].Duration.toString())[0].label : currentSelectionValue && id === 'perioddropdown' ? selections.filter((s) => s.value === currentSelectionValue)[0].label : placeholderSelectionLabel;\n\n const handleDropdownSelection = (value: string) => {\n setShowDropdown(false);\n handleSelection(id, value);\n if (id === 'species-selection' && setCurrentPollutant) setCurrentPollutant(value)\n };\n\n useEffect(() => {\n if (id === 'species-selection' && setCurrentPollutant && !currentPollutant) setCurrentPollutant(currentSelectionValue);\n }, [currentSelectionValue]);\n\n const curStylegroup = stylegroups.filter(\n (group) => group.name === threshold,\n )[0];\n\n const getOverlay = (updatedSpeciesIdentifier: string) => {\n return overlays.filter(\n (ol) =>\n ol.speciesIdentifier === updatedSpeciesIdentifier &&\n (mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay),\n )[0]\n };\n\n return (\n
\n
\n setShowDropdown(!showDropdown)}\n >\n {parse(currentSelectionLabel)}\n
\n setShowDropdown(false)}\n style={{ position: 'absolute', top: 27, width: '-webkit-fill-available' }}\n >\n {selections\n .filter((sf) => {\n if (!annualAveragesOn) return sf.value !== currentSelectionLabel;\n return sf.value !== currentSelectionLabel && sf.value !== 'AQI';\n })\n .map((s) => (\n handleDropdownSelection(s.value)}\n style={dynamicStyles && curStylegroup && {\n pointerEvents: Object.keys(curStylegroup.thresholds).find((sg) => {\n const reformattedSpecie = s.value === 'PM2p5' ? 'PM25' : s.value;\n const value = getOverlay(s.value)?.name.includes(reformattedSpecie) && sg === getOverlay(s.value)?.name;\n return value;\n }) ? 'initial' : 'none', opacity: Object.keys(curStylegroup.thresholds).find((sg) => {\n const reformattedSpecie = s.value === 'PM2p5' ? 'PM25' : s.value;\n const value = getOverlay(s.value)?.name.includes(reformattedSpecie) && sg === getOverlay(s.value)?.name;\n return value;\n }) ? 1 : 0.5\n }}\n >\n {parse(s.label)}\n \n ))}\n \n
\n {\n e.preventDefault();\n setShowDropdown(!showDropdown);\n }}\n type=\"button\"\n />\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n stylegroups: state.getStyleGroups.styleGroups,\n threshold: state.setThresholdTab.tab,\n curOverlayName: state.showAQMALayer.overlay,\n overlays: state.setOverlays,\n mappAirFilters: state.mappAirFilters.showMappAirFilters\n});\n\nexport default connect(mapStateToProps, {})(Dropdown);\n","// Package Imports\nimport { v4 as uuidv4 } from 'uuid';\n\n// Type Imports\nimport {\n AlertMappedSpeciesExtent,\n AlertPeriod,\n AlertRepeat,\n AlertThreshold,\n DisplayConfig,\n SpeciesDataIdentifiers,\n SpeciesExtentIdentifiers,\n SpeciesExtentIndEnriched,\n ZephyrAlertUnit,\n SpeciesData,\n Zephyr\n} from '../interface';\nimport { gaseousSlots } from '../consts';\nimport { display } from 'html2canvas/dist/types/css/property-descriptors/display';\n\n/* Function\nDESC: orderSpeciesExtent returns an orderd speciesExtent array according to displayConfig\nARGS: displayConfig (derived from the getDisplayConfig API call), species extent.\n*/\nconst orderSpeciesExtent = (\n displayConfig: DisplayConfig,\n mappedSpeciesExtent: AlertMappedSpeciesExtent[],\n) => {\n const orderedMappedSpeciesExtent: AlertMappedSpeciesExtent[] = [];\n displayConfig.tabs.forEach((tab) =>\n tab.species.forEach((species) =>\n mappedSpeciesExtent.forEach((mappedSpeciesExtent) => {\n if (mappedSpeciesExtent.dataIdentifier === species.dataIdentifier) {\n orderedMappedSpeciesExtent.push(mappedSpeciesExtent);\n }\n }),\n ),\n );\n return orderedMappedSpeciesExtent;\n};\n\n/* Function\nDESC: mapSpeciesExtentToAlerts returns an array of mapped species extents with enriched properties of\n alerts. Unused species are added with their default settings.\nARGS: airAlerts, speciesExtent (created in the calling function).\n*/\nconst mapSpeciesExtentToAlerts = (\n airAlerts: SpeciesData[],\n speciesExtent: SpeciesExtentIndEnriched[],\n) => {\n const mappedSpeciesExtent: AlertMappedSpeciesExtent[] = [];\n speciesExtent.forEach((se) =>\n airAlerts.forEach((aa, idx) => {\n if (se.dataIdentifier === aa.Species) {\n // parse alertLevel to string\n const formattedAa: AlertMappedSpeciesExtent = {\n period: \"\",\n threshold: aa.Comparator as AlertThreshold,\n repeat: \"\",\n alertLevel:\n aa.Threshold != null ? aa.Threshold.toString() : '',\n dataIdentifier: se.dataIdentifier,\n HTMLLabel: se.HTMLLabel,\n HTMLShortUnitLabel: se.HTMLShortUnitLabel,\n HTMLUnitLabel: se.HTMLUnitLabel,\n id: aa.Species,\n speciesExtentIdentifier: se.speciesExtentIdentifier,\n status: false\n };\n const enrichedSpeciesExtent = {\n ...formattedAa,\n ...se,\n id: uuidv4(),\n status: true,\n };\n //delete enrichedSpeciesExtent.species\n mappedSpeciesExtent.push(enrichedSpeciesExtent);\n }\n }),\n );\n speciesExtent.forEach((se) => {\n const speciesUsed = mappedSpeciesExtent.filter(\n (mSE) => mSE.dataIdentifier === se.dataIdentifier,\n );\n if (!speciesUsed.length) {\n const period: AlertPeriod = '';\n const repeat: AlertRepeat = '';\n const threshold: AlertThreshold = '';\n const enrichedSpeciesExtent = {\n ...se,\n alertLevel: '',\n id: uuidv4(),\n period,\n repeat,\n status: false,\n threshold,\n dataIdentifier: se.dataIdentifier,\n };\n mappedSpeciesExtent.push(enrichedSpeciesExtent);\n }\n });\n return mappedSpeciesExtent;\n};\n\n/* Function\nDESC: getDataIdentifier returns the dataIdentifier to match Alert species types with main Data types\nARGS: displayConfig (derived from the getDisplayConfig API call), HTMLLabel of species.\n*/\nconst getDataIdentifier = (displayConfig: DisplayConfig, HTMLLabel: string) => {\n const { dataIdentifier } = displayConfig.tabs\n .map(\n (tab) =>\n tab.species.filter((species) => species.HTMLLabel === HTMLLabel)[0],\n )\n .filter((speciesMatch) => speciesMatch)[0];\n return dataIdentifier;\n};\n\n/* Function\nDESC: speciesExtentFinder returns an array of species that exist across a given set of Zephyrs\nARGS: displayConfig (derived from the getDisplayConfig API call), list of currently selected Zephyrs\n on an alert.\n*/\nexport const speciesExtentFinder = (\n displayConfig: DisplayConfig,\n zephyrs: ZephyrAlertUnit[],\n zephyrsList?: Zephyr[] | null\n) => {\n const zList = zephyrsList !== null ? zephyrsList : zephyrs as (ZephyrAlertUnit | Zephyr)[]\n const alertZephyrsList = zList?.filter((z) => {\n let zephyrFounded = false;\n for (let i = 0; i < zephyrs.length; i++) {\n if (z.id_pod === zephyrs[i].id_pod && ((typeof z.HasCertificate === 'number' && z.type === 0) || z.type === 100)) {\n zephyrFounded = true;\n break;\n }\n }\n if (zephyrFounded) return z;\n });\n const speciesExtent: SpeciesExtentIndEnriched[] = [];\n alertZephyrsList?.forEach((z) => {\n const slotSpeciesCombined: SpeciesExtentIdentifiers[] = [];\n slotSpeciesCombined.push('Charge');\n if (z.type === 0) {\n gaseousSlots.forEach((gs) => {\n if (z.slotsInfo) {\n const slotInfo = z.slotsInfo[gs.label];\n if (slotInfo && slotInfo.species) {\n slotInfo.species.forEach((sp) => {\n if (!slotSpeciesCombined.includes(sp)) {\n slotSpeciesCombined.push(sp);\n }\n });\n }\n }\n });\n }\n else if (z.type === 100) {\n if (z.species) {\n z.species.forEach((sp: any) => {\n if (!slotSpeciesCombined.includes(sp)) {\n slotSpeciesCombined.push(sp);\n }\n });\n }\n }\n if (slotSpeciesCombined.length) {\n slotSpeciesCombined.forEach((zSe) => {\n const speciesExtentFiltered = speciesExtent.filter(\n (spE) => spE.speciesExtentIdentifier === zSe,\n );\n if (!speciesExtentFiltered.length) {\n displayConfig.speciesExtent.forEach((dcSE) => {\n if (dcSE.dataIdentifier === zSe) {\n dcSE.species.forEach((dcSES) => {\n const { HTMLLabel, HTMLUnitLabel, HTMLShortUnitLabel } = dcSES;\n const dataIdentifier: SpeciesDataIdentifiers = getDataIdentifier(\n displayConfig,\n HTMLLabel,\n );\n const newSpeciesExtent = {\n dataIdentifier,\n speciesExtentIdentifier: dcSE.dataIdentifier,\n HTMLLabel,\n HTMLUnitLabel,\n HTMLShortUnitLabel,\n };\n speciesExtent.push(newSpeciesExtent);\n });\n }\n });\n }\n });\n }\n });\n return speciesExtent;\n};\n\n/* Function\nDESC: speciesExtentProvider packages all of the functions need to create the initialised list of \n gas alerts for a set of Zephyrs and Alerts on Configurator mount\nARGS: airAlerts(derived from getAlerts API call), displayConfig (derived from the getDisplayConfig API call), list of currently selected Zephyrs\n on an alert.\n*/\nconst speciesExtentProvider = (\n airAlerts: SpeciesData[],\n displayConfig: DisplayConfig,\n zephyrs: ZephyrAlertUnit[],\n zephyrsList?: Zephyr[]\n) => {\n const speciesExtent = speciesExtentFinder(displayConfig, zephyrs, zephyrsList);\n // Combine species extent with alerts and add unused species\n const mappedSpeciesExtent = mapSpeciesExtentToAlerts(\n airAlerts,\n speciesExtent,\n );\n // Order species according to displayConfig\n const orderedMappedSpeciesExtent = orderSpeciesExtent(\n displayConfig,\n mappedSpeciesExtent,\n );\n return orderedMappedSpeciesExtent;\n};\n\n/* Function\nDESC: speciesExtentUpdater returns of mappedSpeciesAirAlerts updated according to a new list of Zephyrs and\n their associated species extents\nARGS: mappedSpeciesExtent (as is displayed on Alerts Configurator), displayConfig (derived from the getDisplayConfig API call), list of currently \n selected Zephyrs on an alert.\n*/\nconst speciesExtentUpdater = (\n displayConfig: DisplayConfig,\n mappedSpeciesExtent: AlertMappedSpeciesExtent[],\n zephyrs: ZephyrAlertUnit[],\n zephyrsList?: Zephyr[]\n) => {\n // For the list of alertZephyrs, work out the array of species allowed\n const speciesExtent = speciesExtentFinder(displayConfig, zephyrs, zephyrsList);\n let updatedMappedSpeciesExtent: AlertMappedSpeciesExtent[] = mappedSpeciesExtent;\n // If there are species in z list that aren't in ag list, add them with default values\n speciesExtent.forEach((se) => {\n const speciesUsed = mappedSpeciesExtent.filter(\n (mSE) => mSE.dataIdentifier === se.dataIdentifier,\n );\n if (!speciesUsed.length) {\n const period: AlertPeriod = '';\n const repeat: AlertRepeat = '';\n const threshold: AlertThreshold = '';\n const enrichedSpeciesExtent = {\n ...se,\n alertLevel: '',\n id: uuidv4(),\n period,\n repeat,\n status: false,\n threshold,\n dataIdentifier: se.dataIdentifier,\n };\n updatedMappedSpeciesExtent.push(enrichedSpeciesExtent);\n }\n });\n // If there are species in ag list that aren't in z list, remove them\n updatedMappedSpeciesExtent.forEach((umSE) => {\n const speciesExtentIncluded = speciesExtent.filter(\n (se) => se.dataIdentifier === umSE.dataIdentifier,\n );\n if (!speciesExtentIncluded.length) {\n updatedMappedSpeciesExtent = updatedMappedSpeciesExtent.filter(\n (umSE2) => umSE2.dataIdentifier !== umSE.dataIdentifier,\n );\n }\n });\n const orderedUpdatedMappedSpeciesExtent = orderSpeciesExtent(\n displayConfig,\n updatedMappedSpeciesExtent,\n );\n return orderedUpdatedMappedSpeciesExtent;\n};\n\n/* Function\nDESC: speciesExtentInputter returns of mappedSpeciesAirAlerts with an added species item\nARGS: species data identifier, displayConfig (derived from the getDisplayConfig API call), mappedSpeciesExtent (as is displayed on Alerts Configurator).\n*/\nconst speciesExtentInputter = (\n dataIdentifier: SpeciesDataIdentifiers,\n displayConfig: DisplayConfig,\n mappedSpeciesExtent: AlertMappedSpeciesExtent[],\n) => {\n const updatedMappedSpeciesExtent = mappedSpeciesExtent;\n const speciesExtentMatcher = mappedSpeciesExtent.filter(\n (mSE) => mSE.dataIdentifier === dataIdentifier,\n );\n if (speciesExtentMatcher.length) {\n // replace the id with a new id for the new SE\n const period: AlertPeriod = '';\n const repeat: AlertRepeat = '';\n const threshold: AlertThreshold = '';\n const newSpeciesExtentItem = {\n ...speciesExtentMatcher[0],\n alertLevel: '0',\n id: uuidv4(),\n period,\n repeat,\n threshold,\n };\n updatedMappedSpeciesExtent.push(newSpeciesExtentItem);\n }\n const orderedUpdatedMappedSpeciesExtent = orderSpeciesExtent(\n displayConfig,\n updatedMappedSpeciesExtent,\n );\n return orderedUpdatedMappedSpeciesExtent;\n};\n\nexport { speciesExtentInputter, speciesExtentProvider, speciesExtentUpdater };\n","// Util Imports\nimport { current } from './dateFinder';\n\n// Types Imports\nimport {\n AirAlerts,\n AlertObject,\n AlertPeriod,\n AlertRepeat,\n AlertThreshold,\n APIAirAlert,\n AlertModel,\n Auth,\n SpeciesDataIdentifiers,\n BatteryAlert,\n APIAirAlertTarget,\n SpeciesAlert,\n SpeciesData,\n APIAirAlertParameter\n} from '../interface';\n\nconst repeatMapper: { [key: number]: AlertRepeat } = {\n 0: 'never',\n 60: 'hourly',\n 1440: 'daily',\n};\n\nconst periodMapperReverse: { [key: string]: number } = {\n instant: 0,\n '15 min': 15,\n '30 min': 30,\n '1 hr': 60,\n};\n\nconst repeatMapperRerverse: { [key: string]: number } = {\n never: 0,\n hourly: 60,\n daily: 1440,\n};\n\n// Functions\n/* Function\nDESC: airAlertsApiPackager returns a packaged and formatted air alerts state, translating the air alerts api format\nARGS: an api GetAlerts response\n*/\nconst airAlertsApiPackager = (apiAlerts: APIAirAlert[]) => {\n const packagedAirAlerts = apiAlerts.map((aA) => {\n let returnValue: AlertObject = {\n airAlerts: [],\n batteryAlert: {\n id: '',\n znum: 0,\n comparator: '',\n batteryCharge: 0,\n batteryVoltage: 0,\n externalVoltage: 0,\n status: false,\n },\n id: 0,\n name: '',\n units: [],\n status: true,\n email: [],\n phoneNumbers: []\n }\n returnValue.airAlerts = JSON.parse(aA.jsonOutput) as SpeciesData[]\n returnValue.airAlerts.map((ap) =>{\n returnValue.units = ap.Znumbers;\n })\n //aA.Parameters.map((ap) => {\n // returnValue.units = ap.Znumbers;\n // let alert: SpeciesData = {\n // Comparator: ap.Comparator,\n // Duration: ap.Duration,\n // username: ap.username,\n // userkey: ap.userkey,\n // Species: ap.Species,\n // Threshold: ap.Threshold,\n // Znumbers: ap.Znumbers\n // };\n // returnValue.airAlerts.push(alert);\n //});\n if(returnValue.id === null || returnValue.id === 0){\n returnValue.id = aA.alertId;\n }\n returnValue.name = `${aA.name ?? aA.alertId}`;\n\n // should come from targets param - currently being moved from separate endpoint\n aA.targets.map((aT) => {\n if (aT.emailAddress && !returnValue.email.includes(aT.emailAddress) && aT.emailAddress != '') {\n returnValue.email.push(aT.emailAddress)\n }\n });\n aA.targets.map((aT) => {\n if (aT.phoneNumber && !returnValue.phoneNumbers.includes(aT.phoneNumber) && aT.phoneNumber != '') {\n returnValue.phoneNumbers.push(aT.phoneNumber)\n }\n })\n return returnValue;\n });\n const formattedPackagedAirAlerts: AirAlerts = { alerts: packagedAirAlerts };\n return formattedPackagedAirAlerts;\n};\n\n\n/* Function\nDESC: airAlertsConfiguratorPackager returns a packaged and formatted api alert array ready for API processing\nARGS: an array of api GetAlerts request bodies for the AddAlerts endpoint\n*/\nconst airAlertsConfiguratorPackager = (\n auth: Auth,\n configuredAlerts: AlertObject,\n) => {\n \n const newAlertMetaTargets: APIAirAlertTarget[] = [];\n\n if(configuredAlerts.email.length > 0){\n for(let i = 0; i < configuredAlerts.email.length; i++){\n newAlertMetaTargets.push({\n targetId: i,\n firstName: '',\n lastName: '',\n emailAddress: configuredAlerts.email[i],\n phoneNumber: '',\n organisation: auth.user,\n alertId: configuredAlerts.id\n });\n }\n }\n\n if(configuredAlerts.phoneNumbers.length > 0){\n for(let i = 0; i < configuredAlerts.phoneNumbers.length; i++){\n newAlertMetaTargets.push({\n targetId: i,\n firstName: '',\n lastName: '',\n emailAddress: '',\n phoneNumber: configuredAlerts.phoneNumbers[i],\n organisation: auth.user,\n alertId: configuredAlerts.id\n });\n }\n }\n\n const packagedAirAlertRequests: AlertModel = {\n AlertId: configuredAlerts.id,\n AlertClassId: 4,\n Name: configuredAlerts.name,\n Organisation: auth.user,\n FirstName: String(auth.user),\n LastName: String(auth.user),\n PhoneNumber: newAlertMetaTargets[0].phoneNumber ?? null,\n EmailAddress: newAlertMetaTargets[0].emailAddress ?? null,\n StartDate: current('YYYY-MM-DD'),\n EndDate: null,\n //We can do this because the configurator only accepts a single duration so they should all be the same when coming from MyAir\n Interval: configuredAlerts.airAlerts[0].Duration,\n TimeOffset: 0,\n Targets: newAlertMetaTargets,\n JsonInput: configuredAlerts.airAlerts\n };\n return packagedAirAlertRequests;\n}\n\nconst makeSpeciesAlert = (alertTargets: APIAirAlertTarget[], auth: Auth, alertId: number, zNumber: number, configuredAlert: SpeciesData[], alias: string) => {\n const alert: AlertModel = {\n AlertId: alertId,\n Name: alias,\n AlertClassId: 4,\n Organisation: auth.user,\n FirstName: String(auth.user),\n LastName: String(auth.user),\n PhoneNumber: '',\n EmailAddress: alertTargets[0].emailAddress ?? '',\n StartDate: current('YYYY-MM-DD'),\n EndDate: null,\n Interval: 0,\n TimeOffset: 0,\n Targets: alertTargets,\n JsonInput: configuredAlert\n };\n return alert;\n}\n\nconst makeBatteryAlert = (alertTargets: APIAirAlertTarget[], batteryCharge: number, zNumber: number, alertId: number, auth: Auth, configuredAlert: BatteryAlert, alias: string) => {\n const alert: AlertModel = {\n AlertId: alertId,\n Name: alias,\n AlertClassId: 4,\n Organisation: auth.user,\n FirstName: String(auth.user),\n LastName: String(auth.user),\n PhoneNumber: '',\n EmailAddress: alertTargets[0].emailAddress ?? '',\n StartDate: current('YYYY-MM-DD'),\n EndDate: null,\n Interval: 0,\n TimeOffset: 0,\n Targets: alertTargets,\n JsonInput: []\n };\n return alert;\n}\n\nexport { airAlertsApiPackager, airAlertsConfiguratorPackager }\n","// Package Imports\nimport React from 'react';\n\n// Component Interfaces\ninterface SpinnerProps {\n additionalClass?: string;\n on: boolean | any;\n}\n\n// Component\nconst Spinner = ({ additionalClass, on }: SpinnerProps) => (\n <>\n {on ? (\n
\n
\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((s) => (\n
\n ))}\n
\n
\n ) : (\n <>\n )}\n \n);\n\nexport default Spinner;\n","// Package Imports\nimport React, { useState, useEffect, useContext } from 'react';\nimport { connect, useSelector } from 'react-redux';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\nimport utilsRequest from '../../utils/request'\n// Component Imports\nimport Dropdown from '../shared_components/Dropdown';\n\n// Util Imports\nimport {\n speciesExtentInputter,\n speciesExtentProvider,\n speciesExtentUpdater,\n} from '../../utils/functions/speciesExtentFinder';\nimport { airAlertsConfiguratorPackager } from '../../utils/functions/airAlertsInterface';\nimport { getAuth } from '../../utils/functions/getAuth';\n\n// Content Imports\nimport {\n alertPeriodSelections,\n alertRepeatSelections,\n alertThresholdSelections,\n gaseousSlots,\n unitSelections,\n unitStatus,\n} from '../../utils/consts';\n\n\n// Type Imports\nimport {\n AirAlerts,\n AlertErrors,\n AlertMappedSpeciesExtent,\n BatteryAlert,\n AlertObject,\n AlertPeriod,\n AlertRepeat,\n AlertThreshold,\n Auth,\n DisplayConfig,\n ReduxState,\n UnitSelection,\n Zephyr,\n ZephyrAlertUnit,\n SpeciesDataIdentifiers,\n APIAirAlertPost,\n APIAirAlertTarget,\n SpeciesAlert,\n SpeciesData,\n SlotsInfo,\n} from '../../utils/interface';\nimport { setZephyrs } from '../../actions/zephyrs';\nimport Spinner from '../shared_components/Spinner';\nimport ZephyrSelectionDropdown from '../shared_components/ZephyrSelectionDropdown';\n\n// Type Safety\ninterface AirAlertsOverviewProps {\n airAlerts: AirAlerts | null;\n auth: Auth;\n endEdit: Function;\n displayConfig: DisplayConfig;\n selectedAlert: AlertObject | null;\n updateAlert: Function;\n addTarget: Function;\n removeAlertTarget: Function;\n zephyrs: Zephyr[];\n bearerToken: string | null;\n}\n\ninterface InitState {\n alert: AlertObject;\n alertsGasses: AlertMappedSpeciesExtent[];\n alertZephyrs: ZephyrAlertUnit[];\n errors: AlertErrors[];\n outputEmail: string;\n outputPhoneNumber: string;\n searchZephyrs: ZephyrAlertUnit[];\n zephyrSearch: string;\n zephyrSearchActive: boolean;\n unitSelection: UnitSelection;\n periodSelection: AlertPeriod;\n}\n\n// Component\nconst AirAlertsConfigurator = ({\n auth,\n endEdit,\n displayConfig,\n selectedAlert,\n updateAlert,\n addTarget,\n removeAlertTarget,\n zephyrs,\n bearerToken,\n}: AirAlertsOverviewProps) => {\n const { t: translate } = useTranslation();\n const determineStartingUnitSelection = () => {\n const startingUnitSelection = unitSelections.unitSelectionOptions[0];\n if (selectedAlert) {\n const userCurZephyrs = zephyrs.filter(\n (z) => z.type === 0 && (!z.userEndTimeDate || new Date(z.userEndTimeDate) > new Date()),\n );\n const startingUnitSelection =\n selectedAlert.units.length === userCurZephyrs.length;\n if (startingUnitSelection) {\n return unitSelections.unitSelectionOptions[1];\n }\n }\n return startingUnitSelection;\n };\n\n // State\n const initState: InitState = {\n alert: {\n airAlerts: [],\n batteryAlert: {\n id: '',\n comparator: '',\n status: false,\n batteryCharge: 0,\n batteryVoltage: 0,\n externalVoltage: 0,\n znum: 0,\n },\n id: null,\n name: '',\n units: [],\n status: true,\n email: [],\n phoneNumbers: [],\n },\n alertsGasses: [],\n alertZephyrs: [],\n errors: [],\n outputEmail: '',\n outputPhoneNumber: '',\n searchZephyrs: [],\n zephyrSearch: '',\n zephyrSearchActive: false,\n unitSelection: determineStartingUnitSelection(),\n periodSelection: '',\n };\n\n const [alert, setAlert] = useState(initState.alert);\n const [alertGasses, setAlertGasses] = useState(initState.alertsGasses);\n const [batteryAlert, setBatteryAlert] = useState(\n initState.alert.batteryAlert,\n );\n const [alertZephyrs, setAlertZephyrs] = useState(initState.alertZephyrs);\n const [errors, setErrors] = useState(initState.errors);\n const [outputEmail, setOutputEmail] = useState(initState.outputEmail);\n const [outputPhoneNumber, setPhoneNumber] = useState(initState.outputPhoneNumber)\n const [searchZephyrs, setSearchZephyrs] = useState(initState.searchZephyrs);\n const [zephyrSearch, setZephyrSearch] = useState(initState.zephyrSearch);\n const [zephyrSearchActive, setZephyrSearchActive] = useState(\n initState.zephyrSearchActive,\n );\n const [unitSelection, setUnitSelection] = useState(initState.unitSelection);\n const [periodSelection, setTimePeriod] = useState(initState.periodSelection);\n const [isCartridgeDataLoading, setIsCartridgeDataLoading] = useState(false);\n const phoneValidation = '^([+])([0-9]){9,12}';\n const emailValidation = '[a-z0-9]+(?:\\.[a-z0-9]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?';\n \n const alertsTourOpen = useSelector((state: ReduxState) => state.alertsTourOpen);\n\n // Effects\n useEffect(() => {\n // Populate state with current state of the alert\n // Determine whether specific units or all units\n const userCurZephyrs = zephyrs.filter(\n (z) => z.type === 0 && (!z.userEndTimeDate || new Date(z.userEndTimeDate) > new Date()),\n );\n const enrichedUserAlertZephyrs = userCurZephyrs.map((z) => {\n const enrichedZephyr = { ...z, alertStatus: false };\n return enrichedZephyr;\n });\n // Exploit closure for species list\n let selectedAlertZephyrSet = enrichedUserAlertZephyrs;\n if (selectedAlert) {\n const enrichedSelectedUserAlertZephyrs = enrichedUserAlertZephyrs.map(\n (z) => {\n const enrichedSelectedZephyr = {\n ...z,\n alertStatus: selectedAlert.units.includes(z.zNumber),\n };\n return enrichedSelectedZephyr;\n },\n );\n const determinedSpecificUnit =\n selectedAlert.units.length === userCurZephyrs.length\n ? unitSelections.unitSelectionOptions[1]\n : unitSelections.unitSelectionOptions[0];\n selectedAlertZephyrSet = enrichedSelectedUserAlertZephyrs;\n setAlert(selectedAlert);\n setUnitSelection(determinedSpecificUnit);\n setAlertZephyrs(enrichedSelectedUserAlertZephyrs);\n } else {\n setAlertZephyrs(enrichedUserAlertZephyrs);\n }\n // Initialize set of species for gas table\n const airAlerts: SpeciesData[] = selectedAlert\n ? (selectedAlert.airAlerts as SpeciesData[])\n : [];\n const selectedZephyrs = selectedAlertZephyrSet.filter((z) => z.alertStatus);\n const mappedSpeciesExtent = speciesExtentProvider(\n airAlerts,\n displayConfig,\n selectedZephyrs,\n zephyrs\n );\n setAlertGasses(mappedSpeciesExtent);\n }, [isCartridgeDataLoading]);\n\n useEffect(() => {\n const updateCartridgeData = async () => {\n if (zephyrs) {\n for await (const z of zephyrs) {\n if (!z.slotsInfo) {\n const packagedSlotsInfo: SlotsInfo = {\n slotA: null,\n slotB: null,\n };\n if (!z.userEndTimeDate || new Date(z.userEndTimeDate) > new Date()) {\n for await (const gS of gaseousSlots) {\n const slotSerial = z[`${gS.label}_SN`];\n if (slotSerial) {\n const slotInfo = await utilsRequest.getCartridge(slotSerial, bearerToken);\n if (slotInfo) {\n packagedSlotsInfo[gS.label] = slotInfo;\n }\n }\n };\n const copyZephyrsList = [...zephyrs];\n const newData = copyZephyrsList.find((zR) => zR.id_pod === z.id_pod);\n if (newData) newData.slotsInfo = packagedSlotsInfo;\n setZephyrs(copyZephyrsList);\n }\n }\n }\n }\n }\n // IIFY\n (async () => {\n setIsCartridgeDataLoading(true);\n await updateCartridgeData();\n setIsCartridgeDataLoading(false);\n })();\n }, [])\n\n // Functions\n const addAlertGas = (dataIdentifier: SpeciesDataIdentifiers) => {\n const updatedAlertGasses = speciesExtentInputter(\n dataIdentifier,\n displayConfig,\n alertGasses,\n );\n setAlertGasses(updatedAlertGasses);\n };\n\n const addEmailAddress = () => {\n if (outputEmail) {\n if (!alert.email.includes(outputEmail)) {\n if (!outputEmail.match(emailValidation)) {\n const errors: AlertErrors[] = ['email'];\n setErrors(errors);\n return;\n }\n const updatedAlertEmailList = [...alert.email, outputEmail];\n const updatedAlert = { ...alert, email: updatedAlertEmailList };\n submitAddingTarget();\n setAlert(updatedAlert);\n setOutputEmail(initState.outputEmail);\n removeError('email');\n }\n }\n };\n\n const addPhoneNumbers = () => {\n if (outputPhoneNumber) {\n if (!alert.phoneNumbers.includes(outputPhoneNumber)) {\n if (!outputPhoneNumber.match(phoneValidation)) {\n const errors: AlertErrors[] = ['phonenumber'];\n setErrors(errors);\n return;\n }\n const updatedAlertEmailList = [...alert.phoneNumbers, outputPhoneNumber];\n const updatedAlert = { ...alert, phoneNumbers: updatedAlertEmailList };\n submitAddingTarget();\n setAlert(updatedAlert);\n setPhoneNumber(initState.outputPhoneNumber);\n removeError('phonenumber');\n }\n }\n }\n\n const changeAlertZephyrStatus = (zNumber: number) => {\n const updatedAlertZephyrs = alertZephyrs.map((z) => {\n const updatedAlertZephyr = z;\n if (z.zNumber === zNumber) {\n updatedAlertZephyr.alertStatus = !updatedAlertZephyr.alertStatus;\n }\n return updatedAlertZephyr;\n });\n const updatedSearchUnits = updatedAlertZephyrs.filter(\n (z) => !z.alertStatus,\n );\n if (zephyrSearchActive) {\n setSearchZephyrs(updatedSearchUnits);\n }\n if (updatedSearchUnits.length === 0) {\n setUnitSelection(unitSelections.unitSelectionOptions[1]);\n } else {\n setUnitSelection(unitSelections.unitSelectionOptions[0]);\n }\n const selectedAlertZephyrs = updatedAlertZephyrs.filter(\n (z) => z.alertStatus,\n );\n // console.log(displayConfig, alertGasses);\n const updatedAlertGasses = speciesExtentUpdater(\n displayConfig,\n alertGasses,\n selectedAlertZephyrs,\n zephyrs\n );\n if (selectedAlertZephyrs.length) {\n removeError('sourceSelect');\n }\n // console.log(updatedAlertGasses);\n setAlertGasses(updatedAlertGasses);\n setAlertZephyrs(updatedAlertZephyrs);\n };\n\n const checkCompleteGasAlert = (airAlertId: string, typeAdded: string) => {\n const alert = alertGasses.filter((ag) => ag.id === airAlertId)[0];\n alert[typeAdded] = true;\n const { alertLevel, threshold, status } = alert;\n const completedAlert = alertLevel && threshold && status;\n if (completedAlert) {\n removeError('dataSelect');\n }\n };\n\n const determineSearchableList = () => {\n if (zephyrSearchActive) {\n return searchZephyrs;\n }\n const searchableZephyrs = alertZephyrs.filter((z) => !z.alertStatus);\n return searchableZephyrs;\n };\n\n const submitAddingTarget = () => {\n if (selectedAlert) {\n const target: APIAirAlertTarget = {\n //ToDo: Add first and last names at some point\n targetId: 0,\n firstName: '',\n lastName: '',\n emailAddress: outputEmail ?? null,\n phoneNumber: outputPhoneNumber ?? null,\n organisation: auth.user,\n alertId: alert.id\n };\n addTarget(target);\n }\n }\n //};\n const handleAlertSubmission = () => {\n // add zephyrs and air alerts\n const auth2 = getAuth();\n const alertZephyrsList = alertZephyrs\n .filter((az) => az.alertStatus)\n .map((az) => az.zNumber);\n const alertGassesList: SpeciesData[] = [];\n alertGasses.forEach((ag) => {\n if (ag.status && ag.dataIdentifier && ag.threshold && ag.alertLevel) {\n const newAlertGas: SpeciesData = {\n Species: ag.dataIdentifier,\n Comparator: ag.threshold,\n Threshold: parseInt(ag.alertLevel),\n Duration: periodSelection ? parseInt(periodSelection) : selectedAlert!.airAlerts[0].Duration,\n username: auth2,\n userkey: auth2,\n Znumbers: alertZephyrsList,\n };\n alertGassesList.push(newAlertGas);\n }\n });\n // check for minimum alert requirements and update state if missed\n let hasUnitAlert: boolean = false;\n const updatedSpecificErrors: AlertErrors[] = [];\n if (!alertZephyrsList.length) {\n updatedSpecificErrors.push('sourceSelect');\n }\n\n if (!(alertGassesList.length || hasUnitAlert)) {\n updatedSpecificErrors.push('dataSelect');\n }\n if (alertGassesList.length > 0) {\n alertGassesList.forEach((ag) => {\n if (ag.Threshold == null || ag.Threshold < 0 || ag.Threshold > 10000) {\n updatedSpecificErrors.push('concentrationLimit');\n }\n });\n }\n if (!alert.name) {\n updatedSpecificErrors.push('name');\n }\n let hasCommunication = alert.phoneNumbers.length || alert.email.length || outputEmail || outputPhoneNumber;\n if (!hasCommunication) {\n updatedSpecificErrors.push('communication');\n if (!alert.phoneNumbers.length && !outputPhoneNumber) {\n updatedSpecificErrors.push('phonenumber');\n }\n if (!alert.email.length && !outputEmail) {\n updatedSpecificErrors.push('email');\n }\n }\n\n if (!updatedSpecificErrors.length) {\n // TODO: get actual id from making request to backend on alert submission\n // Remove uuid and import\n let alertId = alert.id ? alert.id : 0;\n if (batteryAlert.batteryCharge !== 0) {\n alertId = 2;\n } else if (alertGassesList.length > 0) {\n alertId = 4;\n }\n const emailList = alert.email.length ? alert.email : [outputEmail];\n const phoneNumbersList = alert.phoneNumbers.length ? alert.phoneNumbers : [outputPhoneNumber];\n const updatedAlert = {\n ...alert,\n airAlerts: alertGassesList,\n alertZephyrsList,\n email: emailList,\n phoneNumbers: phoneNumbersList,\n id: alert.id,\n units: alertZephyrsList,\n };\n const packagedAirAlertsRequest = airAlertsConfiguratorPackager(\n auth,\n updatedAlert,\n );\n const informationToPost: APIAirAlertPost = {\n Alerts: packagedAirAlertsRequest,\n };\n updateAlert(informationToPost);\n endEdit();\n } else {\n setErrors(updatedSpecificErrors);\n }\n };\n\n const handleGasAlertLevel = (airAlertId: string, alertLevel: string) => {\n const updatedAlertGasses = alertGasses.map((ag) => {\n const updatedAlertGas = { ...ag };\n if (ag.id === airAlertId) {\n updatedAlertGas.alertLevel = alertLevel;\n }\n return updatedAlertGas;\n });\n const type = 'alertLevel';\n checkCompleteGasAlert(airAlertId, type);\n setAlertGasses(updatedAlertGasses);\n };\n\n const handleTimePeriod = (\n idwedontcareabout: string,\n alertPeriod: AlertPeriod,\n ) => {\n setTimePeriod(alertPeriod);\n };\n\n const handleGasSelection = (\n speciesDataIdentifier: SpeciesDataIdentifiers,\n ) => {\n const updatedAlertGasses = alertGasses.map((ag) => {\n const updatedAlertGas = { ...ag };\n if (ag.dataIdentifier === speciesDataIdentifier) {\n updatedAlertGas.status = !updatedAlertGas.status;\n }\n return updatedAlertGas;\n });\n const affectedAlerts = alertGasses.filter((ag) => ag.dataIdentifier);\n const type = 'status';\n affectedAlerts.forEach((aa) => checkCompleteGasAlert(aa.id, type));\n setAlertGasses(updatedAlertGasses);\n };\n\n const handleGasThreshold = (\n airAlertId: string,\n alertThreshold: AlertThreshold,\n ) => {\n const updatedAlertGasses = alertGasses.map((ag) => {\n const updatedAlertGas = { ...ag };\n if (ag.id === airAlertId) {\n updatedAlertGas.threshold = alertThreshold;\n }\n return updatedAlertGas;\n });\n const type = 'threshold';\n checkCompleteGasAlert(airAlertId, type);\n setAlertGasses(updatedAlertGasses);\n };\n\n const handleSearchToggle = () => {\n const searchableZephyrs = alertZephyrs.filter((z) => !z.alertStatus);\n if (zephyrSearchActive) {\n setZephyrSearch('');\n setSearchZephyrs(initState.searchZephyrs);\n } else {\n setSearchZephyrs(searchableZephyrs);\n }\n setZephyrSearchActive(!zephyrSearchActive);\n };\n\n const handleUnitSearch = (search: string) => {\n const userNonAlertZephyrs = alertZephyrs.filter((z) => !z.alertStatus);\n if (search === '') {\n setZephyrSearchActive(false);\n setSearchZephyrs([]);\n } else {\n const newFilteredZephyrs = userNonAlertZephyrs\n .slice()\n .filter(\n (z) =>\n z.name.toLowerCase().indexOf(search.toLowerCase()) > -1 ||\n z.zNumber.toString().indexOf(search) > -1,\n );\n setZephyrSearchActive(true);\n setSearchZephyrs(newFilteredZephyrs);\n }\n setZephyrSearch(search);\n };\n\n const handleUnitSelectionChange = (unitSelectionOption: UnitSelection) => {\n if (unitSelectionOption.type === 'specific') {\n const clearAlertStatus = alertZephyrs.map((z) => {\n const updatedZephyr = { ...z, alertStatus: false };\n return updatedZephyr;\n });\n setAlertZephyrs(clearAlertStatus)\n }\n if (unitSelectionOption.type === 'non-specific') {\n const updatedAlertZephyrs = alertZephyrs.map((z) => {\n const updatedAlertZephyr = { ...z, alertStatus: true };\n return updatedAlertZephyr;\n });\n const updatedAlertGasses = speciesExtentUpdater(\n displayConfig,\n alertGasses,\n updatedAlertZephyrs,\n zephyrs\n );\n removeError('sourceSelect');\n setZephyrSearchActive(false);\n setAlertZephyrs(updatedAlertZephyrs);\n setAlertGasses(updatedAlertGasses);\n }\n setUnitSelection(unitSelectionOption);\n };\n\n const removeAlertGas = (airAlertId: string) => {\n const updatedAlertGasses = alertGasses.filter((ag) => ag.id !== airAlertId);\n setAlertGasses(updatedAlertGasses);\n };\n\n const getTarget = (target: string): boolean => {\n return target.includes('@') ? true : false;\n };\n\n const targetToRemove = (source: string, target: string): void => {\n const isEmail = getTarget(target);\n const updateAlertData = isEmail ? // if isEmail is true, the target is an email, otherwise it's a phone number\n alert.email.filter((e: string) => e !== target) :\n alert.phoneNumbers.filter((p: string) => p !== target);\n const updatedAlert = isEmail ? { ...alert, email: updateAlertData } : { ...alert, phoneNumbers: updateAlertData };\n if (source === 'email') { removeTarget(target, null) }\n if (source === 'phone') { removeTarget(null, target) }\n setAlert(updatedAlert);\n };\n\n const removeTarget = (email: string | null, phoneNumber: string | null) => {\n if (email || phoneNumber) {\n const target: APIAirAlertTarget = {\n //ToDo: Add first and last names at some point\n targetId: 0,\n firstName: '',\n lastName: '',\n emailAddress: email,\n phoneNumber: phoneNumber,\n organisation: auth.user,\n alertId: alert.id\n };\n removeAlertTarget(target);\n }\n };\n\n\n const removeError = (error: string) => {\n const updatedErrors = errors.filter((e) => e !== error);\n setErrors(updatedErrors);\n };\n\n const asteriskOutPhoneDigits = (address: string) => {\n const firstThreeDigits = address.slice(0, 3);\n const phoneNumSplit = address.split('').slice(firstThreeDigits.length, address.length - 3); // create an array of digits and removing the last 3\n const lastThreeDigits = address.slice(-3); // getting last three digits\n const digitsArr = phoneNumSplit.map((digit: string) => { digit = '*'; return digit; }); // replace each digit with asterix\n const hashedNumber = firstThreeDigits.concat('', digitsArr.join('').concat('', lastThreeDigits)); // convert the array of digits to string and concatenate it with the last three digits\n return hashedNumber;\n };\n\n // Component\n return !isCartridgeDataLoading ? (\n
\n
\n

\n {alert.name\n ? alert.name\n : 'New Alert (Will only work if the 5-per user limit is not exceeded)'}\n

\n {errors.length ? (\n
\n {translate('AACValidationFailure')}\n
\n ) : (\n <>\n )}\n
\n
\n
\n \n

{translate('AACDataSourceHeader')}

\n
\n {unitSelections.unitSelectionOptions.map((option) => (\n \n {option.HTMLLabel}\n {\n handleUnitSelectionChange(option);\n }}\n disabled={\n option.type === 'specific' &&\n alertZephyrs.filter((z) => !z.alertStatus).length === 0\n }\n style={{\n cursor:\n isCartridgeDataLoading && option.type === 'non-specific'\n ? 'not-allowed'\n : 'pointer',\n }}\n />\n \n \n ))}\n
\n
\n {unitSelection === unitSelections.unitSelectionOptions[0] ? (\n
\n
{translate('AACDataSourceSelection')}
\n {/* */}\n
\n
\n handleUnitSearch(e.target.value)}\n placeholder={\n zephyrSearchActive\n ? 'Choose Zephyrs'\n : 'Search Zephyrs'\n }\n />\n handleSearchToggle()}\n />\n
\n {zephyrSearchActive || alertsTourOpen ? (\n \n {determineSearchableList().map((unit: any) => (\n
  • \n
    {unit.name}
    \n \n changeAlertZephyrStatus(unit.zNumber)\n }\n >\n \n \n \n \n
  • \n ))}\n \n ) : (\n <>\n )}\n
    \n
    \n ) : (\n <>\n )}\n
      \n {alertZephyrs\n .filter((z) => z.alertStatus)\n .map((z) => (\n
    • \n
      {z.name}
      \n changeAlertZephyrStatus(z.zNumber)}\n >\n \n \n \n \n
    • \n ))}\n
    \n
    \n {errors.includes('sourceSelect') ? (\n
    \n {translate('AACValidationFailureSources')}\n
    \n ) : (\n <>\n )}\n
    \n {alertZephyrs.filter((z) => z.alertStatus).length ? (\n <>\n
    \n

    {translate('AACAlertDataHeader')}

    \n \n \n \n \n {translate('AACGasColumn')}\n \n \n {translate('AACThresholdColumn')}\n {errors.includes('concentrationLimit') ? (\n
    \n {'Please enter a value between 0 and 10,000'}\n
    \n ) : (\n <>\n )}\n \n \n {translate('AACAlertColumn')}\n \n \n \n {alertGasses.map((mSE, idx, arr) => (\n \n \n {idx === 0 ||\n arr[idx - 1].dataIdentifier !== mSE.dataIdentifier ? (\n \n handleGasSelection(mSE.dataIdentifier)\n }\n >\n \n {parse(mSE.HTMLLabel)}\n null}\n />\n \n \n
    \n ) : (\n <>\n )}\n \n \n
    \n
    is
    \n ({\n value: th.rawThreshold,\n label: th.formattedThreshold,\n }),\n )}\n />\n
    \n {alertThresholdSelections.filter(\n (th) => th.rawThreshold === mSE.threshold,\n ).length\n ? alertThresholdSelections.filter(\n (th) => th.rawThreshold === mSE.threshold,\n )[0].postVerb\n : 'than'}\n
    \n
    \n \n \n
    \n \n handleGasAlertLevel(mSE.id, e.target.value)\n }\n />\n
    {mSE.HTMLShortUnitLabel}
    \n
    \n \n \n
    \n {false ? (\n idx === 0 ||\n arr[idx - 1].dataIdentifier !==\n mSE.dataIdentifier ? (\n \n addAlertGas(mSE.dataIdentifier)\n }\n />\n ) : (\n removeAlertGas(mSE.id)}\n />\n )\n ) : (\n <>\n )}\n
    \n \n \n ))}\n \n \n
    \n
    Time period:
    \n ({\n value: p.rawPeriod,\n label: p.formattedPeriod,\n }))}\n />\n
    \n {errors.includes('dataSelect') &&\n !errors.includes('sourceSelect') ? (\n
    \n {translate('AACValidationFailureData')}\n
    \n ) : (\n <>\n )}\n
    \n
    \n

    {translate('AACOutputHeader')}

    \n
    \n
    {translate('AACOutputName')}
    \n {\n const updatedAlert = { ...alert, name: e.target.value };\n removeError('name');\n setAlert(updatedAlert);\n }}\n />\n {errors.includes('name') &&\n !errors.includes('sourceSelect') ? (\n
    \n {translate('AACValidationFailureName')}\n
    \n ) : (\n <>\n )}\n
    \n \n
    \n
    \n
    {translate('AACOuputEmail')}
    \n
    \n setOutputEmail(e.target.value)}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n addEmailAddress();\n }\n }}\n />\n
    \n
      \n {alert.email.map((address) => (\n
    • \n
      {address}
      \n targetToRemove('email', address)}\n >\n \n \n \n \n
    • \n ))}\n
    \n {errors.includes('email') &&\n !errors.includes('sourceSelect') ? (\n
    \n {translate('AACValidationFailureEmail')}\n
    \n ) : (\n <>\n )}\n
    \n
    \n
    {translate('AACOutputPhoneNumber')}
    \n
    \n setPhoneNumber(e.target.value)}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n addPhoneNumbers();\n }\n }}\n />\n
    \n
      \n {alert.phoneNumbers.map((address) => (\n
    • \n
      {asteriskOutPhoneDigits(address)}
      \n targetToRemove('phone', address)}\n >\n \n \n \n \n
    • \n ))}\n
    \n {errors.includes('phonenumber') &&\n !errors.includes('sourceSelect') ? (\n
    \n {translate('AACValidationFailurePhoneNumber')}\n
    \n ) : (\n <>\n )}\n
    \n
    \n
    \n \n ) : (\n <>\n )}\n
    \n
    \n
    \n endEdit()}\n >\n Cancel\n \n \n
    \n \n ) : (\n
    \n \n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n auth: state.auth,\n zephyrs: state.getZephyrs.zephyrs,\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(AirAlertsConfigurator);\n","// Package Imports\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Util Imports\nimport { alertsFormatter } from '../../utils/functions/alertsFormatter';\n\n// Type Imports\nimport { AirAlerts, BatteryAlert, DisplayConfig } from '../../utils/interface';\n\n// Type Safety\ninterface AirAlertsOverviewProps {\n airAlerts: AirAlerts | null;\n changeAlertStatus: Function;\n deleteAlert: Function;\n displayConfig: DisplayConfig;\n setAlertConfigurator: Function;\n startNewAlert: Function;\n asideOn: boolean;\n}\n\n// Component\nconst AirAlertsOverview = ({\n airAlerts,\n changeAlertStatus,\n deleteAlert,\n displayConfig,\n setAlertConfigurator,\n startNewAlert,\n asideOn\n}: AirAlertsOverviewProps) => {\n const { t: translate } = useTranslation();\n\n // Functions\n\n const asterixOutPhoneDigits = (phoneNumber: string[]): string[] => {\n return phoneNumber.map((pNum: string) => {\n const firstThreeDigits = pNum.slice(0, 3);\n const phoneNumSplit = pNum.split('').slice(firstThreeDigits.length, pNum.length - 3); // create an array of digits and removing the last 3\n const lastThreeDigits = pNum.slice(-3); // getting last three digits\n const digitsArr = phoneNumSplit.map((digit: string) => { digit = '*'; return digit; }); // replace each digit with asterix\n const hashedNumber = firstThreeDigits.concat('', digitsArr.join('').concat('', lastThreeDigits)); // convert the array of digits to string and concatenate it with the last three digits\n return hashedNumber;\n });\n };\n\n return (\n
    \n
    \n

    {translate('AAOHeader')}

    \n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n {airAlerts && airAlerts.alerts.length ? (\n <>\n {airAlerts.alerts.map((alert) => (\n // TODO: id will exist once the alert is created and id is returned from API\n \n \n \n \n \n \n \n \n ))}\n \n ) : (\n \n \n \n )}\n \n
    \n {translate('AAONameColumn')}\n Zephyr Numbers\n {translate('AAOAlertDataColumn')}\n \n {translate('AAOStatusColumn')}\n Targets\n {translate('AAOActionscolumn')}\n
    {alert.name}{alert.units.join(',')}\n {alertsFormatter(alert, displayConfig)}\n \n \n {alert.email.join('\\n')}
    {asterixOutPhoneDigits(alert.phoneNumbers).join(' | ')}
    \n
    \n setAlertConfigurator(alert.id)}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"21\"\n height=\"21\"\n viewBox=\"0 0 24 24\"\n >\n \n \n deleteAlert(alert.id)}\n width=\"21\"\n height=\"21\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n \n \n
    \n
    {translate('AAONoAlerts')}
    \n
    \n
    \n );\n};\n\nexport default AirAlertsOverview;\n","// Package Imports\nimport parse from 'html-react-parser';\nimport { display } from 'html2canvas/dist/types/css/property-descriptors/display';\n\n// Const Imports\nimport { alertThresholdOptions } from '../consts';\n\n// Type Imports\nimport { SpeciesAlert, BatteryAlert, AlertObject, DisplayConfig, SpeciesData } from '../interface';\n\n/* Function\nDESC: alertsFormatters returns formatted and parsed text to describe an alert\nARGS: an alert object\n*/\nconst alertsFormatter = (alert: AlertObject, displayConfig: DisplayConfig) => {\n // Loop through the display Config to order air alerts\n let description = SpeciesFormatter(alert, displayConfig)\n const parsedDescription = parse(description);\n return parsedDescription;\n};\n\nfunction SpeciesFormatter(alert: AlertObject, displayConfig: DisplayConfig){\n let airAlerts = alert.airAlerts;\n let description: string = '';\n // map over the air alerts array\n airAlerts.map((airAlert, idx) => {\n if (idx === 0) {\n description += 'Species:';\n }\n // List all alerts after a Species: if there are any\n // Get species label from Display Config (look up data identifier)\n let speciesLabel = '';\n let speciesUnit = '';\n displayConfig.tabs.map((tab) =>\n tab.species.map((species) => {\n if (species.dataIdentifier === airAlert.Species) {\n speciesLabel = species.HTMLLabel;\n speciesUnit = species.HTMLShortUnitLabel;\n }\n }),\n );\n\n description += ` ${airAlert.Species} `;\n // Get the correct comparator symbol using the alertThresholdOptions object\n description += `${airAlert.Comparator} `;\n // Append the value\n description += `${airAlert.Threshold}`;\n // Append the units\n description += ` ${speciesUnit}`;\n // Append a comma unless this is the last airAlert there are no zephyr alerts\n if (!(idx === airAlerts.length - 1)) {\n description += ',';\n }\n });\n return description;\n}\n\nfunction BatteryFormatter(batteryAlert: BatteryAlert){\n return 'Battery: ' + batteryAlert.comparator + ' than ' + batteryAlert.batteryCharge + '%'\n}\n\nexport { alertsFormatter };\n","import * as React from 'react';\nimport Tour, { ReactourStep } from 'reactour';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { ReduxState } from '../../utils/interface';\n\nconst stepStyle: React.CSSProperties = {\n height: 250,\n width: 330,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n};\n\ntype Props = {\n onEnd?: () => void;\n};\n\nexport default function AlertsTour({ onEnd }: Props) {\n const tourRef = React.useRef(null);\n const [show, setShow] = React.useState(false);\n const [isWaiting, setIsWaiting] = React.useState(false);\n const tourOpen = useSelector((state: ReduxState) => state.alertsTourOpen);\n const dispatch = useDispatch();\n\n const disableBody = (target: HTMLElement) => disableBodyScroll(target);\n const enableBody = (target: HTMLElement) => enableBodyScroll(target);\n\n const waitForElement = (selector: string, timeout = 10000) => {\n return new Promise((resolve, reject) => {\n const startTime = Date.now();\n\n const checkElement = () => {\n const element = document.querySelector(selector);\n if (element) {\n resolve(element);\n } else if (Date.now() - startTime > timeout) {\n reject(new Error(`Timed out waiting for element: ${selector}`));\n } else {\n requestAnimationFrame(checkElement);\n }\n };\n\n checkElement();\n });\n };\n\n const handleAsyncAction = async () => {\n const btn = document.getElementById('AAOCreateNew');\n if (btn) {\n setIsWaiting(true);\n btn.click();\n try {\n await waitForElement('[data-alerts-tour=\"step-3\"]', 30000); // 30 seconds timeout\n\n const firstUnitButton = await waitForElement(\n '.air-alert-configurator-unit-list.add-units > li:first-child > button',\n 10000,\n );\n if (firstUnitButton instanceof HTMLElement) {\n firstUnitButton.click();\n } else {\n throw new Error('First unit button not found');\n }\n } catch (error) {\n console.error('Timed out waiting for element to load', error);\n // Handle timeout (e.g., show an error message to the user)\n } finally {\n setIsWaiting(false);\n }\n }\n };\n\n const steps: ReactourStep[] = [\n {\n selector: '',\n content: () => (\n
    \n Alerts allow you to set notifications when a parameter breaches\n specific threshold values.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-alerts-tour=\"step-2\"]',\n position: 'center',\n content: () => (\n
    \n Select “Create an alert” to add a new alert.\n
    \n ),\n style: stepStyle,\n action() {\n onEnd?.();\n },\n },\n\n {\n selector: '[data-alerts-tour=\"step-3\"]',\n // position: 'center',\n content: () => (\n
    \n {isWaiting ? (\n <>\n

    Loading... Please wait while we prepare the next step.

    \n \n ) : (\n <>\n

    \n Select the devices you wish to be included. Alerts are actioned\n at a device level so many devices can be added to one alert.\n

    \n \n )}\n
    \n ),\n style: stepStyle,\n action: () => {\n handleAsyncAction();\n },\n },\n\n {\n selector: '[data-alerts-tour=\"step-4\"]',\n position: 'center',\n content: () => (\n
    \n Select all the parameters you wish to alert on, along with the value\n and definition of greater or lower than. Alerts are actioned for each\n parameter, so feel free to add multiple parameters\n
    \n ),\n action() {\n // dispatch(setChartViewMode('networkView'));\n },\n style: stepStyle,\n },\n\n {\n selector: '[data-alerts-tour=\"step-5\"]',\n position: 'center',\n content: () => (\n
    \n Choose the averaging period of the alerts threshold (e.g 15min =\n threshold based on a 15min time-weighted average)\n
    \n ),\n action(node) {},\n style: stepStyle,\n },\n\n {\n selector: '[data-alerts-tour=\"step-6\"]',\n position: 'center',\n content: () => (\n
    Give the alert a memorable name.
    \n ),\n action() {},\n style: stepStyle,\n },\n\n {\n selector: '[data-alerts-tour=\"step-7\"]',\n position: 'center',\n content: () => (\n
    \n Specify the alert recipients using email addresses or phone numbers,\n pressing the plus icon to confirm each entry.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-alerts-tour=\"step-8\"]',\n position: 'center',\n content: () => (\n
    \n Select “Create alert” to activate it.\n
    \n ),\n style: stepStyle,\n },\n {\n selector: '[data-analysis-tour=\"step-9\"]',\n position: 'center',\n content: () => (\n
    \n Revisit this tour or the tours on other pages anytime from within the\n Help menu.\n
    \n ),\n style: stepStyle,\n },\n ];\n\n return (\n <>\n {\n setShow(false);\n dispatch({ type: 'alerts_tour_toggle' });\n }}\n onAfterOpen={disableBody}\n onBeforeClose={(target) => {\n enableBody(target);\n onEnd?.();\n }}\n startAt={0}\n closeWithMask={false}\n disableInteraction\n disableKeyboardNavigation={isWaiting}\n disableDotsNavigation={isWaiting}\n showNavigationNumber={false}\n lastStepNextButton={

    Finish

    }\n badgeContent={(curr) => `${curr}/${steps.length}`}\n accentColor=\"#4e73c3\"\n rounded={3}\n update={isWaiting.toString()}\n showButtons={!isWaiting}\n />\n \n );\n}\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\n// Component Imports\nimport AirAlertsConfigurator from '../view_components/AirAlertsConfigurator';\nimport AirAlertsOverview from '../view_components/AirAlertsOverview';\n\n// Action Imports\nimport { setAirAlerts } from '../../actions/airAlerts';\n\n// Util Imports\nimport utilsRequest from '../../utils/request';\nimport { airAlertsApiPackager } from '../../utils/functions/airAlertsInterface';\nimport Spinner from '../shared_components/Spinner';\n\n// Type Imports\nimport {\n AirAlerts,\n AlertObject,\n APIAirAlertPost,\n AlertModel,\n DisplayConfig,\n ReduxState,\n APIAirAlertTarget,\n Zephyr,\n SlotsInfo,\n} from '../../utils/interface';\nimport auth from '../../reducers/auth';\nimport { gaseousSlots } from '../../utils/consts';\nimport { useLocation } from 'react-router-dom';\nimport AlertsTour from '../view_components/AlertsTour';\n\n// Type Safety\ninterface AirAlertsState {\n editMode: boolean;\n selectedAlert: AlertObject | null;\n}\n\ninterface AirAlertsTabProps {\n airAlerts: AirAlerts | null;\n displayConfig: DisplayConfig;\n setAirAlerts: Function;\n zephyrs: Zephyr[];\n asideOn: boolean;\n}\n\n// Component\nconst AirAlertsTab = ({\n airAlerts,\n displayConfig,\n setAirAlerts,\n zephyrs,\n asideOn,\n}: AirAlertsTabProps) => {\n // State\n const initState: AirAlertsState = {\n editMode: false,\n selectedAlert: null,\n };\n const [editMode, setEditMode] = useState(initState.editMode);\n const [selectedAlert, setSelectedAlert] = useState(initState.selectedAlert);\n const [isAlertDataLoading, setIsAlertDataLoading] = useState(\n null,\n );\n const location = useLocation();\n\n //Effects\n\n useEffect(() => {\n if (!location.pathname.includes('alerts')) return;\n \n const getAlertsData = async () => {\n const airAlerts = await utilsRequest.getAirAlerts();\n if (airAlerts) {\n const packagedAirAlerts = airAlertsApiPackager(airAlerts);\n await setAirAlerts(packagedAirAlerts);\n }\n };\n // IIFY\n (async () => {\n if (!localStorage.getItem('alerts')) {\n localStorage.setItem('alerts', 'true');\n setIsAlertDataLoading(true);\n await getAlertsData();\n setIsAlertDataLoading(false);\n }\n })();\n }, []);\n\n // Function\n const startNewAlert = () => {\n setEditMode(true);\n setSelectedAlert(null);\n };\n\n const endEdit = () => {\n setEditMode(false);\n setSelectedAlert(null);\n };\n\n const changeAlertStatus = (alertId: number) => {\n if (airAlerts && airAlerts.alerts.length) {\n const updatedUserAlerts = airAlerts.alerts.map((alert) => {\n const updatedAlert = { ...alert };\n if (alert.id === alertId) {\n updatedAlert.status = !updatedAlert.status;\n }\n return updatedAlert;\n });\n setAirAlerts({ ...airAlerts, alerts: [...updatedUserAlerts] });\n }\n };\n const AddTarget = async (target: APIAirAlertTarget) => {\n if (target) {\n await Promise.all(await utilsRequest['AddAlertTarget'](target));\n }\n };\n const removeAlertTarget = async (target: APIAirAlertTarget) => {\n if (target) {\n await Promise.all(await utilsRequest['removeAlertTarget'](target));\n }\n };\n const updateAlert = async (packagedAPIAlerts: APIAirAlertPost) => {\n //If we are in update mode, we go through and update any targets and/or parameters if we have any\n setIsAlertDataLoading(true);\n const airAlertRequest = selectedAlert ? 'updateAirAlert' : 'postAirAlert';\n await Promise.all(await utilsRequest[airAlertRequest](packagedAPIAlerts));\n const updatedAirAlerts = await utilsRequest.getAirAlerts();\n const packagedAirAlerts = airAlertsApiPackager(updatedAirAlerts);\n setAirAlerts(packagedAirAlerts);\n setIsAlertDataLoading(false);\n };\n\n const deleteAlert = async (alertId: number) => {\n if (airAlerts && airAlerts.alerts.length) {\n const updatedUserAlerts = airAlerts.alerts.filter(\n (alert) => alert.id !== alertId,\n );\n await utilsRequest.deleteAirAlert(alertId);\n setAirAlerts({ ...airAlerts, alerts: updatedUserAlerts });\n }\n };\n\n const setAlertConfigurator = (alertId: number) => {\n const selectedAlert = airAlerts!.alerts.filter(\n (alert) => alert.id === alertId,\n )[0];\n setEditMode(true);\n setSelectedAlert(selectedAlert);\n };\n\n return (\n <>\n {!isAlertDataLoading ? (\n \n {editMode ? (\n \n ) : (\n \n )}\n \n ) : (\n
    \n \n
    \n )}\n \n \n )\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n airAlerts: state.airAlerts,\n displayConfig: state.setDisplayConfig,\n zephyrs: state.getZephyrs.zephyrs,\n asideOn: state.aside.on,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setAirAlerts,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AirAlertsTab);\n","// Package Imports\nimport React from 'react';\n\n// Component Interfaces\ninterface ModalProps {\n additionalClass?: string;\n on: boolean;\n modalComponent: React.FunctionComponentElement;\n}\n\n// Component\nconst Modal = ({ additionalClass, on, modalComponent }: ModalProps) => {\n return on ? (\n
    \n {modalComponent}\n
    \n ) : (\n <>\n );\n};\n\nexport default Modal;\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\n\n// Const Imports\nimport { AppIntroModelContent } from '../../utils/consts';\n\n// Type Imports\nimport { AppIntro } from '../../utils/interface';\n\n// Component Interfaces\ninterface AppIntroModalProps {\n appIntro: AppIntro;\n completeAppIntro: Function;\n}\n\n// Component\nconst AppIntroModal = ({ appIntro, completeAppIntro }: AppIntroModalProps) => (\n
    \n
    \n
    {appIntro.header}
    \n
    {parse(appIntro.body)}
    \n
    \n completeAppIntro()}\n >\n {AppIntroModelContent.AppIntroButton}\n \n
    \n);\nexport default AppIntroModal;\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\n\n// Type Imports\nimport { Agreement } from '../../utils/interface';\n\n// Component Interfaces\ninterface AgreementModalProps {\n agreement: Agreement;\n buttonText: string;\n signAgreement: Function;\n setAgreementModalOn: Function;\n}\n\n// Component\nconst AgreementModal = ({\n agreement,\n buttonText,\n signAgreement,\n setAgreementModalOn,\n}: AgreementModalProps) => (\n
    \n
    {parse(agreement.terms)}
    \n {\n e.preventDefault();\n signAgreement(agreement.id);\n setAgreementModalOn(false);\n }}\n type=\"submit\"\n >\n {buttonText}\n \n
    \n);\n\nexport default AgreementModal;\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport { ALERTS_ON, ALERTS_OFF } from './types';\n\n// Action Creators\nexport const setAlertsOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: ALERTS_ON,\n });\n};\n\nexport const setAlertsOff = () => (dispatch: Dispatch) => {\n dispatch({\n type: ALERTS_OFF,\n });\n};\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\n// @ts-ignore\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\n\n// Component Imports\nimport Modal from '../shared_components/Modal';\nimport AppIntroModal from './AppIntroModal';\nimport AgreementModal from './AgreementModal';\nimport VersionLatestModal from './VersionLatestModal';\n\n// Request Imports\nimport utilsRequest from '../../utils/request';\n\n// Action Import\nimport { setAlertsOn, setAlertsOff } from '../../actions/alerts';\n\n// Type Imports\nimport {\n AppIntro,\n Agreement,\n ReduxState,\n UserConfig,\n Version,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface AlertsProps {\n appIntro: AppIntro | null;\n agreements: Agreement[] | any [];\n internalUser: boolean;\n isPublic: boolean;\n on: boolean;\n setAlertsOn: Function;\n setAlertsOff: Function;\n userConfig: UserConfig;\n versions: Version[];\n bearerToken: string | null;\n}\n\ninterface InitState {\n appIntro: AppIntro | null;\n agreements: Agreement[];\n version: Version | null;\n}\n\n// Component\nconst Alerts = ({\n agreements,\n appIntro,\n internalUser,\n isPublic,\n on,\n setAlertsOn,\n setAlertsOff,\n userConfig,\n versions,\n bearerToken,\n}: AlertsProps) => {\n // State\n const initState: InitState = {\n appIntro: null,\n agreements: [],\n version: null,\n };\n\n const [appIntroInternal, setAppIntroInternal] = useState(initState.appIntro);\n const [agreementsInternal, setAgreementsInternal] = useState(\n initState.agreements,\n );\n const [agreementModalOn, setAgreementModalOn] = useState(true);\n // Effects\n useEffect(() => {\n if (agreements && agreements.length && !internalUser) {\n setAgreementsInternal(agreements);\n }\n }, [agreements]);\n\n useEffect(() => {\n setAppIntroInternal(appIntro);\n }, [appIntro]);\n\n useEffect(() => {\n agreementsInternal.length > 0 || appIntroInternal\n ? setAlertsOn()\n : setAlertsOff();\n }, [agreementsInternal, appIntroInternal]);\n\n useEffect(() => {\n // && appIntroInternal.on\n if (appIntroInternal !== null) {\n const x = document.getElementsByTagName('BODY')[0];\n disableBodyScroll(x);\n } else {\n clearAllBodyScrollLocks();\n }\n }, [appIntroInternal]);\n\n // Functions\n const signAgreement = async (mua_id: number) => {\n const response = await utilsRequest.signUserAgreement(mua_id, bearerToken);\n if (response) {\n const updatedAgreements = agreementsInternal.filter(\n (a) => a.id !== mua_id,\n );\n setAgreementsInternal(updatedAgreements);\n }\n };\n\n const completeAppIntro = () => {\n setAppIntroInternal(null);\n };\n\n return (\n <>\n {appIntro ? (\n \n }\n />\n ) : (\n <>\n )}\n {agreementsInternal.length > 0 ? (\n \n }\n />\n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n agreements: state.alerts.agreements,\n appIntro: state.auth.userInfo && state.auth.userInfo.appIntro,\n internalUser: state.auth.userInfo && state.auth.userInfo.isInternal,\n isPublic: state.auth.userInfo && state.auth.userInfo.isPublic,\n on: state.alerts.on,\n userConfig: state.setUserConfig,\n versions: state.setVersions,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setAlertsOn,\n setAlertsOff,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Alerts);\n","// Pakage Imports\nimport { lookupService } from 'dns';\nimport React from 'react';\n\n// Type Imports\nimport { DisplayConfig, PolarPlots } from '../../utils/interface';\n\n// Component Interfaces\ninterface AnalyticsPlotsProps {\n displayConfig: DisplayConfig;\n polarPlots: PolarPlots | null;\n}\n\n// Component\nconst AnalyticsPlots = ({ displayConfig, polarPlots }: AnalyticsPlotsProps) => (\n
    \n {polarPlots ? (\n
      \n {Object.keys(polarPlots)\n .filter((key) => key !== 'windRose')\n .map((plotKey) => (\n
    • \n
      \n
      Species Name
      \n
      \n \n
    • \n ))}\n
    \n ) : (\n <>\n )}\n
    \n);\n\nexport default AnalyticsPlots;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport moment from 'moment';\n\n// Component Imports\nimport AnalyticsPlots from '../view_components/AnalyticsPlots';\n\n// Action Imports\nimport { getZephyrData } from '../../actions/zephyrs';\n\n// Util Imports\nimport utilsRequest from '../../utils/request';\nimport { dateFinder } from '../../utils/functions/dateFinder';\nimport { windDataPackager } from '../../utils/functions/saDataPackager';\n\n// Type Imports\nimport {\n DataConfig,\n DisplayConfig,\n PolarPlots,\n ReduxState,\n TodayData,\n Zephyr,\n ZephyrHistoryIndSlotData,\n} from '../../utils/interface';\nimport { useLocation } from 'react-router-dom';\n\n// Component Interfaces\ninterface InitState {\n error: string | null;\n loading: boolean;\n polarPlots: PolarPlots | null;\n}\n\ninterface AnalyticsProps {\n dataConfig: DataConfig;\n displayConfig: DisplayConfig;\n getZephyrData: Function;\n zephyr: Zephyr;\n bearerToken: string | null;\n}\n\n// Component\nconst Analytics = ({\n dataConfig,\n displayConfig,\n getZephyrData,\n zephyr,\n bearerToken,\n}: AnalyticsProps) => {\n // State\n const initState: InitState = {\n error: null,\n loading: false,\n polarPlots: null,\n };\n const [error, setError] = useState(initState.error);\n const [loading, setLoading] = useState(initState.loading);\n const [polarPlots, setPolarPlots] = useState(initState.polarPlots);\n const location = useLocation();\n\n // Functions\n const getAnalyticsReport = async () => {\n setLoading(true);\n\n const analysisLength = 31;\n const minDataAllowance = 600;\n\n // Work out Z and MA date formats\n const startDT = dateFinder(new Date(), analysisLength, true);\n startDT.setHours(0, 0, 0);\n const endDT = dateFinder(new Date(), 1, true);\n endDT.setHours(23, 59, 59);\n const isoStartDT = startDT.toISOString();\n const isoEndDT = endDT.toISOString();\n const ZStart = moment(startDT).format('YYYYMMDDHHmm');\n const ZEnd = moment(endDT).format('YYYYMMDDHHmm');\n\n // Get Z Data\n let packagedZephyrData: ZephyrHistoryIndSlotData | null = null;\n const rawZephyrData = await getZephyrData(\n zephyr,\n 'month',\n ZStart,\n ZEnd,\n dataConfig,\n true,\n bearerToken,\n 0,\n location.pathname === '/',\n );\n // Package Z Data\n // TODO: Move this to displayConfig in database\n const exclusionList = [\n 'UTS',\n 'localDateTime',\n 'latitude',\n 'longitude',\n 'ambHumidity',\n 'humidity',\n 'tempC',\n 'latitude',\n 'longitude',\n 'ambPressure',\n 'ambTempC',\n ];\n if (rawZephyrData) {\n packagedZephyrData =\n rawZephyrData.data['Hourly average on the hour'].slotB;\n }\n if (packagedZephyrData) {\n for (const [species, dataObj] of Object.entries(packagedZephyrData)) {\n if (\n (exclusionList.includes(species) || !dataObj || !dataObj.data) &&\n species !== 'dateTime'\n ) {\n delete packagedZephyrData[species];\n } else {\n const notNull = dataObj.data.filter((dp) => dp !== null && dp !== 0)\n .length;\n if (notNull < minDataAllowance) {\n delete packagedZephyrData[species];\n }\n }\n }\n }\n // Get GFS Data\n const metData: TodayData = await utilsRequest.getTodayData(\n 'winddir,windspeed',\n [parseFloat(zephyr.latitude), parseFloat(zephyr.longitude)],\n 3,\n bearerToken,\n {\n startDT: isoStartDT,\n endDT: isoEndDT,\n },\n );\n // Package GFS Data\n const packagedGFSData = windDataPackager(metData);\n // Package Z and GFS Data together\n if (packagedZephyrData && packagedGFSData) {\n // packagedZephyrData, packagedGFSData\n const zephyrDTs = packagedZephyrData.dateTime.data;\n const gfsDTs = packagedGFSData.dateTime;\n const zephyrFirstDT = moment(zephyrDTs[0], 'YYYY-MM-DDTHH:mm:ss');\n const zephyrLastDT = moment(\n zephyrDTs[zephyrDTs.length - 1],\n 'YYYY-MM-DDTHH:mm:ss',\n );\n const gfsFirstDT = moment(gfsDTs[0], 'YYYY-MM-DDTHH:mm:ss');\n const gfsLastDT = moment(\n gfsDTs[gfsDTs.length - 1],\n 'YYYY-MM-DDTHH:mm:ss',\n );\n // Clip GFS dataset if overhanging either end of Z dataset\n if (gfsFirstDT < zephyrFirstDT) {\n let clipCount = 0;\n gfsDTs.forEach((dt) => {\n if (moment(dt, 'YYYY-MM-DDTHH:mm:ss') < zephyrFirstDT) {\n clipCount += 1;\n }\n });\n for (const [gfsKey, gfsValue] of Object.entries(packagedGFSData)) {\n const clippedArr = gfsValue.slice(clipCount);\n packagedGFSData[gfsKey] = clippedArr;\n }\n }\n if (zephyrLastDT < gfsLastDT) {\n let clipCount = 0;\n gfsDTs.forEach((dt) => {\n if (moment(dt, 'YYYY-MM-DDTHH:mm:ss') > zephyrLastDT) {\n clipCount += 1;\n }\n });\n for (const [gfsKey, gfsValue] of Object.entries(packagedGFSData)) {\n const clippedArr = gfsValue.slice(0, gfsValue.length - clipCount);\n packagedGFSData[gfsKey] = clippedArr;\n }\n }\n // Duplicate GFS data to match hourly resolution of Zephyr data\n const updatedPackagedGFSData = { ...packagedGFSData };\n zephyrDTs.forEach((dt, idx) => {\n const parsedZDT = moment(dt, 'YYYY-MM-DDTHH:mm:ss');\n if (updatedPackagedGFSData.dateTime[idx]) {\n const parsedGFSDT = moment(\n updatedPackagedGFSData.dateTime[idx],\n 'YYYY-MM-DDTHH:mm:ss',\n );\n if (parsedZDT < parsedGFSDT) {\n const repeatDirVal = updatedPackagedGFSData.direction[idx];\n const repeatSpeedVal = updatedPackagedGFSData.speed[idx];\n while (\n moment(\n updatedPackagedGFSData.dateTime[idx],\n 'YYYY-MM-DDTHH:mm:ss',\n ).diff(parsedZDT, 'hours')\n ) {\n const newGFSDate = moment(\n updatedPackagedGFSData.dateTime[idx],\n 'YYYY-MM-DDTHH:mm:ss',\n )\n .subtract(1, 'hour')\n .format('YYYY-MM-DDTHH:mm:ss');\n updatedPackagedGFSData.dateTime.splice(idx, 0, newGFSDate);\n updatedPackagedGFSData.direction.splice(idx, 0, repeatDirVal);\n updatedPackagedGFSData.speed.splice(idx, 0, repeatSpeedVal);\n }\n }\n } else {\n const repeatDirVal =\n updatedPackagedGFSData.direction[\n updatedPackagedGFSData.direction.length - 1\n ];\n const repeatSpeedVal =\n updatedPackagedGFSData.speed[\n updatedPackagedGFSData.speed.length - 1\n ];\n // at the end of the Z data\n updatedPackagedGFSData.dateTime.push(\n parsedZDT.format('YYYY-MM-DDTHH:mm:ss'),\n );\n updatedPackagedGFSData.direction.push(repeatDirVal);\n updatedPackagedGFSData.speed.push(repeatSpeedVal);\n }\n });\n // Create final data package for OpenAir processing\n const finalPackagedData: any = {};\n for (const [species, dataObj] of Object.entries(packagedZephyrData)) {\n if (species !== 'dateTime') {\n finalPackagedData[dataObj.header.label] = dataObj.data;\n }\n }\n for (const [gfsKey, gfsValue] of Object.entries(packagedGFSData)) {\n if (gfsKey !== 'dateTime') {\n const key = gfsKey === 'direction' ? 'wd' : 'ws';\n finalPackagedData[key] = gfsValue;\n }\n }\n\n // Get/set plots\n const requestedPlots = await utilsRequest.getPolarPlots(\n finalPackagedData,\n bearerToken,\n );\n setPolarPlots(requestedPlots);\n }\n setLoading(false);\n };\n\n return (\n
    \n \n \n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n dataConfig: state.dataConfig,\n displayConfig: state.setDisplayConfig,\n zephyr: state.setZephyr.zephyr,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n getZephyrData,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Analytics);\n","/*\nCanvasJS React Charts - https://canvasjs.com/\nCopyright 2020 fenopix\n\n--------------------- License Information --------------------\nCanvasJS is a commercial product which requires purchase of license. Without a commercial license you can use it for evaluation purposes for upto 30 days. Please refer to the following link for further details.\nhttps://canvasjs.com/license/\n\n*/\nvar React = require('react');\nvar CanvasJS = require('./canvasjs.min');\nCanvasJS = CanvasJS.Chart ? CanvasJS : window.CanvasJS;\n\nclass CanvasJSChart extends React.Component {\n\tstatic _cjsContainerId = 0\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.options = props.options ? props.options : {};\n\t\tthis.containerProps = props.containerProps ? props.containerProps : { width: \"100%\", position: \"relative\" };\n\t\tthis.containerProps.height = props.containerProps && props.containerProps.height ? props.containerProps.height : this.options.height ? this.options.height + \"px\" : \"400px\";\n\t\tthis.chartContainerId = \"canvasjs-react-chart-container-\" + CanvasJSChart._cjsContainerId++;\n\t}\n\tcomponentDidMount() {\n\t\t//Create Chart and Render\t\t\n\t\tthis.chart = new CanvasJS.Chart(this.chartContainerId, this.options);\n\t\tthis.chart.render();\n\n\t\tif (this.props.onRef)\n\t\t\tthis.props.onRef(this.chart);\n\t}\n\tshouldComponentUpdate(nextProps, nextState) {\n\t\t//Check if Chart-options has changed and determine if component has to be updated\n\t\treturn !(nextProps.options === this.options);\n\t}\n\tcomponentDidUpdate() {\n\t\t//Update Chart Options & Render\n\t\tthis.chart.options = this.props.options;\n\t\tthis.chart.render();\n\t}\n\tcomponentWillUnmount() {\n\t\t//Destroy chart and remove reference\n\t\tthis.chart.destroy();\n\t\tif (this.props.onRef)\n\t\t\tthis.props.onRef(undefined);\n\t}\n\trender() {\n\t\t//return React.createElement('div', { id: this.chartContainerId, style: this.containerProps });\t\t\n\t\treturn
    \n\t}\n}\n\nvar CanvasJSReact = {\n\tCanvasJSChart: CanvasJSChart,\n\tCanvasJS: CanvasJS\n};\n\nexport default CanvasJSReact;","// Package Imports\nimport React from 'react';\n\n// Component Interfaces\ninterface DataChartDownloadButtonProps {\n handleChartDownload: Function;\n on?: boolean | null;\n}\n\nconst DataChartDownloadButton = ({\n handleChartDownload,\n on,\n}: DataChartDownloadButtonProps) => {\n return (\n <>\n {on ? (\n handleChartDownload()}\n type=\"button\"\n className=\"chart-download-custom-button\"\n data-html2canvas-ignore=\"true\"\n >\n \n \n \n \n ) : (\n <>\n )}\n \n );\n};\n\n// Default Props\nDataChartDownloadButton.defaultProps = {\n on: false,\n};\n\nexport default DataChartDownloadButton;\n","// Util Imports\nimport { slotFinder } from './slotFinder';\n\n// Const Imports\nimport { aqlOtherTab, defaultSpecies } from '../consts';\n\n// Type Imports\nimport {\n AQOptionsMap,\n LineChartData,\n DisplayConfig,\n ExternalMetData,\n Overlay,\n SlotOptions,\n SpeciesDataLabels,\n SpeciesGroupOptions,\n StrippedTab,\n Zephyr,\n ZephyrHistory,\n ZephyrHistoryWithId,\n ZephyrLastHourInd,\n SpeciesDataIdentifiers,\n} from '../interface';\n\n/* Function\nDESC: speciesObjFinder returns the full species object from the displayConfig\nARGS: displayConfig(derived from API), targetSpecies(dataIdentifier e.g. NO)\n*/\nconst speciesObjFinder = (\n displayConfig: DisplayConfig,\n targetSpecies: SpeciesDataIdentifiers,\n) => {\n const speciesObj = displayConfig.tabs\n .map(\n (group) =>\n group.species.filter((species) =>\n species.dataIdentifiers.includes(targetSpecies),\n )[0],\n )\n .filter((ans) => ans)[0];\n return speciesObj;\n};\n\n/* Function\nDESC: speciesColourFinder finds the right colour to display for a given species\nARGS: displayConfig(derived from API), targetSpecies(dataIdentifier e.g. NO), unitIdx(from Zephyr list)\n*/\nconst speciesColourFinder = (\n displayConfig: DisplayConfig,\n targetSpecies: SpeciesDataIdentifiers,\n unitIdx: number,\n) => {\n const rgb = displayConfig.tabs\n .map(\n (group) =>\n group.species.filter((species) =>\n species.dataIdentifiers.includes(targetSpecies),\n )[0],\n )\n .filter((ans) => ans)[0].colour[unitIdx];\n const formattedRGB = `rgb(${rgb.r},${rgb.g},${rgb.b})`;\n return formattedRGB;\n};\n\n/* Function\nDESC: speciesFinder finds which species have available data for a given unit, slot, and time period\nARGS: displayConfig(derived from API), slot(e.g. slotB), unitData(derived from API)\n*/\nconst speciesFinder = (\n displayConfig: DisplayConfig,\n slot: SlotOptions,\n unitData: ZephyrHistory,\n) => {\n const availableSpecies = [];\n const chartableSpecies: SpeciesDataIdentifiers[] = [];\n displayConfig.tabs.forEach((group) =>\n group.species.forEach((species) =>\n species.dataIdentifiers.forEach((sDI) => chartableSpecies.push(sDI)),\n ),\n );\n for (const species in unitData['Hourly average on the hour'][slot]) {\n if (\n chartableSpecies.includes(species as SpeciesDataIdentifiers) &&\n unitData['Hourly average on the hour'][slot]![species].data\n ) {\n if (\n unitData['Hourly average on the hour'][slot]![species].data.some(\n (sp) => sp !== null,\n )\n ) {\n availableSpecies.push(species);\n }\n }\n }\n return availableSpecies;\n};\n\n/* Function\nDESC: mappairSpeciesFinder returns either a species from the mappairSpeciesFinder function \n below or the default if one doesn't exist (aka is AQI)\nARGS: curOverlay(Redux State), displayConfig(derived from API), overlays, overlays (derived from API)\n*/\nconst mappairSpeciesFinder = (\n curOverlay: string,\n displayConfig: DisplayConfig,\n overlays: Overlay[],\n) => {\n const species =\n speciesLabelFinder(curOverlay, displayConfig, overlays) || defaultSpecies;\n return species;\n};\n\n/* Function\nDESC: speciesLabelFinder finds a species label from an active overlay\nARGS: curOverlay(Redux State), displayConfig(derived from API), overlays, overlays (derived from API)\n*/\nconst speciesLabelFinder = (\n curOverlay: string,\n displayConfig: DisplayConfig,\n overlays: Overlay[],\n) => {\n let speciesData = null;\n const overlay = overlays.filter((ol) => ol.name === curOverlay);\n if (overlay.length) {\n const dataIdentifier = overlay[0].speciesIdentifier;\n displayConfig.tabs.forEach((tab) =>\n tab.species.forEach((sp) => {\n if (sp.label === dataIdentifier) {\n speciesData = sp;\n }\n }),\n );\n }\n return speciesData;\n};\n\n/* Function\nDESC: extentTabFinder creates a hybrid tab array of available species(see above function) grouped as per their config in \n the Zephyr API. For an array of units, it finds the full extent of tabs that should be displayed\nARGS: displayConfig(derived from API), slot(e.g. slotB), unitData(derived from API)\n*/\nconst extentTabFinder = (\n slot: SlotOptions,\n displayConfig: DisplayConfig,\n unitHistories: ZephyrHistoryWithId,\n unitNumber: number,\n) => {\n const extentTabConfigs: StrippedTab[] = [];\n if (!unitNumber) return extentTabConfigs;\n for (const [unitId, unitHistory] of Object.entries(unitHistories)) {\n if (unitHistory && unitHistory['Hourly average on the hour']) {\n const firstSlot =\n unitId === unitNumber.toString() && slot !== ''\n ? slot\n : slotFinder(unitHistory).length\n ? slotFinder(unitHistory)[0]\n : null;\n if (firstSlot) {\n const tabConfig = tabFinder(displayConfig, firstSlot, unitHistory);\n if (extentTabConfigs.length) {\n tabConfig.forEach((group) => {\n if (\n !extentTabConfigs.filter((g) => g.group === group.group).length\n ) {\n extentTabConfigs.push({\n group: group.group,\n HTMLGroupLabel: group.HTMLGroupLabel,\n curSlot: slot\n });\n }\n });\n } else {\n tabConfig.map((g) =>\n extentTabConfigs.push({\n group: g.group,\n HTMLGroupLabel: g.HTMLGroupLabel,\n curSlot: slot\n }),\n );\n }\n }\n }\n }\n // Sorts the tabs so they always occur in the same order regardless of Zephyr switching\n const sortedExtentTabConfigs: StrippedTab[] = [];\n displayConfig.tabs.forEach((dcGroup) => {\n extentTabConfigs.forEach((etGroup) => {\n if (dcGroup.group === etGroup.group) {\n sortedExtentTabConfigs.push(etGroup);\n }\n });\n });\n return sortedExtentTabConfigs;\n};\n\n/* Function\nDESC: tabFinder creates a tab array of available species(see above function) grouped as per their config in \n the Zephyr API\nARGS: displayConfig(derived from API), slot(e.g. slotB), unitData(derived from API)\n*/\nconst tabFinder = (\n displayConfig: DisplayConfig,\n slot: SlotOptions,\n unitData: ZephyrHistory,\n) => {\n if (unitData && unitData['Hourly average on the hour']) {\n const availableSpecies = speciesFinder(displayConfig, slot, unitData);\n // map over the tabs and remove empty species and empty groups\n const tabConfigs = displayConfig.tabs\n .map((group) => ({\n ...group,\n species: group.species.filter(\n (species) =>\n availableSpecies.filter((aS) =>\n species.dataIdentifiers.includes(aS as SpeciesDataIdentifiers),\n ).length,\n ),\n }))\n .filter((tab) => tab.species.length > 0);\n return tabConfigs;\n }\n return [];\n};\n\n/* Function\nDESC: activeTabFinder creates an activeTabConfig object with the current group, species, and labels\n to be displayed\nARGS: displayConfig(derived from API), slot(e.g. slotB), unitData(derived from API)\n*/\nconst activeTabFinder = (\n displayConfig: DisplayConfig,\n slot: SlotOptions,\n unitData: ZephyrHistory,\n specifiedGroup?: SpeciesGroupOptions,\n) => {\n // return this object if the function cannot run\n const nullReturn = null;\n if (unitData && unitData['Hourly average on the hour']) {\n const availableSpecies = speciesFinder(displayConfig, slot, unitData).concat(speciesFinder(displayConfig, slot === 'slotA' ? 'slotB' : slot, unitData))\n\n if (availableSpecies.length > 0) {\n // map over the tabs and remove empty species and empty groups\n const tabConfigs = displayConfig.tabs\n .map((group) => ({\n ...group,\n species: group.species.filter(\n (species) =>\n availableSpecies.filter((aS) =>\n species.dataIdentifiers.includes(aS as SpeciesDataIdentifiers),\n ).length,\n ),\n }))\n .filter((tab) => tab.species.length > 0);\n // conditionally find the specific group\n const tabConfigArr = specifiedGroup\n ? tabConfigs.filter((tcGroup) => tcGroup.group === specifiedGroup)\n .length\n ? tabConfigs.filter((tcGroup) => tcGroup.group === specifiedGroup)\n : tabConfigs\n : tabConfigs;\n // construct activeTabConfig\n const activeTabConfig = {\n group: tabConfigArr[0].group,\n tab: tabConfigArr[0].species.map((species) => species.dataIdentifier),\n labels: tabConfigArr[0].species.map((species) => species.HTMLUnitLabel),\n };\n return activeTabConfig;\n }\n return nullReturn;\n }\n return nullReturn;\n};\n\n/* Function\nDESC: extentActiveTabFinder creates a hybrid activeTab of available species(see above function) grouped as per their config in \n the Zephyr API. For an array of units, it finds the full extent of a given active tabs species and labels that should be included.\nARGS: displayConfig(derived from API), slot(e.g. slotB), specifiedGroup(e.g. NO2), unitHistories(), unitData(derived from API)\n*/\n\nconst extentActiveTabFinder = (\n displayConfig: DisplayConfig,\n slot: SlotOptions,\n specifiedGroup: SpeciesGroupOptions,\n unitHistories: ZephyrHistoryWithId,\n unitNumber: number,\n) => {\n const availableSpecies: string[] = [];\n for (const [unitId, unitHistory] of Object.entries(unitHistories)) {\n const firstSlot =\n unitId === unitNumber.toString() && slot !== ''\n ? slot\n : slotFinder(unitHistory).length\n ? slotFinder(unitHistory)[0]\n : null;\n const unitAvailableSpecies = firstSlot\n ? speciesFinder(displayConfig, firstSlot, unitHistory).concat(speciesFinder(displayConfig, firstSlot === 'slotA' ? 'slotB' : firstSlot, unitHistory))\n : null;\n if (unitAvailableSpecies) {\n unitAvailableSpecies.forEach((sp) => {\n if (!availableSpecies.includes(sp)) {\n availableSpecies.push(sp);\n }\n });\n }\n }\n const filteredDisplayConfig = displayConfig.tabs\n .map((group) => ({\n ...group,\n species: group.species.filter(\n (species) =>\n availableSpecies.filter((aS: any) =>\n species.dataIdentifiers.includes(aS as SpeciesDataIdentifiers),\n ),\n ),\n }))\n .filter((tab) => tab.species.length > 0)\n .filter((tcGroup) => tcGroup.group === specifiedGroup);\n if (filteredDisplayConfig.length) {\n const extendedActiveTabConfig = {\n group: filteredDisplayConfig[0].group,\n tab: filteredDisplayConfig[0].species.map(\n (species) => species.dataIdentifier,\n ),\n labels: filteredDisplayConfig[0].species.map(\n (species) => species.HTMLUnitLabel,\n ),\n };\n return extendedActiveTabConfig;\n }\n return null;\n};\n\n/* Function\nDESC: aqMetMapper creates an aqMetConfig array\nARGS: displayConfig(derived from API), externalMetData(derived from API)\n*/\nconst aqMetMapper = (\n displayConfig: DisplayConfig,\n externalMetData: ExternalMetData,\n) => {\n const aqiMetConfigs = displayConfig?.met?.map((group) => ({\n ...group,\n species: group.species.filter(\n (species) => typeof externalMetData[species.dataIdentifier] === 'number',\n ),\n }));\n return aqiMetConfigs;\n};\n\nconst aqTabHeaderFinder = (displayConfig: DisplayConfig, zephyr: Zephyr) => {\n if (!zephyr) return [];\n const aqTabHeaders: AQOptionsMap[] = [];\n const lastHourUnitData = zephyr.averageOfLastHourOfData;\n const { externalMetData } = zephyr;\n if (lastHourUnitData) {\n const unitTabs = aqTabFinder(displayConfig, lastHourUnitData);\n // Get all tabs from unit\n unitTabs.forEach((group) => {\n const curAQTabHeaderVals = aqTabHeaders.map((uTH) => uTH.value);\n if (\n !curAQTabHeaderVals.includes(group.context) &&\n (group.species.length || group.context === 'zephyr')\n ) {\n const newUnitTabHeader = {\n label: group.contextLabel,\n value: group.context,\n };\n aqTabHeaders.push(newUnitTabHeader);\n }\n });\n }\n // Get external tabs\n const metStation = aqTabHeaders.filter((t) => t.value === 'met').length;\n if (!metStation && externalMetData && externalMetData.windDir) {\n aqTabHeaders.push(aqlOtherTab);\n }\n return aqTabHeaders;\n};\n\n/* Function\nDESC: aqTabFinder creates an aqiTabConfigs array with each groups config\n to be displayed\nARGS: displayConfig(derived from API), lastHourunitData(derived from API)\n*/\nconst aqTabFinder = (\n displayConfig: DisplayConfig,\n lastHourUnitData: ZephyrLastHourInd,\n) => {\n const aqiTabConfigs = displayConfig.tabs.map((group) => ({\n ...group,\n species: group.species.filter(\n (species) => typeof lastHourUnitData[species.label] === 'number',\n ),\n }));\n return aqiTabConfigs;\n};\n\n/* Function\nDESC: speciesFilterFinder creates an array of species filters to be displayed\nARGS: chartDatasets\n*/\nconst speciesFilterFinder = (\n chartDatasets: LineChartData[],\n speciesFiltered: SpeciesDataLabels[],\n) => {\n const filterSpecies: any[] = [];\n chartDatasets.forEach((dataset) => {\n const filterSpeciesLabels = filterSpecies.map((fs) => fs.label);\n if (!filterSpeciesLabels.includes(dataset.speciesLabel)) {\n const hiddenStatus = !!speciesFiltered.includes(dataset.speciesLabel);\n filterSpecies.push({ label: dataset.speciesLabel, hidden: hiddenStatus });\n }\n });\n return filterSpecies;\n};\n\nexport {\n activeTabFinder,\n aqMetMapper,\n aqTabHeaderFinder,\n aqTabFinder,\n extentActiveTabFinder,\n extentTabFinder,\n mappairSpeciesFinder,\n speciesColourFinder,\n speciesFilterFinder,\n speciesFinder,\n speciesLabelFinder,\n speciesObjFinder,\n tabFinder,\n};\n","// Util Imports\nimport {\n speciesColourFinder,\n speciesObjFinder,\n speciesFinder,\n} from './tabFinder';\nimport { slotFinder } from './slotFinder';\n\n// Const Imports\nimport {\n borderDashConfigs,\n borderDashConfigs2,\n placeholderAxisConfig,\n} from '../consts';\n\n// Type Imports\nimport {\n AveragingPeriod,\n ActiveTab,\n ChartData,\n LineChartData,\n LineChartDataEnriched,\n LineChartDataPoints,\n DisplayConfig,\n SecondaryAxisConfig,\n SlotOptions,\n Species,\n SpeciesDataIdentifiers,\n Zephyr,\n ZephyrHistory,\n ZephyrHistoryWithId,\n} from '../interface';\n\nconst convertRawData = (dataArr: any[], speciesObj: Species) => {\n // Currently rounds to 1dp - scope to add rounding param to displayConfig\n const processedRawData = dataArr.map((rD) => {\n if (typeof rD === 'number' && rD !== 0) {\n if (\n speciesObj.conversionDivider &&\n typeof speciesObj.conversionDivider === 'number'\n ) {\n const convertedNum =\n Math.round((rD / speciesObj.conversionDivider) * 10) / 10;\n return convertedNum;\n }\n if (\n speciesObj.conversionDivider &&\n typeof speciesObj.conversionMultiplier === 'number'\n ) {\n const convertedNum =\n Math.round(rD * speciesObj.conversionMultiplier * 10) / 10;\n return convertedNum;\n }\n }\n return rD;\n });\n return processedRawData;\n};\n\nconst getChartDataset = (\n averagingOption: AveragingPeriod,\n activeTab: ActiveTab,\n activeTabIdx: number,\n displayConfig: DisplayConfig,\n slot: SlotOptions,\n species: SpeciesDataIdentifiers,\n unitId: number,\n unitIdx: number,\n unitList: Zephyr[],\n zephyrHistory: ZephyrHistory,\n) => {\n const availableSpecies = speciesFinder(displayConfig, slot, zephyrHistory);\n const targetTab = displayConfig.tabs.filter(\n (t) =>\n t.species.filter((tS) =>\n tS.dataIdentifiers.includes(activeTab.tab[activeTabIdx]),\n ).length,\n )[0];\n const targetSpecies = availableSpecies.filter(\n (aS) =>\n targetTab.species.filter(\n (tDS) =>\n tDS.dataIdentifiers.includes(aS as SpeciesDataIdentifiers) &&\n tDS.dataIdentifier === activeTab.tab[activeTabIdx],\n ).length,\n )[0];\n if (\n zephyrHistory[averagingOption.averagingOption][slot] &&\n zephyrHistory[averagingOption.averagingOption][slot]![targetSpecies] &&\n zephyrHistory[averagingOption.averagingOption][slot]![targetSpecies].data\n .length\n ) {\n const unit = unitList.filter((u) => u.zNumber === unitId)[0];\n const speciesObj = speciesObjFinder(displayConfig, species);\n const speciesColour = speciesColourFinder(displayConfig, species, unitIdx);\n const rawData = zephyrHistory[averagingOption.averagingOption][slot]![\n targetSpecies\n ].data;\n let processedData = rawData;\n if (speciesObj.conversionDivider || speciesObj.conversionMultiplier) {\n processedData = convertRawData(rawData, speciesObj);\n }\n const dataset: LineChartData = {\n unitId,\n species,\n label: `${unit.name}-${activeTab.labels[activeTabIdx]}-${slot}`,\n speciesLabel: `${activeTab.labels[activeTabIdx]}-${slot}`,\n unitNameLabel: unit.name,\n hidden: false,\n defaultColour: '#fff',\n featureColour: speciesColour,\n borderDash: borderDashConfigs[unitIdx],\n borderDash2: borderDashConfigs2[unitIdx],\n data: processedData,\n speciesObj,\n };\n return dataset;\n }\n return null;\n};\n\nconst getIdxOfUnit = (unitId: number, unitList: Zephyr[]) => {\n let unitIdx: number = 0;\n unitList.forEach((unit, idx) => {\n if (unit.zNumber === unitId) {\n unitIdx = idx;\n }\n });\n return unitIdx;\n};\n\nconst getSlotData = (\n averagingOption: AveragingPeriod,\n slot: SlotOptions,\n zephyrHistory: ZephyrHistory,\n) => {\n let slotData = null;\n if (slot && zephyrHistory[averagingOption.averagingOption]) {\n slotData = zephyrHistory[averagingOption.averagingOption][slot];\n } else {\n // if selected averagingOption not exist, find another averagingOption\n for (const avgKey in zephyrHistory) {\n const avgInfo = zephyrHistory[avgKey];\n if (avgInfo[slot]) {\n slotData = avgInfo[slot];\n break;\n }\n }\n }\n\n return slotData;\n};\n\n// we are only going in the slot to find the timezone type\nconst getTzConfig = (\n averagingOption: AveragingPeriod,\n slot: SlotOptions,\n zephyrHistory: ZephyrHistory,\n) => {\n let tzType = '';\n let tzSpecific = '';\n if (zephyrHistory) {\n const slotData = getSlotData(averagingOption, slot, zephyrHistory);\n\n if (slotData) {\n tzType =\n slotData.localDateTime &&\n slotData.localDateTime.data.length === slotData.dateTime.data.length &&\n !slotData.localDateTime.data.includes(null)\n ? 'localDateTime'\n : 'dateTime';\n\n if (tzType === 'localDateTime') {\n const { tzHistory } = slotData.localDateTime;\n if (tzHistory && tzHistory.length === 1) {\n tzSpecific = tzHistory[0].timezone;\n } else {\n tzSpecific = 'Mixed';\n }\n } else {\n tzSpecific = 'UTC';\n }\n }\n }\n return { tzType, tzSpecific };\n};\n\nconst getTzConfigFromAllHistories = (\n averagingOption: AveragingPeriod,\n slot: SlotOptions,\n unitHistories: ZephyrHistoryWithId,\n zephyr: Zephyr,\n) => {\n let tzConfig = {\n tzType: '',\n tzSpecific: '',\n };\n for (const [unitId, unitHistory] of Object.entries(unitHistories)) {\n const firstSlot =\n unitId === zephyr.zNumber.toString() && slot\n ? slot\n : slotFinder(unitHistory).length\n ? slotFinder(unitHistory)[0]\n : null;\n if (firstSlot) {\n const unitTzConfig = getTzConfig(averagingOption, firstSlot, unitHistory);\n if (unitTzConfig) {\n if (!tzConfig.tzType && !tzConfig.tzSpecific) {\n tzConfig = unitTzConfig;\n } else if (unitTzConfig.tzType === 'dateTime') {\n tzConfig = unitTzConfig;\n } else if (\n unitTzConfig.tzType === 'localDateTime' &&\n unitTzConfig.tzSpecific !== tzConfig.tzSpecific\n ) {\n tzConfig = {\n tzType: 'dateTime',\n tzSpecific: 'UTC',\n };\n }\n }\n }\n }\n return tzConfig;\n};\n\nconst getDateObjectArray = (dates: string[]) =>\n dates.map((date) => new Date(date));\n\nconst updateChartDatasets = (\n chartDatasets: LineChartData[],\n displayConfig: DisplayConfig,\n unitList: Zephyr[],\n) => {\n const updatedDatasets: LineChartData[] = chartDatasets.map((dataset) => {\n const unitIdx = getIdxOfUnit(dataset.unitId, unitList);\n const speciesColour = speciesColourFinder(\n displayConfig,\n dataset.species,\n unitIdx,\n );\n return {\n ...dataset,\n backgroundColor: speciesColour,\n borderColor: speciesColour,\n pointBorderColor: speciesColour,\n pointHoverBorderColor: speciesColour,\n };\n });\n return updatedDatasets;\n};\n\nconst hasAvailableData = (datasets: LineChartData[]) => {\n const datasetsWithData = datasets.filter((dataset: any) => {\n const valReturned = dataset.data.find((dp: any) => dp !== null);\n return valReturned !== null && valReturned !== undefined;\n });\n return datasetsWithData;\n};\n\nconst getSecondaryAxisConfigs = (chartData: ChartData) => {\n // Check if any data lies outside of the min and max configs\n const allDataIsInRange = (\n // TODO: understand why we can't run a .find on ds.data as LineChartData\n ds: any,\n max: number | boolean,\n min: number | boolean,\n ) => {\n const allDateInRange =\n ds.data.find(\n (d: any) => d !== null && ((max && d > max) || (min && d < min)),\n ) === undefined;\n return allDateInRange;\n };\n const secondaryAxisDS: any[] = [];\n chartData.datasets\n .filter((ds) => ds.speciesObj.secondaryAxis)\n .forEach((ds, idx) => {\n if (!ds.hidden) {\n const dataInRange = allDataIsInRange(\n ds,\n ds.speciesObj.maximum,\n ds.speciesObj.minimum,\n );\n const secondaryAxisConfig = {\n idx,\n maximum:\n ds.speciesObj.maximum && !ds.hidden && dataInRange\n ? ds.speciesObj.maximum\n : null,\n minimum:\n ds.speciesObj.minimum && !ds.hidden\n ? dataInRange\n ? ds.speciesObj.minimum\n : null\n : 0,\n title: ds.speciesLabel,\n };\n secondaryAxisDS.push(secondaryAxisConfig);\n } else {\n const voidedAxisConfig = {\n ...placeholderAxisConfig[0],\n idx,\n title: ds.speciesLabel,\n void: true,\n };\n secondaryAxisDS.push(voidedAxisConfig);\n }\n });\n if (secondaryAxisDS.length) {\n // For each species, take the extent of the ranges across all units\n const finalSecondaryAxisDs: SecondaryAxisConfig[] = [];\n secondaryAxisDS.forEach((sAD) => {\n const inConfig = finalSecondaryAxisDs.filter(\n (fSAD: any) =>\n fSAD.title === sAD.title && fSAD.idx !== sAD.idx && !sAD.void,\n );\n if (inConfig.length) {\n const comparisonConfig = inConfig[0];\n if (\n comparisonConfig.void ||\n (comparisonConfig.minimum &&\n sAD.minimum &&\n sAD.minimum < comparisonConfig.minimum) ||\n !sAD.minimum\n ) {\n finalSecondaryAxisDs[comparisonConfig.idx].minimum = sAD.minimum as\n | null\n | number;\n finalSecondaryAxisDs[comparisonConfig.idx].void = false;\n }\n if (\n comparisonConfig.void ||\n (comparisonConfig.maximum &&\n sAD.maximum &&\n sAD.maximum > comparisonConfig.maximum)\n ) {\n finalSecondaryAxisDs[comparisonConfig.idx].maximum = sAD.maximum as\n | null\n | number;\n finalSecondaryAxisDs[comparisonConfig.idx].void = false;\n }\n } else {\n finalSecondaryAxisDs.push(sAD as SecondaryAxisConfig);\n }\n });\n return finalSecondaryAxisDs;\n }\n // Defaults returned will never be displayed - serve as null\n return placeholderAxisConfig;\n};\n\nconst determineSecondaryAxis = (\n chartData: ChartData,\n species: SpeciesDataIdentifiers,\n displayConfig: DisplayConfig,\n) => {\n let secondaryAxis = false;\n const dataset = chartData.datasets.filter((ds) => ds.species === species)[0];\n if (dataset.speciesObj.secondaryAxis) {\n // check to see if there are datasets of primary species in the same group across all units\n const group = displayConfig.tabs.filter(\n (t) =>\n t.species.filter((s) => s.dataIdentifiers.includes(species)).length,\n )[0];\n const otherSpeciesList = group.species\n .filter((t) => !t.dataIdentifiers.includes(species) && !t.secondaryAxis)\n .map((s) => s.dataIdentifier);\n if (otherSpeciesList.length) {\n const primaryAxisDatasets = chartData.datasets.filter((ds) =>\n otherSpeciesList.includes(ds.species),\n );\n const primaryAxisDatasetsWithData = hasAvailableData(primaryAxisDatasets);\n if (primaryAxisDatasetsWithData.length) {\n secondaryAxis = true;\n }\n }\n }\n return secondaryAxis;\n};\n\nconst wrangleLineChartData = (\n chartData: ChartData,\n handleUnitSpeciesFilter: Function,\n // without displayConfig, wrangleLineChartData doesn't apply processing like secondary axis determination\n averagingOption?: AveragingPeriod,\n displayConfig?: DisplayConfig,\n) => {\n const wrangledData: LineChartDataEnriched[] = [];\n chartData.datasets.forEach((ds) => {\n let updatedMap: LineChartDataPoints[] = [];\n const secondaryAxis = displayConfig\n ? determineSecondaryAxis(chartData, ds.species, displayConfig)\n : false;\n ds.data.forEach((dd: any, idx: any) => {\n const date = chartData.labels[idx];\n if (date) {\n updatedMap.push({ x: date, y: dd });\n }\n });\n if (averagingOption && averagingOption.averagingOption === 'Unaveraged') {\n const nullifiedUpdatedMap: LineChartDataPoints[] = [];\n updatedMap.forEach((um, idx, arr) => {\n nullifiedUpdatedMap.push(um);\n if (idx < arr.length - 1) {\n const curDate = um.x;\n const nextDate = arr[idx + 1].x;\n\n const diff = ((nextDate as any) - (curDate as any)) / 60000;\n\n if (diff > 3) {\n // make up a date in-between the start and end of the data gap\n const halfwayDate = new Date(\n um.x.getTime() + Math.round((diff / 2) * 60000),\n );\n nullifiedUpdatedMap.push({ x: halfwayDate, y: null });\n }\n }\n });\n if (nullifiedUpdatedMap.length !== updatedMap.length) {\n updatedMap = nullifiedUpdatedMap;\n }\n }\n wrangledData.push({\n type: 'line',\n axisYType: secondaryAxis ? 'secondary' : 'primary',\n axisYIndex: secondaryAxis\n ? wrangledData.filter(\n (wD) =>\n wD.axisYType === 'secondary' && wD.label === ds.speciesLabel,\n ).length\n ? wrangledData.filter(\n (wD) =>\n wD.axisYType === 'secondary' && wD.label === ds.speciesLabel,\n )[0].axisYIndex\n : wrangledData.filter((wD) => wD.axisYType === 'secondary').length\n ? 1\n : 0\n : undefined,\n dataPoints: updatedMap,\n lineColor: ds.featureColour,\n lineDashType: ds.borderDash2,\n markerSize: 0,\n markerColor: ds.defaultColour,\n markerBorderColor: ds.featureColour,\n markerBorderThickness: 2,\n label: ds.speciesLabel,\n name: ds.unitNameLabel,\n visible: !ds.hidden,\n click: () => handleUnitSpeciesFilter(ds.label, ds.speciesLabel),\n xValueFormatString: 'DD-MM-YY HH:mm',\n cursor: 'pointer',\n });\n });\n return wrangledData;\n};\n\nexport {\n convertRawData,\n getChartDataset,\n getIdxOfUnit,\n getSecondaryAxisConfigs,\n getSlotData,\n getTzConfig,\n getTzConfigFromAllHistories,\n getDateObjectArray,\n hasAvailableData,\n updateChartDatasets,\n wrangleLineChartData,\n};\n","// Package Imports\nimport React, { useEffect, useRef } from 'react';\nimport CanasJSReact from '../../canvasjs.react';\n\n// Component Imports\nimport DataChartDownloadButton from './DataChartDownloadButton';\n\n// Util Imports\nimport {\n getSecondaryAxisConfigs,\n wrangleLineChartData,\n} from '../../utils/functions/chartHelper';\n\n// Const Imports\nimport { placeholderAxis } from '../../utils/consts';\n\n// Type Imports\nimport {\n AveragingPeriod,\n ChartData,\n DisplayConfig,\n} from '../../utils/interface';\n\ninterface DataLineChartProps {\n averagingOption: AveragingPeriod;\n chartData: ChartData;\n displayConfig: DisplayConfig;\n downloadOn: boolean | null;\n handleChartDownload: Function;\n handleUnitSpeciesFilter: Function;\n isPublic: boolean;\n showingAnnualAverage: boolean;\n}\n\nconst DataLineChart = ({\n averagingOption,\n chartData,\n displayConfig,\n downloadOn,\n handleChartDownload,\n handleUnitSpeciesFilter,\n isPublic,\n showingAnnualAverage,\n}: DataLineChartProps) => {\n // Consts\n const wrangledChartData = wrangleLineChartData(\n chartData,\n handleUnitSpeciesFilter,\n averagingOption,\n displayConfig,\n );\n\n const secondaryAxisConfig = getSecondaryAxisConfigs(chartData);\n\n // Refs\n const chart = useRef(null);\n\n return (\n
    \n
    \n {\n const formattedDate = CanasJSReact.CanvasJS.formatDate(\n e.entries[0].dataPoint.x,\n e.entries[0].dataSeries.xValueFormatString,\n );\n const content = `${e.entries[0].dataSeries.name} (${formattedDate})
    ${e.entries[0].dataPoint.y} ${e.entries[0].dataSeries.label}`;\n return content;\n },\n },\n axisY: {\n gridColor: '#cbcdcf',\n gridThickness: 0,\n labelFontFamily: 'Open Sans',\n },\n axisY2: [\n secondaryAxisConfig.length && !secondaryAxisConfig[0].void\n ? {\n gridColor: '#cbcdcf',\n gridThickness: 0,\n labelFontFamily: 'Open Sans',\n title: secondaryAxisConfig[0].title,\n titleFontColor: '#222539',\n titleFontSize: 15,\n titleFontFamily: 'Open Sans',\n minimum: secondaryAxisConfig[0].minimum,\n maximum: secondaryAxisConfig[0].maximum,\n }\n : placeholderAxis,\n secondaryAxisConfig.length > 1 && !secondaryAxisConfig[1].void\n ? {\n gridColor: '#cbcdcf',\n gridThickness: 0,\n labelFontFamily: 'Open Sans',\n title: secondaryAxisConfig[1].title,\n titleFontColor: '#222539',\n titleFontSize: 15,\n titleFontFamily: 'Open Sans',\n minimum: secondaryAxisConfig[1].minimum,\n maximum: secondaryAxisConfig[1].maximum,\n }\n : placeholderAxis,\n ],\n axisX: {\n labelFontFamily: 'Open Sans',\n valueFormatString: 'HH:mm DD-MM-YY',\n labelAngle: 0,\n labelAutoFit: true,\n labelWrap: true,\n interval: showingAnnualAverage ? 1 : undefined,\n intervalType: showingAnnualAverage ? 'year' : undefined,\n labelMaxWidth: 75,\n prefix: '‎‎‏‏‎ ‎ ',\n },\n }}\n />\n \n
    \n
    \n );\n};\n\nexport default DataLineChart;\n","// Package Imports\nimport React from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\n\n// Styled Component\nconst DataChartDisclaimerWrapper = styled.div`\n font-size: 0.9rem;\n color: #8e8e93;\n margin-top: 5px;\n`;\n\ninterface DataChartDisclaimerProps {\n on: boolean;\n}\n\n// Component\nconst DataChartDisclaimer = ({ on }: DataChartDisclaimerProps) => {\n const { t: translate } = useTranslation();\n\n return on ? (\n \n {translate('DataChartDisclaimer')}\n \n ) : (\n <>\n );\n};\n\nexport default DataChartDisclaimer;\n","// Package Imports\nimport React from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\n\n// Type Imports\nimport {\n AnnualAvgData,\n RequestError,\n Zephyr,\n ZephyrHistoryWithId,\n ZephyrTypes,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface DataChartHeaderProps {\n progressBarOn: boolean;\n requestErrors: RequestError[];\n tz: {\n tzType: string;\n tzSpecific: string;\n };\n unitHistories: ZephyrHistoryWithId | null;\n unitList: Zephyr[];\n annualAvgData: AnnualAvgData;\n showingAnnualAverage: boolean;\n statusCode: number;\n statusDescription: string | null;\n}\n\n// Styled Component\nconst ChartHeader = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n // min-height: 110px;\n button {\n margin-top: 5px;\n background: #e1e4e6;\n font-size: 1.3rem;\n color: #252834;\n border-radius: 2.5px;\n border: transparent;\n cursor: pointer;\n padding: 5px 8px;\n &:hover {\n background: #b1b5b5;\n }\n }\n`;\n\n// Component\nconst DataChartHeader = ({\n progressBarOn,\n requestErrors,\n tz,\n unitHistories,\n unitList,\n annualAvgData,\n showingAnnualAverage,\n statusCode,\n statusDescription,\n}: DataChartHeaderProps) => {\n const { t: translate } = useTranslation();\n\n const getHeaderText = () => {\n if (progressBarOn) return translate('DataChartHeaderLoading');\n\n if (showingAnnualAverage) {\n if (annualAvgData && annualAvgData.list)\n return `${translate('DataChartHeaderTzPrefix')} ${translate(\n 'DataChartHeaderTzUTC',\n )}`;\n\n return translate('DataChartHeaderNull');\n }\n\n if (unitHistories && Object.keys(unitHistories).length) {\n if (requestErrors.length === 0)\n return `${translate('DataChartHeaderTzPrefix')} ${tz.tzSpecific}`;\n\n if (unitList && unitList.length === requestErrors.length) {\n return translate('DataChartAllTimedOut');\n }\n\n return `${translate('DataChartSomeTimedOut')} ${translate(\n 'DataChartHeaderTzPrefix',\n )} ${tz.tzSpecific}`;\n }\n\n if (requestErrors.length) {\n let message = '';\n if (statusCode && statusCode !== 200) {\n switch (statusCode) {\n case 240:\n message = statusDescription ? statusDescription : `${translate('DataChart_240')}`;\n break;\n case 400:\n message = statusDescription ? statusDescription : `${translate('DataChart_400')}`;\n break;\n case 401:\n message = statusDescription ? statusDescription : `${translate('DataChart_401')}`;\n break;\n case 403:\n message = statusDescription ? statusDescription : `${translate('DataChart_403')}`;\n break;\n case 404:\n message = statusDescription ? statusDescription : `${translate('DataChart_404')}`;\n break;\n case 429:\n message = statusDescription ? statusDescription : `${translate('DataChart_429')}`;\n break;\n case 500:\n message = statusDescription ? statusDescription : `${translate('DataChart_500')}`;\n break;\n\n default:\n message = statusCode.toString();\n }\n }\n return message;\n }\n\n if (unitList.length === 1 && unitList[0].type === ZephyrTypes.virtual) {\n return `${translate('vZephyrLoadingMsg')}`;\n }\n\n return `${translate('DataChartHeaderNull')}`;\n };\n\n return (\n \n

    {getHeaderText()}

    \n
    \n );\n};\n\nexport default DataChartHeader;\n","// Package Imports\nimport React, { useEffect } from 'react';\n\n// Component Interfaces\ninterface DataChartLabelCanvasProps {\n canvasId: string;\n dashPattern: number[];\n strokeColor: string;\n}\n\n// Component\nconst DataChartLabelsCanvas = ({\n canvasId,\n dashPattern,\n strokeColor,\n}: DataChartLabelCanvasProps) => {\n useEffect(() => {\n const canvas: any = document.getElementById(canvasId);\n if (canvas) {\n const ctx = canvas.getContext('2d');\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = 2;\n ctx.beginPath();\n ctx.setLineDash(dashPattern);\n ctx.moveTo(0, 8);\n ctx.lineTo(23, 8);\n ctx.stroke();\n }\n }, []);\n\n return ;\n};\n\nexport default DataChartLabelsCanvas;\n","// Package Imports\nimport React, { useEffect } from 'react';\n\n// Component Imports\nimport DataChartLabelsCanvas from './DataChartLabelCanvas';\n\n// Util Imports\nimport { hasAvailableData } from '../../utils/functions/chartHelper';\n\n// Type Imports\nimport { ChartData } from '../../utils/interface';\n\n// Component Interfaces\ninterface DataChartLabelsProps {\n chartData: ChartData;\n handleUnitSpeciesFilter: Function;\n}\n\n// Component\nconst DataChartLabels = ({\n chartData,\n handleUnitSpeciesFilter,\n}: DataChartLabelsProps) => {\n\n return (\n <>\n
    \n {chartData.datasets.length && hasAvailableData(chartData.datasets) ? (\n hasAvailableData(chartData.datasets).map((dataset) => (\n \n handleUnitSpeciesFilter(dataset.label, dataset.speciesLabel)\n }\n >\n \n
    \n {dataset.label}\n
    \n \n ))\n ) : (\n <>\n )}\n
    \n \n );\n};\n\nexport default DataChartLabels;\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\n\n// Type Safety\ninterface TooltipProps {\n containerClassName: string;\n content: string;\n tooltipMarkerContent: string;\n}\n\n// Component\nconst Tooltip = ({\n containerClassName,\n content,\n tooltipMarkerContent,\n}: TooltipProps) => {\n return (\n
    \n
    \n
    {tooltipMarkerContent}
    \n
    {parse(content)}
    \n
    \n
    \n );\n};\n\nexport default Tooltip;\n","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport Tooltip from '../shared_components/Tooltip';\n\n// Content Imports\n\n// Type Imports\nimport { AnnualAvgData, RequestError, Zephyr } from '../../utils/interface';\n\n// Component Interfaces\ninterface DataUnitsProps {\n handleRemoveUnit: Function;\n isPublic: boolean;\n progressBarOn: boolean;\n requestErrors: RequestError[];\n unitList: Zephyr[];\n zephyrs: Zephyr[];\n annualAvgData: AnnualAvgData;\n showingAnnualAverage: boolean;\n}\n\n// Component\nconst DataUnits = ({\n handleRemoveUnit,\n isPublic,\n progressBarOn,\n requestErrors,\n unitList,\n zephyrs,\n annualAvgData,\n showingAnnualAverage,\n}: DataUnitsProps) => {\n const { t: translate } = useTranslation();\n\n // Functions\n const handleRemoveUnitClick = (unitId: number) => {\n if (!progressBarOn) {\n handleRemoveUnit(unitId);\n }\n };\n\n return (\n
    \n
      \n
      \n {!isPublic &&\n unitList.length &&\n unitList.length === 1 &&\n zephyrs.length > 1 ? (\n \n ) : (\n <>\n )}\n

      \n {unitList.length > 0\n ? unitList.length === 1\n ? translate('DataUnitsSingleUnit')\n : translate('DataUnitsHeaderMultiUnits')\n : ''}\n

      \n
      \n {unitList.length &&\n unitList.map((unit, idx) => (\n e.unitId === unit.zNumber).length\n ? 'request-failed'\n : ''\n }`}\n >\n {unit.name ?
      {unit.name}
      : null}\n\n {idx !== 0 && !showingAnnualAverage ? (\n e.unitId === unit.zNumber)\n .length\n ? 'request-failed'\n : ''\n }`}\n onClick={() => handleRemoveUnitClick(unit.zNumber)}\n >\n {translate('DataUnitsRemoveUnit')}\n
    \n ) : (\n \n )}\n \n ))}\n \n
    \n );\n};\n\nconst AADataCoordinates = ({\n progressBarOn,\n annualAvgData,\n showingAnnualAverage,\n}: any) => {\n if (!showingAnnualAverage) return null;\n if (!annualAvgData?.list?.latlon?.lat) return null;\n\n return (\n
    \n Lat, Long :{' '}\n {`${annualAvgData?.list?.latlon?.lat?.toFixed(\n 2,\n )} , ${annualAvgData?.list?.latlon?.lon?.toFixed(2)}`}\n
    \n );\n};\n\nexport default DataUnits;\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\n\n// Component Interfaces\ninterface ProgressBarProps {\n additionalClass?: string;\n dataLoading: boolean;\n setProgressBarOn: Function;\n timeEstimate: number;\n}\n\n// Component\nconst ProgressBar = ({\n additionalClass,\n dataLoading,\n setProgressBarOn,\n timeEstimate,\n}: ProgressBarProps) => {\n // State\n const [time, setTime] = useState(0);\n\n useEffect(() => {\n setProgressBarOn(true);\n }, []);\n\n useEffect(() => {\n if (!dataLoading) {\n setProgressBarOn(false);\n }\n }, [dataLoading]);\n\n // Hooks\n const useInterval = (callback: Function, delay: number | null) => {\n const savedCallback: any = useRef();\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n const tick = () => {\n savedCallback.current();\n };\n if (delay !== null) {\n const id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n };\n // Credit Dan Abramov: https://overreacted.io/making-setinterval-declarative-with-react-hooks/\n\n // Timer\n useInterval(\n () => {\n setTime(time + 100);\n },\n dataLoading ? 100 : 0.000001,\n );\n\n return (\n <>\n {dataLoading || time < timeEstimate ? (\n
    \n
    \n \n
    \n
    \n ) : (\n <>\n )}\n \n );\n};\n\nexport default ProgressBar;\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n// @ts-ignore\nimport html2canvas from 'html2canvas';\n// @ts-ignore\nimport canvasToImage from 'canvas-to-image';\n\n// Component Imports\nimport DataLineChart from './DataLineChart';\nimport DataChartDisclaimer from './DataChartDisclaimer';\nimport DataChartHeader from './DataChartHeader';\nimport DataChartLabels from './DataChartLabels';\nimport DataUnits from './DataUnits';\nimport ProgressBar from '../shared_components/ProgressBar';\n\n// Util Imports\nimport { periods } from '../../utils/consts';\nimport { defaultStartEndFinder, startEndFinder, subtractTwoDates, utcConvertor } from '../../utils/functions/dateFinder';\nimport utilsRequest from '../../utils/request';\nimport { checkDataResponseForData, setZephyr } from '../../actions/zephyrs';\n\n\n// Type Imports\nimport {\n AnnualAvgData,\n AveragingPeriod,\n ChartData,\n DataConfig,\n DisplayConfig,\n ReduxState,\n RequestError,\n TimePeriod,\n UrlQueryStringParams,\n Zephyr,\n ZephyrHistoryWithId,\n} from '../../utils/interface';\nimport { bindActionCreators, Dispatch } from 'redux';\n\n// Component Interface\ninterface DataChartContainerProps {\n averagingOption: AveragingPeriod;\n chartData: ChartData;\n dataLoading: boolean;\n date: {\n start: Date;\n end: Date;\n };\n draggedUnit: Zephyr | null;\n displayConfig: DisplayConfig;\n handleRemoveUnit: Function;\n handleUnitSpeciesFilter: Function;\n isPublic: boolean;\n progressBarOn: boolean;\n requestErrors: RequestError[];\n setProgressBarOn: Function;\n setUnitList: Function;\n setUnitListGrowing: Function;\n timezone: {\n tzType: string;\n tzSpecific: string;\n };\n timePeriod: TimePeriod;\n timePeriodSwitching: boolean;\n unitHistories: ZephyrHistoryWithId | null;\n unitList: Zephyr[];\n zephyrs: Zephyr[];\n showingAnnualAverage: boolean;\n annualAvgData: AnnualAvgData;\n zephyr: any,\n statusCode: number,\n setZephyr: Function,\n setRequestErrors: Function,\n isDSEEnabled: boolean,\n setUnitHistories: Function,\n queryStringParams: UrlQueryStringParams,\n dataConfig: DataConfig,\n setHasZephyrNull: Function,\n hasZephyrNull: boolean | null,\n statusDescription: string | null,\n}\n\nconst DataChartContainer = ({\n averagingOption,\n chartData,\n date,\n dataLoading,\n displayConfig,\n draggedUnit,\n handleRemoveUnit,\n handleUnitSpeciesFilter,\n isPublic,\n progressBarOn,\n requestErrors,\n setProgressBarOn,\n setUnitList,\n setUnitListGrowing,\n timezone,\n timePeriod,\n timePeriodSwitching,\n unitHistories,\n unitList,\n zephyrs,\n showingAnnualAverage,\n annualAvgData,\n zephyr,\n statusCode,\n setZephyr,\n setRequestErrors,\n isDSEEnabled,\n setUnitHistories,\n queryStringParams,\n dataConfig,\n setHasZephyrNull,\n hasZephyrNull,\n statusDescription,\n}: DataChartContainerProps) => {\n // State\n const [readyForDrop, setReadyForDrop] = useState(false);\n\n // Refs\n const compRef = React.createRef();\n\n // Functions\n const handleChartDownload = () => {\n let fileName = '';\n if (showingAnnualAverage) {\n fileName = `mappairChartExport_${annualAvgData?.list?.latlon?.lat.toFixed(\n 2,\n )}_${annualAvgData?.list?.latlon?.lon.toFixed(2)}`;\n } else {\n fileName = `chartExport_${unitList.length === 1\n ? unitList[0].name.replace(' ', '_')\n : 'multipleUnits'\n }_${averagingOption.labelHTML}`;\n }\n\n const item = document.querySelector('#graph-container') as any;\n item.parentNode.style.overflow = 'visible';\n let html2canvasOptions = {\n backgroundColor: null,\n ignoreElements: () => false,\n windowWidth: window.outerWidth + window.innerWidth,\n logging: false,\n };\n if ((window.document as any).documentMode) {\n const ieOptions = {\n ...html2canvasOptions,\n x: 0,\n y: 400,\n };\n html2canvasOptions = ieOptions;\n }\n html2canvas(item as HTMLElement, html2canvasOptions).then((canvas) => {\n canvasToImage(canvas, {\n name: fileName,\n type: 'png',\n quality: 1,\n });\n });\n };\n\n const zephyrMeasurementRequestData = () => {\n const defaultStartEnd = defaultStartEndFinder();\n let { end, start } = defaultStartEnd;\n if (timePeriod.timeOption === 'custom') {\n start = moment(date.start)\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n const unformattedEnd = moment(date.end).set({ h: 23, m: 59, s: 0 });\n const current = moment();\n const selectedEnd = current < unformattedEnd ? current : unformattedEnd;\n end = selectedEnd.format('YYYYMMDDHHmm');\n } else if (timePeriod.timeOption) {\n const startEnd = startEndFinder(timePeriod.timeOption);\n if (isPublic) {\n start = moment(startEnd.start, 'YYYYMMDDHHmm')\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n end = moment(startEnd.end, 'YYYYMMDDHHmm')\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n } else {\n start = startEnd.start;\n end = startEnd.end;\n }\n }\n\n // Convert start/end\n const startUTC = utcConvertor(start);\n const endUTC = utcConvertor(end);\n const updatedDataConfig = queryStringParams.ctv\n ? { ...dataConfig, ctv: queryStringParams.ctv }\n : dataConfig;\n\n return { startUTC, endUTC, updatedDataConfig }\n }\n\n const handleDropZone = (e: React.DragEvent) => {\n if (showingAnnualAverage) return;\n // Allow only a maximum of 5 units to be overplotted\n\n // Handle dropping units with no last hr of data\n // if (draggedUnit && !draggedUnit.averageOfLastHourOfData && draggedUnit.type === 0) {\n // alert(\"Zephyr \" + draggedUnit.name + \" has no data at the moment. Try again later.\");\n // return;\n // }\n\n if (draggedUnit && unitList && ((draggedUnit.type === 0 && unitList[0].type === 100) || (draggedUnit.type === 100 && unitList[0].type === 0))) {\n alert(\"Stacking zephyrs and virtual zephyrs still in development. Available soon!\");\n return;\n }\n if (draggedUnit && unitList && ((draggedUnit.type === 0 && unitList[0].type === 1) || (draggedUnit.type === 1 && unitList[0].type === 0))) {\n alert(\"Stacking zephyrs and aurns still in development. Available soon!\");\n return;\n }\n if (draggedUnit && unitList && ((draggedUnit.type === 1 && unitList[0].type === 100) || (draggedUnit.type === 100 && unitList[0].type === 1))) {\n alert(\"Stacking virtual zephyrs and aurns still in development. Available soon!\");\n return;\n }\n\n if (readyForDrop) {\n // if (unitList.length === 1 && !unitList[0].averageOfLastHourOfData && unitList[0].type === 0) { setUnitHistories([]); setUnitList([draggedUnit]); setZephyr(draggedUnit); setRequestErrors([]); }\n setUnitList([...unitList, draggedUnit]);\n\n setUnitListGrowing(true);\n setReadyForDrop(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n if (showingAnnualAverage) return;\n e.stopPropagation();\n e.preventDefault();\n if (\n !progressBarOn &&\n draggedUnit &&\n !unitList.includes(draggedUnit) &&\n unitList.length < 5\n ) {\n setReadyForDrop(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n if (showingAnnualAverage) return;\n e.stopPropagation();\n e.preventDefault();\n setReadyForDrop(false);\n };\n\n const getRequestTimeEstimate = () => {\n const initial = 5000;\n const dayRate = 6000;\n const unitCount = timePeriodSwitching ? unitList.length : 1;\n const days =\n timePeriod.timeOption === 'custom'\n ? subtractTwoDates(\n moment(date.start).format('YYYYMMDDHHmm'),\n moment(date.end).format('YYYYMMDDHHmm'),\n )\n : timePeriod.timeOption === 'month'\n ? 31\n : periods[timePeriod.timeOption].quantity;\n const finalDays = days || 3;\n const estimate = (initial + dayRate * finalDays) * unitCount;\n return estimate;\n };\n\n return (\n
    \n handleDragOver(e)}\n onDrop={(e) => handleDropZone(e)}\n onDragLeave={(e) => handleDragLeave(e)}\n ref={compRef}\n >\n
    \n \n \n
    \n {\n // Ensure ProgressBar unmounts when complete\n (dataLoading || progressBarOn) && (\n \n )\n }\n\n {!dataLoading &&\n (!unitHistories || !Object.keys(unitHistories).length) &&\n !showingAnnualAverage ? (\n
    \n ) : (\n 0) ||\n showingAnnualAverage\n }\n handleChartDownload={handleChartDownload}\n handleUnitSpeciesFilter={handleUnitSpeciesFilter}\n isPublic={isPublic}\n showingAnnualAverage={showingAnnualAverage}\n />\n )}\n\n unit.type === 1).length > 0) ||\n showingAnnualAverage\n }\n />\n
    \n
    \n );\n};\n\nconst ChartContainer = ({\n progressBarOn,\n chartData,\n averagingOption,\n displayConfig,\n downloadOn,\n handleChartDownload,\n handleUnitSpeciesFilter,\n isPublic,\n showingAnnualAverage,\n}: any) => {\n if (progressBarOn) return null;\n\n return (\n
    \n \n \n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n draggedUnit: state.draggedUnit,\n zephyrs: state.getZephyrs.zephyrs,\n dataConfig: state.dataConfig,\n queryStringParams: state.queryStringParams,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyr,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DataChartContainer);\n","// Package Imports\nimport React from 'react';\nimport styled from 'styled-components';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\n\n// Content Imports\nimport { dataDiagnosticsModalContent } from '../../utils/consts';\n\n// Component Interfaces\ninterface DataDiagnosticsModalProps {\n dataNarrative: string[][];\n handleDataNarrativeDialog: Function;\n}\n\n// Styled Component\nconst ModalContainer = styled.div`\n background: #fff;\n position: absolute;\n height: 85vh;\n width: 100%;\n max-width: 550px;\n margin: auto;\n align: center;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n padding: 1.5% 2%;\n border-radius: 2px;\n h5 {\n font-size: 1.1rem;\n line-height: 0.5;\n }\n .modal-text {\n font-size: 1.05rem;\n height: 90%;\n overflow: auto;\n margin: 25px 0px;\n padding: 0px 10px;\n h5 {\n font-size: 1.35rem;\n color: #4e73c3;\n margin-bottom: 10px;\n }\n }\n .close-modal {\n position: absolute;\n right: 15px;\n top: 10px;\n &:hover {\n background: #b1b5b5;\n }\n }\n`;\n\n// Component\nconst DataDiagnosticsModal = ({\n dataNarrative,\n handleDataNarrativeDialog,\n}: DataDiagnosticsModalProps) => {\n const { t: translate } = useTranslation();\n\n return (\n \n

    {translate('dataDiagnosticsHeader')}

    \n
    \n {dataNarrative.map((narrative, narrativeIdx) => (\n
    \n
    {`${translate('dataDiagnosticsIndex')} ${\n narrativeIdx + 1\n }`}
    \n {narrative?.map((update, updateIdx) => (\n
    \n {parse(update)}\n
    \n ))}\n
    \n ))}\n )\n
    \n handleDataNarrativeDialog()}\n >\n {translate('dataDiagnosticsModalContentClose')}\n \n
    \n );\n};\n\nexport default DataDiagnosticsModal;\n","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Content Imports\nimport { DataDownloadButtonContent } from '../../utils/consts';\n\n// Type Imports\nimport { ZephyrHistoryWithId } from '../../utils/interface';\n\n// Component Interfaces\ninterface DataDownloadButtonProps {\n diagnosticMode: boolean;\n handleDataNarrativeDialog: Function;\n handleDownloadDialog: Function;\n on: boolean | null;\n}\n\nconst DataDownloadButton = ({\n diagnosticMode,\n handleDataNarrativeDialog,\n handleDownloadDialog,\n on,\n}: DataDownloadButtonProps) => {\n const { t: translate } = useTranslation();\n\n return (\n
    \n {on ? (\n <>\n handleDownloadDialog()}\n className=\"button tertiary tourDataDownload\"\n >\n {translate('DataDownloadButtonText')}\n \n {diagnosticMode ? (\n handleDataNarrativeDialog()}\n className=\"button tertiary diagnostics\"\n >\n {translate('DataDiagnosticsButtonText')}\n \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n
    \n );\n};\n\nexport default DataDownloadButton;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Type Imports\nimport { AnnualAvgData, Zephyr } from '../../utils/interface';\n\n// Component Interfaces\ninterface DataDownloadModalProps {\n handleDownloadData: Function;\n handleDownloadDialog: Function;\n unitList: Zephyr[];\n annualAvgData: AnnualAvgData;\n showingAnnualAverage: boolean;\n}\n\n// Component\nconst DataDownloadModal = ({\n handleDownloadData,\n handleDownloadDialog,\n unitList,\n annualAvgData,\n showingAnnualAverage,\n}: DataDownloadModalProps) => {\n const { t: translate } = useTranslation();\n\n // Consts\n // TODO: This should be in the utils/consts not here\n const downloadTypes =\n unitList[0].zNumber > 0\n ? // show both CSV and KLM radios for Zephyr's\n [\n { label: 'CSV', downloadType: 'csv' },\n { label: 'KML', downloadType: 'kml' },\n ]\n : // only show CSV download radio for AURNs\n [{ label: 'CSV', downloadType: 'csv' }];\n\n // State\n const initState = {\n selected: downloadTypes[0].downloadType,\n };\n\n const [selected, setSelected] = useState(initState.selected);\n\n // Functions\n const handleDownload = () => {\n // Make data request and close download dialog\n handleDownloadData(selected);\n handleDownloadDialog();\n // Analytics\n };\n\n return (\n
    \n
    \n

    {translate('downloadHeader')}

    \n handleDownloadDialog()}\n >\n \n \n \n \n
    \n {showingAnnualAverage ? (\n

    \n {`${translate('downloadSubheader')} ${translate(\n 'downloadCoordinates',\n )} ${annualAvgData?.list?.latlon?.lat.toFixed(\n 2,\n )},${annualAvgData?.list?.latlon?.lon.toFixed(2)}`}\n

    \n ) : (\n

    \n {unitList.length > 1\n ? `${translate('downloadSubheader')} ${unitList.map(\n (unit, idx) => `${idx === 0 ? '' : ' '}${unit.name}`,\n )}`\n : `${translate('downloadSubheader')} ${unitList[0].name}`}\n

    \n )}\n\n

    Set file type:

    \n
      \n {downloadTypes.map((dt) => (\n
    • \n \n {dt.label}\n {\n setSelected(dt.downloadType);\n }}\n />\n \n \n
    • \n ))}\n
    \n
    \n \n
    \n
    \n );\n};\n\nexport default DataDownloadModal;\n","import React, { useState } from 'react';\nimport { ThresholdExceedingSpecie } from '../views/Data';\n\n\ninterface ExceededThresholdProps {\n thresholdExceedingSpecies: ThresholdExceedingSpecie[],\n tab: any,\n};\n\n\nconst ExceededThreshold = ({ thresholdExceedingSpecies, tab }: ExceededThresholdProps) => {\n const [isTooltipShowing, setIsTooltipShowing] = useState(false);\n const getSpeciesWithExceededThresholds = (group: string) => {\n if (group === 'NO2') {\n return thresholdExceedingSpecies.map((z: any, idx: number) => {\n const specie: any = Object.keys(z)[0];\n if (z[specie].NO2 > 0 && z[specie].O3 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    NO2 - {z[specie].NO2} incidents

    \n

    O3 - {z[specie].O3} incidents

    \n
    \n }\n if (z[specie].NO2 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    NO2 - {z[specie].NO2} incidents

    \n
    \n }\n if (z[specie].O3 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    O3 - {z[specie].O3} incidents

    \n
    \n }\n })\n }\n if (tab.group === 'PM') {\n return thresholdExceedingSpecies.map((z: any, idx: number) => {\n const specie: any = Object.keys(z)[0];\n if (z[specie].particulatePM10 > 0 && z[specie].particulatePM25 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    PM10 - {z[specie].particulatePM10} incidents

    \n

    PM2.5 - {z[specie].particulatePM25} incidents

    \n
    \n }\n if (z[specie].particulatePM10 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    PM10 - {z[specie].particulatePM10} incidents

    \n
    \n }\n if (z[specie].particulatePM25 > 0) {\n return
    \n

    Zephyr {specie}

    \n

    PM2.5 - {z[specie].particulatePM25} incidents

    \n
    \n }\n })\n }\n }\n\n return (\n <>\n {isTooltipShowing &&\n
    \n

    A number of breaches of WHO pollutant guidelines have been identified for the requested temporal range.

    \n
    \n\n {getSpeciesWithExceededThresholds(tab.group)}\n
    \n
    \n }\n { setIsTooltipShowing(true) }} onMouseLeave={() => { setIsTooltipShowing(false) }} style={{ position: 'absolute', top: '50%', right: 0, transform: 'translate(-50%, -50%)' }} xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\" height=\"20\" fill=\"currentColor\"\n className=\"bi bi-exclamation-circle-fill\" viewBox=\"0 0 16 16\">\n \n \n \n )\n};\n\nexport default ExceededThreshold;","// Package Imports\nimport React, { useEffect, useState } from 'react';\nimport parse from 'html-react-parser';\n\n// Util Imports\nimport { extentTabFinder } from '../../utils/functions/tabFinder';\n\n// Type Imports\nimport {\n ActiveTab,\n AnnualAvgData,\n DisplayConfig,\n GetZephyrHistoricalData,\n ReduxState,\n SlotOptions,\n StrippedTab,\n Zephyr,\n ZephyrHistoryWithId,\n} from '../../utils/interface';\nimport { slotValidator } from '../../utils/functions/slotValidator';\nimport { connect } from 'react-redux';\nimport { ThresholdExceedingSpecie } from '../views/Data';\nimport ExceededThreshold from './ExceededThreshold';\n\n// Component Interfaces\ninterface DataGroupTabsProps {\n activeTab: ActiveTab | null;\n curSlot: SlotOptions;\n displayConfig: DisplayConfig;\n handleTabSwitch: Function;\n unitHistories: ZephyrHistoryWithId | null;\n zephyr: Zephyr;\n showingAnnualAverage: boolean;\n annualAvgData: AnnualAvgData;\n hasVirtualZephyr: Function;\n historicalData: GetZephyrHistoricalData;\n defaultActiveTab: number | null,\n setDefaultActiveTab: Function,\n setActiveTab: Function,\n thresholdExceedingSpecies: ThresholdExceedingSpecie[],\n}\n\nconst DataGroupTabs = ({\n activeTab,\n curSlot,\n displayConfig,\n handleTabSwitch,\n unitHistories,\n zephyr,\n showingAnnualAverage,\n annualAvgData,\n historicalData,\n defaultActiveTab,\n setDefaultActiveTab,\n setActiveTab,\n thresholdExceedingSpecies\n}: DataGroupTabsProps) => {\n const [tabs, setTabs] = useState([]);\n\n const annualAvgTabs = [\n { group: 'NO2', HTMLGroupLabel: 'NO2' },\n {\n group: 'PM',\n HTMLGroupLabel: 'M2.5',\n },\n ];\n\n const sortByGroup = (a: any, b: any) => {\n const lowerCaseA = a.group.toLowerCase();\n const lowerCaseB = b.group.toLowerCase();\n return lowerCaseA.localeCompare(lowerCaseB);\n }\n\n const sortButtonsByGroup = (arrObj: any) => {\n const getNO2PM = arrObj.filter((b: any) => b.group === 'NO2' || b.group === 'PM');\n if (getNO2PM.length > 0) {\n const getRest = arrObj.filter((b: any) => b.group !== 'NO2' && b.group !== 'PM');\n getRest.sort(sortByGroup);\n return getNO2PM.concat(getRest);\n }\n return arrObj;\n };\n\n const getExceededThresholdSpecie = () => {\n if (thresholdExceedingSpecies) {\n return thresholdExceedingSpecies.filter((z: any) => {\n const zNumber = Object.keys(z)[0];\n return z[zNumber].NO2 > 0 || z[zNumber].O3 > 0 || z[zNumber].particulatePM10 > 0 || z[zNumber].particulatePM25 > 0;\n });\n }\n return [];\n };\n\n const checkSpeciesThresholdResult = (group: string) => {\n let isThresholdExceeded = false;\n const species = getExceededThresholdSpecie();\n if (group === 'NO2') {\n for (let i = 0; i < species.length; i++) {\n const zNumber: any = Object.keys(species[i])[0];\n const unit: any = species[i];\n if (('NO2' in unit[zNumber] && unit[zNumber].NO2 > 0) || ('O3' in unit[zNumber] && unit[zNumber].O3 > 0)) { isThresholdExceeded = true; break; }\n }\n }\n if (group === 'PM') {\n for (let i = 0; i < species.length; i++) {\n const zNumber: any = Object.keys(species[i])[0];\n const unit: any = species[i];\n if (('particulatePM10' in unit[zNumber] && unit[zNumber].particulatePM10 > 0) || ('particulatePM25' in unit[zNumber] && unit[zNumber].particulatePM25 > 0)) { isThresholdExceeded = true; break; }\n }\n }\n return isThresholdExceeded;\n }\n\n\n useEffect(() => {\n if (!showingAnnualAverage &&\n activeTab &&\n unitHistories) {\n const availableSlots = slotValidator(historicalData.zephyrHistory as any);\n let secondSlot = availableSlots.length > 1 && curSlot && curSlot === 'slotA' ? 'slotB' : availableSlots.length > 1 && curSlot && curSlot === 'slotB' ? 'slotA' : availableSlots.length === 1 ? availableSlots[0] : null;\n let tabsFirstSlot = extentTabFinder(curSlot,\n displayConfig,\n unitHistories,\n zephyr.zNumber);\n let tabsSecondSlot = secondSlot ? extentTabFinder((secondSlot as SlotOptions),\n displayConfig,\n unitHistories,\n zephyr.zNumber) : null;\n const removeNewDataSetDuplicates = tabsSecondSlot ? tabsFirstSlot.concat(tabsSecondSlot).filter((value, index, self) =>\n index === self.findIndex((t) => (\n t.HTMLGroupLabel === value.HTMLGroupLabel && t.group === value.group\n ))\n ) : null;\n if (tabsSecondSlot) {\n const sortedNewDataSetDuplicates = sortButtonsByGroup(removeNewDataSetDuplicates);\n setTabs(sortedNewDataSetDuplicates);\n return;\n }\n setTabs(sortButtonsByGroup(tabsFirstSlot));\n }\n }, [displayConfig, unitHistories, zephyr, historicalData])\n if (showingAnnualAverage) return null;\n\n\n\n return (\n
    \n
    \n \n
    \n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n historicalData: state.getZephyrHistoricalData,\n});\n\nexport default connect(mapStateToProps, {})(DataGroupTabs);\n","// Package Imports\nimport React, { useEffect } from 'react';\n\n// Component Imports\nimport DataSlots from './DataSlots';\n\n// Util Imports\nimport { speciesFilterFinder } from '../../utils/functions/tabFinder';\n\n// Type Imports\nimport {\n AveragingOptions,\n ChartData,\n SlotOptions,\n SpeciesDataLabels,\n Zephyr,\n ZephyrHistoryWithId,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface DataSpeciesFiltersProps {\n chartData: ChartData;\n handleSpeciesFilter: Function;\n progressBarOn: boolean;\n speciesFiltered: SpeciesDataLabels[];\n // Temporary Data Slot\n handleSlotChange: Function;\n curSlot: SlotOptions;\n timeAveragingOptions: AveragingOptions;\n unitHistories: ZephyrHistoryWithId | null;\n zephyr: Zephyr;\n isDSEEnabled: boolean;\n}\n\nconst DataSpeciesFilters = ({\n chartData,\n handleSpeciesFilter,\n progressBarOn,\n speciesFiltered,\n handleSlotChange,\n curSlot,\n timeAveragingOptions,\n unitHistories,\n zephyr,\n isDSEEnabled,\n}: DataSpeciesFiltersProps) => {\n\n return (\n
    \n
    \n {speciesFilterFinder(chartData.datasets, speciesFiltered).map(\n (data, idx) => {\n return (\n \n );\n },\n )}\n
    \n {/* Temporary data slots location until overplotting v2 */}\n {/*
    \n \n
    */}\n
    \n );\n};\n\nexport default DataSpeciesFilters;\n","\nexport const checkSlotABData = (data: any): any => {\n let isNullOnly = true;\n for (let i = 0; i < data.length; i++) {\n if (data[i] !== null) {\n isNullOnly = false;\n break;\n }\n }\n return isNullOnly ? true : false;\n};\n\nexport const getAvailableAveragingOption = (availableSpeciesSlotA: any, availableSpeciesSlotB: any, hData: any, aPeriod: any, period: any, allowAveragingOption: boolean) => {\n let allowAvgOption: boolean = true;\n let hasAvgPeriodAnyData: boolean = false;\n if (availableSpeciesSlotA && !availableSpeciesSlotB) {\n for (let i = 0; i < availableSpeciesSlotA.length; i++) {\n if (!hData[aPeriod]['slotA'][availableSpeciesSlotA[i]].data.every((val: number | null) => val === null)) {\n if (allowAveragingOption) allowAvgOption = false;\n hasAvgPeriodAnyData = true;\n break;\n }\n }\n }\n else if (!availableSpeciesSlotA && availableSpeciesSlotB) {\n for (let i = 0; i < availableSpeciesSlotB.length; i++) {\n if (!hData[aPeriod]['slotB'][availableSpeciesSlotB[i]].data.every((val: number | null) => val === null)) {\n if (allowAveragingOption) allowAvgOption = false;\n hasAvgPeriodAnyData = true;\n break;\n }\n }\n }\n else if (availableSpeciesSlotA && availableSpeciesSlotB) {\n const concatedSpecies = availableSpeciesSlotA.concat(availableSpeciesSlotB);\n for (let i = 0; i < concatedSpecies.length; i++) {\n if ((concatedSpecies[i] && concatedSpecies[i] in hData[aPeriod]['slotA']\n && !hData[aPeriod]['slotA'][availableSpeciesSlotA[i]].data.every((val: number | null) => val === null)) || (concatedSpecies[i]\n && concatedSpecies[i] in hData[aPeriod]['slotB']\n && !hData[aPeriod]['slotB'][availableSpeciesSlotB[i]].data.every((val: number | null) => val === null))) {\n if (allowAveragingOption) allowAvgOption = false;\n hasAvgPeriodAnyData = true;\n break;\n }\n }\n }\n if (allowAveragingOption) return allowAvgOption;\n if (period && hasAvgPeriodAnyData) return period;\n};","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport utilsRequest from '../../utils/request';\n\n// Content Imports\nimport { DataTimeAveragingOptionsContent } from '../../utils/consts';\n\n// Type Imports\nimport {\n AveragingLabels,\n AveragingPeriods,\n LineChartData,\n TimePeriod,\n Zephyr,\n ZephyrHistoryWithId,\n} from '../../utils/interface';\nimport { current, subtractTimeFromNow, utcConvertor } from '../../utils/functions/dateFinder';\nimport moment from 'moment';\nimport { convertVZephyrDataToZephyrHistoricalData } from '../../actions/zephyrs';\nimport { getAvailableSpecies } from '../../utils/functions/slotValidator';\nimport { checkSlotABData, getAvailableAveragingOption } from '../../utils/functions/getAvailableAveragingOption';\n\n// Component Interfaces\ninterface DataTimeAveragingOptionsProps {\n averagingPeriods: AveragingPeriods;\n curAveraging: AveragingLabels;\n handleAveragingOption: Function;\n progressBarOn: boolean;\n unitList: Zephyr[];\n zNumber: number;\n dataConfig: any;\n zephyrType: number;\n zephyrStartDate: string | null;\n zephyrEndDate: string | null;\n zephyr: any;\n curAveragingOption: any;\n setAveragingOption: Function;\n zephyrAvgData: any;\n historicalData: any;\n isHistoricalDataLoading: boolean | null;\n historicalDataZType: any;\n timePeriod: TimePeriod;\n chartData: {\n labels: Date[];\n datasets: LineChartData[];\n };\n unitHistories: any;\n}\n\n// Component\nconst DataTimeAveragingOptions = ({\n averagingPeriods,\n curAveraging,\n handleAveragingOption,\n zephyr,\n historicalData,\n isHistoricalDataLoading,\n historicalDataZType,\n timePeriod,\n chartData,\n unitHistories,\n}: DataTimeAveragingOptionsProps) => {\n const { t: translate } = useTranslation();\n const isLoaded = historicalData;\n const lastUnitHistory = unitHistories ? unitHistories[Object.keys(unitHistories)[Object.keys(unitHistories).length - 1]] : null;\n\n // Time averaging options not updating properly\n const validateAveragingOption = (averagingOption: any) => {\n if ((isLoaded && historicalDataZType === 0 && averagingOption in historicalData) || (unitHistories && unitHistories[Object.keys(unitHistories)[Object.keys(unitHistories).length - 1]] && averagingOption in unitHistories[Object.keys(unitHistories)[Object.keys(unitHistories).length - 1]])) {\n const availableSpeciesSlotA: any = getAvailableSpecies(isLoaded ? historicalData[averagingOption].slotA : lastUnitHistory[averagingOption].slotA);\n const availableSpeciesSlotB: any = getAvailableSpecies(isLoaded ? historicalData[averagingOption].slotB : lastUnitHistory[averagingOption].slotB);\n const concatedSpecies = availableSpeciesSlotA && availableSpeciesSlotB ? availableSpeciesSlotA.concat(availableSpeciesSlotB) : availableSpeciesSlotA && !availableSpeciesSlotB ? availableSpeciesSlotA : !availableSpeciesSlotA && availableSpeciesSlotB ? availableSpeciesSlotB : null;\n let allowAveragingOption: boolean = true;\n if (concatedSpecies) {\n for (let i = 0; i < concatedSpecies.length; i++) {\n allowAveragingOption = getAvailableAveragingOption(availableSpeciesSlotA, availableSpeciesSlotB, historicalData ? historicalData : lastUnitHistory, averagingOption, null, true)\n }\n }\n if (allowAveragingOption) return true;\n return false;\n }\n return isLoaded || lastUnitHistory ? !(averagingOption in (historicalData || lastUnitHistory)\n && (((historicalData[averagingOption]['slotA'] || lastUnitHistory[averagingOption]['slotA'])\n && 'NO2' in (historicalData[averagingOption]['slotA'] || lastUnitHistory[averagingOption]['slotA'])\n && 'data' in (historicalData[averagingOption]['slotA']['NO2'] || lastUnitHistory[averagingOption]['slotA']['NO2'])\n && (!historicalData[averagingOption]['slotA']['NO2'].allNull)) || !lastUnitHistory[averagingOption]['slotA']['NO2'].allNull) || (historicalData[averagingOption]['slotB'] || lastUnitHistory[averagingOption]['slotB'])\n && 'NO2' in (historicalData[averagingOption]['slotB'] || lastUnitHistory[averagingOption]['slotB']) && 'data' in (historicalData[averagingOption]['slotB']['NO2'] || lastUnitHistory[averagingOption]['slotB']['NO2'])\n && (!historicalData[averagingOption]['slotB']['NO2'].allNull || !lastUnitHistory[averagingOption]['slotB']['NO2'].allNull)) : false;\n };\n\n return (isLoaded || unitHistories) && !isHistoricalDataLoading && chartData.datasets.length > 0 && chartData.labels.length > 0 ? (\n
    \n

    {translate('DataTAHeader')}

    \n {averagingPeriods.periods\n .map((ap) => (\n \n ))}\n
    \n ) : isHistoricalDataLoading ?\n
    \n

    {translate('DataTAHeader')}

    \n {\n \n }\n
    \n :\n
    \n

    {translate('DataTAHeader')}

    \n {\n \n }\n
    \n};\n\nexport default DataTimeAveragingOptions;\n","// Package Imports\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport DatePicker from 'react-datepicker';\n\n// Style Imports\nimport 'react-datepicker/dist/react-datepicker.css';\n\n// Content Imports\nimport { customTimePeriod, DataCustomDateContent } from '../../utils/consts';\n\n// Util Imports\nimport { dateFinder } from '../../utils/functions/dateFinder';\n\n// Type Imports\nimport { PeriodLabels, TimePeriod } from '../../utils/interface';\nimport { useLocation } from 'react-router-dom';\n\n// Component Interfaces\ninterface DataCustomDateProps {\n curTimePeriod: PeriodLabels | null;\n endDate: Date;\n handleCustomDateChange: Function;\n handleCustomSubmit: Function;\n handleTimePeriod: Function | null;\n progressBarOn: boolean;\n toggleCustom: boolean;\n setToggleCustom: Function;\n startDate: Date;\n name?: string;\n curState?: TimePeriod | null;\n period?: TimePeriod;\n setSelectedTimePeriod?: Function;\n style?: any;\n}\n\nconst DataCustomDate = ({\n curTimePeriod,\n endDate,\n handleCustomDateChange,\n handleCustomSubmit,\n handleTimePeriod,\n progressBarOn,\n toggleCustom,\n setToggleCustom,\n startDate,\n name,\n curState,\n period,\n setSelectedTimePeriod,\n style,\n}: DataCustomDateProps) => {\n const { t: translate } = useTranslation();\n\n const location = useLocation();\n\n return (\n
    \n {!location.pathname.includes('analysis') && (\n \n )}\n\n {location.pathname.includes('analysis') && (\n {\n setToggleCustom(!toggleCustom);\n }}\n onChange={() => {\n setSelectedTimePeriod!(period as TimePeriod);\n }}\n disabled={progressBarOn}\n />\n )}\n\n {\n if (!setSelectedTimePeriod) setToggleCustom(false);\n }}\n >\n
    \n
    \n handleCustomDateChange(date, 'start')}\n dateFormat=\"dd/MM/yyyy\"\n selectsStart\n startDate={startDate}\n endDate={endDate}\n maxDate={new Date()}\n />\n
    \n
    \n handleCustomDateChange(date, 'end')}\n dateFormat=\"dd/MM/yyyy\"\n selectsEnd\n startDate={startDate}\n endDate={endDate}\n minDate={dateFinder(new Date(startDate.valueOf()), 1, false)}\n maxDate={new Date()}\n />\n
    \n
    \n\n
    \n
    \n {\n setToggleCustom(!toggleCustom);\n handleCustomSubmit();\n }}\n >\n {!location.pathname.includes('analysis')\n ? translate('DataCustomeDateSubmit')\n : translate('DataCustomDateSave')}\n \n
    \n
    \n
    \n \n );\n};\n\nexport default DataCustomDate;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport DataCustomDate from './DataCustomDate';\n\n// Util Imports\nimport { startEndFinder } from '../../utils/functions/dateFinder';\n\n// Content Imports\nimport { DataTimePeriodOptionsContent } from '../../utils/consts';\n\n// Type Imports\nimport { PeriodLabels, ReduxState, TimePeriods } from '../../utils/interface';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\n\nimport { setDataConfig } from '../../actions/auth';\nimport { ModularFeatures } from '../../reducers/modularFeatures';\n\n// Component Interfaces\ninterface DataTimePeriodOptionsProps {\n curTimePeriod: PeriodLabels;\n endDate: Date;\n handleCustomDateChange: Function;\n handleCustomSubmit: Function;\n handleTimePeriod: Function;\n isPublic: boolean;\n progressBarOn: boolean;\n startDate: Date;\n timePeriods: TimePeriods;\n isDSEEnabled: boolean;\n setIsDSEEnabled: Function;\n setDataConfig: Function;\n modularFeatures: ModularFeatures;\n}\n\nconst DataTimePeriodOptions = ({\n curTimePeriod,\n endDate,\n handleCustomDateChange,\n handleCustomSubmit,\n handleTimePeriod,\n isPublic,\n progressBarOn,\n startDate,\n timePeriods,\n isDSEEnabled,\n setIsDSEEnabled,\n setDataConfig,\n modularFeatures,\n}: DataTimePeriodOptionsProps) => {\n // State\n const [toggleCustom, setToggleCustom] = useState(false);\n const { t: translate } = useTranslation();\n\n const handleDSEToggling = (event: any) => {\n setIsDSEEnabled(event.target.checked);\n };\n\n // Component\n return (\n
    \n

    {translate('DataPOHeader')}

    \n {timePeriods.periods.map((tp, idx) => (\n \n ))}\n {!isPublic ? (\n \n ) : (\n <>\n )}\n {modularFeatures.dseIntegration[isPublic ? 'isPublic' : 'isPrivate'] && (\n \n )}\n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n modularFeatures: state.modularFeatures,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setDataConfig,\n },\n dispatch,\n );\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(DataTimePeriodOptions);\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport {\n SET_CONTACT_MODAL_ON,\n SET_DATA_MODAL_ON,\n SET_MAPPAIR_QUOTE_MODAL_ON,\n SET_MAPPAIR_TIMESERIES_MODAL_ON,\n SET_MODALS_OFF,\n SET_ZEPHYR_QUOTE_MODAL_ON,\n} from './types';\n\n// Action Creators\nexport const setContactModalOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_CONTACT_MODAL_ON,\n });\n};\n\nexport const setDataModalOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_DATA_MODAL_ON,\n });\n};\n\nexport const setMappairQuoteModalOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_MAPPAIR_QUOTE_MODAL_ON,\n });\n};\n\nexport const setMappairTimeseriesModalOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_MAPPAIR_TIMESERIES_MODAL_ON,\n });\n};\n\nexport const setModalsOff = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_MODALS_OFF,\n });\n};\n\nexport const setZephyrQuoteModalOn = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ZEPHYR_QUOTE_MODAL_ON,\n });\n};\n","// Package imports\nimport { ExportToCsv } from 'export-to-csv';\n\n// Util Imports\nimport { slotFinder } from './slotFinder';\nimport { getDateFromTimestamp, getShortDateFromISO } from './dateFinder';\nimport { speciesObjFinder } from './tabFinder';\nimport { convertRawData } from './chartHelper';\n\n// Type Imports\nimport {\n AveragingPeriod,\n ChartData,\n CsvData,\n DisplayConfig,\n SlotOptions,\n Species,\n SpeciesDataIdentifiers,\n Zephyr,\n ZephyrHistoryWithId,\n} from '../interface';\n\n// Consts\nconst defaultOptions = {\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalSeparator: '.',\n showLabels: true,\n showTitle: false,\n title: '',\n useTextFile: false,\n useBom: true,\n useKeysAsHeaders: true,\n};\n\n/* Function\nDESC: csvGenerator generates and downloads data for the main Data tab \nARGS: averaging option, current slot, unit list, unit histories\n*/\nconst csvGenerator = (\n averagingOption: AveragingPeriod,\n displayConfig: DisplayConfig,\n isPublic: boolean,\n slot: SlotOptions,\n unitList: Zephyr[],\n unitHistories: ZephyrHistoryWithId,\n) => {\n if (unitHistories && Object.keys(unitHistories).length) {\n const data: CsvData[] = [];\n const oneTimeColumns: string[] = ['dateTime', 'UTS', 'localDateTime'];\n // Map over each unit until we find one with dates\n let dates: string[] = [];\n let activeUnitIdx: number = 0;\n let activeUnitSlot: string = '';\n for (let i = 0; i <= unitList.length - 1; i += 1) {\n const unit = unitHistories[unitList[i].zNumber];\n const processSlot = i === 0 && slot ? slot : slotFinder(unit)[0];\n if (unit && unit[averagingOption.averagingOption][processSlot]) {\n dates = unitHistories[unitList[i].zNumber][\n averagingOption.averagingOption\n ][processSlot]!.dateTime.data;\n activeUnitIdx = i;\n activeUnitSlot = processSlot;\n break;\n }\n }\n if (dates.length) {\n dates.forEach((dt, dtIdx) => {\n // Create starter object\n let newDataset: CsvData = {\n 'Timestamp(UTC)': dt,\n 'Timestamp(UTS)': unitHistories[unitList[activeUnitIdx].zNumber][\n averagingOption.averagingOption\n ][activeUnitSlot]!.UTS.data[dtIdx],\n 'Timestamp(Local)': unitHistories[unitList[activeUnitIdx].zNumber][\n averagingOption.averagingOption\n ][activeUnitSlot]!.localDateTime.data[dtIdx],\n };\n // Map over each unit\n unitList.forEach((unit) => {\n if (unitHistories[unit.zNumber]) {\n const availableSlots = slotFinder(unitHistories[unit.zNumber]);\n // Add any data that is consistent across slots e.g. lat/long\n const slotAgnosticData = ['latitude', 'longitude'];\n if (!isPublic) {\n slotAgnosticData.forEach((sAD) => {\n const head = unitHistories[unit.zNumber][\n averagingOption.averagingOption\n ]['head'];\n if (head) {\n const sADItem = head![sAD];\n if (\n sADItem.data.length &&\n sADItem.data.find((dp) => dp !== null) !== null &&\n sADItem.data.find((dp) => dp !== null) !== undefined\n ) {\n newDataset[`${unit.name}-${sADItem.header.HTMLLabel}`] =\n sADItem.data[dtIdx];\n }\n }\n });\n }\n // Map over each metric for each slot with data in unit history\n const dataHolder: any[] = [];\n availableSlots.forEach((availableSlot) => {\n const unitData =\n unitHistories[unit.zNumber][averagingOption.averagingOption][\n availableSlot\n ];\n\n if (unitData) {\n // Add a placeholder value for each qualifying metric\n for (const metricKey in unitData) {\n if (!oneTimeColumns.includes(metricKey)) {\n // Check whether species is in the display config or not\n const speciesInDisplayConfig = speciesObjFinder(\n displayConfig,\n metricKey as SpeciesDataIdentifiers,\n );\n if (\n (!isPublic || speciesInDisplayConfig) &&\n !slotAgnosticData.includes(metricKey)\n ) {\n dataHolder.push(null);\n }\n }\n }\n // Push qualifying datasets that contain data\n for (const [metricKey, metricValues] of Object.entries(\n unitData,\n )) {\n const speciesInDisplayConfig = speciesObjFinder(\n displayConfig,\n metricKey as SpeciesDataIdentifiers,\n );\n if (\n !oneTimeColumns.includes(metricKey) &&\n (!isPublic || speciesInDisplayConfig) &&\n !slotAgnosticData.includes(metricKey) &&\n metricValues.data.length &&\n metricValues.data.find((dp) => dp !== null) !== null &&\n metricValues.data.find((dp) => dp !== null) !== undefined\n ) {\n let header = `${metricValues.header.label}(${metricValues.header.units\n })${isPublic ? '' : `-${availableSlot}`}`;\n let data = metricValues.data[dtIdx];\n // Apply any data conversions as needed\n const speciesObj = speciesObjFinder(\n displayConfig,\n metricKey as SpeciesDataIdentifiers,\n );\n // longitude/latitude etc. will be undefined\n if (speciesObj) {\n const convertedData = convertRawData(\n [metricValues.data[dtIdx]],\n speciesObj,\n );\n if (\n convertedData.length &&\n metricValues.data[dtIdx] !== convertedData[0]\n ) {\n header = `${metricValues.header.label}${speciesObj.HTMLShortUnitLabel\n }${isPublic ? '' : `-${availableSlot}`}`;\n data = convertedData[0];\n }\n }\n dataHolder[metricValues.header.CSVOrder] = {\n data,\n header,\n };\n }\n }\n }\n const finalDataHolder = dataHolder.filter((dh) => dh !== null);\n finalDataHolder.forEach((unitMetricData) => {\n if (unitMetricData) {\n newDataset = {\n ...newDataset,\n [`${unit.name}-${unitMetricData.header}`]: unitMetricData.data,\n };\n }\n });\n });\n }\n });\n data.push(newDataset);\n });\n\n const options = {\n ...defaultOptions,\n filename: `${unitList.length === 1 ? unitList[0].name : 'multipleUnits'\n }_${averagingOption.labelHTML}_${getDateFromTimestamp(\n data[0]['Timestamp(UTC)'],\n )}_${getDateFromTimestamp(data[data.length - 1]['Timestamp(UTC)'])}`,\n };\n const csvExporter = new ExportToCsv(options);\n csvExporter.generateCsv(data);\n }\n }\n};\n\n/* Function\nDESC: mappairCsvGenerator generates and downloads data for MappAir timeseries\nARGS: chartDataset, curSpecies\n*/\nconst mappairCsvGenerator = (\n chartDataset: ChartData,\n curSpecies: Species,\n hdms?: string,\n) => {\n const data: CsvData[] = [];\n chartDataset.datasets[0].data.forEach((d: any, idx: any) => {\n const newDataPoint = {\n 'Timestamp(UTC)': chartDataset.labels[idx].toISOString(),\n [`${curSpecies.HTMLUnitLabel}`]: d,\n };\n data.push(newDataPoint);\n });\n // Fix hdms string for filename purposes\n let formattedHdms = '';\n if (hdms) {\n formattedHdms = hdms\n .replace(/(°)/g, 'D')\n .replace(/(′)/g, 'M')\n .replace(/(″)/g, 'S');\n }\n\n const options = {\n ...defaultOptions,\n filename: `MappAir_${formattedHdms}_${curSpecies.HTMLUnitLabel\n }_${getShortDateFromISO(data[0]['Timestamp(UTC)'])}_${getShortDateFromISO(\n data[data.length - 1]['Timestamp(UTC)'],\n )}`,\n };\n const csvExporter = new ExportToCsv(options);\n csvExporter.generateCsv(data);\n};\n\nexport { csvGenerator, mappairCsvGenerator };\n","import React from 'react';\n\ninterface BannerProps {\n setIsModalOpened: Function;\n bannerValue: string[];\n dataTab?: boolean;\n}\n\nconst Banner = ({ setIsModalOpened, bannerValue, dataTab }: BannerProps) => {\n\n const closeBanner = () => {\n setIsModalOpened(false);\n };\n\n const extractText = () => {\n return bannerValue.map((s: string, idx: number) =>

    {s}

    )\n }\n\n return (\n
    \n

    {!dataTab ? 'PM2.5 Improvements' : 'Speed Enhancement'}

    \n
    \n {extractText()}\n
    \n \n \n \n \n \n
    \n )\n};\n\nexport default Banner;","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport moment from 'moment';\nimport { ExportToCsv } from 'export-to-csv';\n\n// Component Imports\nimport DataChartContainer from '../view_components/DataChartContainer';\nimport DataDiagnosticsModal from '../view_components/DataDiagnosticsModal';\nimport DataDownloadButton from '../view_components/DataDownloadButton';\nimport DataDownloadModal from '../view_components/DataDownloadModal';\nimport DataGroupTabs from '../view_components/DataGroupTabs';\nimport DataSpeciesFilters from '../view_components/DataSpeciesFilters';\nimport DataTimeAveragingOptions from '../view_components/DataTimeAveragingOptions';\nimport DataTimePeriodOptions from '../view_components/DataTimePeriodOptions';\nimport Modal from '../shared_components/Modal';\n\n// Action Imports\nimport {\n endLoading,\n getZephyrData,\n startLoading,\n setZephyr,\n} from '../../actions/zephyrs';\nimport { setMappairPointModeOff } from '../../actions/layers';\nimport { setDataModalOn, setModalsOff } from '../../actions/modal';\nimport { setAnnualAverages } from '../../actions/annualAverage';\n\n// Function Imports\nimport { getAvailableSpecies, slotValidator } from '../../utils/functions/slotValidator';\n\n// Util Imports\nimport {\n activeTabFinder,\n extentActiveTabFinder,\n mappairSpeciesFinder,\n} from '../../utils/functions/tabFinder';\nimport { slotFinder } from '../../utils/functions/slotFinder';\nimport { pointDataPackager } from '../../utils/functions/saDataPackager';\nimport {\n getChartDataset,\n getIdxOfUnit,\n getSlotData,\n getTzConfig,\n getTzConfigFromAllHistories,\n getDateObjectArray,\n updateChartDatasets,\n} from '../../utils/functions/chartHelper';\nimport {\n dateFinder,\n startEndFinder,\n defaultStartEndFinder,\n utcConvertor,\n} from '../../utils/functions/dateFinder';\nimport {\n csvGenerator,\n mappairCsvGenerator,\n} from '../../utils/functions/csvGenerator';\nimport utilsRequest from '../../utils/request';\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport { gtmEventIdentifiers, YearOptions } from '../../utils/consts';\n\n// Type Imports\nimport {\n ActiveTab,\n AveragingPeriod,\n AveragingPeriods,\n LineChartData,\n DataConfig,\n DisplayConfig,\n DownloadOptions,\n GetZephyrHistoricalData,\n ReduxState,\n RequestError,\n SlotOptions,\n SpeciesDataLabels,\n SpeciesGroupOptions,\n TimePeriod,\n TimePeriods,\n UrlQueryStringParams,\n Zephyr,\n ZephyrHistoryWithId,\n AnnualAvgData,\n Overlay,\n PointValues,\n ZephyrTypes,\n} from '../../utils/interface';\nimport { checkSlotABData, getAvailableAveragingOption } from '../../utils/functions/getAvailableAveragingOption';\nimport Banner from '../shared_components/Banner';\nimport { ModularFeatures } from '../../reducers/modularFeatures';\nimport { useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\n\nconst AnnouncementBanner = styled.p`\n text-align: center;\n background-color: #ffffbf;\n font-weight: 600;\n margin: 0;\n line-height: 2.5;\n`;\n\ninterface Thresholds {\n NO2: number,\n O3: number,\n particulatePM10: number,\n particulatePM25: number,\n};\n\nexport interface ThresholdExceedingSpecie {\n zephyrID: Thresholds\n}\n\n// ComponentInterfaces\ninterface InitState {\n fetchMetData: boolean;\n showingAnnualAverage: boolean;\n selectedAnnualAvgYrs: string;\n activeTab: ActiveTab | null;\n averagingOption: AveragingPeriod;\n chartData: {\n labels: Date[];\n datasets: LineChartData[];\n };\n chartRedraw: boolean;\n chartZoomOn: boolean;\n dataNarrative: string[][];\n dataNarrativeModalOn: boolean;\n date: {\n start: Date;\n end: Date;\n };\n progressBarOn: boolean;\n requestErrors: RequestError[];\n slot: SlotOptions;\n speciesFiltered: SpeciesDataLabels[];\n timePeriod: TimePeriod;\n timePeriodSwitching: boolean;\n timezone: {\n tzType: string;\n tzSpecific: string;\n };\n unitHistories: ZephyrHistoryWithId | null;\n unitList: Zephyr[];\n unitListGrowing: boolean | null;\n coordinates: any | null;\n defaultActiveTab: number | null;\n statusCode: null | number | undefined;\n thresholdExceedingSpecies: ThresholdExceedingSpecie[];\n statusDescription: string | null;\n}\n\ninterface DataProps {\n asideOpen: boolean;\n averagingPeriods: AveragingPeriods;\n caching: number;\n dataConfig: DataConfig;\n displayConfig: DisplayConfig;\n downloadModalOn: boolean;\n endLoading: Function;\n getZephyrData: Function;\n historicalData: GetZephyrHistoricalData;\n isPublic: boolean;\n queryStringParams: UrlQueryStringParams;\n setDataModalOn: Function;\n setMappairPointModeOff: Function;\n setModalsOff: Function;\n startLoading: Function;\n timePeriods: TimePeriods;\n zephyr: Zephyr;\n annualAvgData: AnnualAvgData;\n setZephyr: Function;\n overlay: string;\n overlays: Overlay[];\n curOverlayName: string;\n isDSEEnabled: boolean;\n setIsDSEEnabled: Function;\n modularFeatures: ModularFeatures;\n bearerToken: string | null,\n}\n\n// Component\nconst Data = ({\n asideOpen,\n averagingPeriods,\n caching,\n dataConfig,\n downloadModalOn,\n displayConfig,\n endLoading,\n getZephyrData,\n historicalData,\n isPublic,\n queryStringParams,\n setDataModalOn,\n setMappairPointModeOff,\n setModalsOff,\n startLoading,\n timePeriods,\n zephyr,\n annualAvgData,\n setZephyr,\n overlay,\n overlays,\n curOverlayName,\n isDSEEnabled,\n setIsDSEEnabled,\n modularFeatures,\n bearerToken,\n}: DataProps) => {\n const hourAveraginPeriod = averagingPeriods.periods.find((p) => p.averagingOption === 'Hourly average on the hour');\n const indexOfHourAveragingPeriod = hourAveraginPeriod ? averagingPeriods.periods.indexOf(hourAveraginPeriod) : 0;\n // State\n const initState: InitState = {\n activeTab: null,\n // Corresponds with 1 Hour TimeAveraging default\n averagingOption: isPublic\n ? averagingPeriods.periods[1]\n : averagingPeriods.periods.length > 0 ? averagingPeriods.periods[indexOfHourAveragingPeriod] : averagingPeriods.periods[0],\n chartData: {\n labels: [],\n datasets: [],\n },\n chartRedraw: false,\n chartZoomOn: false,\n dataNarrative: [],\n dataNarrativeModalOn: false,\n date: {\n start: dateFinder(new Date(), 1, true),\n end: new Date(),\n },\n progressBarOn: false,\n requestErrors: [],\n speciesFiltered: [],\n slot: '',\n timePeriod: timePeriods.periods[0],\n timePeriodSwitching: false,\n timezone: {\n tzType: '',\n tzSpecific: '',\n },\n unitHistories: null,\n unitList: [],\n unitListGrowing: null,\n fetchMetData: false,\n showingAnnualAverage: false,\n selectedAnnualAvgYrs: '5',\n coordinates: null,\n statusCode: null,\n defaultActiveTab: null,\n thresholdExceedingSpecies: [],\n statusDescription: null,\n };\n\n const [activeTab, setActiveTab] = useState(initState.activeTab);\n const [averagingOption, setAveragingOption] = useState(\n initState.averagingOption,\n );\n const [chartData, setChartData] = useState(initState.chartData);\n const [chartRedraw, setChartRedraw] = useState(initState.chartRedraw);\n const [chartZoomOn, setChartZoomOn] = useState(initState.chartZoomOn);\n const [dataNarrative, setDataNarrative] = useState(initState.dataNarrative);\n const [dataNarrativeModalOn, setDataNarrativeModalOn] = useState(\n initState.dataNarrativeModalOn,\n );\n const [date, setDate] = useState(initState.date);\n const [progressBarOn, setProgressBarOn] = useState(initState.progressBarOn);\n const [requestErrors, setRequestErrors] = useState(initState.requestErrors);\n const [slot, setSlot] = useState(initState.slot);\n const [speciesFiltered, setSpeciesFiltered] = useState(\n initState.speciesFiltered,\n );\n const [timePeriod, setTimePeriod] = useState(initState.timePeriod);\n const [timePeriodSwitching, setTimePeriodSwitching] = useState(\n initState.timePeriodSwitching,\n );\n const [timezone, setTimezone] = useState(initState.timezone);\n const [unitHistories, setUnitHistories] = useState(initState.unitHistories);\n const [unitList, setUnitList] = useState(initState.unitList);\n const [unitListGrowing, setUnitListGrowing] = useState(\n initState.unitListGrowing,\n );\n const [fetchMetData, setFetchMetData] = useState(initState.fetchMetData);\n const [showingAnnualAverage, setShowingAnnualAverage] = useState(\n initState.showingAnnualAverage,\n );\n const [selectedAnnualAvgYrs, setSelectedAnnualAvgYrs] = useState(\n initState.selectedAnnualAvgYrs,\n );\n const [coordinates, setCoordinates] = useState(initState.coordinates);\n const [zephyrAvgData, setZephyrAvgData] = useState({});\n const [statusCode, setStatusCode] = useState(initState.statusCode);\n const [statusDescription, setStatusDescription] = useState(initState.statusDescription);\n const [defaultActiveTab, setDefaultActiveTab] = useState(initState.defaultActiveTab);\n const [thresholdExceedingSpecies, setThresholdExceedingSpecies] = useState(initState.thresholdExceedingSpecies);\n const [isModalOpened, setIsModalOpened] = useState(true);\n const [isUnitDataNull, setIsUnitDataNull] = useState(false);\n const [hasZephyrNull, setHasZephyrNull] = useState(null);\n const bannerValue = ['Several of the Zephyrs in the account have accelerated access to measurement data via DSE.', 'Enable DSE checkbox and try viewing historic data (2020 through 2022) via the custom datetime selector'];\n const location = useLocation();\n\n // Effects\n useEffect(() => {\n // if public user, turn mappairpoints mode off\n if (isPublic) {\n setMappairPointModeOff();\n }\n }, []);\n\n // useEffect(() => {\n // const numberYrsHistory = parseInt(selectedAnnualAvgYrs);\n // const lat = annualAvgData?.list?.latlon?.lat;\n // const lon = annualAvgData?.list?.latlon?.lon;\n\n // const handleMapClickGetAnnualAvg = async () => {\n // if (!showingAnnualAverage) return;\n // const endDateObj = new Date(new Date().getFullYear(), 0, 1);\n // endDateObj.setFullYear(endDateObj.getFullYear() - 1);\n // const enddt = endDateObj.toISOString().slice(0, -5);\n\n // const startDateObj = new Date(new Date().getFullYear(), 0, 1);\n // startDateObj.setFullYear(endDateObj.getFullYear() - numberYrsHistory);\n // const startdt = startDateObj.toISOString().slice(0, -5);\n\n // const annualAvgRawData = await utilsRequest.getAnnualAvgAtCoords(\n // lat,\n // lon,\n // startdt,\n // enddt,\n // '1y',\n // 'no2,pm2p5',\n // 'aa',\n // );\n\n // let selectedOverlay = 'no2';\n // if (curOverlayName === 'UK PM25') {\n // selectedOverlay = 'pm2p5';\n // }\n\n // let speciesWithData = annualAvgRawData.results.find(\n // (res: any) =>\n // res.species === selectedOverlay ||\n // (res.species === selectedOverlay &&\n // res.values_coordinates[0].values_timestamps[0].find(\n // (val: any) => val.value >= 0,\n // )),\n // );\n\n // const {\n // latlon,\n // values_timestamps,\n // } = speciesWithData.values_coordinates[0];\n\n // speciesWithData = {\n // species: speciesWithData.species,\n // units: values_timestamps[0].units,\n // latlon,\n // values_timestamps,\n // };\n\n // const curSpecies = mappairSpeciesFinder(\n // curOverlayName,\n // displayConfig,\n // overlays,\n // );\n\n // const annualAvgChartData = pointDataPackager(\n // annualAvgRawData,\n // curSpecies,\n // true,\n // );\n\n // setAnnualAverages({\n // list: speciesWithData || null,\n // raw: annualAvgRawData || null,\n // chart: annualAvgChartData || { labels: [], datasets: [] },\n // });\n // };\n\n // handleMapClickGetAnnualAvg();\n // }, [selectedAnnualAvgYrs]);\n\n useEffect(() => {\n\n if (!zephyr) return;\n if (unitList.length && unitList[0].zNumber === zephyr.zNumber) {\n if (zephyr.name !== unitList[0].name) {\n // map through the unit list and update with new name\n const updatedUnitList = unitList.map((unit) => {\n const updatedUnit = { ...unit };\n if (unit.zNumber === zephyr.zNumber) {\n updatedUnit.name = zephyr.name;\n }\n return updatedUnit;\n });\n // map through the datasets and update with new name \n const updatedDatasets = chartData.datasets.map((dataset) => {\n const updatedDataset = { ...dataset };\n if (dataset.unitId === zephyr.zNumber) {\n updatedDataset.label = `${zephyr.name}-${dataset.speciesLabel}`;\n }\n return updatedDataset;\n });\n setUnitListGrowing(false);\n setUnitList(updatedUnitList);\n setChartData({ ...chartData, datasets: updatedDatasets });\n }\n } else {\n handleChartReset();\n setUnitList([zephyr]);\n setActiveTab(initState.activeTab);\n setTimezone(initState.timezone);\n setUnitHistories(initState.unitHistories);\n setRequestErrors(initState.requestErrors);\n setUnitListGrowing(true);\n }\n }, [zephyr]);\n\n useEffect(() => {\n\n const annualAvgShowing =\n !zephyr || (Array.isArray(zephyr) && zephyr.length === 0);\n setShowingAnnualAverage(annualAvgShowing);\n if (annualAvgShowing) {\n const lat = annualAvgData?.list?.latlon?.lat;\n const lon = annualAvgData?.list?.latlon?.lon;\n setCoordinates([lat, lon]);\n } else {\n setCoordinates(null);\n }\n // setActiveTab({\n // group: 'NO2',\n // labels: ['NO(μg/m³)', 'NO₂(μg/m³)', 'O₃(μg/m³)'],\n // tab: ['NO', 'NO2', 'O3'],\n // });\n // Todo\n // need to make UI dropdown with numberYrsHistory(default selected)\n // fetch selected years\n }, [zephyr]);\n\n useEffect(() => {\n if (!timePeriod) return;\n if (unitList.length && unitListGrowing) {\n getZephyrHistory(unitList[unitList.length - 1]);\n // Analytics\n if (unitList.length > 1) {\n const labelEnrichment = `unitCount:${unitList.length}_unitType:${unitList[unitList.length - 1].type\n }`;\n analyticsEventFirer(gtmEventIdentifiers.unitOverplot, labelEnrichment);\n }\n // Only private portals have Unaveraged\n if (averagingOption?.averagingOption === 'Unaveraged') {\n const defaultAveragingOption = averagingPeriods.periods[1];\n handleAveragingOption(defaultAveragingOption);\n }\n }\n }, [unitList]);\n\n const getValidAveraginOption = () => {\n const hData: any = historicalData.zephyrHistory;\n let validOption = null;\n const { periods } = averagingPeriods;\n if (hData) {\n if ('15 min average on the quarter hours' in hData) {\n const availableSpeciesSlotA = getAvailableSpecies(hData['15 min average on the quarter hours']['slotA'])\n const availableSpeciesSlotB = getAvailableSpecies(hData['15 min average on the quarter hours']['slotB'])\n validOption = getAvailableAveragingOption(availableSpeciesSlotA, availableSpeciesSlotB, hData, '15 min average on the quarter hours', { labelHTML: '15 Min', averagingOption: '15 min average on the quarter hours' }, false);\n }\n if (validOption) return validOption;\n for (let i = 0; i < periods.length; i++) {\n if ((periods[i].averagingOption as string) in hData) {\n const availableSpeciesSlotA = getAvailableSpecies(hData[periods[i].averagingOption]['slotA'])\n const availableSpeciesSlotB = getAvailableSpecies(hData[periods[i].averagingOption]['slotB'])\n validOption = getAvailableAveragingOption(availableSpeciesSlotA, availableSpeciesSlotB, hData, periods[i].averagingOption, periods[i], false);\n if (validOption) break;\n }\n }\n }\n return validOption;\n };\n\n useEffect(() => {\n if (unitHistories && modularFeatures.dseIntegration[isPublic ? 'isPublic' : 'isPrivate']) {\n const HR8Mean = '8 hour average at midnight and 8am and 4pm';\n const HR24Mean = 'Daily average at midnight';\n const O3FreeSpeciesArr = ['NO2', 'particulatePM10', 'particulatePM25'];\n const unitHistorySpecies = Object.keys(unitHistories);\n const exceededSpeciesThresholds = unitHistorySpecies.map((z: any) => {\n let no2 = 0;\n let o3 = 0;\n let pm10 = 0;\n let pm25 = 0;\n const availableSlots = slotValidator(unitHistories[z]);\n if (unitHistories[z][HR8Mean] && availableSlots) {\n availableSlots.forEach((slot: string) => {\n if (unitHistories[z][HR8Mean][slot] && 'O3' in unitHistories[z][HR8Mean][slot]! && unitHistories[z][HR8Mean][slot]!['O3'].data) {\n const specieArr = unitHistories[z][HR8Mean][slot]!['O3'].data;\n specieArr.forEach((n: number | null) => {\n if (n && n > 100) o3++;\n })\n }\n })\n }\n // another if statement for 24hrs\n if (unitHistories[z][HR24Mean] && availableSlots) {\n availableSlots.forEach((slot: string) => {\n if (unitHistories[z][HR24Mean][slot]) {\n O3FreeSpeciesArr.forEach((specie: string) => {\n if (specie in unitHistories[z][HR24Mean][slot]! && unitHistories[z][HR24Mean][slot]![specie].data) {\n const specieArr = unitHistories[z][HR24Mean][slot]![specie].data;\n specieArr.forEach((n: number | null) => {\n switch (specie) {\n case 'NO2':\n if (n && n > 25) no2++;\n break;\n case 'particulatePM10':\n if (n && n > 45) pm10++;\n break;\n case 'particulatePM25':\n if (n && n > 37.5) pm25++;\n break;\n }\n })\n }\n })\n }\n })\n }\n const specieObj: Thresholds | any = {};\n specieObj[z] = {\n NO2: no2,\n O3: o3,\n particulatePM10: pm10,\n particulatePM25: pm25,\n }\n return specieObj;\n })\n setThresholdExceedingSpecies(exceededSpeciesThresholds);\n }\n }, [unitHistories])\n\n const validateAveragingOption = (averagingOption: any) => {\n const hData: any = historicalData.zephyrHistory\n if (hData) {\n return historicalData.zephyrHistory ? averagingOption.averagingOption in hData && ((hData[averagingOption.averagingOption]['slotB']\n && !hData[averagingOption.averagingOption]['slotB']['NO2'].allNull) || hData[averagingOption.averagingOption]['slotA']\n && !hData[averagingOption.averagingOption]['slotA']['NO2'].allNull) ? false : true : false;\n }\n };\n\n useEffect(() => {\n if (historicalData.zephyrHistory && historicalData.zType === zephyr.type) {\n const hData = historicalData.zephyrHistory;\n if (!(averagingOption.averagingOption in hData) || validateAveragingOption(averagingOption.averagingOption)) {\n const res: any = getValidAveraginOption();\n setAveragingOption(res);\n }\n }\n\n if (\n historicalData.zephyrHistory &&\n !historicalData.loading &&\n unitListGrowing &&\n !timePeriodSwitching\n ) {\n\n const newZephyrHistory = historicalData.zephyrHistory;\n const availableSlots = slotValidator(newZephyrHistory, unitHistories);\n const processSlot = zephyr.type === 100 ? slotFinder(newZephyrHistory)[0] : availableSlots.length > 1 || !availableSlots ? slotFinder(newZephyrHistory)[0] : availableSlots[0];\n let processTab;\n let unitId: number | null = null;\n let startingDataset: LineChartData[] = [];\n if (!activeTab && unitList.length === 1) {\n processTab = activeTabFinder(\n displayConfig,\n processSlot,\n newZephyrHistory,\n );\n unitId = zephyr.zNumber;\n startingDataset = [];\n setSlot(processSlot);\n setUnitHistories({ [unitId]: newZephyrHistory });\n setDefaultActiveTab(0);\n } else if (!activeTab && unitList.length > 0) {\n processTab = activeTabFinder(\n displayConfig,\n processSlot,\n newZephyrHistory,\n );\n unitId = unitList[unitList.length - 1].zNumber;\n startingDataset = [];\n setUnitHistories({ [unitId]: newZephyrHistory });\n } else if (activeTab && unitHistories && unitList.length > 0) {\n processTab = extentActiveTabFinder(\n displayConfig,\n slot,\n activeTab.group,\n unitHistories,\n zephyr.zNumber,\n );\n unitId = unitList[unitList.length - 1].zNumber;\n startingDataset = chartData.datasets;\n setUnitHistories({ ...unitHistories, [unitId]: newZephyrHistory });\n }\n if (processTab && unitId) {\n // here\n // if (historicalData.isHistoricalDataNull) { unitId = unitList[unitList.length - 2].zNumber };\n addUnitDataToChart(processSlot, processTab, startingDataset, unitId, availableSlots);\n }\n } else if (\n !historicalData.zephyrHistory &&\n !historicalData.loading &&\n unitListGrowing &&\n !timePeriodSwitching\n ) {\n if ((unitList[0].type === 0 && unitList[0].averageOfLastHourOfData) || unitList[0].type === 1 || unitList[0].type === 100) setUnitListGrowing(false);\n if (!unitHistories || !Object.keys(unitHistories).length) {\n setUnitHistories(initState.unitHistories);\n setActiveTab(initState.activeTab);\n setTimezone(initState.timezone);\n }\n if (historicalData.zephyrHistory === false) {\n\n const newError = {\n unitId: zephyr.zNumber,\n unitName: zephyr.name,\n errorType: '500',\n };\n setRequestErrors([newError]);\n }\n }\n }, [historicalData]);\n\n // Functions\n\n const keepPullutantTogglingState = (newDatasets: LineChartData[]) => {\n const { datasets } = chartData;\n newDatasets.forEach((s, idx) => {\n s.hidden = datasets[idx].hidden\n });\n }\n\n const getZephyrHistory = async (unit: Zephyr) => {\n if (!unit || !timePeriod) return;\n setChartZoomOn(false);\n\n const defaultStartEnd = defaultStartEndFinder();\n let { end, start } = defaultStartEnd;\n if (timePeriod.timeOption === 'custom') {\n start = moment(date.start)\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n const unformattedEnd = moment(date.end).set({ h: 23, m: 59, s: 0 });\n const current = moment();\n const selectedEnd = current < unformattedEnd ? current : unformattedEnd;\n end = selectedEnd.format('YYYYMMDDHHmm');\n } else if (timePeriod.timeOption) {\n const startEnd = startEndFinder(timePeriod.timeOption);\n start = startEnd.start;\n end = startEnd.end;\n }\n\n // Convert start/end\n const startUTC = utcConvertor(start);\n const endUTC = utcConvertor(end);\n const updatedDataConfig = queryStringParams.ctv\n ? { ...dataConfig, ctv: queryStringParams.ctv }\n : dataConfig;\n const newUnitHistory = await getZephyrData(\n unit,\n timePeriod.timeOption,\n startUTC,\n endUTC,\n updatedDataConfig,\n false,\n bearerToken,\n caching,\n location.pathname === '/',\n isDSEEnabled ? isDSEEnabled : undefined,\n );\n // if (newUnitHistory.data === null) setIsUnitDataNull(true);\n // else if (newUnitHistory.data !== null && isUnitDataNull) setIsUnitDataNull(false);\n if (zephyr.type === 0) {\n const { statusCode: unitStatusCode } = newUnitHistory;\n if (unitStatusCode && unitStatusCode.responseCode) {\n setStatusCode(unitStatusCode.responseCode);\n setStatusDescription(unitStatusCode.description);\n }\n }\n setZephyrAvgData(newUnitHistory);\n //if (newUnitHistory.data) {\n // const newDataNarrative = newUnitHistory.info.narrative;\n // setDataNarrative([newDataNarrative]);\n //}\n };\n\n const handleChartReset = () => {\n setChartData(initState.chartData);\n setActiveTab(initState.activeTab);\n };\n\n const handleSlotChange = (newSlot: SlotOptions) => {\n if (newSlot !== slot) {\n updateChartDatasetsWithNewSlot(newSlot);\n }\n };\n\n const handleTabSwitch = (tab: SpeciesGroupOptions, slotOption?: SlotOptions) => {\n if (unitHistories && Object.keys(unitHistories).length) {\n const newActiveTab = extentActiveTabFinder(\n displayConfig,\n slotOption ? slotOption : slot,\n tab,\n unitHistories,\n zephyr.zNumber,\n );\n if (newActiveTab) {\n processTabSwitch(newActiveTab);\n setSpeciesFiltered(initState.speciesFiltered);\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.speciesGroupSwitch,\n newActiveTab.group,\n );\n }\n }\n setDefaultActiveTab(null);\n };\n\n const handleSpeciesFilter = (speciesLabel: SpeciesDataLabels) => {\n const prevFilterStatus = speciesFiltered.includes(speciesLabel);\n const newChartData = chartData.datasets.map((dataset) => {\n const updatedData = { ...dataset };\n if (dataset.speciesLabel === speciesLabel) {\n updatedData.hidden = !prevFilterStatus;\n }\n return updatedData;\n });\n if (!prevFilterStatus) {\n setSpeciesFiltered([...speciesFiltered, speciesLabel]);\n } else {\n const newSpeciesFilters = speciesFiltered.filter(\n (sp) => sp !== speciesLabel,\n );\n setSpeciesFiltered(newSpeciesFilters);\n }\n setChartData({ ...chartData, datasets: newChartData });\n };\n\n const handleUnitSpeciesFilter = (\n label: 'LineChartData.[\"label\"]',\n speciesLabel: SpeciesDataLabels,\n ) => {\n const newChartData = chartData.datasets.map((dataset) => {\n const updatedData = { ...dataset };\n if (dataset.label === label) {\n updatedData.hidden = !dataset.hidden;\n }\n return updatedData;\n });\n const overallFiltered = speciesFiltered.includes(speciesLabel);\n let flipOverall: boolean = true;\n newChartData.map((dataset) => {\n if (\n dataset.speciesLabel === speciesLabel &&\n dataset.hidden === overallFiltered\n ) {\n flipOverall = false;\n }\n });\n if (flipOverall) {\n if (overallFiltered) {\n const newSpeciesFiltered = speciesFiltered.filter(\n (sp) => sp !== speciesLabel,\n );\n setSpeciesFiltered(newSpeciesFiltered);\n } else {\n setSpeciesFiltered([...speciesFiltered, speciesLabel]);\n }\n }\n setChartData({ ...chartData, datasets: newChartData });\n };\n\n const handleAveragingOption = (newAveragingPeriod: AveragingPeriod) => {\n addNewAveragingToChart(newAveragingPeriod);\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.timeAveragingSwitch,\n newAveragingPeriod.labelHTML,\n );\n };\n\n const handleCustomDateChange = (newDate: Date, type: 'start' | 'end') => {\n type === 'start'\n ? setDate({ ...date, start: newDate })\n : setDate({ ...date, end: newDate });\n };\n\n const handleCustomSubmit = () => {\n const start = moment(date.start)\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n const end = moment(date.end).set({ h: 23, m: 59, s: 59 });\n const current = moment();\n const selectedEnd = current < end ? current : end;\n const formattedEnd = selectedEnd.format('YYYYMMDDHHmm');\n handleTimePeriodChange(timePeriod, start, formattedEnd);\n };\n\n const handleTimePeriod = (\n newTimePeriod: TimePeriod,\n start: Date,\n end: Date,\n ) => {\n setTimePeriod(newTimePeriod);\n if (\n !(newTimePeriod === timePeriod || newTimePeriod.timeOption === 'custom')\n ) {\n handleTimePeriodChange(newTimePeriod, start, end);\n }\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.timePeriodSwitch,\n newTimePeriod.labelHTML,\n );\n };\n\n const handleTimePeriodChange = async (\n newTimePeriod: TimePeriod,\n start: Date | string,\n end: Date | string,\n ) => {\n startLoading();\n handleChartReset();\n setUnitHistories(initState.unitHistories);\n setChartZoomOn(false);\n setTimePeriodSwitching(true);\n setRequestErrors(initState.requestErrors);\n //\n const newRequestErrors: RequestError[] = [];\n let newUnitHistories: ZephyrHistoryWithId = {};\n const newDataNarrative: string[][] = [];\n let correctedStart: Date | string = start;\n let correctedEnd: Date | string = end;\n const updatedDataConfig = queryStringParams.ctv\n ? { ...dataConfig, ctv: queryStringParams.ctv }\n : dataConfig;\n for (let i = 0; i < unitList.length; i++) {\n const utcStart = utcConvertor(correctedStart);\n const utcEnd = utcConvertor(correctedEnd);\n const newUnitHistory = await getZephyrData(\n unitList[i],\n newTimePeriod.timeOption,\n utcStart,\n utcEnd,\n updatedDataConfig,\n true,\n bearerToken,\n caching,\n location.pathname === '/',\n isDSEEnabled ? isDSEEnabled : undefined,\n );\n // newUnitHistory.then((res: any) => {\n if (newUnitHistory) {\n if (newUnitHistory.data) {\n newUnitHistories = {\n ...newUnitHistories,\n [unitList[i].zNumber]: newUnitHistory.data,\n };\n //newDataNarrative.push(newUnitHistory.info.narrative);\n } else if (newUnitHistory.data === false) {\n const newError = {\n unitId: unitList[i].zNumber,\n unitName: unitList[i].name,\n errorType: '500',\n };\n newRequestErrors.push(newError);\n }\n if (i === unitList.length - 1) {\n setDataNarrative(newDataNarrative);\n if (newUnitHistories && Object.keys(newUnitHistories).length) {\n // See if we need to set the slot\n if (!slot) {\n const availableSlots = slotFinder(newUnitHistories[zephyr.zNumber]);\n if (availableSlots.length) {\n setSlot(availableSlots[0]);\n }\n }\n // Process all of the chart data\n const newTzConfig = getTzConfigFromAllHistories(\n averagingOption,\n slot,\n newUnitHistories,\n zephyr,\n );\n // Grab the TzConfig for one of the units in the unit history\n let newLabels: Date[] = [];\n for (const [unitKey, unitValue] of Object.entries(newUnitHistories)) {\n const processSlot = slotFinder(unitValue)[0];\n newLabels = getDateObjectArray(\n newUnitHistories[unitKey as any][averagingOption.averagingOption][\n processSlot\n ]![newTzConfig.tzType].data,\n );\n break;\n }\n if (newLabels.length) {\n processUnitHistorySet(newUnitHistories, unitList, newLabels);\n setUnitHistories(newUnitHistories);\n setTimezone(newTzConfig);\n }\n } else {\n setUnitHistories(initState.unitHistories);\n }\n if ((unitList[0].type === 0 && unitList[0].averageOfLastHourOfData) || unitList[0].type === 1 || unitList[0].type === 100) setUnitListGrowing(false);\n setChartRedraw(true);\n setTimePeriodSwitching(false);\n setRequestErrors(newRequestErrors);\n endLoading();\n }\n }\n // })\n }\n };\n\n const handleDownloadModal = () => {\n // If public bypass the modal and download CSV straight away\n if (isPublic) {\n handleDownloadData('csv');\n } else if (!downloadModalOn) {\n setDataModalOn();\n } else {\n setModalsOff();\n }\n };\n\n const handleDataNarrativeModal = () => {\n setDataNarrativeModalOn(!dataNarrativeModalOn);\n };\n\n const fetchMetDataChange = (event: React.ChangeEvent) => {\n const { target } = event;\n setFetchMetData(target.checked);\n };\n\n const handleDownloadData = async (type: DownloadOptions) => {\n if (showingAnnualAverage && annualAvgData && annualAvgData.chart) {\n const curSpecies = mappairSpeciesFinder(\n curOverlayName,\n displayConfig,\n overlays,\n );\n\n mappairCsvGenerator(annualAvgData.chart, curSpecies);\n return;\n }\n\n if (unitHistories && Object.keys(unitHistories).length) {\n const { start, end } =\n timePeriod.timeOption === 'custom'\n ? {\n start: moment(date.start).format('YYYYMMDDHHmm'),\n end: moment(date.end).format('YYYYMMDDHHmm'),\n }\n : startEndFinder(timePeriod.timeOption);\n\n const { met, ...displayConfigCopy } = { ...displayConfig };\n if (type === 'csv') {\n if (fetchMetData) {\n const metDataCSVPromise = unitList.map(async (unitItem) => {\n let metData = null;\n if (unitItem.HasMetStation === 1) {\n metData = await utilsRequest.getZephyrMetData(\n unitItem.zNumber,\n start,\n end,\n dataConfig,\n 'csv',\n bearerToken,\n );\n }\n\n if (metData) {\n const itemsKVP = metData?.Unaveraged?.head;\n\n // turning KVP-KeyValuePair to array\n const itemsArr: any[] = [];\n Object.keys(itemsKVP).forEach((key: string) => {\n const headerObj = itemsKVP[key].header;\n itemsArr.push({\n ...itemsKVP[key],\n ...{ key, CSVOrder: headerObj.CSVOrder },\n });\n });\n\n // sort data using CSVOrder\n const itemsArrSorted = itemsArr.sort(\n (a, b) => a.CSVOrder - b.CSVOrder,\n );\n\n // get csv headers\n const headers = itemsArrSorted.map(\n (item) => `${item.header.label}_${item.header.units}`,\n );\n\n let rows: any = [];\n const numberOfRows = itemsArrSorted[0].data.length;\n for (let i = 0; i < numberOfRows; i++) {\n rows[i] = [];\n for (let j = 0; j < headers.length; j++) {\n rows[i][j] = itemsArrSorted[j].data[i];\n }\n }\n\n const options = {\n fieldSeparator: ',',\n quoteStrings: '\"',\n decimalSeparator: '.',\n showLabels: true,\n showTitle: false,\n title: '',\n useTextFile: false,\n useBom: true,\n filename: `${unitItem.name}_${unitItem.zNumber}_${start}_${end}`,\n headers,\n };\n const csvExporter = new ExportToCsv(options);\n csvExporter.generateCsv(rows);\n } else {\n csvGenerator(\n averagingOption,\n displayConfigCopy,\n isPublic,\n slot,\n unitList,\n unitHistories,\n );\n }\n });\n\n Promise.all(metDataCSVPromise);\n } else {\n csvGenerator(\n averagingOption,\n displayConfigCopy,\n isPublic,\n slot,\n unitList,\n unitHistories,\n );\n }\n } else if (type === 'kml') {\n const availableUnits = unitList.filter(\n (unit) =>\n unit.zNumber in unitHistories &&\n slotFinder(unitHistories[unit.zNumber]),\n );\n if (availableUnits.length) {\n const processSlot = slotFinder(\n unitHistories[availableUnits[0].zNumber],\n ).toString();\n const slotString = processSlot.includes('slotB') ? 'B' : 'A';\n utilsRequest.downloadDataKML(\n availableUnits[0].zNumber,\n start,\n end,\n slotString,\n 'NO2',\n dataConfig,\n bearerToken,\n );\n }\n }\n }\n // Analytics\n const labelEnrichment = `${type}${type === 'csv'\n ? `_${timePeriod.labelHTML}_${averagingOption.labelHTML}_${unitList.length} Unit(s)`\n : ''\n }`;\n analyticsEventFirer(gtmEventIdentifiers.dataDownload, labelEnrichment);\n };\n // {labelHTML: '1 Hour', averagingOption: 'Hourly average on the hour'}\n\n const processChartDataset = (\n startingDataset: LineChartData[],\n processSlot: SlotOptions,\n processTab: ActiveTab,\n unitId: number,\n ) => {\n const newDatasets = startingDataset.slice();\n const { zephyrHistory } = historicalData;\n const unitIdx = getIdxOfUnit(unitId, unitList);\n if (zephyrHistory) {\n processTab.tab.map((species, idx) => {\n const dataset = getChartDataset(\n averagingOption,\n processTab,\n idx,\n displayConfig,\n processSlot,\n species,\n unitId,\n unitIdx,\n unitList,\n zephyrHistory,\n );\n if (dataset) {\n newDatasets.push(dataset);\n }\n });\n }\n return newDatasets;\n };\n\n const processUnitHistorySet = (\n newUnitHistories: ZephyrHistoryWithId,\n newUnitList: Zephyr[],\n newLabels: Date[],\n ) => {\n const { datasets } = chartData;\n let availableUnit: string = '';\n for (const [unitKey, unitValue] of Object.entries(newUnitHistories)) {\n availableUnit = unitKey;\n break;\n }\n // Find the first available tab for all species and process the data\n const zephyrHistory = newUnitHistories[zephyr.zNumber]\n ? newUnitHistories[zephyr.zNumber]\n : newUnitHistories[availableUnit! as any];\n const processSlot =\n newUnitHistories[zephyr.zNumber] && slot !== ''\n ? slot\n : slotFinder(zephyrHistory)[0];\n if (zephyrHistory) {\n const availableSlots = slotValidator(historicalData.zephyrHistory!, newUnitHistories);\n const activeTabConfig = activeTabFinder(\n displayConfig,\n processSlot,\n zephyrHistory,\n );\n if (activeTabConfig) {\n const extentActiveTabConfig = extentActiveTabFinder(\n displayConfig,\n processSlot,\n activeTabConfig.group,\n newUnitHistories,\n zephyr.zNumber,\n );\n if (extentActiveTabConfig && newUnitHistories) {\n const updatedNewDatasets: LineChartData[] = [];\n newUnitList.map((unit) => {\n const unitProcessSlot =\n unit.zNumber === zephyr.zNumber && slot !== ''\n ? slot\n : newUnitHistories\n ? slotFinder(newUnitHistories[unit.zNumber])[0]\n : slot;\n const secondProcessSlot = availableSlots.length > 1 ? processSlot === 'slotA' ? 'slotB' : 'slotA' : availableSlots.length === 1 ? availableSlots[0] : processSlot === 'slotA' && (timezone.tzType || timezone.tzSpecific) ? 'slotB' : unitProcessSlot;\n const unitIdx = getIdxOfUnit(unit.zNumber, unitList);\n extentActiveTabConfig.tab.map((species, idx) => {\n if (newUnitHistories[unit.zNumber]) {\n const firstSlotDataSet = getChartDataset(\n averagingOption,\n extentActiveTabConfig,\n idx,\n displayConfig,\n unitProcessSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n newUnitHistories[unit.zNumber],\n );\n const secondSlotDataSet = secondProcessSlot ? getChartDataset(\n averagingOption,\n extentActiveTabConfig,\n idx,\n displayConfig,\n secondProcessSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n newUnitHistories[unit.zNumber],\n ) : null;\n if (firstSlotDataSet && secondSlotDataSet) {\n availableSlots.length === 1 ? updatedNewDatasets.push(secondSlotDataSet) : updatedNewDatasets.push(firstSlotDataSet, secondSlotDataSet);\n }\n else if (firstSlotDataSet && !secondSlotDataSet) {\n updatedNewDatasets.push(firstSlotDataSet);\n }\n else if (!firstSlotDataSet && secondSlotDataSet) {\n updatedNewDatasets.push(secondSlotDataSet);\n }\n }\n });\n });\n if (datasets.length === updatedNewDatasets.length) keepPullutantTogglingState(updatedNewDatasets);\n const removeDataSetDuplicates = updatedNewDatasets.filter((value, index, self) =>\n index === self.findIndex((t) => (\n t.label === value.label && t.speciesLabel === value.speciesLabel\n ))\n );\n setChartData({\n ...chartData,\n datasets: removeDataSetDuplicates,\n labels: newLabels,\n });\n setActiveTab(extentActiveTabConfig);\n }\n }\n }\n setDefaultActiveTab(null);\n };\n\n const getFilteredDataSet = (slotData: LineChartData[], unitId: number) => {\n return slotData.map((dataset) => {\n const newDataset = { ...dataset };\n if (dataset.unitId === unitId) {\n newDataset.hidden = speciesFiltered.includes(dataset.speciesLabel);\n }\n return newDataset;\n });\n };\n\n // {labelHTML: '1 Hour', averagingOption: 'Hourly average on the hour'}\n // data chart\n const addUnitDataToChart = (\n processSlot: SlotOptions,\n processTab: ActiveTab,\n startingDataset: LineChartData[],\n unitId: number,\n availableSlots: SlotOptions[]\n ) => {\n const { zephyrHistory } = historicalData;\n if (zephyrHistory) {\n const secondSlot = availableSlots.length > 1 && processSlot === 'slotA' ? 'slotB' : availableSlots.length > 1 && processSlot === 'slotB' ? 'slotA' : availableSlots.length === 1 ? availableSlots[0] : null;\n const newDataset = processChartDataset(\n startingDataset,\n processSlot,\n processTab,\n unitId,\n );\n const secondSlotDataSet = secondSlot ? processChartDataset(\n startingDataset,\n secondSlot,\n processTab,\n unitId,\n ) : null;\n const updatedDataSet = secondSlotDataSet ? newDataset.concat(secondSlotDataSet) : null;\n let newLabels: Date[] = chartData.labels;\n const { tzType, tzSpecific } = getTzConfig(\n averagingOption,\n processSlot,\n zephyrHistory,\n );\n\n if (\n (tzType === 'localDateTime' && tzSpecific === timezone.tzSpecific) ||\n (tzType === 'localDateTime' && !timezone.tzType)\n ) {\n newLabels = getDateObjectArray(\n zephyrHistory[averagingOption.averagingOption][processSlot]!\n .localDateTime.data,\n );\n setTimezone({ tzType, tzSpecific });\n } else {\n if (\n !zephyrHistory[averagingOption.averagingOption][processSlot]?.dateTime\n ) {\n newLabels = getDateObjectArray(\n zephyrHistory[averagingOption.averagingOption].head!.dateTime.data,\n );\n } else {\n newLabels = getDateObjectArray(\n zephyrHistory[averagingOption.averagingOption][processSlot]!\n .dateTime.data,\n );\n }\n setTimezone({ tzType: 'dateTime', tzSpecific: 'UTC' });\n }\n // Check which datasets to hide based on current species filters\n // const removeDuplicatesFromDataSet = updatedDataSet ? updatedDataSet.filter((u) => )\n const filteredNewDataset = updatedDataSet ? getFilteredDataSet(updatedDataSet, unitId) : getFilteredDataSet(newDataset, unitId);\n const removeNewDataSetDuplicates = filteredNewDataset ? filteredNewDataset.filter((value, index, self) =>\n index === self.findIndex((t) => (\n t.label === value.label && t.speciesLabel === value.speciesLabel\n ))\n ) : null;\n const hasDataSetDuplicates = filteredNewDataset.length === removeNewDataSetDuplicates?.length;\n setChartData({\n ...chartData,\n labels: newLabels,\n datasets: hasDataSetDuplicates ? filteredNewDataset : removeNewDataSetDuplicates!,\n });\n setActiveTab(processTab);\n\n setUnitListGrowing(false);\n setChartRedraw(true);\n }\n };\n const updateChartDatasetsWithNewSlot = (newSlot: SlotOptions) => {\n if (unitHistories && activeTab) {\n const newDatasets: LineChartData[] = [];\n const newLabels: Date[] = getDateObjectArray(\n unitHistories[zephyr.zNumber][averagingOption.averagingOption][\n newSlot\n ]![timezone.tzType].data,\n );\n unitList.map((unit) => {\n const processSlot =\n unit.zNumber === zephyr.zNumber\n ? newSlot\n : slotFinder(unitHistories[unit.zNumber])[0];\n const unitIdx = getIdxOfUnit(unit.zNumber, unitList);\n const updatedActiveTab = activeTabFinder(\n displayConfig,\n processSlot,\n unitHistories[zephyr.zNumber],\n activeTab.group,\n );\n if (updatedActiveTab) {\n const updatedExtentActiveTab = extentActiveTabFinder(\n displayConfig,\n processSlot,\n updatedActiveTab.group,\n unitHistories,\n zephyr.zNumber,\n );\n if (updatedExtentActiveTab) {\n updatedExtentActiveTab.tab.forEach((species, idx) => {\n if (unitHistories[unit.zNumber]) {\n const dataset = getChartDataset(\n averagingOption,\n updatedExtentActiveTab,\n idx,\n displayConfig,\n processSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n unitHistories[unit.zNumber],\n );\n if (dataset) {\n newDatasets.push(dataset);\n }\n }\n });\n setActiveTab(updatedExtentActiveTab);\n }\n }\n });\n setChartData({ ...chartData, datasets: newDatasets, labels: newLabels });\n setSlot(newSlot);\n setChartRedraw(true);\n }\n };\n\n const addNewAveragingToChart = (newAveragingOption: AveragingPeriod) => {\n if (unitHistories && activeTab) {\n const { datasets } = chartData;\n const availableSlots = slotValidator(historicalData.zephyrHistory!, unitHistories);\n const newDatasets: LineChartData[] = [];\n // get labels based on one available Zephyr\n const newTzConfig = getTzConfigFromAllHistories(\n newAveragingOption,\n slot,\n unitHistories,\n zephyr,\n );\n // Grab the TzConfig for one of the units in the unit history\n let newLabels: Date[] = [];\n for (const [unitKey, unitValue] of Object.entries(unitHistories)) {\n const processSlot = slotFinder(unitValue)[0];\n\n const slotData = getSlotData(\n newAveragingOption,\n processSlot,\n unitValue,\n );\n if (slotData === null) break;\n\n newLabels = getDateObjectArray(slotData![newTzConfig.tzType]?.data);\n break;\n }\n unitList.map((unit) => {\n const processSlot =\n unit.zNumber === zephyr.zNumber\n ? slot\n : slotFinder(unitHistories[unit.zNumber])[0];\n const unitIdx = getIdxOfUnit(unit.zNumber, unitList);\n const secondProcessSlot = availableSlots.length > 1 ? processSlot === 'slotA' ? 'slotB' : 'slotA' : availableSlots.length === 1 ? availableSlots[0] : null;\n activeTab.tab.map((species, idx) => {\n if (unitHistories[unit.zNumber]) {\n const firstSlotDataSet = getChartDataset(\n newAveragingOption,\n activeTab,\n idx,\n displayConfig,\n processSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n unitHistories[unit.zNumber],\n );\n const secondSlotDataSet = secondProcessSlot ? getChartDataset(\n newAveragingOption,\n activeTab,\n idx,\n displayConfig,\n secondProcessSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n unitHistories[unit.zNumber],\n ) : null;\n if (firstSlotDataSet && secondSlotDataSet) {\n availableSlots.length === 1 ? newDatasets.push(secondSlotDataSet) : newDatasets.push(firstSlotDataSet, secondSlotDataSet);\n }\n else if (firstSlotDataSet && !secondSlotDataSet) {\n newDatasets.push(firstSlotDataSet);\n }\n else if (!firstSlotDataSet && secondSlotDataSet) {\n newDatasets.push(secondSlotDataSet);\n }\n }\n });\n });\n if (datasets.length === newDatasets.length) keepPullutantTogglingState(newDatasets);\n setChartData({ ...chartData, datasets: newDatasets, labels: newLabels });\n setAveragingOption(newAveragingOption);\n setChartRedraw(true);\n }\n };\n\n const processTabSwitch = (processTab: ActiveTab) => {\n if (unitHistories && Object.keys(unitHistories).length) {\n const availableSlots = slotValidator(historicalData.zephyrHistory!, unitHistories);\n const newDatasets: LineChartData[] = [];\n unitList.map((unit) => {\n const processSlot =\n unit.zNumber === zephyr.zNumber\n ? slot\n : slotFinder(unitHistories[unit.zNumber])[0];\n const unitIdx = getIdxOfUnit(unit.zNumber, unitList);\n const secondProcessSlot = availableSlots.length > 1 ? processSlot === 'slotA' ? 'slotB' : 'slotA' : availableSlots.length === 1 ? availableSlots[0] : null;\n processTab.tab.map((species, idx) => {\n if (unitHistories[unit.zNumber]) {\n const firstSlotDataSet = getChartDataset(\n averagingOption,\n processTab,\n idx,\n displayConfig,\n processSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n unitHistories[unit.zNumber],\n );\n const secondSlotDataSet = secondProcessSlot ? getChartDataset(\n averagingOption,\n processTab,\n idx,\n displayConfig,\n secondProcessSlot,\n species,\n unit.zNumber,\n unitIdx,\n unitList,\n unitHistories[unit.zNumber],\n ) : null;\n if (firstSlotDataSet && secondSlotDataSet) {\n availableSlots.length === 1 ? newDatasets.push(secondSlotDataSet) : newDatasets.push(firstSlotDataSet, secondSlotDataSet);\n }\n else if (firstSlotDataSet && !secondSlotDataSet) {\n newDatasets.push(firstSlotDataSet);\n }\n else if (!firstSlotDataSet && secondSlotDataSet) {\n newDatasets.push(secondSlotDataSet);\n }\n }\n });\n });\n setChartData({ ...chartData, datasets: newDatasets });\n setActiveTab(processTab);\n setDefaultActiveTab(null);\n setUnitListGrowing(false);\n setChartRedraw(true);\n }\n };\n\n const handleRemoveUnit = (unitZNumber: number) => {\n const newUnitList = unitList.filter(\n (listUnit) => listUnit.zNumber !== unitZNumber,\n );\n const newDatasets = chartData.datasets.filter(\n (ds) => ds.unitId !== unitZNumber,\n );\n const newRequestErrorList = requestErrors.filter(\n (re) => re.unitId !== unitZNumber,\n );\n let newUnitHistories = unitHistories;\n if (unitHistories && unitHistories[unitZNumber]) {\n newUnitHistories = { ...unitHistories };\n delete newUnitHistories[unitZNumber];\n // Calculate if there needs to be a new activeTabConfig\n if (activeTab && Object.keys(newUnitHistories).length) {\n const newTzConfig = getTzConfigFromAllHistories(\n averagingOption,\n slot,\n newUnitHistories,\n zephyr,\n );\n // Get new labels\n let newLabels: Date[] = [];\n for (const [unitKey, unitValue] of Object.entries(newUnitHistories)) {\n const processSlot = slotFinder(unitValue)[0];\n newLabels = getDateObjectArray(\n newUnitHistories[unitKey as any][averagingOption.averagingOption][\n processSlot\n ]![newTzConfig.tzType].data,\n );\n break;\n }\n const checkTabSwitch = extentActiveTabFinder(\n displayConfig,\n slot,\n activeTab.group,\n newUnitHistories,\n zephyr.zNumber,\n );\n if (checkTabSwitch) {\n const updatedNewDatasets = updateChartDatasets(\n newDatasets,\n displayConfig,\n newUnitList,\n );\n // get new colours\n setChartData({\n ...chartData,\n datasets: updatedNewDatasets,\n labels: newLabels,\n });\n } else {\n processUnitHistorySet(newUnitHistories, newUnitList, newLabels);\n }\n setTimezone(newTzConfig);\n } else {\n handleChartReset();\n }\n }\n setChartRedraw(true);\n setUnitHistories(newUnitHistories);\n setUnitList([...newUnitList]);\n setRequestErrors([...newRequestErrorList]);\n setUnitListGrowing(false);\n };\n\n return (\n <>\n \n \n {showingAnnualAverage ? (\n
    \n {/* {\n setSelectedAnnualAvgYrs(event.target.value);\n }}\n value={selectedAnnualAvgYrs}\n >\n {YearOptions.map((selectOption, i) => {\n return (\n \n );\n })}\n */}\n
    \n ) : (\n <>\n \n\n \n {modularFeatures.dseIntegration[\n isPublic ? 'isPublic' : 'isPrivate'\n ] && (\n \n }\n />\n )}\n \n )}\n\n {zephyr.HasMetStation &&\n !progressBarOn &&\n unitHistories &&\n Object.keys(unitHistories).length > 0 ? (\n <>\n
    \n \n
    \n \n ) : (\n <>\n )}\n\n 0) ||\n showingAnnualAverage\n }\n />\n \n }\n />\n \n }\n />\n \n\n {!isPublic && (\n \n

    \n Data is being replaced by Analysis. All functionality is retained\n along with new analysis tools to get the most from your data.\n

    \n
    \n )}\n\n
    \n \n\n \n
    \n \n \n );\n};\n\nconst SpeciesTabs = ({\n progressBarOn,\n loading,\n activeTab,\n slot,\n displayConfig,\n handleTabSwitch,\n unitHistories,\n zephyr,\n chartData,\n handleSpeciesFilter,\n speciesFiltered,\n handleSlotChange,\n averagingOption,\n showingAnnualAverage,\n annualAvgData,\n hasVirtualZephyr,\n defaultActiveTab,\n setDefaultActiveTab,\n setActiveTab,\n isDSEEnabled,\n thresholdExceedingSpecies,\n}: any) => {\n if (progressBarOn && loading)\n return (\n <>\n
    \n
    \n \n );\n\n return (\n <>\n \n {averagingOption ? (\n \n ) : null}\n \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n asideOpen: state.aside.on,\n averagingPeriods: state.setAveragingPeriods,\n caching: state.auth.userInfo.caching,\n dataConfig: state.dataConfig,\n displayConfig: state.setDisplayConfig,\n downloadModalOn: state.modal.data,\n historicalData: state.getZephyrHistoricalData,\n isPublic: state.auth.userInfo.isPublic,\n queryStringParams: state.queryStringParams,\n timePeriods: state.setTimePeriods,\n zephyr: state.setZephyr.zephyr,\n annualAvgData: state.setAnnualAverages,\n curOverlayName: state.showAQMALayer.overlay,\n overlay: state.showAQMALayer.overlay,\n overlays: state.setOverlays,\n modularFeatures: state.modularFeatures,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n endLoading,\n getZephyrData,\n setDataModalOn,\n setMappairPointModeOff,\n setModalsOff,\n setZephyr,\n startLoading,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Data);\n","// Type Imports\nimport { Dispatch } from 'redux';\nimport { SET_ACTIVE_THRESHOLD } from './types';\n\n// Action Creators\nexport const setThresholdTab = (tab: string) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ACTIVE_THRESHOLD,\n payload: tab,\n });\n};\n","// Type Imports\nimport { Overlay } from 'ol';\nimport { EnhancedThreshold, Threshold } from '../interface';\n\n/* ===== Function =====\n@DESC: findDecimal returns the decimal denomination for a given number\n@ARGS: integer\n*/\nconst thresholdDecimalFinder = (nextMin: number, convertToLastDP: boolean) => {\n let stringAns: string = '';\n nextMin\n .toString()\n .split('')\n .forEach((i) => {\n if (i === '.') {\n stringAns += i;\n } else if (parseFloat(i) > 0) {\n if (stringAns[stringAns.length - 1] === '1') {\n stringAns = stringAns.slice(0, -1);\n stringAns += '0';\n }\n stringAns += '1';\n } else {\n stringAns += '0';\n }\n });\n const parsedAns = parseFloat(stringAns);\n let ans = parsedAns >= 1 ? 1 : parsedAns;\n if (ans === 1 && convertToLastDP) {\n ans = ans - 0.9;\n }\n return ans;\n};\n\n/* ===== Function =====\n@DESC: thresholdFormatter returns a formatted array of thresholds,\nconcatenating bands with the same name and adding a max value that sits up\nagainst the next band in the range.\n@ARGS: threshold array(derived from API getOverlays call)\n*/\nconst theresholdFormatter = (thArr: Threshold[], activeOverlay: string) => {\n const overlaysTo1DP = ['Zephyr NO2', 'Zephyr PM25', 'UK NO2', 'UK PM25'];\n\n const convertToLastDP = overlaysTo1DP.includes(activeOverlay);\n\n const newThArr: EnhancedThreshold[] = [];\n thArr.forEach((th, idx, arr) => {\n const newTH = { ...th, max: null };\n newThArr.push(newTH);\n\n // if not last\n if (idx !== arr.length - 1) {\n const nextMin = arr[idx + 1].min;\n const subtractor = thresholdDecimalFinder(nextMin, convertToLastDP);\n const finalSubtractor = nextMin - subtractor === 0 ? 0 : subtractor;\n\n newThArr[newThArr.length - 1].max = parseFloat(\n (nextMin - finalSubtractor).toFixed(4),\n );\n }\n });\n return newThArr;\n};\n\nexport default theresholdFormatter;\n","// Package Imports\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\n\n// Action Imports\nimport { setThresholdTab } from '../../actions/stylegroups';\n\n// Util Imports\nimport theresholdFormatter from '../../utils/functions/thresholdFormatter';\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport {\n gtmEventIdentifiers,\n} from '../../utils/consts';\n\n// Asset Imports\nimport kebab from '../../assets/images/icon-kebab-sg.svg';\n\n// Type Imports\nimport { ReduxState, ShowAQMALayer, Stylegroup } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQColourscaleProps {\n activeOverlay: string;\n activeStylegroup: string;\n toggleAccordion: Function;\n isOn: boolean;\n isPublic: boolean;\n setThresholdTab: Function;\n stylegroups: Stylegroup[];\n tourAQColourscaleOpen: boolean;\n tourOpen: boolean;\n mappairOptions: ShowAQMALayer;\n thresholdTab: string,\n}\n\n// Styled Component\nconst StylegroupSelectorWrapper = styled.div`\n .sg-container {\n max-height: 40vh;\n overflow: auto;\n }\n background-color: #fff;\n ol {\n padding: 25px 20px 5px 20px;\n }\n .band {\n border: none;\n margin-bottom: 20px;\n font-size: 1.1rem;\n }\n .band-identifier {\n margin-right: 10px;\n height: 16px;\n width: 16px;\n background: red;\n border-radius: 50%;\n display: inline-block;\n vertical-align: middle;\n }\n .band-description {\n float: right;\n font-size: 1rem;\n max-width: 135px;\n text-align: right;\n }\n .sg-option-list {\n display: none;\n position: absolute;\n background-color: #fff;\n left: 0;\n width: 100%;\n z-index: 10;\n }\n .sg-option-list-active {\n display: block;\n }\n .sg-option {\n padding: 15px 20px;\n font-size: 1.3rem;\n cursor: pointer;\n &:hover {\n background: #efefef;\n transition: 0.3s all;\n }\n }\n .sg-option-inactive {\n color: #92949a;\n background: #efefef;\n cursor: auto;\n }\n .sg-selector {\n padding: 15px 20px;\n font-size: 1.6rem;\n cursor: pointer;\n color: #4e73c3;\n background: #fff;\n border-bottom: 1.5px solid #efefef;\n &:hover {\n background: #efefef;\n transition: 0.3s all;\n }\n .sg-selector-button {\n padding: 0px;\n padding-right: 15px;\n background: url(${kebab});\n background-repeat: no-repeat;\n background-position: 50%;\n height: 20px;\n width: 7px;\n display: inline-block;\n border: none;\n float: right;\n &:after {\n display: none;\n }\n }\n }\n .sg-selector.no-options {\n cursor: auto;\n &:hover {\n background: #fff;\n }\n .sg-selector-button {\n background: none;\n }\n }\n .sg-selector.no-options.public {\n display: none;\n }\n .public {\n .band {\n margin-bottom: 13.5px;\n }\n }\n`;\n\n// Component\nconst AQColourscale = ({\n activeOverlay,\n activeStylegroup,\n toggleAccordion,\n isOn,\n isPublic,\n setThresholdTab,\n stylegroups,\n tourAQColourscaleOpen,\n tourOpen,\n mappairOptions,\n thresholdTab,\n}: AQColourscaleProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState = {\n activeStylegroup: '',\n stylegroupMenuActive: false,\n };\n\n const [stylegroupMenuActive, setStylegroupMenuActive] = useState(\n initState.stylegroupMenuActive,\n );\n\n // Functions\n const closeStyleGroupMenu = () => {\n setStylegroupMenuActive(false);\n };\n\n const handleStylegroupChange = (stylegroup: Stylegroup) => {\n if (stylegroup.thresholds[activeOverlay]) {\n closeStyleGroupMenu();\n setThresholdTab(stylegroup.name);\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.colourscaleSelect,\n stylegroup.name,\n );\n }\n };\n\n const handleStylegroupMenu = () => {\n setStylegroupMenuActive(!stylegroupMenuActive);\n };\n\n return (\n
    \n
  • \n toggleAccordion('aqColourscale')}\n >\n {!isPublic ? translate('AQCButton') : translate('AQCButtonPublic')}\n \n \n
    \n
  • \n ))}\n \n
      \n {stylegroups.filter(\n (sg) => sg.name === activeStylegroup,\n )[0].thresholds[activeOverlay] && theresholdFormatter(\n stylegroups.filter(\n (sg) => sg.name === activeStylegroup,\n )[0].thresholds[activeOverlay],\n activeOverlay\n ).map((t, idx, tArr) => (\n
    1. \n {\n // TODO: Find means of passing props to SC with TS\n }\n\n \n\n {`${t.min}${t.max ? (t.min === t.max ? '' : `-${t.max}`) : '+'\n }`}\n\n {isPublic && activeOverlay !== 'UK AQI' ? (\n µg/m³\n ) : null}\n\n \n {\n // Display the threshold name if one exists and it hasn't already been displayed in a previous band\n //`${\n // (idx === 0 ||\n // (tArr[idx - 1] &&\n // tArr[idx - 1].name !== t.name)) &&\n // t.name !== null\n // ? t.name\n // : ''\n //}`\n `${t.name}`\n }\n \n
    2. \n ))}\n
    \n
    \n \n ) : (\n <>\n )}\n \n
    \n
    \n \n {activeStylegroup && activeOverlay && stylegroups.length ? (\n
    \n sg.name === activeStylegroup)[0]\n .thresholds[activeOverlay].map(\n (sg) => `rgb(${sg.r},${sg.g},${sg.b})`,\n )})`,\n }}\n />\n
    \n
    {translate('Low')}
    \n
    {translate('High')}
    \n
    \n
    \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n tourAQColourscaleOpen: state.tour.openAQIndex.openAQColourscale,\n tourOpen: state.tour.openTour,\n mappairOptions: state.showAQMALayer,\n thresholdTab: state.setThresholdTab.tab,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators(\n {\n setThresholdTab,\n },\n dispatch,\n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AQColourscale);\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\n\n// Type Imports\nimport {\n AQLatestMeasurementDataTabs,\n DisplayConfig,\n Zephyr,\n ZephyrLastHourInd,\n ZephyrTypes,\n} from '../../utils/interface';\n\n// Util Imports\nimport { aqTabFinder } from '../../utils/functions/tabFinder';\nimport { convertRawData } from '../../utils/functions/chartHelper';\n\n// Component Interfaces\ninterface AQUnitProps {\n displayConfig: DisplayConfig;\n isOn: boolean;\n tabs: AQLatestMeasurementDataTabs;\n zephyr: Zephyr;\n}\n\nexport const checkIfSensorData = (zephyr: Zephyr) => {\n const isSensorData = !!(\n zephyr &&\n zephyr.averageOfLastHourOfData &&\n Object.values(zephyr.averageOfLastHourOfData).filter((val) => val !== null)\n .length\n );\n return isSensorData;\n};\n\n// Component\nconst AQUnit = ({ displayConfig, isOn, tabs, zephyr }: AQUnitProps) => {\n const { t: translate } = useTranslation();\n\n if (!zephyr) return null;\n return (\n <>\n {isOn ? (\n <>\n

    \n {zephyr.name}{' '}\n \n
    \n {translate('AQPeriod')}\n
    \n

    \n {checkIfSensorData(zephyr) ? (\n
    \n {aqTabFinder(\n displayConfig,\n zephyr.averageOfLastHourOfData as ZephyrLastHourInd,\n )\n .filter(\n (rawGroup) =>\n rawGroup.species.length && tabs[rawGroup.context],\n )\n .map((group, idx, arr) => (\n
    \n {group.species.length > 0 ? (\n \n {group.species.map((species) => (\n
    \n
    \n \n
    \n
    \n ))}\n
    \n ) : (\n <>\n )}\n
    \n ))}\n \n ) : (\n <>\n
    \n {zephyr.type === 0\n ? !zephyr.userEndTimeDate\n ? translate('AQNoData')\n : translate('AQNoOwnership')\n : translate('AQNoData')}\n
    \n \n )}\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default AQUnit;\n\nconst TableScore = ({ zephyr, species }: any) => {\n const getData = () => {\n if (\n zephyr.averageOfLastHourOfData &&\n zephyr.averageOfLastHourOfData[species.label] !== null\n ) {\n return convertRawData(\n [zephyr.averageOfLastHourOfData[species.label]],\n species,\n )[0];\n }\n return 'NA';\n };\n\n const data = getData();\n if (zephyr.type === ZephyrTypes.virtual && data === -999) {\n return null;\n }\n\n return (\n
    \n {data}\n\n
    {parse(species.HTMLLabel)}
    \n
    \n

    {parse(species.HTMLExposedUnitLabel)}

    \n
    \n
    \n );\n};\n","// Package Imports\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Util Imports\nimport { aqMetMapper } from '../../utils/functions/tabFinder';\n\n// Type Imports\nimport { DisplayConfig, Zephyr } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQOtherProps {\n displayConfig: DisplayConfig;\n isOn: boolean;\n zephyr: Zephyr;\n}\n\nconst AQOther = ({ displayConfig, isOn, zephyr }: AQOtherProps) => {\n const { t: translate } = useTranslation();\n\n return (\n <>\n {isOn ? (\n <>\n {zephyr &&\n zephyr.type !== 100 &&\n zephyr.externalMetData &&\n zephyr.externalMetData.windDir ? (\n <>\n

    \n {zephyr.externalMetData.siteId === 0\n ? translate('AQGFSDesc')\n : `${zephyr.externalMetData.siteName\n .toLowerCase()\n .replace(/(^\\w{1})|(\\s+\\w{1})/g, (match) =>\n match.toUpperCase(),\n )} ${translate('AQMetDesc')}`}\n \n
    \n {zephyr.externalMetData.siteId === 0\n ? translate('AQPeriodGFS')\n : translate('AQPeriodMet')}\n
    \n

    \n
    \n {aqMetMapper &&\n aqMetMapper(displayConfig, zephyr.externalMetData)?.map(\n (group, idx, arr) => (\n
    \n {group.species.length > 0 ? (\n \n {group.species.map((species) => (\n
  • \n
    \n
    \n {\n zephyr.externalMetData![\n species.dataIdentifier\n ]\n }\n
    \n {species.HTMLLabel}\n
    \n
    \n

    \n {species.HTMLExposedUnitLabel}\n

    \n
    \n
    \n
    \n
  • \n ))}\n \n ) : (\n <>\n )}\n
    \n ),\n )}\n
    \n
    \n {zephyr.externalMetData.siteId === 0\n ? translate('AQDisclaimerGFS')\n : translate('AQDisclaimerMet')}\n
    \n \n ) : zephyr.type === 100 ? (\n
    Regional met data for Virtual Zephyrs is in development and will be available soon.
    \n ) :

    Loading Met Data...

    }\n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default AQOther;\n","// Type Imports\nimport { ExternalMetData, Zephyr } from '../interface';\n\n/* Function\nDESC: zephyrMetDataEnricher takes a list of Zephyrs and appends external met data\nARGS: array of Zephyrs, array of external met data objects\n*/\nconst zephyrMetDataEnricher = (\n externalMetData: ExternalMetData[],\n zephyrs: Zephyr[],\n) => {\n const enrichedZephyrs = zephyrs.map((z) => {\n const nearestMetData = externalMetData.filter(\n (eMD) => eMD.locationId === z.zNumber,\n );\n if (nearestMetData.length) {\n const enrichedZephyr = { ...z, externalMetData: nearestMetData[0] };\n return enrichedZephyr;\n }\n const enrichedZephyrNoMetData = { ...z, externalMetData: null };\n return enrichedZephyrNoMetData;\n });\n return enrichedZephyrs;\n};\n\n/* Function\nDESC: zephyrMetRequestPackager takes a list of Zephyrs and returns a formatted list ready for a met data request\nARGS: array of Zephyrs\n*/\nconst zephyrMetRequestPackager = (zephyrs: Zephyr[]) => {\n const packagedMetRequest = zephyrs\n .filter((z) => !z.userEndTimeDate && z.latitude && z.longitude)\n .map((z) => ({\n locationId: z.zNumber,\n lat: z.latitude,\n lon: z.longitude,\n }));\n return packagedMetRequest;\n};\n\nconst specificZephyrMetDataEnricher = (externalMetData: ExternalMetData) => {\n return externalMetData ? { externalMetData: externalMetData } : { externalMetData: null };\n}\n\nconst specificZephyrMetRequestPackager = (zephyr: Zephyr) => {\n if (!zephyr.userEndTimeDate && zephyr.latitude && zephyr.longitude) return {\n locationId: zephyr.zNumber,\n lat: zephyr.latitude,\n lon: zephyr.longitude,\n }\n}\n\nexport { zephyrMetDataEnricher, specificZephyrMetDataEnricher, zephyrMetRequestPackager, specificZephyrMetRequestPackager };\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQUnit from './AQUnit';\nimport AQOther from './AQOther';\n\n// Util Imports\nimport { aqTabHeaderFinder } from '../../utils/functions/tabFinder';\nimport utilsRequest from '../../utils/request';\nimport {\n setZephyrs,\n} from '../../actions/zephyrs';\n\n// Const Imports\n\n// Type Imports\nimport {\n AQLatestMeasurementDataTabs,\n DisplayConfig,\n Loading,\n ReduxState,\n Zephyr,\n} from '../../utils/interface';\nimport { specificZephyrMetDataEnricher, specificZephyrMetRequestPackager, zephyrMetDataEnricher, zephyrMetRequestPackager } from '../../utils/functions/zephyrMetDataEnricher';\nimport { bindActionCreators, Dispatch } from 'redux';\n\n// Component Interfaces\ninterface AQLatestDataProps {\n aqlIsOn: AQLatestMeasurementDataTabs;\n toggleAccordion: Function;\n changeLatestMeasurementTab: Function;\n displayConfig: DisplayConfig;\n isOn: boolean;\n loading: Loading;\n tourAQDataOpen: boolean;\n tourOpen: boolean;\n zephyr: Zephyr;\n unitList: Zephyr[];\n setZephyrs: Function;\n bearerToken: string | null;\n}\n\n// Component\nconst AQLatestData = ({\n aqlIsOn,\n toggleAccordion,\n changeLatestMeasurementTab,\n displayConfig,\n isOn,\n loading,\n tourAQDataOpen,\n tourOpen,\n zephyr,\n unitList,\n setZephyrs,\n bearerToken,\n}: AQLatestDataProps) => {\n const { t: translate } = useTranslation();\n const tabs = [\n { label: 'Zephyr', value: 'zephyr' },\n { label: 'Regional Met', value: 'other' }\n ];\n\n // Effects\n useEffect(() => {\n if (!loading.zephyrLastHour) {\n switchAQLTab('zephyr');\n }\n }, []);\n\n useEffect(() => {\n if (zephyr && !Array.isArray(zephyr)) {\n const availableTabs = aqTabHeaderFinder(displayConfig, zephyr);\n if (!availableTabs) return;\n const metStationData = availableTabs.filter((t) => t.value === 'met')\n .length;\n const externalMetData = availableTabs.filter((t) => t.value === 'other')\n .length;\n if (!loading.zephyrLastHour) {\n if (\n (aqlIsOn.met && !metStationData) ||\n (aqlIsOn.other && !externalMetData)\n ) {\n switchAQLTab('zephyr');\n }\n }\n }\n }, [zephyr]);\n\n // Functions\n const switchAQLTab = (tab: string) => {\n if (!aqlIsOn[tab]) {\n changeLatestMeasurementTab(tab);\n }\n };\n\n const generateMetInfoToZephyr = async (actualZephyr: Zephyr) => {\n const packagedMetRequest = [specificZephyrMetRequestPackager(actualZephyr)];\n const externalMetData = await utilsRequest.getLatestMetDataForUser(\n packagedMetRequest as any,\n bearerToken,\n );\n const enrichedZephyr = specificZephyrMetDataEnricher(externalMetData);\n return enrichedZephyr;\n };\n\n const addMetInfoToZephyr = async () => {\n const metInfo = await generateMetInfoToZephyr(zephyr);\n const copyZephyrsList = [...unitList];\n const curZephyr: any = copyZephyrsList.find((z: Zephyr) => z.id_pod === zephyr.id_pod);\n curZephyr!['externalMetData'] = metInfo.externalMetData![0];\n setZephyrs(copyZephyrsList);\n };\n\n const addMetInfoToZephyrsList = async (label: string) => {\n if (label === 'Regional Met' && !zephyr.externalMetData) await addMetInfoToZephyr();\n }\n\n return (\n <>\n {!loading.zephyrLastHour ? (\n
  • \n toggleAccordion('aqData')}\n >\n {translate('AQLatestDataButton')}\n \n {isOn || tourAQDataOpen ? (\n
    \n \n
    \n \n \n
    \n
    \n ) : (\n <>\n )}\n
  • \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n displayConfig: state.setDisplayConfig,\n loading: state.loading,\n tourAQDataOpen: state.tour.openAQIndex.openAQData,\n tourOpen: state.tour.openTour,\n unitList: state.getZephyrs.zephyrs,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyrs,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AQLatestData);\n","// Package Imports\nimport React from 'react';\nimport CanasJSReact from '../../canvasjs.react';\n\n// Type Imports\nimport { SAChartData } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQSAChartProps {\n chartDataset: SAChartData;\n}\n\nconst AQSAChart = ({ chartDataset }: AQSAChartProps) => (\n {\n const content = `${e.entries[0].dataPoint.y} tonnes/annum`;\n return content;\n },\n },\n }}\n />\n);\n\nexport default AQSAChart;\n","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQSAChart from './AQSAChart';\n\n// Const Imports\nimport { AQSAContent, naeiCRLink } from '../../utils/consts';\n\n// Type Imports\nimport { SAChartData } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQSAProps {\n isOn: boolean;\n saData: SAChartData | null;\n}\n\n// Component\nconst AQSA = ({ isOn, saData }: AQSAProps) => {\n const { t: translate } = useTranslation();\n\n if (isOn && saData) {\n return (\n
    \n
    \n

    \n {`${translate('AQTotal')} ${saData.meta.total.toFixed(3)}`}\n
    \n {translate('AQUnits')}\n

    \n
    \n
    \n \n
    \n
    \n {naeiCRLink.precedingContent}\n \n {translate('naeiCRLink')}\n \n
    \n
    \n );\n }\n return null;\n};\n\nexport default AQSA;\n","// Package Imports\nimport React from 'react';\nimport CanvasJSReact from '../../canvasjs.react';\n\n// Component Imports\nimport DataChartDownloadButton from './DataChartDownloadButton';\n\n// Util Imports\nimport { wrangleLineChartData } from '../../utils/functions/chartHelper';\n\n// Type Imports\nimport { ChartData } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQTemporalChartProps {\n chartDataset: ChartData | null;\n intervals?: number;\n additionalOptions?: any;\n handleChartDownload?: Function;\n annual?: boolean;\n intervalType?: string;\n}\n\nconst AQTemporalChart = ({\n chartDataset,\n intervals,\n intervalType,\n additionalOptions,\n handleChartDownload,\n annual = false,\n}: AQTemporalChartProps) => {\n let axisXIntervalType = intervals ? 'day' : undefined;\n if (intervalType) axisXIntervalType = intervalType;\n if (!chartDataset) return null;\n return (\n <>\n {}),\n animationEnabled: false,\n zoomEnabled: false,\n backgroundColor: 'transparent',\n toolTip: {\n borderColor: '#222539',\n cornerRadius: 3,\n fontFamily: 'Open Sans',\n contentFormatter: (e: any) => {\n const formattedDate = CanvasJSReact.CanvasJS.formatDate(\n e.entries[0].dataPoint.x,\n e.entries[0].dataSeries.xValueFormatString,\n );\n const content = `${formattedDate}
    ${e.entries[0].dataPoint.y} ${e.entries[0].dataSeries.label}`;\n return content;\n },\n },\n axisY: {\n gridColor: '#cbcdcf',\n gridThickness: 0,\n labelFontFamily: 'Open Sans',\n minimum: 0,\n },\n axisX: {\n labelFontFamily: 'Open Sans',\n valueFormatString: annual ? 'YYYY' : 'DD-MM-YY',\n labelAngle: 0,\n labelAutoFit: true,\n labelWrap: true,\n labelMaxWidth: 75,\n prefix: '‎‎‏‏‎ ‎ ',\n interval: intervals || undefined,\n intervalType: axisXIntervalType,\n stripLines: [\n {\n value: new Date(),\n color: '#92949a',\n label: 'Today',\n labelBackgroundColor: 'transparent',\n labelFontColor: '#252834',\n },\n ],\n },\n ...additionalOptions,\n }}\n />\n 0}\n />\n \n );\n};\n\n// Default Props\nAQTemporalChart.defaultProps = {\n additionalOptions: {},\n handleChartDownload: () => null,\n};\n\nexport default AQTemporalChart;\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQTemporalChart from './AQTemporalChart';\n\n// Util Imports\nimport { mappairCsvGenerator } from '../../utils/functions/csvGenerator';\n\n// Type Imports\nimport { ChartData, Species } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQTemporalChartModalProps {\n chartDataset: ChartData;\n curSpecies: Species;\n handleChartDownload: Function;\n hdms: string;\n parentRef: React.RefObject;\n setModalsOff: Function;\n}\n\n// Component\nconst AQTemporalChartModal = ({\n chartDataset,\n curSpecies,\n handleChartDownload,\n hdms,\n parentRef,\n setModalsOff,\n}: AQTemporalChartModalProps) => {\n const { t: translate } = useTranslation();\n\n // Consts\n const additionalOptions = {\n zoomEnabled: true,\n };\n return (\n
    \n
    \n
    \n

    \n {hdms}\n
    \n \n {translate('AQChartHeader')}: {parse(curSpecies.HTMLLabel)}{' '}\n {curSpecies.HTMLShortUnitLabel}\n \n

    \n
    \n setModalsOff()}\n type=\"button\"\n >\n \n \n \n \n
    \n
    \n \n \n
    \n mappairCsvGenerator(chartDataset, curSpecies, hdms)}\n className=\"button tertiary aqm-download-data\"\n data-html2canvas-ignore=\"true\"\n >\n {translate('AQDownloadData')}\n \n
    \n \n );\n};\n\nexport default AQTemporalChartModal;\n","// Package Imports\nimport React from 'react';\nimport parse from 'html-react-parser';\n// @ts-ignore\nimport html2canvas from 'html2canvas';\n// @ts-ignore\nimport canvasToImage from 'canvas-to-image';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQTemporalChart from './AQTemporalChart';\nimport AQTemporalChartModal from './AQTemporalChartModal';\nimport Modal from '../shared_components/Modal';\n\n// Util Imports\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport { gtmEventIdentifiers, mappairLink } from '../../utils/consts';\n\n// Type Imports\nimport { ChartData, Modal as ModalType, Species } from '../../utils/interface';\n\n// Component Interfaces\ninterface InitState {\n chartModalOpen: boolean;\n}\n\ninterface AQTemporalProps {\n curSpecies: Species;\n isOn: boolean;\n hdms: string;\n modal: ModalType;\n setMappairTimeseriesModalOn: Function;\n setModalsOff: Function;\n temporalModelData: ChartData | null;\n}\n\n// Component\nconst AQTemporal = ({\n curSpecies,\n isOn,\n hdms,\n modal,\n setMappairTimeseriesModalOn,\n setModalsOff,\n temporalModelData,\n}: AQTemporalProps) => {\n const { t: translate } = useTranslation();\n // Refs\n const compRef = React.createRef();\n\n // Functions\n const handleChartDownload = () => {\n const fileName = `mappairChartExport_${curSpecies.label}_${hdms}`;\n const item = document.querySelector('#aqm-modal-chart-container') as any;\n item.parentNode.style.overflow = 'visible';\n const html2canvasOptions = {\n backgroundColor: null,\n ignoreElements: () => false,\n logging: false,\n };\n html2canvas(item as HTMLElement, html2canvasOptions).then((canvas) => {\n canvasToImage(canvas, {\n name: fileName,\n type: 'png',\n quality: 1,\n });\n });\n };\n\n return (\n <>\n {isOn && temporalModelData ? (\n
    \n
    \n

    \n {translate('AQChartHeader')}\n
    \n \n \n {mappairLink.content}\n \n {parse(curSpecies.HTMLLabel)} {curSpecies.HTMLShortUnitLabel}\n \n

    \n {\n setMappairTimeseriesModalOn();\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.timeseriesExpansion,\n curSpecies.dataIdentifier,\n );\n }}\n className=\"aqm-expand-to-modal\"\n data-html2canvas-ignore=\"true\"\n type=\"button\"\n >\n \n \n \n \n
    \n
    \n \n
    \n \n }\n />\n
    \n ) : (\n <>\n )}\n \n );\n};\n\nexport default AQTemporal;\n","// Package Imports\nimport React from 'react';\nimport Plot from 'react-plotly.js';\n\n// Type Imports\nimport { WindRoseData } from '../../utils/interface';\nimport { plotlyFont } from '../../utils/plotySharedConfig';\n\n// Component Interfaces\ninterface AQWindChartProps {\n windData: WindRoseData[];\n}\n\n// Component\nconst AQWindChart = ({ windData }: AQWindChartProps) => {\n return (\n
    \n {windData ? (\n <>\n
    \n \n
    \n
      \n {windData.map((wD) => (\n
    • \n \n
      {wD.name}
      \n {/*
      {wD.unit}
      */}\n
    • \n ))}\n
    \n \n ) : (\n <>\n )}\n
    \n );\n};\n\nexport default AQWindChart;\n","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQWindChart from './AQWindChart';\n\n// Type Imports\nimport { WindRoseData } from '../../utils/interface';\n\n// Component Interfaces\ninterface AQWindProps {\n isOn: boolean;\n windData: WindRoseData[] | null;\n}\n\n// Component\nconst AQWind = ({ isOn, windData }: AQWindProps) => {\n const { t: translate } = useTranslation();\n\n // State\n return (\n <>\n {isOn && windData ? (\n <>\n
    \n
    \n

    \n {translate('AQChartHeaderOne')}\n
    \n \n {translate('AQChartSubheader')}\n \n

    \n
    \n
    \n \n \n ) : (\n <>\n )}\n \n );\n};\n\nexport default AQWind;\n","// Package Imports\nimport React, { useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AQSA from './AQSA';\nimport AQTemporal from './AQTemporal';\nimport AQWind from './AQWind';\nimport Spinner from '../shared_components/Spinner';\n\n// Action Imports\nimport { setMappairTimeseriesModalOn, setModalsOff } from '../../actions/modal';\nimport { setMapAirPointValueHistory } from '../../actions/mapAirPointValueHistory';\n\n// Type Imports\nimport {\n AQModelDataTabs,\n ChartData,\n Modal as ModalType,\n PointValues,\n ReduxState,\n SAChartData,\n Species,\n WindRoseData,\n MapAirPointValueHistoryData,\n} from '../../utils/interface';\n\n// Const Imports\nimport { aqmOptions } from '../../utils/consts';\n\n// Component Interfaces\ninterface AQModelDataProps {\n aqmIsOn: AQModelDataTabs;\n changeMapAirModelTab: Function;\n toggleAccordion: Function;\n curSpecies: Species;\n isOn: boolean;\n modal: ModalType;\n points: PointValues | null;\n saData: SAChartData | null;\n setMappairTimeseriesModalOn: Function;\n setModalsOff: Function;\n temporalModelData: ChartData | null;\n tourAQModelDataOpen: boolean;\n tourOpen: boolean;\n windModelData: WindRoseData[] | null;\n mapAirPointValueHistory: MapAirPointValueHistoryData;\n}\n\n// Component\nconst AQModelData = ({\n aqmIsOn,\n changeMapAirModelTab,\n toggleAccordion,\n curSpecies,\n isOn,\n modal,\n points,\n saData,\n setMappairTimeseriesModalOn,\n setModalsOff,\n temporalModelData,\n tourAQModelDataOpen,\n tourOpen,\n windModelData,\n mapAirPointValueHistory,\n}: AQModelDataProps) => {\n const { t: translate } = useTranslation();\n\n // Effects\n useEffect(() => {\n if (\n !(aqmIsOn.aqmWind && windModelData) &&\n !(aqmIsOn.aqmSA && saData) &&\n !(aqmIsOn.aqmTemp && temporalModelData)\n ) {\n if (temporalModelData) {\n switchAQMTab('aqmTemp');\n } else if (saData) {\n switchAQMTab('aqmSA');\n } else if (windModelData) {\n switchAQMTab('aqmWind');\n }\n }\n }, [temporalModelData, saData, windModelData]);\n\n // Functions\n const switchAQMTab = (tab: string) => {\n if (!aqmIsOn[tab]) {\n changeMapAirModelTab(tab);\n }\n };\n\n // Component\n return (\n
  • \n toggleAccordion('aqModelData')}\n >\n {translate('AQModelDataButton')}\n \n\n <>\n {(isOn && !tourOpen) || (tourOpen && tourAQModelDataOpen) ? (\n
    \n {mapAirPointValueHistory.status === 'succeeded' &&\n (saData || temporalModelData || windModelData) ? (\n <>\n {[temporalModelData, windModelData, saData].filter((d) => d)\n .length > 0 ? (\n <>\n {[temporalModelData, windModelData, saData].filter((d) => d)\n .length > 1 ? (\n \n ) : null}\n\n {(points !== null) ? (\n\n \n\n ) :\n <>\n }\n\n \n \n \n ) : (\n
    \n
    {translate('AQModelNoData')}
    \n
    \n )}\n \n ) : (\n
    \n {mapAirPointValueHistory.status === 'loading' ? (\n <>\n
    {translate('AQModelDataLoading')}
    \n \n \n ) : null}\n\n {mapAirPointValueHistory.status === 'idle' ? (\n
    {translate('AQModelDataClickPrompt')}
    \n ) : null}\n
    \n )}\n
    \n ) : null}\n \n
  • \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n modal: state.modal,\n tourAQModelDataOpen: state.tour.openAQIndex.openAQModelData,\n tourOpen: state.tour.openTour,\n mapAirPointValueHistory: state.setMapAirPointValueHistory,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setModalsOff,\n setMappairTimeseriesModalOn,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AQModelData);\n","// Package Imports\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport parse from 'html-react-parser';\nimport { useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\n// @ts-ignore\nimport html2canvas from 'html2canvas';\n// @ts-ignore\nimport canvasToImage from 'canvas-to-image';\nimport { setZephyr } from '../../actions/zephyrs';\n\n// Component Imports\nimport Spinner from '../shared_components/Spinner';\nimport Modal from '../shared_components/Modal';\nimport AQTemporalChart from './AQTemporalChart';\n\n// Const Imports\nimport { annualAvgTab, routePaths, AQUnitContent } from '../../utils/consts';\n\n// Util Imports\nimport { mappairCsvGenerator } from '../../utils/functions/csvGenerator';\n\n// Type Imports\nimport {\n AnnualAvgTabs,\n DisplayConfig,\n Loading,\n ReduxState,\n Zephyr,\n PointValues,\n Species,\n AnnualAvgData,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface AQLatestDataProps {\n aaIsOn: AnnualAvgTabs;\n toggleAccordion: Function;\n changeMapAnnualAverageTab: Function;\n displayConfig: DisplayConfig;\n isOn: boolean;\n loading: Loading;\n tourAQDataOpen: boolean;\n tourOpen: boolean;\n zephyr: Zephyr;\n annualAvgData: AnnualAvgData | null;\n curSpecies: Species;\n points: PointValues | null;\n setZephyr: Function;\n}\n\n// Component\nconst AnnualAveragesAccordion = ({\n aaIsOn,\n toggleAccordion,\n changeMapAnnualAverageTab,\n displayConfig,\n curSpecies,\n isOn,\n loading,\n tourAQDataOpen,\n tourOpen,\n zephyr,\n points,\n annualAvgData,\n setZephyr,\n}: AQLatestDataProps) => {\n const history = useHistory();\n const { t: translate } = useTranslation();\n\n const [isModalShown, setModalShow] = useState(false);\n\n // Effects\n useEffect(() => {\n if (!loading.zephyrLastHour) {\n changeTab('chart'); // 'list'\n }\n }, []);\n\n // Functions\n const changeTab = (tab: string) => {\n if (!aaIsOn[tab]) {\n changeMapAnnualAverageTab(tab);\n }\n };\n\n const navigateToDataTab = () => {\n setZephyr([]);\n // will pick up annual averageData from redux when we reach there\n history.push(routePaths.data);\n };\n\n // Functions\n const handleChartDownload = () => {\n const fileName = `mappairChartExport_${curSpecies.label}`;\n const item = document.querySelector('#aqm-modal-chart-container') as any;\n item.parentNode.style.overflow = 'visible';\n const html2canvasOptions = {\n backgroundColor: null,\n ignoreElements: () => false,\n logging: false,\n };\n html2canvas(item as HTMLElement, html2canvasOptions).then((canvas) => {\n canvasToImage(canvas, {\n name: fileName,\n type: 'png',\n quality: 1,\n });\n });\n };\n\n return (\n <>\n {!loading.zephyrLastHour ? (\n
  • \n toggleAccordion('annualAvg')}\n >\n {translate('annualAvgAccordionTitle')}\n \n\n {isOn || tourAQDataOpen ? (\n \n ) : null}\n
  • \n ) : null}\n \n );\n};\n\nconst Loader = ({ points }: any) => {\n const { t: translate } = useTranslation();\n\n if (points && points?.hdms) {\n return (\n
    \n
    \n
    {translate('AQModelDataLoading')}
    \n \n
    {' '}\n
    \n );\n }\n\n return (\n
    \n
    \n {translate('AQModelDataClickPrompt')}\n
    \n
    \n );\n};\n\nfunction ListComponent(\n list: any,\n):\n | string\n | number\n | boolean\n | {}\n | React.ReactElement>\n | React.ReactNodeArray\n | React.ReactPortal\n | null\n | undefined {\n const { t: translate } = useTranslation();\n\n if (list?.values_timestamps[0]?.value === -999) {\n return (\n
    \n
    \n

    {translate('annualAvgNotAuthorised')}

    \n
    \n
    \n );\n }\n\n if (list)\n return (\n
    \n
    \n

    \n {translate('tabContentTitleForListPrefix')}\n {list.values_timestamps.length}\n {translate('tabContentTitleForListPostfix')}\n

    \n
    \n
    \n \n \n \n \n \n \n \n \n {list.values_timestamps.length > 0 ? (\n list.values_timestamps.map((valueTimestamp: any) => (\n \n \n \n \n ))\n ) : (\n {translate('nodata')}\n )}\n \n
    \n {translate('tableRowforYr')}\n \n {`${list.species.toLocaleUpperCase()} (${list.units})`}\n
    {valueTimestamp.timestamp}{valueTimestamp.value}
    \n
    \n
    \n );\n\n return
    {translate('AQNoData')}
    ;\n}\n\nfunction ChartComponent(\n annualAvgData: AnnualAvgData | null,\n isModalShown: boolean,\n setModalShow: Function,\n handleChartDownload: Function,\n curSpecies: Species,\n points: PointValues,\n navigateToDataTab: Function,\n):\n | string\n | number\n | boolean\n | {}\n | React.ReactElement>\n | React.ReactNodeArray\n | React.ReactPortal\n | null\n | undefined {\n const { t: translate } = useTranslation();\n\n // Refs\n const compRef = React.createRef();\n\n // Consts\n const additionalOptions = {\n zoomEnabled: true,\n };\n\n if (annualAvgData?.list?.values_timestamps[0].value === -999) {\n return (\n
    \n
    \n

    {translate('annualAvgNotAuthorised')}

    \n
    \n
    \n );\n }\n\n\n if (annualAvgData?.list)\n return (\n
    \n {annualAvgData?.list ? (\n <>\n
    \n

    \n {translate('tabContentTitleForChartPrefix')}\n {annualAvgData.list.values_timestamps.length}\n {translate('tabContentTitleForChartPostfix')}\n

    \n setModalShow(true)}\n className=\"aqm-expand-to-modal\"\n data-html2canvas-ignore=\"true\"\n type=\"button\"\n >\n \n \n \n \n
    \n\n \n\n \n
    \n
    \n

    \n {translate('AAChartHeader')}\n\n
    \n \n {annualAvgData.list.values_timestamps[0].timestamp} -{' '}\n {\n annualAvgData.list.values_timestamps[\n annualAvgData.list.values_timestamps.length - 1\n ].timestamp\n }\n : {parse(curSpecies.HTMLLabel)}\n {curSpecies.HTMLShortUnitLabel}\n \n

    \n
    \n setModalShow(false)}\n type=\"button\"\n >\n \n \n \n \n
    \n
    \n \n \n
    \n {\n if (annualAvgData && annualAvgData.chart) {\n mappairCsvGenerator(\n annualAvgData.chart,\n curSpecies,\n points?.hdms,\n );\n }\n }}\n className=\"button tertiary aqm-download-data\"\n data-html2canvas-ignore=\"true\"\n >\n {translate('AADownloadData')}\n \n\n {points ? (\n {\n navigateToDataTab();\n }}\n className=\"button primary aqm-download-data\"\n data-html2canvas-ignore=\"true\"\n >\n {translate('AASeeMore')}\n \n ) : null}\n
    \n \n }\n />\n \n ) : (\n
    Loading...
    \n )}\n \n );\n\n return
    {translate('AQNoData')}
    ;\n}\n\nconst Tabs = ({\n points,\n annualAvgData,\n aaIsOn,\n changeTab,\n isModalShown,\n setModalShow,\n handleChartDownload,\n curSpecies,\n navigateToDataTab,\n}: any) => {\n if (points && points.value && annualAvgData) {\n return (\n
    \n \n\n {aaIsOn.chart && annualAvgData.chart\n ? ChartComponent(\n annualAvgData,\n isModalShown,\n setModalShow,\n handleChartDownload,\n curSpecies,\n points,\n navigateToDataTab,\n )\n : null}\n\n {aaIsOn.list ? ListComponent(annualAvgData.list) : null}\n
    \n );\n }\n\n return ;\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n displayConfig: state.setDisplayConfig,\n loading: state.loading,\n tourAQDataOpen: state.tour.openAQIndex.openAQData,\n tourOpen: state.tour.openTour,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyr,\n },\n dispatch,\n );\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AnnualAveragesAccordion);\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\n\n// Component Imports\nimport AQColorscale from './AQColourscale';\nimport AQLatestData from './AQLatestData';\nimport AQModelData from './AQModelData';\nimport AnnualAveragesAccordion from './AnnualAveragesAccordion';\n\n// Util Imports\nimport {\n pointDataPackager,\n saDataPackager,\n windRoseDataPackagerFromMetData,\n} from '../../utils/functions/saDataPackager';\nimport { mappairSpeciesFinder } from '../../utils/functions/tabFinder';\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport { gtmEventIdentifiers } from '../../utils/consts';\n\n// Type Imports\nimport {\n AQLatestMeasurementDataTabs,\n AnnualAvgTabs,\n AQModelDataTabs,\n AQTabs,\n DisplayConfig,\n Loading,\n Overlay,\n PointValues,\n ReduxState,\n ShowAQMALayer,\n Stylegroup,\n UserInfo,\n Zephyr,\n AnnualAvgData,\n MapAirPointValueHistoryData,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface AQIIndexProps {\n curOverlayName: string;\n displayConfig: DisplayConfig;\n loading: Loading;\n mappairOptions: ShowAQMALayer;\n overlays: Overlay[];\n points: PointValues | null;\n stylegroups: Stylegroup[];\n threshold: string;\n userInfo: UserInfo;\n zephyr: Zephyr;\n annualAvgData: AnnualAvgData | null;\n mapAirPointValueHistory: MapAirPointValueHistoryData;\n}\n\ninterface InitState {\n aqIsOn: AQTabs;\n aqlIsOn: AQLatestMeasurementDataTabs;\n aqmIsOn: AQModelDataTabs;\n aaIsOn: AnnualAvgTabs;\n}\n\n// View Component\nconst AQIIndex = ({\n curOverlayName,\n displayConfig,\n loading,\n mappairOptions,\n overlays,\n points,\n stylegroups,\n threshold,\n userInfo,\n zephyr,\n annualAvgData,\n mapAirPointValueHistory,\n}: AQIIndexProps) => {\n // State\n const initState: InitState = {\n // accordion\n aqIsOn: {\n aqData: false,\n aqColourscale: userInfo.isPublic,\n aqModelData: true,\n annualAvg: true,\n },\n // tab\n aqlIsOn: {\n zephyr: false,\n met: false,\n other: false,\n chart: false,\n },\n aqmIsOn: {\n aqmSA: false,\n aqmTemp: false,\n aqmWind: false,\n },\n aaIsOn: {\n chart: false,\n list: false,\n },\n };\n\n const [aqIsOn, setAQIsOn] = useState(initState.aqIsOn);\n const [aqlIsOn, setAQLIsOn] = useState(initState.aqlIsOn);\n const [aqmIsOn, setAQMIsOn] = useState(initState.aqmIsOn);\n const [aaIsOn, setAAIsOn] = useState(initState.aaIsOn);\n\n // Consts\n const saData =\n mapAirPointValueHistory && mapAirPointValueHistory.saValue\n ? saDataPackager(displayConfig, mapAirPointValueHistory.saValue)\n : null;\n\n const curSpecies = mappairSpeciesFinder(\n curOverlayName,\n displayConfig,\n overlays,\n );\n\n const temporalDataset =\n mapAirPointValueHistory && mapAirPointValueHistory.valueHistory\n ? pointDataPackager(mapAirPointValueHistory.valueHistory, curSpecies)\n : null;\n\n const windDataset =\n mapAirPointValueHistory && mapAirPointValueHistory.valueHistory\n ? windRoseDataPackagerFromMetData(\n displayConfig,\n mapAirPointValueHistory.valueHistory,\n )\n : null;\n\n // Effects\n useEffect(() => {\n const updatedAQIsOn = { ...initState.aqIsOn, aqData: true };\n setAQIsOn(updatedAQIsOn);\n }, [zephyr]);\n\n // Functions\n const toggleAccordion = (tab: string) => {\n const updatedAQIsOn = { ...aqIsOn, [tab]: !aqIsOn[tab] };\n setAQIsOn(updatedAQIsOn);\n // Analytics\n if (!aqIsOn[tab]) {\n analyticsEventFirer(gtmEventIdentifiers.aqiIndexSwitch, tab);\n }\n };\n\n // change tab in accordion (Latest Measurement)\n const changeLatestMeasurementTab = (tab: string) => {\n const updatedAQLIsOn = { ...initState.aqlIsOn, [tab]: !aqlIsOn[tab] };\n setAQLIsOn(updatedAQLIsOn);\n // Analytics\n if (!aqlIsOn[tab]) {\n analyticsEventFirer(gtmEventIdentifiers.aqlIndexSwitch, tab);\n }\n };\n\n // change tab in accordion (MappAir Model Data)\n const changeMapAirModelTab = (tab: string) => {\n const updatedAQMIsOn = { ...initState.aqmIsOn, [tab]: !aqmIsOn[tab] };\n setAQMIsOn(updatedAQMIsOn);\n // Analytics\n if (!aqmIsOn[tab]) {\n const labelEnrichment = `${tab}_${curSpecies.dataIdentifier}`;\n analyticsEventFirer(gtmEventIdentifiers.aqmIndexSwitch, labelEnrichment);\n }\n };\n\n // change tab in accordion (MappAir Model Data)\n const changeMapAnnualAverageTab = (tab: string) => {\n const updatedTabisOn = { ...initState.aaIsOn, [tab]: !aaIsOn[tab] };\n setAAIsOn(updatedTabisOn);\n // Analytics\n if (!aaIsOn[tab]) {\n analyticsEventFirer(gtmEventIdentifiers.aqmIndexSwitch, tab);\n }\n };\n\n return (\n <>\n {!loading.initApp ? (\n \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n zephyr: state.setZephyr.zephyr,\n mapAirPointValueHistory: state.setMapAirPointValueHistory,\n});\n\nexport default connect(mapStateToProps, {})(AQIIndex);\n","// Type Imports\nimport { PublicAdvice } from '../interface';\n\nconst publicAdviceFinder = (advice: PublicAdvice[][], value: number | null, species: string) => {\n let defaultAdvice = advice[0][0];\n let no_advice_found: PublicAdvice;\n no_advice_found = {\n advice: \"Advice currently unavailable for this pollutant, please try switching to another.\",\n advice_sensitive: \"\",\n behavioural_change: \"\",\n label: \"\",\n lower_limit_value: 0,\n species: \"\"\n }\n if (value) {\n // For now we only return AQI advice from the API - not true anymore 28092022\n const AQIAdvice = advice[0];\n let any_entries_for_species = false;\n // Use for loop to allow break\n for (let idx = 0; idx < AQIAdvice.length; idx++) {\n if (species === AQIAdvice[idx].species) {\n any_entries_for_species = true;\n }\n // handle end case for each species group (entries should be added in species groups and in ascending conc order for this to work)\n if (idx === AQIAdvice.length - 1) {\n if (any_entries_for_species) {\n defaultAdvice = AQIAdvice[idx];\n break;\n } else {\n return no_advice_found;\n }\n } else if ((species === AQIAdvice[idx].species && AQIAdvice[idx + 1].species !== species) ||\n (value >= AQIAdvice[idx].lower_limit_value &&\n value < AQIAdvice[idx + 1].lower_limit_value &&\n species === AQIAdvice[idx].species)) {\n defaultAdvice = AQIAdvice[idx];\n break;\n } \n }\n }\n return defaultAdvice;\n};\n\nexport { publicAdviceFinder };\n","export const formatGoogleAddress = (address: string, shortFormat?: boolean) => {\n const nonUKAddress = address.replace(/, UK/g, '');\n const formattedGoogleAddress = nonUKAddress.replace(/Unnamed Road, /g, '');\n if (shortFormat) {\n const googleAddressArray = formattedGoogleAddress.split(',');\n if (googleAddressArray.length > 2) {\n const croppedGoogleAddress = [\n googleAddressArray[0],\n googleAddressArray[googleAddressArray.length - 1],\n ].join(', ');\n return croppedGoogleAddress;\n }\n }\n return formattedGoogleAddress;\n};\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\n\n// Util Import\nimport { latestMeasurementMapper } from '../../utils/functions/latestMeasurementMapper';\nimport { publicAdviceFinder } from '../../utils/functions/publicAdviceFinder';\nimport { formatGoogleAddress } from '../../utils/functions/googleFormatter';\nimport { mappairSpeciesFinder } from '../../utils/functions/tabFinder';\n\n// Const Imports\nimport { maptilerCRLink, osmCRLink, publicCRLink } from '../../utils/consts';\n\n// Type Imports\nimport {\n DisplayConfig,\n Overlay,\n PublicAdvice,\n PointValues,\n ReduxState,\n ShowAQMALayer,\n UserInfo,\n Zephyr,\n Species,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface LastestMeasurementsPublicProps {\n asideOn: boolean;\n cancelPopup: boolean;\n curOverlayName: string;\n curZephyr: Zephyr;\n displayConfig: DisplayConfig;\n mappairOptions: ShowAQMALayer;\n overlays: Overlay[];\n points: PointValues | null;\n publicAdvice: PublicAdvice[][];\n userInfo: UserInfo;\n}\n\nconst LatestMeasurementsPublic = ({\n asideOn,\n cancelPopup,\n curOverlayName,\n curZephyr,\n displayConfig,\n mappairOptions,\n overlays,\n points,\n publicAdvice,\n userInfo,\n}: LastestMeasurementsPublicProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const [internalPoints, setInternalPoints] = useState(null as any);\n const popoverElement = document.getElementById(\n 'popup-container',\n ) as HTMLElement;\n // Effects\n useEffect(() => {\n //if (!cancelPopup && points && points.value) {\n // setInternalPoints(points);\n //} else if (cancelPopup) {\n // setInternalPoints(null);\n //} else { setInternalPoints(points);}\n if (cancelPopup) {\n setInternalPoints(null);\n } else { setInternalPoints(points); }\n }, [cancelPopup, points]);\n\n // Consts\n const curOverlay =\n overlays && overlays.filter((ol) => ol.name === curOverlayName).length\n ? mappairSpeciesFinder(curOverlayName, displayConfig, overlays)\n : null;\n\n // Functions\n const checkAvailableData = () => {\n const availableData =\n (internalPoints && internalPoints.value && internalPoints.value >= 0) ||\n ((!internalPoints || !internalPoints.value) &&\n curZephyr.averageOfLastHourOfData &&\n curZephyr.averageOfLastHourOfData.AQI);\n\n return availableData;\n };\n\n // Component\n return (\n <>\n {userInfo.isPublic ? (\n
    \n {curOverlay ? (\n \n
    \n {osmCRLink.precedingContent}{' '}\n \n {translate('osmCRLink')},{' '}\n \n <>\n {maptilerCRLink.precedingContent}{' '}\n \n {translate('maptilerCRLink').split('|')[0]}\n \n , {osmCRLink.precedingContent}{' '}\n \n {translate('maptilerCRLink').split('|')[1]}\n \n \n
    \n
    \n
    \n {ZephyrName(internalPoints, curZephyr, popoverElement)}\n
    \n\n {PollutionValue(\n internalPoints,\n curZephyr,\n displayConfig,\n curOverlay,\n popoverElement,\n )}\n
    \n
    \n {PublicAdviceComponent(\n internalPoints,\n curZephyr,\n popoverElement,\n publicAdvice,\n checkAvailableData,\n curOverlay,\n )}\n
    \n
    \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n publicAdvice: state.publicAdvice.advice,\n});\n\nexport default connect(mapStateToProps, {})(LatestMeasurementsPublic);\n\nconst ZephyrName = (\n internalPoints: any,\n curZephyr: Zephyr,\n popoverElement: HTMLElement,\n) => {\n let name = '';\n\n if (internalPoints && internalPoints.namedLocation && internalPoints.value) {\n name = formatGoogleAddress(\n internalPoints.namedLocation[0].formatted_address,\n true,\n );\n return

    {name}

    ;\n }\n if (popoverElement) return

    ;\n\n return

    {curZephyr.name}

    ;\n};\n\nconst PublicAdviceComponent = (\n internalPoints: any,\n curZephyr: Zephyr,\n popoverElement: HTMLElement,\n publicAdvice: any,\n checkAvailableData: Function,\n curOverlay: any,\n) => {\n const curOverlayLabel = curOverlay.label;\n const pollutant = curZephyr ? 'averageOfLastHourOfData' in curZephyr && curZephyr.averageOfLastHourOfData ? { ...curZephyr.averageOfLastHourOfData }[curOverlayLabel] : null : null;\n\n const adviceValidator = () => {\n const publicAdvices = publicAdvice.filter((pA: any) => pA.length > 0);\n return publicAdvices.length > 0;\n };\n\n const getAdvice = () => {\n return parse(\n publicAdviceFinder(\n publicAdvice,\n !internalPoints\n ? pollutant\n : internalPoints.secondaryValue,\n curOverlay.label.toLowerCase(),\n ).advice,\n );\n };\n\n const getBehaviouralChange = () => {\n return parse(\n publicAdviceFinder(\n publicAdvice,\n !internalPoints\n ? pollutant\n : internalPoints.secondaryValue,\n curOverlay.label.toLowerCase(),\n ).behavioural_change,\n );\n };\n\n if (checkAvailableData()) {\n return adviceValidator() ? (\n
    \n Advice: \n {getAdvice()}\n
    \n Your part: \n {getBehaviouralChange()}\n
    \n ) : <>;\n }\n\n return <>;\n};\n\nconst PollutionValue = (\n internalPoints: any,\n curZephyr: Zephyr,\n displayConfig: any,\n curOverlay: any,\n popoverElement: HTMLElement,\n) => {\n let { label, HTMLLabel, HTMLShortUnitLabel } = curOverlay;\n\n if(curZephyr.averageOfLastHourOfData === null) {\n return
    Loading air quality data...
    ;\n }\n\n /* Either show Z value or MA value here depending on mode */\n if ((!internalPoints || !internalPoints.namedLocation) && !popoverElement) {\n if (\n curZephyr.averageOfLastHourOfData &&\n typeof curZephyr.averageOfLastHourOfData[label] === 'number'\n ) {\n return (\n
      \n {latestMeasurementMapper(\n displayConfig,\n curZephyr?.averageOfLastHourOfData,\n label,\n ).map((species) => (\n
    • \n
      {species.value}
      \n
      \n {parse(species.HTMLLabel)}\n
      \n
      {species.HTMLUnitLabel}
      \n
    • \n ))}\n
    \n );\n }\n }\n\n if (internalPoints && internalPoints.value >= 0) {\n return (\n
      \n
    • \n
      {internalPoints.value}
      \n
      \n {parse(HTMLLabel)}\n
      \n
      {parse(HTMLShortUnitLabel)}\n
      \n
    • \n
    \n );\n }\n\n return
    No data
    ;\n};\n","// Const Imports\nimport { defaultSpecies } from '../consts';\n\n// Type Imports\nimport {\n DisplayConfig,\n LatestPublicMeasurement,\n ZephyrLastHourInd,\n} from '../interface';\n\n/* Function\nDESC: latestMeasurementMapper returns a flattened array of non-species-grouped latest measurements with\n displayConfig goodies such as HTML labels and unit labels\nARGS: displayConfig (API derived), current Zephyr\n*/\nconst latestMeasurementMapper = (\n displayConfig: DisplayConfig,\n lastHourUnitData: ZephyrLastHourInd,\n targetSpecies?: string,\n) => {\n const mappedMeasurements: LatestPublicMeasurement[] = [];\n displayConfig.tabs.forEach((group) =>\n group.species.forEach((species) => {\n if (\n typeof lastHourUnitData[species.label] === 'number' &&\n (!targetSpecies || species.label === targetSpecies)\n ) {\n const measurement = {\n identifier: species.dataIdentifier,\n HTMLLabel: species.HTMLLabel,\n HTMLUnitLabel: species.HTMLShortUnitLabel,\n value: lastHourUnitData[species.label] as number,\n };\n mappedMeasurements.push(measurement);\n }\n }),\n );\n // Horrible hardcoding to account for case where AQI not in displayConfig but want to show in LMs\n // Case is we have AQI in connection data and is in Overlays but not displayConfig\n // TODO add AQI to public DCs and check for knock-on implications elsewhere\n if (targetSpecies === 'AQI' && typeof lastHourUnitData.AQI === 'number') {\n const measurement = {\n identifier: defaultSpecies.dataIdentifier,\n HTMLLabel: defaultSpecies.HTMLLabel,\n HTMLUnitLabel: '',\n value: lastHourUnitData[defaultSpecies.label] as number,\n };\n mappedMeasurements.push(measurement);\n }\n return mappedMeasurements;\n};\n\nexport { latestMeasurementMapper };\n","import { useEffect } from 'react';\n\nconst useOutsideClick = (ref, callback) => {\n const handleClickOutside = (e) => {\n if (ref.current && !ref.current.contains(e.target)) {\n callback(e);\n }\n };\n\n useEffect(() => {\n const handleClickDocument = (e) => {\n handleClickOutside(e);\n };\n\n document.addEventListener('click', handleClickDocument);\n\n return () => {\n document.removeEventListener('click', handleClickDocument);\n };\n }, [ref, callback]);\n};\n\nexport default useOutsideClick;","// Package Imports\nimport React, { useState, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n\n// Type Imports\nimport { ReduxState, UserInfo } from '../../utils/interface';\n\n// Component Interfaces\ninterface LocationSearchProps {\n handleLocationSearch: Function;\n on: boolean;\n tourOpenSearch: boolean;\n userInfo: UserInfo;\n}\n\n// Component\nconst LocationSearch = ({\n handleLocationSearch,\n on,\n tourOpenSearch,\n userInfo,\n}: LocationSearchProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const [invalidSearch, setInvalidSearch] = useState(false);\n const [showSearch, setShowSearch] = useState(false);\n const [typedLocation, setTypedLocation] = useState('');\n\n // Consts\n const inputEl = useRef(null);\n\n // Functions\n const handleSearch = async () => {\n if (showSearch) {\n if (typedLocation) {\n const ans = await handleLocationSearch(typedLocation);\n if (!ans) {\n setInvalidSearch(true);\n } else {\n setInvalidSearch(false);\n setShowSearch(false);\n }\n setTypedLocation('');\n } else {\n setShowSearch(false);\n setInvalidSearch(false);\n setTypedLocation('');\n }\n } else {\n setShowSearch(true);\n if (inputEl.current) {\n inputEl.current.focus();\n }\n }\n };\n\n return (\n <>\n {on && (\n <>\n
    \n {\n handleSearch();\n }}\n />\n
    \n {\n setTypedLocation(e.target.value);\n setInvalidSearch(false);\n }}\n onKeyPress={(e) => {\n if (e.key === 'Enter') {\n handleSearch();\n }\n }}\n />\n \n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n tourOpenSearch: state.tour.openLocationSearch,\n});\n\nexport default connect(mapStateToProps, {})(LocationSearch);\n","import React from 'react';\nimport { timeSliderOptions } from '../../utils/consts';\nimport { TimeSliderOption } from '../../utils/interface';\n\ninterface TimeSliderProps {\n asideOn: boolean;\n curTimeSliderOption: number | null;\n setCurTimeSliderOption: Function | null;\n wmsDateTime: Date | null;\n setWMSDateTime: Function | null;\n};\n\nconst TimeSlider = ({ asideOn, curTimeSliderOption, setCurTimeSliderOption, wmsDateTime, setWMSDateTime }: TimeSliderProps) => {\n\n const set7DaysOR1YearDateTime = (daysBack: number) => {\n if (setWMSDateTime) {\n const date = new Date();\n date.setDate(date.getDate() - daysBack);\n setWMSDateTime(date.toISOString());\n }\n }\n\n const setDateTime = (id: number) => {\n switch (id) {\n case 0:\n if (wmsDateTime && setWMSDateTime) setWMSDateTime(null);\n break;\n case 1:\n setWMSDateTime!(new Date().toISOString());\n break;\n // case 2:\n // set7DaysOR1YearDateTime(90);\n // break;\n case 2:\n if (wmsDateTime && setWMSDateTime) setWMSDateTime(null);\n break;\n default:\n setWMSDateTime!(new Date().toISOString);\n }\n }\n\n const changeTimeSliderOption = (id: number) => {\n if (id !== curTimeSliderOption && setCurTimeSliderOption && setWMSDateTime) {\n setCurTimeSliderOption(id);\n setDateTime(id);\n };\n };\n\n const extractTimeSliderOptions = () => {\n return timeSliderOptions.map((o: TimeSliderOption) => {\n return (\n
    { changeTimeSliderOption(o.id) }}>\n \n \n \n {o.text}\n
    \n );\n })\n }\n\n return
    \n {extractTimeSliderOptions()}\n
    \n};\n\nexport default TimeSlider;","// Package Imports\nimport React, { useState, useRef, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useLocation } from 'react-router-dom';\nimport {\n DateTimePicker,\n} from '@material-ui/pickers';\n\n// Hooks\nimport { useTranslation } from 'react-i18next';\nimport useOutsideClick from '../../hooks/useOutsideClick';\n\n// Action Imports\nimport {\n setSelectedFilters,\n mappAirFilters,\n} from '../../actions/mappAirFilters';\nimport {\n showAQMALayer,\n showOverlayLayer,\n showSatelliteLayer,\n showOSMLayer,\n showSchoolsLayer,\n showSmokeControlZones,\n showAALayer,\n setAnnualAverage,\n} from '../../actions/layers';\n\n// Component Imports\nimport LocationSearch from './LocationSearch';\n\n// Util Imports\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n\n// Const Imports\nimport { gtmEventIdentifiers, annualAveragesArr } from '../../utils/consts';\n\n// Type Imports\nimport { UserInfo, ReduxState, YearObj } from '../../utils/interface';\n\n// Asset Imports\nimport layers from '../../assets/images/layers.png';\nimport mapairLayer from '../../assets/images/mappair-layer-with-black-icon.png';\nimport aqmaLayer from '../../assets/images/layer-aqma.png';\nimport schoolsLayer from '../../assets/images/layer-schools.png';\nimport osmLayer from '../../assets/images/layer-default.png';\nimport defaultLayer from '../../assets/images/layer-grayscale.png';\nimport satelliteLayer from '../../assets/images/layer-satellite.png';\nimport aaLayer from '../../assets/images/annual-averages-with-black-icon.png';\n\nimport airQualityIcon from '../../assets/icons/air_quality_icon.png';\nimport schoolsIcon from '../../assets/icons/schools_icon.png';\nimport realTimeIcon from '../../assets/icons/real_time_icon.png';\nimport annualAvgIcon from '../../assets/icons/annual_averages_icon.png';\nimport smokeControlIcon from '../../assets/icons/smoke-control_icon.png';\n\nimport TimeSlider from './TimeSlider';\nimport { ModularFeatures } from '../../reducers/modularFeatures';\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\nimport { Alert, Snackbar } from '@mui/material';\n\ninterface LocationControlsProps {\n additionalClass?: String;\n asideOn: boolean;\n handleLocationSearch: Function;\n showLocationSearch: boolean;\n userInfo: UserInfo;\n zoom: Function;\n mappAirFilters: Function;\n showOverlayLayer: Function;\n showAQMALayer: Function;\n showSchoolsLayer: Function;\n showSmokeControlZones: Function;\n showSatelliteLayer: Function;\n showOSMLayer: Function;\n mappairOn: boolean;\n satelliteOn: boolean;\n osmOn: boolean;\n aqmaOn: boolean;\n schoolsOn: boolean;\n smokeControlZonesOn: boolean;\n curTimeSliderOption: number | null;\n setCurTimeSliderOption: Function | null;\n wmsDateTime: Date | null;\n setWMSDateTime: Function | null;\n showAALayer: Function;\n annualAveragesOn: boolean;\n setAnnualAverage: Function;\n annualAverage: number | null;\n curOverlayName?: string;\n modularFeatures: ModularFeatures;\n}\n\n// Component Interfaces\ninterface InitState {\n isLayerOpen: boolean;\n isAnnualAvgOptionsOpened: boolean;\n selectedYear: number | null;\n aqiError: boolean;\n}\n\n// Component\nconst LocationControls = ({\n additionalClass,\n asideOn,\n handleLocationSearch,\n showLocationSearch,\n userInfo,\n zoom,\n mappAirFilters,\n showOverlayLayer,\n showAQMALayer,\n showSchoolsLayer,\n showSmokeControlZones,\n showSatelliteLayer,\n showOSMLayer,\n mappairOn,\n satelliteOn,\n osmOn,\n aqmaOn,\n schoolsOn,\n smokeControlZonesOn,\n curTimeSliderOption,\n setCurTimeSliderOption,\n wmsDateTime,\n setWMSDateTime,\n showAALayer,\n annualAveragesOn,\n setAnnualAverage,\n annualAverage,\n curOverlayName,\n modularFeatures,\n}: LocationControlsProps) => {\n const location = useLocation();\n const { t: translate } = useTranslation();\n\n // Consts\n\n const dateTimePickerPositionAsideOn = curTimeSliderOption === 0 ? 333 : 535;\n const dateTimePickerPositionAsideOff = curTimeSliderOption === 0 ? 0 : 202;\n\n // State\n const initState: InitState = {\n isLayerOpen: false,\n isAnnualAvgOptionsOpened: false,\n selectedYear: 2015,\n aqiError: false,\n };\n\n const [isLayerOpen, setLayerOpen] = useState(initState.isLayerOpen);\n const [isAnnualAvgOptionsOpened, setIsAnnualAvgOptionsOpened] = useState(initState.isAnnualAvgOptionsOpened);\n const [selectedYear, setSelectedYear] = useState(initState.selectedYear);\n const [aqiError, setAQIError] = useState(initState.aqiError);\n const [snackbarOpen, setSnackbarOpen] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n const [dateTimePickerOpen, setDateTimePickerOpen] = useState(false);\n\n const ref = useRef(null);\n const aqiErrorModal = useRef(null);\n\n useOutsideClick(ref, (event: any) => {\n if (isLayerOpen && event.target.getAttribute('id') !== 'closeTooltipPath' && event.target.getAttribute('id') !== 'closeTooltipBtn') { setLayerOpen(false); if (aqiError) setAQIError(false); }\n });\n\n const fireToggleAnalyticsEvent = (\n eventIdentifier: string,\n itemStatus: boolean,\n ) => {\n const labelEnrichment = itemStatus ? 'Off' : 'On';\n analyticsEventFirer(eventIdentifier, labelEnrichment);\n };\n\n const closeAnnualAvgModalAndOpenLayer = (event: any) => {\n event.stopPropagation();\n setIsAnnualAvgOptionsOpened(false);\n setLayerOpen(true);\n };\n\n const closeAQIErrorModal = (event: any) => {\n event.stopPropagation();\n setAQIError(false);\n setLayerOpen(true);\n };\n\n const setAAOverlay = (event: any) => {\n if (selectedYear) {\n if (mappairOn) { showOverlayLayer(false); mappAirFilters(false) };\n showAALayer();\n setAnnualAverage(selectedYear);\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.annualAveragesToggle,\n annualAveragesOn,\n );\n closeAnnualAvgModalAndOpenLayer(event)\n }\n };\n\n const calculateMinMaxDates = (min: number, max: number) => {\n const now = new Date();\n\n let minDate: Date = new Date();\n let maxDate: Date = new Date();\n\n if (curTimeSliderOption === 0) {\n minDate = new Date(now);\n minDate.setDate(now.getDate() - min);\n maxDate = new Date(now);\n } else if (curTimeSliderOption === 2) {\n minDate = new Date(now);\n minDate.setHours(0, 0, 0, 0);\n maxDate = new Date(now);\n maxDate.setDate(now.getDate() + max);\n }\n\n return { minDate, maxDate };\n };\n\n const handleDateChange = (newDate: MaterialUiPickersDate) => {\n if (!newDate) return;\n\n const selectedDate = newDate instanceof Date ? newDate : newDate.toDate();\n const isToday = selectedDate.toDateString() === new Date().toDateString();\n const currentTime = new Date();\n\n const isSelectedDateInFuture = selectedDate > currentTime;\n const isSelectedDateInPast = selectedDate < currentTime;\n\n if (curTimeSliderOption === 0 && isToday && isSelectedDateInFuture) {\n setSnackbarMessage(\"You cannot select a time later than the current time today.\");\n setSnackbarOpen(true);\n setDateTimePickerOpen(true);\n return;\n }\n\n if (curTimeSliderOption === 2 && isToday && isSelectedDateInPast) {\n setSnackbarMessage(\"You cannot select a time earlier than the current time today.\");\n setSnackbarOpen(true);\n setDateTimePickerOpen(true);\n return;\n }\n setSnackbarMessage('');\n setSnackbarOpen(false);\n setDateTimePickerOpen(false);\n setWMSDateTime!(selectedDate.toISOString());\n };\n\n const handleSnackbarClose = (\n event: React.SyntheticEvent | Event,\n reason?: string\n ) => {\n if (reason === 'clickaway') {\n return;\n }\n setSnackbarOpen(false);\n };\n\n const handleDatePickerOpen = () => {\n setDateTimePickerOpen(true);\n };\n\n const handleDatePickerClose = () => {\n setDateTimePickerOpen(false);\n };\n\n const handleClickOutsideOrCloseButton = (event: any) => {\n const isOutsideClick = event.target.className === 'MuiDialog-container MuiDialog-scrollPaper';\n const isCancelButton = event.target.className === 'MuiButton-label' && event.target.innerHTML === 'Cancel';\n if (isOutsideClick || isCancelButton) handleDatePickerClose();\n };\n\n return (\n
    \n {!location.pathname.includes('data') &&\n !location.pathname.includes('alerts') &&\n !location.pathname.includes('analytics') ? (\n <>\n {mappairOn &&\n modularFeatures.timeSlider[\n userInfo.isPublic ? 'isPublic' : 'isPrivate'\n ] && (\n
    \n {(curTimeSliderOption === 0 || curTimeSliderOption === 2) && (\n <>\n \n \n )}\n \n \n {snackbarMessage}\n \n \n \n
    \n )}\n
    \n {\n event.stopPropagation();\n setLayerOpen(!isLayerOpen);\n }}\n >\n \n \n\n \n
    \n
    \n
    \n
    \n {!isAnnualAvgOptionsOpened\n ? translate('OverlaysHeader')\n : translate('ChooseYear')}\n
    \n
    \n {\n if (isAnnualAvgOptionsOpened)\n setIsAnnualAvgOptionsOpened(false);\n setLayerOpen(false);\n }}\n type=\"button\"\n >\n \n \n \n \n
    \n
    \n\n {!isAnnualAvgOptionsOpened ? (\n <>\n
    \n
    \n {\n showAQMALayer();\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.aqmaToggle,\n aqmaOn,\n );\n }}\n className={`image-layer ${aqmaOn ? 'selected' : ''\n }`}\n >\n \n
    \n {userInfo.isPublic\n ? translate('OverlaysAQMAContentPublic')\n : translate('OverlaysAQMA')}\n
    \n \n
    \n {modularFeatures.schools[\n userInfo.isPublic ? 'isPublic' : 'isPrivate'\n ] ? (\n
    \n {\n showSchoolsLayer();\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.schoolsToggle,\n schoolsOn,\n );\n }}\n className={`w-100 image-layer ${schoolsOn ? 'selected' : ''}`}\n >\n \n
    \n {userInfo.isPublic\n ? translate('OverlaysSchoolsContentPublic')\n : translate('OverlaysSchools')}\n
    \n \n
    \n ) : (\n <>\n )}\n
    \n\n {\n modularFeatures.smokeControlZones[\n userInfo.isPublic ? 'isPublic' : 'isPrivate'\n ] &&
    \n
    \n {\n showSmokeControlZones();\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.smokeControlZonesToggle,\n smokeControlZonesOn,\n );\n }}\n className={`w-100 image-layer ${smokeControlZonesOn ? 'selected' : ''}`}\n >\n \n
    \n {userInfo.isPublic\n ? translate('OverlaysUKSmokeControlZonesPublic')\n : translate('OverlaysUKSmokeControlZones')}\n
    \n \n
    \n
    \n
    \n }\n
    \n
    \n
    \n\n
    \n
    \n {translate('ModelLayers')}\n
    \n
    \n {\n mappAirFilters();\n showOverlayLayer();\n if (annualAveragesOn) showAALayer(false);\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.mappairToggle,\n mappairOn,\n );\n }}\n className={`w-100 image-layer ${mappairOn ? 'selected' : ''\n }`}\n >\n \n
    \n {userInfo.isPublic\n ? translate('OverlaysMappairContentPublic')\n : translate('OverlaysMappair')}\n
    \n \n
    \n {aqiError && (\n
    \n \n No data for AQI. Please choose another pollutant.\n \n
    \n \n \n \n \n \n
    \n
    \n )}\n {modularFeatures.annualAverages[\n userInfo.isPublic ? 'isPublic' : 'isPrivate'\n ] ? (\n
    \n {\n if (curOverlayName?.includes('AQI')) {\n setAQIError(true);\n return;\n }\n if (\n !isAnnualAvgOptionsOpened &&\n !annualAveragesOn\n )\n setIsAnnualAvgOptionsOpened(true);\n else if (annualAveragesOn) showAALayer();\n if (aqiError) setAQIError(false);\n }}\n className={`w-100 image-layer ${annualAveragesOn ? 'selected' : ''\n }`}\n >\n \n
    \n {userInfo.isPublic\n ? translate('OverlaysAAContentPublic')\n : annualAverage && annualAveragesOn\n ? `${translate(\n 'OverlaysAA',\n )} (${annualAverage})`\n : `${translate('OverlaysAA')}`}\n
    \n \n
    \n ) : (\n <>\n )}\n
    \n
    \n
    \n
    \n\n
    \n
    \n {translate('BaseMaps')}\n
    \n\n
    \n {\n // setSelectedFilters([]);\n if (aqmaOn) showAQMALayer();\n if (schoolsOn) showSchoolsLayer();\n if (smokeControlZonesOn) showSmokeControlZones();\n if (satelliteOn) showSatelliteLayer();\n if (osmOn) showOSMLayer();\n if (annualAveragesOn) showAALayer();\n if (mappairOn) {\n mappAirFilters();\n showOverlayLayer();\n }\n\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.allToggle,\n false,\n );\n }}\n className={`image-layer ${!aqmaOn &&\n !mappairOn &&\n !satelliteOn &&\n !osmOn &&\n !schoolsOn &&\n !smokeControlZonesOn &&\n !annualAveragesOn\n ? 'selected'\n : ''\n }`}\n >\n \n
    \n {' '}\n {userInfo.isPublic\n ? translate('OverlaysDefaultContentPublic')\n : translate('OverlaysDefault')}\n
    \n \n
    \n
    \n {\n showSatelliteLayer();\n if (osmOn) showOSMLayer();\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.satelliteToggle,\n satelliteOn,\n );\n }}\n className={`w-100 image-layer ${satelliteOn ? 'selected' : ''\n }`}\n >\n \n
    \n {translate('OverlaysSatellite')}\n
    \n \n
    \n
    \n
    \n
    \n {\n showOSMLayer();\n if (satelliteOn) showSatelliteLayer();\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers.osmToggle,\n osmOn,\n );\n }}\n className={`image-layer ${osmOn && !satelliteOn ? 'selected' : ''\n }`}\n >\n \n
    \n {translate('OverlaysOSM')}\n
    \n \n
    \n
    \n \n ) : (\n <>\n
    \n
    \n {annualAveragesArr.map((a: YearObj, idx: number) => (\n \n {a.value}\n {\n setSelectedYear(parseInt(event.target.value));\n }}\n />\n \n \n ))}\n
    \n
    \n
    \n \n Select\n \n {\n if (isAnnualAvgOptionsOpened) {\n closeAnnualAvgModalAndOpenLayer(event);\n }\n }}\n >\n Cancel\n \n
    \n \n )}\n
    \n
    \n
    \n
    \n \n ) : (\n <>\n )}\n\n \n
    \n zoom(true)}\n type=\"button\"\n className=\"zoom-in\"\n />\n
    \n\n
    \n zoom(false)}\n type=\"button\"\n className=\"zoom-out\"\n />\n
    \n\n \n
    \n
    \n );\n};\n\n// Default Props\nLocationControls.defaultProps = {\n additionalClass: '',\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n aqmaOn: state.showAQMALayer.showAQMALayer,\n schoolsOn: state.showAQMALayer.showSchoolsLayer,\n smokeControlZonesOn: state.showAQMALayer.showSmokeControlZones,\n mappairOn: state.showAQMALayer.showOverlayLayer,\n tourFilterOpen: state.tour.openAsideFilter,\n satelliteOn: state.showAQMALayer.showSatelliteLayer,\n osmOn: state.showAQMALayer.showOSM,\n selectedFilters: state.mappAirFilters.selectedFilters,\n annualAveragesOn: state.showAQMALayer.showAALayer,\n annualAverage: state.showAQMALayer.annualAverage,\n modularFeatures: state.modularFeatures\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n mappAirFilters,\n setSelectedFilters,\n showAQMALayer,\n showSchoolsLayer,\n showSmokeControlZones,\n showOverlayLayer,\n showSatelliteLayer,\n showOSMLayer,\n showAALayer,\n setAnnualAverage,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LocationControls);\n\n","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Const Imports\nimport {\n mapboxCRLink,\n maxarCRLink,\n mapboxImproveLink,\n naeiCRLink,\n osmCRLink,\n publicCRLink,\n maptilerCRLink,\n} from '../../utils/consts';\n\n// Asset Imports\n// import mapboxLogo from '../../assets/images/mapbox-logo-white.png';\n\n// Type Imports\nimport {\n Overlay as OverlayType,\n ShowAQMALayer,\n UserInfo,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface LocationLincensingProps {\n asideOn: boolean;\n curOverlayName: string;\n mappairOptions: ShowAQMALayer;\n overlays: OverlayType[];\n userInfo: UserInfo;\n}\n\nconst LocationLicensing = ({\n asideOn,\n curOverlayName,\n mappairOptions,\n overlays,\n userInfo,\n}: LocationLincensingProps) => {\n const { t: translate } = useTranslation();\n\n return (\n <>\n {!userInfo.isPublic ? (\n
    \n
    \n {osmCRLink.precedingContent}{' '}\n \n {translate('osmCRLink')}, {' '}\n \n <>\n {maptilerCRLink.precedingContent}{' '}\n \n {translate('maptilerCRLink').split('|')[0]}\n \n , {osmCRLink.precedingContent}{' '}\n \n {' '}\n {translate('maptilerCRLink').split('|')[1]}\n \n \n {overlays.filter((ol) => ol.name === curOverlayName).length &&\n overlays.filter((ol) => ol.name === curOverlayName)[0]\n .isSAOverlay ? (\n <>\n , {naeiCRLink.precedingContent}{' '}\n \n {translate('naeiCRLink')}\n \n \n ) : (\n <>\n )}\n {mappairOptions.showOverlayLayer ? (\n <>\n ,{' '}\n \n {publicCRLink.content}\n \n \n ) : (\n <>\n )}\n
    \n
    \n ) : (\n <>\n )}\n\n {/* {mappairOptions.showSatelliteLayer ? (\n \n ) : (\n <>\n )} */}\n \n );\n};\n\nexport default LocationLicensing;\n","// Package Imports\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Util Imports\nimport { overlayUnitFinder } from '../../utils/functions/overlayUnitFinder';\n\n// Type Imports\nimport {\n DisplayConfig,\n Overlay,\n PointValues,\n ShowAQMALayer,\n UserInfo,\n VZephyrsConfig,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface LocationPopoverProps {\n closePopup: Function;\n setZephyrModalOpen: Function;\n displayConfig: DisplayConfig;\n mappairOptions: ShowAQMALayer;\n overlay: Overlay;\n points: PointValues | null;\n userInfo: UserInfo;\n vZephyrsConfig: VZephyrsConfig;\n}\n\n// Component\nconst LocationPopover = ({\n closePopup,\n displayConfig,\n mappairOptions,\n overlay,\n points,\n userInfo,\n setZephyrModalOpen,\n vZephyrsConfig,\n}: LocationPopoverProps) => {\n const { t: translate } = useTranslation();\n\n // Functions\n const hdmsSplitter = (hdms: string) => {\n if (hdms) {\n const hdmsWithDelimiter = hdms.replace(/N/g, 'N,');\n const hdmsArr = hdmsWithDelimiter.split(',');\n return hdmsArr;\n }\n return '';\n };\n\n return (\n
    \n {points && points.value !== null ? (\n \n
    \n
    \n \n
    \n {points.value >= 0 ? points.value : 'NA'}\n
    \n {points.value >= 0 ? (\n
    \n {overlayUnitFinder(displayConfig, overlay)}\n
    \n ) : (\n <>\n )}\n
    \n
    \n\n
    \n
    \n
    {hdmsSplitter(points.hdms)[0]}
    \n
    {hdmsSplitter(points.hdms)[1]}
    \n
    \n\n {vZephyrsConfig.active !== undefined && !userInfo.isPublic ? (\n setZephyrModalOpen(true)}\n type=\"button\"\n disabled={\n vZephyrsConfig.active >= vZephyrsConfig.max &&\n vZephyrsConfig.new30Days >= vZephyrsConfig.new30DaysMax\n }\n >\n {translate('popoverCTAText')}\n \n ) : null}\n
    \n\n closePopup(e)}\n type=\"button\"\n >\n \n \n \n \n
    \n
    \n ) : (\n <>\n )}\n \n );\n};\n\nexport default LocationPopover;\n","// Asset Imports\nimport { defaultModelUnit } from '../consts';\n\n// Type Imports\nimport { DisplayConfig, Overlay } from '../interface';\n\nconst overlayUnitFinder = (displayConfig: DisplayConfig, overlay: Overlay) => {\n let unit = defaultModelUnit;\n if (overlay) {\n if (overlay.isSAOverlay) {\n unit = displayConfig.sources[0].HTMLExposedUnitLabel;\n } else {\n displayConfig.tabs.forEach((tab) =>\n tab.species.forEach((species) => {\n if (species.label === overlay.speciesIdentifier) {\n unit = species.HTMLExposedUnitLabel;\n }\n }),\n );\n }\n }\n return unit;\n};\n\nexport { overlayUnitFinder };\n","// Type Imports\nimport { VZephyrsConfig, Zephyr, ZephyrTypes } from '../interface';\n\nconst getUnitTypeCountTxt = (\n unitList: Zephyr[],\n unitType: number,\n vZephyrsConfig: VZephyrsConfig,\n) => {\n const { length } = unitList.filter((z: Zephyr) => z.type === unitType);\n let max = 0;\n if (unitType === ZephyrTypes.virtual) {\n max = vZephyrsConfig.max;\n }\n\n return length;\n // if (!max) return length;\n // return `${length}/${max}`;\n};\n\nexport { getUnitTypeCountTxt };\n","// Package Imports\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useTranslation } from 'react-i18next';\n\n// Type Imports\nimport { Zephyr, VZephyrsConfig, ReduxState } from '../../utils/interface';\nimport utilsRequest from '../../utils/request';\n\nimport { addZephyrs } from '../../actions/zephyrs';\nimport { getUnitTypeCountTxt } from '../../utils/functions/vZephyr';\nimport { setContactModalOn } from '../../actions/modal';\n// Component Interfaces\ninterface addZephyrModalProps {\n setZephyrModalOpen: Function;\n closePopup: Function;\n points: any;\n addZephyrs: Function;\n getUserVirtualZephyrs: Function;\n unitList: Zephyr[];\n vZephyrsConfig: VZephyrsConfig;\n setContactModalOn: Function;\n bearerToken: string | null;\n dndPoints: any;\n setDndPoints: React.Dispatch;\n}\n\nexport interface AddZephyrForm {\n name: string;\n}\n\n// Component\nconst AddZephyrModal = ({\n setZephyrModalOpen,\n closePopup,\n points,\n addZephyrs,\n unitList,\n getUserVirtualZephyrs,\n vZephyrsConfig,\n setContactModalOn,\n bearerToken,\n dndPoints,\n setDndPoints,\n}: addZephyrModalProps) => {\n const { t: translate } = useTranslation();\n\n const [name, setName] = useState('');\n const [invalidZephyrName, setInvalidZephyrName] = useState(false);\n const limitReached =\n vZephyrsConfig.active >= vZephyrsConfig.max &&\n vZephyrsConfig.new30Days >= vZephyrsConfig.new30DaysMax;\n const handleSubmit = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n\n if (!name) {\n setInvalidZephyrName(true);\n return;\n }\n if (name) {\n const { coordinates } = dndPoints ?? points;\n const res = await utilsRequest.addVZephyr(\n name,\n name,\n coordinates[1],\n coordinates[0],\n bearerToken,\n );\n\n if (res) {\n const virtualZephyrs = await getUserVirtualZephyrs(\n localStorage.getItem('isPublic'),\n );\n const vZephyrToAdd = virtualZephyrs.find(\n (vz: Zephyr) =>\n vz.name === name &&\n vz.latitude === coordinates[1] &&\n vz.longitude === coordinates[0],\n );\n\n if (virtualZephyrs && vZephyrToAdd) {\n addZephyrs([vZephyrToAdd]);\n }\n setDndPoints(null);\n setZephyrModalOpen(false);\n closePopup(true);\n }\n }\n };\n\n const hdmsSplitter = (hdms: string) => {\n if (hdms) {\n const hdmsWithDelimiter = hdms.replace(/N/g, 'N,');\n const hdmsArr = hdmsWithDelimiter.split(',');\n return hdmsArr;\n }\n return '';\n };\n\n const vZephyrsTitle = () => {\n let title = '';\n if (limitReached) {\n title = `${translate('maxReachPrefix')} ${vZephyrsConfig.max} ${translate(\n 'totalPostfix',\n )}`;\n return (\n <>\n

    {title}

    \n

    {translate('limitReachedSubtitle')}

    \n \n );\n }\n\n title = `${translate('totalPrefix')} ${getUnitTypeCountTxt(\n unitList,\n 100,\n vZephyrsConfig,\n )} ${translate('totalPostfix')}`;\n return

    {title}

    ;\n };\n\n return (\n
    \n {setZephyrModalOpen(false); dndPoints && setDndPoints(null)}}\n type=\"button\"\n >\n \n \n \n \n

    {translate('headerText')}

    \n
    handleSubmit(e)}>\n
    \n
    {vZephyrsTitle()}
    \n {limitReached ? null : (\n <>\n
    \n
    \n \n
    \n
    \n\n
    \n
    \n
    {hdmsSplitter(dndPoints ? dndPoints.hdms : points?.hdms)[0]}
    \n
    {hdmsSplitter(dndPoints ? dndPoints.hdms : points?.hdms)[1]}
    \n
    \n
    \n \n )}\n\n
    \n setZephyrModalOpen(false)}\n >\n {translate('secondaryCta')}\n \n\n {limitReached ? (\n {\n setZephyrModalOpen(false);\n closePopup(true);\n setContactModalOn();\n }}\n >\n {translate('contactUsCtaTxt')}\n \n ) : (\n {\n handleSubmit(e);\n }}\n >\n {translate('primaryCta1')}\n \n )}\n
    \n
    \n
    \n
    \n );\n};\n\n// Redux\n\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n addZephyrs,\n setContactModalOn,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AddZephyrModal);\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport { SET_ANNUAL_AVERAGES } from './types';\n\n// Action Creators\nexport const setAnnualAverages = (analytics: string) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ANNUAL_AVERAGES,\n payload: analytics,\n });\n};\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport { SET_MAPPAIR_POINT_VALUE_HISTORY } from './types';\n\n// Action Creators\nexport const setMapAirPointValueHistory = (payload: any) => (\n dispatch: Dispatch,\n) => {\n dispatch({\n type: SET_MAPPAIR_POINT_VALUE_HISTORY,\n payload,\n });\n};\n","import React, { useState, useEffect, useRef } from 'react';\n\ntype Props = {\n cursorIconDropped: boolean;\n setCursorIconDropped: Function;\n isCursorIconDuplicationVisible: boolean;\n setIsCursorIconDuplicationVisible: Function;\n initCursorPosition: { x: number, y: number };\n}\n\nconst CursorIcon = ({ cursorIconDropped, setCursorIconDropped, isCursorIconDuplicationVisible, setIsCursorIconDuplicationVisible, initCursorPosition }: Props) => {\n const [cursorPosition, setCursorPosition] = useState({ x: 0, y: 0 });\n const [initialOffset, setInitialOffset] = useState({ x: 0, y: 0 });\n const handleMouseMove = useRef(null);\n\n useEffect(() => {\n setCursorPosition(initCursorPosition);\n }, [initCursorPosition]);\n\n useEffect(() => {\n if (cursorIconDropped) {\n window.removeEventListener('mousemove', handleMouseMove.current);\n return;\n }\n\n handleMouseMove.current = (event: MouseEvent) => {\n setCursorPosition({ x: event.clientX, y: event.clientY });\n };\n\n window.addEventListener('mousemove', handleMouseMove.current);\n\n return () => window.removeEventListener('mousemove', handleMouseMove.current);\n }, [cursorIconDropped]);\n\n const handleIconClick = (event: React.MouseEvent) => {\n setCursorIconDropped(false);\n setIsCursorIconDuplicationVisible(true);\n setInitialOffset({ x: event.clientX, y: event.clientY });\n setCursorPosition({ x: event.clientX, y: event.clientY });\n };\n\n const iconStyle: React.CSSProperties = !cursorIconDropped\n ? {\n position: 'fixed',\n top: cursorPosition.y - initialOffset.y - 51,\n left: cursorPosition.x - initialOffset.x - 30,\n pointerEvents: 'none',\n }\n : {\n position: 'fixed',\n top: -51,\n left: -30,\n cursor: 'pointer',\n };\n\n const duplicationStyle: React.CSSProperties = {\n position: 'fixed',\n top: cursorPosition.y - 51,\n left: cursorPosition.x - 30,\n pointerEvents: 'none',\n display: isCursorIconDuplicationVisible ? 'block' : 'none',\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 \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 CursorIcon;\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Types Imports\nimport { SET_VZ_ICON_CLICKED, SET_CURSOR_ICON_DROPPED, SET_ADD_VZ_SETTINGS, SET_VZ_NAME, SET_VZ_CREATION_MENU, SET_INIT_CURSOR_POSITION } from './types';\n\n// Action Creators\nexport const setVZIconClicked = (bool: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_VZ_ICON_CLICKED,\n payload: bool,\n });\n};\n\nexport const setCursorIconDropped = (bool: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_CURSOR_ICON_DROPPED,\n payload: bool,\n });\n};\n\nexport const setAddVZSettings = (payload: { lat: string, lon: string, locationName: string } | null) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ADD_VZ_SETTINGS,\n payload,\n });\n};\n\nexport const setVZName = (str: string) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_VZ_NAME,\n payload: str,\n });\n};\n\nexport const setVZCreationMenu = (bool: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_VZ_CREATION_MENU,\n payload: bool,\n });\n};\n\nexport const setInitCursorPosition = (payload: { x: number, y: number }) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_INIT_CURSOR_POSITION,\n payload,\n });\n};\n","import React from \"react\";\n\ntype Props = {\n header: string;\n text: string;\n}\n\nconst Instructions = ({ header, text }: Props) => {\n return (\n
    \n

    {header}

    \n

    {text}

    \n
    \n );\n};\n\nexport default Instructions;","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\n// OL Imports\nimport {\n containsXY,\n applyTransform,\n createEmpty,\n getBottomLeft,\n getBottomRight,\n getTopLeft,\n getTopRight,\n getArea,\n getCenter,\n getSize,\n getCorner,\n getWidth,\n getHeight,\n extend,\n} from 'ol/extent';\n// @ts-ignore\nimport Crop from 'ol-ext/filter/Crop';\nimport Feature from 'ol/Feature';\nimport { fromLonLat, toLonLat } from 'ol/proj';\nimport { Group as LayerGroup } from 'ol/layer';\nimport ImageLayer from 'ol/layer/Image';\nimport ImageWMS from 'ol/source/ImageWMS';\nimport Map from 'ol/Map';\nimport MultiPolygon from 'ol/geom/MultiPolygon';\nimport OSM from 'ol/source/OSM';\nimport Overlay from 'ol/Overlay';\nimport TileLayer from 'ol/layer/Tile';\nimport { toStringHDMS } from 'ol/coordinate';\nimport View from 'ol/View';\nimport WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';\nimport WMTSCapabilities from 'ol/format/WMTSCapabilities';\nimport XYZ from 'ol/source/XYZ';\n\nimport { DragPan, MouseWheelZoom, defaults } from 'ol/interaction';\nimport { platformModifierKeyOnly } from 'ol/events/condition';\n\n// OL Types Imports\nimport BaseLayer from 'ol/layer/Base';\nimport Collection from 'ol/Collection';\nimport ImageTile from 'ol/ImageTile';\nimport MapBrowserEvent from 'ol/MapBrowserEvent';\nimport Tile from 'ol/Tile';\n\n// Component Imports\nimport TileGrid from 'ol/tilegrid/TileGrid';\nimport axios from 'axios';\nimport AQIIndex from '../view_components/AQIIndex';\nimport LatestMeasurementsPublic from '../view_components/LatestMeasurementsPublic';\nimport LocationControls from '../view_components/LocationControls';\nimport LocationLicensing from '../view_components/LocationLicensing';\nimport LocationMarkerList from '../view_components/LocationMarkerList';\nimport LocationPopover from '../view_components/LocationPopover';\nimport AddZephyrModal from '../view_components/AddZephyrModal';\nimport Spinner from '../shared_components/Spinner';\nimport Modal from '../shared_components/Modal';\n\n// Action Imports\nimport {\n checkLocation,\n mapsLocationLoaded,\n setLocation,\n} from '../../actions/locations';\n\nimport { setAnnualAverages } from '../../actions/annualAverage';\nimport { setMapAirPointValueHistory } from '../../actions/mapAirPointValueHistory';\nimport { setAnnualAverage } from '../../actions/layers';\n\n// Util Imports\nimport { getAuth } from '../../utils/functions/getAuth';\nimport utilsRequest from '../../utils/request';\nimport { dateFinder } from '../../utils/functions/dateFinder';\nimport { colourFinder } from '../../utils/functions/colourFinder';\nimport { wideScreenFinder } from '../../utils/functions/wideScreenFinder';\nimport { tallScreenFinder } from '../../utils/functions/tallScreenFinder';\nimport { mappairSpeciesFinder } from '../../utils/functions/tabFinder';\nimport { pointDataPackager } from '../../utils/functions/saDataPackager';\n\n// Const Imports\nimport {\n APIPaths,\n crs,\n highDefinitionPointsGroup,\n config,\n keys,\n numberYrsHistory,\n AnnualAvgDataInitialState,\n MapAirPointValueHistoryInitialState,\n dimensions,\n mapTilerKey,\n VZInstructionsModal,\n MAPTILER_URL,\n} from '../../utils/consts';\n\n// Type Imports\nimport {\n AnnualAvgData,\n DisplayConfig,\n Loading,\n LocationCoordinates,\n MappAirSelectedFilter,\n Overlay as OverlayType,\n PointValues,\n ReduxState,\n ShowAQMALayer,\n Stylegroup,\n TilingGroup,\n TilingLayer,\n UserInfo,\n Zephyr,\n VZephyrsConfig,\n MapAirPointValueHistoryData,\n LonLatXY,\n tileDimensions,\n // ZephyrTypes,\n} from '../../utils/interface';\nimport Banner from '../shared_components/Banner';\nimport { mappAirFilters } from '../../actions/mappAirFilters';\nimport { i18n } from '../../translations/i18n';\nimport ReactGridLayout from '../view_components/ReactGridLayout/ReactGridLayout';\nimport { Alert, IconButton } from '@mui/material';\nimport CursorIcon from '../view_components/AddVZephyr/CursorIcon';\nimport { setAddVZSettings, setCursorIconDropped, setVZCreationMenu } from '../../actions/addVZephyrs';\nimport Instructions from '../view_components/AddVZephyr/Instructions';\n\n// Component Interfaces\ninterface InitState {\n cancelPopup: boolean;\n map: Map | null;\n mapLoading: boolean;\n points: PointValues | null;\n pointsLoading: boolean;\n zephyrModalOpen: boolean;\n curTimeSliderOption: number | null;\n wmsDateTime: Date | null;\n}\n\ninterface LocationProps {\n asideOn: boolean;\n curOverlayName: string;\n curZephyr: Zephyr;\n displayConfig: DisplayConfig;\n loading: Loading;\n // Need to fix this for the initial coords Type \"Coordinate\"\n // location: LocationCoordinates;\n location: any;\n mapsLocationLoaded: Function;\n mappairOptions: ShowAQMALayer;\n overlays: OverlayType[];\n setLocation: Function;\n startingZoom: number;\n stylegroups: Stylegroup[];\n threshold: string;\n tourClick: boolean;\n unitFilters: MappAirSelectedFilter[];\n unitList: Zephyr[];\n userInfo: UserInfo;\n annualAvgData: AnnualAvgData;\n setAnnualAverages: Function;\n mapAirPointValueHistory: MapAirPointValueHistoryData;\n setMapAirPointValueHistory: Function;\n getUserVirtualZephyrs: Function;\n vZephyrsConfig: VZephyrsConfig;\n isBannerShowing: boolean;\n isModalOpened: boolean;\n setIsModalOpened: Function;\n bannerValue: string[];\n startDate: Date;\n endDate: Date;\n setAnnualAverage: Function;\n annualAverage: number | null;\n curOpacity: any;\n bearerToken: string | null;\n annualAveragesOn: boolean;\n addVZIconClicked: boolean;\n cursorIconDropped: boolean;\n setCursorIconDropped: Function;\n setAddVZSettings: Function;\n setVZCreationMenu: Function;\n initCursorPosition: { x: number, y: number };\n}\n\nconst mappairOlArr: any = [];\nconst annualAveragesOlArr: any = [];\n\n// Component\nconst Location = ({\n asideOn,\n curOverlayName,\n curZephyr,\n displayConfig,\n loading,\n location,\n mapsLocationLoaded,\n mappairOptions,\n overlays,\n setLocation,\n startingZoom,\n stylegroups,\n threshold,\n tourClick,\n unitFilters,\n unitList,\n userInfo,\n annualAvgData,\n setAnnualAverages,\n mapAirPointValueHistory,\n setMapAirPointValueHistory,\n getUserVirtualZephyrs,\n vZephyrsConfig,\n isBannerShowing,\n isModalOpened,\n setIsModalOpened,\n bannerValue,\n startDate,\n endDate,\n setAnnualAverage,\n annualAverage,\n curOpacity,\n bearerToken,\n annualAveragesOn,\n addVZIconClicked,\n cursorIconDropped,\n setCursorIconDropped,\n setAddVZSettings,\n setVZCreationMenu,\n initCursorPosition,\n}: LocationProps) => {\n const initState: InitState = {\n cancelPopup: false,\n map: null,\n mapLoading: false,\n points: null,\n pointsLoading: false,\n zephyrModalOpen: false,\n curTimeSliderOption: 1,\n wmsDateTime: null,\n };\n\n // State\n const [cancelPopup, setCancelPopup] = useState(initState.cancelPopup);\n const [map, setMap] = useState(initState.map);\n const [mapLoading, setMapLoading] = useState(initState.mapLoading);\n const [points, setPoints] = useState(initState.points);\n const [pointsLoading, setPointsLoading] = useState(initState.pointsLoading);\n const [zephyrModalOpen, setZephyrModalOpen] = useState(\n initState.zephyrModalOpen,\n );\n const [curTimeSliderOption, setCurTimeSliderOption] = useState(\n initState.curTimeSliderOption,\n );\n const [wmsDateTime, setWMSDateTime] = useState(initState.wmsDateTime);\n const [dndPoints, setDndPoints] = useState(null);\n\n // Refs\n const mapElement = useRef(null);\n const mapRef = useRef(null);\n mapRef.current = map;\n\n const thresholdRef = useRef(null);\n thresholdRef.current = threshold;\n\n const mappairOptionsRef = useRef(null);\n mappairOptionsRef.current = mappairOptions;\n\n const cancelPopupRef = useRef(null);\n cancelPopupRef.current = cancelPopup;\n const [isCursorIconDuplicationVisible, setIsCursorIconDuplicationVisible] = useState(false);\n\n useEffect(() => {\n if (!addVZIconClicked) {\n setIsCursorIconDuplicationVisible(false);\n setCursorIconDropped(false);\n map?.removeOverlay(map?.getOverlayById(\"cursorIcon\"));\n }\n }, [addVZIconClicked, cursorIconDropped]);\n\n useEffect(() => {\n const curDate = new Date();\n if (\n !sessionStorage.getItem('locationRefreshed') &&\n curDate >= startDate &&\n curDate <= endDate\n )\n sessionStorage.setItem('locationRefreshed', 'false');\n }, []);\n\n useEffect(() => {\n window.addEventListener('beforeunload', () => {\n if (\n sessionStorage.getItem('locationRefreshed') &&\n sessionStorage.getItem('locationRefreshed') === 'false'\n )\n sessionStorage.setItem('locationRefreshed', 'true');\n });\n return () => {\n window.removeEventListener('beforeunload', () => {\n if (\n sessionStorage.getItem('locationRefreshed') &&\n sessionStorage.getItem('locationRefreshed') === 'false'\n )\n sessionStorage.setItem('locationRefreshed', 'true');\n });\n };\n }, []);\n\n useEffect(() => {\n const mapExtent: any = userInfo.isPublic\n ? [\n ...fromLonLat([userInfo.minLng, userInfo.minLat]),\n ...fromLonLat([userInfo.maxLng, userInfo.maxLat]),\n ]\n : [...fromLonLat([-180, -90]), ...fromLonLat([180, 90])];\n\n const popoverRef = 'popup';\n const popoverElement = document.getElementById(popoverRef) as HTMLElement;\n const popover = new Overlay({\n id: 'popup-container',\n element: popoverElement,\n stopEvent: true,\n autoPan: true,\n autoPanAnimation: {\n duration: 250,\n },\n });\n\n const initMap = new Map({\n target: mapElement.current || '',\n interactions:\n !wideScreenFinder(800) || !tallScreenFinder(500)\n ? defaults({\n dragPan: false,\n mouseWheelZoom: false,\n pinchRotate: false,\n }).extend([\n new DragPan({\n condition(event) {\n return (\n this.getPointerCount() === 2 ||\n platformModifierKeyOnly(event)\n );\n },\n }),\n new MouseWheelZoom({\n condition: platformModifierKeyOnly,\n }),\n ])\n : undefined,\n layers: [\n new TileLayer({\n preload: Infinity,\n source: new XYZ({\n url: MAPTILER_URL,\n wrapX: false,\n }),\n zIndex: 0,\n }),\n ],\n overlays: [popover],\n view: new View({\n center: fromLonLat(location),\n zoom: startingZoom || 10,\n extent: mapExtent,\n }),\n });\n setMap(initMap);\n }, []);\n\n useEffect(() => {\n if (map) {\n map.on('singleclick', handleMapClick);\n\n return () => {\n if (map) {\n map.un('singleclick', handleMapClick);\n }\n };\n }\n }, [map, addVZIconClicked, cursorIconDropped])\n\n const generateTileLayerByOverlayType = (ol: OverlayType): TileLayer => {\n const { name, species, keyword } = ol;\n const species_string = species;\n const osm = new OSM();\n const tileGrid = osm.getTileGrid();\n const auth = getAuth();\n osm.setTileLoadFunction((imageTile, imageSrc) => {\n dynamicTileLoader(\n imageTile,\n imageSrc,\n tileGrid,\n species_string,\n keyword,\n name,\n auth,\n );\n });\n const newMappairLayer = new TileLayer({\n source: osm,\n opacity: mappairOptions.opacity / 100,\n visible: mappairOptions.showOverlayLayer && curOverlayName === ol.name,\n zIndex: 1,\n });\n const sourceLayer = newMappairLayer.getSource();\n sourceLayer.on('change', () => {\n const curOpacity = mappairOptionsRef.current\n ? mappairOptionsRef.current.opacity / 100\n : mappairOptions.opacity / 100;\n newMappairLayer.setOpacity(curOpacity);\n });\n newMappairLayer.setProperties({ name: ol.name });\n return newMappairLayer;\n };\n\n const generateAATiles = (ol: OverlayType): TileLayer => {\n const { name, species, keyword } = ol;\n const osm = new OSM();\n const tileGrid = osm.getTileGrid();\n const auth = getAuth();\n osm.setTileLoadFunction((imageTile, imageSrc) => {\n dynamicAnnualAveragesTileLoder(\n imageTile,\n imageSrc,\n species,\n keyword,\n tileGrid,\n auth,\n annualAverage,\n name,\n );\n });\n const aaLayer = new TileLayer({\n source: osm,\n visible: mappairOptions.showAALayer && curOverlayName === ol.name,\n zIndex: 1,\n opacity: mappairOptions.opacity / 100,\n });\n return aaLayer;\n };\n\n const imageWMSLoader = (ol: OverlayType): ImageLayer => {\n const newMappairLayer = new ImageLayer({\n source: new ImageWMS({\n url: `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairOverlayImage}`,\n serverType: 'geoserver',\n ratio: 1,\n params: {\n auth: getAuth(),\n overlay: ol.name,\n },\n imageLoadFunction: (image, src) => overlayLoader(image, src),\n }),\n opacity: mappairOptions.opacity / 100,\n visible: mappairOptions.showOverlayLayer && curOverlayName === ol.name,\n zIndex: 1,\n });\n const imageLayerSource = newMappairLayer.getSource();\n imageLayerSource.on('imageloadstart', () => setMapLoading(true));\n imageLayerSource.on('imageloadend', () => {\n setMapLoading(false);\n const curOpacity = mappairOptionsRef.current\n ? mappairOptionsRef.current.opacity / 100\n : mappairOptions.opacity / 100;\n newMappairLayer.setOpacity(curOpacity);\n });\n newMappairLayer.setProperties({ name: ol.name });\n return newMappairLayer;\n };\n\n const refreshTilesState = (olArr: any[]) => {\n if (olArr.length > 0 && map) {\n olArr.forEach((ol: TileLayer | ImageLayer) => {\n ol.setZIndex(0);\n map.removeLayer(ol);\n });\n }\n };\n\n const separateTilings = async (map: Map | null) => {\n if (\n (curTimeSliderOption !== 0 && curTimeSliderOption !== 2) ||\n wmsDateTime\n ) {\n refreshTilesState(mappairOlArr);\n overlays\n .filter((olf) => olf.isMappairOverlay || olf.isSAOverlay)\n .forEach((ol) => {\n const newMappairLayer = !ol.isSAOverlay\n ? generateTileLayerByOverlayType(ol)\n : imageWMSLoader(ol);\n newMappairLayer.setZIndex(1);\n const addedLayerOnMap = map?.addLayer(newMappairLayer);\n mappairOlArr.push(newMappairLayer);\n });\n }\n };\n\n const separatePPTilings = async (map: Map | null) => {\n if (map && userInfo.isPublic && userInfo.mappair) {\n const user = localStorage.getItem('user');\n if (user) {\n refreshTilesState(mappairOlArr);\n const parser = new WMTSCapabilities();\n const caps: Document = await utilsRequest.getCapabilities();\n const result = parser.read(caps);\n overlays\n .filter((olf) => olf.isMappairOverlay || olf.isSAOverlay)\n .forEach((ol) => {\n if (!ol.isSAOverlay) {\n const newMappairLayer = generatePPTileLayerByOverlayType(\n ol,\n result,\n );\n newMappairLayer.setZIndex(0);\n const addedLayerOnMap = map?.addLayer(newMappairLayer);\n mappairOlArr.push(newMappairLayer);\n }\n });\n }\n }\n };\n\n const generatePPTileLayerByOverlayType = (ol: OverlayType, result: any) => {\n const { keyword, name: overlay, species, layername } = ol;\n const options = optionsFromCapabilities(result, {\n layer: layername,\n });\n if (options && options.urls) {\n options.urls[0] = `${config.mappairAPI}imageTiled?`;\n }\n const { minLat, maxLat, minLng, maxLng } = userInfo;\n const layerExtent = [\n ...fromLonLat([minLng, minLat]),\n ...fromLonLat([maxLng, maxLat]),\n ];\n const newMappairLayer = new TileLayer({\n source: new WMTS({\n ...options,\n transition: 0,\n tileLoadFunction: (imageTile, src) =>\n PPTileLoader(imageTile, src, species, keyword, overlay, getAuth()),\n }),\n extent: layerExtent as any,\n opacity: mappairOptions.opacity / 100,\n visible: mappairOptions.showOverlayLayer && curOverlayName === overlay,\n zIndex: 1,\n });\n const sourceLayer = newMappairLayer.getSource();\n sourceLayer.on('change', () => {\n const curOpacity = mappairOptionsRef.current\n ? mappairOptionsRef.current.opacity / 100\n : mappairOptions.opacity / 100;\n newMappairLayer.setOpacity(curOpacity);\n });\n newMappairLayer.setProperties({ name: overlay });\n return newMappairLayer;\n };\n\n const generateAAOverlay = () => {\n const overlayName = curOverlayName.includes('NO2')\n ? 'UK NO2'\n : curOverlayName.includes('PM25')\n ? 'UK PM25'\n : 'UK AQI';\n refreshTilesState(annualAveragesOlArr);\n overlays\n .filter((olf) => olf.isMappairOverlay || olf.isSAOverlay)\n .forEach((ol) => {\n if (!ol.isSAOverlay && ol.name === overlayName) {\n const aaLayer = generateAATiles(ol);\n aaLayer.setProperties({ name: 'aaLayer' });\n aaLayer.setZIndex(1);\n const addedLayerOnMap = map?.addLayer(aaLayer);\n annualAveragesOlArr.push(aaLayer);\n }\n });\n };\n\n useEffect(() => {\n if (overlays.length && map && mappairOptionsRef.current) {\n // Case for standard WMS layers\n (async () => {\n if (!userInfo.isPublic) await separateTilings(map);\n })();\n }\n }, [map, overlays, curTimeSliderOption, wmsDateTime]);\n\n useEffect(() => {\n if ((overlays.length && map && mappairOptionsRef.current, curOverlayName)) {\n (async () => {\n // in order to avoid calling separatePPTilings everytime we change current overlay, we can create a state object, holding names of all overlays -> {'UK NO2': false} and change to true if separatePPTilings gets accessed\n if (userInfo.isPublic && overlays[0].name === curOverlayName) {\n await separatePPTilings(map);\n }\n })();\n }\n }, [map, overlays, curOverlayName]);\n\n // Show one basemap at a time\n useEffect(() => {\n if (map) {\n const layers = map.getLayers().getArray();\n\n const baseLayer = layers[0];\n if (baseLayer) {\n baseLayer.setVisible(!(mappairOptions.showOSM || mappairOptions.showSatelliteLayer));\n }\n }\n }, [mappairOptions.showOSM, mappairOptions.showSatelliteLayer]);\n\n useEffect(() => {\n if (overlays.length && map && mappairOptionsRef.current) {\n const osmLayer = new TileLayer({\n source: new XYZ({\n url: `${APIPaths.maptiler}openstreetmap/256/{z}/{x}/{y}.jpg?key=${mapTilerKey}`,\n }),\n visible: mappairOptions.showOSM,\n zIndex: 0,\n opacity: 1,\n });\n\n osmLayer.setProperties({ name: 'osmLayer' });\n map.addLayer(osmLayer);\n\n const satLayer = new TileLayer({\n source: new XYZ({\n url: `${APIPaths.maptiler}satellite/256/{z}/{x}/{y}.jpg?key=${mapTilerKey}`,\n }),\n visible: mappairOptions.showSatelliteLayer,\n zIndex: 0,\n opacity: 1,\n });\n satLayer.setProperties({ name: 'satLayer' });\n map.addLayer(satLayer);\n\n // Set AQMA layer (on top)\n const aqmaLayer = new ImageLayer({\n source: new ImageWMS({\n url: `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairAQMAImage}`,\n serverType: 'geoserver',\n ratio: 1,\n params: {\n time: new Date().toISOString(),\n auth: getAuth(),\n },\n }),\n opacity: 0.7,\n visible: mappairOptions.showAQMALayer,\n zIndex: 2,\n });\n aqmaLayer.setProperties({ name: 'aqmaLayer' });\n map.addLayer(aqmaLayer);\n\n const schoolsLayer = new ImageLayer({\n source: new ImageWMS({\n url: `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairSchoolsImage}`,\n serverType: 'geoserver',\n ratio: 1,\n params: {\n auth: getAuth(),\n time: new Date().toISOString(),\n },\n imageLoadFunction: (image, src) => schoolsOverlayLoader(image, src),\n }),\n opacity: 0.7,\n visible: mappairOptions.showSchoolsLayer,\n zIndex: 3,\n });\n schoolsLayer.setProperties({ name: 'schoolsLayer' });\n map.addLayer(schoolsLayer);\n\n const smokeControlZones = new ImageLayer({\n source: new ImageWMS({\n url: `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairSchoolsImage}`,\n serverType: 'geoserver',\n ratio: 1,\n params: {\n auth: getAuth(),\n time: new Date().toISOString(),\n },\n imageLoadFunction: (image, src) => smokeControlZonesOverlayLoader(image, src),\n }),\n opacity: 0.7,\n visible: mappairOptions.showSmokeControlZones,\n zIndex: 3,\n });\n smokeControlZones.setProperties({ name: 'smokeControlZonesLayer' });\n map.addLayer(smokeControlZones);\n }\n }, [map, overlays]);\n\n useEffect(() => {\n if (\n overlays.length &&\n map &&\n mappairOptionsRef.current &&\n mappairOptions.showAALayer &&\n annualAveragesOn\n ) {\n if (!userInfo.isPublic) {\n generateAAOverlay();\n }\n }\n }, [map, overlays, annualAverage, curOverlayName, annualAveragesOn]);\n\n useEffect(() => {\n if (map && unitList.length) {\n // #region find vZephyr to delete\n // // crashing in markerList component\n\n // const dataIds = unitList.map((marker) => String(marker.id_pod));\n\n // const mapIds = map\n // ?.getOverlays()\n // .getArray()\n // .filter((marker) => marker.get('name') === 'marker')\n // .map((marker) => marker.getId());\n\n // const mapUnitList = map.getOverlays().getArray();\n // const vZephyrsIds = unitList\n // .filter((vz) => vz.type === ZephyrTypes.virtual && vz.id_pod)\n // .map((vz) => String(vz.id_pod));\n\n // // find vZephyr from map which are not in data\n // const vZephyrsOverlaysToRemoveFromMap = mapUnitList.filter(\n // (mapUnit: any) =>\n // // eslint-disable-next-line no-underscore-dangle\n // mapUnit.values_.type === ZephyrTypes.virtual &&\n // !vZephyrsIds.includes(mapUnit?.getId()),\n // );\n\n // remove overlay - deleted vZephyr from Map if not exist in data\n // if (vZephyrsOverlaysToRemoveFromMap.length) {\n // vZephyrsOverlaysToRemoveFromMap.forEach((overlay) => {\n // // crashing in markerList component- none of these solotions below are working\n // map.removeOverlay(overlay);\n // overlay.setPosition(undefined);\n // overlay.unset('id');\n\n // const target = overlay.getElement();\n // if (target) target.style.display = 'none';\n\n // if (target) {\n // const parent = target?.parentElement;\n // if (parent) parent.removeChild(target);\n // }\n // const target = document.getElementById('marker') as HTMLElement;\n // if (target) {\n // const parent = target?.parentElement;\n // if (parent) parent.removeChild(target);\n // }\n // });\n // return;\n // }\n // #endregion\n\n unitList.forEach((unit) => {\n if (unit) {\n const unitId = `${unit.id_pod}-${unit.type}`;\n const unitPosition = fromLonLat([\n parseFloat(unit.longitude),\n parseFloat(unit.latitude),\n ]);\n const overlayExists = map\n .getOverlays()\n .getArray()\n .filter((ol: Overlay) => ol.getId() === unitId);\n const unitElement = document.getElementById(unitId) as HTMLElement;\n if (!overlayExists.length) {\n const newUnitOverlay = new Overlay({\n id: unitId,\n element: unitElement,\n position: unitPosition,\n stopEvent: false,\n });\n newUnitOverlay.setProperties({\n type: unit.type,\n name: 'markerLayer',\n id: unitId,\n });\n map.addOverlay(newUnitOverlay);\n }\n }\n });\n }\n }, [map, unitFilters, unitList]);\n\n useEffect(() => {\n if (!mappairOptions.showOverlayLayer || !mappairOptions.showAALayer) {\n setPoints(null);\n setAnnualAverages(AnnualAvgDataInitialState);\n setMapAirPointValueHistory(MapAirPointValueHistoryInitialState);\n }\n }, [mappairOptions.showOverlayLayer, mappairOptions.showAALayer]);\n\n useEffect(() => {\n if (map) {\n if (points && points.coordinates) {\n setPoints({\n ...points,\n colour: '',\n hdRef: null,\n namedLocation: null,\n saValue: null,\n secondaryValue: null,\n value: null,\n valueHistory: null,\n });\n }\n const mapLayers = map.getLayers().getArray();\n mapLayers.forEach((ml: BaseLayer) => {\n const layerProps = ml.getProperties();\n if ('name' in layerProps) {\n const layerName = layerProps.name;\n const visible =\n (curOverlayName === layerName && mappairOptions.showOverlayLayer) ||\n (mappairOptions.showAQMALayer && layerName === 'aqmaLayer') ||\n (mappairOptions.showSatelliteLayer && layerName === 'satLayer') ||\n (mappairOptions.showOSM && layerName === 'osmLayer') ||\n (mappairOptions.showSchoolsLayer && layerName === 'schoolsLayer') ||\n (mappairOptions.showSmokeControlZones && layerName === 'smokeControlZonesLayer') ||\n (mappairOptions.showAALayer && layerName === 'aaLayer');\n ml.setVisible(visible);\n }\n });\n }\n }, [\n map,\n curOverlayName,\n mappairOptions.overlay,\n mappairOptions.showOverlayLayer,\n ]);\n\n useEffect(() => {\n if (map) {\n const mapLayers = map.getLayers().getArray();\n mapLayers.forEach((ml: BaseLayer) => {\n const layerProps = ml.getProperties();\n if ('name' in layerProps) {\n const layerName = layerProps.name;\n if (\n layerName === 'aqmaLayer' ||\n layerName === 'satLayer' ||\n layerName === 'osmLayer' ||\n layerName === 'schoolsLayer' ||\n layerName === 'smokeControlZonesLayer' ||\n layerName === 'aaLayer'\n ) {\n const visible =\n (mappairOptions.showAQMALayer && layerName === 'aqmaLayer') ||\n (mappairOptions.showSchoolsLayer && layerName === 'schoolsLayer') ||\n (mappairOptions.showSmokeControlZones && layerName === 'smokeControlZonesLayer') ||\n (mappairOptions.showAALayer && layerName === 'aaLayer') ||\n (mappairOptions.showSatelliteLayer && layerName === 'satLayer') ||\n (mappairOptions.showOSM && layerName === 'osmLayer');\n ml.setVisible(visible);\n }\n }\n });\n }\n }, [\n map,\n mappairOptions.showAQMALayer,\n mappairOptions.showSatelliteLayer,\n mappairOptions.showSchoolsLayer,\n mappairOptions.showSmokeControlZones,\n mappairOptions.showAALayer,\n mappairOptions.showOSM\n ]);\n\n useEffect(() => {\n if (map) {\n const mapLayers = map.getLayers().getArray();\n mapLayers.forEach((ml: BaseLayer) => {\n const layerProps = ml.getProperties();\n if ('name' in layerProps) {\n const layerName = layerProps.name;\n if (\n layerName !== 'aqmaLayer' &&\n layerName !== 'satLayer' &&\n layerName !== 'osmLayer' &&\n layerName !== 'schoolsLayer' &&\n layerName !== 'smokeControlZonesLayer'\n ) {\n const updatedOpacity = mappairOptions.opacity / 100;\n ml.setOpacity(updatedOpacity);\n }\n }\n });\n }\n }, [map, mappairOptions.opacity]);\n\n useEffect(() => {\n if (map) {\n if (points && points.value) {\n const colour = determineColour(points.value);\n setPoints({ ...points, colour });\n }\n const mapLayers = map.getLayers().getArray();\n mapLayers.forEach((ml: any) => {\n if (ml instanceof LayerGroup) {\n // Todo: Sure this won't work as expected for tiling\n // const subMapLayers = ml.getLayers()\n // subMapLayers.forEach((mnl: Layer) => mnl.getSource().refresh());\n } else if (ml.getSource()) {\n const layerProps = ml.getProperties();\n if ('name' in layerProps) {\n const layerName = layerProps.name;\n if (\n layerName !== 'aqmaLayer' &&\n layerName !== 'satLayer' &&\n layerName !== 'osmLayer' &&\n layerName !== 'schoolsLayer' &&\n layerName !== 'smokeControlZonesLayer'\n ) {\n ml.getSource().refresh();\n }\n }\n }\n });\n }\n }, [threshold]);\n\n useEffect(() => {\n if (!map) return;\n const updatedCenter = fromLonLat(location);\n const view = map.getView();\n view.animate({\n center: updatedCenter,\n zoom: Array.isArray(curZephyr) ? undefined : 15,\n duration: 2000,\n });\n }, [map, location]);\n\n // used for mapair model data\n const getMapAirModelData = async (map: Map, pointsParam: PointValues) => {\n const lat = pointsParam.coordinates[0];\n const lon = pointsParam.coordinates[1];\n // Get value in request\n const curOverlay = overlays.filter((ol) => ol.name === curOverlayName)[0];\n const curMappairOverlay =\n curOverlay?.species === 'aqi' ? 'aqi_uk' : curOverlay?.species;\n const startDate = dateFinder(new Date(), 30, true).toISOString();\n const endDate = dateFinder(new Date(), 3, false).toISOString();\n const dates = { startDT: startDate, endDT: endDate };\n const speciesRef = pointsParam.hdRef || curMappairOverlay;\n const valueHistory =\n (await utilsRequest.getTodayData(\n `${curOverlay?.isSAOverlay ? '' : `${speciesRef},`}windspeed,winddir`,\n [lon, lat],\n 8,\n bearerToken,\n dates,\n )) || [];\n const saValue = null;\n // if (\n // // Horrible hardcoding\n // curOverlay?.name === 'UK PM25' ||\n // curOverlay?.isSAOverlay\n // ) {\n // const mapSize = map.getSize();\n // if (mapSize) {\n // saValue = await utilsRequest.getSAAtPoint(\n // pointsParam.coordinates as any,\n // map.getView().calculateExtent(mapSize),\n // mapSize[0],\n // mapSize[1],\n // lon,\n // lat,\n // );\n // }\n // }\n\n return { saValue, valueHistory };\n };\n\n // used for popover\n useEffect(() => {\n let ignore = false;\n if (\n map &&\n points &&\n points.value === null &&\n (mappairOptions.showOverlayLayer || mappairOptions.showAALayer) &&\n (!addVZIconClicked || cursorIconDropped)\n ) {\n const handleMapClickRequest = async () => {\n const lat = points.coordinates[0];\n const lon = points.coordinates[1];\n const user = localStorage.getItem('user');\n // Get value in request\n const curOverlay = overlays.filter(\n (ol) => ol.name === curOverlayName,\n )[0];\n const curMappairOverlay =\n curOverlay?.species === 'aqi' ? 'aqi_uk' : curOverlay?.species;\n // TODO: All of this should be handled by backend\n let hdValue = null;\n let hdRef = null;\n let pointValue = null;\n let secondaryPointValue = null;\n let namedLocation = null;\n const availableHighDefLayers = highDefinitionPointsGroup.filter(\n (hdm) =>\n hdm.users.includes(user as string) &&\n hdm.layers.filter((hdmo) => hdmo.curOverlay === curOverlay?.name)\n .length,\n );\n if (availableHighDefLayers.length) {\n const highDefOverlayConfig = availableHighDefLayers[0].layers.filter(\n (ahdl) =>\n ahdl.curOverlay === curOverlay?.name &&\n lat >= ahdl.extent[0][0] &&\n lat <= ahdl.extent[1][0] &&\n lon >= ahdl.extent[0][1] &&\n lon <= ahdl.extent[1][1],\n );\n if (highDefOverlayConfig.length) {\n const highDefConfig = highDefOverlayConfig[0];\n const hdPointvalue = await utilsRequest.getTodayData(\n highDefConfig.highDefRef,\n [lon, lat],\n 3,\n bearerToken,\n { startDT: wmsDateTime || '', endDT: wmsDateTime || '' },\n mappairOptions.showAALayer ? `ukaa${annualAverage}` : curOverlay.keyword,\n );\n hdValue = hdPointvalue\n ? hdPointvalue.results[0].values_coordinates[0]\n .values_timestamps[0].value\n : -999;\n\n if (!pointValue) {\n pointValue = hdPointvalue;\n if (hdValue >= 0) {\n hdRef = highDefConfig.highDefRef;\n }\n }\n }\n }\n\n if (!hdValue) {\n const mapSize = map.getSize();\n const { keyword } = curOverlay;\n if (curOverlay?.isSAOverlay && mapSize) {\n pointValue = await utilsRequest.getValueAtPoint(\n points.pixels as any,\n curOverlayName,\n map.getView().calculateExtent(mapSize) as any,\n mapSize[0],\n mapSize[1],\n wmsDateTime\n ? wmsDateTime.toISOString()\n : new Date().toISOString(),\n crs,\n bearerToken,\n );\n } else {\n pointValue = await utilsRequest.getTodayData(\n curMappairOverlay,\n [lon, lat],\n 3,\n bearerToken,\n { startDT: wmsDateTime || '', endDT: wmsDateTime || '' },\n mappairOptions.showAALayer ? `ukaa${annualAverage}` : keyword,\n );\n const date = wmsDateTime ? new Date(wmsDateTime) : null;\n updatePointTime(date, pointValue);\n }\n }\n\n const value =\n hdValue ||\n (pointValue && pointValue.value !== 'NA'\n ? curOverlay?.isSAOverlay\n ? pointValue.value.toFixed(4)\n : Math.round(\n pointValue.results[0].values_coordinates[0]\n .values_timestamps[0].value,\n )\n : -999);\n\n if (userInfo.isPublic) {\n const namedLocationValue = await utilsRequest.getLocation([lon, lat]);\n namedLocation =\n namedLocationValue.results && namedLocationValue.results.length\n ? namedLocationValue.results\n : null;\n\n // get the low-def aqi value for advice/behaviour\n if (\n userInfo.todaySpecies === 'aqi_uk' &&\n curOverlay?.species !== 'aqi'\n ) {\n secondaryPointValue = await utilsRequest.getTodayData(\n 'aqi_uk',\n [lon, lat],\n 3,\n bearerToken,\n );\n } else {\n secondaryPointValue = pointValue;\n }\n }\n const secondaryValue = secondaryPointValue\n ? Math.round(\n secondaryPointValue.results[0].values_coordinates[0]\n .values_timestamps[0].value,\n )\n : -999;\n\n // add HTML NO2 Advice\n // const no2Values =\n // pointValue.results[0]?.values_coordinates[0]?.values_timestamps;\n\n const colour = determineColour(value);\n if (!ignore) {\n const popover = map\n .getOverlays()\n .getArray()\n .filter((ol: any) => ol.getId() === 'popup-container')[0];\n popover.setPosition(points.position);\n\n const saValue = null;\n const valueHistory = null;\n\n setPoints({\n ...points,\n colour,\n hdRef,\n namedLocation,\n secondaryValue,\n value,\n saValue: saValue || null,\n valueHistory: valueHistory || pointValue,\n });\n }\n };\n handleMapClickRequest();\n }\n // Cancel stale requests\n return () => {\n ignore = true;\n };\n }, [points]);\n\n const updatePointTime = (date: Date | null, pointValue: any) => {\n if (date) {\n const properTime = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;\n const { meta, results } = pointValue;\n const properTimeStampsDate = meta?.timestamps[0].split(' ')[0];\n const finalDate = [properTimeStampsDate, properTime].join(' ');\n meta.timestamps = [finalDate];\n results[0].values_coordinates[0].values_timestamps[0].timestamp = finalDate;\n }\n };\n\n useEffect(() => {\n if (\n map &&\n points &&\n points.value === null &&\n (mappairOptions.showOverlayLayer || mappairOptions.showAALayer)\n ) {\n const handleMapClickGetMapAirPointValueHistory = async () => {\n if (!userInfo.isPublic && points !== null && !cancelPopup) {\n setMapAirPointValueHistory({\n ...mapAirPointValueHistory,\n status: 'loading',\n });\n\n const historyData = await getMapAirModelData(map, points);\n\n if (historyData.valueHistory === null) {\n setMapAirPointValueHistory({\n ...historyData,\n status: 'failed',\n });\n } else {\n setMapAirPointValueHistory({\n ...historyData,\n status: 'succeeded',\n });\n }\n }\n };\n\n handleMapClickGetMapAirPointValueHistory();\n }\n\n return () => {\n // setMapAirPointValueHistory(MapAirPointValueHistoryInitialState);\n };\n }, [points]);\n\n // used for AnnualAvg\n useEffect(() => {\n if (\n map &&\n points &&\n points.value === null &&\n (mappairOptions.showOverlayLayer || mappairOptions.showAALayer)\n ) {\n const handleMapClickGetAnnualAvg = async () => {\n const endDateObj = new Date(new Date().getFullYear(), 0, 1);\n endDateObj.setFullYear(endDateObj.getFullYear() - 1);\n const enddt = endDateObj.toISOString().slice(0, -5);\n\n const startDateObj = new Date(new Date().getFullYear(), 0, 1);\n startDateObj.setFullYear(endDateObj.getFullYear() - numberYrsHistory);\n const startdt = startDateObj.toISOString().slice(0, -5);\n\n const annualAvgRawData = await utilsRequest.getAnnualAvgAtCoords(\n points.coordinates[1],\n points.coordinates[0],\n startdt,\n enddt,\n '1y',\n bearerToken,\n 'no2,pm2p5',\n 'aa',\n );\n\n let selectedOverlay = 'no2';\n if (curOverlayName.includes('PM25')) {\n selectedOverlay = 'pm2p5';\n }\n\n if (annualAvgRawData.results) {\n let speciesWithData = annualAvgRawData.results.find(\n (res: any) =>\n res.species === selectedOverlay ||\n (res.species === selectedOverlay &&\n res.values_coordinates[0].values_timestamps[0].find(\n (val: any) => val.value >= 0,\n )),\n );\n\n const {\n latlon,\n values_timestamps,\n } = speciesWithData.values_coordinates[0];\n speciesWithData = {\n species: speciesWithData.species,\n units: values_timestamps[0].units,\n latlon,\n values_timestamps,\n };\n const curSpecies = mappairSpeciesFinder(\n curOverlayName,\n displayConfig,\n overlays,\n );\n\n const annualAvgChartData = pointDataPackager(\n annualAvgRawData,\n curSpecies,\n true,\n );\n\n setAnnualAverages({\n list: speciesWithData || null,\n raw: annualAvgRawData || null,\n chart: annualAvgChartData || { labels: [], datasets: [] },\n });\n } else {\n setAnnualAverages(AnnualAvgDataInitialState);\n }\n };\n\n handleMapClickGetAnnualAvg();\n }\n\n return () => {\n // cannot clean up due to data tab needs this data\n // setAnnualAverages(AnnualAvgDataInitialState);\n };\n }, [points, numberYrsHistory]);\n\n useEffect(() => {\n if (map && tourClick) {\n const coordinate = map.getView().getCenter();\n const pixel = map.getPixelFromCoordinate(coordinate as any);\n const evt = {\n type: 'singleclick',\n coordinate,\n pixel,\n };\n map.dispatchEvent(evt as any);\n }\n }, [map, tourClick]);\n\n // Functions\n // https://service.earthsense.co.uk/mappair/api/image?species=no2&keyword=uk&xmin=-0.58&ymin=51.76&xmax=0.67&ymax=52.88\n\n const removeOverlay = (overlayID: string) => {\n const popover = (mapRef.current as Map)\n .getOverlays()\n .getArray()\n .filter((ol: any) => ol.getId() === overlayID)[0];\n popover.setPosition(undefined);\n };\n\n const closePopup = () => {\n removeOverlay('popup-container');\n setCancelPopup(true);\n };\n\n const determineColour = (value: number) => {\n const defaultColour = 'rgba(255, 255, 255, 1)';\n const colour =\n value >= 0\n ? colourFinder(\n overlays.filter((ol) => ol.name === curOverlayName)[0],\n stylegroups,\n threshold,\n 1,\n overlays,\n value,\n 'mappair',\n )\n : defaultColour;\n\n return colour || defaultColour;\n };\n\n const getLayerCuts = (tiledGroup: TilingGroup) => {\n const mapToMultiPolygon = (coordinateSets: any) => {\n const multiPolygonCoordinates: any[] = [];\n coordinateSets.forEach((cs: any) => {\n const [minLon, minLat] = cs[0];\n const [maxLon, maxLat] = cs[1];\n const polygonCoordinate = [\n fromLonLat([minLon, minLat]),\n fromLonLat([maxLon, minLat]),\n fromLonLat([maxLon, maxLat]),\n fromLonLat([minLon, maxLat]),\n fromLonLat([minLon, minLat]),\n ];\n multiPolygonCoordinates.push(polygonCoordinate);\n });\n return [multiPolygonCoordinates];\n };\n\n const layerCuts: any = {};\n const mappedLevels: any = {};\n tiledGroup.layers.forEach((l: TilingLayer) => {\n if (mappedLevels[l.level]) {\n mappedLevels[l.level].push(l);\n } else {\n mappedLevels[l.level] = [l];\n }\n });\n for (const level in mappedLevels) {\n // Only handle for one layer above for now\n const nextLevel = parseInt(level) + 1;\n if (mappedLevels[nextLevel]) {\n const featuresWithExtent = mappedLevels[nextLevel].filter(\n (lf: any) => lf.extent,\n );\n if (featuresWithExtent.length) {\n const featuresToExclude = featuresWithExtent.map(\n (fwe: any) => fwe.extent,\n );\n const multiPolygonCoordinates = mapToMultiPolygon(featuresToExclude);\n mappedLevels[level].forEach((l: any) => {\n layerCuts[l.name] = multiPolygonCoordinates;\n });\n }\n }\n }\n return layerCuts;\n };\n\n const handleLocationSearch = async (locationSearch: string) => {\n if (userInfo.isPublic) {\n const { minLat, minLng, maxLat, maxLng } = userInfo;\n const extent: any = [\n ...fromLonLat([minLng, minLat]),\n ...fromLonLat([maxLng, maxLat]),\n ];\n const searchBias = `${minLat}, ${minLng}|${maxLat}, ${maxLng}`;\n const newLocation = await checkLocation(locationSearch, searchBias);\n const [lng, lat] = fromLonLat([newLocation.lng, newLocation.lat]);\n const inBounds = containsXY(extent, lng, lat);\n if (inBounds) {\n setLocation(locationSearch, searchBias);\n } else {\n return false;\n }\n } else {\n setLocation(locationSearch, 'null');\n }\n return true;\n };\n\n const getPoints = (evt: MapBrowserEvent) => {\n const coordinates = toLonLat(evt.coordinate);\n const hdms = toStringHDMS(coordinates);\n return {\n coordinates: { 0: coordinates[0], 1: coordinates[1] },\n hdms,\n pixels: evt.pixel,\n position: evt.coordinate,\n };\n };\n\n const updateVZSettings = async (evt: MapBrowserEvent) => {\n const pts = getPoints(evt);\n const lat = pts.coordinates[0];\n const lon = pts.coordinates[1];\n const locationName = await utilsRequest.getLocation([lon, lat]);\n const cursorIcon = document.getElementById('cursorIcon');\n if (map && cursorIcon) {\n const newUnitOverlay = new Overlay({\n id: 'cursorIcon',\n element: cursorIcon,\n position: fromLonLat([\n lat, lon\n ]),\n stopEvent: false,\n });\n map.addOverlay(newUnitOverlay)\n setIsCursorIconDuplicationVisible(false);\n setAddVZSettings({ lat, lon, locationName });\n setCursorIconDropped(true);\n setVZCreationMenu(true);\n }\n };\n\n const handleMapClick = (evt: MapBrowserEvent) => {\n removeOverlay('popup-container');\n const target = evt.originalEvent.target as Element | null;\n if (addVZIconClicked && !cursorIconDropped && target && !target.closest(\"#cursorIcon\")) {\n updateVZSettings(evt);\n }\n if (\n mappairOptionsRef.current &&\n (mappairOptionsRef.current.showOverlayLayer ||\n mappairOptionsRef.current.showAALayer) &&\n !cancelPopupRef.current\n ) {\n const coordinates = toLonLat(evt.coordinate);\n const hdms = toStringHDMS(coordinates);\n setPoints({\n coordinates: { 0: coordinates[0], 1: coordinates[1] },\n colour: '',\n hdms,\n hdRef: null,\n namedLocation: null,\n pixels: evt.pixel,\n position: evt.coordinate,\n saValue: null,\n secondaryValue: null,\n value: null,\n valueHistory: null,\n });\n }\n if (cancelPopupRef.current) {\n setPoints(null);\n setCancelPopup(false);\n }\n };\n\n const tileLoader = (\n imageTile: any,\n src: string,\n shroplayer: string,\n auth: string,\n overlay: string,\n ) => {\n imageTile.getImage().src = `${src}&stylegroup=${thresholdRef.current\n }&shroplayer=${shroplayer}&auth=${auth}&overlay=${overlay}&time=${new Date().toISOString()}`;\n };\n\n const PPTileLoader = async (\n imageTile: any,\n src: string,\n species: string,\n keyword: string,\n overlay: string,\n auth: string,\n ) => {\n imageTile.getImage().src = `${src}&keyword=${keyword}&stylegroup=${thresholdRef.current\n }&species=${species}&auth=${auth}&overlay=${overlay}&time=${new Date().toISOString()}`;\n };\n\n const dynamicTileLoader = async (\n imageTile: any,\n src: string,\n tileGrid: TileGrid,\n species: string,\n keyword: string,\n name: string,\n auth: string,\n ) => {\n const { tileCoord } = imageTile;\n const tileCoordExtent = tileGrid.getTileCoordExtent(tileCoord);\n const minMaxXY = tileCoordToLonLat(tileCoordExtent);\n const { xMin, yMin, xMax, yMax } = minMaxXY;\n const { width, height } = dimensions;\n try {\n const response = await axios({\n method: 'get',\n url: `${config.mappairAPI\n }image?species=${species}&keyword=${keyword}&xmin=${xMin}&ymin=${yMin}&xmax=${xMax}&ymax=${yMax}&time=${wmsDateTime || new Date().toISOString()\n }&width=${width}&height=${height}&overlay=${name}&stylegroup=${thresholdRef.current\n }`,\n data: {},\n responseType: 'blob',\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n },\n });\n imageTile.getImage().src = window.URL.createObjectURL(response.data);\n }\n catch (e: any) {\n\n if (process.env.NODE_ENV === 'development') console.warn('Tile loading failed, you are out of mappair area! ', e.message);\n\n imageTile.getImage().src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n\n return;\n }\n };\n\n const dynamicAnnualAveragesTileLoder = (\n imageTile: any,\n src: string,\n species: string,\n keyword: string,\n tileGrid: TileGrid,\n auth: string,\n annualAverage: number | null,\n name: string,\n ) => {\n const dynamicSpecies =\n curOverlayName === 'Zephyr NO2'\n ? 'no2'\n : curOverlayName === 'Zephyr PM25'\n ? 'pm2p5'\n : 'no2';\n const { tileCoord } = imageTile;\n const tileCoordExtent = tileGrid.getTileCoordExtent(tileCoord);\n const minMaxXY = tileCoordToLonLat(tileCoordExtent);\n const { xMin, yMin, xMax, yMax } = minMaxXY;\n const { width, height } = dimensions;\n imageTile.getImage().src = `${config.mappairAPI}image?species=${dynamicSpecies}&keyword=ukaa${annualAverage}&xmin=${xMin}&ymin=${yMin}&xmax=${xMax}&ymax=${yMax}&width=${width}&height=${height}&overlay=${name}&stylegroup=${thresholdRef.current}&auth=${auth}`;\n };\n\n const tileCoordToLonLat = (tileCoordExtent: any): LonLatXY => {\n const minMaxArr = [\n ...toLonLat([tileCoordExtent[0], tileCoordExtent[1]]),\n ...toLonLat([tileCoordExtent[2], tileCoordExtent[3]]),\n ];\n const xMin = minMaxArr[0];\n const yMin = minMaxArr[1];\n const xMax = minMaxArr[2];\n const yMax = minMaxArr[3];\n\n return {\n xMin,\n yMin,\n xMax,\n yMax,\n };\n };\n\n const overlayLoader = (image: any, src: string) => {\n image.getImage().src = `${src}&stylegroup=${thresholdRef.current\n }&time=${new Date().toISOString()}`;\n };\n\n const schoolsOverlayLoader = (image: any, src: string) => {\n if (map) {\n const size = map.getSize();\n const bbox = map.getView().calculateExtent(size);\n const schoolsKeyword = 'schools';\n image.getImage().src = `${src}&CRS=EPSG:3857&WIDTH=${size![0]}&HEIGHT=${size![1]\n }&BBOX=${bbox[0]},${bbox[1]},${bbox[2]},${bbox[3]\n }&keyword=${schoolsKeyword}&transparent=${true}`;\n }\n };\n\n const smokeControlZonesOverlayLoader = (image: any, src: string) => {\n if (map) {\n const size = map.getSize();\n const bbox = map.getView().calculateExtent(size);\n const smokeControlZonesKeyword = 'sczs';\n image.getImage().src = `${src}&CRS=EPSG:3857&WIDTH=${size![0]}&HEIGHT=${size![1]\n }&BBOX=${bbox[0]},${bbox[1]},${bbox[2]},${bbox[3]\n }&keyword=${smokeControlZonesKeyword}&transparent=${true}`;\n }\n };\n\n const zoom = (increase: boolean) => {\n if (map) {\n const mapView = map.getView();\n let currentZoomLevel = mapView.getZoom();\n if (currentZoomLevel) {\n increase ? (currentZoomLevel += 1) : (currentZoomLevel -= 1);\n mapView.setZoom(currentZoomLevel);\n }\n }\n };\n\n // const handleDropVirtualZephyr = async (e: any) => {\n // e.preventDefault();\n\n // if (map) {\n // const pixel = map.getEventPixel(e.nativeEvent);\n\n // // Convert the map pixel to map coordinates -> lat, lon\n // const coordinate = map?.getCoordinateFromPixel(pixel);\n\n // const dynamicMapEvent = {\n // coordinate: coordinate,\n // pixel: pixel,\n // map: map,\n // } as MapBrowserEvent;\n\n // const pts = getPoints(dynamicMapEvent);\n // console.log(pts);\n // // points && setPoints(null);\n // // setDndPoints(pts);\n // // setZephyrModalOpen(true);\n // }\n // }\n\n return (\n
    ) => { e.preventDefault(); }} onDrop={handleDropVirtualZephyr}*/ >\n \n
    \n \n ol.name === curOverlayName)[0]}\n points={points}\n userInfo={userInfo}\n setZephyrModalOpen={setZephyrModalOpen}\n vZephyrsConfig={vZephyrsConfig}\n />\n \n \n \n \n \n }\n />\n \n }\n />\n {addVZIconClicked && }\n {addVZIconClicked && !cursorIconDropped && }\n {addVZIconClicked && cursorIconDropped && }\n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState, ownProps: any) => ({\n asideOn: state.aside.on,\n curOverlayName: state.showAQMALayer.overlay,\n curZephyr: state.setZephyr.zephyr,\n displayConfig: state.setDisplayConfig,\n loading: state.loading,\n location: state.setLocation.location,\n mappairOptions: state.showAQMALayer,\n overlays: state.setOverlays,\n startingZoom: state.auth.userInfo.startingZoom,\n stylegroups: state.getStyleGroups.styleGroups,\n threshold: state.setThresholdTab.tab,\n tourClick: state.tour.clickMap,\n unitFilters: state.mappAirFilters.selectedFilters,\n unitList: state.getZephyrs.zephyrs,\n userInfo: state.auth.userInfo,\n annualAvgData: state.setAnnualAverages,\n mapAirPointValueHistory: state.setMapAirPointValueHistory,\n isBannerShowing: ownProps.isBannerShowing,\n isModalOpened: ownProps.isModalOpened,\n setIsModalOpened: ownProps.setIsModalOpened,\n bannerValue: ownProps.bannerValue,\n startDate: ownProps.startDate,\n endDate: ownProps.endDate,\n annualAverage: state.showAQMALayer.annualAverage,\n curOpacity: state.showAQMALayer.opacity,\n bearerToken: state.auth.bearerToken,\n annualAveragesOn: state.showAQMALayer.showAALayer,\n addVZIconClicked: state.addVZephyrs.addVZIconClicked,\n cursorIconDropped: state.addVZephyrs.cursorIconDropped,\n initCursorPosition: state.addVZephyrs.initCursorPosition,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n mapsLocationLoaded,\n setLocation,\n setAnnualAverages,\n setMapAirPointValueHistory,\n setAnnualAverage,\n setCursorIconDropped,\n setAddVZSettings,\n setVZCreationMenu,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Location);\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport { HashLink } from 'react-router-hash-link';\nimport { connect } from 'react-redux';\nimport parse from 'html-react-parser';\n\n// Hooks\nimport { useHistory, useLocation } from 'react-router-dom';\n\n// Asset Imports\nimport { AirQuality101Content } from '../../utils/consts';\n\n// Type Imports\nimport { ReduxState, UserInfoSection } from '../../utils/interface';\n\n// Type Safety\ninterface AirQuality101Props {\n authorityInfo: UserInfoSection | null;\n handleAQ101Modal: Function;\n sectionId: string;\n standardInfo: UserInfoSection | null;\n}\n\ninterface InitState {\n sectionsInView: string[];\n}\n\n// Component\nconst AirQuality101 = ({\n authorityInfo,\n handleAQ101Modal,\n sectionId,\n standardInfo,\n}: AirQuality101Props) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n sectionsInView: [],\n };\n const [sectionsInView, setSectionsInview] = useState(\n initState.sectionsInView,\n );\n\n // Consts\n const history = useHistory();\n const location = useLocation();\n\n // Effects\n useEffect(() => {\n const startingSection = 'AirQuality';\n const startingSectionsInView = [startingSection];\n setSectionsInview(startingSectionsInView);\n }, []);\n\n useEffect(() => {\n const sectionEl = document.getElementById(sectionId);\n if (sectionEl) {\n sectionEl.scrollIntoView();\n }\n }, [sectionId]);\n\n // Functions\n const checkActiveSection = (section: string) => {\n const numSectionsInView = sectionsInView.length;\n if (\n numSectionsInView &&\n sectionsInView[numSectionsInView - 1] === section\n ) {\n return true;\n }\n return false;\n };\n\n const handleAQ101Close = () => {\n handleAQ101Modal(false);\n history.push(location.pathname);\n };\n\n const updateElementsInView = (e: React.SyntheticEvent) => {\n if (\n standardInfo &&\n standardInfo.sections &&\n authorityInfo &&\n authorityInfo.sections\n ) {\n const updatedSectionsInView: string[] = [];\n const sections = [\n ...standardInfo.sections.map((s) => s.id),\n ...authorityInfo.sections.map((s) => s.id),\n ];\n const checkElementInViewport = (element: HTMLElement) => {\n const rect = element.getBoundingClientRect();\n const viewHeight = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight,\n );\n const ans = !(rect.bottom < 0 || rect.top - viewHeight >= 0);\n return ans;\n };\n sections.forEach((section) => {\n const el = document.getElementById(section);\n if (el) {\n const inViewport = checkElementInViewport(el);\n if (inViewport) {\n updatedSectionsInView.push(section);\n }\n }\n });\n setSectionsInview(updatedSectionsInView);\n }\n };\n\n return (\n
    \n \n updateElementsInView(e)}\n >\n {standardInfo &&\n standardInfo.sections.map((section: any) => (\n
    \n {parse(section.html)}\n
    \n ))}\n
    \n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n authorityInfo: state.auth.userInfo.userCustomInfo,\n sectionId: state.aq101.sectionId,\n standardInfo: state.auth.userInfo.userStandardInfo,\n});\n\nexport default connect(mapStateToProps, {})(AirQuality101);\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport { OPEN_ASIDE, CLOSE_ASIDE } from './types';\n\n// Action Creators\nexport const openAside = () => (dispatch: Dispatch) => {\n dispatch({\n type: OPEN_ASIDE,\n });\n};\n\nexport const closeAside = () => (dispatch: Dispatch) => {\n dispatch({\n type: CLOSE_ASIDE,\n });\n};\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Types Imports\nimport { SET_THRESHOLD_LIMITS, SET_UNIT_HISTORIES, SET_UNIT_HISTORIES_LOADING, SET_ZEPHYR_COVERAGES_LIST, SET_IS_DATA_AVAILABILITY_CHART_LOADING, SET_DSE_CHECKBOX_STATE, INCREASE_ARRIVED_REQUESTS, SET_ARRIVED_REQUESTS_TO_INIT_STATE, SET_NULLABLE_UNITS, SET_PROCEED_WITH_ANALYSIS, SET_IS_VIEW_LOADED, SET_IS_CARTRIDGE_DATA_LOADING, SET_IS_WIDGETS_LIBRARY_VISIBLE } from './types';\nimport { ThresholdLimits, Zephyr, ZephyrCoverages } from '../utils/interface';\n\n// Action Creators\nexport const setUnitHistoriesList = (payload: any) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_UNIT_HISTORIES,\n payload,\n });\n};\n\nexport const setUnitHistoriesLoading = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_UNIT_HISTORIES_LOADING,\n payload,\n })\n};\n\nexport const setThresholdLimits = (payload: ThresholdLimits) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_THRESHOLD_LIMITS,\n payload,\n })\n};\n\nexport const setZephyrCoveragesList = (payload: Zephyr | ZephyrCoverages[] | ZephyrCoverages) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ZEPHYR_COVERAGES_LIST,\n payload,\n });\n};\n\nexport const setIsDataAvailabilityChartLoading = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_IS_DATA_AVAILABILITY_CHART_LOADING,\n payload,\n })\n};\n\nexport const setDSECheckboxState = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_DSE_CHECKBOX_STATE,\n })\n};\n\nexport const increaseArrivedRequests = () => (dispatch: Dispatch) => {\n dispatch({\n type: INCREASE_ARRIVED_REQUESTS,\n })\n};\n\nexport const restartArrivedRequests = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ARRIVED_REQUESTS_TO_INIT_STATE,\n })\n};\n\nexport const setNullableUnits = (payload: any) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_NULLABLE_UNITS,\n payload\n })\n};\n\nexport const proceedWithAnalysis = (payload: boolean | null) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_PROCEED_WITH_ANALYSIS,\n payload\n })\n};\n\nexport const setIsViewLoaded = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_IS_VIEW_LOADED,\n payload\n })\n};\n\n\nexport const setIsCartridgeDataLoading = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_IS_CARTRIDGE_DATA_LOADING,\n payload\n })\n};\n\nexport const setIsWidgetLibraryVisible = (payload: boolean) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_IS_WIDGETS_LIBRARY_VISIBLE,\n payload\n })\n};\n\n\n","// Package Imports\nimport React from 'react';\n\n// Component Interfaces\ninterface ConfirmationProps {\n additionalClass?: string;\n buttonText?: string;\n confirmationOpen: Function;\n header: string;\n showTick: boolean;\n text: string;\n}\n\n// Component\nconst Confirmation = ({\n additionalClass,\n buttonText,\n confirmationOpen,\n header,\n showTick,\n text,\n}: ConfirmationProps) => (\n \n {showTick ? (\n \n \n \n ) : (\n <>\n )}\n

    {header}

    \n

    {text}

    \n confirmationOpen(false)}\n >\n {buttonText}\n \n \n);\n\n// Default Props\nConfirmation.defaultProps = {\n additionalClass: '',\n buttonText: 'Done',\n};\n\nexport default Confirmation;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport Confirmation from '../shared_components/Confirmation';\nimport Dropdown from '../shared_components/Dropdown';\n\n// Async Imports\nimport utilsRequest from '../../utils/request';\n\n// Const Imports\nimport {\n defaultZephyrForm,\n detailsContactFormLookup,\n zephyrMeasurementOptions,\n ZephyrQuoteModalContent,\n zephyrPowerOptions,\n} from '../../utils/consts';\n\n// Type Imports\nimport { ContactFormSelection, ContactFormZephyr, ReduxState } from '../../utils/interface';\nimport { connect } from 'react-redux';\n\n// Component Interfaces\ninterface InitState {\n confirmationScreen: boolean;\n}\n\ninterface ZephyrQuoteProps {\n contactFormOptions: ContactFormZephyr;\n setModalsOff: Function;\n bearerToken: string | null;\n}\n\n// Component\nconst ZephyrQuoteModal = ({\n contactFormOptions,\n setModalsOff,\n bearerToken,\n}: ZephyrQuoteProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n confirmationScreen: false,\n };\n const [confirmationScreen, setConfirmationScreen] = useState(\n initState.confirmationScreen,\n );\n const [formData, setFormData] = useState(contactFormOptions.formData);\n const [userMessage, setUserMessage] = useState(\n contactFormOptions.userMessage,\n );\n\n // Functions\n const addMeasurement = (measurement: ContactFormSelection) => {\n const updatedMeasurementsList = [...formData.species, measurement];\n setFormData({ ...formData, species: updatedMeasurementsList });\n };\n\n const handleDropdown = (id: string, selected: string) => {\n const updatedFormData = { ...formData, [id]: selected };\n setFormData(updatedFormData);\n };\n\n const handleSubmit = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n const {\n firstName,\n lastName,\n email,\n company,\n zephyrs,\n powerOption,\n species,\n } = formData;\n if (firstName && lastName && email && company) {\n const enquiry = 'Sales';\n const details = detailsContactFormLookup.Sales[0].value;\n const speciesList = species.map((sp) => `${sp.label} `);\n const comments = `Zephyrs requested: ${zephyrs}, Power option selected: ${powerOption}, Species: ${speciesList}`;\n const formSubmission = {\n firstName,\n lastName,\n email,\n company,\n enquiry,\n details,\n comments,\n };\n const response = await utilsRequest.submitContactForm(formSubmission, bearerToken);\n if (response) {\n setFormData(defaultZephyrForm.formData);\n setConfirmationScreen(true);\n } else {\n setUserMessage(translate('ZephyrContactMessageProblem'));\n }\n } else {\n setUserMessage(translate('ZephyrContactMessageMissingFields'));\n }\n };\n\n const removeMeasurement = (measurement: ContactFormSelection) => {\n const updatedMeasurementsList = formData.species.filter(\n (s) => s.value !== measurement.value,\n );\n setFormData({ ...formData, species: updatedMeasurementsList });\n };\n\n return (\n <>\n {confirmationScreen ? (\n \n ) : (\n
    \n

    {translate('ZephyrContactHeader')}

    \n
    handleSubmit(e)}>\n
    \n
    \n
    \n \n \n setFormData({ ...formData, firstName: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, lastName: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n \n \n setFormData({ ...formData, email: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, company: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n \n \n setFormData({\n ...formData,\n zephyrs: parseInt(e.target.value),\n })\n }\n />\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n
    \n
      \n {formData.species.map((s) => (\n
    • \n
      {s.label}
      \n removeMeasurement(s)}\n >\n \n \n \n \n
    • \n ))}\n
    \n {zephyrMeasurementOptions.filter(\n (zMO) =>\n formData.species.filter(\n (fDs) => fDs.value === zMO.value,\n ).length === 0,\n ).length > 0 ? (\n
      \n {zephyrMeasurementOptions\n .filter(\n (zMO) =>\n formData.species.filter(\n (fDs) => fDs.value === zMO.value,\n ).length === 0,\n )\n .map((s) => (\n
    • \n
      {s.label}
      \n addMeasurement(s)}\n >\n \n \n \n \n
    • \n ))}\n
    \n ) : (\n <>\n )}\n
    \n
    \n
    \n
    \n
    \n
    \n

    \n {userMessage || translate('ZephyrQuoteRequiredFields')}\n

    \n
    \n
    \n \n
    \n setModalsOff()}\n type=\"button\"\n >\n \n \n \n \n
    \n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(ZephyrQuoteModal);","// Package Imports\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router-dom';\n\n// Component Imports\nimport Modal from '../shared_components/Modal';\nimport ZephyrQuoteModal from './ZephyrQuoteModal';\n\n// Util Imports\nimport {\n zephyrMeasurementOptions,\n} from '../../utils/consts';\n\n// Type Imports\nimport { AveragingPeriod, Modal as ModalType, Pollutant, TimePeriod, Zephyr } from '../../utils/interface';\nimport { AnalyticsOptions } from '../shared_components/Aside';\n\n// Component Interfaces\ninterface AsidePromptsProps {\n modal: ModalType;\n setModalsOff: Function;\n setZephyrQuoteModalOn: Function;\n dataAnalytics?: boolean;\n filteredZephyrs?: Zephyr[];\n pollutantData?: any;\n selectedTimePeriod?: TimePeriod | null;\n selectedAveragingPeriod?: AveragingPeriod | null;\n generateHistoricalData?: Function;\n options?: AnalyticsOptions;\n setOptions?: Function;\n}\n\nconst runAnalysisButtonStyles = {\n width: '100%',\n height: '80%',\n margin: 'auto',\n};\n\nconst asidePromptBackgroundStyles = {\n height: 65,\n backgroundColor: '#1d1e30'\n}\n\nconst AsidePrompt = ({\n modal,\n setModalsOff,\n setZephyrQuoteModalOn,\n}: AsidePromptsProps) => {\n const { t: translate } = useTranslation();\n // Consts\n const contactFormOptions = {\n formData: {\n firstName: '',\n lastName: '',\n email: '',\n company: '',\n zephyrs: 1,\n powerOption: '',\n species: [...zephyrMeasurementOptions.slice(0, 2)],\n },\n userMessage: '',\n };\n\n // Component\n return (\n
    \n
    \n {translate('AsidePromptExplainer')}\n
    \n {\n setZephyrQuoteModalOn();\n }}\n >\n {translate('AsideButtonContent')}\n \n \n \n }\n on={modal.zephyrQuote}\n />\n \n
    \n );\n};\n\nexport default AsidePrompt;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { Location } from 'history';\n\n// Action Imports\nimport {\n setSelectedFilters,\n mappAirFilters,\n} from '../../actions/mappAirFilters';\nimport {\n showAQMALayer,\n showOverlayLayer,\n setMappairPointModeOff,\n showSchoolsLayer\n} from '../../actions/layers';\n\n// Util Imports\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport {\n AsideOverlaysPublicSpecies,\n gtmEventIdentifiers,\n} from '../../utils/consts';\n\n// Type Imports\nimport {\n MappAirSelectedFilter,\n ReduxState,\n UnitOverlayTypes,\n Zephyr,\n UserInfo,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface InitState { }\n\ninterface AsidePublicOverlaysProps {\n aqmaOn: boolean;\n schoolsOn: boolean;\n asideOn: boolean;\n location: Location;\n mappAirFilters: Function;\n mappairOn: boolean;\n selectedFilters: MappAirSelectedFilter[];\n selectedUnitListCheck: Function;\n setMappairPointModeOff: Function;\n setSelectedFilters: Function;\n showAQMALayer: Function;\n showSchoolsLayer: Function;\n showOverlayLayer: Function;\n zephyrs: Zephyr[];\n isOverlayMenuVisible: boolean;\n setIsOverlayMenuVisible: Function;\n userInfo: UserInfo;\n}\n\nconst AsidePublicOverlays = ({\n aqmaOn,\n asideOn,\n location,\n mappAirFilters,\n mappairOn,\n selectedFilters,\n selectedUnitListCheck,\n setMappairPointModeOff,\n setSelectedFilters,\n showAQMALayer,\n showOverlayLayer,\n zephyrs,\n isOverlayMenuVisible,\n setIsOverlayMenuVisible,\n userInfo,\n schoolsOn,\n showSchoolsLayer\n}: AsidePublicOverlaysProps) => {\n // Functions\n const filterOverlays = (overlay: UnitOverlayTypes) => {\n let newFilters = selectedFilters.slice();\n if (newFilters.filter((nF) => nF.name === overlay).length) {\n const updatedNewFilters = newFilters.filter((nF) => nF.name !== overlay);\n newFilters = updatedNewFilters;\n } else {\n const newFilter = {\n name: overlay,\n showAllLabels: true,\n showSelectedLabel: true,\n };\n newFilters.push(newFilter);\n }\n setSelectedFilters(newFilters);\n };\n\n const fireToggleAnalyticsEvent = (\n eventIdentifier: string,\n itemStatus: boolean,\n ) => {\n const labelEnrichment = itemStatus ? 'Off' : 'On';\n analyticsEventFirer(eventIdentifier, labelEnrichment);\n };\n\n const getUser = () => localStorage.getItem('user') || '';\n\n return (\n <>\n {asideOn ? (\n
      \n {AsideOverlaysPublicSpecies.speciesMap\n .filter(\n (sm) =>\n !(\n (sm.type === 'zephyr' &&\n !zephyrs.filter((z) => z.type === 0).length) ||\n (sm.type === 'aurn' &&\n !zephyrs.filter((z) => z.type === 1).length) ||\n (sm.type === 'virtual' &&\n !zephyrs.filter((z) => z.type === 100).length)\n ),\n )\n .map((unit) => (\n
    • \n \n
    • \n ))}\n
    \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => {\n return {\n aqmaOn: state.showAQMALayer.showAQMALayer,\n schoolsOn: state.showAQMALayer.showSchoolsLayer,\n mappairOn: state.showAQMALayer.showOverlayLayer,\n selectedFilters: state.mappAirFilters.selectedFilters,\n userInfo: state.auth.userInfo,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return bindActionCreators(\n {\n mappAirFilters,\n showAQMALayer,\n showSchoolsLayer,\n showOverlayLayer,\n setMappairPointModeOff,\n setSelectedFilters,\n },\n dispatch,\n );\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(AsidePublicOverlays);\n","// Package Imports\nimport React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { Location } from 'history';\nimport { useTranslation } from 'react-i18next';\n\n// Action Imports\nimport {\n setSelectedFilters,\n mappAirFilters,\n} from '../../actions/mappAirFilters';\nimport {\n showAQMALayer,\n showOverlayLayer,\n showSatelliteLayer,\n showSchoolsLayer,\n showAALayer\n} from '../../actions/layers';\n\n// Util Imports\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\n\n// Const Imports\nimport {\n AsideOverlaysSpecies,\n defaultSelectedFilters,\n gtmEventIdentifiers,\n mappAirFilterToggles,\n} from '../../utils/consts';\n\n// Type Imports\nimport {\n MappAirFilterOverlayToggles,\n MappAirSelectedFilter,\n ReduxState,\n UnitOverlayTypes,\n Zephyr,\n ZephyrTypes,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface InitState {\n subMenus: {\n aurn: boolean;\n zephyr: boolean;\n virtual: boolean;\n };\n}\n\ninterface AsideOverlaysProps {\n allUnits: Zephyr[];\n asideOn: boolean;\n aqmaOn: boolean;\n schoolsOn: boolean;\n location: Location;\n mappairOn: boolean;\n mappAirFilters: Function;\n satelliteOn: boolean;\n selectedFilters: MappAirSelectedFilter[];\n selectedUnitListCheck: Function;\n setSelectedFilters: Function;\n showAllUnits: Function;\n showAQMALayer: Function;\n showSchoolsLayer: Function;\n showOverlayLayer: Function;\n showSatelliteLayer: Function;\n tourFilterOpen: boolean;\n zephyrs: Zephyr[];\n isOverlayMenuVisible: boolean;\n setIsOverlayMenuVisible: Function;\n anualAveragesOn: boolean;\n}\n\n// Component\nconst AsideOverlays = ({\n allUnits,\n asideOn,\n aqmaOn,\n location,\n mappairOn,\n mappAirFilters,\n satelliteOn,\n selectedFilters,\n selectedUnitListCheck,\n setSelectedFilters,\n showAllUnits,\n showAQMALayer,\n showOverlayLayer,\n showSatelliteLayer,\n tourFilterOpen,\n zephyrs,\n isOverlayMenuVisible,\n setIsOverlayMenuVisible,\n schoolsOn,\n showSchoolsLayer,\n anualAveragesOn\n}: AsideOverlaysProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n subMenus: {\n aurn: false,\n zephyr: false,\n virtual: false,\n },\n };\n\n const [subMenus, setSubMenus] = useState(initState.subMenus);\n\n // Functions\n const changeOverlayOptions = (\n overlay: UnitOverlayTypes,\n option: MappAirFilterOverlayToggles,\n ) => {\n const updatedFilters = selectedFilters.map((sF) => {\n if (sF.name === overlay) {\n const updatedOverlayOptions = { ...sF };\n updatedOverlayOptions[option] = !sF[option];\n if (option === 'showAllLabels') {\n updatedOverlayOptions.showSelectedLabel = true;\n }\n return updatedOverlayOptions;\n }\n return sF;\n });\n setSelectedFilters(updatedFilters);\n };\n\n const changeSubMenus = (overlay: UnitOverlayTypes) => {\n const newSubMenu = { ...initState.subMenus };\n newSubMenu[overlay] = !subMenus[overlay];\n setSubMenus(newSubMenu);\n };\n\n const changeSubMenusToOff = (overlay: UnitOverlayTypes) => {\n const newSubMenu = { ...subMenus };\n newSubMenu[overlay] = false;\n setSubMenus(newSubMenu);\n };\n\n const filterOverlays = (overlay: UnitOverlayTypes) => {\n let newFilters = selectedFilters.slice();\n if (newFilters.filter((nF) => nF.name === overlay).length) {\n const updatedNewFilters = newFilters.filter((nF) => nF.name !== overlay);\n newFilters = updatedNewFilters;\n } else {\n const newFilter = {\n name: overlay,\n showAllLabels: false,\n showSelectedLabel: true,\n };\n newFilters.push(newFilter);\n }\n if (overlay in subMenus) {\n changeSubMenusToOff(overlay);\n }\n setSelectedFilters(newFilters);\n };\n\n const fireToggleAnalyticsEvent = (\n eventIdentifier: string,\n itemStatus: boolean,\n ) => {\n const labelEnrichment = itemStatus ? 'Off' : 'On';\n analyticsEventFirer(eventIdentifier, labelEnrichment);\n };\n\n const handleShowAll = () => {\n const checked = showAllStatus();\n if (!checked) {\n setSelectedFilters(defaultSelectedFilters);\n } else {\n setSelectedFilters([]);\n }\n\n showAllUnits();\n // Analytics\n fireToggleAnalyticsEvent(gtmEventIdentifiers.allToggle, checked);\n };\n const showAllStatus = () => {\n const zephyrsAvailable = allUnits.filter((u) => u.type === 0).length > 0;\n const aurnsAvailable = allUnits.filter((u) => u.type === 1).length > 0;\n const virtualZephyrsAvailable =\n allUnits.filter((u) => u.type === ZephyrTypes.virtual).length > 0;\n\n const allAvailableUnitsSelected =\n (selectedUnitListCheck('aurn') || !aurnsAvailable) &&\n (selectedUnitListCheck('zephyr') || !zephyrsAvailable) &&\n (selectedUnitListCheck('virtual') || !virtualZephyrsAvailable);\n const allOverlaysSelected = mappairOn && aqmaOn && satelliteOn && schoolsOn && anualAveragesOn;\n\n const status =\n location.pathname.includes('data') || location.pathname.includes('alerts')\n ? allAvailableUnitsSelected\n : allAvailableUnitsSelected && allOverlaysSelected;\n return status;\n };\n\n const switchOff = () => {\n setSubMenus(initState.subMenus);\n setIsOverlayMenuVisible(false);\n };\n\n return (\n <>\n {location.pathname.includes('data') && !asideOn ? (\n <>\n ) : (\n
    \n switchOff()}\n >\n
      \n
    • \n
      \n handleShowAll()}\n >\n \n
      \n \n
    • \n {AsideOverlaysSpecies.speciesMap\n .filter(\n (sm) =>\n !(\n (sm.type === 'zephyr' &&\n !zephyrs.filter((z) => z.type === 0).length) ||\n (sm.type === 'aurn' &&\n !zephyrs.filter((z) => z.type === 1).length) ||\n (sm.type === 'virtual' &&\n !zephyrs.filter((z) => z.type === ZephyrTypes.virtual)\n .length)\n ),\n )\n .map((unit) => (\n
    • \n
      \n {\n e.stopPropagation();\n filterOverlays(unit.type);\n // Analytics\n fireToggleAnalyticsEvent(\n gtmEventIdentifiers[`${unit.type}Toggle`],\n selectedUnitListCheck(unit.type),\n );\n }}\n >\n \n
      \n {!location.pathname.includes('data') &&\n !location.pathname.includes('alerts') &&\n !location.pathname.includes('analytics') &&\n selectedUnitListCheck(unit.type) ? (\n
      \n changeSubMenus(unit.type)}\n />\n
      \n ) : (\n <>\n )}\n \n {subMenus[unit.type] && selectedUnitListCheck(unit.type) ? (\n
      \n
      \n

      Map labels

      \n
      \n {mappAirFilterToggles.map((mFT) => (\n \n \n
      \n {mFT.label}\n
      \n
      \n ))}\n
      \n
      \n \n ) : (\n <>\n )}\n
    • \n ))}\n
    \n \n
    \n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n aqmaOn: state.showAQMALayer.showAQMALayer,\n schoolsOn: state.showAQMALayer.showSchoolsLayer,\n mappairOn: state.showAQMALayer.showOverlayLayer,\n tourFilterOpen: state.tour.openAsideFilter,\n satelliteOn: state.showAQMALayer.showSatelliteLayer,\n selectedFilters: state.mappAirFilters.selectedFilters,\n anualAveragesOn: state.showAQMALayer.showAALayer,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n mappAirFilters,\n setSelectedFilters,\n showAQMALayer,\n showSchoolsLayer,\n showOverlayLayer,\n showSatelliteLayer,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AsideOverlays);\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport utilsRequest from '../../utils/request';\nimport { ReduxState } from '../../utils/interface';\nimport { connect } from 'react-redux';\n\ninterface InitState {\n credentials: any | null;\n networkCredentialsError: string;\n}\n\n// Component\nconst NetworkCredentialsModal = ({ closeModal, confirmSubmit, unit, bearerToken }: any) => {\n const initState: InitState = {\n credentials: null,\n networkCredentialsError: '',\n };\n\n const { t: translate } = useTranslation();\n const [networkCredentials, setNetworkCredentials] = useState(\n initState.credentials,\n );\n const [networkCredentialsError, setNetworkCredentialsError] = useState(\n initState.networkCredentialsError,\n );\n\n useEffect(() => {\n const getNetworkCredentials = async () => {\n const [error, credentials] = await utilsRequest.apiGetWifiCredentials(\n unit.zNumber,\n bearerToken,\n );\n\n if (error) {\n setNetworkCredentialsError(translate('NetworkCredentialsError'));\n return;\n }\n\n setNetworkCredentials({\n defaultSSID: credentials.DefaultSSID,\n defaultPassword: credentials.DefaultPassword,\n networkName: credentials.ssid || credentials.DefaultSSID,\n networkPassword:\n credentials.wpaKey || credentials.DefaultPassword || '',\n });\n };\n getNetworkCredentials();\n }, []);\n\n const handleChangeNetworkCredentials = (e: React.SyntheticEvent) => {\n const target = e.target as HTMLInputElement;\n const { value, name } = target;\n setNetworkCredentials({ ...networkCredentials, [name]: value });\n };\n\n const handleSaveWifiCredentials = async (\n zNumber: any,\n networkCredentialsData: any,\n ) => {\n const [error, credentials] = await utilsRequest.apiRenameUnitWifiNetwork(\n zNumber,\n networkCredentialsData,\n bearerToken,\n );\n if (!error) {\n closeModal(true);\n }\n };\n\n return (\n
    \n closeModal(true)}\n type=\"button\"\n >\n \n \n \n \n

    {translate('EditWifiCredentials')}

    \n
    confirmSubmit(e)}>\n
    \n
    \n
    {unit.name}
    \n
    \n {networkCredentials ? (\n <>\n

    {translate('StaticWiFiCredentials')}

    \n\n
    \n

    {translate('NetworkNameLabel')}

    \n \n

    {translate('NetworkPasswordLabel')}

    \n \n
    \n\n

    {translate('DynamicWiFiCredentials')}

    \n\n
    \n

    {translate('NetworkNameLabel')}

    \n \n

    {translate('NetworkPasswordLabel')}

    \n \n
    \n \n ) : networkCredentialsError ? (\n
    \n

    {translate('warningText')}

    \n
    \n ) : (\n
    Loading ...
    \n )}\n\n
    \n {\n e.preventDefault();\n handleSaveWifiCredentials(unit.zNumber, networkCredentials);\n }}\n >\n {translate('EditWifiSaveButton')}\n \n\n closeModal(true)}\n >\n {translate('EditWifiCloseModal')}\n \n
    \n
    \n
    \n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(NetworkCredentialsModal);\n\n\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Hooks\nimport { useLocation } from 'react-router-dom';\n\n// Components\nimport Modal from '../shared_components/Modal';\nimport NetworkCredentialsModal from './NetworkCredentialsModal';\n\n// Action Imports\nimport {\n setDraggedUnit,\n setInitialUnitSet,\n setZephyrInEditMode,\n setZephyrs,\n} from '../../actions/zephyrs';\n\n// Util Imports\nimport utilsRequest from '../../utils/request';\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\nimport {\n convertUnitTimeToLocalTime,\n getCurrentTimeZoneAbbreviation,\n getTimeOld,\n} from '../../utils/functions/dateFinder';\nimport { getUnitTypeCountTxt } from '../../utils/functions/vZephyr';\n\n// Const Imports\nimport { gaseousSlots, gtmEventIdentifiers } from '../../utils/consts';\n\n// Asset Imports\nimport dragIcon from '../../assets/images/icon-drag.svg';\n\n// Type Imports\nimport {\n Zephyr,\n ReduxState,\n VZephyrsConfig,\n ZephyrTypes,\n SlotsInfo,\n ZephyrCoverages,\n} from '../../utils/interface';\nimport { setZephyrCoveragesList } from '../../actions/dataAnalytics';\nimport Spinner from '../shared_components/Spinner';\nimport { Box, Button, Tooltip } from '@mui/material';\nimport { setInitCursorPosition, setVZIconClicked } from '../../actions/addVZephyrs';\n\n// Component Interfaces\ninterface InitState {\n editMode: boolean;\n editNetwork: Zephyr | null;\n expanded: boolean;\n nameInput: string;\n optionsMenuOpen: boolean;\n subscribed: boolean;\n}\n\ninterface AsideUnitProps {\n unitList: Zephyr[];\n dataLoading: boolean;\n mappairPointMode: boolean;\n prevUnit: Zephyr | null;\n selectUnit: Function;\n selectedUnit: number;\n setColour: Function;\n setDraggedUnit: Function;\n setZephyrInEditMode: Function;\n setSelectedVZephyrToDelete: Function;\n unSubSelectedVZephyr: Function;\n setZephyrs: Function;\n unit: Zephyr;\n vZephyrsConfig: VZephyrsConfig;\n bearerToken: string | null;\n selectedUnitIdPod: number;\n setFilteredZephyrs: Function;\n filteredZephyrs: Zephyr[];\n zephyrCoveragesList: ZephyrCoverages[];\n setZephyrCoveragesList: Function;\n isDataAvailabilityChartLoading: boolean;\n isDeviceDropdownOpen: { 0: boolean, 1: boolean, 100: boolean };\n setIsDeviceDropdownOpen: Function;\n hasInitialUnitSet: boolean;\n setInitialUnitSet: Function;\n addVZIconClicked: boolean;\n setVZIconClicked: Function;\n setInitCursorPosition: Function;\n noVZephyrs?: boolean;\n}\n\n// Component\nconst AsideUnit = ({\n unitList,\n dataLoading,\n mappairPointMode,\n prevUnit,\n selectUnit,\n selectedUnit,\n setColour,\n setDraggedUnit,\n setZephyrInEditMode,\n setZephyrs,\n unit,\n vZephyrsConfig,\n setSelectedVZephyrToDelete,\n unSubSelectedVZephyr,\n bearerToken,\n selectedUnitIdPod,\n setFilteredZephyrs,\n filteredZephyrs,\n zephyrCoveragesList,\n setZephyrCoveragesList,\n isDataAvailabilityChartLoading,\n isDeviceDropdownOpen,\n setIsDeviceDropdownOpen,\n hasInitialUnitSet,\n setInitialUnitSet,\n addVZIconClicked,\n setVZIconClicked,\n setInitCursorPosition,\n noVZephyrs,\n}: AsideUnitProps) => {\n // State\n const initState: InitState = {\n editMode: false,\n editNetwork: null,\n expanded: false,\n nameInput: unit.name,\n optionsMenuOpen: false,\n subscribed: true,\n };\n const { t: translate } = useTranslation();\n\n const [subscribed, setSubscribed] = useState(initState.subscribed);\n const [editMode, setEditMode] = useState(initState.editMode);\n const [editNetwork, setEditNetwork] = useState(initState.editNetwork);\n const [expanded, setExpanded] = useState(initState.expanded);\n const [nameInput, setNameInput] = useState(initState.nameInput);\n const [optionsMenuOpen, setOptionsMenuOpenMenuOpen] = useState(\n initState.optionsMenuOpen,\n );\n\n // Effects\n useEffect(() => {\n if (selectedUnit !== unit.zNumber) {\n handleNameChangeReset();\n }\n }, [selectedUnit]);\n\n useEffect(() => {\n if (unit.name) {\n setEditMode(false);\n }\n }, [unit.name]);\n\n useEffect(() => {\n if (editMode) {\n unitInputRef.current!.focus();\n }\n }, [editMode]);\n\n // Consts\n const location = useLocation();\n const unitInputRef = useRef(null);\n const dragImage: HTMLImageElement = new Image();\n dragImage.src = dragIcon;\n\n // Functions\n const handleNameChange = (e: React.SyntheticEvent) => {\n const target = e.target as HTMLInputElement;\n setNameInput(target.value);\n };\n\n const handleNameChangeReset = () => {\n setEditMode(initState.editMode);\n setNameInput(initState.nameInput);\n };\n\n const handleNameSubmit = async (unitType: number) => {\n if (nameInput && nameInput !== unit.name) {\n // Format name input to have capitalize the start of every word\n const formattedNameInput = nameInput.replace(\n /(^\\w{1})|(\\s+\\w{1})/g,\n (match) => match.toUpperCase(),\n );\n\n let res = null;\n if (unitType === ZephyrTypes.virtual) {\n res = await utilsRequest.editVZephyr(\n unit.zNumber,\n nameInput,\n bearerToken,\n );\n } else {\n res = await utilsRequest.createZephyrAlias(\n unit.zNumber,\n formattedNameInput,\n bearerToken,\n );\n }\n\n if (res) {\n const newZephyr = { ...unit, name: formattedNameInput };\n const newZephyrList = unitList.map((listUnit) => {\n if (listUnit.zNumber === unit.zNumber) {\n const ammendedUnit = newZephyr;\n return ammendedUnit;\n }\n return listUnit;\n });\n if (newZephyrList.length === unitList.length) {\n setZephyrInEditMode(newZephyr);\n setZephyrs(newZephyrList);\n setNameInput(formattedNameInput);\n }\n } else {\n handleNameChangeReset();\n setEditMode(false);\n }\n } else {\n handleNameChangeReset();\n setEditMode(false);\n }\n };\n\n const getCertificate = (zNumber: number) => {\n utilsRequest.downloadCalibrationCertificate(zNumber);\n // Analytics\n analyticsEventFirer(gtmEventIdentifiers.unitCertificateDownload);\n };\n\n const handleDragStart = (e: React.DragEvent) => {\n // Check for IE as it doesn't support setDragImage\n const isIE = !!(document as any).documentMode;\n if (!isIE) {\n e.dataTransfer.setDragImage(dragImage, 0, 20);\n }\n setDraggedUnit(unit);\n };\n\n const unitTypeAsString = (unitType: number) => {\n switch (unitType) {\n case 0:\n return 'Zephyrs';\n case 1:\n return 'AURN';\n case 100:\n return 'Virtual Zephyrs';\n\n default:\n return '';\n }\n };\n\n const handleEditNetworkCredentials = (unit: Zephyr) => {\n setOptionsMenuOpenMenuOpen(false);\n setEditNetwork(unit);\n };\n\n const getUnitCartridgeData = async (unit: Zephyr) => {\n if (!unit.slotsInfo) {\n const packagedSlotsInfo: SlotsInfo = {\n slotA: null,\n slotB: null,\n };\n if (!isUnitRetired) {\n for await (const gS of gaseousSlots) {\n const slotSerial = unit[`${gS.label}_SN`];\n if (slotSerial) {\n const slotInfo = await utilsRequest.getCartridge(\n slotSerial,\n bearerToken,\n );\n if (slotInfo) {\n packagedSlotsInfo[gS.label] = slotInfo;\n }\n }\n }\n }\n const copyZephyrsList = [...unitList];\n const newData = copyZephyrsList.find((z) => z.id_pod === unit.id_pod);\n if (newData) newData.slotsInfo = packagedSlotsInfo;\n setZephyrs(copyZephyrsList);\n }\n };\n\n const changeDateFormat = (date: string) => {\n return (\n date.split(' ')[0].split('-').reverse().join('-') +\n ' ' +\n date.split(' ')[1]\n );\n };\n\n const addUnitToAnalyticsList = (unit: Zephyr) => {\n setFilteredZephyrs((prevState: Zephyr[]) => {\n const unitToChange = prevState.find(\n (z: Zephyr) => z.zNumber === unit.zNumber,\n );\n if (unitToChange) {\n const unitIdx = prevState.indexOf(unitToChange);\n unitToChange.isSelected = !unitToChange.isSelected;\n prevState[unitIdx] = unitToChange;\n }\n return [...prevState];\n });\n setZephyrCoveragesList(unit);\n };\n\n const preventComma = (event: React.KeyboardEvent) => {\n if (event.key === ',') {\n event.preventDefault();\n }\n };\n\n let isUnitRetired = false;\n if (unit.userEndTimeDate) {\n const timestampDate = new Date(`${unit.userEndTimeDate}Z`);\n const currentDate = new Date();\n isUnitRetired = currentDate > timestampDate;\n }\n\n const toggleDropdown = (event: any) => {\n if (event.target.id !== \"vz-icon\" && event.target.tagName !== \"path\" && !noVZephyrs) {\n setIsDeviceDropdownOpen((prevState: { 0: boolean, 1: boolean, 100: boolean }) => {\n return {\n ...prevState,\n 0: unit.type === 0 ? !prevState[0] : false,\n 1: unit.type === 1 ? !prevState[1] : false,\n 100: unit.type === 100 ? !prevState[100] : false,\n };\n });\n }\n };\n\n const handleVZIconClick = (event: React.MouseEvent) => {\n setVZIconClicked(!addVZIconClicked);\n if (!addVZIconClicked) {\n setInitCursorPosition({ x: event.clientX, y: event.clientY })\n }\n };\n\n return (\n <>\n {(prevUnit && prevUnit.type !== unit.type) || prevUnit?.type == null || noVZephyrs ? (\n \n \n

    \n {!noVZephyrs ? unitTypeAsString(unit.type) : 'Virtual Zephyrs'}{' '}\n ({!noVZephyrs ? getUnitTypeCountTxt(unitList, unit.type, vZephyrsConfig) : 0})\n

    \n
    \n {(unit.type === 100 || noVZephyrs) &&\n \n \n \n \n \n \n \n \n \n \n \n \n }\n {!noVZephyrs &&
    \n \n
    \n ) : (\n <>\n )}\n {!noVZephyrs && handleDragStart(e)}\n data-user-tour={prevUnit === null ? \"step-2\" : undefined}\n >\n {/* */}\n {\n if (!hasInitialUnitSet) setInitialUnitSet(true);\n if (\n !dataLoading &&\n selectedUnitIdPod !== unit.id_pod &&\n !location.pathname.includes('dataAnalytics')\n ) {\n selectUnit(unit);\n }\n }}\n >\n
    \n {unit.type === 0 || unit.type === ZephyrTypes.virtual ? (\n <>\n
    \n {editMode ? (\n <>\n handleNameChange(e)}\n onBlur={() => handleNameSubmit(unit.type)}\n onKeyDown={preventComma}\n id=\"name-change-input\"\n />\n \n ) : (\n
    \n \n

    {unit.name}

    \n
    \n )}\n\n {!location.pathname.includes('analysis') ? (\n
    \n {\n e.preventDefault();\n e.stopPropagation();\n setOptionsMenuOpenMenuOpen(!optionsMenuOpen);\n }}\n />\n {optionsMenuOpen ? (\n setOptionsMenuOpenMenuOpen(false)}\n >\n {\n e.preventDefault();\n e.stopPropagation();\n setEditMode(true);\n }}\n >\n {translate('AsideUnitEditName')}\n \n {unit.type === ZephyrTypes.virtual ? (\n =\n vZephyrsConfig.new30DaysMax\n ? 'disabled'\n : ''\n }\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (\n vZephyrsConfig.new30Days <=\n vZephyrsConfig.new30DaysMax\n ) {\n setSelectedVZephyrToDelete(unit);\n }\n }}\n >\n {translate('VZUnitDeleteName')}\n \n ) : (\n <>\n )}\n\n {unit.HasCertificate ? (\n {\n e.preventDefault();\n e.stopPropagation();\n getCertificate(unit.zNumber);\n }}\n >\n {translate('AsideUnitCertificateDownloadButton')}\n \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n
    \n ) : (\n <>\n {!isDataAvailabilityChartLoading && (\n \n )}\n {isDataAvailabilityChartLoading && (\n \n \n
    \n )}\n \n )}\n \n {!location.pathname.includes('analysis') && (\n
    \n {!isUnitRetired && unit.type !== ZephyrTypes.virtual ? (\n <>\n
      \n
    • \n
      \n =\n 16.5 &&\n getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) <= 24\n ? 'mains'\n : parseFloat(unit.externalVoltage ?? '') >=\n 16.5\n ? 'mains-active-grey'\n : 'mains-grey'\n }`}\n >\n
      \n
      \n {parseFloat(unit.externalVoltage ?? '') >=\n 16.5 &&\n getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) <= 24\n ? 'The Zephyr is running off external power.'\n : parseFloat(unit.externalVoltage ?? '') >=\n 16.5\n ? 'Last known status running off external power.'\n : 'No External Power.'}\n
      \n
      \n
      \n {expanded ? (\n <>\n
      \n
      \n {'Power'}\n
      \n
      \n {parseFloat(unit.externalVoltage ?? '') >=\n 17\n ? 'Connected'\n : 'N/A'}\n
      \n
      \n \n ) : (\n <>\n )}\n
    • \n
    • \n
      \n \n = 24\n ? 'grey'\n : ''\n }`}\n />\n
      \n {getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) >= 24\n ? 'Last known status: ' +\n translate(\n RenderBattery(\n parseFloat(\n unit.batteryVoltage ?? '',\n ) ?? 0,\n unit.batteryCharge ?? 0,\n )[2],\n )\n : translate(\n RenderBattery(\n parseFloat(\n unit.batteryVoltage ?? '',\n ) ?? 0,\n unit.batteryCharge ?? 0,\n )[2],\n )}\n
      \n
      \n
      \n
    \n {expanded ? (\n <>\n
    \n
    \n {translate('AsideUnitBatteryPower')}\n
    \n
    \n {translate(\n RenderBattery(\n parseFloat(\n unit.externalVoltage ?? '',\n ) ?? 0,\n unit.batteryCharge ?? 0,\n )[1],\n )}\n
    \n
    \n \n ) : (\n <>\n )}\n \n
  • \n
    \n \n \n
    \n {translate(\n RenderSampling(unit.SampPeriod)[0],\n )}\n
    \n
    \n \n {expanded ? (\n <>\n
    \n
    \n {RenderSampling(unit.SampPeriod)[2]}\n
    \n
    \n {translate('AsideUnitSamplingData')}\n
    \n
    \n {unit.lastDataDT === 'None'\n ? translate('AsideUnitSamplingOff')\n : translate('AsideUnitSamplingOn')}\n
    \n
    \n \n ) : (\n <>\n )}\n
  • \n\n
  • \n
    \n = 24\n ? 'alert'\n : getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) >= 2\n ? 'warning'\n : ''\n }`}\n >\n
    \n
    \n {getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) >= 24\n ? translate('AsideUnitConnectionAlert')\n : getTimeOld(\n unit.lastConnectionDT,\n 'YYYY-MM-DDZHH:mm:ss',\n 'hours',\n ) >= 2\n ? translate('AsideUnitConnectionWarning')\n : translate('AsideUnitConnectionExplainer')}\n
    \n
    \n
    \n {expanded ? (\n <>\n
    \n
    \n {translate('AsideUnitConnectionNetwork')}\n
    \n
    \n {translate('AsideUnitConnectionGSM')}\n
    \n
    \n \n ) : (\n <>\n )}\n
  • \n \n {expanded ? (\n <>\n
    \n
    \n
    Location: 
    \n
    \n \n {unit.latitude}, {unit.longitude}\n \n
    \n
    \n
    \n
    \n
    \n
    \n Updated: \n \n {unit.latLngAltered\n ? changeDateFormat(unit.latLngAltered)\n : 'No last update information'}\n \n
    \n {/*
    {unit.latLngAltered}
    */}\n
    \n
    \n
      \n {gaseousSlots.map((gS) => (\n
    • \n {unit.slotsInfo ? (\n
      \n
      \n \n\n
      \n \n
      \n
      \n
      \n
      \n {gS.HTMLLabel}\n
      \n
      \n {unit.slotsInfo[gS.label]\n ? unit.slotsInfo[gS.label]!\n .CommercialName\n : translate(\n 'AsideUnitCartridgeBlank',\n )}\n
      \n
      \n
      \n ) : (\n
      Loading...
      \n )}\n
    • \n ))}\n {/*
    • \n
      \n
      \n
      \n
      \n
      \n
      \n
      \n Sensors\n
      \n
      Met
      \n
      \n
    • */}\n
    \n \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n \n )}\n \n ) : location.pathname.includes('analysis') ? (\n
    \n

    {unit.name}

    \n {!isDataAvailabilityChartLoading && (\n \n )}\n {isDataAvailabilityChartLoading && (\n \n \n
    \n )}\n \n ) : (\n

    {unit.name}

    \n )}\n
    \n\n {unit.type === ZephyrTypes.virtual ? (\n <>\n ) : (\n
    \n
    \n {unit.type === 0 ? (\n
    \n {isUnitRetired ? (\n <>\n
    {translate('AsideUnitStatusRetired')}
    \n
    \n {moment(\n unit.userEndTimeDate,\n 'YYYY-MM-DDZHH:mm:ss',\n ).format('DD-MM-YYYY HH:mm')}\n
    \n \n ) : (\n <>\n
    {translate('AsideUnitUpdatedHeader')}
    \n
    \n {unit.lastConnectionDT\n ? `${moment(\n convertUnitTimeToLocalTime(\n unit.lastConnectionDT,\n ),\n 'YYYY-MM-DDZHH:mm:ss',\n ).format(\n 'DD-MM-YYYY HH:mm',\n )} ${getCurrentTimeZoneAbbreviation()}`\n : 'NA'}\n
    \n \n )}\n
    \n ) : (\n <>\n )}\n {unit.type === 0 ? (\n
    ·
    \n ) : (\n <>\n )}\n {unit.type === 0 ? (\n <>\n
    \n
    {translate('AsideUnitIdHeader')}
    \n
    {unit.zNumber}
    \n
    \n \n ) : (unit.type as any) === ZephyrTypes.virtual ? (\n
    \n
    {translate('AsideUnitType')}
    \n
    {translate('AsideUnitTypeVirtualZephyr')}
    \n
    \n ) : (\n
    \n
    {translate('AsideUnitType')}
    \n
    {translate('AsideUnitTypeAURN')}
    \n
    \n )}\n
    \n {unit.type === 0 &&\n !isUnitRetired &&\n !location.pathname.includes('analysis') ? (\n {\n e.stopPropagation();\n e.preventDefault();\n if (!dataLoading) {\n setExpanded(!expanded);\n if (!expanded) {\n await getUnitCartridgeData(unit);\n }\n }\n }}\n />\n ) : (\n
    \n )}\n
    \n )}\n
    \n }\n\n {!noVZephyrs && setEditNetwork(null)}\n confirmSubmit={() => { }}\n unit={editNetwork}\n />\n }\n />}\n \n );\n};\n\nfunction RenderSampling(samplingPeriod: number | null) {\n // const { t: translate } = useTranslation();\n\n if (samplingPeriod) {\n if (samplingPeriod >= 7 && samplingPeriod <= 20) {\n //return [translate('AsideUnitSamplingExplainerHigh'), 'High', 'High'];\n return ['AsideUnitSamplingExplainerHigh', 'High', 'High'];\n //return ['Cannot be determined', 'grey', 'N/A'];\n } else if (samplingPeriod >= 50 && samplingPeriod <= 70) {\n //return [translate('AsideUnitSamplingExplainerMed'), 'Normal', 'Normal'];\n return ['AsideUnitSamplingExplainerMed', 'Normal', 'Normal'];\n //return ['Cannot be determined', 'grey', 'N/A'];\n } else {\n return ['Cannot be determined', 'grey', 'N/A'];\n //return [translate('AsideUnitSamplingExplainerMed'), 'Normal', 'Normal'];\n }\n } else {\n return ['Cannot be determined', 'grey', 'N/A'];\n //return [translate('AsideUnitSamplingExplainerMed'), 'Normal', 'Normal'];\n }\n}\n\nfunction RenderCartridgeText(cartridgeLabel: string | undefined) {\n //const { t: translate } = useTranslation();\n\n if (cartridgeLabel) {\n if (cartridgeLabel === 'Standard') {\n //return translate('AsideUnitCartridgeExplainerStandard');\n return 'AsideUnitCartridgeExplainerStandard';\n } else if (cartridgeLabel === 'Enhanced') {\n //return translate('AsideUnitCartridgeExplainerEnhanced');\n return 'AsideUnitCartridgeExplainerEnhanced';\n } else if (cartridgeLabel === 'Enhanced+') {\n //return translate('AsideUnitCartridgeExplainerEnhancedPlus');\n return 'AsideUnitCartridgeExplainerEnhancedPlus';\n } else if (cartridgeLabel === 'Enhanced++') {\n //return translate('AsideUnitCartridgeExplainerEnhancedPP');\n return 'AsideUnitCartridgeExplainerEnhancedPP';\n }\n }\n return '';\n}\n\nconst VZephyrBox = ({ type, NO2, style }: any) => {\n if (type !== 100) return null;\n return
    ;\n};\n\nfunction RenderBattery(batteryVoltage: number, batteryCharge: number) {\n //const { t: translate } = useTranslation();\n\n if (!isNaN(batteryVoltage)) {\n if (batteryVoltage > 17.5) {\n return [\n 'charging',\n //translate('AsideUnitBatteryCharging'),\n //translate('AsideUnitBatteryChargingDesc'),\n 'AsideUnitBatteryCharging',\n 'AsideUnitBatteryChargingDesc',\n ];\n } else if (batteryCharge < 5 || batteryVoltage == 0) {\n return [\n 'alert',\n //translate('AsideUnitBatteryFlat'),\n //translate('AsideUnitBatteryFlatDesc'),\n 'AsideUnitBatteryFlat',\n 'AsideUnitBatteryFlatDesc',\n ];\n } else if (batteryCharge < 30) {\n return [\n 'warning',\n //translate('AsideUnitBatteryDischarging'),\n //translate('AsideUnitBatteryFlatDesc'),\n 'AsideUnitBatteryDischarging',\n 'AsideUnitBatteryFlatDesc',\n ];\n } else {\n return [\n 'charging',\n //translate('AsideUnitBatteryDischarging'),\n //translate('AsideUnitBatteryDischargingDesc'),\n 'AsideUnitBatteryDischarging',\n 'AsideUnitBatteryDischargingDesc',\n ];\n }\n } else {\n return [\n 'none',\n //translate('AsideUnitBatteryFlat'),\n //translate('AsideUnitBatteryFlatDesc'),\n 'AsideUnitNoBattery',\n 'AsideUnitNoBattery',\n ];\n }\n}\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n unitList: state.getZephyrs.zephyrs,\n bearerToken: state.auth.bearerToken,\n zephyrCoveragesList: state.unitHistoriesOptions.zephyrCoveragesList,\n isDataAvailabilityChartLoading: state.unitHistoriesOptions.isDataAvailabilityChartLoading,\n hasInitialUnitSet: state.setZephyr.hasInitialSet,\n addVZIconClicked: state.addVZephyrs.addVZIconClicked,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setDraggedUnit,\n setZephyrInEditMode,\n setZephyrs,\n setZephyrCoveragesList,\n setInitialUnitSet,\n setVZIconClicked,\n setInitCursorPosition,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AsideUnit);\n","// Package Imports\nimport React from 'react';\n\n// TypeImports\nimport { useLocation } from 'react-router-dom';\nimport { Zephyr } from '../../utils/interface';\n\n// Hooks\n\n// Component Interfaces\ninterface PublicAsideUnitProps {\n dataLoading: boolean;\n mappairPointMode: boolean;\n prevUnit: Zephyr | null;\n selectUnit: Function;\n selectedUnit: number;\n setColour: Function;\n unit: Zephyr;\n}\n\n// Component\nconst PublicAsideUnit = ({\n dataLoading,\n mappairPointMode,\n prevUnit,\n selectUnit,\n selectedUnit,\n setColour,\n unit,\n}: PublicAsideUnitProps) => {\n // Consts\n const location = useLocation();\n\n return (\n <>\n {prevUnit && prevUnit.type !== unit.type ? (\n
    \n ) : (\n <>\n )}\n \n {\n if (!dataLoading && selectedUnit !== unit.zNumber) {\n selectUnit(unit);\n }\n }}\n >\n
    \n

    {unit.name}

    \n
    \n
    \n \n \n );\n};\n\nexport default PublicAsideUnit;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { setAddVZSettings, setCursorIconDropped, setVZCreationMenu, setVZIconClicked, setVZName } from '../../../actions/addVZephyrs';\nimport { ReduxState, VZephyrsConfig, Zephyr } from '../../../utils/interface';\nimport utilsRequest from '../../../utils/request';\nimport { addZephyrs } from '../../../actions/zephyrs';\n\ntype Props = {\n setVZCreationMenu: Function;\n settings: {\n lat: number;\n lon: number;\n locationName: any;\n } | null,\n virtualZephyrName: string;\n setVZName: Function;\n bearerToken: string | null;\n getUserVirtualZephyrs: Function;\n addZephyrs: Function;\n setCursorIconDropped: Function;\n setAddVZSettings: Function;\n setVZIconClicked: Function;\n virtualZephyrsNumber: number;\n vZephyrsConfig: VZephyrsConfig;\n}\n\nconst VZCreationMenu = ({ setVZCreationMenu, settings, virtualZephyrName, setVZName, bearerToken, getUserVirtualZephyrs, addZephyrs, setCursorIconDropped, setAddVZSettings, setVZIconClicked, virtualZephyrsNumber, vZephyrsConfig }: Props) => {\n const location = settings?.locationName?.results?.[0]?.formatted_address;\n\n const handleCloseVZCreationMenu = () => {\n setVZCreationMenu(false);\n setVZName(\"\");\n };\n\n const handleResetConfigurations = () => {\n handleCloseVZCreationMenu();\n setCursorIconDropped(false);\n setVZIconClicked(false);\n setAddVZSettings(null);\n };\n\n const handleVirtualZephyrCreation = async () => {\n if (virtualZephyrName && virtualZephyrName.trim().length > 0 && settings) {\n const res = await utilsRequest.addVZephyr(\n virtualZephyrName,\n virtualZephyrName,\n settings.lon,\n settings.lat,\n bearerToken,\n );\n\n if (res) {\n const virtualZephyrs = await getUserVirtualZephyrs(\n localStorage.getItem('isPublic'),\n );\n const vZephyrToAdd = virtualZephyrs.find(\n (vz: Zephyr) =>\n vz.name === virtualZephyrName &&\n String(vz.latitude) === String(settings.lon) &&\n String(vz.longitude) === String(settings.lat),\n );\n if (virtualZephyrs && vZephyrToAdd) {\n addZephyrs([vZephyrToAdd]);\n handleResetConfigurations();\n }\n }\n }\n };\n\n const handleUpdateVZName = (event: React.ChangeEvent) => setVZName(event.target.value);\n\n return (\n
    \n
    \n

    Add Virtual Zephyr ({virtualZephyrsNumber}/{vZephyrsConfig.max})

    \n \n \n \n
    \n\n
    \n
    \n

    Virtual Zephyr

    \n \n
    \n
    \n

    Location

    \n

    {location ?? 'No information'}

    \n
    \n
    \n

    Virtual Zephyrs will take approximately 1 hour to initialise.

    \n
    \n
    \n
    \n \n \n
    \n
    \n )\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n settings: state.addVZephyrs.settings,\n virtualZephyrName: state.addVZephyrs.virtualZephyrName,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setVZCreationMenu,\n setVZName,\n addZephyrs,\n setCursorIconDropped,\n setAddVZSettings,\n setVZIconClicked,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(VZCreationMenu);","// Package Imports\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { Location } from 'history';\n\n// Component Imports\nimport AsideUnit from './AsideUnit';\nimport PublicAsideUnit from './PublicAsideUnit';\n\n// Action Imports\nimport { setZephyr } from '../../actions/zephyrs';\nimport { setUnitLocation } from '../../actions/locations';\nimport { setMappairPointModeOff } from '../../actions/layers';\n\n// Util Imports\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\nimport { colourFinder } from '../../utils/functions/colourFinder';\n\n// Const Imports\nimport { gtmEventIdentifiers } from '../../utils/consts';\n\n// Type Imports\nimport {\n Overlay,\n ReduxState,\n Stylegroup,\n Zephyr,\n VZephyrsConfig,\n ZephyrTypes,\n} from '../../utils/interface';\nimport { setCursorIconDropped } from '../../actions/addVZephyrs';\nimport VZCreationMenu from './AddVZephyr/VZCreationMenu';\n\n// Component Interfaces\ninterface AsideUnitListProps {\n activeOverlay: string;\n allUnits: Zephyr[];\n dataLoading: boolean;\n isPublic: boolean;\n location: Location;\n mappairPointMode: boolean;\n overlays: Overlay[];\n setMappairPointModeOff: Function;\n setUnitLocation: Function;\n selectedZephyr: { zephyr: Zephyr };\n setZephyr: Function;\n stylegroups: Stylegroup[];\n thresholdTab: string;\n units: Zephyr[];\n vZephyrsConfig: VZephyrsConfig;\n setSelectedVZephyrToDelete: Function;\n unSubSelectedVZephyr: Function;\n overlay: any;\n setFilteredZephyrs: Function;\n filteredZephyrs: Zephyr[];\n isDeviceDropdownOpen: { 0: boolean, 1: boolean, 100: boolean };\n setIsDeviceDropdownOpen: Function;\n hasInitialUnitSet: boolean;\n cursorIconDropped: boolean;\n setCursorIconDropped: Function;\n vzCreationMenuOpened: boolean;\n getUserVirtualZephyrs: Function;\n}\n\n// Component\nconst AsideUnitList = ({\n activeOverlay,\n allUnits,\n dataLoading,\n isPublic,\n location,\n mappairPointMode,\n overlays,\n setMappairPointModeOff,\n setUnitLocation,\n selectedZephyr,\n setZephyr,\n stylegroups,\n thresholdTab,\n units,\n vZephyrsConfig,\n setSelectedVZephyrToDelete,\n unSubSelectedVZephyr,\n overlay,\n setFilteredZephyrs,\n filteredZephyrs,\n isDeviceDropdownOpen,\n setIsDeviceDropdownOpen,\n hasInitialUnitSet,\n vzCreationMenuOpened,\n getUserVirtualZephyrs\n}: AsideUnitListProps) => {\n const virtualZephyrsNumber = useMemo(() => {\n return units.filter((unit) => unit.type === 100).length;\n }, [units]);\n const [flag, setFlag] = useState(false);\n\n const handleDropdownOpenByType = (type: number): void => {\n setIsDeviceDropdownOpen({\n 0: type === 0 ? true : false,\n 1: type === 1 ? true : false,\n 100: type === 100 ? true : false,\n });\n !flag && setFlag(true);\n };\n\n // Effects\n useEffect(() => {\n const activeBeacon = document.querySelector('.unit-list .unit-card.active');\n const { zephyr: { type } } = selectedZephyr;\n if (!isDeviceDropdownOpen[type]) handleDropdownOpenByType(type);\n if (activeBeacon && hasInitialUnitSet) {\n activeBeacon.scrollIntoView();\n flag && setFlag(false);\n }\n }, [selectedZephyr, flag, hasInitialUnitSet]);\n\n useEffect(() => {\n if (\n allUnits.length &&\n allUnits[0].averageOfLastHourOfData &&\n selectedZephyr &&\n !selectedZephyr.zephyr.averageOfLastHourOfData\n ) {\n const refreshedSelectedUnitWithLastHourData = allUnits.filter(\n (z) => z.zNumber === selectedZephyr.zephyr.zNumber,\n )[0];\n setZephyr(refreshedSelectedUnitWithLastHourData);\n }\n }, [allUnits]);\n\n // Functions\n const selectUnit = (unit: Zephyr) => {\n if (!unit.userEndTimeDate || unit.type === ZephyrTypes.virtual) {\n setUnitLocation(unit.longitude, unit.latitude);\n }\n setMappairPointModeOff();\n setZephyr(unit);\n // Analytics\n analyticsEventFirer(gtmEventIdentifiers.unitSelect, location.pathname);\n };\n\n const setColour = (unit: Zephyr) => {\n let fillColour;\n const opacity = 0.8;\n const noDataOpacity = 1;\n if (overlay) {\n if (unit.type === ZephyrTypes.virtual) {\n const curOverlay = overlays.filter((ol) => ol.name === activeOverlay)[0].name === overlay.name ?\n overlays.filter((ol) => ol.name === activeOverlay)[0].name : overlay.name;\n return colourFinder(\n curOverlay,\n stylegroups,\n thresholdTab,\n opacity,\n overlays,\n unit?.averageOfLastHourOfData?.NO2 || 0,\n 'virtual',\n );\n }\n\n if (unit.userEndTimeDate) {\n fillColour = `rgba(146,148,154,${noDataOpacity})`;\n } else if (!unit.averageOfLastHourOfData) {\n fillColour = `rgba(34,37,57,${noDataOpacity})`;\n } else if (\n unit.averageOfLastHourOfData.AQI === null ||\n !overlays ||\n !activeOverlay\n ) {\n fillColour = `rgba(255, 255, 255, ${noDataOpacity})`;\n } else {\n const curOverlay = overlays.filter((ol) => ol.name === activeOverlay)[0].name === overlay.name ?\n overlays.filter((ol) => ol.name === activeOverlay)[0].name : overlay.name;\n fillColour = colourFinder(\n curOverlay,\n stylegroups,\n thresholdTab,\n opacity,\n overlays,\n unit.averageOfLastHourOfData[curOverlay.speciesIdentifier],\n 'zephyr',\n );\n }\n }\n return fillColour;\n };\n\n return !vzCreationMenuOpened ? (\n <>\n {units.length && !virtualZephyrsNumber && !isPublic &&
    \n \n
    }\n {units.map((unit, idx, unitList) => (\n
    \n {isPublic ? (\n \n ) : (\n \n )}\n
    \n ))}\n \n ) : ;\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n activeOverlay: state.showAQMALayer.overlay,\n dataLoading: state.getZephyrHistoricalData.loading,\n mappairPointMode: state.showAQMALayer.mappairPointModeOn,\n overlays: state.setOverlays,\n selectedZephyr: state.setZephyr,\n stylegroups: state.getStyleGroups.styleGroups,\n thresholdTab: state.setThresholdTab.tab,\n hasInitialUnitSet: state.setZephyr.hasInitialSet,\n cursorIconDropped: state.addVZephyrs.cursorIconDropped,\n vzCreationMenuOpened: state.addVZephyrs.vzCreationMenuOpened,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyr,\n setUnitLocation,\n setMappairPointModeOff,\n setCursorIconDropped,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AsideUnitList);\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useTranslation } from 'react-i18next';\n\n// Hooks\nimport { useLocation } from 'react-router-dom';\n\n// Action Imports\nimport { openAside, closeAside } from '../../actions/aside';\nimport { setZephyrQuoteModalOn } from '../../actions/modal';\nimport {\n increaseArrivedRequests,\n restartArrivedRequests,\n setUnitHistoriesList,\n setUnitHistoriesLoading,\n setNullableUnits,\n proceedWithAnalysis,\n setIsViewLoaded,\n} from '../../actions/dataAnalytics';\n\n// Component Imports\nimport AsidePrompt from '../view_components/AsidePrompt';\nimport AsidePublicOverlays from '../view_components/AsidePublicOverlays';\nimport AsideOverlays from '../view_components/AsideOverlays';\nimport AsideUnitList from '../view_components/AsideUnitList';\n\n// Type Imports\nimport {\n MappAirSelectedFilter,\n Modal as ModalType,\n ReduxState,\n UnitOverlayTypes,\n Zephyr,\n VZephyrsConfig,\n ZephyrTypes,\n DisplayConfig,\n TimePeriods,\n AveragingPeriods,\n UrlQueryStringParams,\n DataConfig,\n} from '../../utils/interface';\nimport { getZephyrData } from '../../actions/zephyrs';\n\n// Component Interfaces\ninterface AsideProps {\n asideOn: boolean;\n closeAside: Function;\n modal: ModalType;\n isPublic: boolean;\n openAside: Function;\n selectedFilters: MappAirSelectedFilter[];\n setModalsOff: Function;\n setZephyrQuoteModalOn: Function;\n setSelectedVZephyrToDelete: Function;\n unSubSelectedVZephyr: Function;\n zephyrs: Zephyr[];\n vZephyrsConfig: VZephyrsConfig;\n overlay: any;\n displayConfig: DisplayConfig;\n timePeriods: TimePeriods;\n averagingPeriods: AveragingPeriods;\n queryStringParams: UrlQueryStringParams;\n dataConfig: DataConfig;\n getZephyrData: Function;\n setUnitHistoriesList: Function;\n setUnitHistoriesLoading: Function;\n unitHistoriesLoading: boolean;\n unitHistoriesList: any;\n dseOn: boolean;\n bearerToken: string | null;\n increaseArrivedRequests: Function;\n requests: number;\n restartArrivedRequests: Function;\n nullableUnits: number[];\n setNullableUnits: Function;\n toProceed: boolean | null;\n proceedWithAnalysis: Function;\n viewLoaded: boolean;\n setIsViewLoaded: Function;\n isCartridgeDataLoading: boolean | null;\n getUserVirtualZephyrs: Function;\n}\n\nexport interface AnalyticsOptionsProperties {\n id: number;\n text: string;\n isSelected: boolean;\n}\n\nexport interface AnalyticsOptions {\n devices: AnalyticsOptionsProperties;\n pollutants: AnalyticsOptionsProperties;\n timeAverage: AnalyticsOptionsProperties;\n timePeriod: AnalyticsOptionsProperties;\n}\n\ninterface InitState {\n filteredZephyrs: Zephyr[];\n isOverlayMenuVisible: boolean;\n subMenus: {\n aurn: boolean;\n zephyr: boolean;\n };\n options?: AnalyticsOptions;\n}\n\nconst initState: InitState = {\n filteredZephyrs: [],\n isOverlayMenuVisible: false,\n subMenus: {\n aurn: false,\n zephyr: false,\n },\n // TODO\n // need to remove, unused in dataAnalytics\n // location.pathname.includes('analysis')- remove all these components\n options: {\n devices: {\n id: 1,\n text: 'Devices',\n isSelected: true,\n },\n pollutants: {\n id: 2,\n text: 'Pollutants',\n isSelected: true,\n },\n timeAverage: {\n id: 3,\n text: 'Time Average',\n isSelected: true,\n },\n timePeriod: {\n id: 4,\n text: 'Time Period',\n isSelected: true,\n },\n },\n};\n\nexport { initState as InitStateFilters };\n\n// View Component\nconst Aside = ({\n asideOn,\n closeAside,\n isPublic,\n modal,\n openAside,\n selectedFilters,\n setModalsOff,\n setZephyrQuoteModalOn,\n setSelectedVZephyrToDelete,\n unSubSelectedVZephyr,\n zephyrs,\n vZephyrsConfig,\n overlay,\n getUserVirtualZephyrs,\n}: AsideProps) => {\n const { t: translate } = useTranslation();\n\n const [isOverlayMenuVisible, setIsOverlayMenuVisible] = useState(\n initState.isOverlayMenuVisible,\n );\n\n const [filteredZephyrs, setFilteredZephyrs] = useState(\n initState.filteredZephyrs,\n );\n\n const [isDeviceDropdownOpen, setIsDeviceDropdownOpen] = useState({\n 0: false,\n 1: false,\n 100: false\n });\n\n // Consts\n const location = useLocation();\n\n // Effects\n useEffect(() => {\n if (zephyrs && zephyrs.length)\n setFilteredZephyrs([...getUpdatedFilteredZephyrsList()]);\n }, [zephyrs]);\n\n // Functions\n\n const getUpdatedFilteredZephyrsList = () => {\n let zephyrsCopy: Zephyr[] = [];\n if (!location.pathname.includes('analysis')) {\n zephyrsCopy = [...zephyrs].map((zephyr: Zephyr) => {\n return zephyr;\n });\n } else {\n zephyrsCopy = [...zephyrs].map((zephyr: Zephyr) => {\n if (filteredZephyrs.length) {\n const filteredZephyr = filteredZephyrs.find(\n (z: Zephyr) => z.zNumber === zephyr.zNumber,\n );\n if (filteredZephyr?.isSelected) zephyr.isSelected = true;\n else zephyr.isSelected = false;\n } else zephyr.isSelected = false;\n return zephyr;\n });\n }\n return zephyrsCopy;\n };\n\n const handleUnitSearch = (search: string) => {\n if (search === '') {\n setFilteredZephyrs(zephyrs.slice());\n } else {\n const newFilteredZephyrs = filterUnits(zephyrs, search);\n setFilteredZephyrs(newFilteredZephyrs);\n }\n };\n\n const filterUnits = (units: Zephyr[], search: string) => {\n return units\n .slice()\n .filter((z: Zephyr) => z.name)\n .filter(\n (z: Zephyr) =>\n z.name.toLowerCase().indexOf(search.toLowerCase()) > -1 ||\n z.zNumber.toString().indexOf(search) > -1,\n );\n };\n\n const showAllUnits = () => {\n setFilteredZephyrs(zephyrs.slice());\n };\n\n const selectedUnitListCheck = (overlay: UnitOverlayTypes) => {\n const isAvailable = selectedFilters.filter((sF) => sF.name === overlay);\n const check = !!isAvailable.length;\n return check;\n };\n\n const selectedUnitList = () => {\n\n const virtualUnits = filteredZephyrs.filter((unit) =>\n unit.type === ZephyrTypes.virtual && selectedUnitListCheck('virtual')\n );\n\n const zephyrUnits = filteredZephyrs.filter((unit) =>\n unit.type === ZephyrTypes.zephyr && selectedUnitListCheck('zephyr')\n );\n \n const aurnsUnits = filteredZephyrs.filter((unit) =>\n unit.type === ZephyrTypes.aurns && selectedUnitListCheck('aurn')\n );\n\n const orderedUnits = [...virtualUnits, ...zephyrUnits, ...aurnsUnits];\n\n return orderedUnits;\n };\n\n if (location.pathname.includes('fleetManagement')) return null;\n\n return (\n <>\n \n (asideOn ? closeAside() : openAside())}\n >\n \n {!isPublic ? (\n {\n e.stopPropagation();\n setIsOverlayMenuVisible(!isOverlayMenuVisible);\n }}\n className=\"kebab mr-4 px-4\"\n />\n ) : null}\n
    \n <>\n {isPublic ? (\n \n ) : (\n \n )}\n \n {!location.pathname.includes('analysis') && (\n <>\n {filteredZephyrs &&\n zephyrs.length &&\n zephyrs.length > 3 &&\n (selectedUnitListCheck('zephyr') ||\n selectedUnitListCheck('aurn')) ? (\n handleUnitSearch(e.target.value)}\n className=\"a-dark-input\"\n />\n ) : (\n <>\n )}\n
      \n {filteredZephyrs && (\n \n )}\n
    \n \n )}\n \n {!isPublic &&\n asideOn &&\n !location.pathname.includes('alerts') &&\n !location.pathname.includes('analysis') ? (\n \n ) : (\n <>\n )}\n \n \n \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n asideOn: state.aside.on,\n isPublic: state.auth.userInfo.isPublic,\n selectedFilters: state.mappAirFilters.selectedFilters,\n zephyrs: state.getZephyrs.zephyrs,\n curZephyr: state.setZephyr.zephyr,\n displayConfig: state.setDisplayConfig,\n timePeriods: state.setTimePeriods,\n averagingPeriods: state.setAveragingPeriods,\n queryStringParams: state.queryStringParams,\n dataConfig: state.dataConfig,\n unitHistoriesLoading: state.unitHistoriesOptions.isUnitHistoriesLoading,\n unitHistoriesList: state.unitHistoriesOptions.unitHistories,\n dseOn: state.unitHistoriesOptions.dseOn,\n bearerToken: state.auth.bearerToken,\n requests: state.unitHistoriesOptions.requests,\n nullableUnits: state.unitHistoriesOptions.nullableUnits,\n toProceed: state.unitHistoriesOptions.toProceed,\n viewLoaded: state.unitHistoriesOptions.viewLoaded,\n isCartridgeDataLoading: state.unitHistoriesOptions.isCartridgeDataLoading,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n openAside,\n closeAside,\n setZephyrQuoteModalOn,\n getZephyrData,\n setUnitHistoriesList,\n setUnitHistoriesLoading,\n increaseArrivedRequests,\n restartArrivedRequests,\n setNullableUnits,\n proceedWithAnalysis,\n setIsViewLoaded,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Aside);\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport Confirmation from '../shared_components/Confirmation';\n\n// Util Imports\nimport utilsRequest from '../../utils/request';\n\n// Type Imports\nimport {\n Feedback as FeedbackType,\n FeedbackQuestion,\n ReduxState,\n} from '../../utils/interface';\nimport { connect } from 'react-redux';\n\n// Component Interfaces\ninterface InitState {\n comments: string;\n email: string;\n score: number | null;\n scoreClicked: boolean;\n screen: number;\n}\n\ninterface FeedbackQuestionsProps {\n feedback: FeedbackType;\n on: boolean;\n setFeedback: Function;\n setFeedbackIdx: Function;\n setFeedbackOff: Function;\n bearerToken: string | null;\n}\n\n// Component\nconst FeedbackQuestions = ({\n feedback,\n on,\n setFeedback,\n setFeedbackIdx,\n setFeedbackOff,\n bearerToken,\n}: FeedbackQuestionsProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n comments: '',\n email: '',\n score: null,\n scoreClicked: false,\n screen: 0,\n };\n\n const [comments, setComments] = useState(initState.comments);\n const [email, setEmail] = useState(initState.email);\n const [score, setScore] = useState(initState.score);\n const [scoreClicked, setScoreClicked] = useState(initState.scoreClicked);\n const [screen, setScreen] = useState(initState.screen);\n\n // Functions\n const handleConfirmationClose = async (state: boolean) => {\n if (!state) {\n await handleCloseModal();\n setFeedbackOff();\n }\n };\n\n const handleCloseModal = async () => {\n await handleFeedbackSubmit();\n setComments(initState.comments);\n setEmail(initState.email);\n setScore(initState.score);\n setFeedbackOff();\n };\n\n const handleFeedbackSubmit = async () => {\n if (scoreClicked && score) {\n const { mufId } = feedback.questions[feedback.idx];\n await utilsRequest.postUserFeedback(mufId, score, comments, email, bearerToken);\n localStorage.removeItem('feedbackDueDate');\n const nextIdx = feedback.idx + 1;\n if (nextIdx <= feedback.questions.length - 1) {\n setFeedbackIdx(nextIdx);\n } else {\n const feedbackQuestions: FeedbackQuestion[] = await utilsRequest.getUserFeedbackQuestions(bearerToken);\n if (feedbackQuestions.length > 0) {\n const sortedFeedbackQuestions = feedbackQuestions.sort((a, b) =>\n a.order > b.order ? 1 : -1,\n );\n setFeedbackIdx(0);\n setFeedback(sortedFeedbackQuestions);\n } else {\n setFeedback([]);\n }\n }\n }\n };\n\n const handleScore = (s: number) => {\n setScore(s);\n setScoreClicked(true);\n handleScreenIncrement();\n };\n\n const handleScreenIncrement = () => {\n const updatedScreen = screen + 1;\n setScreen(updatedScreen);\n };\n\n return (\n <>\n {on ? (\n
    \n {screen !== 3 ? (\n
    \n
    {translate('feedbackQuestionsHeader')}
    \n {\n localStorage.removeItem('feedbackDueDate');\n handleCloseModal();\n }}\n type=\"button\"\n >\n \n \n \n \n
    \n ) : (\n <>\n )}\n
    \n {screen === 0 ? (\n <>\n {feedback.questions[feedback.idx].question}\n
      \n {feedback.questions[feedback.idx].name === 'NPS' ? (\n <>\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((s) => (\n
    • \n setScore(s)}\n onFocus={() => setScore(s)}\n onClick={() => handleScore(s)}\n type=\"button\"\n >\n {s}\n \n
    • \n ))}\n \n ) : (\n <>\n {[1, 2, 3, 4, 5].map((s) => (\n
    • \n setScore(s)}\n onFocus={() => setScore(s)}\n onClick={() => handleScore(s)}\n type=\"button\"\n className={feedback.questions[feedback.idx].name}\n >\n \n \n \n \n
    • \n ))}\n \n )}\n
    \n {feedback.questions[feedback.idx].name === 'NPS' ? (\n
    \n
    {translate('feedbackScoreLabelsLow')}
    \n
    {translate('feedbackScoreLabelsHigh')}
    \n
    \n ) : (\n <>\n )}\n \n ) : screen === 1 ? (\n <>\n {feedback.questions[feedback.idx].commentsQuestion}\n setComments(e.target.value)}\n value={comments}\n className=\"comments-input\"\n placeholder={translate('feedbackCommentsPlaceholder')}\n />\n handleScreenIncrement()}\n className=\"next-button button primary send-modal confirmation-button\"\n >\n {translate('feedbackButtonNext')}\n \n \n ) : screen === 2 ? (\n
    \n
    \n
    {translate('feedbackEmailHeader')}
    \n
    Optional
    \n
    \n setEmail(e.target.value)}\n value={email}\n className=\"email-input\"\n />\n handleScreenIncrement()}\n className=\"next-button button primary send-modal confirmation-button\"\n >\n {translate('feedbackButtonNext')}\n \n
    \n ) : (\n \n )}\n
    \n
    \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(FeedbackQuestions);\n","// Package Imports\nimport React from 'react';\n\n// Const Imports\nimport { FeedbackTagContent } from '../../utils/consts';\n\n// Component Interfaces\ninterface FeedbackTagProps {\n on: boolean;\n setFeedbackOn: Function;\n}\n\n// Component\nconst FeedbackTag = ({ on, setFeedbackOn }: FeedbackTagProps) => {\n return (\n <>\n {on ? (\n setFeedbackOn()}\n type=\"button\"\n className=\"feedback-tag\"\n >\n
    {FeedbackTagContent.feedbackTagButton}
    \n \n ) : (\n <>\n )}\n \n );\n}\nexport default FeedbackTag;\n","// Package Imports\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useLocation } from 'react-router-dom';\n\n// Component Imports\nimport FeedbackQuestions from './FeedbackQuestions';\nimport FeedbackTag from './FeedbackTag';\n\n// Action Imports\nimport {\n setFeedback,\n setFeedbackIdx,\n setFeedbackOff,\n setFeedbackOn,\n} from '../../actions/feedback';\n\n// Type Imports\nimport {\n Alerts,\n Feedback as FeedbackType,\n Modal,\n ReduxState,\n Tour,\n UserInfo,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface FeedbackProps {\n alerts: Alerts;\n feedback: FeedbackType;\n modal: Modal;\n setFeedback: Function;\n setFeedbackIdx: Function;\n setFeedbackOff: Function;\n setFeedbackOn: Function;\n tour: Tour;\n userInfo: UserInfo;\n}\n\n// Component\nconst Feedback = ({\n alerts,\n feedback,\n modal,\n setFeedback,\n setFeedbackIdx,\n setFeedbackOff,\n setFeedbackOn,\n tour,\n userInfo,\n}: FeedbackProps) => {\n const location = useLocation();\n \n return (\n <>\n {!userInfo.isPublic &&\n !userInfo.isInternal &&\n feedback.questions.length > 0 &&\n !location.pathname.includes('analysis') ? (\n
    \n {feedback.on &&\n !alerts.on &&\n !tour.openTour &&\n !modal.contact &&\n !modal.data &&\n !modal.mappairQuote &&\n !modal.mappairTimeseries &&\n !modal.zephyrQuote ? (\n \n ) : (\n \n )}\n
    \n ) : (\n <>\n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n alerts: state.alerts,\n feedback: state.feedback,\n modal: state.modal,\n tour: state.tour,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setFeedback,\n setFeedbackIdx,\n setFeedbackOff,\n setFeedbackOn,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Feedback);\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport Confirmation from '../shared_components/Confirmation';\nimport Dropdown from '../shared_components/Dropdown';\n\n// Async Imports\nimport utilsRequest from '../../utils/request';\n\n// Const Imports\nimport {\n defaultContactForm,\n detailsContactFormLookup,\n enquiryContactForm,\n HeaderContactModalContent,\n} from '../../utils/consts';\n\n// Type Imports\nimport { ContactForm, ReduxState } from '../../utils/interface';\nimport { connect } from 'react-redux';\n\n// Component Interfaces\ninterface InitState {\n confirmationScreen: boolean;\n}\n\ninterface HeaderContactModalProps {\n contactFormOptions: ContactForm;\n handleContactDialog: Function;\n bearerToken: string | null;\n}\n\n// Component\nconst HeaderContactModal = ({\n contactFormOptions,\n handleContactDialog,\n bearerToken,\n}: HeaderContactModalProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n confirmationScreen: false,\n };\n\n const [confirmationScreen, setConfirmationScreen] = useState(\n initState.confirmationScreen,\n );\n const [formData, setFormData] = useState(contactFormOptions.formData);\n const [userMessage, setUserMessage] = useState(\n contactFormOptions.userMessage,\n );\n\n // Functions\n const handleSubmit = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n const { firstName, lastName, email, company, enquiry } = formData;\n if (firstName && lastName && email && company && enquiry) {\n const response = await utilsRequest.submitContactForm(formData, bearerToken);\n if (response) {\n setFormData(defaultContactForm.formData);\n setConfirmationScreen(true);\n } else {\n setUserMessage(translate('messageProblem'));\n }\n } else {\n setUserMessage(translate('messageMissingFields'));\n }\n };\n\n const handleDropdown = (id: string, selected: string) => {\n const updatedFormData = { ...formData, [id]: selected };\n setFormData(updatedFormData);\n };\n\n return (\n <>\n {confirmationScreen ? (\n \n ) : (\n
    \n

    {translate('contactHeader')}

    \n
    handleSubmit(e)}>\n
    \n
    \n
    \n \n \n setFormData({ ...formData, firstName: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, lastName: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n \n \n setFormData({ ...formData, email: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, company: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n setFormData({ ...formData, comments: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n
    \n

    \n {userMessage || translate('requiredFields')}\n

    \n
    \n
    \n \n
    \n handleContactDialog(false)}\n type=\"button\"\n >\n \n \n \n \n
    \n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(HeaderContactModal);\n","// Package Imports\nimport React from 'react';\nimport YouTube from 'react-youtube';\n\n// Const Imports\nimport { headerTutorialModalContent } from '../../utils/consts';\n\n// Component Interfaces\ninterface HeaderTutorialModalProps {\n handleTutorialDialog: Function;\n}\n\n// Component\nconst HeaderTutorialModal = ({\n\thandleTutorialDialog,\n}: HeaderTutorialModalProps) => (\n\t
    \n\t\t

    Tutorials

    \n\t\t
    \n\t\t\t
    \n\t\t\t\t

    Beginners Guide

    \n\t\t\t\t

    MyAir® Beginners Tutorial

    \n\t\t\t\t handleTutorialDialog(false)}\n\t\t\t\t/>\n\t\t\t
    \n\n\t\t\t
    \n\t\t\t\t

    Data Analytics Guide

    \n\t\t\t\t

    \n\t\t\t\t\tGet the most out of your Air Quality data\n\t\t\t\t

    \n\t\t\t\t handleTutorialDialog(false)}\n\t\t\t\t/>\n\t\t\t
    \n\t\t
    \n\n\t\t handleTutorialDialog(false)}\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t
    \n);\n\nexport default HeaderTutorialModal;\n","// Package Imports\nimport React, {useEffect} from 'react';\nimport { connect } from 'react-redux';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\nimport Spinner from '../shared_components/Spinner';\n\n// Const Imports\nimport { config } from '../../utils/consts';\n\n// Type Imports\nimport { ReduxState, Version } from '../../utils/interface';\n\n// Component Interfaces\ninterface HeaderVersionHistoryModalProps {\n handleVersionDialog: Function;\n versionHistory: Version[];\n}\n\n// Component\nconst HeaderVersionHistoryModal = ({\n handleVersionDialog,\n versionHistory,\n}: HeaderVersionHistoryModalProps) => {\n const { t: translate } = useTranslation();\n\n return versionHistory ? (\n
    \n

    {translate('versionHistoryHeader')}

    \n
    \n {versionHistory\n .slice()\n .reverse()\n .map((v) => (\n
    {parse(v.versionNotes)}
    \n ))}\n
    \n handleVersionDialog(false)}\n >\n \n \n \n \n
    \n ) : ;\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n versionHistory: state.setVersions,\n});\n\nexport default connect(mapStateToProps, {})(HeaderVersionHistoryModal);\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport { connect } from 'react-redux';\n\n// OL Imports\n// @ts-ignore\nimport { fromLonLat, toLonLat } from 'ol/proj';\nimport Map from 'ol/Map';\nimport OSM from 'ol/source/OSM';\nimport VectorSource from 'ol/source/Vector';\nimport VectorLayer from 'ol/layer/Vector';\nimport TileLayer from 'ol/layer/Tile';\nimport View from 'ol/View';\nimport Draw from 'ol/interaction/Draw';\nimport { Fill, Stroke, Circle, Style } from 'ol/style';\nimport { getArea } from 'ol/sphere';\nimport { toStringHDMS } from 'ol/coordinate';\nimport { getCenter } from 'ol/extent';\n\n// Component Imports\nimport Polygon from 'ol/geom/Polygon';\nimport LocationControls from './LocationControls';\nimport LocationLicensing from './LocationLicensing';\n\n// Action Imports\nimport { setLocation } from '../../actions/locations';\n\n// Const Imports\nimport { defaultAreaConfig, defaultMappairOptions } from '../../utils/consts';\n\n// Type Imports\nimport {\n Overlay as OverlayType,\n ReduxState,\n ShowAQMALayer,\n UserInfo,\n} from '../../utils/interface';\n\n// Component Interfaces\ninterface InitState {\n hasFeatures: boolean;\n map: Map | null;\n}\n\ninterface AreaOfInterestProps {\n asideOn: boolean;\n curOverlayName: string;\n location: any;\n mappairOptions: ShowAQMALayer;\n handleAreaOfInterest: Function;\n overlays: OverlayType[];\n userInfo: UserInfo;\n}\n\n// Component\nconst AreaOfInterest = ({\n asideOn,\n curOverlayName,\n location,\n mappairOptions,\n overlays,\n handleAreaOfInterest,\n userInfo,\n}: AreaOfInterestProps) => {\n const initState: InitState = {\n hasFeatures: false,\n map: null,\n };\n\n // State\n const [hasFeatures, setHasFeatures] = useState(initState.hasFeatures);\n const [map, setMap] = useState(initState.map);\n\n // Refs\n const mapElement = useRef(null);\n const mapRef = useRef(null);\n mapRef.current = map;\n\n // Effects\n useEffect(() => {\n const mapExtent: any = [\n ...fromLonLat([-180, -90]),\n ...fromLonLat([180, 90]),\n ];\n\n const fill = new Fill({\n color: 'rgba(255,255,255,0.5)',\n });\n const solidFill = new Fill({\n color: '#1d1e30',\n });\n const stroke = new Stroke({\n color: '#1d1e30',\n width: 2,\n });\n\n const style = new Style({\n fill,\n stroke,\n });\n\n const source = new VectorSource({ wrapX: false });\n const featuresLayer = new VectorLayer({ source, style });\n featuresLayer.setProperties({ name: 'area' });\n\n const initMap = new Map({\n target: mapElement.current || '',\n layers: [\n new TileLayer({\n preload: Infinity,\n source: new OSM({\n wrapX: false,\n }),\n zIndex: 0,\n }),\n featuresLayer,\n ],\n view: new View({\n center: fromLonLat(location),\n zoom: 10,\n extent: mapExtent,\n }),\n });\n\n const styles: any = {\n Point: new Style({\n image: new Circle({\n stroke,\n radius: 4,\n fill: solidFill,\n }),\n }),\n LineString: new Style({\n stroke,\n }),\n Polygon: new Style({\n fill,\n }),\n };\n function styleFunction(feature: any) {\n return styles[feature.getGeometry().getType()];\n }\n\n const draw = new Draw({\n source,\n type: 'Polygon' as any,\n style: styleFunction,\n });\n\n draw.on('drawstart', () => removeAllAreas());\n draw.on('drawend', () => setHasFeatures(true));\n\n initMap.addInteraction(draw);\n setMap(initMap);\n }, []);\n\n useEffect(() => {\n if (map) {\n const updatedCenter = fromLonLat(location);\n const view = map.getView();\n view.animate({\n center: updatedCenter,\n duration: 0,\n });\n }\n }, [map, location]);\n\n // Functions\n const handleAreasComplete = () => {\n let areaConfig = defaultAreaConfig;\n if (map) {\n map\n .getLayers()\n .getArray()\n .forEach((l) => {\n const layerProps = l.getProperties();\n if ('name' in layerProps) {\n (l as VectorLayer)\n .getSource()\n .getFeatures()\n .forEach((f) => {\n const polygonGeometry = f.getGeometry();\n if (polygonGeometry) {\n const areaSize =\n Math.round((getArea(polygonGeometry) / 1000000) * 100) /\n 100;\n const latLngGeometry = polygonGeometry.transform(\n 'EPSG:3857',\n 'EPSG:4326',\n );\n const centre = getCenter(polygonGeometry.getExtent());\n const centreHdmsRaw = hdmsSplitter(toStringHDMS(centre));\n const centreHdms = `${centreHdmsRaw[0]}, ${centreHdmsRaw[1]}`;\n areaConfig = {\n areaSize,\n centreHdms,\n latLngGeometry,\n };\n }\n });\n }\n });\n }\n handleAreaOfInterest(areaConfig);\n };\n\n const handleLocationSearch = async (locationSearch: string) => {\n setLocation(locationSearch, 'null');\n return true;\n };\n\n const hdmsSplitter = (hdms: string) => {\n if (hdms) {\n const hdmsWithDelimiter = hdms.replace(/N/g, 'N,');\n const hdmsArr = hdmsWithDelimiter.split(',');\n return hdmsArr;\n }\n return '';\n };\n\n const removeAllAreas = () => {\n setHasFeatures(false);\n if (mapRef.current) {\n mapRef.current\n .getLayers()\n .getArray()\n .forEach((l) => {\n const layerProps = l.getProperties();\n if ('name' in layerProps) {\n (l as VectorLayer).getSource().clear();\n }\n });\n }\n };\n\n const zoom = (increase: boolean) => {\n if (map) {\n const mapView = map.getView();\n let currentZoomLevel = mapView.getZoom();\n if (currentZoomLevel) {\n increase ? (currentZoomLevel += 1) : (currentZoomLevel -= 1);\n mapView.setZoom(currentZoomLevel);\n }\n }\n };\n\n return (\n
    \n

    Area of Interest

    \n
    \n
    \n

    Use the map below to draw your area of interest.

    \n {hasFeatures ? (\n
    \n handleAreasComplete()}\n type=\"button\"\n className=\"aoi-select-button button primary send-modal\"\n >\n Done\n \n
    \n ) : (\n <>\n )}\n
    \n
    \n
    \n \n \n
    \n
    \n handleAreaOfInterest(defaultAreaConfig)}\n type=\"button\"\n >\n \n \n \n \n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n asideOn: state.aside.on,\n curOverlayName: state.showAQMALayer.overlay,\n displayConfig: state.setDisplayConfig,\n location: state.setLocation.location,\n mappairOptions: state.showAQMALayer,\n overlays: state.setOverlays,\n userInfo: state.auth.userInfo,\n});\n\nexport default connect(mapStateToProps, {})(AreaOfInterest);\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport AreaOfInterest from './AreaOfInterest';\nimport Confirmation from '../shared_components/Confirmation';\n\n// Async Imports\nimport utilsRequest from '../../utils/request';\n\n// Const Imports\nimport {\n defaultAreaConfig,\n defaultMappairForm,\n detailsContactFormLookup,\n mappairLink,\n mappairMeasurementOptions,\n} from '../../utils/consts';\n\n// Type Imports\nimport { AreaConfig, ContactFormMappair, ReduxState } from '../../utils/interface';\nimport { connect } from 'react-redux';\n\n// Component Interfaces\ninterface InitState {\n areaOfInterestScreen: boolean;\n confirmationScreen: boolean;\n}\n\ninterface MappairQuoteProps {\n contactFormOptions: ContactFormMappair;\n setModalsOff: Function;\n bearerToken: string | null;\n}\n\n// Component\nconst MappairQuoteModal = ({\n contactFormOptions,\n setModalsOff,\n bearerToken,\n}: MappairQuoteProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n areaOfInterestScreen: false,\n confirmationScreen: false,\n };\n const [areaOfInterestScreen, setAreaOfInterestScreen] = useState(\n initState.areaOfInterestScreen,\n );\n const [confirmationScreen, setConfirmationScreen] = useState(\n initState.confirmationScreen,\n );\n const [formData, setFormData] = useState(contactFormOptions.formData);\n const [userMessage, setUserMessage] = useState(\n contactFormOptions.userMessage,\n );\n\n // Functions\n const handleAreaOfInterest = (areaConfig: AreaConfig) => {\n setAreaOfInterestScreen(false);\n const updatedFormData = { ...formData, area: areaConfig };\n setFormData(updatedFormData);\n };\n\n const handleSpeciesFilter = (species: string) => {\n let newPollutants = [];\n if (!formData.pollutants.includes(species)) {\n newPollutants = [...formData.pollutants, species];\n } else {\n newPollutants = formData.pollutants.filter((p) => p !== species);\n }\n const updatedFormData = { ...formData, pollutants: newPollutants };\n setFormData(updatedFormData);\n };\n\n const handleSubmit = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n const {\n firstName,\n lastName,\n email,\n company,\n comments,\n area,\n pollutants,\n } = formData;\n if (firstName && lastName && email && company) {\n const enquiry = 'Sales';\n const details = detailsContactFormLookup.Sales[1].value;\n let formattedPollutants = '';\n pollutants.forEach((p) => {\n formattedPollutants += `${p}`;\n });\n const formattedComments = `Pollutants: ${\n formattedPollutants || 'None selected'\n }, Area coordinates: ${\n !area.latLngGeometry\n ? 'None specified'\n : (area as any).latLngGeometry.flatCoordinates\n }, Area size (km2): ${area.areaSize || 'None specified'}, Comments: ${\n comments || 'None'\n }`;\n const formSubmission = {\n firstName,\n lastName,\n email,\n company,\n enquiry,\n details,\n comments: formattedComments,\n };\n const response = await utilsRequest.submitContactForm(formSubmission, bearerToken);\n if (response) {\n setFormData(defaultMappairForm.formData);\n setConfirmationScreen(true);\n } else {\n setUserMessage(translate('mappairMessageProblem'));\n }\n } else {\n setUserMessage(translate('mapairMessageMissingFields'));\n }\n };\n\n return (\n <>\n {confirmationScreen ? (\n \n ) : areaOfInterestScreen ? (\n \n ) : (\n
    \n

    {translate('MappairQuoteContactHeader')}

    \n
    handleSubmit(e)}>\n
    \n
    \n
    \n \n \n setFormData({ ...formData, firstName: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, lastName: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n \n \n setFormData({ ...formData, email: e.target.value })\n }\n />\n
    \n
    \n \n \n setFormData({ ...formData, company: e.target.value })\n }\n />\n
    \n
    \n
    \n
    \n
    \n {translate('mappairLinkPre')}\n \n \n {mappairLink.content}\n \n \n {translate('mappairLinkPost')}\n
    \n
    \n
    {translate('aoi')}
    \n
    \n {formData.area.latLngGeometry ? (\n
    \n
    \n {translate('polygon')}\n {translate('centre')}\n {formData.area.centreHdms}\n
    \n
    \n \n handleAreaOfInterest(defaultAreaConfig)\n }\n width=\"21\"\n height=\"21\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n \n \n
    \n
    \n ) : (\n setAreaOfInterestScreen(true)}\n >\n {translate('selectArea')}\n \n )}\n
    \n
    \n
    \n \n
    \n
    \n {mappairMeasurementOptions.map((mMO) => (\n \n ))}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n

    \n {userMessage || translate('mapairRequiredFields')}\n

    \n
    \n
    \n \n
    \n setModalsOff()}\n type=\"button\"\n >\n \n \n \n \n
    \n )}\n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nexport default connect(mapStateToProps, {})(MappairQuoteModal);","// Package Imports\nimport React from 'react';\n\n// Component Interfaces\ninterface SliderProps {\n on: boolean;\n value: number;\n actionCreator: Function;\n id: string;\n}\n\n// Component\nconst Slider = ({ on, value, actionCreator, id }: SliderProps) => {\n const handleSliderChange = (value: number) => {\n actionCreator(Math.round(value));\n };\n return (\n <>\n {on ? (\n
    \n
    \n Opacity:\n
    \n handleSliderChange(parseInt(e.target.value))}\n className=\"slider\"\n />\n
    \n ) : (\n <>\n )}\n \n );\n};\n\nexport default Slider;\n","// Package Imports\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\n// Const Imports\nimport { RemoveZephyrModalContent } from '../../utils/consts';\n// Type Imports\nimport { Zephyr, VZephyrsConfig } from '../../utils/interface';\n\nimport { addZephyrs } from '../../actions/zephyrs';\nimport { setContactModalOn } from '../../actions/modal';\n// Component Interfaces\ninterface removeZephyrModalProps {\n setSelectedVZephyrToDelete: Function;\n unSubSelectedVZephyr: Function;\n selectedVZephyrToDelete: Zephyr | null;\n}\n\nexport interface AddZephyrForm {\n name: string;\n}\n\n// Component\nconst RemoveZephyrModal = ({\n selectedVZephyrToDelete,\n setSelectedVZephyrToDelete,\n unSubSelectedVZephyr,\n}: removeZephyrModalProps) => {\n const { t: translate } = useTranslation();\n\n const confirmDelete = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n };\n\n return (\n
    \n setSelectedVZephyrToDelete(null)}\n type=\"button\"\n >\n \n \n \n \n

    {translate('RemoveZephyrHeaderText')}

    \n
    confirmDelete(e)}>\n
    \n
    \n

    \n {translate('confirmationTextPrefix')}\n {selectedVZephyrToDelete?.name || ''}{' '}\n {translate('confirmationTextPostFix')}\n

    \n

    {translate('warningText')}

    \n
    \n\n
    \n setSelectedVZephyrToDelete(null)}\n >\n {translate('RemoveZephyrSecondaryCta')}\n \n\n {\n unSubSelectedVZephyr();\n }}\n >\n {translate('primaryCta')}\n \n
    \n
    \n
    \n
    \n );\n};\n\n// Redux\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n addZephyrs,\n setContactModalOn,\n },\n dispatch,\n );\n\nexport default connect(null, mapDispatchToProps)(RemoveZephyrModal);\n","// Util Imports\nimport { Dispatch } from 'redux';\nimport utilsRequest from '../utils/request';\n\n// Type Imports\nimport {\n TOUR_LAUNCHED,\n TOUR_FINISHED,\n TOUR_OPEN_ASIDE_FILTER,\n TOUR_CLOSE_ASIDE_FILTER,\n TOUR_OPEN_AQ_DATA_INDEX,\n TOUR_CLOSE_AQ_DATA_INDEX,\n TOUR_OPEN_AQ_COLORSCALE_INDEX,\n TOUR_CLOSE_AQ_COLORSCALE_INDEX,\n TOUR_OPEN_AQMA_INDEX,\n TOUR_CLOSE_AQMA_INDEX,\n TOUR_OPEN_ASIDE,\n TOUR_CLOSE_ASIDE,\n TOUR_OPEN_HELP,\n TOUR_CLOSE_HELP,\n TOUR_OPEN_LOCATION_SEARCH,\n TOUR_CLOSE_LOCATION_SEARCH,\n TOUR_MAP_CLICK,\n TOUR_CLOSE_MODEL_DATA_INDEX,\n TOUR_OPEN_MODEL_DATA_INDEX,\n} from './types';\n\n// Action Creators\nexport const startTour = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_LAUNCHED,\n });\n};\n\nexport const closeTour = (bearerToken: string | null) => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_FINISHED,\n });\n //need to get bearer token here somehow\n utilsRequest.setShowTour(false, bearerToken);\n};\n\nexport const tourOpenAsideFilter = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_ASIDE_FILTER,\n });\n};\n\nexport const tourCloseAsideFilter = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_ASIDE_FILTER,\n });\n};\n\nexport const tourOpenAQDataIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_AQ_DATA_INDEX,\n });\n};\n\nexport const tourCloseAQDataIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_AQ_DATA_INDEX,\n });\n};\n\nexport const tourOpenAQColorscaleIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_AQ_COLORSCALE_INDEX,\n });\n};\n\nexport const tourCloseAQColorscaleIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_AQ_COLORSCALE_INDEX,\n });\n};\n\nexport const tourOpenAQMAIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_AQMA_INDEX,\n });\n};\n\nexport const tourCloseAQMAIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_AQMA_INDEX,\n });\n};\n\nexport const tourOpenAside = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_ASIDE,\n });\n};\n\nexport const tourCloseAside = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_ASIDE,\n });\n};\n\nexport const tourOpenHelp = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_HELP,\n });\n};\n\nexport const tourCloseHelp = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_HELP,\n });\n};\n\nexport const tourOpenLocationSearch = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_LOCATION_SEARCH,\n });\n};\n\nexport const tourCloseLocationSearch = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_LOCATION_SEARCH,\n });\n};\n\nexport const tourMapClick = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_MAP_CLICK,\n });\n};\n\nexport const tourCloseModelDataIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_CLOSE_MODEL_DATA_INDEX,\n });\n};\n\nexport const tourOpenModelDataIndex = () => (dispatch: Dispatch) => {\n dispatch({\n type: TOUR_OPEN_MODEL_DATA_INDEX,\n });\n};\n","// Types Imports\nimport { Dispatch } from 'redux';\nimport { SET_AQ101_OFF, SET_AQ101_ON, SET_AQ101_SECTION } from './types';\n\n// Action Creators\nexport const setAQ101Off = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_AQ101_OFF,\n });\n};\n\nexport const setAQ101On = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_AQ101_ON,\n });\n};\n\nexport const setAQ101Section = (payload: string) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_AQ101_SECTION,\n payload,\n });\n};\n","// Package Imports\nimport { Dispatch } from 'redux';\n\n// Types Imports\nimport { SET_LOCALE } from './types';\n\n// Action Creators\nconst setLocale = (locale: String) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_LOCALE,\n payload: locale,\n });\n};\n\nexport default setLocale;\n","import React, { useRef, useState } from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { setUnitHistoriesList } from '../../actions/dataAnalytics';\nimport BinIcon from '../../assets/images/bin.svg';\nimport utilsRequest from '../../utils/request';\nimport { ReduxState } from '../../utils/interface';\n\ninterface AnalyticsViewProps {\n view: any;\n views: any;\n setViews: Function;\n setUnitHistoriesList: Function;\n bearerToken: string | null;\n}\n\nconst AnalyticsView = ({\n view,\n views,\n setViews,\n setUnitHistoriesList,\n bearerToken\n}: AnalyticsViewProps) => {\n const [deletePrompt, setDeletePrompt] = useState(false);\n\n // Refs\n const deleteButton: React.MutableRefObject = useRef(null);\n const noButton: React.MutableRefObject = useRef(null);\n const yesButton: React.MutableRefObject = useRef(null);\n\n const toggleViewSelection = (event: any, view: any) => {\n const buttonClicked =\n (deleteButton.current && deleteButton.current.contains(event.target)) ||\n (yesButton.current && yesButton.current.contains(event.target)) ||\n (noButton.current && noButton.current.contains(event.target));\n\n if (buttonClicked) return;\n const viewsCopy = [...views];\n const currentView = viewsCopy[viewsCopy.indexOf(view)];\n viewsCopy.forEach((view) => {\n // reset other views isSelected state\n if (view.viewid !== currentView.id && view.isSelected)\n view.isSelected = false;\n });\n currentView.isSelected = !currentView.isSelected;\n setViews(viewsCopy);\n };\n\n const toggleViewDeletionButtons = (action: boolean) => {\n switch (action) {\n case true:\n setDeletePrompt(true);\n break;\n case false:\n setDeletePrompt(false);\n break;\n }\n };\n\n const deleteView = async (event: any, view: any) => {\n event.preventDefault();\n if (view.isLoaded) setUnitHistoriesList([]);\n const { viewid } = view;\n try {\n await utilsRequest.deleteView(viewid, bearerToken);\n const filteredViews = [...views].filter((v: any) => v.viewid !== view.viewid);\n setViews(filteredViews);\n } catch (e) {\n alert(\"Something went wrong!\");\n }\n };\n\n return (\n {\n toggleViewSelection(event, view);\n }}\n >\n
    \n
    \n \n {view.viewname}\n \n \n

    {view.savedate}

    \n
    \n
    \n
    \n {!deletePrompt && (\n {\n toggleViewDeletionButtons(true);\n }}\n >\n \n \n )}\n {deletePrompt && (\n
    \n {\n await deleteView(event, view);\n }}\n >\n Yes\n \n {\n toggleViewDeletionButtons(false);\n }}\n >\n No\n \n
    \n )}\n
    \n
    \n \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setUnitHistoriesList,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AnalyticsView);\n","import { SET_THRESHOLDS } from './types';\n\nexport function setThresholds(thresholds: any) {\n return {\n type: SET_THRESHOLDS,\n payload: thresholds,\n };\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n AveragingPeriod,\n DisplayConfig,\n Pollutant,\n ReduxState,\n ThresholdLimits,\n ThresholdsList,\n TimePeriod,\n Zephyr,\n ZephyrCoverages,\n} from '../../utils/interface';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport {\n proceedWithAnalysis,\n setIsViewLoaded,\n setUnitHistoriesList,\n setZephyrCoveragesList,\n} from '../../actions/dataAnalytics';\nimport AnalyticsView from './AnalyticsView';\nimport { compress, decompress } from 'lz-string';\nimport utilsRequest from '../../utils/request';\nimport { speciesExtentFinder } from '../../utils/functions/speciesExtentFinder';\nimport { setThresholds } from '../../actions/thresholdsActions';\nimport { defaultLayoutGenerator } from '../../utils/functions/dataAnalytics';\n\ninterface AnalyticsViewModalProps {\n unitHistories: any;\n thresholdLimits: ThresholdLimits;\n setZephyrCoveragesList: Function;\n zephyrCoveragesList: ZephyrCoverages[];\n zephyrs: Zephyr[];\n proceedWithAnalysis: Function;\n setUnitHistoriesList: Function;\n nullableUnits: number[];\n setIsViewLoaded: Function;\n zephyrsPollutantData: any;\n setZephyrsPollutantData: Function | null;\n selectedTimePeriod: TimePeriod | null;\n setSelectedTimePeriod: Function | null;\n selectedTimeAveraging: AveragingPeriod | null;\n setSelectedTimeAveraging: Function | null;\n bearerToken: string | null;\n views: any[] | null;\n setViews: Function | null;\n timePeriods: TimePeriod[];\n averagingPeriods: AveragingPeriod[];\n displayConfig: DisplayConfig;\n setIsSaveViewOpened?: Function;\n setIsLoadViewOpened?: Function;\n nullableUnitsBoolean?: boolean;\n isLoadViewOpened?: boolean;\n isViewNameValidated?: boolean;\n setIsViewNameValidated?: Function;\n setViewLoaded?: Function;\n customDate?: { start: Date, end: Date };\n setCustomDate?: Function;\n startDate?: Date;\n setStartDate?: Function;\n endDate?: Date;\n setEndDate?: Function;\n layouts: any;\n setLayouts: Function;\n setScatterChartsCounter?: Function;\n}\n\nconst AnalyticsViewModal = ({\n unitHistories,\n thresholdLimits,\n zephyrCoveragesList,\n zephyrs,\n setZephyrCoveragesList,\n setUnitHistoriesList,\n setIsSaveViewOpened,\n setIsLoadViewOpened,\n nullableUnitsBoolean,\n proceedWithAnalysis,\n nullableUnits,\n setIsViewLoaded,\n zephyrsPollutantData,\n setZephyrsPollutantData,\n selectedTimePeriod,\n setSelectedTimePeriod,\n selectedTimeAveraging,\n setSelectedTimeAveraging,\n bearerToken,\n isLoadViewOpened,\n isViewNameValidated,\n setIsViewNameValidated,\n views,\n setViews,\n timePeriods,\n averagingPeriods,\n setViewLoaded,\n displayConfig,\n customDate,\n setCustomDate,\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n layouts,\n setLayouts,\n setScatterChartsCounter\n}: AnalyticsViewModalProps) => {\n const [viewName, setViewName] = useState(\n views && views.find((view: any) => view.id === unitHistories.id)\n ? views.find((view: any) => view.id === unitHistories.id).viewName\n : '',\n );\n const [isFieldBlank, setIsFieldBlank] = useState(false);\n const [isUnitListEmpty, setIsUnitListEmpty] = useState(false);\n const [noViewSelected, setNoViewSelected] = useState(false);\n const [noViews, setNoViews] = useState(false);\n\n const thresholdsList = useSelector((state: ReduxState) => state.thresholds);\n const dispatch = useDispatch();\n\n const getZephyrNumbersOfAllSelectedUnits = () => {\n const { filteredZephyrs } = zephyrsPollutantData;\n return filteredZephyrs.filter((unit: Zephyr) => unit.isSelected).map((unit: Zephyr) => unit.zNumber);\n };\n\n const getSelectedPollutants = () => {\n const { pollutantData } = zephyrsPollutantData;\n return pollutantData.filter((pollutant: Pollutant) => pollutant.isChecked).map((pollutant: Pollutant) => pollutant.dataIdentifier);\n };\n\n const getSelectedAveragingOpiton = () => {\n return selectedTimeAveraging?.averagingOption;\n };\n\n const getSelectedTimePeriod = () => {\n return selectedTimePeriod?.labelHTML !== 'Custom' ? selectedTimePeriod?.labelHTML : JSON.stringify(customDate!);\n };\n\n const thresholdsPOSTReformatter = (thresholdsList: ThresholdsList) => {\n const reformattedThresholdList: any = {};\n for (const pollutant of Object.keys(thresholdsList)) {\n reformattedThresholdList[pollutant] = {\n lowerthreshold: thresholdsList[pollutant as keyof ThresholdsList].thresholds.lowerThreshold,\n upperthreshold: thresholdsList[pollutant as keyof ThresholdsList].thresholds.upperThreshold,\n hidden: thresholdsList[pollutant as keyof ThresholdsList].hidden\n }\n }\n return reformattedThresholdList;\n };\n\n const thresholdsGETReformatter = (thresholdsList: any) => {\n const reformattedThresholdList: any = {};\n for (const pollutant of Object.keys(thresholdsList)) {\n reformattedThresholdList[pollutant] = {\n thresholds: {\n lowerThreshold: thresholdsList[pollutant].lowerthreshold,\n upperThreshold: thresholdsList[pollutant].upperthreshold\n },\n hidden: thresholdsList[pollutant].hidden\n }\n }\n return reformattedThresholdList;\n };\n\n const saveViewToDB = () => {\n if (viewName) {\n const dataToPost = {\n // viewid: 0, // optional\n viewid: 0,\n viewname: viewName,\n savedate: new Date(),\n selectionCriteria: {\n devices: getZephyrNumbersOfAllSelectedUnits(),\n pollutants: getSelectedPollutants(),\n averageoption: getSelectedAveragingOpiton(),\n timeperiod: getSelectedTimePeriod()\n },\n layout: layouts,\n thresholds: thresholdsPOSTReformatter(thresholdsList),\n }\n return dataToPost;\n }\n };\n\n const validateViewDuplication = (unitHistoriesCopy: any, savedViews: any) => {\n const { id } = unitHistoriesCopy;\n const idCheck = savedViews.find((v: any) => v.id == id);\n return idCheck ? true : false;\n };\n\n const validateViewName = async (event: any) => {\n event.preventDefault();\n if (!viewName.replace(/\\s/g, '').length) {\n setIsFieldBlank(true);\n return;\n }\n if (isFieldBlank) setIsFieldBlank(false);\n if (!unitHistories || !('historiesList' in unitHistories)) {\n setIsUnitListEmpty(true);\n return;\n }\n if (isUnitListEmpty) setIsUnitListEmpty(false);\n try {\n const view = saveViewToDB();\n await utilsRequest.saveView(view, bearerToken);\n setIsViewNameValidated!(true);\n setIsSaveViewOpened!(false);\n } catch (e) {\n console.log(e);\n }\n };\n\n useEffect(() => {\n if (isLoadViewOpened && isViewNameValidated) {\n (async () => {\n const userViewsCopy = [...views!];\n const newUserViews = await utilsRequest.getUserViews(bearerToken);\n userViewsCopy.push(newUserViews[newUserViews.length - 1]);\n userViewsCopy[userViewsCopy.length - 1].isSelected = true;\n setViews!([...userViewsCopy]);\n setIsViewNameValidated!(false);\n })();\n }\n }, [isLoadViewOpened]);\n\n const updateViewName = (event: any) => {\n setViewName(event.target.value);\n };\n\n const getSelectedZephyrsFromView = (filteredZephyrs: Zephyr[], devices: number[]) => {\n const hashTable: { [key: number]: boolean } = {};\n const filteredZephyrsCopy = [...filteredZephyrs];\n for (const device of devices) {\n hashTable[device] = true;\n }\n for (const zephyr of filteredZephyrsCopy) {\n if (hashTable[zephyr.zNumber]) {\n if (!zephyr.isSelected) zephyr.isSelected = hashTable[zephyr.zNumber];\n } else {\n if (zephyr.isSelected) zephyr.isSelected = false;\n }\n }\n return filteredZephyrsCopy;\n };\n\n const getSelectedPollutantsFromView = (prevPollutants: Pollutant[], pollutants: string[]) => {\n const hashTable: { [key: string]: boolean } = {};\n const pollutantsCopy = [...prevPollutants];\n for (const pollutant of pollutants) {\n hashTable[pollutant] = true;\n }\n for (const pollutant of pollutantsCopy) {\n if (hashTable[pollutant.dataIdentifier]) {\n if (!pollutant.isChecked) pollutant.isChecked = hashTable[pollutant.dataIdentifier];\n } else {\n if (pollutant.isChecked) pollutant.isChecked = false;\n }\n }\n return pollutantsCopy;\n };\n\n const getAvailablePollutants = (selectedZephyrs: Zephyr[]) => {\n return speciesExtentFinder(displayConfig, selectedZephyrs as any, null);\n };\n\n const getLatestPollutants = (\n filteredZephyrs: Zephyr[],\n pollutantData: Pollutant[] | null,\n ) => {\n const selectedZephyrs = filteredZephyrs.filter((z: Zephyr) => z.isSelected);\n if (selectedZephyrs.length) {\n const newPollutantZephyrData = getAvailablePollutants(\n selectedZephyrs.filter((z: Zephyr) => z.type !== 1),\n );\n const newPollutantData = newPollutantZephyrData\n .filter(\n (value, index, self) =>\n index ===\n self.findIndex((t) => t.dataIdentifier === value.dataIdentifier),\n );\n const updatedPollutantData = (newPollutantData as Pollutant[]).map(\n (pollutant: Pollutant) => {\n if (pollutantData) {\n const prevPolutant = pollutantData.find(\n (p: Pollutant) => p.dataIdentifier === pollutant.dataIdentifier,\n );\n if (prevPolutant) {\n pollutant = prevPolutant;\n return pollutant;\n }\n pollutant.isChecked = false;\n } else if (!('isChecked' in pollutant)) pollutant.isChecked = false;\n pollutant.isSelected = false;\n return pollutant;\n },\n );\n return updatedPollutantData;\n }\n return [];\n };\n\n const getNumberOfLimitedScatterCharts = (layouts: any) => {\n const gasWidget = layouts.deviceView.filter((item: any) => item.i.includes('gasWidget')).length;\n const particulateWidget = layouts.deviceView.filter((item: any) => item.i.includes('particulateWidget')).length;\n const thpWidget = layouts.deviceView.filter((item: any) => item.i.includes('thpWidget')).length;\n const wsdWidget = layouts.deviceView.filter((item: any) => item.i.includes('wsdWidget')).length;\n const networkGasWidget = layouts.networkView.filter((item: any) => item.i.includes('networkGasWidget')).length;\n const networkParticulateWidget = layouts.networkView.filter((item: any) => item.i.includes('networkParticulateWidget')).length;\n return { deviceView: { gasWidget, particulateWidget, thpWidget, wsdWidget }, networkView: { networkGasWidget, networkParticulateWidget } };\n };\n\n const loadView = (event: any) => {\n event.preventDefault();\n if (views!.length === 0) {\n setNoViews(true);\n return;\n }\n const viewToLoad = views!.find((view: any) => view.isSelected);\n if (!viewToLoad) {\n setNoViewSelected(true);\n return;\n }\n if (noViewSelected) setNoViewSelected(false);\n if (noViews) setNoViews(false);\n const { filteredZephyrs, pollutantData } = zephyrsPollutantData;\n const { selectionCriteria: { devices, pollutants, averageoption, timeperiod }, thresholds, layout } = viewToLoad;\n if (Array.isArray(layout)) {\n setLayouts({ ...defaultLayoutGenerator(false) });\n setScatterChartsCounter!({ deviceView: { gasWidget: 1, particulateWidget: 1, thpWidget: 1, wsdWidget: 1 }, networkView: { networkGasWidget: 1, networkParticulateWidget: 1 } });\n }\n else if (layout) {\n setLayouts(layout);\n setScatterChartsCounter!(getNumberOfLimitedScatterCharts(layout));\n }\n const newAverageOption = averagingPeriods.find((aV: AveragingPeriod) => aV.averagingOption === averageoption);\n const newTimePeriod = !timeperiod.includes('start') ? timePeriods.find((tP: TimePeriod) => tP.labelHTML === timeperiod) : { labelHTML: 'Custom', timeOption: 'custom' };\n const filteredZephyrsCopy = getSelectedZephyrsFromView(filteredZephyrs, devices);\n const updatedPollutantData = [...pollutantData].map((pollutant: Pollutant) => {\n if (pollutants.includes(pollutant.dataIdentifier)) pollutant.isChecked = true;\n else if (!pollutants.includes(pollutant.dataIdentifier) && pollutant.isChecked) pollutant.isChecked = false;\n return pollutant;\n })\n setZephyrsPollutantData!({ filteredZephyrs: filteredZephyrsCopy, pollutantData: updatedPollutantData });\n setSelectedTimeAveraging!(newAverageOption);\n setSelectedTimePeriod!(newTimePeriod);\n dispatch(setThresholds(thresholdsGETReformatter(thresholds)));\n if (newTimePeriod?.labelHTML === 'Custom') {\n const convertedTimePeriod = JSON.parse(timeperiod);\n const { start, end } = convertedTimePeriod;\n setCustomDate!(convertedTimePeriod);\n setStartDate!(start);\n setEndDate!(end);\n }\n setIsLoadViewOpened!(false);\n setViewLoaded!(true);\n };\n\n const displayViews = () => {\n return views!.map((view: any) => {\n return (\n \n );\n });\n };\n\n const closeViewModal = () => {\n if (setIsSaveViewOpened) setIsSaveViewOpened(false);\n else if (setIsLoadViewOpened) setIsLoadViewOpened(false);\n };\n\n const getExistingUser = () => {\n let view = '';\n if (views) {\n const existingView = views.find(\n (view: any) => view.id === unitHistories.id,\n );\n if (existingView) view = existingView.viewName;\n }\n return view;\n };\n\n const handleProceedingWithAnalysis = (event: any, toProceed: boolean) => {\n event.preventDefault();\n proceedWithAnalysis(toProceed);\n };\n\n const extractNullableUnits = () => {\n return nullableUnits.map((unit: number, idx: number) => {\n return (\n
  • \n Unit with ID {unit} has no data for selected time period\n
  • \n );\n });\n };\n\n return (\n
    \n {setIsSaveViewOpened &&

    Save Your View

    }\n {setIsLoadViewOpened &&

    Load a View

    }\n {nullableUnitsBoolean &&

    Warning!

    }\n {(setIsSaveViewOpened || setIsLoadViewOpened) && (\n \n \n \n \n \n )}\n
    \n
    \n
    \n
    \n {setIsSaveViewOpened && (\n <>\n \n \n {isFieldBlank && (\n

    Field cannot be blank!

    \n )}\n {isUnitListEmpty && (\n

    No analysis generated!

    \n )}\n \n )}\n {isLoadViewOpened && (\n <>\n {views!.length === 0 && (\n

    No views saved yet.

    \n )}\n {views!.length > 0 && displayViews()}\n \n )}\n {nullableUnitsBoolean && (\n <>\n
      {extractNullableUnits()}
    \n \n )}\n
    \n
    \n
    \n {setIsSaveViewOpened && (\n
    \n

    \n *Required fields\n

    \n
    \n )}\n {setIsLoadViewOpened && noViewSelected && (\n
    \n

    \n Please select a view\n

    \n
    \n )}\n {setIsLoadViewOpened && noViews && (\n
    \n

    \n You do not have any saved views\n

    \n
    \n )}\n
    \n {setIsSaveViewOpened && (\n \n Save View\n \n )}\n {setIsLoadViewOpened && (Array.isArray(views) && views.length > 0) && (\n \n Load View\n \n )}\n
    \n {nullableUnitsBoolean && (\n <>\n
    \n \n Do you wish to proceed?\n

    \n
    \n \n {\n handleProceedingWithAnalysis(event, true);\n }}\n >\n Proceed\n \n {\n handleProceedingWithAnalysis(event, false);\n }}\n >\n Cancel\n \n
    \n \n )}\n
    \n
    \n \n \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n unitHistories: state.unitHistoriesOptions.unitHistories,\n thresholdLimits: state.unitHistoriesOptions.thresholdLimits,\n zephyrCoveragesList: state.unitHistoriesOptions.zephyrCoveragesList,\n zephyrs: state.getZephyrs.zephyrs,\n nullableUnits: state.unitHistoriesOptions.nullableUnits,\n bearerToken: state.auth.bearerToken,\n timePeriods: state.setTimePeriods.periods,\n averagingPeriods: state.setAveragingPeriods.periods,\n displayConfig: state.setDisplayConfig,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setUnitHistoriesList,\n setZephyrCoveragesList,\n proceedWithAnalysis,\n setIsViewLoaded,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AnalyticsViewModal);\n","import React from 'react';\n\ninterface AnalyticsFeedbackFormProps {\n setFeedbackModalOn: Function;\n}\n\nconst AnalyticsFeedbackForm = ({\n setFeedbackModalOn,\n}: AnalyticsFeedbackFormProps) => {\n const [loading, setLoading] = React.useState(true);\n\n return (\n <>\n {loading &&

    Loading...

    }\n setLoading(false)}\n src={\"https://forms.monday.com/forms/embed/1fa3fdcbdaf1efacb2fad84842fdc00b?r=use1\"}\n width=\"100%\"\n height=\"100%\"\n style={{ border: 0, boxShadow: '5px 5px 56px 0px rgba(0,0,0,0.25)' }}>\n \n {!loading && {\n setFeedbackModalOn((prevState: boolean) => !prevState)\n }}\n >\n \n \n \n }\n \n )\n};\n\nexport default AnalyticsFeedbackForm;","import * as React from 'react';\nimport { AnchorObject } from '../view_components/FilterBar/FilterBar1';\nimport { useEffect } from 'react';\n\nexport default function BasicPopover({ buttonText, children, anchorElement, anchorElements, setAnchorElements }: any) {\n\n const handleClick = (event: React.MouseEvent) => {\n const { anchorId } = anchorElement;\n const anchorElementsCopy = [...anchorElements];\n for (const el of anchorElementsCopy) {\n if (el.anchorId === anchorId) {\n el.anchorEl = el.anchorEl ? null : event.currentTarget;\n } else {\n el.anchorEl = null;\n }\n }\n setAnchorElements(anchorElementsCopy);\n };\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n const targetElement = event.target as HTMLElement;\n const anchorElementsCopy = [...anchorElements];\n const currentAnchorElement = anchorElementsCopy.find((anchorEl: AnchorObject) => anchorEl.anchorId === anchorElement.anchorId);\n if (!targetElement.closest('.anchor-popover') && !targetElement.closest('.selectionButton') && currentAnchorElement.anchorEl) {\n currentAnchorElement.anchorEl = null;\n setAnchorElements(anchorElementsCopy);\n }\n };\n\n document.addEventListener('mousedown', handleClick);\n\n return () => {\n document.removeEventListener('mousedown', handleClick);\n };\n }, []);\n\n\n const open = Boolean(anchorElement.anchorEl);\n const id = open ? 'simple-popover' : undefined;\n\n return (\n
    \n \n {buttonText}\n \n \n\n
    \n {children}\n
    \n
    \n );\n}","import React, { useEffect, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport ChevronIconURL from '../../assets/images/icon-chevron.svg';\n\ninterface AccordionProps {\n title: string;\n content: React.ReactNode;\n isOpenInitially: boolean;\n index: number;\n setAccordionIndexes: Function;\n}\n\ninterface AccordionIconProps {\n isOpen: boolean;\n}\n\nconst AccordionContainer = styled.div`\n margin-bottom: 1rem;\n`;\n\nconst AccordionTitle = styled.button`\n background-color: white;\n border: none;\n cursor: pointer;\n padding: 10px;\n justify-content: space-between;\n width: 100%;\n outline: none;\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--grey-200, #e2e8f0);\n top: 0;\n position: sticky;\n margin-bottom: 0;\n`;\n\nconst AccordionIcon = styled.span`\n width: 24px;\n height: 24px;\n background-image: url(${ChevronIconURL});\n background-size: cover;\n margin-right: 10px;\n transform: ${(props) => (props.isOpen ? 'rotate(180deg)' : 'rotate(0)')};\n transition: transform 0.3s ease;\n`;\n\nconst AccordionContent = styled.div`\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s ease-out;\n\n &.open {\n max-height: 50vh;\n overflow-y: auto;\n }\n`;\n\nconst Accordion: React.FC = ({\n title,\n content,\n isOpenInitially,\n index,\n setAccordionIndexes\n}) => {\n const [isOpen, setIsOpen] = useState(isOpenInitially);\n const contentRef = useRef(null);\n\n const toggleAccordion = () => {\n setIsOpen(!isOpen);\n setAccordionIndexes((prevState: { [key: number]: boolean }) => {\n prevState[index] = !prevState[index];\n return { ...prevState };\n })\n };\n\n return (\n \n \n {title}\n \n \n \n {content}\n \n \n );\n};\n\nexport default Accordion;\n","import React from 'react';\nimport Accordion from '../../../shared_components/Accordions';\nimport { Pollutant, Zephyr } from '../../../../utils/interface';\nimport { getZephyrType } from '../../ReactGridLayout/ReactGridLayout';\nimport styled from 'styled-components';\n\ninterface UnitListProps {\n zephyrsPollutantData: {\n filteredZephyrs: Zephyr[];\n pollutantData: Pollutant[];\n };\n accordionIndexes: { [key: number]: boolean };\n setAccordionIndexes: Function;\n isDataAvailabilityChartLoading: boolean;\n addUnitToAnalyticsList: Function;\n selectedDeviceKeys: string[];\n}\n\nconst UnitList: React.FC = ({\n zephyrsPollutantData,\n accordionIndexes,\n setAccordionIndexes,\n isDataAvailabilityChartLoading,\n addUnitToAnalyticsList,\n selectedDeviceKeys,\n}) => {\n \n const getGroupedZephyrs = () => {\n const currentDate = new Date();\n\n const groupedZephyrs = zephyrsPollutantData.filteredZephyrs.reduce(\n (acc: any, zephyr: any) => {\n const key = zephyr.type.toString();\n if (selectedDeviceKeys.includes(key)) {\n if (!acc[key]) acc[key] = { active: [], retired: [] };\n\n const isRetired =zephyr.userEndTimeDate && new Date(zephyr.userEndTimeDate) < currentDate;\n const units = isRetired ? acc[key].retired : acc[key].active;\n\n const zNumberExists = units.some(\n (unit: any) => unit.zNumber === zephyr.zNumber,\n );\n if (!zNumberExists) {\n units.push(zephyr);\n }\n }\n return acc;\n },\n {},\n );\n\n // Sort retired units by userEndTimeDate in descending order\n Object.values(groupedZephyrs).forEach((group: any) => {\n group.retired.sort(\n (a: any, b: any) => new Date(b.userEndTimeDate).getTime() - new Date(a.userEndTimeDate).getTime(),\n );\n });\n\n return groupedZephyrs;\n };\n\n if (\n !zephyrsPollutantData.filteredZephyrs ||\n zephyrsPollutantData.filteredZephyrs.length === 0\n )\n return null;\n\n return (\n
    \n {Object.entries(getGroupedZephyrs()).map(([typeKey, group]: any, index) => (\n {\n const isRetired = unit.userEndTimeDate && new Date(unit.userEndTimeDate) < new Date();\n const key = `${unit.id_pod}-${unit.zNumber}`;\n return (\n \n );\n },\n )}\n />\n ),\n )}\n
    \n );\n};\n\nconst RetiredBadge = styled.span`\n display: inline-block;\n padding: 4px 8px;\n background-color: #edf2f7;\n color: #666;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: normal;\n margin-left: auto;\n`;\n\nexport default UnitList;\n","export type ChartViewMode = 'deviceView' | 'networkView' | 'comparisonView';\n\nconst SET_CHART_VIEW_MODE = 'SET_CHART_VIEW_MODE';\n\nexport const setChartViewMode = (viewMode: ChartViewMode) => ({\n type: SET_CHART_VIEW_MODE,\n payload: viewMode,\n});\n","import * as React from 'react';\nimport Tour, { ReactourStep } from 'reactour';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { ReduxState } from '../../../utils/interface';\nimport { setChartViewMode } from '../../../actions/chartViewMode';\n\n\nconst stepStyle: React.CSSProperties = {\n height: 250,\n width: 330,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n};\n\nexport default function AnalysisTour() {\n const [show, setShow] = React.useState(false);\n\n const analysisTourOpen = useSelector((state: ReduxState) => state.analysisTourOpen);\n const dispatch = useDispatch()\n\n const disableBody = (target: HTMLElement) => disableBodyScroll(target);\n const enableBody = (target: HTMLElement) => enableBodyScroll(target);\n\n const steps: ReactourStep[] = [\n {\n selector: '',\n content: () => (\n
    \n Analysis provides a comprehensive toolkit to explore your data, enabling detailed insights and seamless reporting.\n
    \n ),\n style: stepStyle\n },\n\n {\n selector: '[data-tour=\"step-1\"]',\n position: 'center',\n content: () => (\n
    \n Select your devices, pollutants, period and time averaging options. Then press run to retrieve the data.\n
    \n ),\n style: stepStyle\n },\n\n {\n selector: '[data-tour=\"step-3\"]',\n position: 'center',\n content: () => (\n
    \n The device view focuses on data from individual units. Switch between them here.\n
    \n ),\n style: stepStyle,\n action() {\n dispatch(setChartViewMode('deviceView'));\n },\n highlightedSelectors: ['#select-chart-mode']\n },\n\n {\n selector: '[data-tour=\"step-3\"]',\n position: 'center',\n content: () => (\n
    \n The network view lets you see a summarised view of all the devices currently selected.\n
    \n ),\n action() {\n dispatch(setChartViewMode('networkView'));\n },\n style: stepStyle,\n highlightedSelectors: ['#select-chart-mode']\n },\n\n {\n selector: '[data-tour=\"step-3\"]',\n position: 'center',\n content: () => (\n
    \n Comparison allows you to compare devices directly. Add devices using the plus icon on each badge and remove them with the cross.\n
    \n ),\n action() {\n dispatch(setChartViewMode('comparisonView'));\n },\n style: stepStyle,\n highlightedSelectors: ['#select-chart-mode']\n },\n\n {\n selector: '[data-tour=\"step-6\"]',\n position: 'center',\n content: () => (\n
    \n Using these tools you can scroll, crop and resize the chart as desired. The three dots menu provides functional actions, such as adding threshold lines.\n
    \n ),\n action() {\n dispatch(setChartViewMode('networkView'));\n },\n style: stepStyle\n },\n\n {\n selector: '[data-tour=\"step-7\"]',\n position: 'center',\n content: () => (\n
    \n Press Download CSV on any view to generate a CSV specific to the current view.\n
    \n ),\n style: stepStyle\n },\n\n {\n selector: '[data-tour=\"step-8\"]',\n position: 'center',\n content: () => (\n
    \n Use 'Save view' to the current settings and revisit later through the 'Load View'.\n
    \n ),\n style: stepStyle\n },\n {\n selector: '[data-analysis-tour=\"step-9\"]',\n position: 'center',\n content: () => (\n
    \n Revisit this tour or the tours on other pages anytime from within the Help menu.\n
    \n ),\n style: stepStyle\n },\n ];\n\n return (\n {\n setShow(false)\n dispatch({ type: 'analysis_tour_toggle' })\n dispatch(setChartViewMode('deviceView'));\n }}\n onAfterOpen={disableBody}\n onBeforeClose={enableBody}\n startAt={0}\n closeWithMask={false}\n disableInteraction\n disableDotsNavigation\n showNavigationNumber={false}\n lastStepNextButton={

    Finish

    }\n badgeContent={(curr) => `${curr}/${steps.length}`}\n accentColor=\"#4e73c3\"\n rounded={3}\n />\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport DatePicker from 'react-datepicker';\nimport { connect, useSelector } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport {\n increaseArrivedRequests,\n proceedWithAnalysis,\n restartArrivedRequests,\n setIsViewLoaded,\n setNullableUnits,\n setUnitHistoriesList,\n setUnitHistoriesLoading,\n setZephyrCoveragesList,\n} from '../../../actions/dataAnalytics';\n\nimport {\n customTimePeriod,\n virtualZephyrsPollutants,\n} from '../../../utils/consts';\n\nimport { decompress } from 'lz-string';\nimport moment from 'moment';\nimport {\n getZephyrData,\n setDraggedUnit,\n setZephyrInEditMode,\n setZephyrs,\n} from '../../../actions/zephyrs';\nimport {\n dateFinder,\n defaultStartEndFinder,\n startEndFinder,\n utcConvertor,\n} from '../../../utils/functions/dateFinder';\nimport { speciesExtentFinder } from '../../../utils/functions/speciesExtentFinder';\nimport {\n AveragingPeriod,\n AveragingPeriods,\n DataConfig,\n DisplayConfig,\n PeriodOptions,\n Pollutant,\n ReduxState,\n TimePeriod,\n TimePeriods,\n UrlQueryStringParams,\n UserInfo,\n Zephyr,\n ZephyrCoverages,\n} from '../../../utils/interface';\nimport Accordion from '../../shared_components/Accordions';\nimport { InitStateFilters } from '../../shared_components/Aside';\nimport BasicPopover from '../../shared_components/BasicPopover';\nimport { getZephyrType } from '../ReactGridLayout/ReactGridLayout';\n\nimport SaveViewIcon from '../../../assets/images/save-view.svg';\nimport LoadViewIcon from '../../../assets/images/load-view.svg';\nimport RunViewIcon from '../../../assets/images/run-view.svg';\nimport ArrowRightIcon from '../../../assets/images/arrow-right.svg';\nimport HTMLReactParser from 'html-react-parser';\nimport { useLocation } from 'react-router-dom';\nimport Spinner from '../../shared_components/Spinner';\nimport UnitList from './UnitList/UnitList';\nimport AnalysisTour from './AnalysisTour';\n\nfunction getDateByPeriod(value: PeriodOptions): Date | null {\n const now = new Date();\n\n const periodMap: Record Date | null> = {\n '24': () => new Date(now.getTime() - 24 * 60 * 60 * 1000),\n '48': () => new Date(now.getTime() - 48 * 60 * 60 * 1000),\n '72': () => new Date(now.getTime() - 72 * 60 * 60 * 1000),\n 'week': () => new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000),\n 'month': () => {\n const newDate = new Date(now);\n newDate.setMonth(now.getMonth() - 1);\n return newDate;\n },\n 'custom': () => null,\n };\n\n const calculateFn = periodMap[value];\n return calculateFn() ? calculateFn() : null;\n}\n\ninterface ZephyrListGrouped {\n [key: string]: Zephyr[];\n}\ninterface FilterBar1Props {\n displayConfig: DisplayConfig;\n timePeriods: TimePeriods;\n averagingPeriods: AveragingPeriods;\n queryStringParams: UrlQueryStringParams;\n dataConfig: DataConfig;\n getZephyrData: Function;\n setUnitHistoriesList: Function;\n setUnitHistoriesLoading: Function;\n unitHistoriesLoading: boolean;\n unitHistoriesList: any;\n dseOn: boolean;\n bearerToken: string | null;\n increaseArrivedRequests: Function;\n restartArrivedRequests: Function;\n nullableUnits: number[];\n setNullableUnits: Function;\n toProceed: boolean | null;\n proceedWithAnalysis: Function;\n viewLoaded: boolean;\n setIsViewLoaded: Function;\n isCartridgeDataLoading: boolean | null;\n isGetZephyrHistoricalDataLoading: boolean;\n isDataAvailabilityChartLoading: boolean;\n mappairPointMode: boolean;\n unitList: Zephyr[];\n setZephyrCoveragesList: Function;\n toggleSaveAndLoadViewModals: Function;\n zephyrCoveragesList: any[];\n zephyrsPollutantData: any;\n setZephyrsPollutantData: Function;\n selectedTimePeriod: TimePeriod | null;\n setSelectedTimePeriod: Function;\n selectedTimeAveraging: AveragingPeriod | null;\n setSelectedTimeAveraging: Function;\n isViewLoaded: boolean;\n setViewLoaded: Function;\n customDate: { start: Date, end: Date };\n setCustomDate: Function;\n startDate: Date;\n setStartDate: Function;\n endDate: Date;\n setEndDate: Function;\n initialRenderSet: boolean;\n setInitialRenderSet: Function;\n userInfo: UserInfo;\n};\n\nexport interface AnalyticsOptionsProperties {\n id: number;\n text: string;\n isSelected: boolean;\n}\n\nexport interface AnalyticsOptions {\n devices: AnalyticsOptionsProperties;\n pollutants: AnalyticsOptionsProperties;\n timeAverage: AnalyticsOptionsProperties;\n timePeriod: AnalyticsOptionsProperties;\n}\n\nconst tPaP = {\n timePeriods: 'tP',\n averagingPeriods: 'aP',\n};\n\nconst ZephyrsKey = '0'\nconst VirtualZephyrsKey = \"100\";\nexport const selectedDeviceKeys = [ZephyrsKey, VirtualZephyrsKey];\n\n\nconst chemicalJSXMap: { [key: string]: React.ReactNode } = {\n \"NO2\": (\n \n NO\n 2\n \n ),\n \"O3\": (\n \n O\n 3\n \n ),\n \"PM1\": (\n \n PM\n 1\n \n ),\n \"PM10\": (\n \n PM\n 10\n \n ),\n \"PM25\": (\n \n PM\n 2.5\n \n ),\n \"CO2\": (\n \n CO\n 2\n \n ),\n \"SO2\": (\n \n SO\n 2\n \n ),\n \"H2S\": (\n \n H\n 2\n S\n \n ),\n};\n\nexport interface AnchorObject {\n anchorId: number,\n anchorEl: HTMLButtonElement | null\n};\n\n// View Component\nconst FilterBar1 = ({\n unitHistoriesLoading,\n isGetZephyrHistoricalDataLoading,\n mappairPointMode,\n toggleSaveAndLoadViewModals,\n setZephyrCoveragesList,\n isDataAvailabilityChartLoading,\n displayConfig,\n timePeriods,\n averagingPeriods,\n queryStringParams,\n dataConfig,\n getZephyrData,\n setUnitHistoriesList,\n setUnitHistoriesLoading,\n unitHistoriesList,\n dseOn,\n bearerToken,\n increaseArrivedRequests,\n restartArrivedRequests,\n nullableUnits,\n setNullableUnits,\n toProceed,\n proceedWithAnalysis,\n viewLoaded,\n setIsViewLoaded,\n isCartridgeDataLoading,\n unitList,\n zephyrCoveragesList,\n zephyrsPollutantData,\n setZephyrsPollutantData,\n selectedTimePeriod,\n setSelectedTimePeriod,\n selectedTimeAveraging,\n setSelectedTimeAveraging,\n isViewLoaded,\n setViewLoaded,\n customDate,\n setCustomDate,\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n initialRenderSet,\n setInitialRenderSet,\n userInfo\n}: FilterBar1Props) => {\n const analysisTourOpen = useSelector((state: ReduxState) => state.analysisTourOpen);\n const [editingModeFilterBarOn, toggleEditingMode] = useState(true);\n const [deviceApplied, setDeviceApplied] = useState(false);\n const [pollutantApplied, setPollutantApplied] = useState(false);\n const [timePeriodApplied, setTimePeriodApplied] = useState(false);\n const [timeAverageApplied, setTimeAverageApplied] = useState(false);\n const [unitHistories, setUnitHistories] = useState([]);\n const [loading, setLoading] = useState(false);\n\n // extract of analytics buttons below - 2 states\n const [toggleCustom, setToggleCustom] = useState(false);\n\n const [accordionIndexes, setAccordionIndexes] = useState<{ [key: number]: boolean }>({\n 0: true,\n 1: false,\n 2: false,\n 3: false\n });\n\n const [anchorElements, setAnchorElements] = useState([\n { anchorId: 0, anchorEl: null },\n { anchorId: 1, anchorEl: null },\n { anchorId: 2, anchorEl: null },\n { anchorId: 3, anchorEl: null },\n ]);\n\n const location = useLocation();\n\n useEffect(() => {\n if (initialRenderSet) {\n (async () => {\n await generateHistoricalData();\n setInitialRenderSet(false);\n })();\n }\n }, [initialRenderSet]);\n\n useEffect(() => {\n if (unitList?.length) {\n setZephyrsPollutantData((prevState: any) => {\n const prevStateCopy = { ...prevState };\n prevStateCopy.filteredZephyrs = [...getUpdatedFilteredZephyrsList()];\n return prevStateCopy;\n });\n }\n }, [unitList]);\n\n useEffect(() => {\n if (!loading && unitHistories.length > 0) {\n setUnitHistoriesList({\n id: Math.random(),\n isLoaded: true,\n historiesList: [...unitHistories],\n });\n setUnitHistoriesLoading(false);\n }\n proceedWithAnalysis(null);\n }, [loading]);\n\n useEffect(() => {\n if (nullableUnits.length > 0) setNullableUnits([]);\n }, [zephyrsPollutantData.filteredZephyrs, dseOn]);\n\n const getUpdatedFilteredZephyrsList = () => {\n let zephyrsCopy: Zephyr[] = [...unitList];\n const { filteredZephyrs } = zephyrsPollutantData;\n zephyrsCopy = zephyrsCopy.map((zephyr: Zephyr) => {\n if (filteredZephyrs.length) {\n const filteredZephyr = filteredZephyrs.find(\n (z: Zephyr) => z.zNumber === zephyr.zNumber,\n );\n if (filteredZephyr?.isSelected) zephyr.isSelected = true;\n else zephyr.isSelected = false;\n } else zephyr.isSelected = false;\n return zephyr;\n });\n return zephyrsCopy;\n };\n\n const convertedTimeToUTCAndUpdatedDataConfig = () => {\n const defaultStartEnd = defaultStartEndFinder();\n let { end, start } = defaultStartEnd;\n if (selectedTimePeriod && selectedTimePeriod.timeOption === 'custom') {\n start = moment(customDate.start)\n .set({ h: 0, m: 0, s: 0 })\n .format('YYYYMMDDHHmm');\n const unformattedEnd = moment(customDate.end).set({\n h: 23,\n m: 59,\n s: 59,\n });\n const current = moment();\n const selectedEnd = current < unformattedEnd ? current : unformattedEnd;\n end = selectedEnd.format('YYYYMMDDHHmm');\n } else if (selectedTimePeriod && selectedTimePeriod.timeOption) {\n const startEnd = startEndFinder(selectedTimePeriod.timeOption);\n start = startEnd.start;\n end = startEnd.end;\n }\n\n // Convert start/end\n const startUTC = utcConvertor(start);\n const endUTC = utcConvertor(end);\n const updatedDataConfig = queryStringParams.ctv\n ? { ...dataConfig, ctv: queryStringParams.ctv }\n : dataConfig;\n return { startUTC, endUTC, updatedDataConfig, start, end };\n };\n\n const getZephyrHistoryData = async (zephyr: Zephyr) => {\n const {\n startUTC,\n endUTC,\n updatedDataConfig,\n start,\n end,\n } = convertedTimeToUTCAndUpdatedDataConfig();\n const { pollutantData } = zephyrsPollutantData;\n const selectedPollutants = pollutantData.filter(\n (pollutant: Pollutant) => pollutant.isChecked,\n );\n const { averagingOption } = selectedTimeAveraging!;\n const newUnitHistory = await getZephyrData(\n zephyr,\n selectedTimePeriod!.timeOption,\n startUTC,\n endUTC,\n updatedDataConfig,\n true,\n bearerToken,\n 1,\n location.pathname === '/',\n dseOn ? dseOn : undefined,\n selectedPollutants,\n location.pathname.includes('analysis'),\n averagingOption\n );\n return { newUnitHistory, start, end };\n };\n\n const resetViewsStateFromLocalStorage = () => {\n // this function needs to be reusable as we use it in Header.tsx as well\n if (\n JSON.parse(localStorage.getItem('unitHistoryViews') as any) &&\n JSON.parse(localStorage.getItem('unitHistoryViews') as any).length > 0\n ) {\n const views = JSON.parse(localStorage.getItem('unitHistoryViews') as any);\n views.forEach((view: any) => {\n if (view.isLoaded && view.isSelected) {\n view.isLoaded = false;\n view.isSelected = false;\n }\n });\n localStorage.setItem('unitHistoryViews', JSON.stringify([...views]));\n }\n };\n\n const resetConfigurations = () => {\n setZephyrsPollutantData((prevState: any) => {\n const prevStateCopy = { ...prevState };\n prevStateCopy.filteredZephyrs = prevStateCopy.filteredZephyrs.map(\n (zephyr: Zephyr) => {\n if (zephyr.isSelected) zephyr.isSelected = false;\n return zephyr;\n },\n );\n prevStateCopy.pollutantData = null;\n return prevStateCopy;\n });\n setSelectedTimeAveraging(null);\n setSelectedTimePeriod(null);\n setUnitHistories([]);\n };\n\n const removeUnitHistoriesDuplicates = (\n selectedZephyrs: Zephyr[],\n prevUnitHistories: any,\n ) => {\n const selectedZephyrsKeys = selectedZephyrs.map((z: Zephyr) => z.zNumber);\n const filteredUnitHistories: any = [];\n selectedZephyrsKeys.forEach((zNumber: number) => {\n const validZephyr = prevUnitHistories.filter(\n (z: any) => z && parseInt(Object.keys(z)[0]) === zNumber,\n );\n filteredUnitHistories.push(validZephyr[0]);\n });\n return filteredUnitHistories;\n };\n\n const updateSelectedAnalyticsOptions = (\n newUnitHistory: any,\n zephyrZNumber: number,\n name: string,\n start: any,\n end: any,\n HasMetStation: number | null\n ) => {\n const { pollutantData } = zephyrsPollutantData;\n let newUnitHistoryObj: any = {};\n newUnitHistory['name'] = name;\n newUnitHistory['selectedPollutants'] = pollutantData.filter(\n (p: Pollutant) => p.isChecked,\n );\n newUnitHistory['selectedAveragingPeriod'] = selectedTimeAveraging;\n newUnitHistory['selectedTimePeriod'] = selectedTimePeriod;\n newUnitHistory['selectedDate'] = { start, end };\n newUnitHistory['HasMetStation'] = HasMetStation;\n if (selectedTimePeriod?.timeOption === 'custom')\n newUnitHistory['selectedCustomDate'] = customDate;\n else if (\n (selectedTimePeriod as any)?.timeOption !== 'custom' &&\n 'selectedCustomDate' in newUnitHistory\n )\n newUnitHistory['selectedCustomDate'] = null;\n newUnitHistoryObj[zephyrZNumber] = newUnitHistory;\n return newUnitHistoryObj;\n };\n\n const handleUnitExistanceValidationAndGetUpdatedUnitHistories = (\n prevUnitHistories: any,\n selectedZephyrs: Zephyr[],\n newUnitHistoryObj: any,\n zephyrZNumber: number,\n ) => {\n const isZephyrInList = prevUnitHistories.find(\n (z: any) => z && parseInt(Object.keys(z)[0]) === zephyrZNumber,\n );\n if (!isZephyrInList)\n prevUnitHistories = [...prevUnitHistories, newUnitHistoryObj];\n else {\n const updatedUnitHistories = [...prevUnitHistories];\n updatedUnitHistories[\n updatedUnitHistories.indexOf(isZephyrInList)\n ] = newUnitHistoryObj;\n prevUnitHistories = [...updatedUnitHistories];\n }\n if (\n prevUnitHistories.length > 0 &&\n prevUnitHistories.length > selectedZephyrs.length\n )\n prevUnitHistories = [\n ...removeUnitHistoriesDuplicates(selectedZephyrs, prevUnitHistories),\n ];\n return prevUnitHistories;\n };\n\n const hasSelectedZephyrAndPollutant = () => {\n const { filteredZephyrs, pollutantData } = zephyrsPollutantData;\n const hasSelectedZephyr = filteredZephyrs?.some(\n (z: Zephyr) => z.isSelected,\n );\n const hasCheckedPollutant = pollutantData?.some(\n (p: Pollutant) => p.isChecked,\n );\n return { hasSelectedZephyr, hasCheckedPollutant };\n };\n\n const handleFilterBarModeUpdate = () => {\n if (!userInfo.isPublic || window.innerWidth >= 767) toggleEditingMode(!editingModeFilterBarOn);\n else toggleEditingMode(true);\n };\n\n const checkBeforeGenerateHistoricalData = async () => {\n const { filteredZephyrs, pollutantData } = zephyrsPollutantData;\n const hasSelectedZephyr = filteredZephyrs?.some(\n (z: Zephyr) => z.isSelected,\n );\n const hasCheckedPollutant = pollutantData?.some(\n (p: Pollutant) => p.isChecked,\n );\n\n if (\n hasSelectedZephyr &&\n hasCheckedPollutant &&\n selectedTimePeriod &&\n selectedTimeAveraging\n ) {\n await generateHistoricalData();\n handleFilterBarModeUpdate();\n } else {\n alert(\n 'Please select at least one unit, pollutant, time average, and time period!',\n );\n }\n };\n\n const generateHistoricalData = async () => {\n // call getZephyrData function to get the last selected zephyr's historical data and update the unitHistories state\n const { filteredZephyrs } = zephyrsPollutantData;\n const selectedZephyrs = filteredZephyrs.filter((z: Zephyr) => z.isSelected);\n\n if (selectedZephyrs.length > 0) {\n (async () => {\n setUnitHistoriesLoading(true);\n setLoading(true);\n let counter = 0;\n for await (const zephyr of selectedZephyrs) {\n getZephyrHistoryData(zephyr).then((zephyrHistoryData) => {\n const { newUnitHistory, start, end } = zephyrHistoryData;\n if (!newUnitHistory.data && !nullableUnits.includes(zephyr.zNumber))\n setNullableUnits(zephyr.zNumber);\n setUnitHistories((prevUnitHistories: any) => {\n const { name, zNumber: zephyrZNumber, HasMetStation } = zephyr;\n const newUnitHistoryObj = updateSelectedAnalyticsOptions(\n newUnitHistory,\n zephyrZNumber,\n name,\n start,\n end,\n HasMetStation\n );\n prevUnitHistories = [\n ...handleUnitExistanceValidationAndGetUpdatedUnitHistories(\n prevUnitHistories,\n selectedZephyrs,\n newUnitHistoryObj,\n zephyrZNumber,\n ),\n ];\n return prevUnitHistories;\n });\n counter++;\n increaseArrivedRequests();\n if (counter === selectedZephyrs.length) {\n setLoading(false);\n restartArrivedRequests();\n }\n });\n }\n })();\n return;\n }\n alert('Cannot stack more than 5 units!');\n };\n\n useEffect(() => {\n const handleFilterBarUpdateOnPublicPortals = () => {\n if (window.innerWidth < 768) toggleEditingMode(true);\n };\n if (userInfo.isPublic) {\n window.addEventListener('resize', handleFilterBarUpdateOnPublicPortals);\n\n return () => {\n window.removeEventListener('resize', handleFilterBarUpdateOnPublicPortals)\n };\n }\n }, []);\n\n useEffect(() => {\n if (isViewLoaded) {\n (async () => {\n await checkBeforeGenerateHistoricalData();\n setViewLoaded(false);\n })();\n }\n }, [isViewLoaded])\n\n const onChangeDateRangePicker = (dates: any[]) => {\n const [start, end] = dates;\n setStartDate(start);\n setEndDate(end);\n if (start && end) {\n setCustomDate({ start: start.toISOString(), end: end.toISOString() });\n }\n };\n\n const handlePollutantSelection = (pollutant: Pollutant) => {\n setPollutantApplied(true)\n const { pollutantData } = zephyrsPollutantData;\n const pollutantDataCopy = [...pollutantData];\n const pollutantToChange = pollutantDataCopy.find(\n (p: Pollutant) => p.dataIdentifier === pollutant.dataIdentifier,\n );\n if (pollutantToChange) {\n const pollutantIdx = pollutantDataCopy.indexOf(pollutantToChange);\n pollutantToChange.isChecked = !pollutantToChange.isChecked;\n pollutantDataCopy[pollutantIdx] = pollutantToChange;\n }\n setZephyrsPollutantData((prevState: any) => {\n const prevStateCopy = { ...prevState };\n prevStateCopy.pollutantData = pollutantDataCopy;\n return prevStateCopy;\n });\n };\n\n const bulkPollutantsStateUpdate = (bool: boolean) => {\n setZephyrsPollutantData((prevState: any) => {\n const prevStateCopy = { ...prevState };\n prevStateCopy.pollutantData.forEach((pollutant: Pollutant) => {\n if (\n bool &&\n !pollutant.isChecked &&\n pollutant.dataIdentifier !== 'tempC' &&\n pollutant.dataIdentifier !== 'ambTempC' &&\n pollutant.dataIdentifier !== 'ambHumidity' &&\n pollutant.dataIdentifier !== 'ambPressure'\n )\n pollutant.isChecked = bool;\n else if (\n !bool &&\n pollutant.isChecked &&\n pollutant.dataIdentifier !== 'tempC' &&\n pollutant.dataIdentifier !== 'ambTempC' &&\n pollutant.dataIdentifier !== 'ambHumidity' &&\n pollutant.dataIdentifier !== 'ambPressure'\n )\n pollutant.isChecked = bool;\n });\n return prevStateCopy;\n });\n };\n\n const selectAllPollutants = (event: any) => {\n setPollutantApplied(true)\n if (event.target.checked) {\n bulkPollutantsStateUpdate(true);\n return;\n }\n bulkPollutantsStateUpdate(false);\n };\n\n const areAllPollutantCheckboxesChecked = () => {\n const { pollutantData } = zephyrsPollutantData;\n const pollutants = pollutantData\n .filter(\n (pollutant: Pollutant) =>\n pollutant.dataIdentifier !== 'tempC' &&\n pollutant.dataIdentifier !== 'ambTempC' &&\n pollutant.dataIdentifier !== 'ambHumidity' &&\n pollutant.dataIdentifier !== 'ambPressure',\n )\n .map((pollutant: Pollutant) => pollutant);\n return (\n pollutants.filter((pollutant: Pollutant) => pollutant.isChecked)\n .length === pollutants.length\n );\n };\n\n const extractPolluntantUnitCards = () => {\n const { pollutantData } = zephyrsPollutantData;\n const filteredPollutantData = [...pollutantData].filter(\n (pollutant: Pollutant) =>\n pollutant.dataIdentifier !== 'tempC' &&\n pollutant.dataIdentifier !== 'ambHumidity' &&\n pollutant.dataIdentifier !== 'ambPressure',\n );\n filteredPollutantData\n .unshift({ dataIdentifier: 'All' });\n\n return filteredPollutantData.map(\n (pollutant: Pollutant) => {\n const { dataIdentifier } = pollutant;\n if (dataIdentifier === 'All') {\n return (\n \n \n {pollutant.dataIdentifier}\n \n );\n }\n\n let inputLabel = chemicalJSXMap[dataIdentifier] || dataIdentifier\n if (dataIdentifier.includes('particulate')) {\n const particulate = dataIdentifier.split('particulate')[1]\n inputLabel = chemicalJSXMap[particulate] || particulate\n }\n\n return (\n \n {\n handlePollutantSelection(pollutant as Pollutant);\n }}\n />\n {inputLabel}\n \n );\n },\n );\n };\n\n const getGuardRailsStylesForVZephyrs = (filteredZephyrs: Zephyr[] | undefined, option: string, averagingOption: string): React.CSSProperties | undefined => {\n return filteredZephyrs && filteredZephyrs.find((zephyr: Zephyr) => zephyr.type === 100 && zephyr.isSelected) && option === 'aP' && averagingOption !== 'Hourly average on the hour' && averagingOption !== '8 hour average at midnight and 8am and 4pm' && averagingOption !== 'Daily average at midnight' ?\n { pointerEvents: 'none', opacity: 0.4 } : undefined;\n };\n\n const extractTimeAndAveragingPeriodsUnitCards = (option: string, filteredZephyrs?: Zephyr[]) => {\n const modifiedTimePeriods = Object.assign({}, timePeriods, {\n periods: [...timePeriods.periods, { ...customTimePeriod }],\n });\n const modifiedAveragingPeriods = {\n periods: averagingPeriods.periods.filter(\n (aPeriod: AveragingPeriod) => {\n if (userInfo.isPublic) return aPeriod.averagingOption === '15 min average on the quarter hours' || aPeriod.averagingOption === 'Hourly average on the hour' || aPeriod.averagingOption === '8 hour average at midnight and 8am and 4pm' || aPeriod.averagingOption === 'Daily average at midnight'\n return aPeriod.averagingOption !== 'Unaveraged'\n },\n ),\n };\n const curOption: any =\n option === 'tP' ? modifiedTimePeriods : modifiedAveragingPeriods;\n const curState =\n option === 'tP' ? selectedTimePeriod : selectedTimeAveraging;\n return (\n
    \n
    \n {curOption.periods.map((period: TimePeriod | AveragingPeriod) => (\n \n {option === 'aP' ||\n ('timeOption' in period && period.timeOption !== 'custom') ? (\n <>\n \n {\n if (option === 'tP') {\n setTimePeriodApplied(true)\n const p = period as TimePeriod;\n const { timeOption } = p;\n setSelectedTimePeriod(p);\n\n const dateAgo = getDateByPeriod(timeOption);\n if (dateAgo) {\n setStartDate(dateAgo);\n setEndDate(new Date());\n }\n\n if (toggleCustom) {\n setToggleCustom(false);\n }\n } else {\n setTimeAverageApplied(true)\n setSelectedTimeAveraging(period as AveragingPeriod);\n }\n }}\n />\n {option === 'aP' && period.labelHTML === 'None'\n ? 'Raw'\n : period.labelHTML}\n \n \n ) : (\n
    \n \n
    \n )}\n
    \n ))}\n
    \n
    \n {toggleCustom && option === 'tP' ? (\n \n ) : null}\n
    \n \n );\n };\n\n const addUnitToAnalyticsList = (unit: Zephyr) => {\n setDeviceApplied(true);\n setZephyrsPollutantData((prevState: any) => {\n const prevStateCopy = { ...prevState };\n const unitToChange = prevStateCopy.filteredZephyrs.find(\n (z: Zephyr) => z.zNumber === unit.zNumber,\n );\n if (unitToChange) {\n unitToChange.isSelected = !unitToChange.isSelected;\n }\n return prevStateCopy;\n });\n };\n\n const extractAnalyticsOptions = () => {\n const { filteredZephyrs, pollutantData } = zephyrsPollutantData;\n const areAnyZephyrsSelected = filteredZephyrs.some(\n (zephyr: Zephyr) => zephyr.isSelected,\n );\n const isPollutantDataEmpty =\n pollutantData !== null && pollutantData.length === 0;\n const getDateRange = (dateObj: Date | string): string => {\n const formatter = new Intl.DateTimeFormat('en-GB', {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n });\n\n if (typeof dateObj === 'string') {\n // Handle the case when dateObj is a string (e.g., '2024-02-06T19:10:12.000Z')\n const parsedDate = new Date(dateObj);\n const formattedDate = formatter.format(parsedDate);\n return formattedDate;\n }\n\n // For Date objects, format as usual\n const formattedDate = dateObj ? formatter.format(dateObj) : '';\n return formattedDate;\n };\n\n const getUnitHistoriesListNames = (\n filteredZephyrs: Zephyr[] = [],\n ): string => {\n const names = filteredZephyrs\n .map((zephyr: Zephyr) => {\n if (zephyr.isSelected) {\n return (\n zephyr.zNumber ||\n zephyr.name ||\n zephyr.alias ||\n ''\n ).toString();\n }\n return null;\n })\n .filter((name) => name); // This will filter out falsy values (null, undefined, '')\n\n return names.join(', ');\n };\n\n const getCheckedPollutantsList = (\n pollutants: Pollutant[] = [],\n ): React.ReactNode[] => {\n if (!pollutants || !pollutants.length) return [''];\n\n const checkedPollutants = pollutants.filter(\n (pollutant: Pollutant) => pollutant.isChecked,\n );\n const allChecked = areAllPollutantCheckboxesChecked();\n\n if (allChecked) {\n return ['All pollutants'];\n } else {\n return checkedPollutants.map((pollutant: Pollutant) =>\n HTMLReactParser(pollutant.HTMLLabel),\n );\n }\n };\n\n const getSelectedTimePeriodText = (customDate: any, startDate?: Date, endDate?: Date) => {\n let text = selectedTimePeriod?.labelHTML || '';\n if (text === 'Custom') {\n text =\n getDateRange(customDate.start) + ' - ' + getDateRange(customDate.end);\n }\n if (startDate && endDate) {\n text = getDateRange(startDate) + ' - ' + getDateRange(endDate);\n }\n return text;\n };\n\n const getSelectedTimeAverageText = () => {\n const text = selectedTimeAveraging?.labelHTML || '';\n return text;\n };\n\n const toggleFilter1Edit = (event: any) => {\n toggleEditingMode(!editingModeFilterBarOn);\n };\n\n const pollutantsListElements: React.ReactNode[] = getCheckedPollutantsList(\n zephyrsPollutantData.pollutantData,\n );\n\n const selectedDevicesText = getUnitHistoriesListNames(filteredZephyrs);\n const selectedDevicesTextElement = selectedDevicesText && deviceApplied ? (\n
    \n {selectedDevicesText}\n
    \n ) : Devices\n\n const selectedPollutantsTextElement = pollutantsListElements.length > 0 && pollutantApplied ? (\n
    \n {pollutantsListElements.map((element, index) => (\n \n {element}\n {index < pollutantsListElements.length - 1 && (\n <>{', '}\n )}\n \n ))}\n
    \n ) : Pollutants\n\n const selectedTimePeriodTextElement = selectedTimePeriod?.labelHTML && timePeriodApplied ? (\n {selectedTimePeriod.labelHTML}\n ) : Time Period\n\n const selectedTimeAveragingElement = selectedTimeAveraging?.labelHTML && timeAverageApplied ? (\n {selectedTimeAveraging.labelHTML}\n ) : Time Average\n\n return (\n \n {unitHistoriesList.isLoaded && !analysisTourOpen ? (\n \n \n
    \n {selectedDevicesTextElement}\n
    \n\n
    \n {selectedPollutantsTextElement}\n
    \n\n
    \n {getSelectedTimePeriodText(customDate, startDate, endDate)}{' '}\n (UTC)\n
    \n
    \n {getSelectedTimeAverageText()}\n
    \n {\n // checkBeforeGenerateHistoricalData;\n toggleEditingMode(!editingModeFilterBarOn);\n }}\n >\n \n \n \n {!userInfo.isPublic && (\n
    \n {unitHistories && (\n {\n toggleSaveAndLoadViewModals('save');\n }}\n >\n \n Save View\n \n )}\n {\n toggleSaveAndLoadViewModals('load');\n }}\n >\n \n Load View\n \n
    \n )}\n \n ) : null}\n\n \n \n\n {/*
    */}\n
    \n <>\n \n
    \n \n
    \n \n\n \n
    \n {!areAnyZephyrsSelected && (\n

    No zephyrs selected

    \n )}\n {isPollutantDataEmpty && areAnyZephyrsSelected && (\n

    No pollutants for selected unit/s

    \n )}\n {zephyrsPollutantData.pollutantData &&\n zephyrsPollutantData.pollutantData.length > 0 &&\n extractPolluntantUnitCards()}\n
    \n \n\n \n
    \n {timePeriods.periods.length > 0 &&\n extractTimeAndAveragingPeriodsUnitCards(tPaP.timePeriods)}\n
    \n \n\n \n
    \n {averagingPeriods.periods.length > 0 &&\n extractTimeAndAveragingPeriodsUnitCards(\n tPaP.averagingPeriods,\n filteredZephyrs,\n )}\n
    \n \n \n
    \n\n {unitList.length ? (\n \n ) : null}\n
    \n \n );\n };\n\n return
    {extractAnalyticsOptions()}
    ;\n};\n\nconst TaskBarCtas = ({\n filteredZephyrs,\n pollutantData,\n selectedTimePeriod,\n selectedTimeAveraging,\n checkBeforeGenerateHistoricalData,\n toggleSaveAndLoadViewModals,\n unitHistoriesLoading,\n unitHistories,\n resetViewsStateFromLocalStorage,\n zephyrCoveragesList,\n hasSelectedZephyrAndPollutant,\n userInfo,\n}: any) => {\n return (\n
    \n
    \n {hasSelectedZephyrAndPollutant().hasSelectedZephyr && hasSelectedZephyrAndPollutant().hasCheckedPollutant && selectedTimeAveraging && selectedTimePeriod ? \n Run\n \n : Select Data to Proceed}\n \n
    \n {!userInfo.isPublic &&
    \n {unitHistories.isLoaded && (\n {\n toggleSaveAndLoadViewModals('save');\n }}\n >\n \n Save View\n \n )}\n\n {\n toggleSaveAndLoadViewModals('load');\n }}\n >\n \n Load View\n \n
    }\n\n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n isZephyrsLoading: state.getZephyrs.loading,\n zephyrs: state.getZephyrs.zephyrs,\n isGetZephyrHistoricalDataLoading: state.getZephyrHistoricalData.loading,\n mappairPointMode: state.showAQMALayer.mappairPointModeOn,\n unitList: state.getZephyrs.zephyrs,\n curZephyr: state.setZephyr.zephyr,\n displayConfig: state.setDisplayConfig,\n timePeriods: state.setTimePeriods,\n averagingPeriods: state.setAveragingPeriods,\n queryStringParams: state.queryStringParams,\n dataConfig: state.dataConfig,\n unitHistoriesLoading: state.unitHistoriesOptions.isUnitHistoriesLoading,\n unitHistoriesList: state.unitHistoriesOptions.unitHistories,\n dseOn: state.unitHistoriesOptions.dseOn,\n bearerToken: state.auth.bearerToken,\n nullableUnits: state.unitHistoriesOptions.nullableUnits,\n toProceed: state.unitHistoriesOptions.toProceed,\n viewLoaded: state.unitHistoriesOptions.viewLoaded,\n isCartridgeDataLoading: state.unitHistoriesOptions.isCartridgeDataLoading,\n zephyrCoveragesList: state.unitHistoriesOptions.zephyrCoveragesList,\n isDataAvailabilityChartLoading:\n state.unitHistoriesOptions.isDataAvailabilityChartLoading,\n userInfo: state.auth.userInfo,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n getZephyrData,\n setUnitHistoriesList,\n setUnitHistoriesLoading,\n increaseArrivedRequests,\n restartArrivedRequests,\n setNullableUnits,\n proceedWithAnalysis,\n setIsViewLoaded,\n setDraggedUnit,\n setZephyrInEditMode,\n setZephyrs,\n setZephyrCoveragesList,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FilterBar1);\n","import * as React from 'react';\nimport { useSelector } from 'react-redux';\nimport { ReduxState } from '../utils/interface';\n\nconst baseUrl = process.env.REACT_APP_DEVICE_MANAGER_URL;\n\nexport default function useDeviceManagerLink() {\n const { user, bearerToken } = useSelector((state: ReduxState) => state.auth);\n\n const apiPath = '/api/auth/token';\n const callbackUrl = '/device-manager';\n\n const url = `${baseUrl}${apiPath}?accessToken=${bearerToken}&username=${user}&callbackUrl=${callbackUrl}`;\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n if (bearerToken && user) \n window.location.href = url;\n };\n\n return {\n url,\n handleClick,\n };\n}\n","import React, { useEffect, useState } from 'react';\nimport { gtmEventIdentifiers, helpResourceLink, privacyPolicyLink, routePaths } from '../../../utils/consts';\nimport { useTranslation } from 'react-i18next';\nimport { NavLink, useHistory, useLocation, withRouter } from 'react-router-dom';\nimport analyticsEventFirer from '../../../utils/functions/analyticsEventFirer';\nimport { startTour } from '../../../actions/tour';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { connect, useDispatch } from 'react-redux';\nimport { setContactModalOn } from '../../../actions/modal';\nimport { logout } from '../../../actions/auth';\nimport useDeviceManagerLink from '../../../hooks/useDeviceManagerLink';\nimport { AQ101, UserInfo } from '../../../utils/interface';\n\ninterface Props {\n userInfo: UserInfo;\n isMobileNavOpened: boolean;\n setIsMobileNavOpened: Function;\n logout: Function;\n showTourMenu: boolean;\n setVersionHistoryOpen: Function;\n setTutorialOpen: Function;\n startTour: Function;\n setContactModalOn: Function;\n aq101: AQ101;\n setAQ101On: Function;\n setAQ101Off: Function;\n}\n\nconst MobileNavigationMenu = ({ userInfo, isMobileNavOpened, setIsMobileNavOpened, logout, showTourMenu, setVersionHistoryOpen, setTutorialOpen, startTour, setContactModalOn, aq101, setAQ101On, setAQ101Off }: Props) => {\n const [history, location] = [useHistory(), useLocation()];\n const { t: translate } = useTranslation();\n const [isHelpMenuOpened, setIsHelpMenuOpened] = useState(false);\n const dispatch = useDispatch();\n const { handleClick: handleDeviceManagerClick, url } = useDeviceManagerLink();\n\n const handleToggleHelpMenu = () => {\n setIsHelpMenuOpened(state => !state);\n };\n\n const handleCloseMobileNavMenu = () => {\n setIsMobileNavOpened(false);\n };\n\n useEffect(() => {\n if (!isMobileNavOpened) setIsHelpMenuOpened(false);\n }, [isMobileNavOpened]);\n\n return (\n
    \n {!userInfo.isPublic && \n }\n {userInfo.isPublic &&
      \n {userInfo.today ? (\n <>\n
    • \n \n {translate('TodayTitle')}\n \n
    • \n \n ) : (\n <>\n )}\n
    • \n \n {translate('LocationHeaderPublic')}\n \n
    • \n
    • \n \n {translate('DataAnalyticsHeader')}\n \n
    • \n
    • \n {\n if (aq101.on) {\n setAQ101Off();\n } else {\n setAQ101On();\n }\n }}\n >\n {translate('AirQuality101Title')}\n \n
    • \n
    • \n \n {translate('CouncilProjectTitle')}\n \n
    • \n
    }\n
    \n )\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n startTour,\n setContactModalOn,\n logout\n },\n dispatch,\n );\n\nexport default connect(null, mapDispatchToProps)(MobileNavigationMenu);\n\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport { NavLink, useHistory, useLocation, withRouter } from 'react-router-dom';\nimport { connect, useDispatch } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\nimport Select from 'react-select';\nimport { i18n } from '../../translations/i18n';\n// Component Imports\nimport AirQuality101 from '../view_components/AirQuality101';\nimport Aside, { InitStateFilters } from './Aside';\nimport Dropdown from './Dropdown';\nimport Feedback from '../view_components/Feedback';\nimport HeaderContactModal from '../view_components/HeaderContactModal';\nimport HeaderTutorialModal from '../view_components/HeaderTutorialModal';\nimport HeaderVersionHistoryModal from '../view_components/HeaderVersionHistoryModal';\nimport MappairQuoteModal from '../view_components/MappairQuoteModal';\nimport Modal from './Modal';\nimport Slider from './Slider';\nimport Spinner from './Spinner';\nimport Tooltip from './Tooltip';\nimport RemoveZephyrModal from '../view_components/RemoveZephyrModal';\n\n// Action Imports\nimport { logout, setVersions } from '../../actions/auth';\nimport { changeOverlayLayer, changeOverlayOpacity } from '../../actions/layers';\nimport { startTour } from '../../actions/tour';\nimport { setThresholdTab } from '../../actions/stylegroups';\nimport { setAQ101Off, setAQ101On } from '../../actions/aq101';\nimport {\n setContactModalOn,\n setMappairQuoteModalOn,\n setModalsOff,\n} from '../../actions/modal';\nimport setLocale from '../../actions/setLocale';\n\n// Util Imports\nimport { dateFinder } from '../../utils/functions/dateFinder';\nimport analyticsEventFirer from '../../utils/functions/analyticsEventFirer';\nimport { wideScreenFinder } from '../../utils/functions/wideScreenFinder';\nimport { tallScreenFinder } from '../../utils/functions/tallScreenFinder';\nimport utilsRequest from '../../utils/request';\n\n// Const Imports\nimport {\n defaultContactForm,\n defaultMappairForm,\n gtmEventIdentifiers,\n helpResourceLink,\n privacyPolicyLink,\n routePaths,\n defaultVZephyrsConfig,\n translationOptions,\n staticPollutantsList,\n} from '../../utils/consts';\n\n// Asset Imports\nimport esLogoMain from '../../assets/images/logo-white-text.png';\nimport esLogoBeta from '../../assets/images/logo-white-text-beta.png';\n\n// Type Imports\nimport {\n AQ101,\n ContactForm,\n Loading,\n Modal as ModalType,\n Overlay,\n ReduxState,\n Stylegroup,\n UserInfo,\n Zephyr,\n VZephyrsConfig,\n translationOption,\n ShowAQMALayer,\n TimePeriod,\n AveragingPeriod,\n Pollutant,\n} from '../../utils/interface';\nimport { ModularFeatures } from '../../reducers/modularFeatures';\nimport AnalyticsViewModal from '../view_components/AnalyticsViewModal';\nimport { setUnitHistoriesList } from '../../actions/dataAnalytics';\nimport AnalyticsFeedbackForm from '../view_components/AnalyticsFeedbackForm';\nimport FilterBar1 from '../view_components/FilterBar/FilterBar1';\nimport MobileNavigationMenu from '../view_components/MobileNavigation/MobileNavigationMenu';\nimport useDeviceManagerLink from '../../hooks/useDeviceManagerLink';\n\nlet esLogo = esLogoMain;\nif (process.env.REACT_APP_SERVER === 'beta') esLogo = esLogoBeta;\n\n// Component Interfaces\ninterface InitState {\n accountMenuOpen: boolean;\n contactFormOpen: boolean;\n contactFormOptions: ContactForm;\n helpMenuOpen: boolean;\n mappairQuoteFormOpen: boolean;\n tutorialOpen: boolean;\n versionHistoryOpen: boolean;\n vZephyrsConfig: VZephyrsConfig;\n selectedVZephyrToDelete: Zephyr | null;\n isSaveViewOpened: boolean;\n isLoadViewOpened: boolean;\n feedbackModalOn: boolean;\n}\n\ninterface HeaderProps {\n activeStylegroup: string;\n aq101: AQ101;\n changeOverlayLayer: Function;\n changeOverlayOpacity: Function;\n loading: Loading;\n logout: Function;\n mappAirFilters: boolean;\n modal: ModalType;\n opacity: number;\n overlay: string;\n overlays: Overlay[];\n setAQ101Off: Function;\n setAQ101On: Function;\n setContactModalOn: Function;\n setMappairQuoteModalOn: Function;\n setModalsOff: Function;\n setThresholdTab: Function;\n setZephyr: Zephyr;\n curZephyr: Zephyr;\n startTour: Function;\n stylegroups: Stylegroup[];\n tourOpen: boolean;\n tourOpenHelp: boolean;\n userInfo: UserInfo;\n zephyrList: Zephyr[];\n locale: String;\n setLocale: Function;\n setVersions: Function;\n vZephyrsConfig: VZephyrsConfig;\n annualAveragesOn: boolean;\n modularFeatures: ModularFeatures;\n bearerToken: string | null;\n mappairOptions: ShowAQMALayer;\n unitHistories: any;\n unitHistoriesLoading: boolean;\n setUnitHistoriesList: Function;\n layouts: any;\n setLayouts: Function;\n setScatterChartsCounter: Function;\n getUserVirtualZephyrs: Function;\n}\n\nfunction DeviceManagerLink() {\n const { t: translate } = useTranslation();\n const { url, handleClick } = useDeviceManagerLink();\n \n return (\n \n {translate('FleetManagementHeader')}\n \n )\n}\n\n// Component\nconst Header = ({\n activeStylegroup,\n aq101,\n curZephyr,\n changeOverlayLayer,\n changeOverlayOpacity,\n logout,\n loading,\n mappAirFilters,\n modal,\n opacity,\n overlay,\n overlays,\n setAQ101Off,\n setAQ101On,\n setContactModalOn,\n setMappairQuoteModalOn,\n setModalsOff,\n setThresholdTab,\n setZephyr,\n startTour,\n stylegroups,\n tourOpen,\n tourOpenHelp,\n userInfo,\n zephyrList,\n locale,\n setLocale,\n setVersions,\n vZephyrsConfig,\n annualAveragesOn,\n modularFeatures,\n bearerToken,\n mappairOptions,\n unitHistories,\n unitHistoriesLoading,\n setUnitHistoriesList,\n layouts,\n setLayouts,\n setScatterChartsCounter,\n getUserVirtualZephyrs,\n}: HeaderProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n accountMenuOpen: false,\n contactFormOpen: false,\n contactFormOptions: defaultContactForm,\n helpMenuOpen: false,\n mappairQuoteFormOpen: false,\n tutorialOpen: false,\n versionHistoryOpen: false,\n vZephyrsConfig: defaultVZephyrsConfig,\n selectedVZephyrToDelete: null,\n isSaveViewOpened: false,\n isLoadViewOpened: false,\n feedbackModalOn: false,\n };\n\n const [accountMenuOpen, setAccountMenuOpen] = useState(\n initState.accountMenuOpen,\n );\n const [contactFormOptions, setContactFormOptions] = useState(\n initState.contactFormOptions,\n );\n const [helpMenuOpen, setHelpMenuOpen] = useState(initState.helpMenuOpen);\n const [tutorialOpen, setTutorialOpen] = useState(initState.tutorialOpen);\n const [versionHistoryOpen, setVersionHistoryOpen] = useState(\n initState.versionHistoryOpen,\n );\n const [selectedVZephyrToDelete, setSelectedVZephyrToDelete] = useState(\n initState.selectedVZephyrToDelete,\n );\n const [currentPollutant, setCurrentPollutant] = useState('');\n const [alertDropdownOpened, setAlertsDropdownOpened] = useState(false);\n const [isSaveViewOpened, setIsSaveViewOpened] = useState(\n initState.isSaveViewOpened,\n );\n const [isLoadViewOpened, setIsLoadViewOpened] = useState(\n initState.isLoadViewOpened,\n );\n const [feedbackModalOn, setFeedbackModalOn] = useState(\n initState.feedbackModalOn,\n );\n const [\n selectedTimePeriod,\n setSelectedTimePeriod,\n ] = useState(null);\n const [zephyrsPollutantData, setZephyrsPollutantData] = useState({\n filteredZephyrs: InitStateFilters.filteredZephyrs,\n pollutantData: staticPollutantsList,\n });\n const [\n selectedTimeAveraging,\n setSelectedTimeAveraging,\n ] = useState(null);\n const [isViewNameValidated, setIsViewNameValidated] = useState(false);\n const [views, setViews] = useState([]);\n const [viewLoaded, setViewLoaded] = useState(false);\n const [customDate, setCustomDate] = useState({\n start: dateFinder(new Date(), 1, true),\n end: new Date(),\n });\n const [startDate, setStartDate] = useState(dateFinder(new Date(), 1, true));\n const [endDate, setEndDate] = useState(new Date());\n const [isMobileNavOpened, setIsMobileNavOpened] = useState(false);\n const [initialRenderSet, setInitialRenderSet] = useState(false);\n const hasRunInitalRenderEffect = useRef(false);\n\n useEffect(() => {\n if (overlay) {\n const prevOverlay = overlays.filter((ol) => ol.name === overlay)[0];\n const newOverlay = overlays.filter(\n (ol) =>\n ol.name !== prevOverlay.name &&\n ol.speciesIdentifier === prevOverlay.speciesIdentifier &&\n ol.accessGranted &&\n (mappAirFilters\n ? ol.isMappairOverlay || ol.isSAOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay),\n );\n if (newOverlay.length) {\n handleChangeOverlay(newOverlay[0].name);\n } else {\n const newChangedOverlay = overlays.filter(\n (ol) =>\n (mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay) && ol.accessGranted,\n );\n if (newChangedOverlay && newChangedOverlay.length) {\n handleChangeOverlay(newChangedOverlay[0].name);\n }\n }\n }\n }, [mappAirFilters]);\n\n // Consts\n const [history, location] = [useHistory(), useLocation()];\n\n // Functions\n const getCurrentSpecies = () => {\n if (overlay) {\n const filteredOverlays = currentPollutant\n ? overlays.filter((ol) => ol.speciesIdentifier === currentPollutant)\n : null;\n const curSpecies =\n filteredOverlays && filteredOverlays.find((ol) => ol.name === overlay)\n ? filteredOverlays.filter((ol) => ol.name === overlay)[0]\n .speciesIdentifier\n : overlays.filter((ol) => ol.name === overlay)[0].speciesIdentifier;\n return curSpecies;\n }\n return '';\n };\n\n const getCurrentSpeciesObj = () => {\n if (overlay) {\n const filteredOverlays = currentPollutant\n ? overlays.filter((ol) => ol.speciesIdentifier === currentPollutant)\n : null;\n const curSpecies =\n filteredOverlays && filteredOverlays.find((ol) => ol.name === overlay)\n ? filteredOverlays.filter((ol) => ol.name === overlay)[0]\n : overlays.filter((ol) => ol.name === overlay)[0];\n return curSpecies;\n }\n return null;\n };\n\n const getSourcesDropdown = () => {\n let sourcesDropdown: Overlay[] = [];\n if (overlay && mappAirFilters) {\n const curSpecies = getCurrentSpecies();\n const curSpeciesWithSA = overlays.filter(\n (ol) => ol.speciesIdentifier === curSpecies && ol.isSAOverlay,\n );\n sourcesDropdown = curSpeciesWithSA;\n }\n return sourcesDropdown;\n };\n\n const getSourceSelection = () => {\n const saSelectionCheck = overlays.filter(\n (ol) => ol.name === overlay && ol.isSAOverlay,\n );\n if (saSelectionCheck.length) {\n return saSelectionCheck[0].name;\n }\n return 'none';\n };\n\n const handleChangeOverlay = async (updatedOverlay: string) => {\n const newThreshold = stylegroups.filter(\n (sg) => sg.name === activeStylegroup,\n )[0].thresholds;\n if (!newThreshold[updatedOverlay]) {\n if (updatedOverlay) await handleMissingAnnualColourscale(updatedOverlay);\n }\n await changeOverlayLayer(updatedOverlay);\n };\n\n const handleContactDialog = (on: boolean, initContactFormOptions?: any) => {\n if (!on) {\n setContactFormOptions(defaultContactForm);\n } else if (initContactFormOptions) {\n setContactFormOptions({\n ...defaultContactForm,\n formData: {\n ...defaultContactForm.formData,\n ...initContactFormOptions,\n },\n });\n }\n if (on) {\n setContactModalOn();\n } else {\n setModalsOff();\n }\n };\n\n const handleSpeciesDropdown = async (\n id: string,\n updatedSpeciesIdentifier: string,\n ) => {\n const newOverlay = overlays.filter(\n (ol) =>\n ol.speciesIdentifier === updatedSpeciesIdentifier &&\n (mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay),\n )[0];\n await handleChangeOverlay(newOverlay.name);\n // Analytics\n analyticsEventFirer(\n gtmEventIdentifiers.pollutantSelect,\n newOverlay.speciesIdentifier,\n );\n };\n\n const handleSourcesDropdown = async (id: string, updatedOverlay: string) => {\n const curSpecies = getCurrentSpecies();\n const sourcesOff = updatedOverlay === 'none';\n const newOverlay = !sourcesOff\n ? updatedOverlay\n : overlays.filter(\n (ol) => ol.speciesIdentifier === curSpecies && ol.isMappairOverlay,\n )[0].name;\n await handleChangeOverlay(newOverlay);\n // Analytics\n const labelEnrichment = sourcesOff ? 'Off' : newOverlay;\n analyticsEventFirer(gtmEventIdentifiers.sourceSelect, labelEnrichment);\n };\n\n const unSubSelectedVZephyr = async () => {\n if (!selectedVZephyrToDelete) {\n setSelectedVZephyrToDelete(null);\n return;\n }\n const res = await utilsRequest.unsubFromVZephyr(\n selectedVZephyrToDelete.id_pod,\n bearerToken,\n );\n if (res) {\n // const newZephyrsList = unitList.filter(\n // (vZephyr) => vZephyr.id_pod !== unit.id_pod,\n // );\n // setZephyrs(newZephyrsList);\n // Above code is breaking map ui, so will have to manipulate DOM for now\n\n const target = document.getElementById(\n String(selectedVZephyrToDelete.id_pod),\n );\n if (target) {\n const parent = target?.parentElement;\n if (parent) parent.removeChild(target);\n }\n\n const unitCard = document.querySelector(\n `.unit-card-${selectedVZephyrToDelete.zNumber}`,\n );\n if (unitCard) {\n const parent = unitCard?.parentElement;\n if (parent) parent.removeChild(unitCard);\n }\n }\n setSelectedVZephyrToDelete(null);\n };\n\n const handleChangeLanguage = (selectedOption: any) => {\n const valueSelected = selectedOption.value;\n setLocale(selectedOption);\n i18n.changeLanguage(valueSelected);\n // history.push(`/?lng=${valueSelected}`);\n };\n\n const getSetVersions = async () => {\n // get/set versions\n if (!localStorage.getItem('Versions')) {\n const versions = await utilsRequest.getVersions(bearerToken);\n localStorage.setItem('Versions', JSON.stringify(versions)); // use redux state\n setVersions(versions);\n }\n };\n\n const latestSelectedPollutant = () => {\n const newOverlay = overlays.filter(\n (ol) =>\n ol.speciesIdentifier === currentPollutant &&\n (mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay),\n )[0];\n return newOverlay;\n };\n\n const toggleSaveAndLoadViewModals = (view: string) => {\n switch (view) {\n case 'save':\n setIsSaveViewOpened(true);\n break;\n case 'load':\n setIsLoadViewOpened(true);\n break;\n }\n };\n\n const resetViewsStateFromLocalStorage = () => {\n // this function needs to be reusable as we use it in Header.tsx as well\n if (\n JSON.parse(localStorage.getItem('unitHistoryViews') as any) &&\n JSON.parse(localStorage.getItem('unitHistoryViews') as any).length > 0\n ) {\n const views = JSON.parse(localStorage.getItem('unitHistoryViews') as any);\n views.forEach((view: any) => {\n if (view.isLoaded && view.isSelected) {\n view.isLoaded = false;\n view.isSelected = false;\n }\n });\n localStorage.setItem('unitHistoryViews', JSON.stringify([...views]));\n }\n };\n\n const handleMissingAnnualColourscale = async (updatedOverlay: string) => {\n const annualActiveGroupString = 'AA national';\n const isAnnualColourscaleEnabled = stylegroups\n .filter((sg) => sg.name === annualActiveGroupString)\n .find((sg) => updatedOverlay in sg.thresholds);\n if (\n mappairOptions.showOverlayLayer &&\n !isAnnualColourscaleEnabled &&\n activeStylegroup === annualActiveGroupString\n ) {\n const hourColourscale = stylegroups.find(\n (s: any) => s.displayedName === 'Earthsense (Hourly)',\n );\n if (hourColourscale && hourColourscale.thresholds[updatedOverlay]) {\n await setThresholdTab(hourColourscale.name);\n }\n }\n };\n\n useEffect(() => {\n (async () => {\n await getSetVersions();\n })();\n }, []);\n\n useEffect(() => {\n // Get all views\n (async () => {\n try {\n const userViews = await utilsRequest.getUserViews(bearerToken);\n for await (const view of userViews) {\n view.isSelected = false;\n }\n setViews([...userViews]);\n } catch (e) {\n setViews([]);\n }\n })();\n }, []);\n\n useEffect(() => {\n // run initial analysis, using first 1/2 zephyrs\n if (!hasRunInitalRenderEffect.current && Array.isArray(unitHistories) && zephyrList.length > 0) {\n hasRunInitalRenderEffect.current = true;\n const newUnitList = [...zephyrList];\n newUnitList[0].isSelected = true;\n if (zephyrList.length > 1) {\n newUnitList[1].isSelected = true;\n }\n setZephyrsPollutantData((prevState: any) => {\n prevState.filteredZephyrs = newUnitList;\n prevState.pollutantData.forEach((pollutant: Pollutant) => {\n if (\n pollutant.dataIdentifier !== 'tempC' &&\n pollutant.dataIdentifier !== 'ambTempC' &&\n pollutant.dataIdentifier !== 'ambHumidity' &&\n pollutant.dataIdentifier !== 'ambPressure'\n )\n pollutant.isChecked = true;\n });\n return prevState;\n });\n setSelectedTimePeriod({ labelHTML: '24 Hours', timeOption: '24' });\n setSelectedTimeAveraging({ labelHTML: '1 Hour', averagingOption: 'Hourly average on the hour' });\n setInitialRenderSet(true);\n }\n }, [zephyrList]);\n\n useEffect(() => {\n document.body.classList.toggle('no-scroll', isMobileNavOpened);\n if (isMobileNavOpened) {\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n }, [isMobileNavOpened])\n\n const dispatch = useDispatch();\n\n const hideTourMenuOnPages = location.pathname.includes('data') || location.pathname.includes('fleetManagement');\n const showTourMenu = zephyrList.length > 0 && !hideTourMenuOnPages;\n\n return (\n <>\n {localStorage.getItem('token') ? (\n
    \n {/* Main header: logo, help, account icon */}\n
    \n
    \n
    \n {userInfo && userInfo.title ? (\n <>\n \n \n
    \n
    {userInfo.title}
    \n
    \n {userInfo.subtitle}\n
    \n
    \n
    \n \n ) : (\n
    \n \n \n \n
    \n )}\n
    \n
    \n \n
    \n\n {modularFeatures.fleetManagement[\n userInfo.isPublic ? 'isPublic' : 'isPrivate'\n ] ? (\n
  • \n \n
  • \n ) : (\n <>\n )}\n \n \n
    \n\n {/* loader */}\n {loading.zephyrLastHour || loading.aurnLastHour ? (\n
    \n
    \n {loading.zephyrLastHour\n ? translate('LoadingZephyrHeader')\n : translate('LoadingAURNHeader')}\n
    \n \n
    \n ) : (\n <>\n )}\n\n {/* right menu */}\n {!userInfo.isPublic ? (\n <>\n \n
    \n \n {/*
  • {LocaleSelect(handleChangeLanguage, locale)}
  • */}\n \n \n \n ) : (\n \n )}\n
    { setIsMobileNavOpened((state: boolean) => !state); }}>\n {!isMobileNavOpened && \n \n }\n {isMobileNavOpened && \n \n }\n
    \n \n \n \n\n {location.pathname.includes('analysis') && (\n \n )}\n\n {/* Subheader plus aside (location/data/time) */}\n {!location.pathname.includes('analysis') && (\n
    \n \n
    \n )}\n\n {/* Mappair/species header */}\n {(!location.pathname.includes('analysis') &&\n location.pathname.includes('data')) ||\n location.pathname.includes('alerts') ||\n location.pathname.includes('today') ||\n location.pathname.includes('analytics') ||\n !overlays.filter((ol) =>\n mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay\n ? zephyrList && zephyrList.length\n : !ol.isMappairOverlay,\n ).length ? (\n \n {location.pathname === '/' &&\n !loading.aurnLastHour &&\n !loading.initApp &&\n !loading.zephyrLastHour &&\n overlays.length === 0 ? (\n

    No overlays available

    \n ) : null}\n \n ) : (\n \n {!location.pathname.includes('fleetManagement') &&\n !location.pathname.includes('analysis') ? (\n \n
  • \n {translate('SpeciesSubHeader')}\n {overlays.filter((ol) =>\n mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay,\n ).length > 1 ? (\n \n mappAirFilters\n ? ol.isMappairOverlay\n : userInfo.isPublic ? ol.nameHTML === 'Air Quality Index' || (!ol.isMappairOverlay && !ol.isSAOverlay) : !ol.isMappairOverlay && !ol.isSAOverlay,\n )\n .map((indOverlay) => ({\n value: indOverlay.speciesIdentifier,\n label: indOverlay.nameHTML,\n }))}\n annualAveragesOn={annualAveragesOn}\n dynamicStyles={true}\n />\n ) : (\n
    \n {parse(\n getCurrentSpeciesObj()\n ? getCurrentSpeciesObj()!.nameHTML\n : '',\n )}\n
    \n )}\n
  • \n {userInfo.isPublic &&\n overlays.filter((ol) =>\n mappAirFilters\n ? ol.isMappairOverlay\n : !ol.isMappairOverlay && !ol.isSAOverlay,\n ).length < 2 &&\n (!wideScreenFinder(800) || !tallScreenFinder(500)) ? (\n
  • \n
      \n
    • \n
      \n
      \n
      \n AQ Monitor\n
    • \n
    • \n
      \n
      \n
      \n
      \n
      \n DEFRA AQ Monitor\n
    • \n
    \n
  • \n ) : (\n <>\n )}\n {getSourcesDropdown().length && !userInfo.isPublic ? (\n
  • \n {translate('SourcesSubHeader')}\n \n ({\n value: gsd.name,\n label: gsd.nameHTML,\n })),\n ]}\n />\n
  • \n ) : (\n <>\n )}\n {!userInfo.isPublic ? (\n
  • \n \n
  • \n ) : (\n <>\n )}\n \n ) : (\n <>\n )}\n {!userInfo.isPublic ? (\n <>\n {!location.pathname.includes('analysis') && (\n setMappairQuoteModalOn()}\n className=\"prompt-button wide-prompt-button\"\n type=\"button\"\n >\n {translate('MappairUpgradePrompt')}\n \n )}\n\n {/* {location.pathname.includes('analysis') && (\n \n setFeedbackModalOn((prevState: boolean) => !prevState)\n }\n className=\"prompt-button wide-prompt-button\"\n type=\"button\"\n >\n {translate('FeedbackPrompt')}\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 if (aq101.on) {\n setAQ101Off();\n } else {\n setAQ101On();\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\nconst mapStateToProps = (state: ReduxState, ownProps: any) => ({\n activeStylegroup: state.setThresholdTab.tab,\n aq101: state.aq101,\n loading: state.loading,\n mappAirFilters: state.mappAirFilters.showMappAirFilters,\n modal: state.modal,\n opacity: state.showAQMALayer.opacity,\n overlay: state.showAQMALayer.overlay,\n overlays: state.setOverlays,\n stylegroups: state.getStyleGroups.styleGroups,\n setZephyr: state.setZephyr.zephyr,\n curZephyr: state.setZephyr.zephyr,\n tourOpen: state.tour.openTour,\n tourOpenHelp: state.tour.openHelp,\n userInfo: state.auth.userInfo,\n zephyrList: state.getZephyrs.zephyrs,\n locale: state.setLocale,\n vZephyrsConfig: ownProps.vZephyrsConfig,\n annualAveragesOn: state.showAQMALayer.showAALayer,\n modularFeatures: state.modularFeatures,\n bearerToken: state.auth.bearerToken,\n mappairOptions: state.showAQMALayer,\n unitHistories: state.unitHistoriesOptions.unitHistories,\n unitHistoriesLoading: state.unitHistoriesOptions.isUnitHistoriesLoading,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n changeOverlayLayer,\n changeOverlayOpacity,\n logout,\n setAQ101Off,\n setAQ101On,\n setContactModalOn,\n setMappairQuoteModalOn,\n setModalsOff,\n setThresholdTab,\n startTour,\n setLocale,\n setVersions,\n setUnitHistoriesList,\n },\n dispatch,\n );\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(Header));\n\nfunction LocaleSelect({\n handleChangeLanguage,\n locale,\n}: {\n handleChangeLanguage: (selectedOption: any) => void;\n locale: String\n}) {\n return (\n opts.value === locale)}\n formatOptionLabel={(opt: translationOption) => {\n return (\n \n {opt.label}\n \n );\n }}\n />\n );\n}\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport { RouteComponentProps, useLocation, withRouter } from 'react-router-dom';\nimport { connect } from 'react-redux';\nimport parse from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\n\n// Content Imports\nimport { routePaths } from '../../utils/consts';\n\nimport LogoBeta from '../../assets/images/logo_beta.png';\nimport LogoMain from '../../assets/images/logo.png';\n\n// Type Imports\nimport { ReduxState } from '../../utils/interface';\n\nvar Logo = LogoMain;\nvar greetingText = 'Welcome to MyAir';\nvar greetingIntro =\n 'View, manage, and download your MappAir and Zephyr air quality data.';\n// Asset Imports\nif (process.env.REACT_APP_SERVER == 'development') {\n greetingText = 'Welcome to MyAir dev';\n greetingIntro =\n 'View, manage, and download your MappAir and Zephyr air quality data. Development Version.';\n} else if (process.env.REACT_APP_SERVER == 'production') {\n} else if (process.env.REACT_APP_SERVER == 'beta') {\n greetingText = 'Welcome to MyAir Beta';\n greetingIntro =\n 'View, manage, and download your MappAir and Zephyr air quality data, previewing and testing our latest features!';\n Logo = LogoBeta;\n}\n\n// Component Interfaces\ninterface InitState {\n formData: { username: string; password: string };\n queryString: null;\n seePassword: boolean;\n passwordFieldActive: boolean;\n}\n\ninterface LoginProps extends RouteComponentProps {\n basename: string;\n isAuthenticated: boolean;\n loginFailed: boolean;\n setAuthReq: Function;\n}\n\n// Create an array of objects representing environment variables\nconst envVars: { [key: string]: string | number | undefined }[] = [];\nfor (let key in process.env) {\n envVars.push({ Variable: key, string: process.env[key] });\n}\n\n\n// Component\nconst Login = ({\n basename,\n isAuthenticated,\n loginFailed,\n setAuthReq,\n}: LoginProps) => {\n const { t: translate } = useTranslation();\n\n localStorage.removeItem('token');\n localStorage.removeItem('key');\n localStorage.removeItem('user');\n localStorage.removeItem('data');\n localStorage.removeItem('isPublic');\n // State\n const initState: InitState = {\n formData: { username: '', password: '' },\n queryString: null,\n seePassword: false,\n passwordFieldActive: false,\n };\n\n const [formData, setFormData] = useState(initState.formData);\n const [seePassword, setSeePassword] = useState(initState.seePassword);\n const [passwordFieldActive, setPasswordFieldActive] = useState(\n initState.passwordFieldActive,\n );\n // Consts\n const { username, password } = formData;\n const location = useLocation();\n\n // Effects\n // Functions\n const usernameChange = (username: string) => {\n setFormData({ ...formData, username });\n };\n\n const passwordChange = (password: string) => {\n setFormData({ ...formData, password });\n };\n\n const handleLogin = async (e: React.SyntheticEvent) => {\n e.preventDefault();\n setAuthReq({\n internal: basename === 'internal',\n isAuthenticated: false,\n password,\n queryString: initState.queryString,\n username,\n });\n };\n\n\n var developer_environmentVariableTools = 'developer_environmentVariableTools';\n\n return (\n
    \n \n
    \n
    \n

    {parse(greetingText)}

    \n

    {greetingIntro}

    \n {/* Conditionally render the table */}\n {localStorage.getItem(developer_environmentVariableTools) && envVars.length > 0 && (\n \n \n \n \n \n \n \n \n {envVars.map((envVar, index) => (\n \n \n \n \n ))}\n \n
    VariableValue
    {envVar.Variable}{envVar.string}
    \n )}\n
    \n
    \n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n isAuthenticated: state.auth.isAuthenticated,\n loginFailed: state.auth.loginFailed\n});\n\nexport default withRouter(connect(mapStateToProps, {})(Login));\n","// Type Imports\nimport { Stylegroup } from '../interface';\n\n/* Function\nDESC: qualityCalculator finds the indexed value for a given raw AQ value\nARGS: AQ value(e.g. 12), species name(e.g. NO2), styleGroupName(e.g. ES), styleGroups(derived from API)\n*/\nconst qualityCalculator = (\n value: number,\n species: string,\n styleGroupName: string,\n stylegroups: Stylegroup[],\n) => {\n if (typeof value === 'number') {\n if (species !== 'UK AQI') {\n const styleGroup = stylegroups.filter(\n (group) => group.name === styleGroupName,\n )[0].thresholds[species];\n let qualityScore = 0;\n styleGroup.forEach((threshold) => {\n if (value >= threshold.min) {\n qualityScore += 1;\n }\n });\n return qualityScore;\n }\n return value;\n }\n return '';\n};\n\nexport default qualityCalculator;\n","// Types Imports\nimport { LocationCoordinates, MappairSpecies } from '../interface';\n\n// Util Imports\nimport utilsRequest from '../request';\nimport { formatGoogleAddress } from './googleFormatter';\nimport { dateFinder } from './dateFinder';\n\nconst averageAQIData = (data: any[], startIndex: number, endIndex: number) => {\n const subset = data.slice(startIndex, endIndex + 1);\n\n // Calculate the average value for the subset\n const total = subset.reduce((sum, item) => sum + item.value, 0);\n const averageValue = (total / subset.length).toFixed(); // Round the average to a whole number\n\n // Find the object in the subset whose value is closest to the average\n let closestMatch = subset[0];\n let smallestDifference = Math.abs(subset[0].value - +averageValue);\n\n subset.forEach(item => {\n const difference = Math.abs(item.value - +averageValue);\n if (difference < smallestDifference) {\n closestMatch = item;\n smallestDifference = difference;\n }\n });\n\n // Extract the first part of the timestamp (the date)\n const date = closestMatch.timestamp.split(\" \")[0];\n\n // Return the object with the averaged value and matching properties\n return {\n timestamp: date,\n value: Number(averageValue),\n units: closestMatch.units,\n layer: closestMatch.layer,\n label: closestMatch.label,\n advice: closestMatch.advice,\n advice_sensitive: closestMatch.advice_sensitive,\n behavioural_change: closestMatch.behavioural_change,\n };\n}\n\nexport const todayDataPackager = async (\n species: MappairSpecies,\n latlon: LocationCoordinates,\n bearerToken: string | null,\n) => {\n const startDate = dateFinder(new Date, 0, false);\n const endDate = dateFinder(new Date(), 2, false);\n\n startDate.setUTCHours(0, 0, 0, 0); // Set to 00:00:00 UTC\n endDate.setUTCHours(23, 59, 59, 999); // Set to 23:59:59 UTC\n\n const dates = { startDT: startDate.toISOString(), endDT: endDate.toISOString() };\n const speciesList = `${species}`;\n const rawTodayData = await utilsRequest.getTodayData(\n speciesList,\n latlon,\n 1,\n bearerToken,\n dates,\n );\n if (rawTodayData && rawTodayData.meta.timestamps) {\n rawTodayData.meta.timestamps = [rawTodayData.meta.timestamps[0].split(' ')[0], rawTodayData.meta.timestamps[24].split(' ')[0], rawTodayData.meta.timestamps[48].split(' ')[0]];\n const { values_coordinates } = rawTodayData.results[0];\n const { values_timestamps } = values_coordinates[0];\n const day1 = averageAQIData(values_timestamps, 0, 23);\n const day2 = averageAQIData(values_timestamps, 24, 47);\n const day3 = averageAQIData(values_timestamps, 48, 72);\n rawTodayData.results[0].values_coordinates[0].values_timestamps = [day1, day2, day3];\n }\n const googleLocation = await utilsRequest.getLocation(latlon);\n const locationDesc =\n googleLocation.results && googleLocation.results.length\n ? formatGoogleAddress(googleLocation.results[0].formatted_address)\n : 'Unknown';\n const enhancedTodayData = {\n ...rawTodayData,\n location: { latlon, desc: locationDesc },\n };\n return enhancedTodayData;\n};","// Types Imports\nimport { Dispatch } from 'redux';\nimport { SET_TODAY_DATA } from './types';\n\n// Action Creators\nexport const setTodayData = (todayData: any) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_TODAY_DATA,\n payload: todayData,\n });\n};\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport parse from 'html-react-parser';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { useTranslation } from 'react-i18next';\n\n// Component Imports\nimport GaugeChart from 'react-gauge-chart';\n\n// Util Imports\nimport qualityCalculator from '../../utils/functions/qualityCalculator';\nimport {\n colourConverter,\n colourFinder,\n} from '../../utils/functions/colourFinder';\nimport utilsRequest from '../../utils/request';\nimport { formatGoogleAddress } from '../../utils/functions/googleFormatter';\nimport { todayDataPackager } from '../../utils/functions/todayDataPackager';\n\n// Const Imports\nimport {\n speciesMap,\n TodayContent,\n todaySubspeciesMap,\n} from '../../utils/consts';\n\n// Action Imports\nimport { setAQ101On, setAQ101Section } from '../../actions/aq101';\nimport { setTodayData } from '../../actions/today';\n\n// Type Imports\nimport {\n DisplayConfig,\n GooglePlace,\n Overlay,\n PlacePrediction,\n ReduxState,\n Stylegroup,\n TodayData,\n TodayDatasetsPackaged,\n UserInfo,\n} from '../../utils/interface';\n\ninterface InitState {\n curDay: number;\n packagedTodayData: TodayDatasetsPackaged | null;\n predictions: PlacePrediction[];\n search: string;\n searchOn: boolean;\n}\n\ninterface TodayProps {\n displayConfig: DisplayConfig;\n overlay: string;\n overlays: Overlay[];\n setAQ101On: Function;\n setAQ101Section: Function;\n setTodayData: Function;\n stylegroups: Stylegroup[];\n thresholdTab: string;\n todayData: TodayData | null;\n userInfo: UserInfo;\n bearerToken: string | null;\n}\n\n// Component\nconst Today = ({\n displayConfig,\n overlay,\n overlays,\n setAQ101On,\n setAQ101Section,\n setTodayData,\n stylegroups,\n thresholdTab,\n todayData,\n userInfo,\n bearerToken,\n}: TodayProps) => {\n const { t: translate } = useTranslation();\n\n // State\n const initState: InitState = {\n curDay: 0,\n packagedTodayData: null,\n predictions: [],\n search: '',\n searchOn: false,\n };\n\n const [curDay, setCurDay] = useState(initState.curDay);\n const [packagedTodayData, setPackagedTodayData] = useState(\n initState.packagedTodayData,\n );\n const [predictions, setPredictions] = useState(initState.predictions);\n const [search, setSearch] = useState(initState.search);\n const [searchOn, setSearchOn] = useState(initState.searchOn);\n\n // Consts\n const inputEl = useRef(null);\n\n // Effects\n useEffect(() => {\n if (todayData) {\n const formattedTodayData: any = todayData.meta.timestamps.map(() => []);\n todayData.results.forEach((r) => {\n r.values_coordinates[0].values_timestamps.forEach(\n (rvt: any, idx: number) => {\n const year = parseInt(rvt.timestamp.slice(6, 10));\n const day = parseInt(rvt.timestamp.slice(0, 2));\n const month = parseInt(rvt.timestamp.slice(3, 5)) - 1;\n const newDate = new Date(year, month, day);\n const dayOfWeek = newDate.toString().slice(0, 3);\n const newRVT = {\n advice: rvt.advice,\n advice_sensitive: rvt.advice_sensitive,\n behavioural_change: rvt.behavioural_change,\n day: dayOfWeek,\n label: rvt.label,\n species: speciesMap[r.species],\n timestamp: rvt.timestamp,\n unit: r.units || rvt.units || '',\n value: rvt.value,\n };\n formattedTodayData[idx].push(newRVT);\n },\n );\n });\n const finalPackagedTodayData = {\n data: formattedTodayData,\n species: todayData.meta.species_list,\n location: todayData.location,\n };\n setPackagedTodayData(finalPackagedTodayData);\n }\n }, [todayData]);\n\n // Need this because MA species mismatch, TODO: change MA species or create new map config\n const getCurOverlay = () => {\n const curOverlay = getSpeciesLabel()\n ? overlays.filter((ol) => ol.name === overlay)[0]\n : overlays.filter((ol) => ol.name.toLowerCase().includes('aqi'))[0];\n return curOverlay;\n };\n\n const getSpeciesColor = (val: number) => {\n const curOverlay = getCurOverlay();\n const speciesColor = colourFinder(\n curOverlay,\n stylegroups,\n thresholdTab,\n 0.9,\n overlays,\n val,\n 'mappair',\n );\n return speciesColor;\n };\n\n const getSpeciesColorArray = () => {\n const curOverlay = getCurOverlay();\n const curStylegroups = stylegroups.filter(\n (group) => group.name === thresholdTab,\n );\n if (curStylegroups.length && curOverlay) {\n const colors: string[] = [];\n const thresholds = curStylegroups[0].thresholds[curOverlay.name];\n thresholds.forEach((th) => {\n const rgb = { r: `${th.r}`, g: `${th.g}`, b: `${th.b}` };\n const color = colourConverter(rgb);\n colors.push(`#${color}`);\n });\n return colors;\n }\n return [];\n };\n\n const getSpeciesLabel = () => {\n // Empty string as AQI needs no further header\n let speciesLabel = '';\n if (userInfo.todaySpecies) {\n displayConfig.tabs.forEach((tab) => {\n tab.species.forEach((sp) => {\n if (sp.label.toLowerCase() === userInfo!.todaySpecies) {\n speciesLabel = `: ${sp.HTMLLabel}`;\n }\n });\n });\n }\n return speciesLabel;\n };\n\n const getSpeciesScore = (val: number) => {\n if (getSpeciesLabel()) {\n const speciesScore = qualityCalculator(\n val,\n overlay,\n thresholdTab,\n stylegroups,\n );\n return speciesScore;\n }\n // AQI scores are 0 based\n return val + 1;\n };\n\n const getGaugePercentage = () => {\n let aqPercentage = 0;\n if (packagedTodayData) {\n const curVal = packagedTodayData.data[curDay][0].value;\n if (typeof curVal === 'number' && curVal !== -999) {\n const aqScore = getSpeciesScore(curVal);\n if (aqScore) {\n aqPercentage = aqScore / 10;\n }\n }\n }\n return aqPercentage;\n };\n\n const handleAQ101 = (sectionId?: string) => {\n if (sectionId) {\n setAQ101Section(sectionId);\n }\n setAQ101On();\n };\n\n const handlePlaceSelection = async (placeId: string) => {\n const place = await utilsRequest.getLocationFromPlaceId(placeId);\n if (place.results.length && userInfo.today && userInfo.todaySpecies) {\n const { lat, lng } = place.results[0].geometry.location;\n const updatedTodayData = await todayDataPackager(userInfo.todaySpecies, [\n lat,\n lng,\n ], bearerToken);\n if (updatedTodayData) {\n setTodayData(updatedTodayData);\n }\n }\n setSearchOn(false);\n setSearch('');\n };\n\n const handleSearch = async (input: string) => {\n if (input) {\n const searchBias = [\n userInfo.minLat,\n userInfo.minLng,\n userInfo.maxLat,\n userInfo.maxLng,\n ];\n await utilsRequest.getLocationSuggestions(\n input,\n searchBias,\n (googlePredictions: GooglePlace[]) => {\n if (googlePredictions && googlePredictions.length) {\n const updatedPredictions = googlePredictions.map((gp) => ({\n description: gp.description,\n placeId: gp.place_id,\n }));\n if (updatedPredictions.length > 3) {\n updatedPredictions.length = 3;\n }\n setPredictions(updatedPredictions);\n }\n },\n );\n } else {\n setPredictions([]);\n }\n setSearch(input);\n };\n\n const handleSearchStatus = (on: boolean) => {\n if (on) {\n setSearchOn(true);\n if (inputEl.current) {\n inputEl.current.focus();\n }\n } else {\n setSearch('');\n setSearchOn(false);\n setPredictions([]);\n }\n };\n\n return (\n
    \n
    \n {packagedTodayData &&\n packagedTodayData.data &&\n packagedTodayData.data[curDay] &&\n stylegroups.length &&\n thresholdTab &&\n overlay ? (\n <>\n
    \n \n
    \n handleSearch(e.target.value)}\n placeholder=\"Search location\"\n />\n
    \n handleSearchStatus(false)}\n type=\"button\"\n />\n
    \n
    \n {predictions.length ? (\n
      \n {predictions.map((p) => (\n handlePlaceSelection(p.placeId)}\n key={p.placeId}\n >\n {formatGoogleAddress(p.description)}\n \n ))}\n
    \n ) : (\n <>\n )}\n
    \n {!searchOn ? (\n handleSearchStatus(true)}\n >\n

    \n {packagedTodayData.location.desc}\n

    \n
    \n
    \n
    \n ) : (\n <>\n )}\n
    \n
    \n

    \n {translate('ForecastHeader')}\n {parse(getSpeciesLabel())}\n

    \n
    \n {packagedTodayData.data.map((td: any, idx: number) => (\n setCurDay(idx)}\n key={`${td[0].day}-${idx}`}\n className={`forecast-item ${\n idx === curDay ? 'active' : ''\n }`}\n >\n
    {td[0].day}
    \n \n
    \n {typeof td[0].value === 'number' && td[0].value !== -999\n ? getSpeciesScore(td[0].value)\n : 'NA'}\n
    \n
    \n
    \n ))}\n \n \n
    \n

    \n {translate('PollutionHeader')}\n {parse(getSpeciesLabel())}\n

    \n
    \n
    \n
    \n `${parseInt(v) / 10}`}\n textColor=\"#1d1e30\"\n style={{ height: 100, width: 220 }}\n colors={getSpeciesColorArray()}\n />\n
    \n
    \n
    \n
    \n
    \n

    {translate('AdviceHeader')}

    \n
    \n Take our{' '}\n handleAQ101()}>intro on Air Quality{' '}\n to learn more about the impacts of pollution and how you can\n help.\n
    \n
    \n {userInfo.todayCustomInfo\n ? userInfo.todayCustomInfo.customTitle\n : translate('BehaviourHeader')}\n
    \n
    \n

    \n {parse(packagedTodayData.data[curDay][0].behavioural_change)}{' '}\n

    \n {userInfo.todayCustomInfo ? (\n

    \n {userInfo.todayCustomInfo.preText}{' '}\n \n handleAQ101(userInfo.todayCustomInfo!.spanSectionLink)\n }\n >\n {userInfo.todayCustomInfo.spanText}\n {' '}\n {userInfo.todayCustomInfo.postText}\n

    \n ) : (\n <>\n )}\n
    \n
    {translate('HealthAdviceHeader')}
    \n
    \n

    \n Find guidance on the health effects of air pollution in our{' '}\n handleAQ101('HealthEffects')}>\n guide\n \n .\n

    \n {packagedTodayData.data[curDay][0].advice !== 'N/A' ? (\n

    {parse(packagedTodayData.data[curDay][0].advice)}

    \n ) : (\n <>\n )}\n
    \n
    \n \n ) : (\n <>\n )}\n \n \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n displayConfig: state.setDisplayConfig,\n overlay: state.showAQMALayer.overlay,\n overlays: state.setOverlays,\n stylegroups: state.getStyleGroups.styleGroups,\n thresholdTab: state.setThresholdTab.tab,\n todayData: state.setTodayData,\n userInfo: state.auth.userInfo,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setAQ101On,\n setAQ101Section,\n setTodayData,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Today);\n","// Package Imports\nimport React, { useState, useEffect } from 'react';\nimport Tour from 'reactour';\nimport { useHistory, useLocation, withRouter } from 'react-router-dom';\nimport { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\nimport { connect } from 'react-redux';\nimport { bindActionCreators } from 'redux';\n\n// Path Imports\nimport { routePaths } from '../../utils/consts';\n\n// Action Imports\nimport {\n startTour,\n closeTour,\n tourOpenAsideFilter,\n tourCloseAsideFilter,\n tourOpenAQDataIndex,\n tourCloseAQDataIndex,\n tourOpenAQColorscaleIndex,\n tourCloseAQColorscaleIndex,\n tourOpenHelp,\n tourCloseHelp,\n tourOpenLocationSearch,\n tourCloseLocationSearch,\n tourMapClick,\n tourCloseModelDataIndex,\n tourOpenModelDataIndex,\n} from '../../actions/tour';\nimport { mappAirFilters } from '../../actions/mappAirFilters';\nimport { showOverlayLayer } from '../../actions/layers';\nimport { setUnitLocation } from '../../actions/locations';\nimport { setZephyr, getZephyrData } from '../../actions/zephyrs';\n\nimport { openAside, closeAside } from '../../actions/aside';\n\n// Const Imports\nimport { helpResourceLink } from '../../utils/consts';\n\nconst stepStyle = {\n height: 250,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n};\n\nconst UserTour = withRouter(\n ({\n alertsOn,\n appLoading,\n asideOn,\n closeAside,\n closeTour,\n openAside,\n openTour,\n mappAirOn,\n mappAirFilters,\n showOverlayLayer,\n showTour,\n setUnitLocation,\n setZephyr,\n startTour,\n tourCloseAQColorscaleIndex,\n tourCloseAsideFilter,\n tourCloseHelp,\n tourCloseLocationSearch,\n tourMapClick,\n tourCloseModelDataIndex,\n tourOpenAQColorscaleIndex,\n tourOpenAQDataIndex,\n tourOpenAsideFilter,\n tourOpenHelp,\n tourOpenLocationSearch,\n tourOpenModelDataIndex,\n userInfo,\n zephyrList,\n bearerToken,\n }) => {\n // State\n const [initialAsideOn, setInitialAsideOn] = useState(asideOn);\n\n // hooks the current history and location objects\n const [history, location] = [useHistory(), useLocation()];\n\n // check to see if user is private and hasn't viewed a tour before\n useEffect(() => {\n if (\n userInfo &&\n !userInfo.isInternal &&\n !userInfo.isPublic &&\n showTour &&\n !alertsOn &&\n !appLoading &&\n zephyrList.length &&\n zephyrList[0].averageOfLastHourOfData\n ) {\n startTour();\n }\n }, [userInfo, startTour, showTour, alertsOn, appLoading]);\n\n // prevents and re-enables scrolling when the tour is launched and closed\n const disableBody = (target) => disableBodyScroll(target);\n const enableBody = (target) => enableBodyScroll(target);\n\n const toggleMappAir = () => {\n mappAirFilters();\n showOverlayLayer();\n };\n\n const handleMappAirClose = () => {\n // close MappAir and filters\n tourMapClick();\n toggleMappAir();\n tourCloseAsideFilter();\n tourCloseAQColorscaleIndex();\n };\n\n const handleZephyrSelection = () => {\n // set either the first Zephyr with data or the first Zephyr\n let selectedZephyr;\n for (let i = 0; i < zephyrList.length; i++) {\n if (zephyrList[i].averageOfLastHourOfData.NO2) {\n selectedZephyr = zephyrList[i];\n break;\n } else if (i === zephyrList.length - 1) {\n selectedZephyr = zephyrList[0];\n }\n }\n setUnitLocation(selectedZephyr.longitude, selectedZephyr.latitude);\n setZephyr(selectedZephyr);\n // open the AQ data tab\n tourOpenAQDataIndex();\n };\n\n const handleFiltersHeaderScroll = () => {\n const filtersHeader = document.querySelector('.filters-header');\n filtersHeader.scrollIntoView();\n };\n\n const handleProductInventory = () => {\n openAside();\n tourCloseLocationSearch();\n // tourOpenAsideFilter();\n };\n\n const handleAQIndexTabSwitch = () => {\n tourCloseModelDataIndex();\n tourOpenAQColorscaleIndex();\n };\n\n const handleOpenTour = () => {\n // Find the status of the aside on tour open to reset at the end\n setInitialAsideOn(asideOn);\n // Push to main page for tour start\n if (location.pathname.includes('data')) {\n history.push(routePaths.app);\n }\n // Make sure MappAir is turned off\n if (mappAirOn) {\n toggleMappAir();\n }\n };\n\n const handleCloseTour = () => {\n closeTour(bearerToken);\n // Re-establish PI status to what it was when tour started\n if (initialAsideOn !== asideOn) {\n initialAsideOn ? openAside() : closeAside();\n }\n // Push back to main page when tour is finished\n if (location.pathname.includes('data')) {\n history.push(routePaths.app);\n }\n // Turn off MappAir\n if (mappAirOn) {\n toggleMappAir();\n }\n };\n\n // outlines each step of the tour (has to be able to see history)\n const steps = [\n {\n selector: '',\n content: () => (\n
    \n Welcome to MyAir®. Please take a moment to follow\n this tour to get started.\n
    \n ),\n style: stepStyle,\n // push to the main page to start the tour\n },\n {\n selector: '[data-user-tour=\"step-1\"]',\n position: 'center',\n content: () => (\n
    \n The Product Inventory displays the devices you have available to you\n and their statuses. Here you can update the names of devices.\n
    \n ),\n action: () => handleProductInventory(),\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-2\"]',\n position: 'center',\n content: () => (\n
    \n Click on one of your devices to select it on the interactive map.\n
    \n ),\n action() {\n handleAQIndexTabSwitch();\n },\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-3\"]',\n position: 'center',\n content: () => (\n
    \n The map and devices are all colour-coded by pollution level using\n the selected colourscale.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-4\"]',\n position: 'center',\n content: () => (\n
    \n Switch between key pollutants in the Pollutant menu.\n
    \n ),\n action() {\n tourCloseAQColorscaleIndex();\n tourOpenAQDataIndex();\n },\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-5\"]',\n position: 'center',\n content: () => (\n
    \n Measurement Data shows a summary of the last hourly averages for the\n selected device as well as regional weather information.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '.map-layers-group img',\n position: 'center',\n content: () => (\n
    \n You can access additional map layers and overlays with the Layers\n menu.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-7\"]',\n position: 'center',\n content: () => (\n
    \n Click anywhere on the map to get modelled air quality data and to\n create a Virtual Zephyr. Virtual Zephyrs act like an air-quality\n sensor but are powered by our air quality models.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-8\"]',\n position: 'center',\n content: () => (\n
    \n The Analysis tab provides tools to view and interrogate your data,\n whereas Alerts let you set notifications when sensors hit selected\n values.\n
    \n ),\n style: stepStyle,\n },\n\n {\n selector: '[data-user-tour=\"step-9\"]',\n position: 'center',\n content: () => (\n
    \n Each tab has its own tour in the Help menu, including this one.\n Check them out as you explore the MyAir platform.\n
    \n ),\n style: stepStyle,\n },\n\n // push to the data tab for the data portion of the tour\n // ...(location.pathname === '/' || location.pathname === '/internal'\n // ? [\n // {\n // selector: '',\n // content: '',\n // action: () => history.push(routePaths.data),\n // },\n // ]\n // : [\n // // Data tab journey from / pathname\n // {\n // selector: '.tourChart',\n // content: () => (\n //
    \n // The chart visualises data over time for your selected Zephyr\n // with a default of hourly averaged data for the last 48 hours.\n //
    \n // ),\n // action: () => handleFiltersHeaderScroll(),\n // },\n // {\n // selector: '.tourUnitList',\n // content: () => (\n //
    \n // The unit list shows which units are plotted on the chart. You\n // can overplot up to 5 units by dragging and dropping them from\n // the Product Inventory tab.\n //
    \n // ),\n // },\n // {\n // selector: '.tourPeriodSwitch',\n // content: () => (\n //
    \n // View data for different time periods including custom periods.\n //
    \n // ),\n // },\n // {\n // selector: '.tourAveragingSwitch',\n // content: () => (\n //
    \n // Select different time averaging options.\n //
    \n // ),\n // },\n // {\n // selector: '.tourSpeciesSwitch',\n // content: () => (\n //
    \n // Toggle between different species as well as temperature and\n // humidity.\n //
    \n // ),\n // },\n // {\n // selector: '.tourDataDownload',\n // content: () => (\n //
    \n // Data downloads are available via CSV or KML.\n //
    \n // ),\n // },\n // {\n // selector: '',\n // content: () => (\n //
    \n // Tour complete! Click the Help menu to view\n // the tour again.\n //
    \n // ),\n // },\n // ]),\n ];\n\n const maxSteps = '10';\n\n return (\n {}}\n // prevButton={
    }\n lastStepNextButton={

    Finish

    }\n badgeContent={(curr) => `${curr}/${maxSteps}`}\n // Styles\n accentColor=\"#4e73c3\"\n rounded={3}\n />\n );\n },\n);\n\nconst mapStateToProps = (state) => ({\n alertsOn: state.alerts.on,\n appLoading: state.getZephyrs.loading,\n asideOn: state.aside.on,\n dataConfig: state.dataConfig,\n mappAirOn: state.showAQMALayer.showOverlayLayer,\n openTour: state.tour.openTour,\n showTour: state.setUserConfig.showTour,\n userInfo: state.auth.userInfo,\n zephyrList: state.getZephyrs.zephyrs,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch) =>\n bindActionCreators(\n {\n closeAside,\n closeTour,\n getZephyrData,\n mappAirFilters,\n openAside,\n showOverlayLayer,\n startTour,\n tourCloseAQColorscaleIndex,\n tourCloseAQDataIndex,\n tourCloseAsideFilter,\n tourOpenAQColorscaleIndex,\n tourOpenAQDataIndex,\n tourOpenAsideFilter,\n setUnitLocation,\n setZephyr,\n tourCloseHelp,\n tourCloseLocationSearch,\n tourOpenHelp,\n tourOpenLocationSearch,\n tourMapClick,\n tourCloseModelDataIndex,\n tourOpenModelDataIndex,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UserTour);\n","import { SpeciesExtentIdentifiers, Zephyr } from \"../interface\";\n\ntype ErrorMessage = string;\n\ninterface SubTableErrorMessages {\n noLocation: ErrorMessage,\n noSlotSpecies: ErrorMessage,\n noExternalSensorsConnected: ErrorMessage,\n noBatteryChargeInformation: ErrorMessage\n};\n\nconst errorMessages: SubTableErrorMessages = {\n noLocation: 'No Information',\n noSlotSpecies: '-',\n noExternalSensorsConnected: 'None',\n noBatteryChargeInformation: 'No Information'\n};\n\nconst extractSlotSpecies = (species: SpeciesExtentIdentifiers[]) => {\n let speciesText = '';\n const filteredSpecies = species.filter((s: string) => s !== 'BT' && s !== 'BRH');\n for (let i = 0; i < filteredSpecies.length; i++) {\n if (i < filteredSpecies.length - 1) speciesText += `${filteredSpecies[i]}, `;\n if (i === filteredSpecies.length - 1) speciesText += filteredSpecies[i];\n }\n return speciesText;\n};\n\nconst tableSubRowGenerator = (zephyr: Zephyr) => {\n const hasSlotASpecies = zephyr.type === 0 ? zephyr.slotsInfo.slotA && zephyr.slotsInfo.slotA.species : null;\n const hasSlotBSpecies = zephyr.type === 0 ? zephyr.slotsInfo.slotB && zephyr.slotsInfo.slotB.species : null;\n const slotASpecies = zephyr.type === 0 ? zephyr.slotsInfo.slotA?.species : null;\n const slotBSpecies = zephyr.type === 0 ? zephyr.slotsInfo.slotB?.species : null;\n const hasZephyrLocation = zephyr.location;\n const hasPowerMode = zephyr.type === 0 || zephyr.type === 100 ? zephyr.SampPeriod ? zephyr.SampPeriod : null : null;\n const powerMode = hasPowerMode ? hasPowerMode > 7 && hasPowerMode < 20 ? 'High Power' : hasPowerMode >= 50 && hasPowerMode < 60 ? 'Normal Power' : 'Low Power' : 'Low Power';\n const externalSensorsConnected = zephyr.type === 0 ? zephyr.HasMetStation ? 'Met Station' : errorMessages.noExternalSensorsConnected : errorMessages.noExternalSensorsConnected;\n return (\n `\n
    \n

    Zephyr ${zephyr.zNumber}

    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    GPS Setting: \n ${hasZephyrLocation ? hasZephyrLocation : errorMessages.noLocation} \n
    External Sensors Connected: \n ${externalSensorsConnected} \n
    Slot A Species:\n ${!hasSlotASpecies ?\n errorMessages.noSlotSpecies : extractSlotSpecies(slotASpecies!)} \n
    Slot B Species:\n ${!hasSlotBSpecies ?\n errorMessages.noSlotSpecies : extractSlotSpecies(slotBSpecies!)} \n
    Power Mode: \n ${hasPowerMode ? powerMode : 'Low Power'} \n
    \n
    \n `\n );\n};\n\nexport {\n tableSubRowGenerator\n};","import React from 'react';\n\ninterface FleetManagementFilterProps {\n sampIntervalRef: React.MutableRefObject,\n slotsRef: React.MutableRefObject,\n batteryPercentageRef: React.MutableRefObject,\n lastConnectedRef: React.MutableRefObject,\n filterTableData: () => void,\n};\n\n\nconst FleetManagementFilter = ({ sampIntervalRef, slotsRef, batteryPercentageRef, lastConnectedRef, filterTableData }: FleetManagementFilterProps) => {\n return (\n <>\n {/* Filter by:\n
    \n Zephyrs:\n \n {availableZephyrTypes && extractAvailableZephyrTypes()}\n
    */}\n < div className=\"table-checkboxes issues-filter-options\" >\n Filter by issues:\n \n\n \n\n \n\n \n
    \n \n )\n};\n\nexport default FleetManagementFilter;","import html2canvas from 'html2canvas';\nimport React from 'react';\nimport { CSVLink } from 'react-csv';\nimport { csvHeaders } from '../../utils/consts';\n\ninterface FleetManagementGeneratorProps {\n tableData: any[],\n table: React.MutableRefObject,\n csvOption: boolean | null,\n setCsvOption: Function,\n};\n\nconst FleetManagementGenerator = ({ tableData, table, csvOption, setCsvOption }: FleetManagementGeneratorProps) => {\n\n const updateCsvOption = (event: any) => {\n if (!csvOption && event.target.value === 'cur-entries') { setCsvOption(true); return; }\n setCsvOption(false);\n };\n\n const tableToCSV = () => {\n var csv_data: any = [];\n\n const getTable = document.getElementById('table_id');\n var rows = getTable!.getElementsByTagName('tr');\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].classList.contains('odd') || rows[i].classList.contains('even') || rows[i].querySelector('.sorting') !== null) {\n // Get each column data\n var cols = rows[i].querySelectorAll('th, td');\n // Stores each csv row data\n var csvrow = [];\n for (var j = 0; j < cols.length; j++) {\n // Get the text data of each cell of a row and push it to csvrow\n if (!cols[j].classList.contains('dt-control')) csvrow.push(cols[j].innerHTML);\n }\n // Combine each column value with comma\n csv_data.push(csvrow.join(\",\"));\n }\n }\n // combine each row data with new line character\n csv_data = csv_data.join('\\n');\n downloadCSVFile(csv_data);\n };\n\n const downloadCSVFile = (csv_data: any) => {\n\n let CSVFile = new Blob([csv_data], { type: \"text/csv\" });\n var temp_link = document.createElement('a');\n temp_link.download = \"Fleet_Management.csv\";\n var url = window.URL.createObjectURL(CSVFile);\n temp_link.href = url;\n\n temp_link.style.display = \"none\";\n document.body.appendChild(temp_link);\n\n temp_link.click();\n document.body.removeChild(temp_link);\n };\n\n\n const exportAsPNG = async (element: any, imageFileName: string) => {\n const canvas = await html2canvas(element);\n const image = canvas.toDataURL(\"image/png\", 1.0);\n downloadImage(image, imageFileName);\n };\n\n const downloadImage = (blob: any, fileName: any) => {\n const temp_link = window.document.createElement(\"a\");\n temp_link.style.display = 'none';\n temp_link.download = fileName;\n temp_link.href = blob;\n document.body.appendChild(temp_link);\n temp_link.click();\n document.body.removeChild(temp_link);\n temp_link.remove();\n };\n\n const processTableDataForCSV = () => {\n const processedData = tableData.map((v) => {\n const lastIdx = v.length - 1;\n return v.slice(1, lastIdx);\n });\n processedData.unshift(csvHeaders);\n return processedData;\n };\n\n return (\n
    \n
    \n \n \n \n
    \n
    \n )\n};\n\nexport default FleetManagementGenerator;","import React from 'react';\nimport { csvHeaders } from '../../utils/consts';\n\n\ninterface FleetManagementHeadersProps {\n table: React.MutableRefObject\n}\n\nconst FleetManagementHeaders = ({ table }: FleetManagementHeadersProps) => {\n\n const extractBottomHeaders = () => {\n return csvHeaders.map((csvHeader: string, idx: number) => {csvHeader});\n };\n\n return (\n \n \n \n \n {extractBottomHeaders()}\n \n \n
    \n )\n};\n\nexport default FleetManagementHeaders;","import React, { useState, useEffect, useRef } from 'react';\nimport DataTable, { Api } from 'datatables.net';\nimport {\n SlotsInfo,\n Zephyr,\n Loading,\n ReduxState,\n ZephyrTypes,\n} from '../../utils/interface';\nimport '../../assets/css/elements/table.css';\nimport {\n csvHeaders,\n FleetManagementAvailableSpecies,\n gaseousSlots,\n} from '../../utils/consts';\nimport utilsRequest from '../../utils/request';\nimport { setZephyrs } from '../../actions/zephyrs';\nimport { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { tableSubRowGenerator } from '../../utils/functions/tableSubRowGenerator';\nimport moment from 'moment';\nimport FleetManagementFilter from '../view_components/FleetManagementFilter';\nimport FleetManagementGenerator from '../view_components/FleetManagementGenerator';\nimport FleetManagementHeaders from '../view_components/FleetManagementHeaders';\nimport { useLocation } from 'react-router';\n\ninterface FleetManagementProps {\n zephyrs: Zephyr[];\n setZephyrs: Function;\n loading: Loading;\n bearerToken: string | null;\n}\n\ninterface ZephyrType {\n type: string;\n label: string;\n checked: boolean;\n zType: number;\n}\n\ninterface InitState {\n tableData: any[];\n fleetTable: Api | null;\n tableDataToUse: any[] | null;\n availableZephyrTypes: ZephyrType[] | any[];\n defaultAllZephyrs: boolean;\n csvOption: boolean | null;\n};\n\nconst initState: InitState = {\n tableData: [],\n fleetTable: null,\n tableDataToUse: null,\n availableZephyrTypes: [],\n defaultAllZephyrs: true,\n csvOption: null,\n};\n\nlet isExpandButtonClicked = false;\n\nconst FleetManagement = ({\n zephyrs,\n setZephyrs,\n loading,\n bearerToken,\n}: FleetManagementProps) => {\n // States\n const [tableData, setTableData] = useState(initState.tableData);\n const [fleetTable, setFleetTable] = useState(initState.fleetTable);\n const [tableDataToUse, setTableDataToUse] = useState(\n initState.tableDataToUse,\n );\n const [availableZephyrTypes, setAvailableZephyrTypes] = useState(\n initState.availableZephyrTypes,\n );\n const [defaultAllZephyrs, setDefaultAllZephyrs] = useState(\n initState.defaultAllZephyrs,\n );\n const [csvOption, setCsvOption] = useState(initState.csvOption);\n\n // Refs\n const sampIntervalRef = useRef(null);\n const slotsRef = useRef(null);\n const batteryPercentageRef = useRef(null);\n const lastConnectedRef = useRef(null);\n const table = useRef(null);\n\n // Consts\n const location = useLocation();\n\n // Effects\n\n useEffect(() => {\n if (location.pathname.includes('fleetManagement') && isExpandButtonClicked)\n isExpandButtonClicked = false;\n }, [location.pathname]);\n\n useEffect(() => {\n const filteredZephyrs = omitHistoricMappings();\n const zephyrsData = filteredZephyrs\n .filter((z: Zephyr) => z.type === 0)\n .map((z: Zephyr) => {\n const zNumber = z.zNumber ? z.zNumber : '-';\n const alias = z.alias ? z.alias : '-';\n const lat = z.latitude ? parseFloat(z.latitude).toFixed(4) : '-';\n const lon = z.longitude ? parseFloat(z.longitude).toFixed(4) : '-';\n const transmissionInterval =\n 'transmissionInterval' in z && z.transmissionInterval\n ? z.transmissionInterval\n : '-';\n const sampPeriod = z.SampPeriod ? z.SampPeriod : 'Not Sampling';\n const slotAName = z.slotA_SN ? z.slotA_SN : 'Empty';\n const slotBName = z.slotB_SN ? z.slotB_SN : 'Empty';\n const batteryCharge =\n z.batteryCharge && typeof z.batteryCharge === 'number'\n ? z.batteryCharge\n : 'No Information';\n const lastConnected = z.lastConnectionDT\n ? moment(z.lastConnectionDT, 'YYYY-MM-DDZHH:mm:ss').format(\n 'YYYY-MM-DD HH:mm',\n )\n : 'No Information';\n return [\n null,\n zNumber,\n alias,\n `${lat}, ${lon}`,\n // transmissionInterval,\n sampPeriod,\n `Slot A: ${slotAName} | Slot B: ${slotBName}`,\n batteryCharge,\n lastConnected,\n { type: z.type },\n ];\n });\n if (!isExpandButtonClicked) setTableData(zephyrsData);\n }, [zephyrs]);\n\n useEffect(() => {\n const table: Api = new DataTable('#table_id', {\n columns: [\n {\n className: 'dt-control',\n orderable: false,\n data: null,\n defaultContent: '',\n },\n { title: csvHeaders[0] },\n { title: csvHeaders[1] },\n { title: csvHeaders[2] },\n { title: csvHeaders[3] },\n { title: csvHeaders[4] },\n { title: csvHeaders[5] },\n { title: csvHeaders[6] },\n ],\n data: tableDataToUse === null ? tableData : tableDataToUse,\n ordering: true,\n info: true,\n stateSave: true,\n order: [[1, 'asc']],\n });\n setFleetTable(table);\n // Extra step to do extra clean-up.\n return () => {\n table.destroy();\n };\n }, [tableData, tableDataToUse]);\n\n const filterTableData = () => {\n const sampIntervalChecked = (sampIntervalRef.current as any).checked;\n const slotsChecked = (slotsRef.current as any).checked;\n const batteryPercentageChecked = (batteryPercentageRef.current as any)\n .checked;\n const lastConnected = (lastConnectedRef.current as any).checked;\n if (\n !sampIntervalChecked &&\n !slotsChecked &&\n !batteryPercentageChecked &&\n !lastConnected &&\n defaultAvailableZephyrType()\n ) {\n setTableDataToUse(null);\n return;\n }\n const filteredData = getFilteredTableData(\n sampIntervalChecked,\n slotsChecked,\n batteryPercentageChecked,\n lastConnected,\n );\n filteredData && filteredData.length !== tableData.length\n ? setTableDataToUse(filteredData)\n : setTableDataToUse(null);\n };\n\n useEffect(() => {\n if (!loading.aurnLastHour && !loading.initApp && !loading.zephyrLastHour) {\n if (fleetTable) {\n const fleetManagementTable = document.getElementById('table_id');\n fleetManagementTable?.addEventListener('click', toggleRow);\n getAvailableZephyrTypes();\n return () => {\n fleetManagementTable?.removeEventListener('click', toggleRow);\n };\n }\n }\n }, [loading, fleetTable]);\n\n useEffect(() => {\n const defaultZephyrType = defaultAvailableZephyrType();\n setDefaultAllZephyrs(defaultZephyrType);\n }, [availableZephyrTypes]);\n\n const omitHistoricMappings = () => {\n const filteredZephyrsArray = zephyrs.filter(\n (value, index, self) =>\n index === self.findIndex((t) => t.zNumber === value.zNumber),\n );\n return filteredZephyrsArray;\n };\n\n const getAvailableZephyrTypes = () => {\n const filteredZephyrTypes = FleetManagementAvailableSpecies.speciesMap.filter(\n (sm) =>\n !(\n (sm.type === 'zephyr' &&\n !zephyrs.filter((z) => z.type === 0).length) ||\n (sm.type === 'aurn' && !zephyrs.filter((z) => z.type === 1).length) ||\n (sm.type === 'virtual' &&\n !zephyrs.filter((z) => z.type === ZephyrTypes.virtual).length)\n ),\n );\n setAvailableZephyrTypes(filteredZephyrTypes);\n };\n\n const extractAvailableZephyrTypes = () => {\n return (availableZephyrTypes as any[]).map((t, idx) => (\n \n ));\n };\n\n const setAllZephyrsOption = () => {\n if (!defaultAvailableZephyrType()) {\n const copyAvailableZephyrTypes = [...availableZephyrTypes];\n copyAvailableZephyrTypes.forEach((t) => {\n if (t.checked) t.checked = false;\n });\n setAvailableZephyrTypes(copyAvailableZephyrTypes);\n }\n filterTableData();\n };\n\n const filterByZephyrType = (idx: number) => {\n const copyAvailableZephyrTypes = [...availableZephyrTypes];\n copyAvailableZephyrTypes[idx].checked = !copyAvailableZephyrTypes[idx]\n .checked;\n setAvailableZephyrTypes(copyAvailableZephyrTypes);\n filterTableData();\n };\n\n const defaultAvailableZephyrType = () => {\n if (!availableZephyrTypes) return true;\n const checkedOptionsArr = availableZephyrTypes.filter(\n (t) => t.checked === true,\n );\n if (checkedOptionsArr.length > 0) return false;\n return true;\n };\n\n const validateCheckedButtons = (obj: any, data: any[]) => {\n if (obj.checked && obj.idx === 7)\n return data[obj.idx] <= 25 || data[obj.idx] === obj.emptyValue;\n if (obj.checked && obj.idx === 8) {\n const hours =\n data[obj.idx] !== 'No Information'\n ? moment().diff(moment(data[obj.idx]), 'hours')\n : null;\n return hours !== null ? hours >= 24 : data[obj.idx] === obj.emptyValue;\n }\n if (obj.checked) return data[obj.idx] === obj.emptyValue;\n return true;\n };\n\n const getFilteredTableData = (\n sampIntervalChecked: boolean,\n slotsChecked: boolean,\n batteryPercentageChecked: boolean,\n lastConnected: boolean,\n ) => {\n const tableDataCopy = [...tableData];\n const checkedButtons = {\n sampInterval: {\n idx: 4,\n checked: sampIntervalChecked,\n emptyValue: 'Not Sampling',\n },\n slots: {\n idx: 5,\n checked: slotsChecked,\n emptyValue: 'Slot A: Empty | Slot B: Empty',\n },\n batteryCharge: {\n idx: 6,\n checked: batteryPercentageChecked,\n emptyValue: 'No Information',\n },\n lastTimeConnected: {\n idx: 7,\n checked: lastConnected,\n emptyValue: 'No Information',\n },\n };\n const filteredDataByZephyr = getFiltredTableDataByZephyr(tableDataCopy);\n const filteredData =\n defaultAvailableZephyrType() ||\n filteredDataByZephyr?.length === 0 ||\n filteredDataByZephyr?.length === tableDataCopy.length\n ? tableDataCopy.filter((data: any[]) => {\n return (\n validateCheckedButtons(checkedButtons.sampInterval, data) &&\n validateCheckedButtons(checkedButtons.slots, data) &&\n validateCheckedButtons(checkedButtons.batteryCharge, data) &&\n validateCheckedButtons(checkedButtons.lastTimeConnected, data)\n );\n })\n : filteredDataByZephyr?.filter((data: any[]) => {\n return (\n validateCheckedButtons(checkedButtons.sampInterval, data) &&\n validateCheckedButtons(checkedButtons.slots, data) &&\n validateCheckedButtons(checkedButtons.batteryCharge, data) &&\n validateCheckedButtons(checkedButtons.lastTimeConnected, data)\n );\n });\n return filteredData;\n };\n\n const getZephyrCheckBoxState = (zephyrType: number) => {\n const zephyrExist = availableZephyrTypes.some(\n (z) => z.zType === zephyrType,\n );\n if (!zephyrExist) return true;\n const indexOfZephyrObj = availableZephyrTypes.findIndex(\n (z) => z.zType === zephyrType,\n );\n if (!availableZephyrTypes[indexOfZephyrObj].checked) return false;\n return availableZephyrTypes[indexOfZephyrObj].zType;\n };\n\n const getFiltredTableDataByZephyr = (tableDataCopy: any[]) => {\n if (!availableZephyrTypes) return;\n const filteredData = tableDataCopy.filter((data: any[]) => {\n const actualZephyr = getZephyrCheckBoxState(0);\n const vZephyr = getZephyrCheckBoxState(100);\n const aurn = getZephyrCheckBoxState(1);\n return (\n data[6].type === actualZephyr ||\n data[6].type === vZephyr ||\n data[6].type === aurn\n );\n });\n return filteredData;\n };\n\n const getCurrentZephyr = (tr: HTMLElement) => {\n const zephyrZNumber = parseInt(tr.children[1].innerHTML);\n return zephyrs.find((z: Zephyr) => z.zNumber === zephyrZNumber);\n };\n\n const setUnitCartridgeData = async (unit: Zephyr) => {\n if (!unit.slotsInfo) {\n const packagedSlotsInfo: SlotsInfo = {\n slotA: null,\n slotB: null,\n };\n if (!unit.userEndTimeDate) {\n for await (const gS of gaseousSlots) {\n const slotSerial = unit[`${gS.label}_SN`];\n if (slotSerial) {\n const slotInfo = await utilsRequest.getCartridge(\n slotSerial,\n bearerToken,\n );\n if (slotInfo) {\n packagedSlotsInfo[gS.label] = slotInfo;\n }\n }\n }\n }\n const copyZephyrsList = [...zephyrs];\n const newData = copyZephyrsList.find((z) => z.id_pod === unit.id_pod);\n if (newData) newData.slotsInfo = packagedSlotsInfo;\n setZephyrs(copyZephyrsList);\n }\n };\n\n const updateCartridgeData = async (z: Zephyr) => {\n if (z && z.type === 0 && !z.slotsInfo) {\n isExpandButtonClicked = true;\n await setUnitCartridgeData(z);\n }\n };\n\n const toggleRow = async (event: any) => {\n if (\n event.target.className.includes('dt-control') &&\n !event.target.className.includes('sorting_disabled') &&\n fleetTable\n ) {\n const toggleRowButton = event.target;\n const tr = toggleRowButton.closest('tr');\n if (!tr) return;\n const row = (fleetTable as any).row(tr);\n if (row.child.isShown() || tr.className.includes('dt-hasChild')) {\n row.child.hide();\n if (isExpandButtonClicked) isExpandButtonClicked = false;\n return;\n }\n const zephyr = getCurrentZephyr(tr);\n await updateCartridgeData(zephyr!);\n row.child(tableSubRowGenerator(zephyr!)).show();\n }\n };\n\n return (\n
    \n
    \n {\n \n }\n {\n \n }\n
    \n {}\n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n loading: state.loading,\n bearerToken: state.auth.bearerToken,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyrs,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FleetManagement);\n","// Type Imports\nimport { Zephyr } from '../interface';\n\n/* Function\nDESC: zephyrSorter maps the returned Zephyr API call to a new array of Zephyrs and processes them \n through sorter(see above function)\nARGS: A Zephyr object returned from the Zephyr API\n*/\nconst zephyrSorter = (units: Zephyr[], isPublic: boolean) => {\n const filteredUnits = units.filter(\n (u) => !isPublic || u.type !== 0 || !u.userEndTimeDate,\n );\n filteredUnits.sort((a: Zephyr, b: Zephyr) => {\n if (a.type === b.type) {\n if (a.type === 0) {\n if (a.userEndTimeDate === null && b.userEndTimeDate !== null) {\n return -1;\n }\n if (a.userEndTimeDate !== null && b.userEndTimeDate === null) {\n return 1;\n }\n if (a.alias && b.alias) {\n return a.alias < b.alias ? -1 : 1;\n }\n if (a.alias) {\n return -1;\n }\n if (b.alias) {\n return 1;\n }\n return a.zNumber < b.zNumber ? -1 : 1;\n }\n if (a.type === 1) {\n return a.location < b.location ? -1 : 1;\n }\n } else if (a.type !== b.type) {\n return a.type === 0 ? -1 : 1;\n }\n return 0;\n });\n return filteredUnits;\n};\n\nconst sortAnArrayOfZephyrsByName = (arrOfZephyrs: any[]) => {\n const copyArrOfZephyrs = [...arrOfZephyrs]\n return copyArrOfZephyrs.sort((a, b) => a.name.localeCompare(b.name));\n};\n\nexport { zephyrSorter, sortAnArrayOfZephyrsByName };\n","// These need to changed from hardcoded FE to be retrieved from the MappAir API on a per user basis\nconst aqiBands: { NO2: number; PM2p5: number;[key: string]: number }[] = [\n { NO2: 0, PM2p5: 0 },\n { NO2: 5, PM2p5: 4 },\n { NO2: 15, PM2p5: 8 },\n { NO2: 25, PM2p5: 12 },\n { NO2: 35, PM2p5: 16 },\n { NO2: 45, PM2p5: 20 },\n { NO2: 55, PM2p5: 24 },\n { NO2: 70, PM2p5: 30 },\n { NO2: 100, PM2p5: 40 },\n { NO2: 150, PM2p5: 70 },\n];\n\n/* ===== Function =====\n@DESC: aqiCalculator returns a calculated AQI score based on aqiBands\n@ARGS: a value or null for NO2, a value of null for Pm2p5\n*/\n\nconst aqiBandsObjPopulator = (aqiBandsArr: any) => {\n const aqiBandsObj: { [key: string]: number }[] = [];\n for (let i = 0; i < aqiBandsArr.length; i++) {\n const { species, bands } = aqiBandsArr[i];\n const formattedSpecie = species === 'no2' ? 'NO2' : 'PM2p5';\n for (let j = 0; j < bands.length; j++) {\n const { band_lower_limit } = bands[j];\n aqiBandsObj[j] = 'band' in bands[j] ? { ...aqiBandsObj[j], [formattedSpecie]: band_lower_limit, band: bands[j].band } : { ...aqiBandsObj[j], [formattedSpecie]: band_lower_limit };\n }\n }\n return aqiBandsObj;\n};\n\nconst aqiCalculator = (NO2: number | null, PM2p5: number | null, aqiBandsArr: any) => {\n let AQIMax = null;\n const aqiSpeciesConfig: {\n name: string;\n value: number | null;\n AQI: number;\n }[] = [\n { name: 'NO2', value: NO2, AQI: 0 },\n { name: 'PM2p5', value: PM2p5, AQI: 0 },\n ];\n const aqiSpecies: any[] = aqiSpeciesConfig.filter(\n (aSC) => typeof aSC.value === 'number',\n );\n if (aqiSpecies.length) {\n const updatedAqiBands = aqiBandsArr ? aqiBandsObjPopulator(aqiBandsArr) : aqiBands;\n AQIMax = 0;\n for (let i = 0; i < aqiSpecies.length; i++) {\n while (AQIMax <= updatedAqiBands.length - 1) {\n if (updatedAqiBands[AQIMax][aqiSpecies[i].name] <= aqiSpecies[i].value) {\n AQIMax += 1;\n }\n else {\n break;\n }\n }\n }\n }\n return AQIMax;\n};\n\nexport default aqiCalculator;\n","import React, { useEffect, useState } from 'react';\nimport DataTable, { Api } from 'datatables.net';\nimport { CSVLink } from 'react-csv';\nimport { getAuth } from '../../utils/functions/getAuth';\nimport { APIPaths, config, corsProxyURL, countryCodes } from '../../utils/consts';\nimport * as Sentry from '@sentry/react'\n\ninterface SmsGroupAlertsProps {\n tableData: any,\n setTableData: Function,\n csvData: any,\n setCsvData: Function,\n fileName: string | null,\n setFileName: Function,\n bearerToken: string | null,\n}\n\nconst validFileExtensions = [\".csv\"];\nconst AlertsEndpoint = `${config.alertsAPI}${APIPaths.airAlertsApi}v2/alert`;\nconst PutAlertsEndpoint = `${config.alertsAPI}${APIPaths.airAlertsApi}v2/alert/csv`;\n\n///Gets active alerts for a user in a CSV style format\nconst GetAlertsAsCsv = async (bearerToken: string) => {\n try {\n \n let requestOptions: any = {\n method: 'GET',\n headers: { 'Content-Type': 'text/csv', 'Authorization': `Bearer ${bearerToken}` },\n credentials: 'omit'\n }\n \n return await fetch(AlertsEndpoint, requestOptions);\n } catch (e) {\n alert('Server error or missing mandatory CSV titles! Please double-check your CSV content! If your mandatory CSV titles meet the requirements, please contact us at support@earthsense.co.uk');\n return;\n }\n}\n\n///Adds alerts based on the csv file provided\nconst AddAlertsAsCSV = async(bearerToken: string, files: any) => {\n //const files = (document.getElementById('files') as any).files;\n if (files.length > 0) {\n let file = files[0];\n\n //The es-reset header tells the alerts api to create a new record rather than update the existing one\n let requestOptions: any = {\n method: 'PUT',\n headers: { 'Content-Type': 'text/csv', 'Authorization': `Bearer ${bearerToken}`, 'es-reset': 'true' },\n body: file,\n credentials: 'omit'\n };\n\n return await fetch(PutAlertsEndpoint, requestOptions);\n }\n}\n\nconst SmsGroupAlerts = ({ tableData, setTableData, csvData, setCsvData, fileName, setFileName, bearerToken }: SmsGroupAlertsProps) => {\n\n useEffect(() => {\n readCsvOnLoad();\n }, []);\n\n useEffect(() => {\n if (tableData) {\n const table: Api = new DataTable('#table_id5', {\n columns: [ {title: 'Address'}, { title: \"Phone Number\"} ],\n data: [...tableData.slice(1, tableData.length)],\n lengthMenu: [1000],\n retrieve: true,\n searching: true,\n scrollY: \"500\",\n });\n // Extra step to do extra clean-up.\n return () => {\n table.destroy()\n };\n }\n }, [tableData]);\n\n const getExtension = (inputID: any, extentionsArray: string[]) => {\n const fileName = (document.getElementById(inputID) as any).value;\n return (new RegExp('(' + extentionsArray.join('|').replace(/\\./g, '\\\\.') + ')$')).test(fileName);\n };\n\n const csvToArray = (text: any) => {\n let p = '', row = [''], ret = [row], i = 0, r = 0, s = !0, l;\n for (l of text) {\n if ('\"' === l) {\n if (s && l === p) row[i] += l;\n s = !s;\n } else if (',' === l && s) l = row[++i] = '';\n else if ('\\n' === l && s) {\n if ('\\r' === p) row[i] = row[i].slice(0, -1);\n row = ret[++r] = [l = '']; i = 0;\n } else row[i] += l;\n p = l;\n }\n return ret;\n };\n\n const uploadNewCsv = async() => {\n const files = (document.getElementById('files') as any).files;\n if(files && files.length > 0) {\n //TODO: this should really be strongly typed or globally verifiable in some way. Probably need some sort of redirect in place if it doesn't exist anymore\n if (bearerToken){\n AddAlertsAsCSV(bearerToken, files).then((x) => {\n if(x){\n if (x?.status >= 200 && x?.status < 300) {\n readCsvOnLoad();\n }else{\n x?.text().then((x2) => {\n alert(x2)\n })\n }\n }else{\n alert('Something has gone wrong uploading your alerts.')\n Sentry.captureException( {\n 'Message': 'Brill place alerts has received an unexpected answer when uploading a new csv',\n 'DNS': AlertsEndpoint,\n 'request information': x\n })\n }\n });\n }\n }\n }\n \n const getAlertsAsCSV = async () => {\n //TODO: see todo above\n if(bearerToken){\n return GetAlertsAsCsv(bearerToken)\n }\n }\n \n const readCsvOnLoad = async() => {\n getAlertsAsCSV().then((x) => {\n if(x){\n x?.text().then((x2) => {\n csvData = csvToArray(x2)\n let customerCsvData: string[][] = [];\n const tableData: any = [{ title: 'Phone Number' }];\n const flatNumberIndex = csvData[0].indexOf(csvData[0].find((header: string) => header === 'Address'));\n const phoneNumberIndex = csvData[0].indexOf(csvData[0].find((header: string) => header === 'PhoneNumber'));\n if (flatNumberIndex < 0 || phoneNumberIndex < 0) {\n return;\n //throw new Error(\"Missing headers from get alerts csv response\")\n }\n customerCsvData.push(['Address', 'PhoneNumber'])\n csvData.slice(1, csvData.length).forEach((el: string[]) => {\n if (el.length > 1) {\n let phoneNumber = el[phoneNumberIndex];\n let address = el[flatNumberIndex]\n customerCsvData.push([address, phoneNumber]);\n let hashedPhoneNumber = phoneNumber.slice(0, 4)\n for (let i = 0; i < 7; i++){\n hashedPhoneNumber += '*';\n }\n //console.log(hashedPhoneNumber);\n hashedPhoneNumber += phoneNumber.slice(phoneNumber.length - 3, phoneNumber.length);\n tableData.push([address, hashedPhoneNumber]);\n }\n });\n setCsvData(customerCsvData);\n setTableData(tableData);\n })\n }\n }, (x2) => {\n Sentry.captureException( {\n 'Message': 'Brill place alerts has experienced an unexpected answer from get alerts csv',\n 'DNS': AlertsEndpoint,\n 'Request Info': x2\n })\n });\n }\n\n return (\n
    \n
    \n
    \n \n {\n if (!getExtension('files', validFileExtensions)) { alert(\"Unsupported file format!\"); return; }\n await uploadNewCsv();\n }}\n />\n {fileName &&

    File loaded: {fileName}

    }\n
    \n
    \n \n Download CSV Template\n
    \n
    \n
    \n {!tableData &&\n
    \n

    No list uploaded yet.

    \n
    \n }\n {tableData && \n
    }\n
    \n

    User Instructions:

    \n

    Download the CSV template or the existing CSV using the buttons above. Open the CSV in Notepad (recommended) or Excel. The template will be blank except for the column headers.

    \n

    If using Excel, highlight the first two columns and change the data format to \"Text\", either by using the toolbar or by right clicking and selecting \"Format Cells\". If using Notepad, add commas after each address and phone number.

    \n

    Enter phone numbers and addresses into the table. Ensure to include country codes and the international calling prefix for all numbers. Do not include any additional symbols or spaces.
    \n Example format: +441162967460

    \n

    To ensure adherence to GDPR regulations please do not record any personal information other than flat number and phone number.

    \n

    Save the CSV to your computer, then select \"Upload New List\". Select the CSV from your file browser and upload. An error message will display if any of the phone numbers are invalid.

    \n

    All mobile numbers on the current list will be notified of pollution alerts. The pollution alerts will be inline with the agreed contract. The MyAir account holder is responsible for ensuring that recipients identity is kept safe and that user credentials are only shared with those authorised to use the system.

    \n

    For any questions or bug reports, please contact the EarthSense Support Team at support@earthsense.co.uk.

    \n
    \n
    \n
    \n )\n};\n\nexport default SmsGroupAlerts;","import { Stack } from '@mui/system';\nimport React, { useEffect, useState } from 'react';\nimport { connect } from 'react-redux';\nimport styled from 'styled-components';\nimport { ReduxState, Zephyr } from '../../utils/interface';\n\ninterface AnalyticsProgressBarProps {\n requests: number;\n zephyrs: Zephyr[];\n}\n\nconst Wrapper = styled.div`\n position: absolute;\n top: 275px;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50%;\n text-align: center;\n background: #fff;\n border-radius: 16px;\n padding: 24px;\n`;\n\nconst ProgressBarWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 50px;\n border-radius: 8px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n overflow: hidden;\n`;\n\nconst ProgressBar = styled.div`\n display: block;\n height: 100%;\n background-color: #4e73b7;\n transition: all 0.3s ease-in-out;\n`;\n\nconst AnalyticsProgressBar = ({\n requests,\n zephyrs,\n}: AnalyticsProgressBarProps) => {\n const [progressWidth, setProgressWidth] = useState(0);\n const selectedZephyrs = zephyrs.filter((zephyr: Zephyr) => zephyr.isSelected);\n const widthChunk = parseInt((100 / selectedZephyrs.length) as any);\n const currentChunk = widthChunk * (requests + 1);\n\n const getRandomIntFromRange = (min: number, max: number) => {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1) + min);\n };\n\n const updateProgressStateWhenResponseArrives = () => {\n setProgressWidth((width: number) => {\n const newWidth = width + getRandomIntFromRange(1, 3);\n return newWidth >= 100 ? 99 : newWidth;\n });\n };\n\n const increaseProgressBarPercentage = () => {\n if (requests === 0) {\n if (progressWidth >= widthChunk) {\n setProgressWidth(widthChunk);\n return;\n }\n updateProgressStateWhenResponseArrives();\n return;\n }\n if (progressWidth < widthChunk * requests) {\n setProgressWidth(widthChunk * requests);\n return;\n }\n if (progressWidth >= currentChunk) {\n setProgressWidth(currentChunk);\n return;\n }\n updateProgressStateWhenResponseArrives();\n };\n\n useEffect(() => {\n if (progressWidth < 99) {\n if (requests === selectedZephyrs.length) {\n setProgressWidth(100);\n return;\n }\n const interval = setInterval(increaseProgressBarPercentage, 300);\n return () => {\n clearInterval(interval);\n };\n }\n }, [requests, progressWidth]);\n\n return (\n \n \n Loading...\n \n \n \n \n \n

    {parseInt(progressWidth)}%

    \n
    \n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n zephyrs: state.getZephyrs.zephyrs,\n requests: state.unitHistoriesOptions.requests,\n});\n\nexport default connect(mapStateToProps, {})(AnalyticsProgressBar);\n","import React from 'react';\n\ninterface ComparisonTooltipProps {\n setIsWarningTooltipOpened: Function;\n setErrorZephyr: Function;\n};\n\nconst ComparisonTooltip: React.FC = ({ setIsWarningTooltipOpened, setErrorZephyr }) => {\n\n const closeTooltip = () => {\n setIsWarningTooltipOpened(false);\n setErrorZephyr(null);\n };\n\n return (\n
    \n
    \n

    Device limit reached

    \n \n \n \n
    \n
    \n

    Remove a device to add another to comparison.

    \n 4 out of 4\n
    \n
    \n )\n};\n\nexport default ComparisonTooltip;","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { CSVLink } from 'react-csv';\nimport DownloadIcon from '../../../assets/images/download.svg';\nimport AddWidgetIcon from '../../../assets/images/add-widget.svg';\nimport RefreshIcon from '../../../assets/images/refresh-icon.svg';\nimport { defaultDeviceView, defaultDeviceViewLayout, defaultNetworkView, defaultNetworkViewLayout, generateCSVName } from '../../../utils/functions/dataAnalytics';\nimport { LayoutItem, ReduxState, Zephyr } from '../../../utils/interface';\nimport { debounce } from '../ReactGridLayout/ReactGridLayout';\nimport saveAs from 'file-saver';\nimport ComparisonTooltip from '../DataAnalyticsChartCtas/ComparisonTooltip';\nimport { MenuItem, Select, SelectChangeEvent } from '@mui/material';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setChartViewMode, ChartViewMode } from '../../../actions/chartViewMode';\nimport { styled } from '@mui/material/styles';\nimport { setIsWidgetLibraryVisible } from '../../../actions/dataAnalytics';\nimport Tooltip from '@mui/material/Tooltip';\n\n\nexport const FilterBar2 = ({\n selectedWeatherZephyr,\n getSelectedZephyrs,\n selectedView,\n // setSelectedView,\n getCsvData,\n unitHistories,\n networkViewUnitList,\n comparisonViewZephyrs,\n handleFilterBarUpdates,\n getComparisonViewCSV,\n userInfo,\n layouts,\n setLayouts,\n defaultComparisonView,\n defaultComparisonViewLayout,\n setScatterChartsCounter\n}: any) => {\n const carouselRef = useRef(null);\n const [isAtStart, setIsAtStart] = useState(true);\n const [isAtEnd, setIsAtEnd] = useState(false);\n const [isDragging, setIsDragging] = useState(false);\n const [startX, setStartX] = useState(0);\n const [scrollLeft, setScrollLeft] = useState(0);\n const [zephyrsDataCounts, setZephyrsDataCounts] = useState({\n zephyrsCount: 0,\n virtualZephyrsCount: 0,\n aurnsCount: 0,\n });\n const [isWarningTooltipOpened, setIsWarningTooltipOpened] = useState(false);\n const [errorZephyr, setErrorZephyr] = useState(null);\n\n const selectedZephyrs =\n ['deviceView', 'comparisonView'].includes(selectedView) ? getSelectedZephyrs() : networkViewUnitList;\n\n const dispatch = useDispatch();\n const openWidgetsLibrary = (stateSetter: boolean) => { dispatch(setIsWidgetLibraryVisible(stateSetter)) };\n\n const debouncedCalculatePrevNextVisibility = useCallback(\n debounce(() => {\n if (!carouselRef.current) return;\n calculatePrevNextVisibility();\n }, 250),\n [],\n );\n\n useEffect(() => {\n const carousel = carouselRef.current;\n if (!carousel) return;\n setIsAtEnd(\n carousel.scrollWidth - carousel.offsetWidth <= carousel.scrollLeft,\n );\n\n window.addEventListener('resize', debouncedCalculatePrevNextVisibility);\n window.addEventListener('scroll', debouncedCalculatePrevNextVisibility);\n\n return () => {\n window.removeEventListener(\n 'resize',\n debouncedCalculatePrevNextVisibility,\n );\n window.removeEventListener(\n 'scroll',\n debouncedCalculatePrevNextVisibility,\n );\n };\n }, [carouselRef?.current, debouncedCalculatePrevNextVisibility]);\n\n useEffect(() => {\n if (selectedView === 'networkView' && networkViewUnitList.length) {\n const counts = {\n zephyrsCount: 0,\n virtualZephyrsCount: 0,\n aurnsCount: 0,\n };\n\n networkViewUnitList.forEach((item: Zephyr) => {\n switch (item.type) {\n case 0:\n counts.zephyrsCount += 1;\n break;\n case 1:\n counts.aurnsCount += 1;\n break;\n case 100:\n counts.virtualZephyrsCount += 1;\n break;\n }\n });\n\n setZephyrsDataCounts(counts);\n }\n }, [networkViewUnitList, selectedView]);\n\n const handleMouseDown = (e: React.MouseEvent) => {\n const carousel = carouselRef.current as HTMLDivElement | null | any;\n if (!carousel) return;\n setIsDragging(true);\n setStartX(e.pageX - carousel.offsetLeft);\n setScrollLeft(carousel.scrollLeft);\n calculatePrevNextVisibility();\n };\n\n const handleMouseLeave = () => {\n setIsDragging(false);\n calculatePrevNextVisibility();\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n calculatePrevNextVisibility();\n };\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!isDragging) return;\n const carousel = carouselRef.current;\n if (!carousel) return;\n e.preventDefault();\n const x = e.pageX - carousel.offsetLeft;\n const walk = (x - startX) * 1; // Adjust the scroll speed\n\n requestAnimationFrame(() => {\n const carousel = carouselRef.current;\n if (!carousel) return;\n carousel.scrollLeft = scrollLeft - walk;\n });\n };\n\n const calculatePrevNextVisibility = () => {\n const carousel = carouselRef.current as HTMLDivElement | null | any;\n if (!carousel) return;\n setIsAtStart(carousel.scrollLeft === 0);\n setIsAtEnd(\n carousel.scrollWidth - carousel.offsetWidth <= carousel.scrollLeft,\n );\n };\n\n const handleScroll = () => {\n calculatePrevNextVisibility();\n };\n\n const handleNext = (e: React.MouseEvent) => {\n e.stopPropagation();\n const carousel = carouselRef.current;\n if (!carousel) return;\n carousel.scrollLeft += carousel.offsetWidth;\n calculatePrevNextVisibility();\n };\n\n const handlePrev = (e: React.MouseEvent) => {\n e.stopPropagation();\n const carousel = carouselRef.current;\n if (!carousel) return;\n carousel.scrollLeft -= carousel.offsetWidth;\n calculatePrevNextVisibility();\n };\n\n const getPointerEvents = (zephyr: Zephyr) => {\n if (selectedView && selectedView === 'comparisonView') {\n if (comparisonViewZephyrs.length === 4) {\n return comparisonViewZephyrs.find((z: Zephyr) => z.name === zephyr.name) ? 'initial' : 'none';\n }\n return 'initial';\n }\n return undefined; // Or any default value you prefer\n };\n\n const getIcon = (zephyr: any) => {\n if (comparisonViewZephyrs.find((z: Zephyr) => z.id === zephyr.id)) {\n return \n \n \n }\n return \n \n \n };\n\n const handleComparisonZIPDownload = () => {\n const zipName = generateCSVName(unitHistories, 'test', selectedWeatherZephyr, selectedView);\n getComparisonViewCSV().then((content: any) => {\n saveAs(content, zipName);\n })\n };\n\n const handleResetDashboardToDefaultLayout = () => {\n if(!userInfo.isPublic) {\n setLayouts((prevLayouts: any) => {\n return selectedView === 'deviceView' ?\n { ...prevLayouts, deviceView: defaultDeviceView, deviceViewLayout: defaultDeviceViewLayout } : selectedView === 'networkView' ?\n { ...prevLayouts, networkView: defaultNetworkView, networkViewLayout: defaultNetworkViewLayout } :\n { ...prevLayouts, comparisonView: defaultComparisonView, comparisonViewLayout: defaultComparisonViewLayout };\n })\n if (selectedView === 'deviceView' || selectedView === 'networkView') {\n setScatterChartsCounter((sCC: any) => {\n return {\n ...sCC, [selectedView]: selectedView === 'deviceView' ? { gasWidget: 1, particulateWidget: 1, thpWidget: 1, wsdWidget: 1 } : { networkGasWidget: 1, networkParticulateWidget: 1 }\n }\n });\n }\n }\n };\n\n if (!selectedZephyrs?.length) return null;\n return (\n
    \n
    \n \n {!userInfo.isPublic && }\n {/* ) =>\n setSelectedView(e.target.value)\n }\n className=\"view-selector no-style\"\n >\n \n \n \n */}\n {!isAtStart && (\n
    \n ) =>\n e.stopPropagation()\n }\n >\n \n \n \n \n
    \n )}\n
    \n {['deviceView', 'comparisonView'].includes(selectedView) ? (\n selectedZephyrs.map((zephyr: Zephyr, i: number) => (\n \n z.id === zephyr.id,\n )) ||\n (selectedView === 'deviceView' &&\n zephyr?.id === selectedWeatherZephyr?.id)\n ? 'selected'\n : ''\n }`}\n key={i}\n onClick={() => {\n if (selectedView === 'comparisonView') {\n if (\n comparisonViewZephyrs.length === 4 &&\n !comparisonViewZephyrs.find(\n (z: Zephyr) => z.id === zephyr.id,\n )\n ) {\n !isWarningTooltipOpened &&\n setIsWarningTooltipOpened(true);\n if (+zephyr.id !== errorZephyr)\n setErrorZephyr(+zephyr.id);\n return;\n }\n isWarningTooltipOpened &&\n setIsWarningTooltipOpened(false);\n typeof errorZephyr === 'number' && setErrorZephyr(null);\n }\n handleFilterBarUpdates(selectedView, zephyr);\n }}\n >\n {zephyr.name}\n {selectedView === 'comparisonView' && getIcon(zephyr)}\n
    \n \n ))\n ) : (\n \n )}\n {selectedView === 'comparisonView' && isWarningTooltipOpened && (\n \n )}\n
    \n {!isAtEnd && (\n
    \n ) =>\n e.stopPropagation()\n }\n >\n \n \n \n \n
    \n )}\n\n
    \n \n
    \n \n
    \n \n\n {selectedView !== 'comparisonView' && !userInfo.isPublic && (\n \n
    { openWidgetsLibrary(true); }}>\n \n \n \n
    \n \n )}\n\n {!userInfo.isPublic && \n
    \n \n \"Refresh\"\n\n \n
    \n }\n
    \n
    \n \n \n );\n};\n\nconst DownloadCSVHistoriesButton = ({ unitHistories, getCsvData, selectedWeatherZephyr, selectedView, handleComparisonZIPDownload, userInfo }: any) => {\n if (!unitHistories) return null;\n\n return (\n selectedWeatherZephyr && (\n
    \n {selectedView !== 'comparisonView' ? (\n \n \n \n \n \n ) : (\n \n \n \n )}\n
    \n )\n );\n};\n\nconst DeviceCounts = ({\n zephyrsCount,\n virtualZephyrsCount,\n aurnsCount,\n}: {\n zephyrsCount: number;\n virtualZephyrsCount: number;\n aurnsCount: number;\n}) => {\n const pluralize = (count: number, singular: string) => {\n return `${count} ${singular}${count === 0 ? '' : 's'}`;\n };\n\n return (\n
    \n
    {pluralize(zephyrsCount, 'Zephyr')} |
    \n
    {pluralize(virtualZephyrsCount, 'Virtual Zephyr')} |
    \n
    {pluralize(aurnsCount, 'AURN')}
    \n
    \n );\n};\n\nfunction SelectChartMode() {\n const dispatch = useDispatch();\n const isOpenFromRedux = useSelector((state: ReduxState) => state.selectChartModeOpen);\n const [localOpen, setLocalOpen] = useState(false);\n\n const handleOpen = () => {\n setLocalOpen(true);\n dispatch({ type: \"select-chart-mode-toggle\" });\n };\n\n const handleClose = () => {\n setLocalOpen(false);\n dispatch({ type: \"select-chart-mode-toggle\" });\n };\n\n const handleChange = (event: SelectChangeEvent) => {\n const newView = event.target.value as ChartViewMode\n dispatch(setChartViewMode(newView));\n }\n\n const selectedView = useSelector((state: ReduxState) => state.selectedChartViewMode)\n\n return (\n \n Device view\n Network view\n Comparison view\n \n )\n}\n\nconst CustomSelect = styled(Select)`\n font-size: 14px;\n background-color: #e2e8f0;\n min-width: 160px;\n border-radius: 2px;\n\n & [role=\"combobox\"] {\n padding-top: 8px;\n padding-bottom: 8px;\n font-weight: 600;\n }\n\n & .MuiOutlinedInput-notchedOutline {\n border: none;\n }\n`\n\nconst CustomMenuItem = styled(MenuItem)`\n font-size: 14px;\n`","import React from 'react';\nimport AnalyticsFeedbackForm from '../view_components/AnalyticsFeedbackForm';\nimport FeedbackTag from '../view_components/FeedbackTag';\nimport Modal from './Modal';\n\nexport default function FeedbackFormModal() {\n const [showModal, setShowModal] = React.useState(false);\n const toggleModal = () => setShowModal(!showModal);\n\n return (\n <>\n \n }\n />\n
    \n \n
    \n \n );\n}\n","import moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { connect, useDispatch, useSelector } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport { closeAside, openAside } from '../../actions/aside';\nimport {\n setIsCartridgeDataLoading,\n setIsViewLoaded,\n setThresholdLimits,\n setUnitHistoriesList,\n setZephyrCoveragesList,\n} from '../../actions/dataAnalytics';\nimport { setThresholds } from '../../actions/thresholdsActions';\nimport ESLogo from '../../assets/images/logo-grey.png';\nimport { thresholdLimitsInitState } from '../../reducers/dataAnalytics';\n\nimport { comparisonViewCSVGenerator, deviceCSVGenerator, summaryTableGenerator } from '../../utils/functions/saDataPackager';\n\nimport {\n Pollutant,\n ReduxState,\n ThresholdLimits,\n ThresholdsList,\n UserInfo,\n Zephyr,\n} from '../../utils/interface';\nimport AnalyticsProgressBar from '../shared_components/AnalyticsProgressBar';\nimport { FilterBar2 } from '../view_components/FilterBar/FilterBar2';\nimport Modal from '../shared_components/Modal';\n\nimport FeedbackFormModal from '../shared_components/FeedbackFormModal';\n\nimport ReactGridLayout, {\n getSelectedZephyrObj,\n getZephyrType,\n} from '../view_components/ReactGridLayout/ReactGridLayout';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport JSZip from 'jszip';\nimport { setChartViewMode, ChartViewMode } from '../../actions/chartViewMode';\n\ninterface DataAnalyticsContainerProps {\n zephyrs: Zephyr[];\n unitHistories: any;\n unitHistoriesLoading: boolean;\n thresholdLimits: ThresholdLimits;\n setThresholdLimits: Function;\n asideOn: boolean;\n viewLoaded: boolean;\n setIsViewLoaded: Function;\n openAside: Function;\n closeAside: Function;\n userInfo: UserInfo;\n layouts: any;\n setLayouts: Function;\n setScatterChartsCounter: Function;\n}\n\nexport interface Series {\n name?: string;\n type?: string;\n lineStyle?: any;\n showSymbol?: boolean;\n data?: any[];\n}\n\nexport interface Options {\n headers: string[];\n timeStamps: string[];\n series: Series[];\n yAxis: any[];\n yMax: number;\n color?: string[];\n slots?: string[];\n}\n\nexport interface DefraWho {\n isSelected: boolean;\n name: string;\n}\n\nconst sliderInitState = {\n start: 0,\n end: 100,\n};\n\nexport const CSVButtonStyles = {\n display: 'flex',\n alignItems: 'center',\n width: 40,\n height: 32,\n padding: '16px 14px 13px 16px',\n border: 0,\n borderRadius: 3,\n backgroundColor: '#e1e4e6',\n cursor: 'pointer',\n};\n\nfunction FallbackError() {\n useEffect(() => {\n const timer = setTimeout(() => {\n window.location.reload();\n }, 1500)\n\n return () => clearTimeout(timer)\n }, [])\n\n return (\n
    \n

    Oops, something went wrong...

    \n

    We're redirecting you now...

    \n
    \n )\n}\n\nconst DataAnalyticsContainer = ({\n zephyrs,\n unitHistories,\n unitHistoriesLoading,\n thresholdLimits,\n setThresholdLimits,\n viewLoaded,\n userInfo,\n layouts,\n setLayouts,\n setScatterChartsCounter,\n}: DataAnalyticsContainerProps) => {\n const [selectedPollutants, setSelectedPollutants] = useState([]);\n const [selectedPollutant, setSelectedPollutant] = useState(\n null,\n );\n const [selectedWeatherZephyr, setSelectedWeatherZephyr] = useState(null);\n const [selectedZephyrObj, setSelectedZephyrObj] = useState(null);\n const [selectedAveragingPeriod, setSelectedAveragingPeriod] = useState(\n null,\n );\n const [chartOptions, setChartOptions] = useState(null);\n const [legendsState, setLegendsState] = useState({});\n const [sliderState, setSliderState] = useState<{\n start: number;\n end: number;\n }>(sliderInitState);\n\n // const [selectedView, setSelectedView] = React.useState('deviceView');\n const selectedView = useSelector((state: ReduxState) => state.selectedChartViewMode);\n const dispatch = useDispatch();\n\n const setSelectedView = (newView: ChartViewMode) => {\n dispatch(setChartViewMode(newView));\n };\n const [networkViewUnitList, setNetworkViewUnitLIst] = React.useState(\n [],\n );\n const [comparisonViewZephyrs, setComparisonViewZephyrs] = useState<{ name: string, id: string, HasMetStation: number | null }[]>([]);\n const [loadingComparison, setLoadingComparison] = useState(true);\n const [defaultComparisonView, setDefaultComparisonView] = useState(null);\n const [defaultComparisonViewLayout, setDefaultComparisonViewLayout] = useState<{ uid: string, name: string, i: string }[] | null>(null);\n\n const thresholdsList = useSelector((state: ReduxState) => state.thresholds);\n // const dispatch = useDispatch();\n const setThresholdsList = (stateSetter: any) => {\n dispatch(setThresholds(stateSetter));\n };\n\n useEffect(() => {\n if (unitHistories && unitHistories.historiesList && unitHistories.historiesList.length > 0) {\n localStorage.setItem('plotlyLegends', JSON.stringify({\n gases: null,\n particulate: null,\n thpChartPlotly: null,\n windSpeedDirChartPlotly: null\n }))\n }\n }, [unitHistories]);\n\n useEffect(() => {\n if (unitHistories && 'historiesList' in unitHistories) {\n if (\n !selectedWeatherZephyr ||\n !unitHistories.historiesList.find(\n (unit: any) =>\n +(Object.keys(unit) as any)[0] === +selectedWeatherZephyr.id,\n )\n ) {\n setSelectedWeatherZephyr(getSelectedZephyrs()[0]);\n }\n unitHistories.historiesList.length > 1 ? setComparisonViewZephyrs([getSelectedZephyrs()[0], getSelectedZephyrs()[1]]) : setComparisonViewZephyrs([getSelectedZephyrs()[0]]);\n const pollutants = [...getSelectedPollutants()];\n pollutants[0].isSelected = true;\n setSelectedPollutants([...pollutants]);\n setSelectedPollutant(pollutants[0]);\n setLegendsState({});\n setSliderState(sliderInitState);\n }\n }, [unitHistories]);\n\n useEffect(() => {\n if (!selectedWeatherZephyr || zephyrs?.length === 0) return;\n\n if (unitHistories.historiesList && unitHistories.historiesList.length > 0 && isUnitHistoriesListUpdated()) {\n const { selectedZephyr, selectedAveragingPeriod } = getSelectedZephyrObj(\n unitHistories,\n selectedWeatherZephyr ? selectedWeatherZephyr : getSelectedZephyrs()[0],\n zephyrs,\n );\n setSelectedAveragingPeriod(selectedAveragingPeriod);\n setSelectedZephyrObj(selectedZephyr);\n }\n }, [unitHistories, zephyrs, selectedWeatherZephyr]);\n\n useEffect(() => {\n const activateView = (viewType: string) => {\n switch (selectedView) {\n case 'deviceView':\n break;\n case 'networkView':\n const allSelectedKeys = unitHistories.historiesList.map(\n (obj: any) => +Object.keys(obj)[0],\n );\n const filteredZephyrsToBeSelected = zephyrs\n .filter((zephyr) => allSelectedKeys.includes(zephyr.zNumber))\n .map((zephyr) => ({ ...zephyr, isSelected: true })); // Mapping to update isSelected\n setNetworkViewUnitLIst(filteredZephyrsToBeSelected);\n break;\n case 'comparisonView':\n break;\n }\n };\n\n if (zephyrs?.length === 0) return;\n if (unitHistories.historiesList && unitHistories.historiesList.length > 0) {\n activateView(selectedView);\n }\n }, [selectedView, unitHistories, zephyrs]);\n\n useEffect(() => {\n // Reset chart state\n if (unitHistoriesLoading === true && chartOptions) setChartOptions(null);\n }, [unitHistoriesLoading]);\n\n useEffect(() => {\n const pollutants: { [key: string]: ThresholdLimits } = {};\n for (const pollutant of selectedPollutants) {\n const { dataIdentifier } = pollutant;\n if (!thresholdsList.hasOwnProperty(dataIdentifier)) {\n pollutants[dataIdentifier] = {\n thresholds: {\n lowerThreshold: {\n title: '',\n value: null,\n },\n upperThreshold: {\n title: '',\n value: null,\n }\n },\n hidden: false\n }\n }\n }\n\n if (Object.keys(pollutants).length) setThresholdsList((list: any) => ({ ...list, ...pollutants }));\n }, [selectedPollutants]);\n\n useEffect(() => {\n if (layouts && !userInfo.isPublic) {\n const currentThresholdList = Object.keys(thresholdsList);\n const { deviceViewLayout, networkViewLayout } = layouts;\n const concatenatedLayouts = [...deviceViewLayout, ...networkViewLayout];\n const layoutsObject: { [key: string]: ThresholdLimits } = {};\n concatenatedLayouts.forEach((layout: { uid: string, name: string, i: string, threshold: boolean }) => {\n const { name: layoutName, threshold } = layout;\n if (threshold && !currentThresholdList.includes(layoutName)) {\n layoutsObject[layoutName] = {\n thresholds: {\n lowerThreshold: {\n title: '',\n value: null,\n },\n upperThreshold: {\n title: '',\n value: null,\n }\n },\n hidden: false\n }\n }\n });\n if (Object.keys(layoutsObject).length) setThresholdsList((list: any) => ({ ...list, ...layoutsObject }))\n }\n }, [layouts]);\n\n\n const getSelectedPollutants = () => {\n const { historiesList } = unitHistories;\n const unitKey = Object.keys(historiesList[0])[0];\n const { selectedPollutants } = historiesList[0][unitKey];\n return selectedPollutants;\n };\n\n const getSelectedZephyrs = () =>\n unitHistories.historiesList?.map((unit: any) => ({\n name: (Object.values(unit) as any)[0].name,\n id: (Object.keys(unit) as any)[0],\n HasMetStation: (Object.values(unit) as any)[0].HasMetStation\n }));\n\n const handleWeatherZephyrSwitching = (zephyr: { name: string, id: string, HasMetStation: number | null }) => {\n if (+zephyr.id !== +selectedWeatherZephyr.id)\n setSelectedWeatherZephyr(zephyr);\n };\n\n const getCSVData = () => {\n const currentDate = moment().format('DD/MM/YYYY');\n const formatDateStringWithoutSeperator = (datetime: moment.MomentInput) => {\n return moment(datetime, 'YYYYMMDDHHmm').format('DD/MM/YYYY HH:mm');\n };\n const getTimePeriod = (data: {\n selectedDate: { [x: string]: moment.MomentInput };\n }) =>\n `${formatDateStringWithoutSeperator(\n data.selectedDate['start'],\n )} - ${formatDateStringWithoutSeperator(data.selectedDate['end'])}`;\n\n const timestampEnding = (datetimeString: moment.MomentInput) => {\n // Parse the datetime string (assuming format 'YYYYMMDDHHMM')\n const momentDate = moment(datetimeString, 'YYYYMMDDHHmm');\n // Format the date to include local timezone information\n return momentDate.local().format('DD/MM/YYYY HH:mm');\n };\n\n const csvDataArray: any = [];\n\n if (selectedView === 'deviceView') {\n csvDataArray.push([\n `Averaging time data supplied by EarthSense on ${currentDate}`,\n ]);\n } else {\n csvDataArray.push([`Data supplied by EarthSense on ${currentDate}`]);\n }\n\n unitHistories?.historiesList?.forEach(\n (unitHistoryItem: any) => {\n for (const id in unitHistoryItem) {\n if (\n unitHistoryItem.hasOwnProperty(id) &&\n selectedZephyrObj !== null &&\n 'zNumber' in selectedZephyrObj &&\n +id === selectedZephyrObj.zNumber\n ) {\n const unitObj = unitHistoryItem[id];\n const unitType = getZephyrType(unitObj['zType']);\n\n if (selectedView === 'deviceView') {\n const zephyr = zephyrs.find((unit: Zephyr) => unit.zNumber == +id);\n const slotA_BIC = zephyr?.slotA_SN;\n const slotB_BIC = zephyr?.slotB_SN;\n // Add data header\n csvDataArray.push(\n // `Source,${unitObj['name']}`,\n ['Source', `${unitType}`],\n ['ID', `${unitType} (${id.toString()})`],\n ['Site Name', `${unitObj['name']}`],\n ['Time Period', `${getTimePeriod(unitObj)}`],\n [\n 'Timestamp',\n `${timestampEnding(\n unitObj.selectedDate['end'],\n )} Local Time Zone Code Time Ending`,\n ],\n [\n 'Averaging Period',\n `${unitObj['selectedAveragingPeriod'].labelHTML}`,\n ],\n );\n if (slotA_BIC) csvDataArray.push(['Slot A BIC', `${slotA_BIC}`])\n if (slotB_BIC) csvDataArray.push(['Slot B BIC', `${slotB_BIC}`])\n csvDataArray.push([]); // Adding an empty row\n // Exctract titles and data\n const { tableData, tableTitles } = deviceCSVGenerator(unitHistories, unitObj, +id, zephyrs, userInfo.isPublic) as { tableData: any[], tableTitles: string[] };\n csvDataArray.push(tableTitles, ...tableData);\n } else {\n csvDataArray.push(\n ['Time Period', `${getTimePeriod(unitObj)}`],\n [\n 'Timestamp',\n `${timestampEnding(\n unitObj.selectedDate['end'],\n )} Local Time Zone Code Time Ending`,\n ],\n [\n 'Averaging Period',\n `${unitObj['selectedAveragingPeriod'].labelHTML}`,\n ],\n [], // Adding an empty row\n );\n\n // Add data header2\n const { tableData, tableTitles } = summaryTableGenerator(unitHistories, zephyrs, true) as { tableData: any[], tableTitles: { title: string }[] | string[] }; // data and titles need to be in redux\n csvDataArray.push(tableTitles, ...tableData);\n }\n\n csvDataArray.push([], []); // Adding an empty rows\n }\n }\n },\n );\n csvDataArray.join('\\n');\n return csvDataArray;\n };\n\n const getComparisonViewCSV = () => {\n const currentDate = moment().format('DD/MM/YYYY');\n const formatDateStringWithoutSeperator = (datetime: moment.MomentInput) => {\n return moment(datetime, 'YYYYMMDDHHmm').format('DD/MM/YYYY HH:mm');\n };\n const getTimePeriod = (data: {\n selectedDate: { [x: string]: moment.MomentInput };\n }) =>\n `${formatDateStringWithoutSeperator(\n data.selectedDate['start'],\n )} - ${formatDateStringWithoutSeperator(data.selectedDate['end'])}`;\n\n const timestampEnding = (datetimeString: moment.MomentInput) => {\n // Parse the datetime string (assuming format 'YYYYMMDDHHMM')\n const momentDate = moment(datetimeString, 'YYYYMMDDHHmm');\n // Format the date to include local timezone information\n return momentDate.local().format('DD/MM/YYYY HH:mm');\n };\n\n let csvConstantData: string[][] = [[\n `Averaging time data supplied by EarthSense on ${currentDate}`,\n ]];\n const { historiesList } = unitHistories;\n const { selectedAveragingPeriod: { labelHTML } } = Object.values(historiesList[0])[0] as any;\n const formattedAveraginOption = `${labelHTML.split(' ')[0]}${labelHTML.toLowerCase().includes('min') ? 'min' : 'hr'}`;\n const {\n selectedDate: { start, end },\n } = historiesList[0][Object.keys(historiesList[0])[0]];\n const selectedZephyrNumbers = comparisonViewZephyrs.map((z: any) => z.id);\n const commonUnits = historiesList.filter((unit: any) => selectedZephyrNumbers.includes(Object.keys(unit)[0]));\n const zip = new JSZip();\n commonUnits.forEach((unit: any, i: number) => {\n if (i > 0) csvConstantData = [csvConstantData[0]]; // reset if selected zephyrs are more than 1\n const unitId = Object.keys(unit)[0];\n const unitObj = unit[unitId];\n const unitType = getZephyrType(unitObj['zType']);\n const zephyr = zephyrs.find((unit: Zephyr) => unit.zNumber == +unitId);\n const slotA_BIC = zephyr?.slotA_SN;\n const slotB_BIC = zephyr?.slotB_SN;\n csvConstantData.push(\n ['Source', `${unitType}`],\n ['ID', `${unitType} (${unitId.toString()})`],\n ['Site Name', `${unitObj['name']}`],\n ['Time Period', `${getTimePeriod(unitObj)}`],\n [\n 'Timestamp',\n `${timestampEnding(\n unitObj.selectedDate['end'],\n )} Local Time Zone Code Time Ending`,\n ],\n [\n 'Averaging Period',\n `${unitObj['selectedAveragingPeriod'].labelHTML}`,\n ],\n );\n if (slotA_BIC) csvConstantData.push(['Slot A BIC', `${slotA_BIC}`])\n if (slotB_BIC) csvConstantData.push(['Slot B BIC', `${slotB_BIC}`])\n csvConstantData.push([]); // Adding an empty row\n\n const { tableData, tableTitles } = comparisonViewCSVGenerator(unit, zephyrs);\n\n const csvContentArray = [...csvConstantData.map((row: any) => row.join(',')), tableTitles.join(','), ...tableData.map(row => row.join(','))];\n const csvContent = csvContentArray.join('\\n');\n\n // Add UTF-8 BOM (Byte Order Mark) at the start of the CSV content\n const utf8Bom = '\\uFEFF';\n const utf8CsvContent = utf8Bom + csvContent;\n\n // Create a blob with UTF-8 encoding\n const utf8Blob = new Blob([utf8CsvContent], { type: 'text/csv;charset=utf-8;' });\n\n // Add the blob to the zip file\n zip.file(`${unitId}_${start}_${end}_${formattedAveraginOption}.csv`, utf8Blob);\n })\n return zip.generateAsync({ type: 'blob' });\n };\n\n const isUnitHistoriesListUpdated = () => {\n return unitHistories.historiesList.find(\n (zephyr: any) => +(Object.keys(zephyr) as any)[0] === +selectedWeatherZephyr.id,\n );\n };\n\n const handleZephyrsTogglingOnComparisonView = (zephyr: { name: string, id: string, HasMetStation: number | null }) => {\n if (comparisonViewZephyrs.length === 1 && +zephyr.id === +comparisonViewZephyrs[0].id) return;\n const { id: zephyrZNumber } = zephyr;\n setComparisonViewZephyrs((zephyrList: { name: string, id: string, HasMetStation: number | null }[]) => {\n const isZephyrIn = zephyrList.find((z: { name: string, id: string, HasMetStation: number | null }) => z.id === zephyrZNumber);\n return isZephyrIn ? [...zephyrList.filter((z: { name: string, id: string, HasMetStation: number | null }) => z.id !== zephyrZNumber)] : [...zephyrList, zephyr];\n })\n };\n\n const handleFilterBarUpdates = (view: string, zephyr: { name: string, id: string, HasMetStation: number | null }) => {\n switch (view) {\n case 'deviceView':\n handleWeatherZephyrSwitching(zephyr);\n break;\n case 'comparisonView':\n handleZephyrsTogglingOnComparisonView(zephyr);\n break;\n default:\n throw new Error(\"There is an error with your filter bar\");\n }\n };\n\n useEffect(() => {\n if (unitHistories.historiesList && Array.isArray(unitHistories.historiesList) && unitHistories.historiesList.length > 0) {\n const { historiesList } = unitHistories;\n const { selectedPollutants } = historiesList[0][Object.keys(historiesList[0])[0]];\n let comparisonlayouts: { uid: string, name: string, i: string }[] = [];\n let items: { w: number, h: number, x: number, y: number, moved: boolean, static: boolean, i: string, maxH: number, minH: number, minW: number, isRemoved: boolean }[] = [];\n let counter = 0;\n const defaultItems = [];\n\n for (const pollutant of selectedPollutants) {\n const pollutantWidgetName = `${pollutant.dataIdentifier}Widget`;\n const pollutantWidget = layouts && layouts.comparisonView ? layouts.comparisonView.find((p: any) => p.i === pollutantWidgetName) : null;\n let item = {\n w: pollutantWidget ? pollutantWidget.w : 12,\n h: pollutantWidget ? pollutantWidget.h : 8,\n x: pollutantWidget ? pollutantWidget.x : 0,\n y: pollutantWidget ? pollutantWidget.y : counter * 8,\n moved: false,\n static: false,\n i: pollutantWidgetName,\n maxH: 18,\n minH: 4,\n minW: 4,\n isRemoved: pollutantWidget ? Boolean(pollutantWidget.isRemoved) : false,\n };\n let layout = {\n uid: pollutantWidgetName,\n name: pollutant.dataIdentifier,\n i: pollutantWidgetName,\n };\n defaultItems.push({ w: 12, h: 8, x: 0, y: counter * 8, moved: false, static: false, i: pollutantWidgetName, maxH: 18, minH: 4, minW: 4, isRemoved: false })\n items.push(item);\n comparisonlayouts.push(layout);\n counter++;\n }\n // update default comparison view/layout\n setDefaultComparisonView(defaultItems);\n setDefaultComparisonViewLayout(comparisonlayouts);\n\n // Set loading to true before updating states\n setLoadingComparison(true);\n setLayouts((prevLayouts: any) => {\n return { ...prevLayouts, comparisonView: items, comparisonViewLayout: comparisonlayouts }\n })\n }\n }, [unitHistories]);\n\n useEffect(() => {\n // Set loading to false when both arrays are updated\n if (layouts && layouts.hasOwnProperty('comparisonView') && layouts.comparisonView.length > 0 && layouts.comparisonViewLayout.length > 0 && loadingComparison) {\n setLoadingComparison(false);\n }\n }, [unitHistories, layouts, loadingComparison]);\n\n return (\n
    \n \n\n {selectedView === 'networkView' && layouts && layouts['networkView'] && !Array.isArray(unitHistories) && unitHistories.hasOwnProperty('historiesList') && unitHistories.historiesList.length > 0 && unitHistoriesLoading === false && selectedWeatherZephyr && isUnitHistoriesListUpdated() && !userInfo.isPublic ? (\n \n ) : null}\n\n {selectedView === 'deviceView' && layouts && layouts['deviceView'] && !Array.isArray(unitHistories) && unitHistories.hasOwnProperty('historiesList') && unitHistories.historiesList.length > 0 && unitHistoriesLoading === false && selectedWeatherZephyr && isUnitHistoriesListUpdated() ? (\n \n ) : null}\n\n {selectedView === 'comparisonView' && layouts && layouts['comparisonView'] && selectedPollutants && !Array.isArray(unitHistories) && unitHistories.hasOwnProperty('historiesList') && unitHistories.historiesList.length > 0 && unitHistoriesLoading === false && !loadingComparison && selectedWeatherZephyr && isUnitHistoriesListUpdated() && !userInfo.isPublic ? (\n \n ) : null}\n\n \n }\n />\n\n {!userInfo.isPublic && }\n
    \n );\n};\n\nconst mapStateToProps = (state: ReduxState) => ({\n isZephyrsLoading: state.getZephyrs.loading,\n zephyrs: state.getZephyrs.zephyrs,\n unitHistories: state.unitHistoriesOptions.unitHistories,\n unitHistoriesLoading: state.unitHistoriesOptions.isUnitHistoriesLoading,\n thresholdLimits: state.unitHistoriesOptions.thresholdLimits,\n zephyrCoveragesList: state.unitHistoriesOptions.zephyrCoveragesList,\n loading: state.loading,\n bearerToken: state.auth.bearerToken,\n asideOn: state.aside.on,\n requests: state.unitHistoriesOptions.requests,\n nullableUnits: state.unitHistoriesOptions.nullableUnits,\n toProceed: state.unitHistoriesOptions.toProceed,\n viewLoaded: state.unitHistoriesOptions.viewLoaded,\n isCartridgeDataLoading: state.unitHistoriesOptions.isCartridgeDataLoading,\n userInfo: state.auth.userInfo,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n closeAside,\n openAside,\n setUnitHistoriesList,\n setThresholdLimits,\n setIsViewLoaded,\n setIsCartridgeDataLoading,\n setZephyrCoveragesList,\n },\n dispatch,\n );\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(DataAnalyticsContainer);\n","import { Dispatch } from \"redux\";\nimport { ModularFeatures } from \"../reducers/modularFeatures\";\nimport { SET_MODULAR_FEATURES } from \"./types\";\n\n// Action Creators\nconst setNewModularFeaturesState = (modularFeatures: ModularFeatures) => async (dispatch: Dispatch) => {\n dispatch({\n type: SET_MODULAR_FEATURES,\n payload: modularFeatures,\n });\n};\n\nexport {\n setNewModularFeaturesState\n};","import React, { memo, useEffect, useRef } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ReduxState, UnitHistoriesOptions } from '../../utils/interface';\nimport { scatterChartLimit, widgetsGenerator } from '../../utils/consts';\nimport { setIsWidgetLibraryVisible } from '../../actions/dataAnalytics';\nimport { updateScatterChartNumber } from '../../utils/functions/dataAnalytics';\n\ninterface WidgetsLibraryMenuProps {\n layouts: any,\n setLayouts: Function,\n scatterChartsCounter: {\n deviceView: {\n gasWidget: number;\n particulateWidget: number;\n thpWidget: number;\n wsdWidget: number;\n };\n networkView: {\n networkGasWidget: number;\n networkParticulateWidget: number;\n };\n } | null,\n setScatterChartsCounter: Function;\n};\n\nconst WidgetsLibraryMenu = memo(({ layouts, setLayouts, scatterChartsCounter, setScatterChartsCounter }: WidgetsLibraryMenuProps) => {\n const isWidgetLibraryVisible = useSelector((state: ReduxState) => state.unitHistoriesOptions.isWidgetLibraryVisible);\n const selectedView = useSelector((state: ReduxState) => state.selectedChartViewMode);\n const dispatch = useDispatch();\n const closeWidgetsLibrary = (stateSetter: boolean) => { dispatch(setIsWidgetLibraryVisible(stateSetter)) };\n const menuRef = useRef(null);\n\n const handleAddWidget = (widget: any) => {\n setLayouts((prevLayouts: any) => {\n return { ...prevLayouts, [selectedView]: [...layouts[selectedView], { ...widget.item }], [`${selectedView}Layout`]: [...layouts[`${selectedView}Layout`], { ...widget.layout }] }\n });\n handleCloseWidgetsLibraryMenu();\n };\n\n const handleCloseWidgetsLibraryMenu = () => {\n closeWidgetsLibrary(false);\n };\n\n const getScatterChartNumber = (widgetName: string) => {\n if (selectedView === 'deviceView' && scatterChartsCounter) return widgetName.includes('gasWidget') ? scatterChartsCounter[selectedView].gasWidget : widgetName.includes('particulateWidget') ? scatterChartsCounter[selectedView].particulateWidget : widgetName.includes('thpWidget') ? scatterChartsCounter[selectedView].thpWidget : widgetName.includes('wsdWidget') ? scatterChartsCounter[selectedView].wsdWidget : null;\n if (selectedView === 'networkView' && scatterChartsCounter) return widgetName.includes('networkGasWidget') ? scatterChartsCounter[selectedView].networkGasWidget : widgetName.includes('networkParticulateWidget') ? scatterChartsCounter[selectedView].networkParticulateWidget : null;\n };\n\n useEffect(() => {\n if (selectedView === 'comparisonView') closeWidgetsLibrary(false);\n }, [selectedView]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(event.target as Node) && isWidgetLibraryVisible) handleCloseWidgetsLibraryMenu();\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [menuRef, isWidgetLibraryVisible]);\n\n\n const extractWidgetTypes = () => {\n return (widgetsGenerator(layouts) as any)[selectedView].map((widget: any) => {\n const { id, title, subTitle, imageURL, item: { i: widgetName } } = widget;\n const counter = getScatterChartNumber(widgetName);\n const isDisabled = counter === scatterChartLimit;\n return (\n
    { if (!isDisabled) { handleAddWidget(widget); updateScatterChartNumber(setScatterChartsCounter, selectedView, widgetName, true) } }} style={{ display: 'flex', alignItems: 'flex-start', gap: 16, padding: '8px 16px', borderBottom: '1px solid #F7FAFC', cursor: isDisabled ? 'initial' : 'pointer', opacity: isDisabled ? 0.6 : 1 }}>\n {imageURL.split('.')[0]}\n
    \n

    {title}{counter !== null && ({counter}/{scatterChartLimit})}

    \n

    {subTitle}

    \n
    \n
    \n );\n });\n };\n\n return (\n <>\n {isWidgetLibraryVisible &&
    }\n
    \n
    \n

    Add Widget

    \n \n \n \n
    \n
    \n {extractWidgetTypes()}\n
    \n
    \n \n )\n});\n\n\n\nexport default WidgetsLibraryMenu;","import React from 'react';\nimport styled from 'styled-components';\nimport LogoMain from '../../assets/images/logo-white-text.png';\nimport { Link } from 'react-router-dom';\nimport { publicPortals, routePaths } from '../../utils/consts';\n\nconst Container = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100vh;\n background-color: #2a2c42;\n color: #fff;\n font-size: 24px;\n font-weight: bold;\n flex-direction: column;\n text-align: center;\n`;\n\nconst TextContainer = styled.div`\n display: flex;\n align-items: center;\n gap: 45px;\n margin-bottom: 4rem;\n\n @media (max-width: 576px) {\n flex-direction: column;\n gap: 25px;\n }\n`;\n\nconst Pipe = styled.div`\n width: 1px;\n height: 80px;\n background-color: #fff;\n @media (max-width: 576px) {\n display: none;\n }\n`;\n\nconst AnchorTag = styled.a`\n padding: 8px 14px;\n font-size: 2rem;\n font-weight: 600;\n color: #fff;\n background: #4e73c3;\n border-radius: 4px;\n text-decoration: none;\n`;\n\nconst NotFound = () => {\n const user = localStorage.getItem('user');\n const isPublic = user && publicPortals.find((pp: string) => pp === user);\n const hrefPath = isPublic ? `/${user}` : routePaths.app;\n const anchorText = !user ? 'Back to Login' : isPublic ? 'Back to Map' : 'Back to Location';\n\n return (\n \n \"EarthSense\n \n
    404
    \n \n
    This page could not be found.
    \n
    \n {anchorText}\n
    \n );\n};\n\nexport default NotFound;\n","// Package Imports\nimport React, { useState, useEffect, useRef } from 'react';\nimport {\n Switch,\n Route,\n Redirect,\n useHistory,\n useLocation,\n} from 'react-router-dom';\nimport { connect, useSelector } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport TagManager from 'react-gtm-module';\n// Action Imports\nimport {\n loadingInitAppDataOff,\n loadingInitAppDataOn,\n loadingInitAppThirdPartyDataOff,\n loadingInitAppThirdPartyDataOn,\n loadingInitAppOff,\n loadingInitAppOn,\n logout,\n setAlerts,\n setAveragingPeriods,\n setDataConfig,\n setDisplayConfig,\n setFailedLogin,\n setFeedback,\n setPublicAdvice,\n setOverlays,\n setStylegroups,\n setThreshold,\n setTimePeriods,\n setTodayData,\n setUserConfig,\n setUserInfo,\n setVersions,\n setMasterAuthBearerToken,\n} from '../actions/auth';\nimport { queryStringParams } from '../actions/queryStringParams';\nimport { mappAirFilters, setSelectedFilters } from '../actions/mappAirFilters';\nimport { changeOverlayLayer, showOverlayLayer } from '../actions/layers';\nimport { setFeedbackOn } from '../actions/feedback';\nimport { setUnitLocation } from '../actions/locations';\nimport { setAurns, setZephyr, setZephyrs } from '../actions/zephyrs';\nimport { setAirAlerts } from '../actions/airAlerts';\n\n// Components\nimport AirAlerts from './views/AirAlerts';\nimport Alerts from './view_components/Alerts';\nimport Analytics from './views/Analytics';\nimport Data from './views/Data';\nimport Location from './views/Location';\nimport Header from './shared_components/Header';\nimport Login from './views/Login';\nimport Spinner from './shared_components/Spinner';\nimport Today from './views/Today';\nimport UserTour from './view_components/UserTour';\nimport FleetManagement from './views/FleetManagement';\n\n// Consts Imports\nimport {\n defaultLocation,\n defaultSelectedFilters,\n gaseousSlots,\n gtmEventIdentifiers,\n routePaths,\n slots,\n defaultVZephyrsConfig,\n publicPortals,\n} from '../utils/consts';\n\n// Util Imports\nimport analyticsEventFirer from '../utils/functions/analyticsEventFirer';\nimport { queryStringParser } from '../utils/functions/queryStringParser';\nimport utilsRequest from '../utils/request';\nimport { todayDataPackager } from '../utils/functions/todayDataPackager';\nimport { wideScreenFinder } from '../utils/functions/wideScreenFinder';\nimport {\n zephyrMetDataEnricher,\n zephyrMetRequestPackager,\n} from '../utils/functions/zephyrMetDataEnricher';\nimport { sortAnArrayOfZephyrsByName, zephyrSorter } from '../utils/functions/zephyrSorter';\nimport { tallScreenFinder } from '../utils/functions/tallScreenFinder';\nimport {\n current,\n subtractTimeFromNow,\n utcConvertor,\n} from '../utils/functions/dateFinder';\nimport aqiCalculator from '../utils/functions/aqiCalculator';\nimport { airAlertsApiPackager } from '../utils/functions/airAlertsInterface';\nimport { pointDataPackager } from '../utils/functions/saDataPackager';\n\n// Type Imports\nimport {\n AuthProps,\n DataConfig,\n DisplayConfig,\n Feedback,\n LocationCoordinates,\n Overlay,\n ReduxState,\n SlotsInfo,\n SpeciesDataIdentifiers,\n UrlQueryStringParams,\n UserInfo,\n Zephyr,\n ZephyrLastHourInd,\n VirtualZephyr,\n VirtualZephyrData,\n VZephyrsConfig,\n ZephyrTypes,\n LayoutItem,\n Version,\n UserConfig,\n} from '../utils/interface';\nimport { ModularFeatures } from '../reducers/modularFeatures';\nimport SmsGroupAlerts from './views/SmsGroupAlerts';\nimport DataAnalyticsContainer from './views/DataAnalyticsContainer';\nimport { compress, decompress } from 'lz-string';\nimport { setNewModularFeaturesState } from '../actions/modularFeaturesActions';\nimport { setIsCartridgeDataLoading } from '../actions/dataAnalytics';\nimport WidgetsLibraryMenu from './shared_components/WidgetsLibraryMenu';\nimport { defaultLayoutGenerator } from '../utils/functions/dataAnalytics';\nimport debounce from 'lodash.debounce';\nimport MobileNavigationMenu from './view_components/MobileNavigation/MobileNavigationMenu';\nimport NotFound from './view_components/NotFound';\nimport { is404 } from '../utils/functions/general';\n\n// Component Interfaces\ninterface InitState {\n auth: null | AuthProps;\n parsedQueryString: null | UrlQueryStringParams;\n vZephyrsConfig: VZephyrsConfig;\n isDSEEnabled: boolean;\n}\n\ninterface AppContainerProps {\n basename: string;\n dataConfig: DataConfig;\n displayConfig: DisplayConfig;\n feedback: Feedback;\n isAuthenticated: boolean;\n loading: boolean;\n loginFailed: boolean;\n loadingInitAppDataOff: Function;\n loadingInitAppDataOn: Function;\n loadingInitAppThirdPartyDataOff: Function;\n loadingInitAppThirdPartyDataOn: Function;\n loadingInitAppOff: Function;\n loadingInitAppOn: Function;\n logout: Function;\n mappAirFilters: Function;\n overlays: Overlay[];\n queryStringParams: Function;\n setAirAlerts: Function;\n setAlerts: Function;\n setAurns: Function;\n setAveragingPeriods: Function;\n setDataConfig: Function;\n setDisplayConfig: Function;\n setFailedLogin: Function;\n setFeedback: Function;\n setFeedbackOn: Function;\n setOverlays: Function;\n setPublicAdvice: Function;\n setSelectedFilters: Function;\n setStylegroups: Function;\n setThreshold: Function;\n setTimePeriods: Function;\n setTodayData: Function;\n setUnitLocation: Function;\n setUserConfig: Function;\n setUserInfo: Function;\n setVersions: Function;\n setZephyr: Function;\n setZephyrs: Function;\n showOverlayLayer: Function;\n changeOverlayLayer: Function;\n userInfo: UserInfo;\n userLoading: boolean;\n userLocation: LocationCoordinates;\n zephyrs: Zephyr[];\n zephyrSet: Boolean;\n modularFeatures: ModularFeatures;\n setMasterAuthBearerToken: Function;\n bearerToken: string | null;\n setNewModularFeaturesState: Function;\n isCartridgeDataLoading: boolean | null;\n setIsCartridgeDataLoading: Function;\n userConfig: UserConfig;\n versions: Version[];\n}\n// Init App\nconst AppContainer = ({\n basename,\n dataConfig,\n displayConfig,\n isAuthenticated,\n feedback,\n loading,\n loadingInitAppDataOff,\n loadingInitAppDataOn,\n loadingInitAppThirdPartyDataOff,\n loadingInitAppThirdPartyDataOn,\n loadingInitAppOff,\n loadingInitAppOn,\n loginFailed,\n logout,\n mappAirFilters,\n overlays,\n queryStringParams,\n setAirAlerts,\n setAlerts,\n setAurns,\n setAveragingPeriods,\n setDataConfig,\n setDisplayConfig,\n setFailedLogin,\n setFeedbackOn,\n setFeedback,\n setOverlays,\n setPublicAdvice,\n setSelectedFilters,\n setStylegroups,\n setThreshold,\n setTimePeriods,\n setTodayData,\n setUnitLocation,\n setUserInfo,\n setUserConfig,\n setVersions,\n setZephyr,\n setZephyrs,\n showOverlayLayer,\n changeOverlayLayer,\n userInfo,\n userLocation,\n userLoading,\n zephyrs,\n zephyrSet,\n modularFeatures,\n setMasterAuthBearerToken,\n bearerToken,\n setNewModularFeaturesState,\n isCartridgeDataLoading,\n setIsCartridgeDataLoading,\n userConfig,\n versions,\n}: AppContainerProps) => {\n const initState: InitState = {\n auth: null,\n parsedQueryString: null,\n vZephyrsConfig: defaultVZephyrsConfig,\n isDSEEnabled: false,\n };\n const startDate = new Date('2023-01-23T15:00:00');\n const endDate = new Date('2023-02-06T00:00:00');\n const [isBannerShowing, setIsBannerShowing] = useState(false);\n const [bannerValue, setBannerValue] = useState(null);\n const [isModalOpened, setIsModalOpened] = useState(isBannerShowing);\n const [isDSEEnabled, setIsDSEEnabled] = useState(\n initState.isDSEEnabled,\n );\n const [tableData, setTableData] = useState(null);\n const [csvData, setCsvData] = useState(null);\n const [fileName, setFileName] = useState(null);\n const [aqiBands, setAqiBands] = useState(null);\n\n // Consts\n const history = useHistory();\n const location = useLocation();\n const bannerText = [\n 'Hello from Earthsense Data Quality,',\n 'As part of our ongoing continuous improvements, we have made some adjustments to our calibration factors which will be applied to raw PM2.5 measurements. These improvements were recommended by our recent iMCERTs accreditation process. The adjustments will ensure that any Zephyr® which is currently in service and has the correct hardware version, now produces indicative MCERTS compliant PM2.5 measurements without further data processing. The adjustment will also show an improvement on data quality for Zephyrs that do not have iMCERTS compliant hardware.',\n 'The rollout for the improvements is scheduled to happen on February 1st 2023 and will be applied to all historic data.',\n 'If you’re unsure whether your hardware version is iMCERTs compliant, please get in touch with our sales team who will be happy to inform you.',\n 'Email: sales@earthsense.co.uk or; Phone: 0116 2967460 option 2',\n 'You may opt out of the scheduled improvements by emailing us at support@earthsense.co.uk. If we do not receive any correspondence informing us of the decision to opt out, we will assume that the improvements may be implemented with your data. Any questions please feel free to get in touch.',\n 'This popup message will expire on the 6th Feb 2023.',\n ];\n\n // Timers\n let timeout: ReturnType;\n let interval: ReturnType;\n\n // State\n const [authReq, setAuthReq] = useState(initState.auth);\n const [vZephyrsConfig, setVZephyrsConfig] = useState(\n initState.vZephyrsConfig,\n );\n const [screenWidth, setScreenWidth] = useState(window.innerWidth);\n const [layouts, setLayouts] = useState({ ...defaultLayoutGenerator(userInfo ? userInfo.isPublic : false, screenWidth) });\n const selectedView = useSelector((state: ReduxState) => state.selectedChartViewMode);\n const [scatterChartsCounter, setScatterChartsCounter] = useState(null);\n\n // Refs\n const dataConfigRef = useRef(null);\n dataConfigRef.current = dataConfig;\n\n const displayConfigRef = useRef(null);\n displayConfigRef.current = displayConfig;\n\n const isAuthenticatedRef = useRef(null);\n isAuthenticatedRef.current = isAuthenticated;\n\n const oneTimeFeedbackAutomation = useRef(null);\n oneTimeFeedbackAutomation.current = feedback.oneTimeAutomation;\n\n const userLocationRef = useRef(null);\n userLocationRef.current = userLocation;\n\n const zephyrsRef = useRef([]);\n zephyrsRef.current = zephyrs;\n\n let isDefaultZephyrSelected = false;\n\n useEffect(() => {\n if (userInfo && userInfo.isPublic) {\n document.title = `${userInfo.title} | EarthSense`;\n\n let metaDescription = document.querySelector('meta[name=\"description\"]');\n if (!metaDescription) {\n metaDescription = document.createElement('meta');\n metaDescription.setAttribute('name', 'description');\n document.head.appendChild(metaDescription);\n }\n metaDescription.setAttribute('content', userInfo.info);\n\n // Set canonical URL\n let linkCanonical = document.querySelector('link[rel=\"canonical\"]');\n if (!linkCanonical) {\n linkCanonical = document.createElement('link');\n linkCanonical.setAttribute('rel', 'canonical');\n document.head.appendChild(linkCanonical);\n }\n linkCanonical.setAttribute('href', `https://portal.earthsense.co.uk/${localStorage.getItem('user')}`);\n\n return () => {\n document.title = 'EarthSense';\n metaDescription?.removeAttribute('content');\n linkCanonical?.removeAttribute('href');\n };\n }\n }, [userInfo]);\n\n // Update screenWidth when window is resized\n useEffect(() => {\n const handleResize = debounce(() => {\n setScreenWidth(window.innerWidth);\n }, 250);\n\n if (userInfo && userInfo.isPublic) {\n window.addEventListener('resize', handleResize);\n\n return () => {\n window.removeEventListener('resize', handleResize);\n handleResize.cancel();\n };\n }\n }, [userInfo]);\n\n useEffect(() => {\n const updateVersion = async () => {\n if (userConfig && userConfig.hasOwnProperty('latestVersionViewed') && versions && versions.length) {\n const { latestVersionViewed: latestVersionViewedId } = userConfig;\n const { versionId: lastVersionId, versionNotes } = versions[versions.length - 1];\n\n if (latestVersionViewedId !== lastVersionId) {\n const helpkitButton = document.getElementById('helpkit-launcherButton--earthsense');\n if (helpkitButton) {\n (window as any).Helpkit.show('popover', 'article', versionNotes);\n await utilsRequest.updateUserLatestVersionViewed(lastVersionId, bearerToken);\n }\n }\n }\n };\n\n updateVersion();\n }, [userConfig, versions, loading]);\n\n useEffect(() => {\n if (userInfo && userInfo.isPublic) setLayouts({ ...defaultLayoutGenerator(true, screenWidth) });\n\n }, [screenWidth])\n\n useEffect(() => {\n // const {modularFeatures} = await utilsRequest.getModularFeaturesConfig(userID: number);\n if (process.env.REACT_APP_SERVER === 'production') {\n // setNewModularFeaturesState(modularFeatures)\n } else if (process.env.REACT_APP_SERVER === 'beta') {\n // setNewModularFeaturesState(modularFeatures)\n }\n }, []);\n\n useEffect(() => {\n // update global master auth token state with IIFY\n if (!bearerToken && authReq && authReq.username && authReq.password) {\n (async () => {\n const masterAuthBearerToken = await utilsRequest.getMasterAuthToken(\n authReq.username,\n authReq.password,\n is404(authReq.username) && publicPortals.includes(authReq.username) && publicPortals.includes(authReq.password)\n );\n setMasterAuthBearerToken(masterAuthBearerToken);\n })();\n }\n }, [authReq]);\n\n useEffect(() => {\n const rawQueryString = location.search;\n const parsedQueryString = rawQueryString\n ? queryStringParser(rawQueryString)\n : initState.parsedQueryString;\n if (rawQueryString) {\n queryStringParams(parsedQueryString);\n }\n if (!location.pathname.includes('login') && userLoading) {\n const auth = {\n internal: false,\n isAuthenticated: !!localStorage.getItem('token'),\n password: localStorage.getItem('key') || '',\n queryString: parsedQueryString,\n username: localStorage.getItem('user') || '',\n };\n if (basename === 'internal') {\n auth.internal = true;\n } else if (basename && publicPortals.includes(basename)) {\n auth.isAuthenticated = false;\n auth.username = basename;\n auth.password = basename;\n }\n\n if (!wideScreenFinder(800) || !tallScreenFinder(500)) {\n mappAirFilters();\n showOverlayLayer();\n }\n if (\n ((!basename || basename === 'internal') &&\n location.pathname === '/' &&\n localStorage.getItem('isPublic') === 'true') ||\n !auth.username ||\n !auth.password\n ) {\n logout();\n } else {\n const { password, username } = auth;\n if (password && username) {\n setAuthReq(auth);\n }\n }\n }\n }, [location.pathname]);\n\n useEffect(() => {\n // Note the nesting of functions here in the useEffect enables us to declare requests dirtied\n // See the ignore property\n const setUserInfoInternal = async (authIsInternal: boolean) => {\n const updatedUserInfo = await utilsRequest.getUserInfo(bearerToken);\n if ('aqiBands' in updatedUserInfo && updatedUserInfo.aqiBands) {\n const {\n aqiBands: { AQISpecies },\n } = updatedUserInfo;\n setAqiBands(AQISpecies);\n }\n updatedUserInfo.isInternal = authIsInternal;\n await setUserInfo({\n user: localStorage.getItem('user'),\n key: localStorage.getItem('key'),\n userInfo: updatedUserInfo,\n });\n if (updatedUserInfo.isPublic) {\n setUnitLocation(\n updatedUserInfo.startingLng,\n updatedUserInfo.startingLat,\n );\n if (updatedUserInfo.today && updatedUserInfo.todaySpecies) {\n const todayData = await todayDataPackager(\n updatedUserInfo.todaySpecies,\n [updatedUserInfo.startingLat, updatedUserInfo.startingLng],\n bearerToken,\n );\n setTodayData(todayData);\n }\n }\n setLayouts({ ...defaultLayoutGenerator(updatedUserInfo ? updatedUserInfo.isPublic : false, screenWidth) });\n if (!updatedUserInfo.isPublic) {\n setScatterChartsCounter({\n deviceView: {\n gasWidget: [...layouts.deviceView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('gasWidget')).length,\n particulateWidget: [...layouts.deviceView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('particulateWidget')).length,\n thpWidget: [...layouts.deviceView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('thpWidget')).length,\n wsdWidget: [...layouts.deviceView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('wsdWidget')).length,\n },\n networkView: {\n networkGasWidget: [...layouts.networkView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('networkGasWidget')).length,\n networkParticulateWidget: [...layouts.networkView as LayoutItem[]].filter((item: LayoutItem) => item.i.includes('networkParticulateWidget')).length,\n }\n })\n }\n return updatedUserInfo;\n };\n\n const appendHelpkitsScriptTag = (isPublic: boolean | undefined) => {\n if (!isPublic) {\n const style = document.createElement('style');\n style.id = 'helpkit-temp-style';\n style.innerHTML = `\n #helpkit-launcherButton--earthsense {\n display: none !important;\n }\n #helpkit-popover--earthsense {\n bottom: 0px !important;\n }\n @media (min-width: 601px) {\n #helpkit-popover--earthsense {\n bottom: 25px !important;\n }\n }\n `;\n document.head.appendChild(style);\n if (!document.getElementById('helpkit-widget')) {\n const script = document.createElement('script');\n script.id = 'helpkit-widget';\n script.src = 'https://www.helpkit.so/widget/script.js';\n script.async = true;\n script.setAttribute('data-project-id', 'earthsense');\n document.head.appendChild(script);\n }\n }\n }\n\n const authenticate = async () => {\n if (authReq && bearerToken) {\n // Always clear cached data on reauth\n localStorage.removeItem('data');\n let loginState: boolean = false;\n if (!authReq.isAuthenticated) {\n // get/set token\n const token = await utilsRequest.getFetchToken(\n authReq.username,\n authReq.password,\n bearerToken,\n );\n localStorage.setItem('token', token);\n localStorage.setItem('user', authReq.username);\n localStorage.setItem('key', authReq.password);\n }\n const validToken = await utilsRequest.checkValidToken(bearerToken);\n // do correct actions if the token is not valid\n if (!validToken) {\n setAuthReq(null);\n setFailedLogin();\n } else {\n // initalise user analyticsager.initialize(gtmConfig);\n const user = authReq.username;\n const userId = user\n .split('')\n .map((c: string) => c.charCodeAt(0))\n .join('-');\n const tagManagerArgs = {\n dataLayer: {\n userId,\n },\n };\n TagManager.dataLayer(tagManagerArgs);\n // trigger initial App loading phase on\n await loadingInitAppOn();\n // get/set User Info\n const updatedUserInfo = await setUserInfoInternal(authReq.internal);\n localStorage.setItem('isPublic', updatedUserInfo.isPublic);\n loginState = true;\n appendHelpkitsScriptTag(updatedUserInfo.isPublic);\n\n // fire analytics\n const labelEnrichment = loginState ? 'Successful' : 'Unsuccessful';\n analyticsEventFirer(gtmEventIdentifiers.login, labelEnrichment);\n }\n }\n };\n authenticate();\n }, [authReq, bearerToken]);\n\n useEffect(() => {\n if (\n userInfo &&\n userInfo.today &&\n (!wideScreenFinder(800) || !tallScreenFinder(500))\n ) {\n history.push(routePaths.today);\n }\n }, [userInfo]);\n\n const isFeedbackDue = () => {\n let isDue = false;\n const user = localStorage.getItem('user');\n\n const random = (min: number, max: number) =>\n Math.floor(Math.random() * (max - min)) + min;\n\n const feedbackDueDateStr = localStorage.getItem('feedbackDueDate');\n const dateObject = new Date();\n const currentDate = dateObject.getDate();\n const currentMonth = dateObject.getMonth() + 1; // 👈️ months are 0-based\n const dueMonth = currentMonth === 12 ? 1 : currentMonth;\n\n // first time user\n if (!feedbackDueDateStr) {\n const dueDate = random(1, 28);\n\n const objectTosave = {\n user,\n dueDate,\n dueMonth: dueMonth + 1 > 12 ? 1 : dueMonth + 1,\n feedbackShown: false,\n };\n localStorage.setItem('feedbackDueDate', JSON.stringify(objectTosave));\n\n if (currentDate === dueDate) isDue = true;\n } else {\n const savedObj = JSON.parse(feedbackDueDateStr);\n const {\n user: savedUser,\n dueDate,\n dueMonth: savedCurrentMonth,\n feedbackShown: savedFeedbackShown,\n } = savedObj;\n\n // match due date\n if (\n currentMonth === savedCurrentMonth &&\n currentDate === dueDate &&\n savedUser === user &&\n !savedFeedbackShown\n ) {\n const objectTosave = {\n user,\n dueDate,\n dueMonth,\n feedbackShown: savedFeedbackShown,\n };\n localStorage.setItem('feedbackDueDate', JSON.stringify(objectTosave));\n isDue = true;\n }\n\n if (savedCurrentMonth < currentMonth) {\n // renew Due date\n const objectTosave = {\n user,\n dueDate: currentDate,\n dueMonth: dueMonth + 1 > 12 ? 1 : dueMonth + 1,\n feedbackShown: false,\n };\n localStorage.setItem('feedbackDueDate', JSON.stringify(objectTosave));\n }\n }\n\n return isDue;\n };\n\n useEffect(() => {\n if (\n isAuthenticated &&\n userInfo &&\n !userInfo.isPublic &&\n feedback.questions.length > 0 &&\n isFeedbackDue()\n ) {\n timeout = setTimeout(() => {\n if (oneTimeFeedbackAutomation.current && isAuthenticatedRef.current) {\n setFeedbackOn();\n }\n }, 30000);\n }\n }, [isAuthenticated, feedback, userInfo]);\n\n useEffect(() => {\n if (!isAuthenticated) {\n clearTimeout(timeout);\n clearInterval(interval);\n }\n }, [isAuthenticated]);\n\n useEffect(() => {\n // Stale request state\n let ignore = false;\n let aurnsList: any = [];\n // Launch sequence\n const launch = async () => {\n if (userInfo.isPublic) {\n const publicAdvice = await utilsRequest.getPublicAdvice(bearerToken);\n await setPublicAdvice(publicAdvice);\n }\n\n setSelectedFilters(defaultSelectedFilters);\n\n // Initiate parallel requests for config-related data\n const [\n displayConfig,\n updatedOverlays,\n agreements,\n userConfig,\n stylegroups,\n timePeriods,\n averagingPeriods,\n dataConfigInternal,\n vZephyrsConfigResponse,\n feedbackQuestions,\n ] = await Promise.all([\n utilsRequest.getDisplayConfig(bearerToken),\n utilsRequest.getOverlays(bearerToken, userInfo.isPublic),\n utilsRequest.getUserAgreements(bearerToken),\n utilsRequest.getUserConfig(bearerToken),\n utilsRequest.getStylegroups(bearerToken),\n utilsRequest.getTimePeriods(bearerToken),\n utilsRequest.getAveragingPeriods(bearerToken),\n utilsRequest.getDataConfig(bearerToken),\n utilsRequest.getUserVZephyrConfig(bearerToken),\n !userInfo.isPublic\n ? utilsRequest.getUserFeedbackQuestions(bearerToken)\n : Promise.resolve(null),\n ]);\n\n // Setting the responses\n await setDisplayConfig(displayConfig);\n await setOverlays(updatedOverlays);\n\n if (agreements.length > 0) {\n await setAlerts(agreements);\n }\n\n if (!userInfo.isPublic && feedbackQuestions) {\n await setFeedback(feedbackQuestions);\n }\n\n if (vZephyrsConfigResponse) {\n const {\n active_vzephyrs: active,\n active_vzephyrs_max: max,\n new_vzephyrs_30days: new30Days,\n new_vzephyrs_30days_max: new30DaysMax,\n } = vZephyrsConfigResponse;\n\n setVZephyrsConfig({\n active,\n max,\n new30Days,\n new30DaysMax,\n });\n }\n\n await setUserConfig(userConfig);\n await setStylegroups(stylegroups);\n\n if (stylegroups.length) {\n const threshold = stylegroups[0].name;\n await setThreshold(threshold);\n }\n\n await setTimePeriods(timePeriods);\n await setAveragingPeriods(averagingPeriods);\n await setDataConfig(dataConfigInternal);\n\n // get/set zephyrs and aurns with last hour data and met data\n await setUnits(false, userInfo.isPublic);\n\n // trigger initial App loading phase off for Public and Private\n await mappAirFilters();\n await showOverlayLayer();\n\n if (updatedOverlays) {\n const foundOneCompatibleOverlayWithPollution = updatedOverlays.find(\n (updatedOverlay: Overlay) =>\n updatedOverlay.accessGranted && updatedOverlay.isMappairOverlay\n );\n if (foundOneCompatibleOverlayWithPollution) {\n const { name: overlayName } = foundOneCompatibleOverlayWithPollution;\n await changeOverlayLayer(overlayName);\n }\n }\n\n await loadingInitAppOff();\n\n // Set polling\n if (!userInfo.isPublic) {\n interval = setInterval(() => {\n if (isAuthenticatedRef.current && zephyrsRef.current.length > 0) {\n if (!isCartridgeDataLoading) setIsCartridgeDataLoading(true);\n setUnits(true, userInfo.isPublic);\n }\n }, 600000);\n }\n };\n\n\n const getAvailableSpeciesLabels = () => {\n if (displayConfigRef.current) {\n const availableSpecies: string[] = [];\n displayConfigRef.current.tabs.forEach((t) =>\n t.species.forEach((tS) => availableSpecies.push(tS.label)),\n );\n return availableSpecies;\n }\n return [];\n };\n\n const getAvailableSpeciesIdentifiers = () => {\n if (displayConfigRef.current) {\n const availableSpecies: SpeciesDataIdentifiers[] = [];\n displayConfigRef.current.tabs.forEach((t) =>\n t.species.forEach((tS) =>\n tS.dataIdentifiers.forEach((tSD) => availableSpecies.push(tSD)),\n ),\n );\n return availableSpecies;\n }\n return [];\n };\n\n const getSpeciesLabelFromSpeciesIdentifier = (\n speciesIdentifier: SpeciesDataIdentifiers,\n ) => {\n let speciesLabel = '';\n if (displayConfigRef.current) {\n displayConfigRef.current.tabs.forEach((t) =>\n t.species.forEach((tS) => {\n if (tS.dataIdentifiers.includes(speciesIdentifier)) {\n speciesLabel = tS.label;\n }\n }),\n );\n }\n return speciesLabel;\n };\n\n const getUsersAurns = async () => {\n const userAurnList = await utilsRequest.getAurns(bearerToken);\n const availableSpecies = getAvailableSpeciesLabels();\n const enrichedUserAurnList = userAurnList.map((userAurn: Zephyr) => {\n const enrichedAurn: any = {\n ...userAurn,\n name: userAurn.location,\n averageOfLastHourOfData: null,\n slotsInfo: null,\n type: 1,\n };\n availableSpecies.forEach((aS) => {\n if (aS in enrichedAurn) {\n if (enrichedAurn.averageOfLastHourOfData === null) {\n enrichedAurn.averageOfLastHourOfData = {};\n }\n enrichedAurn.averageOfLastHourOfData[aS] = enrichedAurn[aS]\n ? Math.round(enrichedAurn[aS])\n : null;\n delete enrichedAurn[aS];\n }\n });\n const {\n averageOfLastHourOfData: { NO2, PM2p5 },\n } = enrichedAurn;\n const AQIMax = aqiCalculator(NO2, PM2p5, aqiBands);\n enrichedAurn.AQI = AQIMax;\n enrichedAurn.averageOfLastHourOfData = {\n ...enrichedAurn.averageOfLastHourOfData,\n AQI: AQIMax,\n };\n return enrichedAurn;\n });\n return enrichedUserAurnList;\n };\n\n const addMetInfoToUsersZephyrs = async (userZephyrs: Zephyr[]) => {\n const packagedMetRequest = zephyrMetRequestPackager(userZephyrs);\n const externalMetData = await utilsRequest.getLatestMetDataForUser(\n packagedMetRequest as any,\n );\n const enrichedZephyrs = zephyrMetDataEnricher(\n externalMetData,\n userZephyrs,\n );\n return enrichedZephyrs;\n };\n\n const getUsersZephyrs = async () => {\n const userZephyrList = await utilsRequest.getZephyrs(bearerToken);\n const virtualZephyrList = await getUserVirtualZephyrs();\n const list = [...userZephyrList, ...sortAnArrayOfZephyrsByName(virtualZephyrList)];\n return list;\n };\n\n const getUsersZephyrsData = async (userZephyrList: any) => {\n // return [];\n let aurnsCalled: boolean = false;\n if (dataConfigRef.current) {\n const currentDT = utcConvertor(current());\n const backstopDT = utcConvertor(subtractTimeFromNow(2, 'hour'));\n const twoHourDt = utcConvertor(subtractTimeFromNow(2, 'hour'));\n const TwoHourDataConfig = {\n ...dataConfigRef.current,\n averagingChain: 1,\n };\n const availableSpecies = getAvailableSpeciesIdentifiers();\n if (userZephyrList.length === 0 && aurnsCalled === false) {\n aurnsCalled = true;\n aurnsList = await getUsersAurns();\n }\n const enrichedUserZephyrList: Zephyr[] = userZephyrList.map(\n async (userZephyr: Zephyr) => {\n let measurementDataParams = null;\n let enrichedZephyr = {\n ...userZephyr,\n averageOfLastHourOfData: null,\n };\n const lastDataDT = userZephyr.lastDataDT\n ? utcConvertor(userZephyr.lastDataDT)\n : null;\n //If we have a connection and if the last connection is less than an hour old\n const cleanData =\n lastDataDT && utcConvertor(userZephyr.lastDataDT) < backstopDT;\n\n if (\n !userZephyr.userEndTimeDate ||\n userZephyr.type === ZephyrTypes.virtual\n ) {\n if (aurnsCalled === false) {\n aurnsCalled = true;\n aurnsList = await getUsersAurns();\n }\n //used to be cleanData variable, but I think the logic might be flawed?\n if (true) {\n let userZephyrLastHour = null;\n\n if (userZephyr.type === ZephyrTypes.virtual) {\n const { latitude, longitude } = userZephyr;\n const currentDate = new Date();\n const dateStart = currentDate.setHours(\n currentDate.getHours() - 1,\n ); // lasthour\n\n userZephyrLastHour = await utilsRequest.getDataAtCoords(\n latitude,\n longitude,\n new Date(dateStart).toISOString(),\n currentDate.toISOString(),\n bearerToken,\n 'NO2,PM2p5,windspeed',\n );\n if (userZephyrLastHour.results) {\n const { results } = userZephyrLastHour;\n const averageOfLastHourOfData: any = {};\n\n //only grab data from results if call was successful\n if (results) {\n results.map((spec: any) => {\n averageOfLastHourOfData[spec.species] =\n spec.values_coordinates[0].values_timestamps[0].value;\n });\n }\n const { NO2, PM2p5 } = averageOfLastHourOfData;\n const AQIMax = aqiCalculator(NO2, PM2p5, aqiBands);\n averageOfLastHourOfData.AQI = AQIMax;\n enrichedZephyr = {\n ...userZephyr,\n averageOfLastHourOfData,\n };\n return enrichedZephyr;\n }\n }\n const zephyrLastConnectionTime: any = utcConvertor(\n userZephyr.lastConnectionDT,\n );\n const slotsData = userZephyr.slotA_SN ?? userZephyr.slotB_SN;\n const isCurData =\n zephyrLastConnectionTime.slice(0, 8) == currentDT.slice(0, 8);\n const isDifLessThanTwoHours =\n parseInt(currentDT.slice(8, 10)) -\n parseInt(zephyrLastConnectionTime.slice(8, 10)) <\n 3;\n if (userInfo.isPublic) measurementDataParams = [userZephyr, twoHourDt, currentDT, TwoHourDataConfig, bearerToken, location.pathname === '/', false, [], false, '', true];\n if (slotsData && isCurData && isDifLessThanTwoHours) {\n if (!userInfo.isPublic) {\n userZephyrLastHour = await utilsRequest.getZephyrMeasurementData(\n userZephyr,\n twoHourDt,\n currentDT,\n TwoHourDataConfig,\n bearerToken,\n location.pathname === '/',\n );\n const userZephyrLastHourData = userZephyrLastHour.data;\n const packagedUserZephyrLastHourData:\n | ZephyrLastHourInd\n | any = {};\n if (\n userZephyrLastHourData &&\n userZephyrLastHourData['Hourly average on the hour']\n ) {\n availableSpecies.forEach((aS) => {\n let aSValues: number[] = [];\n slots.forEach((s) => {\n const slotValue =\n userZephyrLastHourData['Hourly average on the hour'][\n s.label\n ] &&\n userZephyrLastHourData['Hourly average on the hour'][\n s.label\n ][aS] &&\n userZephyrLastHourData['Hourly average on the hour'][\n s.label\n ][aS].data\n ? userZephyrLastHourData[\n 'Hourly average on the hour'\n ][s.label][aS].data\n : null;\n if (slotValue) {\n aSValues = slotValue;\n }\n });\n const averagedASValues = aSValues.length\n ? Math.round(\n aSValues.reduce((a, b) => a + b) / aSValues.length,\n )\n : null;\n const speciesLabel = getSpeciesLabelFromSpeciesIdentifier(\n aS,\n );\n if (!(speciesLabel in packagedUserZephyrLastHourData)) {\n packagedUserZephyrLastHourData[\n speciesLabel\n ] = averagedASValues;\n }\n });\n const AQIMax = aqiCalculator(\n packagedUserZephyrLastHourData.NO2,\n packagedUserZephyrLastHourData.Pm2p5,\n aqiBands,\n );\n packagedUserZephyrLastHourData.AQI = AQIMax;\n enrichedZephyr = {\n ...enrichedZephyr,\n averageOfLastHourOfData: packagedUserZephyrLastHourData,\n };\n }\n }\n }\n return userInfo.isPublic ? { ...enrichedZephyr, measurementDataParams } : enrichedZephyr;\n }\n return enrichedZephyr;\n }\n return userInfo.isPublic ? { ...enrichedZephyr, measurementDataParams } : enrichedZephyr;\n },\n );\n\n return Promise.all(enrichedUserZephyrList);\n }\n return [];\n };\n\n const getInitZephyrList = async (isPublic: boolean) => {\n // Get users zephyrs list\n const userZephyrsList = await getUsersZephyrs();\n // Add names\n const userZephyrsListWithNames = userZephyrsList.map((sUN) => {\n return {\n ...sUN,\n slotsInfo: null,\n name: sUN.alias || sUN.name || sUN.zNumber?.toString(),\n };\n });\n\n // Sort Zephyrs\n const sortedUserZephyrsList = zephyrSorter(\n userZephyrsListWithNames,\n isPublic,\n );\n return sortedUserZephyrsList;\n };\n\n const getUnits = async (userZephyrList: Zephyr[]) => {\n const userZephyrsWithData = await getUsersZephyrsData(userZephyrList);\n\n // Combine Zephyrs and AURNs\n const userZephyrs = [\n ...userZephyrsWithData,\n ...aurnsList,\n // ...virtualZephyrs,\n ];\n setZephyrs(userZephyrs);\n // Sort the combined list\n const sortedUnits = zephyrSorter(userZephyrs, userInfo.isPublic);\n return sortedUnits;\n };\n\n const addUnitList = async (isPolling: boolean, unitList: Zephyr[]) => {\n if (!ignore && isAuthenticated && unitList.length) {\n setZephyrs([...unitList]);\n if (!isPolling && !isDefaultZephyrSelected) {\n const curZephyr = unitList[0];\n setZephyr(curZephyr);\n isDefaultZephyrSelected = true;\n if (\n defaultLocation === userLocationRef.current &&\n !curZephyr.userEndTimeDate\n ) {\n setUnitLocation(curZephyr.longitude, curZephyr.latitude);\n }\n }\n }\n };\n\n const setUnits = async (isPolling: boolean, isPublic: boolean) => {\n const initZephyrList = await getInitZephyrList(isPublic);\n if (!isPolling && !isPublic && initZephyrList.length !== 0) {\n await addUnitList(isPolling, initZephyrList);\n await loadingInitAppDataOn();\n }\n const userUnits = await getUnits(initZephyrList);\n if (userUnits.length !== 0) {\n // Call /measurementdata one by one for public portals only\n if (isPublic) {\n const availableSpecies = getAvailableSpeciesIdentifiers();\n const counterMax = [...userUnits].filter((unit: Zephyr) => unit.measurementDataParams).length;\n let counter = 0;\n await loadingInitAppDataOn();\n for (const unit of userUnits) {\n const { measurementDataParams } = unit;\n const idx = userUnits.findIndex((u: Zephyr) => u.zNumber === unit.zNumber);\n if (measurementDataParams) {\n utilsRequest.getZephyrMeasurementData(measurementDataParams[0], measurementDataParams[1], measurementDataParams[2], measurementDataParams[3], measurementDataParams[4], measurementDataParams[5], measurementDataParams[6], measurementDataParams[7], measurementDataParams[8], measurementDataParams[9], measurementDataParams[10],\n ).then(async (userZephyrLastHour) => {\n try {\n const userZephyrLastHourData = userZephyrLastHour.data;\n const packagedUserZephyrLastHourData: ZephyrLastHourInd | any = {};\n if (userZephyrLastHourData && userZephyrLastHourData['Hourly average on the hour']) {\n availableSpecies.forEach((aS) => {\n let aSValues: number[] = [];\n slots.forEach((s) => {\n const slotValue =\n userZephyrLastHourData['Hourly average on the hour'][s.label]?.[aS]?.data || null;\n if (slotValue) {\n aSValues = slotValue;\n }\n });\n const averagedASValues = aSValues.length\n ? Math.round(aSValues.reduce((a, b) => a + b) / aSValues.length)\n : null;\n const speciesLabel = getSpeciesLabelFromSpeciesIdentifier(aS);\n if (!(speciesLabel in packagedUserZephyrLastHourData)) {\n packagedUserZephyrLastHourData[speciesLabel] = averagedASValues;\n }\n });\n const AQIMax = aqiCalculator(\n packagedUserZephyrLastHourData.NO2,\n packagedUserZephyrLastHourData.Pm2p5,\n aqiBands,\n );\n packagedUserZephyrLastHourData.AQI = AQIMax;\n userUnits[idx] = { ...unit, averageOfLastHourOfData: packagedUserZephyrLastHourData };\n await addUnitList(isPolling, userUnits);\n }\n else {\n userUnits[idx] = { ...unit, averageOfLastHourOfData: false }\n await addUnitList(isPolling, userUnits);\n }\n } catch (error) {\n userUnits[idx] = { ...unit, averageOfLastHourOfData: false }\n await addUnitList(isPolling, userUnits);\n }\n ++counter;\n if (counter === counterMax) await loadingInitAppDataOff();\n }).catch(async (error) => {\n ++counter;\n userUnits[idx] = { ...unit, averageOfLastHourOfData: false }\n await addUnitList(isPolling, userUnits);\n if (counter === counterMax) await loadingInitAppDataOff();\n })\n }\n }\n } else { await addUnitList(isPolling, userUnits); }\n } else if (\n overlays.length &&\n overlays[0].name &&\n overlays.filter((ol: Overlay) => ol.isMappairOverlay).length\n ) {\n // turn on MappAir\n await mappAirFilters();\n await showOverlayLayer();\n } else {\n //If we have no units and we aren't told to automatically be in mappair overlay\n //We set an empty array of zephyrs so the user can continue\n setZephyrs([]);\n }\n if (!isPublic || !initZephyrList.length) await loadingInitAppDataOff();\n };\n\n if (isAuthenticated) {\n launch();\n }\n\n return () => {\n ignore = true;\n };\n }, [isAuthenticated]);\n\n // remove versions from local storage after reloading the page\n\n useEffect(() => {\n window.addEventListener('beforeunload', updateStatesAfterReloading);\n return () => {\n window.removeEventListener('beforeunload', updateStatesAfterReloading);\n };\n }, []);\n\n const removeVersionsFromLocalStorage = () => {\n if (localStorage.getItem('Versions')) localStorage.removeItem('Versions');\n };\n\n const removeAlertsFromLocalStorage = () => {\n if (localStorage.getItem('alerts')) localStorage.removeItem('alerts');\n };\n\n const updateStatesAfterReloading = () => {\n removeVersionsFromLocalStorage();\n removeAlertsFromLocalStorage();\n };\n\n const getVZephyrWithDefaultData = (vzCreated: any) => {\n // if end date is null add 1 month to prevent ui break\n const currentDate = new Date();\n const userEndTimeDate =\n vzCreated.endDt ||\n vzCreated.end_dt ||\n new Date(currentDate.setMonth(currentDate.getMonth() + 1)).toISOString();\n const { species_keywords } = vzCreated;\n const speciesList: string[] = species_keywords.map((el: { species: string, keyword: string | null }) => {\n const { species } = el;\n if (species.includes('pm')) return 'PM';\n return species.toUpperCase();\n });\n const item: Zephyr = {\n id_pod: vzCreated.id,\n name: vzCreated.name,\n type: 100,\n userEndTimeDate,\n userStartTimeDate: vzCreated.startdt || vzCreated.start_dt,\n latitude: vzCreated.latlon?.latitude,\n longitude: vzCreated.latlon?.longitude,\n zNumber: vzCreated.id,\n HasCertificate: null,\n averageOfLastHourOfData: null,\n SampPeriod: vzCreated.sampleFreqMins || vzCreated.sample_freq_mins,\n alias: vzCreated.name,\n backLogCount: null,\n batteryCharge: null,\n batteryVoltage: null,\n externalMetData: null,\n externalVoltage: null,\n firmwareVersion: 'Virtual',\n id_location: null,\n lastConnectionDT: null,\n lastDataDT: null,\n latLngAltered: null,\n location: '',\n locationStartTimeDate: null,\n locationType: null,\n measurementCount: null,\n mobileLocation: null,\n serialNumber: 'virtual',\n slotA_SN: null,\n slotA_start: null,\n slotB_SN: null,\n slotB_start: null,\n slotsInfo: { slotA: null, slotB: null, key: null },\n species: speciesList.includes('PM') ? Array.from(new Set(speciesList)) : speciesList,\n };\n\n return item;\n };\n\n const getUserVirtualZephyrs = async () => {\n let virtualZephyrList:\n | VirtualZephyr[]\n | any = await utilsRequest.getVZephyrs(bearerToken);\n // use only subscribed one\n virtualZephyrList = Array.isArray(virtualZephyrList)\n ? virtualZephyrList.filter(\n (vz) => vz.end_dt === null || new Date(vz.end_dt) > new Date(),\n )\n : 'vzephyrs' in virtualZephyrList\n ? virtualZephyrList.vzephyrs?.filter(\n (vz: VirtualZephyr) =>\n vz.end_dt === null || new Date(vz.end_dt) > new Date(),\n )\n : [];\n\n const vZephyrDataList = Array.isArray(virtualZephyrList)\n ? virtualZephyrList.map((vz) => {\n const item = getVZephyrWithDefaultData(vz);\n return item;\n })\n : virtualZephyrList.vzephyrs.map((vz: any) => {\n const item = getVZephyrWithDefaultData(vz);\n return item;\n });\n\n return Promise.all(vZephyrDataList);\n };\n\n const setBannerWithExpiryTime = (key: string, value: string[]) => {\n const item = {\n value: value,\n };\n setBannerValue(value);\n localStorage.setItem(key, JSON.stringify(item));\n };\n\n const verifyBannerExpiryTime = (key: string, value: string[]) => {\n const itemStr = localStorage.getItem(key);\n if (!itemStr) return;\n setBannerValue(value);\n setIsBannerShowing(true);\n setIsModalOpened(true);\n };\n\n const addBannerToLocalStorage = () => {\n const isBannerShowingToString = (!isBannerShowing).toString();\n localStorage.setItem('toShowBanner', isBannerShowingToString);\n setBannerWithExpiryTime('banner', bannerText);\n setIsBannerShowing(true);\n setIsModalOpened(true);\n };\n\n const updateBannerStatus = () => {\n verifyBannerExpiryTime('banner', bannerText);\n const isBannerExpired = (!!localStorage.getItem('banner')).toString();\n localStorage.setItem('toShowBanner', isBannerExpired!);\n };\n\n const freeLocalStorageFromBannerProperties = () => {\n if (localStorage.getItem('toShowBanner'))\n localStorage.removeItem('toShowBanner');\n if (localStorage.getItem('banner')) localStorage.removeItem('banner');\n };\n\n useEffect(() => {\n if (isAuthenticated && !userInfo.isPublic) {\n const curDate = new Date();\n if (curDate >= startDate && curDate <= endDate) {\n if (!localStorage.getItem('toShowBanner')) {\n addBannerToLocalStorage();\n return;\n }\n if (\n localStorage.getItem('toShowBanner') &&\n localStorage.getItem('toShowBanner') === 'true'\n )\n updateBannerStatus();\n } else {\n freeLocalStorageFromBannerProperties();\n }\n }\n }, [isAuthenticated]);\n\n useEffect(() => {\n if (localStorage.getItem('isPublic') === 'true' && !basename) {\n window.location.replace('/');\n }\n }, [basename]);\n\n if (is404(basename)) return ;\n\n return (\n
    \n \n {userLoading && !location.pathname.includes('login') ? (\n <>\n ) : (\n <>\n {!location.pathname.includes('login') ? (\n <>\n {/* */}\n
    \n \n ) : (\n <>\n )}\n \n \n {!isAuthenticated && \n \n }\n\n {\n if (routeProps.location.pathname !== \"/login\") {\n return ;\n }\n\n return isAuthenticated ? (\n \n ) : (\n \n );\n }}\n />\n \n basename && basename !== 'internal' ? (\n userLocation !== defaultLocation ? (\n \n ) : (\n <>\n )\n ) : !localStorage.getItem('token') ||\n localStorage.getItem('isPublic') === 'true' ? (\n \n ) : (\n \n )\n }\n />\n\n (\n \n zephyrSet || routeProps.location.search.includes('annualavg') ? (\n <>\n \n \n \n ) : (\n \n )\n }\n />\n )\n\n \n zephyrSet ? (\n \n ) : (\n \n )\n }\n />\n \n wideScreenFinder(800) && tallScreenFinder(500) ? (\n \n ) : (\n \n )\n }\n />\n \n isAuthenticated && !userInfo.isPublic ? (\n \n ) : (\n \n )}\n />\n \n isAuthenticated && !userInfo.isPublic ? (\n \n ) : (\n \n )\n }\n />\n {(localStorage.getItem('user') === 'BP_Alerting' ||\n localStorage.getItem('user') === 'BP_Alerting_Alternative') && (\n (\n \n )}\n />\n )}\n\n \n isAuthenticated ? (\n \n ) : (\n \n )}\n />\n \n {userInfo && !userInfo.isPublic && layouts && selectedView && selectedView !== 'comparisonView' && }\n \n \n )}\n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n dataConfig: state.dataConfig,\n displayConfig: state.setDisplayConfig,\n isAuthenticated: state.auth.isAuthenticated,\n feedback: state.feedback,\n loading: state.getZephyrs.loading,\n loginFailed: state.auth.loginFailed,\n overlays: state.setOverlays,\n userInfo: state.auth.userInfo,\n userLocation: state.setLocation.location,\n userLoading: state.auth.loading,\n zephyrs: state.getZephyrs.zephyrs,\n zephyrSet: state.setZephyr.set,\n modularFeatures: state.modularFeatures,\n bearerToken: state.auth.bearerToken,\n isCartridgeDataLoading: state.unitHistoriesOptions.isCartridgeDataLoading,\n userConfig: state.setUserConfig,\n versions: state.setVersions,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n loadingInitAppDataOff,\n loadingInitAppDataOn,\n loadingInitAppThirdPartyDataOff,\n loadingInitAppThirdPartyDataOn,\n loadingInitAppOff,\n loadingInitAppOn,\n logout,\n mappAirFilters,\n queryStringParams,\n setAirAlerts,\n setAlerts,\n setAurns,\n setAveragingPeriods,\n setDataConfig,\n setDisplayConfig,\n setFailedLogin,\n setFeedback,\n setFeedbackOn,\n setPublicAdvice,\n setSelectedFilters,\n setOverlays,\n setStylegroups,\n setThreshold,\n setTimePeriods,\n setTodayData,\n setUnitLocation,\n setUserConfig,\n setUserInfo,\n setVersions,\n setZephyr,\n setZephyrs,\n showOverlayLayer,\n changeOverlayLayer,\n setMasterAuthBearerToken,\n setNewModularFeaturesState,\n setIsCartridgeDataLoading,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AppContainer);\n","// Type Imports\nimport {\n UrlQueryStringOptions,\n UrlQueryStringParams,\n} from '../../utils/interface';\n\n/* Function\nDESC: queryStringParser returns an object of keys and values parsed from a raw query string\nARGS: rawQueryString\n*/\nconst queryStringParser = (rawQueryString: string) => {\n let qsParams: UrlQueryStringParams = { ctv: '', diagnostics: '' };\n let mode = '';\n let curKey: UrlQueryStringOptions = '';\n let curVal: UrlQueryStringOptions = '';\n rawQueryString.split('').forEach((char, idx, arr) => {\n const validateAndPushNewParam = () => {\n if (curKey in qsParams) {\n qsParams[curKey] = curVal;\n }\n };\n if (char === '&' || char === '?') {\n mode = 'key';\n if (char === '&') {\n validateAndPushNewParam();\n curKey = '';\n curVal = '';\n }\n } else if (char === '=') {\n mode = 'value';\n } else {\n if (mode === 'key') {\n curKey += char;\n } else {\n curVal += char;\n }\n }\n if (idx === arr.length - 1) {\n validateAndPushNewParam();\n }\n });\n return qsParams;\n};\n\nexport { queryStringParser };\n","// Package Imports\nimport React from 'react';\nimport { BrowserRouter } from 'react-router-dom';\nimport TagManager from 'react-gtm-module';\nimport { Provider } from 'react-redux';\nimport Cookies from 'js-cookie';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport DateMomentUtils from '@date-io/moment';\n\n// Redux\nimport store from './store';\n\n// Assets\nimport './assets/css/core.css';\n\n// Consts\nimport { gtmConfig, permissionCookieSettings } from './utils/consts';\n\n// Components\nimport AppContainer from './components/AppContainer';\n\n// Init App\nconst App = () => {\n // Effects\n //TODO persistQuerystring\n // useEffect(() => {\n // // persist url\n // const persistQuerystring: Boolean = false;\n // const currentLanguage: string = i18n.language || localStorage.i18nextLng;\n // if (!location.search.includes('/?lang') && persistQuerystring) {\n // history.push(`/?lng=${currentLanguage}`);\n // }\n\n // return () => {};\n // }, []);\n\n // Functions\n const getRouterBasename = () => {\n const defaultBasename = '';\n const basename = window.location.pathname.match(/\\w+[^\\/]/);\n const determinedBasename = basename\n ? basename[0] === 'login' ||\n basename[0] === 'alerts' ||\n basename[0] === 'today' ||\n ((localStorage.getItem('user') === 'BP_Alerting' ||\n localStorage.getItem('user') === 'BP_Alerting_Alternative') &&\n basename[0] === 'smsAlerts') ||\n basename[0] === 'analysis'\n ? defaultBasename\n : basename[0]\n : defaultBasename;\n return determinedBasename;\n };\n\n // Consts\n const basename = getRouterBasename();\n const optOutCookie = Cookies.get(permissionCookieSettings.name);\n\n // Initialization\n if (basename !== 'internal' && optOutCookie !== 'true') {\n TagManager.initialize({ ...gtmConfig, userId: '0000' });\n }\n\n // App\n return (\n \n \n \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister();\n });\n }\n}\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport * as Sentry from \"@sentry/react\";\nimport { isStringDefinedAndNotEmpty } from './utils/functions/general.ts';\nimport {config as dotenvConfig} from './utils/consts';\n\n\n\n// Load .env variables and override with local environment variables if they exist\nconst _sentryEnable = process.env.REACT_APP_SENTRY_ENABLED_LOCAL ? process.env.REACT_APP_SENTRY_ENABLED_LOCAL : dotenvConfig.sentryENABLED;\nconst _sentryDSN = process.env.REACT_APP_SENTRY_DSN_LOCAL ? process.env.REACT_APP_SENTRY_DSN_LOCAL : dotenvConfig.sentryDSN;\nconst _sentryRelease = process.env.REACT_APP_SENTRY_RELEASE_LOCAL ? process.env.REACT_APP_SENTRY_RELEASE_LOCAL : dotenvConfig.sentryRELEASE;\nconst _sentryEnvironment = process.env.REACT_APP_SENTRY_ENVIRONMENT_LOCAL ? process.env.REACT_APP_SENTRY_ENVIRONMENT_LOCAL : dotenvConfig.sentryENVIRONMENT;\n\n\n// Sentry\nif (_sentryEnable === true || _sentryEnable === 'true') { \n if (isStringDefinedAndNotEmpty(_sentryDSN) \n && isStringDefinedAndNotEmpty(_sentryRelease) \n && isStringDefinedAndNotEmpty(_sentryEnvironment)) {\n Sentry.init({\n dsn: _sentryDSN,\n release: _sentryRelease, \n environment: _sentryEnvironment,\n integrations: [\n Sentry.browserTracingIntegration(),\n Sentry.replayIntegration(),\n ],\n replaysSessionSampleRate: 0.03, // Session Replay\n replaysOnErrorSampleRate: 1.0, // Session Replay\n tracesSampleRate: 1.0, // Performance Monitoring\n });\n }\n};\n\n\n\nReactDOM.render(\n \n \n , document.getElementById('root'));\n\nserviceWorker.unregister();\n","const generateCSVName = (\n unitHistories: any,\n name?: string,\n selectedWeatherZephyr?: any,\n selectedView?: string\n) => {\n const { historiesList } = unitHistories;\n const { id } = selectedWeatherZephyr;\n const { selectedAveragingPeriod: { labelHTML } } = Object.values(historiesList[0])[0] as any;\n const formattedAveraginOption = `${labelHTML.split(' ')[0]}${labelHTML.toLowerCase().includes('min') ? 'min' : 'hr'}`;\n const {\n selectedDate: { start, end },\n } = historiesList[0][Object.keys(historiesList[0])[0]];\n return `${selectedView === 'deviceView' ? `device_${id}` : selectedView === 'networkView' ? 'network' : 'comparison'}_${start}_${end}_${formattedAveraginOption}.${selectedView !== 'comparisonView' ? 'csv' : 'zip'}`\n};\n\nconst splitByFirstNumber = (pollutant: string) => {\n let result = pollutant.match(/\\d/);\n\n // If a number is found, split the string at that index\n if (result) {\n let index = result.index;\n let part1 = pollutant.slice(0, index);\n let part2 = pollutant.slice(index);\n return [part1, part2];\n }\n return pollutant;\n};\n\nexport const defaultDeviceView = [\n // map\n {\n w: 12,\n h: 8,\n x: 8,\n y: 0,\n i: 'mapWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 3,\n minW: 4\n },\n // gases\n {\n w: 8,\n h: 10,\n x: 0,\n y: 8,\n i: 'gasWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n counter: 1\n },\n // gas averages\n {\n w: 4,\n h: 4,\n x: 8,\n y: 8,\n i: 'gasAveragesWidget',\n moved: false,\n static: false,\n maxH: 4,\n minH: 4,\n minW: 4,\n },\n // source apportionment no2\n {\n w: 4,\n h: 6,\n x: 8,\n y: 12,\n i: 'saNOxWidget',\n moved: false,\n static: false,\n maxH: 6,\n minH: 6,\n minW: 4\n },\n\n // particulates\n {\n w: 8,\n h: 10,\n x: 0,\n y: 18,\n i: 'particulateWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n counter: 1\n },\n // particulates averages\n {\n w: 4,\n h: 4,\n x: 8,\n y: 18,\n i: 'particulateAveragesWidget',\n moved: false,\n static: false,\n maxH: 4,\n minH: 4,\n minW: 4,\n },\n // source apportionment pm2.5\n {\n w: 4,\n h: 6,\n x: 8,\n y: 22,\n i: 'saPM25Widget',\n moved: false,\n static: false,\n maxH: 6,\n minH: 6,\n minW: 4,\n },\n // precipitation\n {\n w: 4,\n h: 8,\n x: 8,\n y: 28,\n i: 'precipitationWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n // thpChartPlotly\n {\n w: 4,\n h: 8,\n x: 0,\n y: 28,\n i: 'thpWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n counter: 1\n },\n // windSpeedDirChartPlotly\n {\n w: 4,\n h: 8,\n x: 4,\n y: 28,\n i: 'wsdWidget',\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n counter: 1\n },\n];\n\nexport const defaultDeviceViewLayout = [\n {\n uid: 'gasAveragesWidget',\n name: 'gasAverages',\n i: 'gasAveragesWidget',\n threshold: false,\n },\n {\n uid: 'particulateAveragesWidget',\n name: 'pmAverages',\n i: 'particulateAveragesWidget',\n threshold: false,\n },\n\n {\n uid: 'precipitationWidget',\n name: 'precipitation',\n i: 'precipitationWidget',\n threshold: false,\n },\n {\n uid: 'mapWidget',\n name: 'map',\n i: 'mapWidget',\n threshold: false,\n },\n {\n uid: 'particulateWidget',\n name: 'particulate',\n i: 'particulateWidget',\n threshold: true,\n },\n {\n uid: 'thpWidget',\n name: 'thpChartPlotly',\n i: 'thpWidget',\n threshold: false,\n },\n {\n uid: 'wsdWidget',\n name: 'windSpeedDirChartPlotly',\n i: 'wsdWidget',\n threshold: false,\n },\n {\n uid: 'gasWidget',\n name: 'gases',\n i: 'gasWidget',\n threshold: true,\n },\n {\n uid: 'saNOxWidget',\n name: 'sourceApportionmentNO2',\n i: 'saNOxWidget',\n threshold: false,\n },\n {\n uid: 'saPM25Widget',\n name: 'sourceApportionmentPM25',\n i: 'saPM25Widget',\n threshold: false,\n },\n];\n\nexport const defaultNetworkView = [\n { w: 8, h: 9, x: 0, y: 0, i: 'networkGasWidget', moved: false, static: false, maxH: 18, minH: 4, minW: 4, counter: 1 },\n { w: 8, h: 9, x: 0, y: 9, i: 'networkParticulateWidget', moved: false, static: false, maxH: 18, minH: 4, minW: 4, counter: 1 },\n { w: 12, h: 10, x: 0, y: 18, i: 'networkSummaryWidget', moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n { w: 4, h: 18, x: 8, y: 0, i: 'networkMapWidget', moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n];\n\nexport const defaultNetworkViewLayout = [\n { uid: 'networkGasWidget', name: 'networkViewGases', i: 'networkGasWidget', threshold: true },\n { uid: 'networkParticulateWidget', name: 'networkViewParticulates', i: 'networkParticulateWidget', threshold: true },\n { uid: 'networkSummaryWidget', name: 'networkViewPollutantSummary', i: 'networkSummaryWidget', threshold: false },\n { uid: 'networkMapWidget', name: 'networkViewMap', i: 'networkMapWidget', threshold: false },\n];\n\nconst defaultMobilePublicPortalItems = [\n {\n w: 12,\n h: 8,\n x: 0,\n y: 0,\n i: 'mapWidget', // map\n moved: false,\n static: false,\n },\n {\n w: 12,\n h: 8,\n x: 0,\n y: 8,\n i: 'gasWidget', // gases\n moved: false,\n static: false,\n },\n {\n w: 12,\n h: 8,\n x: 0,\n y: 16,\n i: 'particulateWidget', // particulates\n moved: false,\n static: false,\n },\n]\n\nconst defaultMobilePublicPortalLayout = [\n {\n uid: 'gasWidget',\n name: 'gases',\n i: 'gasWidget',\n threshold: true,\n },\n {\n uid: 'particulateWidget',\n name: 'particulate',\n i: 'particulateWidget',\n threshold: true,\n },\n {\n uid: 'mapWidget',\n name: 'map',\n i: 'mapWidget',\n threshold: false,\n },\n];\n\nconst defaultPublicPortalItems = [\n {\n w: 8,\n h: 8,\n x: 0,\n y: 0,\n i: 'gasWidget',\n moved: false,\n static: false,\n },\n {\n w: 8,\n h: 8,\n x: 0,\n y: 8,\n i: 'particulateWidget',\n moved: false,\n static: false,\n },\n {\n w: 4,\n h: 16,\n x: 8,\n y: 0,\n i: 'mapWidget',\n moved: false,\n static: false,\n },\n];\n\nconst defaultPublicPortalLayout = [\n {\n uid: 'gasWidget',\n name: 'gases',\n i: 'gasWidget',\n threshold: true,\n },\n {\n uid: 'particulateWidget',\n name: 'particulate',\n i: 'particulateWidget',\n threshold: true,\n },\n {\n uid: 'mapWidget',\n name: 'map',\n i: 'mapWidget',\n threshold: false,\n },\n];\n\nconst defaultLayoutGenerator = (isPublic: boolean, screenWidth?: number) => {\n\n if (isPublic) {\n // Return the mobile layout if screen width is 767px or below\n const isMobile = screenWidth ? screenWidth <= 767 : false;\n\n return isMobile ? {\n deviceView: defaultMobilePublicPortalItems,\n deviceViewLayout: defaultMobilePublicPortalLayout,\n } : {\n deviceView: defaultPublicPortalItems,\n deviceViewLayout: defaultPublicPortalLayout,\n };\n }\n\n // Default or desktop layout for wider screens for private users\n return {\n deviceView: defaultDeviceView,\n deviceViewLayout: defaultDeviceViewLayout,\n networkView: defaultNetworkView,\n networkViewLayout: defaultNetworkViewLayout,\n };\n};\n\nconst updateScatterChartNumber = (setScatterChartsCounter: Function, selectedView: string, widgetName: string, increment: boolean) => {\n const widgetTypes = ['gasWidget', 'particulateWidget', 'thpWidget', 'wsdWidget', 'networkGasWidget', 'networkParticulateWidget'];\n\n if ((selectedView === 'deviceView' || selectedView === 'networkView') && widgetTypes.some(type => widgetName.includes(type))) {\n setScatterChartsCounter((sCC: {\n deviceView: { gasWidget: number; particulateWidget: number; thpWidget: number; wsdWidget: number; };\n networkView: { networkGasWidget: number; networkParticulateWidget: number; }\n }) => {\n const widget = Object.keys(sCC[selectedView]).find((w: string) => widgetName.includes(w)) as string;\n\n const updatedCounter = increment ? (sCC as any)[selectedView][widget] + 1 : (sCC as any)[selectedView][widget] - 1;\n\n return {\n ...sCC,\n [selectedView]: {\n ...sCC[selectedView],\n [widget]: updatedCounter\n }\n };\n });\n }\n};\n\nexport { generateCSVName, splitByFirstNumber, defaultLayoutGenerator, updateScatterChartNumber };\n","// Const Imports\nimport { cardinalDirectionsPlus, saLabelsNox, saLabelsPm2p5 } from '../consts';\n\n// Util Imports\nimport { cardinalDirectionFinder } from './cardinalDirectionFinder';\nimport {\n convertUnitTimeToLocalTime,\n getCurrentTimeZoneAbbreviation,\n tzConverter,\n utcConvertor,\n} from './dateFinder';\n\n// Type Imports\nimport {\n ChartData,\n DisplayConfig,\n LineChartData,\n SAData,\n SAChartData,\n Species,\n TodayData,\n WindPackagedData,\n WindRoseData,\n WindCategory,\n ZephyrHistory,\n AveragingPeriod,\n Pollutant,\n Zephyr,\n} from '../interface';\nimport { slotValidator } from './slotValidator';\nimport { checkSlotABData } from './getAvailableAveragingOption';\nimport { Options } from '../../components/views/DataAnalyticsContainer';\nimport {\n chartWatermarkConfigs,\n commonLegend,\n plotlyFont,\n plotlyMargin,\n plotlyPrecipitationMargin,\n plotlyTHPMargin,\n staticPlotlyChartLayout,\n} from '../plotySharedConfig';\nimport { validate } from 'uuid';\nimport { slotFinder } from './slotFinder';\nimport { colDict } from '../plotySharedConfig';\nimport { table } from 'console';\n\n// Common JS Imports\nconst moment = require('moment');\n\nconst lineTypes = ['solid', 'dash', 'dot', 'dashdot']\n\nconst temperatureHumidityPressure = [\n {\n HTMLLabel: 'Temperature',\n HTMLShortUnitLabel: '°C',\n HTMLUnitLabel: 'Temperature(°C)',\n dataIdentifier: 'tempC',\n speciesExtentIdentifier: 'BT',\n },\n {\n HTMLLabel: 'Humidity',\n HTMLShortUnitLabel: '%',\n HTMLUnitLabel: 'Humidity(%)',\n dataIdentifier: 'humidity',\n speciesExtentIdentifier: 'BRH',\n },\n // {\n // HTMLLabel: 'Pressure',\n // HTMLShortUnitLabel: 'Pa',\n // HTMLUnitLabel: 'Pressure(Pa)',\n // dataIdentifier: 'ambPressure',\n // speciesExtentIdentifier: 'BP',\n // },\n];\n\n/* Function\n DESC: mappairDateParser returns a JS parsed date\n ARGS: date in the form YYYY-MM-DDZHH:mm:ss typically returned in points requests\n*/\nconst mappairDateParser = (date: string) => {\n const year = parseInt(date.slice(6, 10));\n const month = parseInt(date.slice(3, 5)) - 1;\n const day = parseInt(date.slice(0, 2));\n const hours = parseInt(date.slice(11, 13));\n const minutes = parseInt(date.slice(14, 16));\n const seconds = parseInt(date.slice(17, 19));\n const newDate = new Date(year, month, day, hours, minutes, seconds);\n const mDate = moment(newDate).format('YYYYMMDDHHmm');\n const utcMDate = moment(tzConverter(mDate), 'YYYYMMDDHHmm').toDate();\n return utcMDate;\n};\n\nexport const populateObjectWithZephyrHistory = (\n selectedAveragingPeriod: AveragingPeriod,\n unit: any,\n) => {\n const updatedZephyrHistory: any = {};\n const zephyrHistory: any = {};\n\n const zephyrData: ZephyrHistory = unit[Object.keys(unit)[0]].data;\n if (zephyrData && selectedAveragingPeriod) {\n updatedZephyrHistory[selectedAveragingPeriod.averagingOption] =\n zephyrData[selectedAveragingPeriod.averagingOption];\n zephyrHistory[parseInt(Object.keys(unit)[0])] = updatedZephyrHistory;\n }\n return { updatedZephyrHistory, zephyrHistory };\n};\n\nexport const getSlotDataFromZephyrHistory = (\n unitHistories: any,\n selectedWeatherZephyr: any,\n selectedAveragingPeriod: any,\n) => {\n const { historiesList } = unitHistories;\n if (!selectedWeatherZephyr || !selectedAveragingPeriod) return;\n const { id } = selectedWeatherZephyr;\n const unit = historiesList.find(\n (zephyr: any) => +(Object.keys(zephyr) as any)[0] === +id,\n );\n const unitKey = Object.keys(unit)[0];\n const { data, zType } = unit[unitKey];\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n\n const slots = updatedZephyrHistory[selectedAveragingPeriod.averagingOption]\n ? slotValidator(updatedZephyrHistory, zephyrHistory)\n : null;\n if (\n slots &&\n selectedAveragingPeriod.averagingOption in data &&\n slots[0] in data[selectedAveragingPeriod.averagingOption] &&\n zType !== 1\n ) {\n if (slots.includes('head') && zType === 0)\n slots.unshift((slots as any).pop());\n\n const slotData = data[selectedAveragingPeriod.averagingOption][slots[0]];\n return slotData;\n }\n return null;\n};\n\n/* Function\n DESC: windRoseDataPackagerFromMetData returns packaged wind data for wind rose consumption\n ARGS: point data\n*/\nconst categorizeWindDataByDirectionAndSpeed = (\n windCategories: any,\n packagedWindData: {\n dateTime: string[];\n direction: number[];\n speed: number[];\n },\n) => {\n // Create a map for quick lookup of wind category configurations\n const windCategoryConfigMap = new Map(\n windCategories.map((wCC: any) => [`${wCC.name} m/s`, wCC]),\n );\n\n const data: WindRoseData[] = [];\n windCategories.forEach((wCC: any) => {\n const { b, g, r } = wCC.colour;\n const dataTemplate = {\n r: new Array(cardinalDirectionsPlus.length).fill(0),\n theta: cardinalDirectionsPlus.map((cD) => cD.dirName),\n name: `${wCC.name} ${wCC.unit}`,\n marker: { color: `rgb(${r},${g},${b})` },\n type: 'barpolar',\n hoverinfo: 'skip',\n unit: wCC.unit,\n };\n data.push(dataTemplate);\n });\n\n packagedWindData.direction.forEach((dir, idx) => {\n const cardinal = cardinalDirectionFinder(dir);\n const thetaIdx = cardinalDirectionsPlus.indexOf(cardinal);\n const speed = packagedWindData.speed[idx];\n\n data.forEach((bin: any) => {\n const config = windCategoryConfigMap.get(bin.name) as WindCategory;\n // Check for speed = 0\n if (speed && speed >= config.minVal) {\n bin.r[thetaIdx] += 1;\n }\n });\n });\n\n return data;\n};\n\nconst windRoseDataPackagerFromMetData = (\n displayConfig: DisplayConfig,\n pointData: TodayData,\n) => {\n let packagedWindRoseData: WindRoseData[] | null = null;\n const packagedWindData = windDataPackager(pointData);\n if (packagedWindData) {\n const data: WindRoseData[] = [];\n\n packagedWindRoseData = categorizeWindDataByDirectionAndSpeed(\n displayConfig.windCategories,\n packagedWindData,\n );\n }\n return packagedWindRoseData;\n};\n\n/* Function\n DESC: windDataPackager returns packaged wind data as a simple object containing windDi,windSpeed arrays\n ARGS: point data\n*/\n\n// Optimizing the code by removing both filter methods and running just a single iteration via forEach method\nconst windCheck = (\n pointDataResultsArr: any,\n): { isWDir: any; isWSpeed: any } | null => {\n let isWDir = null;\n let isWSpeed = null;\n pointDataResultsArr.forEach((el: any) => {\n if (el.species === 'winddir') isWDir = el;\n if (el.species === 'windspeed') isWSpeed = el;\n });\n return isWDir && isWSpeed\n ? {\n isWDir: isWDir,\n isWSpeed: isWSpeed,\n }\n : null;\n};\n\nconst windDataPackager = (pointData: TodayData) => {\n let windData: WindPackagedData | null = null;\n const todayDT = new Date();\n if (\n pointData &&\n pointData.results &&\n pointData.results[0].values_coordinates.length\n ) {\n const wDirArr: number[] = [];\n const wSpeedArr: number[] = [];\n const wDateTimeArr: string[] = [];\n\n //check windspeed and winddir call was successful\n let wDirExists = windCheck(pointData.results);\n if (wDirExists) {\n if (\n wDirExists.isWDir.values_coordinates &&\n wDirExists.isWSpeed.values_coordinates\n ) {\n const wDirValues =\n wDirExists.isWDir.values_coordinates[0].values_timestamps;\n const wSpeedValues =\n wDirExists.isWSpeed.values_coordinates[0].values_timestamps;\n\n // Remove forecast data\n pointData.meta.timestamps.forEach((ts, idx) => {\n const parsedDT = mappairDateParser(ts);\n if (parsedDT <= todayDT && wDirValues && wSpeedValues) {\n const formattedDT = moment(parsedDT).format('YYYY-MM-DDTHH:mm:ss');\n wDirArr.push(wDirValues[idx].value);\n wSpeedArr.push(wSpeedValues[idx].value);\n wDateTimeArr.push(formattedDT);\n }\n });\n const minimumResultsCount = 10;\n if (\n wSpeedArr &&\n wSpeedArr.length > minimumResultsCount &&\n wDirArr &&\n wDirArr.length > minimumResultsCount\n ) {\n windData = {\n direction: wDirArr,\n speed: wSpeedArr,\n dateTime: wDateTimeArr,\n };\n }\n }\n }\n }\n return windData;\n};\n\n/* Function\n DESC: pointDataPackager returns packaged point data or null where it doesn't exist\n ARGS: point data and species name\n*/\nconst pointDataPackager = (\n pointData: TodayData,\n speciesData: Species,\n annual?: boolean | undefined,\n) => {\n if (pointData?.results && pointData.results[0].values_coordinates.length) {\n let checkExclusions = ['windspeed', 'winddir'];\n\n if (annual)\n checkExclusions = speciesData.label === 'PM2p5' ? ['pm2p5'] : ['no2'];\n\n const hasData =\n pointData.meta.species_list.filter(\n (ms: string) => !checkExclusions.includes(ms),\n ).length > 0 &&\n pointData.results[0].values_coordinates[0].values_timestamps.find(\n (val) => val.value >= 0,\n );\n\n if (hasData) {\n const firstTimeStamp = mappairDateParser(pointData.meta.timestamps[0]);\n const labels: Date[] = [];\n const data: number[] = [];\n\n if (speciesData.label === 'PM2p5' && annual) {\n const pm2p5Obj = pointData.results.find(\n (res) => res.species === 'pm2p5',\n );\n\n if (pm2p5Obj) {\n pm2p5Obj.values_coordinates[0].values_timestamps.forEach((rvt, i) => {\n if (rvt.value !== -999 && rvt.value !== 32767) {\n const date = rvt.timestamp;\n const newDate = annual\n ? mappairDateParser(pointData.meta.timestamps[i])\n : mappairDateParser(date);\n\n if (newDate.getHours() === firstTimeStamp.getHours()) {\n labels.push(newDate);\n data.push(Math.round(rvt.value));\n }\n }\n });\n }\n } else {\n pointData.results[0].values_coordinates[0].values_timestamps.forEach(\n (rvt, i) => {\n if (rvt.value !== -999 && rvt.value !== 32767) {\n const date = rvt.timestamp;\n const newDate = annual\n ? mappairDateParser(pointData.meta.timestamps[i])\n : mappairDateParser(date);\n\n if (newDate.getHours() === firstTimeStamp.getHours()) {\n labels.push(newDate);\n data.push(Math.round(rvt.value));\n }\n }\n },\n );\n }\n\n const dataFinder = data.find((d) => d !== null);\n if (dataFinder !== null && dataFinder !== undefined) {\n const dataset: LineChartData = {\n unitId: 0,\n species: speciesData.dataIdentifier,\n label: speciesData.HTMLUnitLabel,\n speciesLabel: speciesData.HTMLUnitLabel,\n unitNameLabel: 'NA',\n hidden: false,\n featureColour: 'rgb(255,45,85)',\n defaultColour: '#fff',\n borderDash: [],\n borderDash2: 'solid',\n data,\n speciesObj: speciesData,\n };\n if (data.filter((d) => d !== 0).length > 1) {\n const packagedPointData: ChartData = { datasets: [dataset], labels };\n return packagedPointData;\n }\n }\n }\n }\n return null;\n};\n\n/* Function\n DESC: saDataPackager returns packaged SA data or null where it doesn't exist\n ARGS: display config and sa dataset as returned by the dc and SA API endpoints\n */\nconst saDataPackager = (displayConfig: DisplayConfig, saData: SAData) => {\n const excludedFromAnalysis: string[] = ['total', 'totalarea'];\n let totalValue = 0;\n if (saData && saData.results && saData.results.length) {\n const dataset = saData.results.map((sp) => {\n if (!excludedFromAnalysis.includes(sp.species)) {\n const values = sp.values_coordinates;\n if (values.length) {\n const tsValues = values[0];\n if (tsValues && tsValues.values_timestamps.length) {\n const spData = tsValues.values_timestamps[0];\n const packagedSpData = {\n name: saData.auxinfo.filter(\n (auxSP) => auxSP.species === sp.species,\n )[0].layer_names[0][0],\n data: spData.value >= 0 ? spData.value : 0,\n species: sp.species,\n };\n if (spData.value >= 0) {\n totalValue += spData.value;\n }\n return packagedSpData;\n }\n }\n }\n });\n // Sort the dataset in decending order for charting\n const sortedDataset = dataset\n .filter((ds) => ds && ds.data !== 0)\n .slice()\n .sort((a, b) => b!.data - a!.data);\n if (false) {\n //sortedDataset.length\n const colourSet = sortedDataset.map(\n (ds) =>\n displayConfig.sources.filter((s) => ds!.species === s.source)[0]\n .colour,\n );\n const chartDataset: SAChartData = {\n data: [\n {\n color: '',\n cursor: 'pointer',\n dataPoints: [],\n dataPointMinWidth: 2,\n type: 'bar',\n },\n ],\n meta: {\n total: totalValue,\n },\n };\n sortedDataset.forEach((sDs, idx) => {\n if (sDs) {\n const newDataPoint = {\n y: sDs.data,\n label: `‏‏‎‎‎‏‏‎‏‏‎‎${sDs.name}: ${(\n (sDs.data / totalValue) *\n 100\n ).toFixed(1)}%`,\n };\n chartDataset.data[0].dataPoints.push(newDataPoint);\n if (!chartDataset.data[0].color) {\n chartDataset.data[0].color = `rgba(${colourSet[idx].r}, ${colourSet[idx].g}, ${colourSet[idx].b}, 0.2)`;\n }\n }\n });\n return chartDataset;\n }\n }\n return null;\n};\n\nconst getMinOrMax = (a: number | null, b: number | null, operator: string) => {\n if (a === null) return b;\n if (b === null) return a;\n if (operator === 'min') return a < b ? a : b;\n if (operator === 'max') return a > b ? a : b;\n};\n\nconst calculatePercentile = (sortedArray: number[], percentile: number) => {\n if (sortedArray.length === 0) return null; // Handle empty array case\n\n const index = (percentile / 100) * (sortedArray.length - 1);\n const lower = Math.floor(index);\n const upper = Math.ceil(index);\n const weight = index - lower;\n\n if (lower === upper) {\n // If lower and upper are the same, return that value (no need for interpolation)\n return sortedArray[lower];\n }\n\n // Linearly interpolate between the two values\n return sortedArray[lower] * (1 - weight) + sortedArray[upper] * weight;\n};\n\nconst sortArray = (arr: any[]) => {\n return arr.sort((a, b) => a - b);\n};\n\nconst generateMinMaxMeanStatisticsObject = (data: any[], pollutant: string, selectedOption: string): any => {\n const aggData: any = {};\n data.forEach((row) => {\n const timestamp = row.timestamp;\n const value = row[pollutant];\n if (!aggData[timestamp]) {\n aggData[timestamp] = selectedOption === 'minMeanMax' ? { values: [value], min: value, max: value } : { values: [value] };\n } else {\n aggData[timestamp].values.push(value);\n if (selectedOption === 'minMeanMax') {\n aggData[timestamp].min = getMinOrMax(aggData[timestamp].min, value, 'min');\n aggData[timestamp].max = getMinOrMax(aggData[timestamp].max, value, 'max');\n }\n }\n });\n const timestamps = Object.keys(aggData);\n if (selectedOption === 'minMeanMax') {\n const meanValues = timestamps.map(\n (timestamp) =>\n aggData[timestamp].values.reduce((acc: any, val: any) => acc + val, 0) /\n aggData[timestamp].values.filter((val: number) => typeof val === 'number').length,\n );\n const minValues = timestamps.map((timestamp) => aggData[timestamp].min);\n const maxValues = timestamps.map((timestamp) => aggData[timestamp].max);\n return {\n timestamps,\n meanValues,\n minValues,\n maxValues,\n };\n }\n const fivePercentile = timestamps.map((timestamp) => calculatePercentile(sortArray(aggData[timestamp].values.filter((val: number | null) => typeof val === 'number')), 5));\n const median = timestamps.map((timestamp) => calculatePercentile(sortArray(aggData[timestamp].values.filter((val: number | null) => typeof val === 'number')), 50));\n const ninetyFivePercentile = timestamps.map((timestamp) => calculatePercentile(sortArray(aggData[timestamp].values.filter((val: number | null) => typeof val === 'number')), 95));\n return {\n timestamps,\n fivePercentile,\n median,\n ninetyFivePercentile\n };\n};\n\nexport const pollutantNameMapping: { [key: string]: string } = {\n O3: \"O 3\",\n NO2: \"NO 2\",\n PM1: \"PM 1\",\n PM10: \"PM 10\",\n PM25: \"PM 2.5\",\n CO2: \"CO 2\",\n SO2: \"SO 2\",\n H2S: \"H 2 S\",\n}\n\nconst getMinMaxMeanStatisticsPlotlyDataAndLayout = (\n finalObject: any,\n selectedZephyrs: number,\n selectedOption: string\n) => {\n const data = Object.keys(finalObject).map((pollutant: string) => {\n let timestamps, meanValues, minValues: number[], maxValues: number[], fivePercentile: number[], median: number[], ninetyFivePercentile: number[];\n maxValues = [];\n minValues = [];\n maxValues = [];\n fivePercentile = [];\n median = [];\n ninetyFivePercentile = [];\n if (selectedOption === 'minMeanMax') {\n ({ timestamps, meanValues, minValues, maxValues } = finalObject[pollutant]);\n } else {\n ({ timestamps, fivePercentile, median, ninetyFivePercentile } = finalObject[pollutant]);\n }\n let pollutantName = pollutant;\n if (pollutant.includes('particulate')) {\n [, pollutantName] = pollutant.split('particulate');\n }\n pollutantName = pollutantNameMapping[pollutantName]?.replace(/\\s+/g, '') || pollutantName;\n const pollutantUnit = finalObject[pollutant]?.unit;\n const pollutantUnitText = pollutantUnit ? `(${pollutantUnit})` : '';\n return [\n {\n x: timestamps,\n y: selectedOption === 'minMeanMax' ? meanValues : median,\n type: 'scattergl',\n mode: 'lines',\n name: `${pollutantName} ${selectedOption === 'minMeanMax' ? 'Mean' : 'Median'} ${pollutantUnitText}`,\n customdata: timestamps.map((_: Date, i: number) => selectedOption === 'minMeanMax' ? [maxValues[i], minValues[i]] : [ninetyFivePercentile[i], fivePercentile[i]]),\n hovertemplate: `${selectedOption === 'minMeanMax' ? 'Min' : '5%'}: %{customdata[1]:.1f}` +\n `
    ${selectedOption === 'minMeanMax' ? 'Mean' : 'Median'}: %{y:.1f}` +\n `
    ${selectedOption === 'minMeanMax' ? 'Max' : '95%'}: %{customdata[0]:.1f}`,\n line: { color: `rgb(${colDict[pollutant]?.join(',')})` },\n legendgroup: pollutantName,\n },\n {\n x: timestamps,\n y: selectedOption === 'minMeanMax' ? maxValues : ninetyFivePercentile,\n type: 'scatter',\n mode: 'lines',\n name: `${pollutantName} ${selectedOption === 'minMeanMax' ? 'Max' : '95%'} ${pollutantUnitText}`,\n line: { color: `rgba(${colDict[pollutant]?.join(',')}, 0.2)` },\n opacity: 0.2,\n hoverinfo: 'skip',\n showlegend: false,\n legendgroup: pollutantName,\n },\n {\n x: timestamps,\n y: selectedOption === 'minMeanMax' ? minValues : fivePercentile,\n type: 'scatter',\n mode: 'lines',\n name: `${pollutantName} ${selectedOption === 'minMeanMax' ? 'Min' : '5%'} ${pollutantUnitText}`,\n line: { color: `rgba(${colDict[pollutant]?.join(',')}, 0.2)` },\n fill: selectedZephyrs > 1 && 'tonexty',\n fillcolor: selectedZephyrs > 1 && `rgba(${colDict[pollutant]?.join(',')}, 0.2)`,\n hoverinfo: 'skip',\n showlegend: false,\n legendgroup: pollutantName,\n },\n ];\n });\n\n\n const flattenedData = data.flat();\n return {\n data: flattenedData,\n layout: {\n title: `` /* yaxis: { title: `${pollutant}` } */,\n margin: plotlyMargin,\n font: plotlyFont,\n images: chartWatermarkConfigs,\n responsive: true,\n autosize: true,\n legend: commonLegend,\n polar: staticPlotlyChartLayout().polar,\n },\n };\n};\n\nconst getMaxNumber = (arr: any[]) => {\n return [...arr].sort((a: number, b: number) => a - b)[arr.length - 1];\n};\n\nconst getPopulatedAveragingPeriods = (historiesList: any, data: any) => {\n let averagingPeriods: any =\n historiesList.length === 1 && data ? Object.keys(data) : [];\n if (historiesList.length > 1) {\n historiesList.forEach((unit: any) => {\n if ((Object.values(unit)[0] as any).data) {\n const avPeriods = Object.keys((Object.values(unit) as any)[0].data);\n averagingPeriods = averagingPeriods.concat(avPeriods);\n }\n });\n }\n return averagingPeriods;\n};\n\nconst generateChartConfigurations = (\n unit: any,\n selectedAveragingPeriod: any,\n pollutants: Pollutant[],\n options: Options,\n chartType: string,\n) => {\n const { name, zType } = Object.values(unit)[0] as any;\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n const slots = updatedZephyrHistory[selectedAveragingPeriod.averagingOption]\n ? slotValidator(updatedZephyrHistory, zephyrHistory).filter(\n (slot: string) => slot !== 'head',\n )\n : null;\n if (slots) {\n options.slots = slots;\n slots.forEach((slot: string) => {\n pollutants\n .filter((pollutant: Pollutant) => {\n if (chartType.includes('particulate')) {\n return pollutant.dataIdentifier.includes('particulate');\n }\n return !pollutant.dataIdentifier.includes('particulate');\n })\n .forEach((pollutant: Pollutant) => {\n const selectedPollutantName: string = pollutant.dataIdentifier;\n const dataCheck =\n pollutant.dataIdentifier in\n updatedZephyrHistory[selectedAveragingPeriod.averagingOption][slot]\n ? !\n updatedZephyrHistory[selectedAveragingPeriod.averagingOption][\n slot\n ][pollutant.dataIdentifier].allNull\n\n ? [\n ...updatedZephyrHistory[\n selectedAveragingPeriod.averagingOption\n ][slot][pollutant.dataIdentifier].data,\n ]\n : []\n : [];\n const slotName_beta =\n zType === 0\n ? slot === 'slotA'\n ? 'A'\n : 'B'\n : zType === 100\n ? 'VZ'\n : slot;\n options.headers =\n dataCheck.length > 0\n ? [\n ...options.headers,\n pollutant.dataIdentifier.includes('particulate')\n ? `${pollutant.dataIdentifier === 'particulatePM25'\n ? `PM2.5(${pollutant.HTMLShortUnitLabel})`\n : pollutant.dataIdentifier.replace(\n 'particulate',\n '',\n ) + `(${pollutant.HTMLShortUnitLabel})`\n }`\n : `${pollutant.HTMLUnitLabel}`,\n ]\n : [...options.headers];\n if (options.timeStamps.length === 0)\n options.timeStamps = [\n ...updatedZephyrHistory[selectedAveragingPeriod.averagingOption][\n slot\n ].dateTime.data,\n ];\n if (dataCheck.length > 0) {\n if (getMaxNumber(dataCheck) > options.yMax)\n options.yMax = getMaxNumber(dataCheck);\n }\n const series = {\n // name: pollutant.dataIdentifier.includes('particulate')\n // ? `${pollutant.dataIdentifier === 'particulatePM25'\n // ? `PM2.5(${pollutant.HTMLShortUnitLabel})`\n // : pollutant.dataIdentifier.replace('particulate', '') +\n // `(${pollutant.HTMLShortUnitLabel})`\n // }`\n // : `${pollutant.HTMLUnitLabel}`,\n name: pollutant.HTMLUnitLabel,\n dataIdentifier: pollutant.dataIdentifier,\n type: 'line',\n lineStyle: {\n color: `rgba(${colDict[selectedPollutantName]?.join(',')}, 0.2)`,\n },\n showSymbol: false,\n data: dataCheck,\n symbol: 'none',\n symbolSize: 0,\n yAxisIndex: 0,\n slot\n };\n options.series = [...options.series, { ...series }];\n });\n });\n }\n};\n\nexport const getAvgPollutantsForSelectedTimePeriod = (\n unitHistories: any,\n selectedZephyrName: string,\n selectedAveragingPeriodd: any,\n) => {\n const { historiesList } = unitHistories;\n const unitKey = Object.keys(historiesList[0])[0];\n const { selectedAveragingPeriod, data } = historiesList[0][unitKey];\n const options: Options = {\n headers: [],\n timeStamps: [],\n series: [],\n yAxis: [],\n yMax: 0,\n };\n const averagingPeriods = getPopulatedAveragingPeriods(historiesList, data);\n const pollutants = getSelectedPollutants(unitHistories);\n};\n\nconst truncateLegendName = (name: string, maxLength: number) => {\n return name.length > maxLength ? name.substring(0, maxLength - 3) + '...' : name;\n};\n\nconst getCommonUnits = (historiesList: any, selectedZephyrNumbers: any, averagingOption: string, pollutant: string) => {\n return historiesList.filter((unit: any) => {\n const unitName = Object.keys(unit)[0];\n const { data } = Object.values(unit)[0] as any;\n const slotWithValidData = data && data[averagingOption] ? Object.keys(data[averagingOption]).find((slot: string) => {\n return slot !== 'head' && data[averagingOption][slot] && data[averagingOption][slot].hasOwnProperty(pollutant) && data[averagingOption][slot][pollutant].data.some((val: number | null) => typeof val === 'number');\n }) : null;\n return selectedZephyrNumbers.includes(unitName) && slotWithValidData;\n })\n};\n\nconst plotlyPollutantComparisonGenerator = (unitHistories: any, comparisonViewZephyrs: any, pollutant: string) => {\n const { historiesList } = unitHistories;\n const selectedZephyrNumbers = comparisonViewZephyrs.map((z: any) => z.id);\n const { selectedAveragingPeriod: { averagingOption } } = historiesList[0][Object.keys(historiesList[0])[0]];\n const commonUnits = getCommonUnits(historiesList, selectedZephyrNumbers, averagingOption, pollutant);\n const series: any[] = [];\n commonUnits.forEach((unit: any, id: number) => {\n const { data, name } = Object.values(unit)[0] as any;\n if (data) {\n const slots = Object.keys(data[averagingOption]).filter((slot: string) => {\n return slot !== 'head' && data[averagingOption][slot] && data[averagingOption][slot].hasOwnProperty(pollutant)\n });\n if (slots.length) {\n slots.forEach((slot: string, slotId: number) => {\n const { dateTime: { data: timeStamp } } = data[averagingOption][slot];\n const { data: pollutantData } = data[averagingOption][slot][pollutant];\n series.push({\n x: timeStamp,\n y: pollutantData,\n mode: 'lines',\n type: 'scattergl',\n name: truncateLegendName(name, 20),\n legendgroup: name,\n showlegend: slotId > 0 ? false : true,\n hovertemplate: slots.length > 1 ? `%{y} (${slot.split('slot')[1]})` : `%{y}`,\n line: {\n color: `rgba(${colDict[pollutant]?.join(',')},1)`,\n width: 2,\n dash: lineTypes[id]\n },\n })\n });\n }\n }\n });\n return series;\n};\n\nconst plotlyChartDataGenerator = (\n unitHistories: any,\n selectedZephyrNumber: string,\n chartType: string,\n) => {\n const { historiesList } = unitHistories;\n const unitKey = Object.keys(historiesList[0])[0];\n const { selectedAveragingPeriod, data } = historiesList[0][unitKey];\n const options: Options = {\n headers: [],\n timeStamps: [],\n series: [],\n yAxis: [],\n yMax: 0,\n color: [],\n slots: [],\n };\n const averagingPeriods = getPopulatedAveragingPeriods(historiesList, data);\n const pollutants = getSelectedPollutants(unitHistories);\n if (\n averagingPeriods.includes(selectedAveragingPeriod.averagingOption) &&\n pollutants\n ) {\n const unit = historiesList.find(\n (zephyr: any) =>\n +(Object.keys(zephyr) as any)[0] === +selectedZephyrNumber,\n );\n generateChartConfigurations(\n unit,\n selectedAveragingPeriod,\n pollutants,\n options,\n chartType,\n );\n }\n const { timeStamps, series, slots } = options;\n const serieNames: string[] = [];\n return series.filter((serie: any) => serie.data.length > 0 && serie.data.some((val: number | null) => typeof val === 'number')).map((serie: any) => {\n const data = {\n x: timeStamps,\n y: serie.data,\n mode: 'lines',\n type: 'scattergl',\n name: serie.name,\n legendgroup: serie.name,\n showlegend: serieNames.includes(serie.name) ? false : true,\n hovertemplate: slots?.filter(slot => slot !== 'head').length === 2 ? `%{y} (${serie.slot.split('slot')[1]})` : `%{y}`,\n line: {\n color: `rgba(${colDict[serie.dataIdentifier]?.join(',')},1)`,\n width: 2,\n },\n };\n if (!serieNames.includes(serie.name)) serieNames.push(serie.name);\n return data;\n });\n};\n\nconst getSelectedPollutants = (unitHistories: any) => {\n const { historiesList } = unitHistories;\n const unitKey = Object.keys(historiesList[0])[0];\n const { selectedPollutants } = historiesList[0][unitKey];\n return selectedPollutants;\n};\n\nconst plotlyTHPDataGenerator = (\n unitHistories: any,\n selectedZephyrNumber: string,\n) => {\n const { historiesList } = unitHistories;\n const unitKey = Object.keys(historiesList[0])[0];\n const { selectedAveragingPeriod, data } = historiesList[0][unitKey];\n const options: Options = {\n headers: [],\n timeStamps: [],\n series: [],\n yAxis: [],\n yMax: 0,\n color: [],\n slots: [],\n };\n let averagingPeriods: any =\n historiesList.length === 1 && data ? Object.keys(data) : [];\n if (historiesList.length > 1) {\n historiesList.forEach((unit: any) => {\n if ((Object.values(unit)[0] as any).data) {\n const avPeriods = Object.keys((Object.values(unit) as any)[0].data);\n averagingPeriods = averagingPeriods.concat(avPeriods);\n }\n });\n }\n const unit = historiesList.find(\n (zephyr: any) =>\n +(Object.keys(zephyr) as any)[0] === +selectedZephyrNumber,\n );\n if (averagingPeriods.includes(selectedAveragingPeriod.averagingOption)) {\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n const slots = updatedZephyrHistory[selectedAveragingPeriod.averagingOption]\n ? slotValidator(updatedZephyrHistory, zephyrHistory)\n : null;\n if (slots) {\n options.slots = slots;\n slots\n .filter((slot: string) => slot !== 'head')\n .forEach((slot: string) => {\n temperatureHumidityPressure.forEach((pollutant: Pollutant) => {\n const selectedPollutantName: string = pollutant.dataIdentifier;\n\n const slotName_beta =\n unit[Object.keys(unit)[0]].zType === 0\n ? slot === 'slotA'\n ? 'A'\n : 'B'\n : unit[Object.keys(unit)[0]].zType === 100\n ? 'VZ'\n : slot;\n const dataCheck =\n pollutant.dataIdentifier in\n updatedZephyrHistory[selectedAveragingPeriod.averagingOption][\n slot\n ]\n ? !updatedZephyrHistory[\n selectedAveragingPeriod.averagingOption\n ][slot][pollutant.dataIdentifier].allNull\n ? [\n ...updatedZephyrHistory[\n selectedAveragingPeriod.averagingOption\n ][slot][pollutant.dataIdentifier].data,\n ]\n : []\n : [];\n options.headers =\n dataCheck.length > 0\n ? [\n ...options.headers,\n `${pollutant.dataIdentifier === 'tempC'\n ? 'Temperature'\n : pollutant.dataIdentifier === 'humidity'\n ? 'Humidity'\n : pollutant.dataIdentifier === 'ambPressure'\n ? 'Pressure'\n : pollutant.dataIdentifier\n }`,\n ]\n : [...options.headers];\n if (options.timeStamps.length === 0)\n options.timeStamps = [\n ...updatedZephyrHistory[\n selectedAveragingPeriod.averagingOption\n ][slot].dateTime.data,\n ];\n if (dataCheck.length > 0) {\n if (getMaxNumber(dataCheck) > options.yMax)\n options.yMax = getMaxNumber(dataCheck);\n }\n const series = {\n chartType: 'weather',\n name: `${pollutant.dataIdentifier === 'tempC'\n ? 'Temperature'\n : pollutant.dataIdentifier === 'humidity'\n ? 'Humidity'\n : pollutant.dataIdentifier === 'ambPressure'\n ? 'Pressure'\n : pollutant.dataIdentifier\n }`,\n type: 'line',\n lineStyle: {\n type: 'line',\n color: `rgba(${colDict[selectedPollutantName]?.join(',')},1)`,\n },\n showSymbol:\n dataCheck.filter(\n (val: number | null) => typeof val === 'number',\n ).length === 1\n ? true\n : false,\n data: dataCheck,\n slot,\n yAxisIndex:\n unit[Object.keys(unit)[0]].zType === 100\n ? pollutant.dataIdentifier === 'tempC'\n ? 0\n : 1\n : pollutant.dataIdentifier === 'tempC'\n ? 0\n : pollutant.dataIdentifier === 'humidity'\n ? 1\n : 2,\n symbol:\n dataCheck.filter(\n (val: number | null) => typeof val === 'number',\n ).length === 1\n ? 'circle'\n : 'none',\n symbolSize:\n dataCheck.filter(\n (val: number | null) => typeof val === 'number',\n ).length === 1\n ? 3\n : 0,\n };\n options.color = [\n ...options.color!,\n `rgba(${colDict[selectedPollutantName]?.join(',')},1)`,\n ];\n options.series = [...options.series, { ...series }];\n });\n });\n }\n }\n const layout =\n unit[Object.keys(unit)[0]].zType === 100\n ? {\n title: '',\n margin: plotlyTHPMargin,\n font: plotlyFont,\n xaxis: {\n domain: [0, 0.9],\n showline: true,\n },\n yaxis: {\n title: {\n text: 'Temperature (°C)',\n standoff: 1,\n },\n // position: 0.05,\n titlefont: { color: '#1a202c' },\n side: 'left',\n showline: true,\n },\n yaxis2: {\n title: 'Humidity (%)',\n titlefont: { color: '#1a202c' },\n overlaying: 'y',\n side: 'right',\n position: 0.9,\n showline: true,\n },\n // legend: {\n // x: 0,\n // y: -0.3,\n // orientation: 'h',\n // },\n }\n : {\n title: '',\n margin: plotlyTHPMargin,\n font: plotlyFont,\n xaxis: {\n domain: [0, 0.9],\n showline: true,\n },\n yaxis: {\n title: {\n text: 'Temperature (°C)',\n standoff: 1,\n },\n // position: 0.05,\n titlefont: { color: '#1a202c' },\n side: 'left',\n showline: true,\n },\n yaxis2: {\n title: 'Humidity (%)',\n titlefont: { color: '#1a202c' },\n overlaying: 'y',\n side: 'right',\n position: 0.9,\n showline: true,\n },\n // yaxis3: {\n // title: 'Pressure (hPa)',\n // titlefont: { color: '#0d81fe' },\n // overlaying: 'y',\n // side: 'right',\n // position: 1,\n // showline: true,\n // },\n // legend: {\n // x: 0,\n // y: -0.3,\n // orientation: 'h',\n // },\n };\n const { timeStamps, series, slots } = options;\n const serieNames: string[] = [];\n const thpSeries = series.filter((serie: any) => serie.data.length > 0 && serie.data.some((val: number | null) => typeof val === 'number')).map((serie: any) => {\n const data = {\n x: timeStamps,\n y: serie.data,\n mode: 'lines',\n type: 'scattergl',\n name: serie.name,\n legendgroup: serie.name,\n showlegend: serieNames.includes(serie.name) ? false : true,\n hovertemplate: slots?.filter(slot => slot !== 'head').length === 2 ? `%{y} (${serie.slot.split('slot')[1]})` : `%{y}`,\n line: {\n color: `rgba(${colDict[serie.name]?.join(',')}, 1)`,\n width: 2,\n },\n yaxis:\n serie.yAxisIndex === 0 ? 'y1' : serie.yAxisIndex === 1 ? 'y2' : 'y3',\n };\n if (!serieNames.includes(serie.name)) serieNames.push(serie.name);\n return data;\n });\n return {\n thpSeries,\n layout,\n };\n};\n\nconst plotlyWindDirectionSpeedGenerator = (\n unitHistories: any,\n selectedWeatherZephyrNumber: string,\n zephyrs: Zephyr[]\n) => {\n const windSeries: {\n time: Date[] | string[];\n speed: number[];\n direction: number[];\n } = { time: [], speed: [], direction: [] };\n const { historiesList } = unitHistories;\n const zephyrNumber = +selectedWeatherZephyrNumber;\n const unit = historiesList.find(\n (zephyr: any) => +(Object.keys(zephyr) as any)[0] === zephyrNumber,\n );\n const unitKey = Object.keys(unit)[0];\n const { HasMetStation } = zephyrs.find((zephyr: Zephyr) => zephyr.zNumber === +unitKey) as Zephyr;\n const { selectedAveragingPeriod, data, zType, proxyVZData: { data: proxyVZData = {} } = {} } = unit[unitKey];\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n const slots = updatedZephyrHistory[selectedAveragingPeriod.averagingOption]\n ? slotValidator(updatedZephyrHistory, zephyrHistory)\n : [];\n const proxyVZSlots = Object.keys(proxyVZData).length > 0 && proxyVZData[selectedAveragingPeriod.averagingOption] ? Object.keys(proxyVZData[selectedAveragingPeriod.averagingOption]).reverse().filter((slot: string) => proxyVZData[selectedAveragingPeriod.averagingOption][slot] && slot !== 'head') : [];\n const validation = ((HasMetStation && slots.length > 0 && selectedAveragingPeriod.averagingOption in data && slots[0] in data[selectedAveragingPeriod.averagingOption]) || (!HasMetStation && proxyVZSlots.length > 0 && selectedAveragingPeriod.averagingOption in proxyVZData) || zType === 100) && zType !== 1;\n if (validation) {\n if (HasMetStation && slots.length > 0 && slots.includes('head') && zType === 0) { slots.unshift((slots as any).pop()); }\n const slotData = HasMetStation || zType === 100 ? data[selectedAveragingPeriod.averagingOption][slots[0]] : proxyVZData[selectedAveragingPeriod.averagingOption][proxyVZSlots[0]];\n if (\n (zType === 0 && ((HasMetStation && 'relWindSpeed' in slotData && 'relWindDir' in slotData) || (!HasMetStation && 'WINDSPEED' in slotData && 'WINDDIR' in slotData))) ||\n (zType === 100 && 'WINDDIR' in slotData && 'WINDSPEED' in slotData)\n ) {\n\n const relWindSpeed =\n zType === 0 && HasMetStation ? slotData['relWindSpeed'] : slotData['WINDSPEED'];\n const relWindDir =\n zType === 0 && HasMetStation ? slotData['relWindDir'] : slotData['WINDDIR'];\n const { dateTime } = slotData;\n const { data: relWindSpeedData } = relWindSpeed;\n const { data: relWindDirData } = relWindDir;\n const { data: dateTimeStamps } = dateTime;\n windSeries.time = dateTimeStamps.map((timestamp: string) =>\n timestamp.replace(/\\+00:00\\+00:00$/, '+00:00')\n );\n windSeries.speed = relWindSpeedData;\n windSeries.direction = relWindDirData;\n }\n }\n return windSeries;\n};\n\nconst plotlyPrecipitationGenerator = (\n unitHistories: any,\n selectedWeatherZephyrNumber: string,\n zephyrs: Zephyr[]\n) => {\n const precipitationSeries: {\n precipitation: number[];\n time: Date[] | string[];\n } = { precipitation: [], time: [] };\n const { historiesList } = unitHistories;\n const zephyrNumber = +selectedWeatherZephyrNumber;\n const unit = historiesList.find(\n (zephyr: any) => +(Object.keys(zephyr) as any)[0] === zephyrNumber,\n );\n const unitKey = Object.keys(unit)[0];\n const { HasMetStation } = zephyrs.find((zephyr: Zephyr) => zephyr.zNumber === +unitKey) as Zephyr;\n const { selectedAveragingPeriod, data, zType, proxyVZData: { data: proxyVZData = {} } = {} } = unit[unitKey];\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n const slots: string[] = updatedZephyrHistory[selectedAveragingPeriod.averagingOption]\n ? slotValidator(updatedZephyrHistory, zephyrHistory)\n : [];\n const proxyVZSlots = Object.keys(proxyVZData).length > 0 && proxyVZData[selectedAveragingPeriod.averagingOption] ? Object.keys(proxyVZData[selectedAveragingPeriod.averagingOption]).reverse().filter((slot: string) => proxyVZData[selectedAveragingPeriod.averagingOption][slot] && slot !== 'head') : [];\n const validation = ((HasMetStation && slots.length > 0 && selectedAveragingPeriod.averagingOption in data && slots[0] in data[selectedAveragingPeriod.averagingOption]) || (!HasMetStation && proxyVZSlots.length > 0 && selectedAveragingPeriod.averagingOption in proxyVZData) || zType === 100) && zType !== 1;\n if (validation) {\n if (HasMetStation && slots.length > 0 && slots.includes('head') && zType === 0) { slots.unshift((slots as any).pop()); }\n const slotData = HasMetStation || zType === 100 ? data[selectedAveragingPeriod.averagingOption][slots[0]] : proxyVZData[selectedAveragingPeriod.averagingOption][proxyVZSlots[0]];\n if (\n (zType === 0 && ((HasMetStation && 'precipitationIntensity' in slotData) || (!HasMetStation && 'RAINFALL' in slotData))) ||\n (zType === 100 && 'RAINFALL' in slotData)\n ) {\n const precipitation =\n zType === 0 && HasMetStation\n ? slotData['precipitationIntensity'].data\n : slotData['RAINFALL'].data;\n const { dateTime } = slotData;\n const { data: dateTimeStamps } = dateTime;\n precipitationSeries.precipitation = precipitation;\n precipitationSeries.time = dateTimeStamps.map((timestamp: string) =>\n timestamp.replace(/\\+00:00\\+00:00$/, '+00:00')\n );;\n }\n }\n const plotlyData = {\n precipitationSerie: [\n {\n type: 'bar',\n x: precipitationSeries.time,\n y: precipitationSeries.precipitation,\n marker: { color: '#636efa' },\n },\n ],\n precipitationLayout: {\n yaxis: { title: 'Rainfall (mm/hr)', automargin: true, hoverformat: '.3r' },\n margin: plotlyPrecipitationMargin,\n font: plotlyFont,\n },\n };\n return plotlyData;\n};\n\nconst plotlyMinMaxMeanStatisticsGenerator = (unitHistories: any, chartType: string, selectedOption: string) => {\n if (!unitHistories || !('historiesList' in unitHistories)) {\n return;\n }\n const { historiesList } = unitHistories;\n\n const unitKey = Object.keys(historiesList[0])[0];\n const {\n selectedAveragingPeriod,\n data,\n selectedPollutants,\n } = historiesList[0][unitKey];\n const averagingPeriods = getPopulatedAveragingPeriods(historiesList, data);\n const pollutants = selectedPollutants.filter((pollutant: Pollutant) => {\n if (chartType.includes('networkViewParticulates')) {\n return pollutant.dataIdentifier.includes('particulate');\n }\n return !pollutant.dataIdentifier.includes('particulate');\n });\n\n const pollutantUnits: { [pollutant: string]: string } = {};\n\n if (averagingPeriods.includes(selectedAveragingPeriod.averagingOption)) {\n let obj: any = {};\n const unitList = historiesList.filter(\n (unit: any) =>\n unit[Object.keys(unit)[0]].data !== null &&\n unit[Object.keys(unit)[0]].data !== false,\n );\n unitList.forEach((unit: any, unitIdx: number) => {\n const { name, zType } = Object.values(unit)[0] as any;\n const {\n updatedZephyrHistory,\n zephyrHistory,\n } = populateObjectWithZephyrHistory(selectedAveragingPeriod, unit);\n const slots = updatedZephyrHistory[\n selectedAveragingPeriod.averagingOption\n ]\n ? slotValidator(updatedZephyrHistory, zephyrHistory).filter(\n (slot: string) => slot !== 'head',\n )\n : null;\n if (slots && slots.length > 0) {\n const unitZNumber = Object.keys(unit)[0];\n const unitData = unit[unitZNumber].data;\n slots.forEach((slot: string) => {\n pollutants.forEach((p: Pollutant) => {\n const pollutant = p.dataIdentifier;\n pollutantUnits[pollutant] = p.HTMLShortUnitLabel;\n if (\n pollutant in\n unitData[selectedAveragingPeriod.averagingOption][slot]\n ) {\n const { data: pollutantData } = unitData[\n selectedAveragingPeriod.averagingOption\n ][slot][pollutant];\n const { data: dateTimeStamps } = unitData[\n selectedAveragingPeriod.averagingOption\n ][slot].dateTime;\n obj[pollutant] =\n pollutant in obj\n ? [\n ...obj[pollutant],\n ...dateTimeStamps.map((ts: string, idx: number) => {\n return {\n timestamp: ts,\n [pollutant]: pollutantData[idx],\n };\n }),\n ]\n : [\n ...dateTimeStamps.map((ts: string, idx: number) => {\n return {\n timestamp: ts,\n [pollutant]: pollutantData[idx],\n };\n }),\n ];\n }\n });\n });\n }\n });\n const finalObject: any = {};\n Object.keys(obj).forEach((key: string) => {\n const pollutant = key;\n const formattedData = obj[key];\n let timestamps, meanValues, minValues, maxValues, fivePercentile, median, ninetyFivePercentile;\n\n if (selectedOption === 'minMeanMax') {\n ({ timestamps, meanValues, minValues, maxValues } = generateMinMaxMeanStatisticsObject(formattedData, pollutant, selectedOption));\n } else {\n ({ timestamps, fivePercentile, median, ninetyFivePercentile } = generateMinMaxMeanStatisticsObject(formattedData, pollutant, selectedOption));\n }\n finalObject[pollutant] = selectedOption === 'minMeanMax' ? {\n timestamps,\n meanValues,\n minValues,\n maxValues,\n unit: pollutantUnits[pollutant],\n } : { timestamps, median, fivePercentile, ninetyFivePercentile, unit: pollutantUnits[pollutant] };\n });\n const { data, layout } = getMinMaxMeanStatisticsPlotlyDataAndLayout(\n finalObject,\n historiesList.length,\n selectedOption\n );\n return { data, layout };\n }\n return [];\n};\n\nconst getSourceApportionmentConfigurations = (unitHistories: any, selectedZephyr: Zephyr, isNO2: boolean) => {\n let config: { [key: string]: number } = {};\n const { zNumber } = selectedZephyr;\n const zephyr = unitHistories.historiesList.find((z: any) => +Object.keys(z)[0] === zNumber);\n if (zephyr) {\n const { proxyVZSourceApportionmentData, selectedAveragingPeriod: { averagingOption } } = Object.values(zephyr)[0] as any;\n if (proxyVZSourceApportionmentData && proxyVZSourceApportionmentData.data && proxyVZSourceApportionmentData.data[averagingOption] && Object.keys(proxyVZSourceApportionmentData.data[averagingOption]).length) {\n const { data: proxyVZData } = proxyVZSourceApportionmentData;\n const averagingData = proxyVZData[averagingOption];\n const sa = isNO2 ? 'nox' : 'pm2p5';\n const curSALabels = isNO2 ? saLabelsNox : saLabelsPm2p5;\n const slot = 'slotB';\n if (slot in averagingData && averagingData[slot] && Object.keys(averagingData[slot]).length) {\n const filteredSAObject = Object.fromEntries(\n Object.entries(averagingData[slot]).filter(([key, _]) => key.includes(sa))\n );\n const saObject = Object.values(filteredSAObject);\n saObject.forEach(saData => {\n const { data: average, allNull, keyword } = saData as any;\n if (!allNull && average !== null && average !== undefined) {\n const label = curSALabels[keyword.split('_')[1] as keyof typeof curSALabels];\n config[`${label}${average === 0 || +average.toFixed() === 0 ? ' (0%)' : ` (${+average.toFixed()}%)`}`] = +average.toFixed();\n }\n })\n }\n }\n }\n if (Object.keys(config).length) {\n config = Object.fromEntries(\n Object.entries(config).sort(([, a], [, b]) => b - a)\n );\n }\n return Object.keys(config).length ? config : null;\n};\n\n/* Summary Table */\n\nconst roundedToFixed = (input: number, digits: number) => {\n const rounder = Math.pow(10, digits);\n return (Math.round(input * rounder) / rounder).toFixed(digits);\n};\n\nconst getMinMaxMean = (arr: any[]) => {\n const sortedArr =\n arr && arr.length > 0\n ? [...arr]\n .filter((el: number | null) => el !== null)\n .sort((a: number, b: number) => a - b)\n : [];\n const mean =\n sortedArr.reduce((a: number, b: number) => a + b, 0) / sortedArr.length;\n return sortedArr.length > 0 && arr\n ? {\n min: sortedArr[0],\n max: sortedArr[sortedArr.length - 1],\n mean,\n sortedArr,\n }\n : { min: 'N/A', max: 'N/A', mean: 'N/A', sortedArr };\n};\n\nconst formatCustomDate = (date: string) => {\n return date\n ? `${date.substring(8, 6)}/${date.substring(6, 4)}/${date.substring(\n 0,\n 4,\n )} ${date.substring(10, 8)}:${date.substring(10)}`\n : 'N/A';\n};\n\nconst getLocalTimeStamp = (timeStamp: string) => {\n const utcStartTime = utcConvertor(timeStamp);\n const unSyncedStartDate: Date = new Date(\n `${utcStartTime\n .toString()\n .substring(0, 4)}-${utcStartTime\n .toString()\n .substring(4, 6)}-${utcStartTime\n .toString()\n .substring(6, 8)}T${utcStartTime\n .toString()\n .substring(8, 10)}:${utcStartTime.toString().substring(10, 12)}`,\n );\n\n}\n\nconst getDateTime = (start: string, end: string, labelHTML: string) => {\n if (labelHTML !== 'Custom') {\n const utcStartTime = utcConvertor(start);\n const utcEndTime = utcConvertor(end);\n const unSyncedStartDate: Date = new Date(\n `${utcStartTime\n .toString()\n .substring(0, 4)}-${utcStartTime\n .toString()\n .substring(4, 6)}-${utcStartTime\n .toString()\n .substring(6, 8)}T${utcStartTime\n .toString()\n .substring(8, 10)}:${utcStartTime.toString().substring(10, 12)}`,\n );\n const unSyncedEndDate: Date = new Date(\n `${utcEndTime\n .toString()\n .substring(0, 4)}-${utcEndTime\n .toString()\n .substring(4, 6)}-${utcEndTime\n .toString()\n .substring(6, 8)}T${utcEndTime\n .toString()\n .substring(8, 10)}:${utcEndTime.toString().substring(10, 12)}`,\n );\n const startDate = moment(\n convertUnitTimeToLocalTime(unSyncedStartDate),\n ).format('DD-MM-YYYY HH:mm');\n const endDate = moment(convertUnitTimeToLocalTime(unSyncedEndDate)).format(\n 'DD-MM-YYYY HH:mm',\n );\n return { startDate, endDate };\n }\n const startDate = formatCustomDate(start);\n const endDate = formatCustomDate(end);\n return { startDate, endDate };\n};\n\nconst formatDate = (dateToFormat: Date) => {\n // Create a Date object from the ISO 8601 string\n const date = new Date(dateToFormat);\n\n // Extract components from the date\n const day = String(date.getUTCDate()).padStart(2, '0');\n const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // getUTCMonth() returns month from 0-11\n const year = date.getUTCFullYear();\n const hours = String(date.getUTCHours()).padStart(2, '0');\n const minutes = String(date.getUTCMinutes()).padStart(2, '0');\n\n // Format the date and time as DD/MM/YYYY HH:mm\n return `${day}/${month}/${year} ${hours}:${minutes}`;\n};\n\nconst summaryTableGenerator = (unitHistories: any, zephyrs: Zephyr[], csv: boolean) => {\n if (!unitHistories || !('historiesList' in unitHistories)) {\n return;\n }\n const { historiesList: selectedZephyrs } = unitHistories;\n const averagingPeriod: AveragingPeriod = (Object.values(\n selectedZephyrs[0],\n )[0] as any).selectedAveragingPeriod;\n const { selectedPollutants } = Object.values(selectedZephyrs[0])[0] as any;\n const tableTitles: { title: string, type?: string }[] | string[] = !csv ? [\n { title: 'Source' },\n { title: 'ID', type: 'num' },\n { title: 'Name' },\n { title: 'Slot' },\n ] : ['Source', 'Site ID', 'Site Name', 'Slot Number', 'Latitude', 'Longitude'];\n const tableData: any[] = [];\n let titlesPushed = false;\n selectedZephyrs.forEach((zephyrData: any, zIdx: number) => {\n const zephyr = zephyrs\n .filter((zephyr: Zephyr) => zephyr.zNumber)\n .find(\n (zephyr: Zephyr) =>\n zephyr.zNumber.toString() === Object.keys(zephyrData)[0],\n );\n const { latitude, longitude } = zephyr!;\n const {\n name,\n selectedDate: { start, end },\n selectedTimePeriod: { labelHTML },\n zType,\n } = Object.values(zephyrData)[0] as any;\n const zephyrType =\n zType === 0 ? 'Zephyr' : zType === 100 ? 'Virtual Zephyr' : 'AURN';\n const { startDate, endDate } = getDateTime(start, end, labelHTML);\n const selectedDate: string = `${startDate} - ${endDate}`;\n if ((Object.values(zephyrData)[0] as any).data) {\n if (\n averagingPeriod.averagingOption in\n (Object.values(zephyrData)[0] as any).data\n ) {\n const averagingOptionData = (Object.values(zephyrData)[0] as any).data[\n averagingPeriod.averagingOption\n ];\n const slots = Object.keys(averagingOptionData).reverse().filter((slot: string) => averagingOptionData[slot] && slot !== 'head');\n slots.forEach((slot: string, sIdx: number) => {\n if (averagingOptionData[slot]) {\n const zephyrID = Object.keys(zephyrData)[0];\n const tableRowData: any = !csv ? [\n zephyrType,\n zephyrID,\n name,\n zephyrType === 'Zephyr' ? slot.split(/(?=[A-Z])/)[1] : 'N/A',\n ] : [\n zephyrType,\n zephyrID,\n name,\n zephyrType === 'Zephyr' ? slot.split(/(?=[A-Z])/)[1] : 'N/A',\n latitude,\n longitude\n ];\n selectedPollutants.forEach((selectedPollutant: Pollutant, pIdx: number) => {\n let pollutant = selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier;\n pollutant = pollutantNameMapping[pollutant]?.replace(/\\s+/g, '') || pollutant;\n if (!csv && !(tableTitles as { title: string, type?: string }[]).find((pollutantTitleObj: { title: string, type?: string }) => pollutantTitleObj.title === pollutant)) (tableTitles as { title: string, type?: string }[]).push({ title: pollutant });\n const pollutantData =\n selectedPollutant.dataIdentifier in averagingOptionData[slot]\n ? averagingOptionData[slot][selectedPollutant.dataIdentifier]\n .data\n : null;\n const {\n dateTime: { data: dateTimeArr },\n } = averagingOptionData[slot];\n const { max, mean, sortedArr } = getMinMaxMean(pollutantData);\n if (!csv) tableRowData.push([]);\n tableRowData.push(\n sortedArr.length > 0 ? roundedToFixed(+mean, 1) : mean,\n sortedArr.length > 0 ? roundedToFixed(+max, 1) : max,\n sortedArr.length > 0\n ? formatDate(dateTimeArr[pollutantData.indexOf(max)])\n : 'N/A',\n selectedPollutant.HTMLShortUnitLabel,\n );\n if (!titlesPushed) {\n (tableTitles as any).push(\n !csv ? {\n title: `Mean`,\n type: 'num'\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Mean`,\n !csv ? {\n title: `Max`,\n type: 'num'\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Max`,\n !csv ? {\n // title: `Date Time (${getCurrentTimeZoneAbbreviation()})`,\n title: `Date Time (UTC)`,\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} ${!csv ? '' : 'Max'} Date Time (UTC)`,\n !csv ? {\n title: `Unit`\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Unit`\n );\n if (pIdx === selectedPollutants.length - 1) titlesPushed = true;\n }\n });\n tableData.push([...tableRowData]);\n }\n });\n } else {\n const zephyrID = Object.keys(zephyrData)[0];\n const tableRowData: any = !csv ? [\n zephyrType,\n zephyrID,\n name,\n 'No data for selected averaging option'\n ] : [\n zephyrType,\n zephyrID,\n name,\n 'No data for selected averaging option',\n latitude,\n longitude,\n ];\n selectedPollutants.forEach(\n (selectedPollutant: Pollutant, pIdx: number) => {\n tableRowData.push(\n 'No data for selected averaging option',\n 'No data for selected averaging option',\n 'No data for selected averaging option',\n 'No data for selected averaging option',\n );\n if (zIdx === 0 && pIdx === 0)\n (tableTitles as any).push(\n !csv ? {\n title: `Mean`,\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Mean`,\n !csv ? {\n title: `Max`,\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Max`,\n !csv ? {\n title: `Date Time (UTC)`,\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} ${!csv ? '' : 'Max'} Date Time (UTC)`,\n !csv ? {\n title: `Unit`\n } : `${selectedPollutant.dataIdentifier.includes('particulate') ? selectedPollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : selectedPollutant.dataIdentifier.split('particulate')[1] : selectedPollutant.dataIdentifier} Unit`\n );\n },\n );\n tableData.push([...tableRowData]);\n }\n } else {\n // push no data for selected time period\n }\n });\n return { tableData, tableTitles };\n};\n\nconst isProxyVZDataValid = (proxyVZData: any, proxyVZSlots: string[], averagingOption: string) => {\n let isProxyVZDataValid = false;\n if (proxyVZSlots.length > 0) {\n for (let i = 0; i < proxyVZSlots.length; i++) {\n if (proxyVZData[averagingOption][proxyVZSlots[i]].WINDSPEED.data.some((val: number | null) => typeof val === 'number') || proxyVZData[averagingOption][proxyVZSlots[i]].WINDDIR.data.some((val: number | null) => typeof val === 'number') || proxyVZData[averagingOption][proxyVZSlots[i]].RAINFALL.data.some((val: number | null) => typeof val === 'number')) {\n isProxyVZDataValid = true;\n break;\n }\n };\n return isProxyVZDataValid;\n }\n return isProxyVZDataValid;\n};\n\nconst comparisonViewCSVGenerator = (unit: any, zephyrs: Zephyr[]) => {\n // const unitZNumber = +Object.keys(unit)[0];\n // const { selectedPollutants, data, selectedAveragingPeriod: { averagingOption } } = Object.values(unit)[0] as any;\n // const constantTitles = ['Date (Local)', 'Time (Local)', 'UTC Time Stamp', 'Latitude', 'Longitude'];\n // let pollutantTitles = [...selectedPollutants.map((pollutant: Pollutant) => [`${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Unit`])].flat(1);\n // const content = [];\n // const curZephyr = zephyrs\n // .filter((zephyr: Zephyr) => zephyr.zNumber)\n // .find(\n // (zephyr: Zephyr) =>\n // zephyr.zNumber === unitZNumber,\n // );\n // const { latitude, longitude } = curZephyr!;\n // if (data && data.hasOwnProperty(averagingOption)) {\n // const slots = data[averagingOption];\n // const filteredSlots = Object.keys(slots).reverse().filter((slot: string) => slots[slot] && slot !== 'head');\n\n // }\n\n let proxyVZData: any = {};\n const unitZNumber = +Object.keys(unit)[0];\n const unitData: any = Object.values(unit)[0];\n const { selectedPollutants, selectedAveragingPeriod: averagingPeriod, data } = unitData;\n if (unitData.hasOwnProperty('proxyVZData')) proxyVZData = unitData.proxyVZData.data;\n const species = [...selectedPollutants.map((pollutant: Pollutant) => {\n const { dataIdentifier } = pollutant;\n return { [dataIdentifier]: 0 }\n })];\n const tableTitlesBeforePollutants: string[] = ['Date (Local)', 'Time (Local)', 'UTC Time Stamp', 'Latitude', 'Longitude'];\n let tablePollutantsTitles: string[] = [...selectedPollutants.map((pollutant: Pollutant) => [`${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Unit`])].flat(1);\n const tableData: any[] = [];\n if (data) {\n if (averagingPeriod.averagingOption in data) {\n const averagingOptionData = data[averagingPeriod.averagingOption];\n const { latitude: { data: latList }, longitude: { data: lonList } } = averagingOptionData['head'];\n const slots = Object.keys(averagingOptionData).reverse().filter((slot: string) => averagingOptionData[slot] && slot !== 'head');\n // const proxyVZSlots = Object.keys(proxyVZData).length > 0 ? Object.keys(proxyVZData[averagingPeriod.averagingOption]).reverse().filter((slot: string) => proxyVZData[averagingPeriod.averagingOption][slot] && slot !== 'head') : [];\n const proxyVZSlots = Object.keys(proxyVZData).length > 0 && proxyVZData[averagingPeriod.averagingOption] ?\n Object.keys(proxyVZData[averagingPeriod.averagingOption]).reverse().filter((slot: string) => proxyVZData[averagingPeriod.averagingOption][slot] && slot !== \"head\") : [];\n if (slots.length > 1) tablePollutantsTitles = [...selectedPollutants.map((pollutant: Pollutant) => [`${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration (A)`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration (B)`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Unit`])].flat(1);\n const { dateTime: { data: dateTimeValues } } = slots.length > 0 ? averagingOptionData[slots[0]] : proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]];\n dateTimeValues.forEach((time: Date | string, idx: number) => {\n const localDate = moment(\n convertUnitTimeToLocalTime(time.toString().split('+')[0]),\n ).format('DD-MM-YYYY');\n const localTime = moment(\n convertUnitTimeToLocalTime(time.toString().split('+')[0]),\n ).format('HH:mm:ss');\n const tableRowData: any = [localDate, localTime, time, latList[idx] ?? 'N/A', lonList[idx] ?? 'N/A'];\n species.forEach((specie: { [key: string]: number }) => {\n const key = Object.keys(specie)[0];\n const value = Object.values(specie)[0];\n if (value === 0) {\n if (slots.length === 0) {\n value === 0 ? tableRowData.push('N/A', 'N/A') : tableRowData.push('N/A');\n }\n else if (slots.length === 1) {\n if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx]);\n } else {\n value === 0 ? tableRowData.push('N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A');\n }\n } else {\n if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number' && key in averagingOptionData[slots[1]] && typeof averagingOptionData[slots[1]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], averagingOptionData[slots[1]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx], averagingOptionData[slots[1]][key].data[idx]);\n } else if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], 'N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx], 'N/A');\n } else if (key in averagingOptionData[slots[1]] && typeof averagingOptionData[slots[1]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push('N/A', averagingOptionData[slots[1]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A', averagingOptionData[slots[1]][key].data[idx]);\n } else {\n value === 0 ? tableRowData.push('N/A', 'N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A', 'N/A');\n }\n }\n }\n });\n tableData.push([...tableRowData]);\n });\n\n } else {\n // push no data for selected time average\n }\n } else {\n // push no data for selected time period\n }\n const tableTitles: string[] = [...tableTitlesBeforePollutants, ...tablePollutantsTitles];\n\n return { tableData, tableTitles };\n}\n\nconst deviceCSVGenerator = (unitHistories: any, zephyrObj: any, id: number, zephyrs: Zephyr[], isPublic: boolean) => {\n if (!unitHistories || !('historiesList' in unitHistories)) return;\n let proxyVZData: any = {};\n const { selectedPollutants, selectedAveragingPeriod: averagingPeriod, data, selectedDate: { start, end }, selectedTimePeriod: { labelHTML } } = zephyrObj;\n if (zephyrObj.hasOwnProperty('proxyVZData') && !isPublic) proxyVZData = zephyrObj.proxyVZData.data;\n const species = [...selectedPollutants.map((pollutant: Pollutant) => {\n const { dataIdentifier } = pollutant;\n return { [dataIdentifier]: 0 }\n }), ...(!isPublic ? [{ tempC: 1 }, { humidity: 1 }, /*{ ambPressure: 1 },*/ { relWindSpeed: 2 }, { relWindDir: 2 }, { precipitationIntensity: 2 }, { WINDSPEED: 3 }, { WINDDIR: 3 }, { RAINFALL: 3 }] : [])];\n const tableTitlesBeforePollutants: string[] = ['Date (Local)', 'Time (Local)', 'UTC Time Stamp', 'Latitude', 'Longitude'];\n let tablePollutantsTitles: string[] = [...selectedPollutants.map((pollutant: Pollutant) => [`${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] === 'PM25' ? 'PM2.5' : pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Unit`]), ...(!isPublic ? ['Temperature (°C)', 'Relative Humidity (%)'] : [])].flat(1);\n const tableMetDataTitles: string[] = !isPublic ? ['Measured (External) Wind Speed (m/s)', 'Measured (External) Wind Direction (°)', 'Measured (External) Rainfall (mm/hr)'] : [];\n let tableProxyVZephyrMetDataTitles: string[] = [];\n const tableData: any[] = [];\n const zephyr = zephyrs\n .filter((zephyr: Zephyr) => zephyr.zNumber)\n .find(\n (zephyr: Zephyr) =>\n zephyr.zNumber === id,\n );\n if (data) {\n if (averagingPeriod.averagingOption in data) {\n const averagingOptionData = data[averagingPeriod.averagingOption];\n const { latitude: { data: latList }, longitude: { data: lonList } } = averagingOptionData['head'];\n const slots = Object.keys(averagingOptionData).reverse().filter((slot: string) => averagingOptionData[slot] && slot !== 'head').sort();\n const proxyVZSlots = Object.keys(proxyVZData).length > 0 && proxyVZData[averagingPeriod.averagingOption] ?\n Object.keys(proxyVZData[averagingPeriod.averagingOption]).reverse().filter((slot: string) => proxyVZData[averagingPeriod.averagingOption][slot] && slot !== \"head\") : [];\n if (slots.length > 1) tablePollutantsTitles = [...selectedPollutants.map((pollutant: Pollutant) => [`${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration (A)`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Concentration (B)`, `${pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier} Unit`]), `Temperature (°C) (A)`, `Temperature (°C) (B)`, `Relative Humidity (%) (A)`, `Relative Humidity (%) (B)`].flat(1);\n if (zephyr?.type === 0 && (averagingPeriod.averagingOption === 'Hourly average on the hour' || averagingPeriod.averagingOption === '8 hour average at midnight and 8am and 4pm' || averagingPeriod.averagingOption === 'Daily average at midnight') && proxyVZSlots.length > 0 && isProxyVZDataValid(proxyVZData, proxyVZSlots, averagingPeriod.averagingOption)) {\n if (proxyVZSlots.length > 1) tableProxyVZephyrMetDataTitles = ['Modelled Wind Speed (m/s) (A)', 'Modelled Wind Speed (m/s) (B)', 'Modelled Wind Direction (°) (A)', 'Modelled Wind Direction (°) (B)', 'Modelled Rainfall (mm/hr) (A)', 'Modelled Rainfall (mm/hr) (B)'];\n else tableProxyVZephyrMetDataTitles = ['Modelled Wind Speed (m/s)', 'Modelled Wind Direction (°)', 'Modelled Rainfall (mm/hr)'];\n }\n const { dateTime: { data: dateTimeValues } } = slots.length > 0 ? averagingOptionData[slots[0]] : proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]];\n dateTimeValues.forEach((time: Date | string, idx: number) => {\n const localDate = moment(\n convertUnitTimeToLocalTime(time.toString().split('+')[0]),\n ).format('DD-MM-YYYY');\n const localTime = moment(\n convertUnitTimeToLocalTime(time.toString().split('+')[0]),\n ).format('HH:mm:ss');\n const tableRowData: any = [localDate, localTime, time, latList[idx] ?? 'N/A', lonList[idx] ?? 'N/A'];\n species.forEach((specie: { [key: string]: number }) => {\n const key = Object.keys(specie)[0];\n const value = Object.values(specie)[0];\n if (value !== 3) {\n if (value === 0 || value === 1) {\n if (slots.length === 0) {\n value === 0 ? tableRowData.push('N/A', 'N/A') : tableRowData.push('N/A');\n }\n else if (slots.length === 1) {\n if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx]);\n } else {\n value === 0 ? tableRowData.push('N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A');\n }\n } else {\n if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number' && key in averagingOptionData[slots[1]] && typeof averagingOptionData[slots[1]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], averagingOptionData[slots[1]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx], averagingOptionData[slots[1]][key].data[idx]);\n } else if (key in averagingOptionData[slots[0]] && typeof averagingOptionData[slots[0]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push(averagingOptionData[slots[0]][key].data[idx], 'N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push(averagingOptionData[slots[0]][key].data[idx], 'N/A');\n } else if (key in averagingOptionData[slots[1]] && typeof averagingOptionData[slots[1]][key].data[idx] === 'number') {\n value === 0 ? tableRowData.push('N/A', averagingOptionData[slots[1]][key].data[idx], selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A', averagingOptionData[slots[1]][key].data[idx]);\n } else {\n value === 0 ? tableRowData.push('N/A', 'N/A', selectedPollutants.find((pollutant: Pollutant) => pollutant.dataIdentifier === key).HTMLShortUnitLabel) : tableRowData.push('N/A', 'N/A');\n }\n }\n } else {\n if (averagingOptionData['head'] && key in averagingOptionData['head'] && typeof averagingOptionData['head'][key].data[idx] === 'number') {\n tableRowData.push(averagingOptionData['head'][key].data[idx]);\n } else {\n tableRowData.push('N/A');\n }\n }\n } else {\n if (tableProxyVZephyrMetDataTitles.length > 0) {\n if (proxyVZSlots.length === 0) {\n tableRowData.push('N/A');\n }\n else if (proxyVZSlots.length === 1) {\n if (key in proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]] && typeof proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx] === 'number') {\n tableRowData.push(proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx]);\n } else {\n tableRowData.push('N/A');\n }\n } else {\n if (key in proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]] && typeof proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx] === 'number' && key in proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]] && typeof proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]][key].data[idx] === 'number') {\n tableRowData.push(proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx], proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]][key].data[idx]);\n } else if (key in proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]] && typeof proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx] === 'number') {\n tableRowData.push(proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[0]][key].data[idx], 'N/A');\n } else if (key in proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]] && typeof proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]][key].data[idx] === 'number') {\n tableRowData.push('N/A', proxyVZData[averagingPeriod.averagingOption][proxyVZSlots[1]][key].data[idx]);\n } else {\n tableRowData.push('N/A', 'N/A');\n }\n }\n }\n }\n });\n tableData.push([...tableRowData]);\n });\n\n } else {\n // push no data for selected time average\n }\n } else {\n // push no data for selected time period\n }\n const tableTitles: string[] = [...tableTitlesBeforePollutants, ...tablePollutantsTitles, ...tableMetDataTitles, ...tableProxyVZephyrMetDataTitles];\n\n return { tableData, tableTitles };\n};\n\nexport {\n pointDataPackager,\n saDataPackager,\n windDataPackager,\n windRoseDataPackagerFromMetData,\n categorizeWindDataByDirectionAndSpeed,\n plotlyChartDataGenerator,\n plotlyTHPDataGenerator,\n plotlyWindDirectionSpeedGenerator,\n plotlyPrecipitationGenerator,\n plotlyMinMaxMeanStatisticsGenerator,\n summaryTableGenerator,\n deviceCSVGenerator,\n plotlyPollutantComparisonGenerator,\n comparisonViewCSVGenerator,\n getSourceApportionmentConfigurations\n};","// Util Imports\nimport { cardinalDirectionsPlus } from '../consts';\n\n// Type Imports\nimport { CardinalDirections } from '../interface';\n\n/* ===== Function =====\n@DESC: cardinalDirectionFinder takes a direction and returns the bucket name for it e.g NNW\n@ARGS: a direction in unit degrees\n*/\nconst cardinalDirectionFinder = (direction: number) => {\n const directionCount = cardinalDirectionsPlus.length;\n let dirBucket: CardinalDirections =\n cardinalDirectionsPlus[directionCount - 1];\n cardinalDirectionsPlus.forEach((cD, idx) => {\n if (\n idx < directionCount - 1 &&\n direction >= cD.minDegrees &&\n direction < cardinalDirectionsPlus[idx + 1].minDegrees\n ) {\n dirBucket = cD;\n }\n });\n return dirBucket;\n};\n\nexport { cardinalDirectionFinder };\n","import React, { Suspense, useMemo, useState } from 'react';\nimport { ChartProps } from '../../../utils/interface';\nimport { ChartTitleBar } from '../DataAnalyticsChartCtas';\nimport { draggingWidgetStyles } from '../../../utils/consts';\n\n// make these dynamic in function using .includes to determine the chart type\nconst networkViewComponents: any = {\n networkViewMap: {\n component: React.lazy(() => import('../Charts/MiniMap')),\n // Data Analytics version 2.1- add chart widget. the below will be use as a preview with text...\n image: '/path/to/map/image.png',\n title: 'Network Map',\n description: 'Display the network map with relevant information.',\n html: '
    Network Map
    ',\n },\n networkViewParticulates: {\n component: React.lazy(\n () => import('../Charts/MinMaxMeanStatisticsChartPlotly'),\n ),\n },\n networkViewGases: {\n component: React.lazy(\n () => import('../Charts/MinMaxMeanStatisticsChartPlotly'),\n ),\n },\n networkViewPollutantSummary: {\n component: React.lazy(() => import('../Charts/PollutantSummary')),\n },\n};\n\n// make these dynamic in function using .includes to determine the chart type\nconst deviceViewComponents: any = {\n precipitation: {\n component: React.lazy(() => import('../Charts/Precipitation')),\n },\n map: { component: React.lazy(() => import('../Charts/MiniMap')) },\n particulate: {\n component: React.lazy(() => import('../Charts/PollutantChartPlotly')),\n },\n gases: {\n component: React.lazy(() => import('../Charts/PollutantChartPlotly')),\n },\n thpChartPlotly: {\n component: React.lazy(() => import('../Charts/THPChartPlotly')),\n },\n windSpeedDirChartPlotly: {\n component: React.lazy(() => import('../Charts/WindSpeedDirChartPlotly')),\n },\n gasAverages: {\n component: React.lazy(() => import('../Charts/PollutantAverages')),\n },\n pmAverages: {\n component: React.lazy(() => import('../Charts/PollutantAverages')),\n },\n sourceApportionmentNO2: {\n component: React.lazy(\n () => import('../Charts/SourceApportionmentPieChart'),\n ),\n },\n sourceApportionmentPM25: {\n component: React.lazy(\n () => import('../Charts/SourceApportionmentPieChart'),\n ),\n },\n};\n\nexport const lazyComponents = {\n ...networkViewComponents,\n ...deviceViewComponents,\n};\n\nconst DynamicChart: React.FC<{\n type: string | undefined;\n props?: ChartProps;\n isDragging?: boolean;\n draggedItem?: string | null;\n onRemoveWidget?: () => void;\n}> = React.memo(({ type = '', isDragging, onRemoveWidget, ...props }) => {\n const { selectedView, unitHistories, comparisonViewZephyrs, draggedItem, userInfo } = props as ChartProps;\n const [hoveredWidget, setHoveredWidget] = useState(null);\n\n const ChartComponent = useMemo(() => {\n if (selectedView === 'comparisonView') {\n lazyComponents[type] = {\n component: React.lazy(() => import('../Charts/ComparisonPollutant')),\n };\n }\n const keys = !lazyComponents.hasOwnProperty(type) ? Object.keys(lazyComponents).find((el) => type.includes(el)) : null;\n return lazyComponents[keys ?? type]?.component;\n }, [unitHistories, comparisonViewZephyrs]);\n\n if (!ChartComponent) {\n // Handle unrecognized chart type\n return (\n
    \n \n
    \n Unknown chart:\n {type}\n
    \n
    \n );\n }\n\n let title: string | undefined;\n if (type.includes('gasAverages')) {\n title = 'Gas Averages';\n } else if (type.includes('pmAverages')) {\n title = 'Particulate Averages';\n }\n const p = {\n ...props,\n title,\n };\n const chartsClassName = type.includes('thpChartPlotly') ? 'thpChartPlotly' : type.includes('windSpeedDirChartPlotly') ? 'windSpeedDirChartPlotly' : type.includes('precipitation') ? 'precipitation' : type.includes('sourceApportionmentNO2') ? 'sourceApportionmentNO2' : type.includes('sourceApportionmentPM25') ? 'sourceApportionmentPM25' : type;\n const curChartClassName = type.includes('networkViewPollutantSummary') && type !== 'networkViewPollutantSummary' ? 'networkViewPollutantSummary' : chartsClassName;\n\n return (\n Loading...}>\n
    { if (!userInfo.isPublic) setHoveredWidget(type) }} onMouseLeave={() => { if (!userInfo.isPublic) setHoveredWidget(null) }} style={{ ...isDragging && draggedItem === type && !userInfo.isPublic ? draggingWidgetStyles : {} }}>\n \n
    \n
    \n );\n});\n\nexport default DynamicChart;\n","import React, { useEffect, useState } from 'react';\nimport { Responsive, WidthProvider } from 'react-grid-layout';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport '../../../../node_modules/react-grid-layout/css/styles.css';\nimport '../../../../node_modules/react-resizable/css/styles.css';\nimport {\n AveragingPeriod,\n GridItemInfo,\n LayoutItem,\n LayoutMapItem,\n} from '../../../utils/interface';\nimport DynamicChart from './DynamicChart';\nimport { updateScatterChartNumber } from '../../../utils/functions/dataAnalytics';\nimport { Button } from '@mui/material';\nimport { Box, Modal } from '@mui/material';\n\nexport const iconsTypeMap = {\n 'fa-chart-pie': 'exceedances',\n 'fa-chart-line': 'weatherWind',\n 'fa-chart-bar': 'weather',\n 'fa-chart-area': 'weatherWindRose',\n 'fa-font': 'precipitation',\n 'fa-image': 'summary',\n 'fa-list': 'map',\n 'fa-table': 'table',\n 'fa-tachometer-alt': 'pollutantAvg',\n 'fa-layer-group': 'pollutants',\n 'fa-layer-group2': 'pollutants2',\n};\n\nconst isDevModeEnabled = true;\n\nconst ResponsiveReactGridLayout = WidthProvider(Responsive);\n\nexport default function AddRemoveLayout({ ...chartProps }) {\n const { localStorageKeysToSaveTo, selectedView, unitHistories, userInfo, layouts, setLayouts, setScatterChartsCounter } = chartProps;\n const [isDragging, setIsDragging] = useState(false); // Track dragging state\n const [items, setItems] = useState([]);\n const [layoutMap, setLayoutMap] = useState([]);\n const [config, setConfig] = useState({\n compactType: 'horizontal',\n breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 },\n cols: { lg: 12, md: 12, sm: 12, xs: 12, xxs: 12 },\n // cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 },\n rowHeight: 30,\n isDraggable: !userInfo.isPublic && isDevModeEnabled,\n isResizable: !userInfo.isPublic && isDevModeEnabled,\n });\n const [draggedItem, setDraggedItem] = useState(null);\n\n // need to update layout logic when old view is loaded\n const defaultLayout: any = { ...layouts };\n\n if (selectedView === 'comparisonView') {\n defaultLayout[localStorageKeysToSaveTo[0]] = layouts.comparisonView;\n defaultLayout[localStorageKeysToSaveTo[1]] = layouts.comparisonViewLayout;\n }\n\n useEffect(() => {\n const layoutSaved = defaultLayout[localStorageKeysToSaveTo[0]];\n const layoutMapSaved = defaultLayout[localStorageKeysToSaveTo[1]];\n\n setItems(layoutSaved);\n setLayoutMap(layoutMapSaved);\n }, [unitHistories, layouts]);\n\n const getGridItemInfo = (el: LayoutItem): LayoutMapItem | undefined => {\n let itemInfo = (layoutMap as GridItemInfo[])?.find(\n (item: LayoutMapItem) => el.i === item.i,\n );\n if (!itemInfo) {\n itemInfo = { i: el.i, uid: uuidv4(), type: '', name: 'not found' };\n }\n return itemInfo;\n };\n\n const createElement = (el: LayoutItem) => {\n const itemInfo = getGridItemInfo(el);\n const itemKey = itemInfo?.uid;\n\n return (\n \n
    \n onRemoveItem(el.i)}\n />\n
    \n \n );\n };\n\n const onLayoutChange = (layouts: LayoutItem[]) => {\n let customizedLayouts = selectedView === 'comparisonView' ? [...JSON.parse(JSON.stringify(items))] : layouts;\n if (selectedView === 'comparisonView') {\n customizedLayouts.forEach(item => {\n const foundItem = layouts.find(i => item.i === i.i);\n if (foundItem) {\n const { w, h, x, y } = foundItem;\n item.w = w;\n item.h = h;\n item.x = x;\n item.y = y;\n }\n })\n }\n setLayouts((prevLayouts: any) => {\n return { ...prevLayouts, [selectedView]: customizedLayouts, [`${selectedView}Layout`]: !itemToRemove || selectedView === 'comparisonView' ? layoutMap : layoutMap.filter((l: { uid: string, name: string, i: string }) => l.i !== itemToRemove) };\n })\n if (itemToRemove) setItemToRemove(null);\n debouncedResizeEventToFixPlotlyScroll();\n };\n\n const [openConfirmModal, setOpenConfirmModal] = useState(false);\n const [itemToRemove, setItemToRemove] = useState(null);\n\n const handleOpenConfirmModal = (i: string) => {\n setItemToRemove(i);\n setOpenConfirmModal(true);\n };\n\n const handleCloseConfirmModal = () => {\n setOpenConfirmModal(false);\n // setItemToRemove(null);\n };\n\n const onRemoveItem = (i: string) => {\n handleOpenConfirmModal(i);\n };\n\n const handleConfirmRemove = () => {\n if (!itemToRemove) return;\n\n let newItems = [...JSON.parse(JSON.stringify(items))];\n if (selectedView !== 'comparisonView') newItems = newItems.filter((item: any) => item.i !== itemToRemove);\n else {\n // update flag for comparison view widgets\n for (const item of newItems) {\n if (item.i === itemToRemove) item.isRemoved = true;\n }\n }\n\n setItems(newItems);\n updateLayoutMap({\n action: 'remove',\n type: { UID: null, module: null, i: itemToRemove, gridItem_i: itemToRemove },\n });\n if(!userInfo.isPublic) updateScatterChartNumber(setScatterChartsCounter, selectedView, itemToRemove, false);\n handleCloseConfirmModal();\n };\n\n const updateLayoutMap = (obj: any) => {\n const { type } = obj;\n const { gridItem_i } = type;\n const { i } = type;\n\n let newLayoutMap = [...localStorageKeysToSaveTo[1]];\n const index = newLayoutMap.findIndex((item) => item.i === gridItem_i);\n\n switch (obj.action) {\n case 'remove':\n if (index === -1 || selectedView === 'comparisonView') return;\n newLayoutMap = newLayoutMap.filter((item) => item.i !== i);\n break;\n\n default:\n break;\n }\n\n if (obj.action) setLayoutMap(newLayoutMap);\n };\n\n const handleDragStart = (layout: any, oldItem: any) => {\n setIsDragging(true);\n\n // Detect the dragged item's ID or chart type\n const draggedItemId = oldItem.i;\n\n // Find the chart type using the items list and the unique ID\n const draggedWidget = layoutMap.find((item: any) => item.i === draggedItemId);\n const { name } = draggedWidget\n if (draggedItem !== name) setDraggedItem(name);\n };\n\n const handleDragStop = () => {\n setIsDragging(false);\n };\n\n return (\n
    \n \n \n

    Confirm Removal

    \n

    \n Do you want to remove this widget from your dashboard view?\n

    \n \n \n Cancel\n \n\n \n Remove\n \n \n
    \n \n\n \n {(selectedView === 'comparisonView' ? [...JSON.parse(JSON.stringify(items))].filter((item: any) => !item.isRemoved) : items).map((el: any) => createElement(el))}\n \n \n );\n}\n\nexport const ChartNoDependencyDataMessage = ({ text = \"No data available\", proxyVZText = \"Choose '1 Hour', '8 Hour' or '24 Hour' time average to see this data\", HasMetStation, selectedAveragingPeriod }: { text?: string, proxyVZText?: string, HasMetStation?: number | null | undefined, selectedAveragingPeriod?: AveragingPeriod | undefined }) => {\n const updatedText = typeof HasMetStation === 'number' && HasMetStation === 0 && selectedAveragingPeriod && selectedAveragingPeriod.labelHTML !== '1 Hour' && selectedAveragingPeriod.labelHTML !== '8 Hour' && selectedAveragingPeriod.labelHTML !== '24 Hour' ? proxyVZText : text;\n return (\n
    \n

    {updatedText}

    \n
    \n );\n};\n\nexport const getSelectedZephyrObj = (\n unitHistories: any,\n selectedWeatherZephyr: any,\n zephyrs: any,\n) => {\n const { historiesList } = unitHistories;\n const { id } = selectedWeatherZephyr;\n const unit = historiesList.find(\n (zephyr: any) => +(Object.keys(zephyr) as any)[0] === +id,\n );\n const unitKey = Number(Object.keys(unit)[0]);\n const { selectedAveragingPeriod, data } = unit[unitKey];\n\n const selectedZephyr = zephyrs.find(\n (zephyr: any) => zephyr.zNumber === unitKey,\n );\n return { selectedZephyr, selectedAveragingPeriod, data };\n};\n\nexport const getZephyrType = (zType: number): string => {\n switch (zType) {\n case 0:\n return 'Zephyr';\n case 1:\n return 'AURNS';\n case 100:\n return 'Virtual Zephyr';\n\n default:\n return '';\n }\n};\n\nexport function debounce any>(\n func: T,\n wait: number,\n): (...args: Parameters) => void {\n let timeout: NodeJS.Timeout | null;\n\n return function (...args: Parameters): void {\n const later = () => {\n timeout = null;\n func(...args);\n };\n\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(later, wait);\n };\n}\n\nconst debouncedResizeEventToFixPlotlyScroll = debounce(() => {\n window.dispatchEvent(new Event('resize'));\n}, 250);\n","// Type Imports\nimport {\n AlertPeriodMap,\n AlertRepeatMap,\n AlertThresholdMap,\n AQOptionsMap,\n AreaConfig,\n AsideOverlaysSpeciesMap,\n AsideUnitMetricsMap,\n BorderDashStrings,\n CardinalDirections,\n ComponentContent,\n Config,\n ContactForm,\n ContactFormMappair,\n ContactFormSelection,\n ContactFormSelectionLookup,\n ContactFormZephyr,\n CookieSettings,\n Days,\n GtmConfig,\n GtmEvents,\n GtmEventIdentifiers,\n HighDefinitionPointsGroup,\n Keys,\n Link,\n LocationCoordinates,\n MappAirFilterToggles,\n MappAirSelectedFilter,\n ObjectMap,\n Paths,\n Periods,\n PlaceholderAxis,\n SecondaryAxisConfig,\n ShowAQMALayer,\n Slot,\n Species,\n SpeciesMap,\n TilingGroup,\n TimePeriod,\n TodaySubspeciesMap,\n UnitSelections,\n UnitStatus,\n UrlQueryStringOptions,\n AnnualAvgTabMap,\n VZephyrsConfig,\n translationOption,\n tileDimensions,\n FleetManagementSpeciesMap,\n YearObj,\n TimeSliderOption,\n DropdownSelection,\n Pollutant,\n AveragingChain,\n PollutantLimit,\n} from './interface';\n\nimport { getEnvVar } from './functions/general';\n\n// Temp points config for high def queries\nexport const highDefinitionPointsGroup: HighDefinitionPointsGroup[] = [\n {\n users: ['ShropshireCouncil_exp', 'ShropshirePublic'],\n layers: [\n {\n curOverlay: 'UK PM25',\n highDefRef: 'shrewspm2p5',\n extent: [\n [-2.7642189, 52.705036],\n [-2.7449922, 52.714261],\n ],\n },\n {\n curOverlay: 'UK NO2',\n highDefRef: 'shrewsno2',\n extent: [\n [-2.7642189, 52.705036],\n [-2.7449922, 52.714261],\n ],\n },\n {\n curOverlay: 'UK PM25',\n highDefRef: 'bridgepm2p5',\n extent: [\n [-2.4258688154576897, 52.53372104880171],\n [-2.421977158630069, 52.53610104410657],\n ],\n },\n {\n curOverlay: 'UK NO2',\n highDefRef: 'bridgeno2',\n extent: [\n [-2.4258688154576897, 52.53372104880171],\n [-2.421977158630069, 52.53610104410657],\n ],\n },\n ],\n },\n {\n users: ['LeicesterCityCouncilv2', 'LeicesterPublic'],\n layers: [\n {\n curOverlay: 'UK PM25',\n highDefRef: 'lccpm2p5',\n extent: [\n [-1.209584207810321, 52.58458996570488],\n [-1.051119027894003, 52.68734057338594],\n ],\n },\n ],\n },\n {\n users: ['AMEY'],\n layers: [\n {\n curOverlay: 'UK PM25',\n highDefRef: 'newcastlepm2p5',\n extent: [\n [-2.236963, 53.007055],\n [-2.222011, 53.016015],\n ],\n },\n {\n curOverlay: 'UK PM25',\n highDefRef: 'cellarheadpm2p5',\n extent: [\n [-2.076753, 53.018486],\n [-2.054369, 53.031958],\n ],\n },\n {\n curOverlay: 'UK NO2',\n highDefRef: 'newcastleno2',\n extent: [\n [-2.236963, 53.007055],\n [-2.222011, 53.016015],\n ],\n },\n {\n curOverlay: 'UK NO2',\n highDefRef: 'cellarheadno2',\n extent: [\n [-2.076753, 53.018486],\n [-2.054369, 53.031958],\n ],\n },\n ],\n },\n {\n users: ['SiemensAdept'],\n layers: [\n {\n curOverlay: 'UK NO2',\n highDefRef: 'thatchamno2',\n extent: [\n [-1.269507, 51.394629],\n [-1.24105, 51.412793],\n ],\n },\n {\n curOverlay: 'UK PM25',\n highDefRef: 'thatchampm2p5',\n extent: [\n [-1.269507, 51.394629],\n [-1.24105, 51.412793],\n ],\n },\n ],\n },\n {\n users: ['LeicestershireCCPublic'],\n layers: [\n {\n curOverlay: 'UK NO2',\n highDefRef: 'no2uk2019',\n extent: [\n [-9.45, 49.8],\n [2.78, 60.85],\n ],\n },\n {\n curOverlay: 'UK PM25',\n highDefRef: 'pm2p5uk2019',\n extent: [\n [-9.45, 49.8],\n [2.78, 60.85],\n ],\n },\n ],\n },\n {\n users: ['liberiapublico'],\n layers: [\n {\n curOverlay: 'Global NO2',\n highDefRef: 'no2global',\n extent: [\n [-180, -90],\n [180, 90],\n ],\n },\n {\n curOverlay: 'Global PM25',\n highDefRef: 'pm2p5global',\n extent: [\n [-180, -90],\n [180, 90],\n ],\n },\n ],\n },\n];\n\n// Config\nexport const config: Config = {\n machine: getEnvVar('REACT_APP_CURRENT_MACHINE'),\n alertsAPI: getEnvVar('REACT_APP_ALERTS_API'),\n mappairAPI: getEnvVar('REACT_APP_MAPPAIR_API'),\n myAirApi: getEnvVar('REACT_APP_MYAIR_API'),\n zephyrAPI: getEnvVar('REACT_APP_ZEPHYR_API'),\n zephyrDataAPI: getEnvVar('REACT_APP_ZEPHYR_API'),\n vZephyrAPI: getEnvVar('REACT_APP_VZEPHYR_API'),\n mappairTiledAPI: getEnvVar('REACT_APP_MAPAIR_Tiled_API'),\n masterAuthAPI: getEnvVar('REACT_APP_AUTH_API'),\n enableGridDragAndDrop:\n getEnvVar('REACT_APP_ENABLE_GRID_DRAG_AND_DROP') === 'drag-drop' && localStorage.getItem('drag-drop') && localStorage.getItem('drag-drop') === 'true',\n enableAutoLoadFirstView:\n getEnvVar('REACT_APP_AUTOLOAD_FIRST_VIEW') === 'true',\n sentryENABLED: getEnvVar('REACT_APP_SENTRY_ENABLED') === 'true',\n sentryDSN: getEnvVar('REACT_APP_SENTRY_DSN'),\n sentryRELEASE: getEnvVar('REACT_APP_SENTRY_RELEASE'),\n sentryENVIRONMENT: getEnvVar('REACT_APP_SENTRY_ENVIRONMENT'),\n};\n\nexport const gtmConfig: GtmConfig = {\n gtmId: 'GTM-KQQKNSK',\n auth: 'YYNlLIG2o0VS3dIJxQuwUg',\n preview: 'env-2',\n};\n\n// External Links\nexport const helpResourceLink: Link = {\n url: 'https://www.earthsense.co.uk/zephyr-resources',\n target: '_blank',\n};\n\nexport const privacyPolicyLink: Link = {\n url: 'https://www.earthsense.co.uk/privacy-policy',\n target: '_blank',\n};\n\nexport const tutorialLink: Link = {\n url: 'https://www.earthsense.co.uk/product-resources',\n target: '_blank',\n};\n\nexport const webinarResourceLink: Link = {\n url: 'https://www.earthsense.co.uk/myair-training-webinar',\n target: '_blank',\n};\n\nexport const mappairLink: Link = {\n content: 'MappAir',\n url: 'https://www.earthsense.co.uk/mappair',\n target: '_blank',\n};\n\n// Copyright links and statements\n\nexport const naeiCRLink: Link = {\n content: 'Defra & BEIS',\n precedingContent: '©',\n url: 'https://naei.beis.gov.uk/',\n target: '_blank',\n};\n\nexport const osmCRLink: Link = {\n content: 'OpenStreetMap contributors',\n precedingContent: '©',\n url: 'https://www.openstreetmap.org/copyright',\n target: '_blank',\n};\n\nexport const maptilerCRLink: Link = {\n content: 'MapTiler|OpenMapTiles|OpenStreetMap contributors',\n precedingContent: '©',\n url: 'https://www.maptiler.com/copyright/',\n target: '_blank',\n};\n\nexport const publicCRLink: Link = {\n content: 'Open Government License',\n precedingContent: '',\n url:\n 'http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/',\n target: '_blank',\n};\n\nexport const mapboxCRLink: Link = {\n content: 'Mapbox',\n precedingContent: '©',\n url: 'https://www.mapbox.com/about/maps/',\n target: '_blank',\n};\n\nexport const mapboxImproveLink: Link = {\n content: 'Improve this map',\n precedingContent: '',\n url: 'https://www.mapbox.com/map-feedback/',\n target: '_blank',\n};\n\nexport const maxarCRLink: Link = {\n content: 'Maxar',\n precedingContent: '©',\n url: 'https://www.maxar.com/',\n target: '_blank',\n};\n\n// Route Paths\nexport const routePaths: Paths = {\n alerts: '/alerts',\n analytics: '/analytics',\n app: '/',\n data: '/data',\n login: '/login',\n today: '/today',\n fleetManagement: '/fleetManagement',\n smsAlerts: '/smsAlerts',\n dataAnalytics: '/analysis',\n};\n\n// jbdsfjsdfjjk\n// API Paths\nexport const APIPaths: Paths = {\n api: 'api/',\n airAlertsApi: '',\n pathMappair: '',\n createZephyrAlias: 'v2/createZephyrAlias',\n csvDataDownload: 'v2/dataForViewBySlotsAveraged',\n cachedDataForViewBySlotsAveraged: 'cachedDataForViewBySlotsAveraged',\n dataForViewBySlotsAveraged: 'dataForViewBySlotsAveraged',\n GetMeasurementData: 'v2/measurementdata',\n deleteAirAlert: 'DeleteAlert',\n downloadCalibrationCertificate: 'calibrationCertificatesForZephyr',\n GetMeasurmentData: '',\n GetMeasurmentDataDSE: 'v2/measurementdata',\n getAirAlertTypes: 'GetAlertTypes',\n getAirAlerts: 'GetAlerts',\n updateAlertParameters: 'UpdateAlertParameter',\n updateAlertTargets: 'UpdateTarget',\n addAlertTarget: 'AddTarget',\n removeAlertTarget: 'RemoveTargetFromAlert',\n getAurns: 'v2/GetUserAurns',\n getAveragingPeriods: 'getAveragingPeriods',\n getCartridge: 'v2/GetZephyrCartridgeData',\n getDataConfig: 'getDataConfig',\n getDisplayConfig: 'getDisplayConfig',\n getToken: 'getToken',\n getLatestMetDataForUser: 'getLatestMetDataForUser',\n getLocationGoogle: 'https://maps.googleapis.com/maps/api/geocode/json',\n getLocationSuggestionsGoogle:\n 'https://maps.googleapis.com/maps/api/place/autocomplete/json',\n getMappairAPIVersion: 'getMappairAPIVersion',\n getMappairOverlays: 'getMappairOverlays',\n getMappairStylegroups: 'getMappairStylegroups',\n getMappairOverlaySAValues: 'sa',\n getMappairOverlayValue: 'getMappairOverlayValue',\n getMappairOverlayImage: 'getMappairOverlayImage',\n getMappairOverlayImageTiled: 'getMappairOverlayImageTiled',\n getMappairAQMAImage: 'getAQMAImage',\n getMappairSchoolsImage: 'getShpImage',\n getMappairPoint: 'point',\n getMyAirVersions: 'getMyAirVersions',\n getPolarPlots: 'getPolarPlots',\n getPublicAdvice: 'getPublicAdvice',\n getTimePeriods: 'getTimePeriods',\n getTodayData: 'point',\n getUserAgreements: 'getUserAgreements',\n getUserConfig: 'getUserConfig',\n getUserFeedbackQuestions: 'getUserFeedbackQuestions',\n getUserInfo: 'getUserInfo',\n getZephyrs: 'v2/GetZephyrs',\n kmlDataDownload: 'dataForViewSpecies',\n mapboxSatellite:\n 'https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/tiles/256/{z}/{x}/{y}',\n postAirAlerts: 'AddAlerts',\n postContactFormEmail: 'postContactFormEmail',\n postUserFeedback: 'postUserFeedback',\n setUserTour: 'setUserTour',\n signUserAgreement: 'signUserAgreement',\n updateAirAlert: 'UpdateAlert',\n updateUserLatestVersionViewed: 'updateUserLatestVersionViewed',\n zephyrsForUserWithHistory: 'zephyrsForUserWithHistory',\n zephyrsForUserWithHistoryAndAQ: 'zephyrsForUserWithHistoryAndAQ',\n maptiler: 'https://api.maptiler.com/maps/'\n};\n\n// Versions\n// Set to empty string, when wanting to take value from latest v in DB (production)\n// export const appVersion: string = '4.3.1';\n\n// Keys\nexport const keys: Keys = {\n GoogleMaps: 'AIzaSyBEUtG_mjM0jd4CxG1MBcoT0l9LYcFqoKM',\n Mapbox:\n 'pk.eyJ1IjoiZWFydGhzZW5zZWFxIiwiYSI6ImNrZ3FicWNsNDAzcGkycXF3ZG43YXU4amoifQ.j_pJt2C_k-8yS-T0o8xzxg',\n};\n\n// Cardinal Directions\nexport const cardinalDirectionsPlus: CardinalDirections[] = [\n {\n minDegrees: 0,\n dirName: 'N',\n },\n {\n minDegrees: 22.5,\n dirName: 'NNE',\n },\n {\n minDegrees: 45,\n dirName: 'NE',\n },\n {\n minDegrees: 67.5,\n dirName: 'ENE',\n },\n {\n minDegrees: 90,\n dirName: 'E',\n },\n {\n minDegrees: 112.5,\n dirName: 'ESE',\n },\n {\n minDegrees: 135,\n dirName: 'SE',\n },\n {\n minDegrees: 157.5,\n dirName: 'SSE',\n },\n {\n minDegrees: 180,\n dirName: 'S',\n },\n {\n minDegrees: 202.5,\n dirName: 'SSW',\n },\n {\n minDegrees: 225,\n dirName: 'SW',\n },\n {\n minDegrees: 247.5,\n dirName: 'WSW',\n },\n {\n minDegrees: 270,\n dirName: 'W',\n },\n {\n minDegrees: 292.5,\n dirName: 'WNW',\n },\n {\n minDegrees: 315.5,\n dirName: 'NW',\n },\n {\n minDegrees: 337.5,\n dirName: 'NNW',\n },\n];\n\n// Analytics\nexport const gtmEventIdentifiers: GtmEventIdentifiers = {\n login: 'login',\n logout: 'logout',\n versionModal: 'versionModal',\n privacyPolicyLink: 'privacyPolicyLink',\n resourcesLink: 'resourcesLink',\n tutorialModal: 'tutorialModal',\n tour: 'tour',\n contactModal: 'contactModal',\n mappairToggle: 'mappairToggle',\n aurnToggle: 'aurnToggle',\n satelliteToggle: 'satelliteToggle',\n osmToggle: 'osmToggle',\n aqmaToggle: 'aqmaToggle',\n schoolsToggle: 'schoolsToggle',\n smokeControlZonesToggle: 'smokeControlZonesToggle',\n zephyrToggle: 'zephyrToggle',\n vZephyrToggle: 'vZephyrToggle',\n allToggle: 'allToggle',\n unitSelect: 'unitSelect',\n unitCertificateDownload: 'unitCertificateDownload',\n pollutantSelect: 'pollutantSelect',\n sourceSelect: 'sourceSelect',\n colourscaleSelect: 'colourscaleSelect',\n aqiIndexSwitch: 'aqiIndexSwitch',\n aqlIndexSwitch: 'aqlIndexSwitch',\n aqmIndexSwitch: 'aqmIndexSwitch',\n timeseriesExpansion: 'timeseriesExpansion',\n mapClick: 'mapClick',\n timePeriodSwitch: 'timePeriodSwitch',\n timeAveragingSwitch: 'timeAveragingSwitch',\n dataDownload: 'dataDownload',\n speciesGroupSwitch: 'speciesGroupSwitch',\n unitOverplot: 'unitOverplot',\n annualAveragesToggle: 'annualAveragesToggle',\n};\n\nexport const gtmEvents: GtmEvents = {\n login: {\n category: 'App',\n action: 'Login Attempt',\n label: 'Log In',\n value: 0,\n },\n logout: {\n category: 'App',\n action: 'Log Out',\n label: 'Log Out',\n value: 0,\n },\n versionModal: {\n category: 'App',\n action: 'Version History View',\n label: 'Version History Modal View',\n value: 0,\n },\n privacyPolicyLink: {\n category: 'App',\n action: 'Privacy Link Click',\n label: 'Privacy Link Click',\n value: 0,\n },\n resourcesLink: {\n category: 'Help',\n action: 'Resources Link Click',\n label: 'Resources Link Click',\n value: 0,\n },\n tutorialModal: {\n category: 'Help',\n action: 'Tutorial View',\n label: 'Tutorial Modal View',\n value: 0,\n },\n tour: {\n category: 'Help',\n action: 'Tour Launch',\n label: 'Tour Launch',\n value: 0,\n },\n contactModal: {\n category: 'Help',\n action: 'Contact Form View',\n label: 'Contact Form View',\n value: 0,\n },\n mappairToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'MappAir Overlay',\n value: 0,\n },\n aurnToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'AURN Overlay',\n value: 0,\n },\n satelliteToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'Satellite Overlay',\n value: 0,\n },\n osmToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'OpenStreetMaps Overlay',\n value: 0,\n },\n aqmaToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'AQMA Overlay',\n value: 0,\n },\n schoolsToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'Schools Overlay',\n value: 0,\n },\n smokeControlZonesToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'UK Smoke Control Zones Overlay',\n value: 0,\n },\n zephyrToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'Zephyr Overlay',\n value: 0,\n },\n vZephyrToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'Virtual Zephyr Overlay',\n value: 0,\n },\n allToggle: {\n category: 'Product Inventory',\n action: 'Overlays Checkbox',\n label: 'Show All Overlays',\n value: 0,\n },\n unitSelect: {\n category: 'Product Inventory',\n action: 'Unit Click',\n label: 'Unit Select',\n value: 0,\n },\n unitCertificateDownload: {\n category: 'Product Inventory',\n action: 'Unit Click',\n label: 'Calibration Certificate Download',\n value: 0,\n },\n pollutantSelect: {\n category: 'Map',\n action: 'Pollutant Dropdown Select',\n label: 'Pollutant Switch',\n value: 0,\n },\n sourceSelect: {\n category: 'Map',\n action: 'Source Dropdown Select',\n label: 'Source Layer Switch',\n value: 0,\n },\n colourscaleSelect: {\n category: 'Map',\n action: 'Colourscale Dropdown Select',\n label: 'Colourscale Switch',\n value: 0,\n },\n aqiIndexSwitch: {\n category: 'Map',\n action: 'AQI Index Switch',\n label: 'AQI Index Switch',\n value: 0,\n },\n aqlIndexSwitch: {\n category: 'Map',\n action: 'AQL Index Switch',\n label: 'AQL Index Switch',\n value: 0,\n },\n aqmIndexSwitch: {\n category: 'Map',\n action: 'AQM Index Switch',\n label: 'AQM Index Switch',\n value: 0,\n },\n timeseriesExpansion: {\n category: 'Map',\n action: 'Timeseries Expansion',\n label: 'Timeseries Expansion View',\n value: 0,\n },\n mapClick: {\n category: 'Map',\n action: 'Map Point Click',\n label: 'MappAir Point Click',\n value: 0,\n },\n timePeriodSwitch: {\n category: 'Data',\n action: 'Time Period Checkbox',\n label: 'Time Period Switch',\n value: 0,\n },\n timeAveragingSwitch: {\n category: 'Data',\n action: 'Time Averaging Checkbox',\n label: 'Time Averaging Switch',\n value: 0,\n },\n dataDownload: {\n category: 'Data',\n action: 'Download Select',\n label: 'Data Download',\n value: 0,\n },\n speciesGroupSwitch: {\n category: 'Data',\n action: 'Species Group Switch',\n label: 'Species Group Switch',\n value: 0,\n },\n unitOverplot: {\n category: 'Data',\n action: 'Unit Overplot',\n label: 'Unit Overplot',\n value: 0,\n },\n};\n\n// Cookies\nexport const permissionCookieSettings: CookieSettings = {\n name: 'Opt-out',\n expiry: 60,\n};\n\n// MappAir\nexport const speciesMap: SpeciesMap = {\n combinedpollen: 'Pollen',\n pm2p5: 'PM₂.₅',\n relhum: 'Humidity',\n temperature: 'Temp',\n};\n\n// Periods\nexport const days: Days = {\n 1: 'Mon',\n 2: 'Tue',\n 3: 'Wed',\n 4: 'Thu',\n 5: 'Fri',\n 6: 'Sat',\n 7: 'Sun',\n};\n\nexport const periods: Periods = {\n 24: { quantity: 1, unit: 'days' },\n 48: { quantity: 2, unit: 'days' },\n 72: { quantity: 3, unit: 'days' },\n week: { quantity: 7, unit: 'days' },\n month: { quantity: 1, unit: 'months' },\n default: { quantity: 1, unit: 'days' },\n};\n\n// Alerts\nexport const alertPeriodSelections: AlertPeriodMap[] = [\n {\n rawPeriod: '15',\n formattedPeriod: '15 min',\n },\n {\n rawPeriod: '30',\n formattedPeriod: '30 min',\n },\n {\n rawPeriod: '60',\n formattedPeriod: '60 min',\n },\n {\n rawPeriod: '480',\n formattedPeriod: '8hr',\n },\n {\n rawPeriod: '1440',\n formattedPeriod: '24hr',\n },\n];\n\nexport const alertRepeatSelections: AlertRepeatMap[] = [\n {\n rawRepeat: 'never',\n formattedRepeat: 'Never',\n },\n {\n rawRepeat: 'hourly',\n formattedRepeat: 'Hourly',\n },\n {\n rawRepeat: 'daily',\n formattedRepeat: 'Daily',\n },\n];\n\nexport const alertThresholdSelections: AlertThresholdMap[] = [\n {\n rawThreshold: 'greater',\n formattedThreshold: 'greater',\n postVerb: 'than',\n },\n // {\n // rawThreshold: 'greaterOrEqual',\n // formattedThreshold: 'greater or equal',\n // postVerb: 'to',\n // },\n // {\n // rawThreshold: 'lessOrEqual',\n // formattedThreshold: 'less or equal',\n // postVerb: 'to',\n // },\n {\n rawThreshold: 'less',\n formattedThreshold: 'less',\n postVerb: 'than',\n },\n];\n\nexport const todaySubspeciesMap: TodaySubspeciesMap[] = [\n {\n label: 'Temp',\n speciesRef: 'Temp',\n },\n {\n label: 'Humidity',\n speciesRef: 'Humidity',\n },\n {\n label: 'Pollen',\n speciesRef: 'Pollen',\n },\n];\n\nexport const unitSelections: UnitSelections = {\n unitSelectionOptions: [\n { type: 'specific', HTMLLabel: 'Specific Zephyr(s)' },\n { type: 'non-specific', HTMLLabel: 'All Zephyrs in my inventory' },\n ],\n};\n\nexport const unitStatus: UnitStatus[] = [\n {\n type: 'battery',\n HTMLLabel: 'Battery',\n },\n {\n type: 'charge',\n HTMLLabel: 'Charge',\n },\n {\n type: 'solar',\n HTMLLabel: 'Solar panel',\n },\n {\n type: 'power',\n HTMLLabel: 'Power',\n },\n {\n type: 'data',\n HTMLLabel: 'Data',\n },\n];\n\n// CRS\nexport const crs: string = 'EPSG%3A3857';\n\n// Border Dashes\nexport const borderDashConfigs: number[][] = [\n [],\n [2, 1],\n [4, 2],\n [15, 3, 3, 3, 3],\n [8, 5],\n];\n\nexport const borderDashConfigs2: BorderDashStrings[] = [\n 'solid',\n 'shortDot',\n 'shortDash',\n 'longDashDot',\n 'longDash',\n];\n\n// Default Location\nexport const defaultLocation: LocationCoordinates = [\n -1.127121667,\n 52.619883333,\n];\n\n// Quotes\nexport const zephyrMeasurementOptions: ContactFormSelection[] = [\n {\n value: 'NO, NO2, O3',\n label: 'NO, NO₂, O₃',\n },\n {\n value: 'PM1, PM2.5, PM10',\n label: 'PM₁, PM₂.₅, PM₁₀',\n },\n {\n value: 'SO2, H2S, CO',\n label: 'SO₂, H₂S, CO',\n },\n {\n value: 'CO2',\n label: 'CO₂',\n },\n {\n value: 'TVOCs',\n label: 'TVOCs',\n },\n {\n value: 'Met Station',\n label: 'Met Station',\n },\n];\n\nexport const mappairMeasurementOptions: ContactFormSelection[] = [\n {\n value: 'NO2',\n label: 'NO₂',\n },\n {\n value: 'PM2.5',\n label: 'PM₂.₅',\n },\n];\n\nexport const mappairCFDOptions: ContactFormSelection[] = [\n {\n value: 'yes',\n label: 'Yes',\n },\n {\n value: 'no',\n label: 'No',\n },\n];\n\nexport const mappairResolutionOptions: ContactFormSelection[] = [\n {\n value: '10m',\n label: '10m',\n },\n {\n value: '5m',\n label: '5m',\n },\n {\n value: '2m',\n label: '2m',\n },\n];\n\nexport const mappairOutputOptions: ContactFormSelection[] = [\n {\n value: 'Export',\n label: 'Export',\n },\n {\n value: 'API',\n label: 'API',\n },\n];\n\n// Default Contact Form\nexport const defaultContactForm: ContactForm = {\n formData: {\n firstName: '',\n lastName: '',\n email: '',\n company: '',\n enquiry: '',\n details: '',\n comments: '',\n },\n userMessage: '',\n};\n\nexport const detailsContactFormLookup: ContactFormSelectionLookup = {\n Sales: [\n {\n value: 'Expand Zephyr Network',\n label: 'Expand Zephyr Network',\n },\n {\n value: 'Upgrade MappAir Model',\n label: 'Upgrade MappAir Model',\n },\n {\n value: 'Other',\n label: 'Other',\n },\n ],\n Feedback: [\n {\n value: 'MyAir',\n label: 'MyAir',\n },\n {\n value: 'Zephyr',\n label: 'Zephyr',\n },\n {\n value: 'MappAir',\n label: 'MappAir',\n },\n {\n value: 'Other',\n label: 'Other',\n },\n ],\n Support: [\n {\n value: 'MyAir',\n label: 'MyAir',\n },\n {\n value: 'Zephyr',\n label: 'Zephyr',\n },\n {\n value: 'MappAir',\n label: 'MappAir',\n },\n {\n value: 'Other',\n label: 'Other',\n },\n ],\n};\n\nexport const defaultAreaConfig: AreaConfig = {\n areaSize: null,\n centreHdms: null,\n latLngGeometry: null,\n};\n\nexport const defaultMappairForm: ContactFormMappair = {\n formData: {\n area: defaultAreaConfig,\n email: '',\n comments: '',\n company: '',\n firstName: '',\n lastName: '',\n pollutants: [],\n },\n userMessage: '',\n};\n\nexport const defaultMappairOptions: ShowAQMALayer = {\n opacity: 1,\n overlay: '',\n mappairPointModeOn: false,\n showAQMALayer: false,\n showSchoolsLayer: false,\n showSmokeControlZones: false,\n showOverlayLayer: false,\n showSatelliteLayer: false,\n showOSM: false,\n showAALayer: false,\n annualAverage: null,\n};\n\nexport const defaultVZephyrsConfig: VZephyrsConfig = {\n active: 0,\n max: 0,\n new30Days: 0,\n new30DaysMax: 0,\n};\n\nexport const defaultZephyrForm: ContactFormZephyr = {\n formData: {\n firstName: '',\n lastName: '',\n email: '',\n company: '',\n zephyrs: 1,\n powerOption: '',\n species: [],\n },\n userMessage: '',\n};\n\nexport const enquiryContactForm: ContactFormSelection[] = [\n { value: 'Sales', label: 'Sales' },\n { value: 'Feedback', label: 'Feedback' },\n { value: 'Support', label: 'Support' },\n];\n\nexport const zephyrPowerOptions: ContactFormSelection[] = [\n { value: 'Mains', label: 'Mains' },\n { value: 'Solar', label: 'Solar' },\n];\n\n// AQM\nexport const defaultSpecies: Species = {\n colour: [{ r: '0', g: '0', b: '0' }],\n conversionDivider: false,\n conversionMultiplier: false,\n dataIdentifier: 'AQI',\n dataIdentifiers: ['AQI'],\n HTMLExposedUnitLabel: 'Max:10',\n HTMLLabel: 'AQI',\n HTMLUnitLabel: 'AQI',\n HTMLShortUnitLabel: '',\n label: 'AQI',\n maximum: false,\n minimum: 0,\n secondaryAxis: false,\n};\n\nexport const aqlOtherTab: AQOptionsMap = {\n label: 'Regional Met',\n value: 'other',\n};\n\nexport const annualAvgTab: AnnualAvgTabMap[] = [\n {\n label: 'Chart',\n value: 'chart',\n },\n {\n label: 'List',\n value: 'list',\n },\n];\n\nexport const annualAvgtext: ComponentContent = {\n tableRowforYr: 'Year',\n tabContentTitleForChartPrefix: 'Last ',\n tabContentTitleForChartPostfix: ' year(s)',\n tabContentTitleForListPrefix: 'Area - Last ',\n tabContentTitleForListPostfix: ' year(s)',\n nodata: 'No data found for selected coordinates...',\n AAChartHeader: 'Virtual Zephyr',\n AADownloadData: 'Download data',\n AASeeMore: 'See more data',\n annualAvgNotAuthorised:\n \"Annual averages functionality isn't turned on for this user. Please contact support@earthsense.co.uk if this isn't as expected.\",\n annualAvgAccordionTitle: 'Annual Averages',\n};\n\nexport const numberYrsHistory = 5;\n\nexport enum NoOfYearsTypes {\n one = '1',\n two = '2',\n three = '3',\n four = '4',\n five = '5',\n six = '6',\n seven = '7',\n eight = '8',\n nine = '9',\n}\n\nexport const YearOptions: Array<{ label: string; value: string }> = [\n {\n label: '2 Years (min)',\n value: NoOfYearsTypes.two,\n },\n {\n label: '3 Years',\n value: NoOfYearsTypes.three,\n },\n {\n label: '4 Years',\n value: NoOfYearsTypes.four,\n },\n {\n label: '5 Years',\n value: NoOfYearsTypes.five,\n },\n {\n label: '6 Years',\n value: NoOfYearsTypes.six,\n },\n {\n label: '7 Years',\n value: NoOfYearsTypes.seven,\n },\n {\n label: '8 Years',\n value: NoOfYearsTypes.eight,\n },\n {\n label: '9 Years (max)',\n value: NoOfYearsTypes.nine,\n },\n];\n\nexport const aqmOptions: AQOptionsMap[] = [\n {\n label: 'Temporal',\n value: 'aqmTemp',\n },\n {\n label: 'Sources',\n value: 'aqmSA',\n },\n {\n label: 'Wind',\n value: 'aqmWind',\n },\n];\n\n// Alert Options\nexport const alertThresholdOptions: ObjectMap = {\n greater: '>',\n greaterOrEqual: '>=',\n lessOrEqual: '<=',\n less: '<',\n};\n\n// URL Options\nexport const urlQueryStringOptions: UrlQueryStringOptions[] = [\n 'ctv',\n 'diagnostics',\n];\n\n// Data Options\nexport const customTimePeriod: TimePeriod = {\n labelHTML: 'Custom',\n timeOption: 'custom',\n};\n\nexport const defaultModelUnit: string = 'score';\n\nexport const gaseousSlots: Slot[] = [\n { label: 'slotA', HTMLLabel: 'Slot A' },\n { label: 'slotB', HTMLLabel: 'Slot B' },\n];\n\nexport const slots: Slot[] = [\n { label: 'slotA', HTMLLabel: 'Slot A' },\n { label: 'slotB', HTMLLabel: 'Slot B' },\n //{ label: 'head', HTMLLabel: 'Met Station' },\n];\n\nexport const defaultSelectedFilters: MappAirSelectedFilter[] = [\n {\n name: 'zephyr',\n showAllLabels: false,\n showSelectedLabel: true,\n },\n {\n name: 'virtual',\n showAllLabels: false,\n showSelectedLabel: true,\n },\n {\n name: 'aurn',\n showAllLabels: false,\n showSelectedLabel: true,\n },\n];\n\nexport const placeholderAxis: PlaceholderAxis = {\n labelFontSize: 0,\n lineThickness: 0,\n margin: 0,\n tickLength: 0,\n title: '',\n};\n\nexport const placeholderAxisConfig: SecondaryAxisConfig[] = [\n { idx: 0, maximum: null, minimum: 0, title: '' },\n { idx: 1, maximum: null, minimum: 0, title: '' },\n];\n\n// Component Content\nexport const AirAlertsConfiguratorContent: ComponentContent = {\n AACValidationFailure: 'Please fix the issues below to submit this alert',\n AACDataSourceHeader: 'Select Data Source',\n AACDataSourceSelection: 'Choose Zephyrs',\n AACValidationFailureSources: 'Please select at least one Zephyr',\n AACAlertDataHeader: 'Alert Data',\n AACGasColumn: 'Select Gas',\n AACThresholdColumn: 'Threshold',\n AACAlertColumn: 'Alert Level',\n AACPeriodColumn: 'Period',\n AACRepeatColumn: 'Repeat',\n AACUnitStatusSelection: 'Send status alerts for:',\n AACValidationFailureData: 'Please add at least one gas or status to track',\n AACOutputHeader: 'Output',\n AACOutputName: 'Name',\n AACValidationFailureName: 'Please add a name for this alert',\n AACOuputEmail: 'Email address',\n AACOutputPhoneNumber: 'Phone Numbers',\n AACValidationFailureEmail: 'Please enter valid email address',\n AACValidationFailurePhoneNumber:\n 'Number must be in format +(country code)(phone number)',\n AACValidationCommunicationType: 'Please add one method of communication',\n};\n\nexport const AirAlertsOverviewContent: ComponentContent = {\n AAOHeader: 'Alerts (Max 5 per standard user)',\n AAOCreateNew: 'Create new alert',\n AAONameColumn: 'Name',\n AAOAlertDataColumn: 'Alert Data',\n AAOStatusColumn: 'Status',\n AAOActionscolumn: 'Actions',\n AAONoAlerts: \"You haven't created any alerts yet\",\n};\n\nexport const AirQuality101Content: ComponentContent = {\n AQ101header: 'Air Quality Info',\n AQ101CloseModal: 'x',\n};\n\nexport const AppIntroModelContent: ComponentContent = {\n AppIntroButton: 'OK',\n};\n\nexport const AQColourscaleContent: ComponentContent = {\n AQCButton: 'Colourscale',\n AQCButtonPublic: 'Map Colourscale',\n};\n\nexport const AQLatestDataContent: ComponentContent = {\n AQAurnLabel: 'AURN',\n AQLatestDataButton: 'Measurement Data',\n AQZephyrLabel: 'Zephyr',\n AQVZephyrLabel: 'Virtual Zephyr',\n};\n\nexport const AQOtherContent: ComponentContent = {\n AQDisclaimerGFS:\n 'Please note, the publicly available GFS data being displayed here is un-ratified and is not the property of EarthSense. EarthSense take no responsibility for the accuracy and currency of these data.',\n AQDisclaimerMet:\n 'Please note, the publicly available Met Office data being displayed here is un-ratified and is not the property of EarthSense. EarthSense take no responsibility for the accuracy and currency of these data.',\n AQGFSDesc: 'NOAA Global Forecast',\n AQMetDesc: 'Met Office Station',\n AQPeriodGFS: 'last 3 hours',\n AQPeriodMet: 'last hour',\n};\n\nexport const AQModelDataContent: ComponentContent = {\n AQModelDataButton: 'MappAir Model Data',\n AQModelDataLoading: 'Loading model data',\n AQModelDataClickPrompt:\n 'Click a point on the map to get additional model data.',\n AQModelNoData: 'No additional model data is available at this location.',\n};\n\nexport const AQSAContent: ComponentContent = {\n AQTotal: 'Total',\n AQUnits: '2018 tonnes/annum',\n};\n\nexport const AQTemporalContent: ComponentContent = {\n AQChartHeader: 'Historic & Forecast',\n AQDownloadData: 'Download data',\n};\n\nexport const AQUnitContent: ComponentContent = {\n AQSummaryHeader: 'score: ',\n AQPeriod: 'Last hourly averages',\n AQNoData: 'No data available.',\n AQNoOwnership: 'No data available.',\n};\n\nexport const AQWindContent: ComponentContent = {\n AQChartHeaderOne: 'Frequency & Speed',\n AQChartSubheader: 'Last 30 days',\n};\n\nexport const AsideContent: ComponentContent = {\n AsideHeader: 'Product Inventory',\n PublicAsideHeader: 'Air Quality Data Sources',\n};\n\nexport const AsidePromptContent: ComponentContent = {\n AsideButtonContent: 'Get Quote',\n AsidePromptExplainer: 'Expand Zephyr Network',\n AsideAnalyticsPrompt: 'Back To Configuration Menu',\n AsideAnalyticsButton: 'Back',\n};\n\nexport const AsideOverlaysContent: ComponentContent = {\n OverlaysAQMA: 'Air Quality Management Areas',\n OverlaysSchools: 'Schools',\n OverlaysUKSmokeControlZones: 'Smoke Control Zones',\n OverlaysAURN: 'AURN',\n OverlaysHeader: 'Overlays',\n OverlaysDefault: 'Default',\n OverlaysMappair: 'Real-Time & Forecast',\n OverlaysRemoveAll: 'Remove all',\n OverlaysSatellite: 'Satellite',\n OverlaysOSM: 'OSM',\n OverlaysShowAll: 'Show all',\n OverlaysZephyrs: 'Zephyr',\n MapDetails: 'Map details',\n MapTypes: 'Map type',\n OverlaysAA: 'Annual Averages',\n ModelLayers: 'Air Quality Map Layers',\n ChooseYear: 'Choose a year:',\n BaseMaps: 'Base Maps',\n};\n\nexport const AsideOverlaysContentPublic: ComponentContent = {\n OverlaysMappair: 'Pollution Model (MappAir)',\n OverlaysAQMA: 'Air Quality Management Areas',\n OverlaysHeader: 'Overlays',\n OverlaysDefault: 'Default',\n OverlaysSchools: 'Schools',\n OverlaysUKSmokeControlZones: 'Smoke Control Zones',\n OverlaysAA: 'Annual Averages',\n};\n\nexport const AsideOverlaysSpecies: AsideOverlaysSpeciesMap = {\n speciesMap: [\n { type: 'zephyr', label: 'Zephyr' },\n { type: 'virtual', label: 'Virtual Zephyrs' },\n { type: 'aurn', label: 'AURN' },\n ],\n};\nexport const FleetManagementAvailableSpecies: FleetManagementSpeciesMap = {\n speciesMap: [\n { type: 'zephyr', label: 'Zephyr', checked: false, zType: 0 },\n { type: 'virtual', label: 'Virtual Zephyrs', checked: false, zType: 100 },\n { type: 'aurn', label: 'AURN', checked: false, zType: 1 },\n ],\n};\n\nexport const AsideOverlaysPublicSpecies: AsideOverlaysSpeciesMap = {\n speciesMap: [\n { type: 'zephyr', label: 'Local Network (Zephyrs)' },\n { type: 'virtual', label: 'Virtual Zephyrs' },\n { type: 'aurn', label: 'National Network (AURN)' },\n ],\n};\n\nexport const AsideUnitContent: ComponentContent = {\n AsideUnitBatteryCharging: 'Charging',\n AsideUnitBatteryChargingDesc: 'Zephyr battery is charging.',\n AsideUnitBatteryDischarging: 'Draining',\n AsideUnitBatteryDischargingDesc:\n 'Zephyr running on internal battery power, battery well-charged.',\n AsideUnitBatteryExplainer: 'Running on internal battery power',\n AsideUnitBatteryFlat: 'Flat',\n AsideUnitBatteryFlatDesc:\n 'Zephyr running on internal battery power, battery with little or no charge.',\n AsideUnitNoBattery: 'No charge',\n AsideUnitBatteryPower: 'Power',\n AsideUnitCartridgeBlank: 'Blank',\n AsideUnitCartridgeExplainerStandard:\n 'Sensors include: NO2, NO, O3, PM1, PM2.5, PM10, Pressure, Temperature & Relative Humidity',\n AsideUnitCartridgeExplainerEnhanced:\n 'Sensors include: NO2, NO, O3, PM1, PM2.5, PM10, CO, SO2, H2S, Pressure, Temperature & Relative Humidity',\n AsideUnitCartridgeExplainerEnhancedPlus:\n 'Sensors include: NO2, NO, O3, PM1, PM2.5, PM10, CO, SO2, H2S, CO2, Pressure, Temperature & Relative Humidity',\n AsideUnitCartridgeExplainderEnhancedPP:\n 'Sensors include: NO2, NO, O3, PM1, PM2.5, PM10, CO, SO2, H2S, CO2, TVOCs, Pressure, Temperature & Relative Humidity',\n AsideUnitConnectionGSM: 'GSM',\n AsideUnitConnectionNetwork: 'Network',\n AsideUnitLocationHeader: 'Location:',\n AsideUnitUpdatedHeader: 'Updated:',\n AsideUnitIdHeader: 'ID:',\n AsideUnitStatusHeader: 'Status',\n AsideUnitFrequencyHeader: 'Frequency',\n AsideUnitCertificateDownloadButton: 'Download calibration certificates',\n AsideUnitConnectionExplainer:\n 'Data communications available, data received in the last 2 hours.',\n AsideUnitConnectionWarning:\n 'Temporary communications gap: No data uploaded in the last 2 hours, but data received in the last 24 hours. Measurements stored locally.',\n AsideUnitConnectionAlert: 'No data uploaded in the last 24 hours.',\n AsideUnitEditName: 'Edit Name',\n AsideUnitEditNetwork: 'Edit network credentials',\n AsideUnitDeleteName: 'Delete',\n VZUnitDeleteName: 'Remove',\n AsideUnitOwnership: 'Ownership:',\n AsideUnitSamplingData: 'Data',\n AsideUnitSamplingExplainerHigh: 'Sample Rate: 10 Seconds',\n AsideUnitSamplingExplainerMed: 'Sample Rate: 60 Seconds',\n AsideUnitSamplingExplainerLow: 'Sample Rating: 60 Seconds',\n AsideUnitSamplingOff: 'No Sample',\n AsideUnitSamplingOn: 'Sampling',\n AsideUnitStatus: 'Status:',\n AsideUnitStatusRetired: 'Retired:',\n AsideUnitType: 'Type:',\n AsideUnitTypeAURN: 'AURN',\n AsideUnitTypeVirtualZephyr: 'Virtual Zephyr',\n AsideUnitTypeZephyr: 'Zephyr',\n};\n\nexport const WiFiCredentialsContent: ComponentContent = {\n EditWifiCredentials: 'Edit WiFi Credentials',\n EditWifiCloseModal: 'Cancel',\n EditWifiSaveButton: 'Upload Wifi Settings',\n StaticWiFiCredentials: 'Static Wifi Credentials (SSID)',\n DynamicWiFiCredentials: 'Dynamic Wifi Credentials',\n NetworkNameLabel: 'Network Name',\n NetworkPasswordLabel: 'Network Password',\n NetworkCredentialsError:\n 'There was an issue retrieving the existing credentials',\n};\n\nexport const AsideUnitMetrics: AsideUnitMetricsMap = {\n metricsStatusMap: [\n { item: 'extVoltage', header: 'Input voltage', unit: ' V' },\n { item: 'batteryVoltage', header: 'Battery voltage', unit: ' V' },\n { item: 'batteryCharge', header: 'Battery charge', unit: '%' },\n ],\n metricsFrequencyMap: [\n { item: 'measurementCount', header: 'Readings in last upload' },\n ],\n};\n\nexport const PermissionCookieBannerContent: ComponentContent = {\n PCBExplainer:\n 'MyAir uses third-party analytics cookies to inform the release of improved future versions.',\n PCBExplainerPreSpan: 'We use',\n PCBExplainerSpan: 'optional',\n PCBExplainPostSpan:\n 'third-party analytics cookies to understand how we can build better products.',\n PCBButtonAccept: 'Accept',\n PCBButtonReject: 'Reject',\n PCBButtonOk: 'OK',\n};\n\nexport const DataAQSummaryContent: ComponentContent = {\n DataAQSummaryHeader: 'Last hour',\n};\n\nexport const DataChartDisclaimerContent: ComponentContent = {\n DataChartDisclaimer:\n 'Please note, the publicly available DEFRA AURN data being displayed here is un-ratified and is not the property of EarthSense. EarthSense take no responsibility for the accuracy and currency of these data.',\n};\n\nexport const DataChartHeaderContent: ComponentContent = {\n DataChartHeaderTzPrefix: 'Showing data in timezone:',\n DataChartHeaderTzUTC: 'UTC',\n DataChartHeaderLoading: 'Loading data..',\n DataChartHeaderNull: 'Data not currently available',\n DataChartSomeTimedOut: 'Some requests timed out.',\n DataChartAllTimedOut:\n 'All unit requests with available data timed out - try requesting data in smaller chunks',\n ZoomResetButton: 'Reset zoom',\n vZephyrLoadingMsg:\n 'Your virtual zephyr is initializing and data will be available soon. (1-2hours)',\n DataChart_240: 'Data not available for selected time period',\n DataChart_400: 'No start date set or wrong zephyr number',\n DataChart_401: 'No credentials provided',\n DataChart_403: 'Your account does not have permission to request data',\n DataChart_404: 'The requested resource does not exist',\n DataChart_429: 'Server overloaded, please try again later',\n DataChart_500: 'Something went wrong on the server',\n};\n\nexport const DataCustomDateContent: ComponentContent = {\n DataCustomDatePickerMessage: 'Select any period up to 31 days',\n DataCustomeDateSubmit: 'Submit',\n DataCustomDateSave: 'Save',\n};\n\nexport const dataDiagnosticsModalContent: ComponentContent = {\n dataDiagnosticsHeader: 'Data narrative',\n dataDiagnosticsIndex: 'Data request item:',\n dataDiagnosticsModalContentClose: 'x',\n};\n\nexport const DataDownloadButtonContent: ComponentContent = {\n DataDownloadButtonText: 'Download data',\n DataDiagnosticsButtonText: 'Diagnostics',\n};\n\nexport const DataTimeAveragingOptionsContent: ComponentContent = {\n DataTAHeader: 'Time Averaging',\n DataTASubheader: 'Average data by:',\n};\n\nexport const DataTimePeriodOptionsContent: ComponentContent = {\n DataPOHeader: 'Time Period',\n DataPOSubheader: 'Show me data for:',\n};\n\nexport const DataUnitsContent: ComponentContent = {\n DataUnitsHeaderMultiUnits: 'Units:',\n DataUnitsRemoveUnit: 'x',\n DataUnitsSingleUnit: 'Unit:',\n DataUnitsTooltipContent:\n 'Drag and drop units from the Product Inventory tab to add them to the chart.',\n DataUnitsTooltipMakerContent: 'i',\n};\n\nexport const DownloadModalContent: ComponentContent = {\n downloadHeader: 'Download data',\n downloadSubheader: 'Get data for',\n downloadCoordinates: 'coordinates',\n downloadButton: 'Download',\n closeModal: 'x',\n};\n\nexport const FeedbackQuestionsContent: ComponentContent = {\n feedbackQuestionsHeader: 'Share your feedback',\n feedbackScoreLabelsLow: 'Not very likely',\n feedbackScoreLabelsHigh: 'Very likely',\n feedbackCommentsPlaceholder: 'Write your feedback here',\n feedbackButtonNext: 'Next',\n feedbackEmailHeader: 'Email address',\n feedbackOptional: 'Optional',\n feedbackConfirmationHeader: 'Thank you for your feedback',\n feedbackConfirmationText:\n 'Your feedback is highly valued and is used to improve our service.',\n feedbackButtonConfirmation: 'Done',\n};\n\nexport const FeedbackTagContent: ComponentContent = {\n feedbackTagButton: 'Feedback',\n};\n\nexport const HeaderContactModalContent: ComponentContent = {\n confirmationHeader: 'Thank you for your enquiry',\n confirmationText: \"You'll be contacted in response to your query shortly.\",\n contactHeader: 'Contact Us',\n contactSubheader: 'Please detail your request below',\n contactFirstName: 'First Name*',\n contactLastName: 'Last Name*',\n contactEmail: 'Email Address*',\n contactCompany: 'Company*',\n contactDetails: 'Details',\n contactEnquiry: 'Reason for enquiry*',\n contactComments: 'Comments',\n contactButton: 'Send',\n closeModal: 'x',\n messageSuccess: 'Thank you. Your message has been sent.',\n messageProblem: 'There was a problem sending your message.',\n messageMissingFields: 'Please complete all fields.',\n requiredFields: '*Required fields',\n};\n\nexport const AddZephyrModalContent: ComponentContent = {\n popoverCTAText: 'Add Virtual Zephyr',\n headerText: 'Add Virtual Zephyr',\n zephyrNameLabel: 'Name',\n secondaryCta: 'Cancel',\n primaryCta1: 'Add',\n totalPrefix: 'This will be ',\n totalPostfix: 'virtual zephyrs',\n maxReachPrefix: 'You have reached your limit of ',\n limitReachedSubtitle:\n 'You can disable some of your live virtual zephyrs or Contact us to add more.',\n contactUsCtaTxt: 'Contact us',\n};\n\nexport const RemoveZephyrModalContent: ComponentContent = {\n RemoveZephyrHeaderText: 'Delete Virtual Zephyr',\n confirmationTextPrefix: \"Are you sure you would like to delete '\",\n confirmationTextPostFix: \"' virtual zephyr?\",\n warningText: 'Warning: This cannot be undone',\n RemoveZephyrSecondaryCta: 'Cancel',\n primaryCta: 'Delete',\n};\n\nexport const HeaderContent: ComponentContent = {\n AirQuality101Title: 'Info',\n AnalyticsHeader: 'Analytics',\n AlertsHeader: 'Alerts',\n FleetManagementHeader: 'Device Manager',\n DataAnalyticsHeader: 'Analysis',\n ContactLinkTitle: 'Contact',\n CouncilProjectTitle: 'About',\n DataHeader: 'Data',\n DefaultHeaderTitle: 'Earthsense',\n HelpHeader: 'Help',\n LoadingAURNHeader: 'Getting latest third-party data',\n LoadingZephyrHeader: 'Getting latest air quality data',\n LocationHeader: 'Location',\n LocationHeaderPublic: 'Map',\n LogoutLinkTitle: 'Logout',\n MappairUpgradePrompt: 'Upgrade MappAir Model',\n MissingOverlayEnd: 'MappAir',\n MissingOverlayIntro: 'Contact us ',\n MissingOverlayMid: 'for access to ',\n PrivacyLinkTitle: 'Privacy Policy',\n ResourcesLinkTitle: 'Resources',\n SourceEmissionTooltipIntro: 'View source emission layers for',\n SourceEmissionTooltipEnd: '.',\n SourceEmissionTooltipMissingSpecies: 'N/A',\n SourceEmissionTooltipSelectedIntro: 'Showing',\n SourceEmissionTooltipSelectedEnd: 'source emission layer.',\n SourcesSubHeader: 'Sources:',\n SpeciesSubHeader: 'Pollutant:',\n TodayTitle: 'Today',\n TooltipMarkerContent: '?',\n TourLinkTitle: 'Tour',\n TutorialLinkTitle: 'Tutorial',\n VersionLinkTitle: 'Version',\n FeedbackPrompt: 'Beta Feedback',\n};\n\nexport const headerTutorialModalContent: ComponentContent = {\n closeModal: 'x',\n};\n\nexport const headerVersionHistoryModalContent: ComponentContent = {\n versionHistoryHeader: 'Version history',\n currentVersionDescriptor: 'Current:',\n closeModal: 'x',\n};\n\nexport const loginContent: ComponentContent = {\n incorrectPassword: 'Invalid credentials provided, please try again',\n loginHeader: 'Log in',\n welcomeMessage:\n 'Welcome, please log in below with your username and password',\n loginButton: 'Log In',\n heroHeader: 'Welcome to MyAir',\n heroSubheader:\n 'View, manage, and download your MappAir and Zephyr air quality data.',\n usernameField: 'Username',\n passwordField: 'Password',\n};\n\nexport const mappAirFilterToggles: MappAirFilterToggles[] = [\n {\n value: 'showAllLabels',\n label: 'Show all',\n },\n {\n value: 'showSelectedLabel',\n label: 'Selected unit',\n },\n];\n\nexport const MappairQuoteModalContent: ComponentContent = {\n aoi: 'Area of Interest',\n area: 'Size of area',\n centre: ' Centre: ',\n comments: 'Comments',\n MappairQuoteConfirmationHeader: 'Thank you for your enquiry',\n MappairQuoteConfirmationText:\n \"You'll be contacted with information on upgrading MappAir shortly.\",\n MappairQuoteContactHeader: 'Upgrade MappAir Model',\n MappairQuoteContactFirstName: 'First Name*',\n MappairQuoteContactLastName: 'Last Name*',\n MappairQuoteContactEmail: 'Email Address*',\n MappairQuoteContactCompany: 'Company*',\n MappairQuoteContactButton: 'Get Quote',\n MappairQuoteCloseModal: 'x',\n mappairLinkPost: ' models have a 10m resolution.',\n mappairLinkPre: 'Enhanced ',\n mappairOptionalCommentsPlaceholder:\n 'Please use this space to tell us about any specific requirements you have, along with details of your intended use case.',\n messageSuccess: 'Thank you. Your quote has been sent.',\n mappairMessageProblem: 'There was a problem sending your quote.',\n mapairMessageMissingFields: 'Please complete all required fields.',\n output: 'Output',\n polygon: 'Bespoke polygon -',\n pollutants: 'Pollutants',\n mapairRequiredFields: '*Required fields',\n resolution: 'Resolution',\n selectArea: 'Select Area',\n};\n\nexport const LocationSearchContent: ComponentContent = {\n LocationSearchPlaceholder: 'Search location',\n InvalidSearchPlaceholder: 'Location outside map',\n};\n\nexport const TodayContent: ComponentContent = {\n AdviceHeader: 'Advice',\n BehaviourHeader: 'Your Part',\n CloseModal: 'x',\n ForecastHeader: 'Air Quality Forecast',\n GeneralAdviceHeader: 'General Population:',\n HealthAdviceHeader: 'Health Advice',\n HumidityHeader: 'Humidity',\n PollenHeader: 'Pollen',\n PollutionHeader: 'Pollution Level',\n SensitiveAdviceHeader: 'Sensitive Advice:',\n TempHeader: 'Temp',\n WoodBurningHeader: 'Wood Burning & Open Fires',\n Low: 'Low',\n High: 'High',\n};\n\nexport const VersionLatestModalContent: ComponentContent = {\n updateTitle: 'Updates on MyAir®',\n CloseModal: 'x',\n};\n\nexport const ZephyrQuoteModalContent: ComponentContent = {\n ZephyrConfirmationHeader: 'Thank you for your Zephyr enquiry',\n ZephyrConfirmationText:\n \"You'll be contacted with information on your quote shortly.\",\n ZephyrContactHeader: 'Expand Zephyr Network',\n ZephyrContactFirstName: 'First Name*',\n ZephyrContactLastName: 'Last Name*',\n ZephyrContactEmail: 'Email Address*',\n ZephyrContactCompany: 'Company*',\n ZephyrContactButton: 'Get Quote',\n closeModal: 'x',\n measurements: 'Sensors*',\n messageSuccess: 'Thank you. Your Quote has been sent.',\n ZephyrContactMessageProblem: 'There was a problem sending your quote.',\n ZephyrContactMessageMissingFields: 'Please complete all required fields.',\n powerOptions: 'Power Options*',\n ZephyrQuoteRequiredFields: '*Required fields',\n zephyrs: 'Number of Zephyrs*',\n};\n\nexport const translationOptions: translationOption[] = [\n {\n value: 'en-GB',\n label: 'English',\n icon: 'UK',\n },\n {\n value: 'es',\n label: 'Spanish',\n icon: 'ES',\n },\n];\n\nexport const MapAirPointValueHistoryInitialState = {\n saValue: null,\n valueHistory: null,\n status: 'idle',\n};\n\nexport const AnnualAvgDataInitialState = {\n list: null,\n raw: null,\n chart: { labels: [], datasets: [] },\n};\n\nexport const dimensions: tileDimensions = {\n width: 256,\n height: 256,\n};\n\n// export const csvHeaders = ['Site ID', 'Site Name', 'Lat, Lon', 'Transmission Interval', 'Sampling Interval', 'Cartridge ID', 'Battery Percentage', 'Last Connection (UTC)'];\nexport const csvHeaders = [\n 'Site ID',\n 'Site Name',\n 'Lat, Lon',\n 'Sampling Interval',\n 'Cartridge ID',\n 'Battery Percentage',\n 'Last Connection (UTC)',\n];\n\nexport const annualAveragesArr: YearObj[] = [\n {\n value: '2015',\n label: 2015,\n },\n {\n value: '2016',\n label: 2016,\n },\n {\n value: '2017',\n label: 2017,\n },\n {\n value: '2018',\n label: 2018,\n },\n {\n value: '2019',\n label: 2019,\n },\n {\n value: '2020',\n label: 2020,\n },\n {\n value: '2021',\n label: 2021,\n },\n];\n\nexport const timeSliderOptions: TimeSliderOption[] = [\n {\n id: 0,\n d:\n 'M2.62 10.002a7.508 7.508 0 017.717-7.5c3.909.108 7.175 3.375 7.284 7.283a7.508 7.508 0 01-7.5 7.717 7.381 7.381 0 01-4.6-1.592c-.392-.3-.417-.891-.067-1.241.3-.3.767-.325 1.1-.067a5.746 5.746 0 003.567 1.233 5.837 5.837 0 005.833-5.916c-.042-3.1-2.65-5.709-5.75-5.75a5.832 5.832 0 00-5.917 5.833H5.78c.375 0 .558.45.3.708l-2.325 2.334a.413.413 0 01-.592 0L.837 10.71a.413.413 0 01.292-.708H2.62zm6.667-2.708a.63.63 0 01.625-.625c.342 0 .625.283.625.616v2.833l2.4 1.425a.631.631 0 01.217.859.631.631 0 01-.858.216l-2.6-1.541a.843.843 0 01-.409-.717V7.294z',\n text: 'History',\n },\n {\n id: 1,\n d:\n 'M12.917 9.583c0 1.667-2.083 2.917-2.083 4.167H9.167c0-1.25-2.083-2.5-2.083-4.167A2.92 2.92 0 0110 6.667a2.92 2.92 0 012.917 2.916zm-2.083 5H9.167v1.25h1.667v-1.25zm7.5-4.583c0-2.3-.934-4.383-2.442-5.892l-.883.884A7.068 7.068 0 0117.084 10c0 1.95-.792 3.725-2.075 5.008l.883.884A8.307 8.307 0 0018.334 10zM2.917 10c0-1.95.792-3.725 2.075-5.008l-.883-.884A8.307 8.307 0 001.667 10c0 2.3.933 4.383 2.442 5.892l.883-.884A7.067 7.067 0 012.917 10zm11.667 0a4.594 4.594 0 01-1.342 3.242l.883.883A5.813 5.813 0 0015.834 10c0-1.608-.65-3.067-1.709-4.125l-.883.883A4.594 4.594 0 0114.584 10zm-8.709 4.125l.884-.883A4.559 4.559 0 015.417 10c0-1.267.517-2.408 1.342-3.242l-.884-.883A5.813 5.813 0 004.167 10c0 1.608.65 3.067 1.708 4.125z',\n text: 'Now',\n },\n {\n id: 2,\n d:\n 'M15.833 3.334H15V2.5a.836.836 0 00-.833-.833.836.836 0 00-.834.833v.834H6.667V2.5a.836.836 0 00-.834-.833A.836.836 0 005 2.5v.834h-.833A1.66 1.66 0 002.508 5L2.5 16.667c0 .917.742 1.667 1.667 1.667h11.666c.917 0 1.667-.75 1.667-1.667V5c0-.916-.75-1.666-1.667-1.666zm0 12.5a.836.836 0 01-.833.833H5a.836.836 0 01-.833-.833V7.5h11.666v8.334zm-8.333-5V9.167H5.833v1.667H7.5zm1.667-1.667h1.666v1.667H9.167V9.167zm5 0H12.5v1.667h1.667V9.167z',\n text: 'Forecast',\n },\n];\n\n// export const timeSliderOptions: TimeSliderOption[] = [\n// {\n// id: 0,\n// d: \"M12.917 9.583c0 1.667-2.083 2.917-2.083 4.167H9.167c0-1.25-2.083-2.5-2.083-4.167A2.92 2.92 0 0110 6.667a2.92 2.92 0 012.917 2.916zm-2.083 5H9.167v1.25h1.667v-1.25zm7.5-4.583c0-2.3-.934-4.383-2.442-5.892l-.883.884A7.068 7.068 0 0117.084 10c0 1.95-.792 3.725-2.075 5.008l.883.884A8.307 8.307 0 0018.334 10zM2.917 10c0-1.95.792-3.725 2.075-5.008l-.883-.884A8.307 8.307 0 001.667 10c0 2.3.933 4.383 2.442 5.892l.883-.884A7.067 7.067 0 012.917 10zm11.667 0a4.594 4.594 0 01-1.342 3.242l.883.883A5.813 5.813 0 0015.834 10c0-1.608-.65-3.067-1.709-4.125l-.883.883A4.594 4.594 0 0114.584 10zm-8.709 4.125l.884-.883A4.559 4.559 0 015.417 10c0-1.267.517-2.408 1.342-3.242l-.884-.883A5.813 5.813 0 004.167 10c0 1.608.65 3.067 1.708 4.125z\",\n// text: 'Now'\n// },\n// {\n// id: 1,\n// d: \"M15.833 3.334H15V2.5a.836.836 0 00-.833-.833.836.836 0 00-.834.833v.834H6.667V2.5a.836.836 0 00-.834-.833A.836.836 0 005 2.5v.834h-.833A1.66 1.66 0 002.508 5L2.5 16.667c0 .917.742 1.667 1.667 1.667h11.666c.917 0 1.667-.75 1.667-1.667V5c0-.916-.75-1.666-1.667-1.666zm0 12.5a.836.836 0 01-.833.833H5a.836.836 0 01-.833-.833V7.5h11.666v8.334zm-8.333-5V9.167H5.833v1.667H7.5zm1.667-1.667h1.666v1.667H9.167V9.167zm5 0H12.5v1.667h1.667V9.167z\",\n// text: '7 days back'\n// },\n// {\n// id: 2,\n// d: \"M3.799 14.213c-.143.055-.29.111-.421.165a1.376 1.376 0 00-.782 1.773l.503 1.287c.14.357.424.642.786.789.362.147.771.142 1.13-.013.971-.42 1.868-.922 2.69-1.495.671.6 1.534.81 2.127.897a9.296 9.296 0 001.55.077h.018l.097-.003h.122a5.795 5.795 0 004.164-2.023c1.113-1.29 1.744-3.108 1.716-5.37-.035-2.824-1.129-5.945-3.449-8.22a1.45 1.45 0 00-1.014-.41 1.45 1.45 0 00-1.014.41c-.715.701-1.914 1.307-3.453 2.063l-.077.037c-1.244.61-2.685 1.317-3.805 2.215C3.51 7.337 2.5 8.642 2.5 10.45c0 1.284.445 2.688 1.299 3.763zm3.447 1.106c.182-.136.36-.276.533-.42l.05-.041a13.803 13.803 0 002.284-2.45c1.547-2.125 2.49-4.665 2.805-7.332l.016-.143a17.24 17.24 0 00.102-1.782 40.15 40.15 0 01-.054 2.015c-.174 3.247-.752 5.352-1.488 6.847-.717 1.458-1.583 2.338-2.368 3.136-.17.172-.335.34-.495.51a1.499 1.499 0 00.221.176c.333.223.759.342 1.176.405.529.08 1.045.07 1.342.064.08-.002.143-.003.187-.002 2.208-.093 4.412-1.858 4.511-5.596.003-.129.004-.26.003-.393A10.692 10.692 0 0014.39 4.72a9.57 9.57 0 00-1.354-1.664 4.823 4.823 0 01-.1.095c-.377.35-.835.672-1.342.978l-.024.014c-.718.432-1.533.832-2.357 1.236C6.614 6.654 3.93 7.972 3.93 10.45c0 1.183.466 2.382 1.241 3.185a3.198 3.198 0 001.012.723c.09.04.182.076.276.107-.38.313-.966.58-1.52.802-.186.075-.37.145-.54.21-.172.065-.33.126-.466.181l.503 1.287.045-.02a14.241 14.241 0 001.236-.612 13.7 13.7 0 001.505-.975l.025-.019z\",\n// text: '90 days back'\n// },\n// {\n// id: 3,\n// d: \"M2.62 10.002a7.508 7.508 0 017.717-7.5c3.909.108 7.175 3.375 7.284 7.283a7.508 7.508 0 01-7.5 7.717 7.381 7.381 0 01-4.6-1.592c-.392-.3-.417-.891-.067-1.241.3-.3.767-.325 1.1-.067a5.746 5.746 0 003.567 1.233 5.837 5.837 0 005.833-5.916c-.042-3.1-2.65-5.709-5.75-5.75a5.832 5.832 0 00-5.917 5.833H5.78c.375 0 .558.45.3.708l-2.325 2.334a.413.413 0 01-.592 0L.837 10.71a.413.413 0 01.292-.708H2.62zm6.667-2.708a.63.63 0 01.625-.625c.342 0 .625.283.625.616v2.833l2.4 1.425a.631.631 0 01.217.859.631.631 0 01-.858.216l-2.6-1.541a.843.843 0 01-.409-.717V7.294z\",\n// text: 'History'\n// }\n// ];\n\n/* List of all country and phone codes */\n\nexport const countryCodes: {\n name: string;\n dial_code: string;\n code: string;\n}[] = [\n {\n name: 'Afghanistan',\n dial_code: '+93',\n code: 'AF',\n },\n {\n name: 'Aland Islands',\n dial_code: '+358',\n code: 'AX',\n },\n {\n name: 'Albania',\n dial_code: '+355',\n code: 'AL',\n },\n {\n name: 'Algeria',\n dial_code: '+213',\n code: 'DZ',\n },\n {\n name: 'AmericanSamoa',\n dial_code: '+1684',\n code: 'AS',\n },\n {\n name: 'Andorra',\n dial_code: '+376',\n code: 'AD',\n },\n {\n name: 'Angola',\n dial_code: '+244',\n code: 'AO',\n },\n {\n name: 'Anguilla',\n dial_code: '+1264',\n code: 'AI',\n },\n {\n name: 'Antarctica',\n dial_code: '+672',\n code: 'AQ',\n },\n {\n name: 'Antigua and Barbuda',\n dial_code: '+1268',\n code: 'AG',\n },\n {\n name: 'Argentina',\n dial_code: '+54',\n code: 'AR',\n },\n {\n name: 'Armenia',\n dial_code: '+374',\n code: 'AM',\n },\n {\n name: 'Aruba',\n dial_code: '+297',\n code: 'AW',\n },\n {\n name: 'Australia',\n dial_code: '+61',\n code: 'AU',\n },\n {\n name: 'Austria',\n dial_code: '+43',\n code: 'AT',\n },\n {\n name: 'Azerbaijan',\n dial_code: '+994',\n code: 'AZ',\n },\n {\n name: 'Bahamas',\n dial_code: '+1242',\n code: 'BS',\n },\n {\n name: 'Bahrain',\n dial_code: '+973',\n code: 'BH',\n },\n {\n name: 'Bangladesh',\n dial_code: '+880',\n code: 'BD',\n },\n {\n name: 'Barbados',\n dial_code: '+1246',\n code: 'BB',\n },\n {\n name: 'Belarus',\n dial_code: '+375',\n code: 'BY',\n },\n {\n name: 'Belgium',\n dial_code: '+32',\n code: 'BE',\n },\n {\n name: 'Belize',\n dial_code: '+501',\n code: 'BZ',\n },\n {\n name: 'Benin',\n dial_code: '+229',\n code: 'BJ',\n },\n {\n name: 'Bermuda',\n dial_code: '+1441',\n code: 'BM',\n },\n {\n name: 'Bhutan',\n dial_code: '+975',\n code: 'BT',\n },\n {\n name: 'Bolivia, Plurinational State of',\n dial_code: '+591',\n code: 'BO',\n },\n {\n name: 'Bosnia and Herzegovina',\n dial_code: '+387',\n code: 'BA',\n },\n {\n name: 'Botswana',\n dial_code: '+267',\n code: 'BW',\n },\n {\n name: 'Brazil',\n dial_code: '+55',\n code: 'BR',\n },\n {\n name: 'British Indian Ocean Territory',\n dial_code: '+246',\n code: 'IO',\n },\n {\n name: 'Brunei Darussalam',\n dial_code: '+673',\n code: 'BN',\n },\n {\n name: 'Bulgaria',\n dial_code: '+359',\n code: 'BG',\n },\n {\n name: 'Burkina Faso',\n dial_code: '+226',\n code: 'BF',\n },\n {\n name: 'Burundi',\n dial_code: '+257',\n code: 'BI',\n },\n {\n name: 'Cambodia',\n dial_code: '+855',\n code: 'KH',\n },\n {\n name: 'Cameroon',\n dial_code: '+237',\n code: 'CM',\n },\n {\n name: 'Canada',\n dial_code: '+1',\n code: 'CA',\n },\n {\n name: 'Cape Verde',\n dial_code: '+238',\n code: 'CV',\n },\n {\n name: 'Cayman Islands',\n dial_code: '+ 345',\n code: 'KY',\n },\n {\n name: 'Central African Republic',\n dial_code: '+236',\n code: 'CF',\n },\n {\n name: 'Chad',\n dial_code: '+235',\n code: 'TD',\n },\n {\n name: 'Chile',\n dial_code: '+56',\n code: 'CL',\n },\n {\n name: 'China',\n dial_code: '+86',\n code: 'CN',\n },\n {\n name: 'Christmas Island',\n dial_code: '+61',\n code: 'CX',\n },\n {\n name: 'Cocos (Keeling) Islands',\n dial_code: '+61',\n code: 'CC',\n },\n {\n name: 'Colombia',\n dial_code: '+57',\n code: 'CO',\n },\n {\n name: 'Comoros',\n dial_code: '+269',\n code: 'KM',\n },\n {\n name: 'Congo',\n dial_code: '+242',\n code: 'CG',\n },\n {\n name: 'Congo, The Democratic Republic of the Congo',\n dial_code: '+243',\n code: 'CD',\n },\n {\n name: 'Cook Islands',\n dial_code: '+682',\n code: 'CK',\n },\n {\n name: 'Costa Rica',\n dial_code: '+506',\n code: 'CR',\n },\n {\n name: \"Cote d'Ivoire\",\n dial_code: '+225',\n code: 'CI',\n },\n {\n name: 'Croatia',\n dial_code: '+385',\n code: 'HR',\n },\n {\n name: 'Cuba',\n dial_code: '+53',\n code: 'CU',\n },\n {\n name: 'Cyprus',\n dial_code: '+357',\n code: 'CY',\n },\n {\n name: 'Czech Republic',\n dial_code: '+420',\n code: 'CZ',\n },\n {\n name: 'Denmark',\n dial_code: '+45',\n code: 'DK',\n },\n {\n name: 'Djibouti',\n dial_code: '+253',\n code: 'DJ',\n },\n {\n name: 'Dominica',\n dial_code: '+1767',\n code: 'DM',\n },\n {\n name: 'Dominican Republic',\n dial_code: '+1849',\n code: 'DO',\n },\n {\n name: 'Ecuador',\n dial_code: '+593',\n code: 'EC',\n },\n {\n name: 'Egypt',\n dial_code: '+20',\n code: 'EG',\n },\n {\n name: 'El Salvador',\n dial_code: '+503',\n code: 'SV',\n },\n {\n name: 'Equatorial Guinea',\n dial_code: '+240',\n code: 'GQ',\n },\n {\n name: 'Eritrea',\n dial_code: '+291',\n code: 'ER',\n },\n {\n name: 'Estonia',\n dial_code: '+372',\n code: 'EE',\n },\n {\n name: 'Ethiopia',\n dial_code: '+251',\n code: 'ET',\n },\n {\n name: 'Falkland Islands (Malvinas)',\n dial_code: '+500',\n code: 'FK',\n },\n {\n name: 'Faroe Islands',\n dial_code: '+298',\n code: 'FO',\n },\n {\n name: 'Fiji',\n dial_code: '+679',\n code: 'FJ',\n },\n {\n name: 'Finland',\n dial_code: '+358',\n code: 'FI',\n },\n {\n name: 'France',\n dial_code: '+33',\n code: 'FR',\n },\n {\n name: 'French Guiana',\n dial_code: '+594',\n code: 'GF',\n },\n {\n name: 'French Polynesia',\n dial_code: '+689',\n code: 'PF',\n },\n {\n name: 'Gabon',\n dial_code: '+241',\n code: 'GA',\n },\n {\n name: 'Gambia',\n dial_code: '+220',\n code: 'GM',\n },\n {\n name: 'Georgia',\n dial_code: '+995',\n code: 'GE',\n },\n {\n name: 'Germany',\n dial_code: '+49',\n code: 'DE',\n },\n {\n name: 'Ghana',\n dial_code: '+233',\n code: 'GH',\n },\n {\n name: 'Gibraltar',\n dial_code: '+350',\n code: 'GI',\n },\n {\n name: 'Greece',\n dial_code: '+30',\n code: 'GR',\n },\n {\n name: 'Greenland',\n dial_code: '+299',\n code: 'GL',\n },\n {\n name: 'Grenada',\n dial_code: '+1473',\n code: 'GD',\n },\n {\n name: 'Guadeloupe',\n dial_code: '+590',\n code: 'GP',\n },\n {\n name: 'Guam',\n dial_code: '+1671',\n code: 'GU',\n },\n {\n name: 'Guatemala',\n dial_code: '+502',\n code: 'GT',\n },\n {\n name: 'Guernsey',\n dial_code: '+44',\n code: 'GG',\n },\n {\n name: 'Guinea',\n dial_code: '+224',\n code: 'GN',\n },\n {\n name: 'Guinea-Bissau',\n dial_code: '+245',\n code: 'GW',\n },\n {\n name: 'Guyana',\n dial_code: '+595',\n code: 'GY',\n },\n {\n name: 'Haiti',\n dial_code: '+509',\n code: 'HT',\n },\n {\n name: 'Holy See (Vatican City State)',\n dial_code: '+379',\n code: 'VA',\n },\n {\n name: 'Honduras',\n dial_code: '+504',\n code: 'HN',\n },\n {\n name: 'Hong Kong',\n dial_code: '+852',\n code: 'HK',\n },\n {\n name: 'Hungary',\n dial_code: '+36',\n code: 'HU',\n },\n {\n name: 'Iceland',\n dial_code: '+354',\n code: 'IS',\n },\n {\n name: 'India',\n dial_code: '+91',\n code: 'IN',\n },\n {\n name: 'Indonesia',\n dial_code: '+62',\n code: 'ID',\n },\n {\n name: 'Iran, Islamic Republic of Persian Gulf',\n dial_code: '+98',\n code: 'IR',\n },\n {\n name: 'Iraq',\n dial_code: '+964',\n code: 'IQ',\n },\n {\n name: 'Ireland',\n dial_code: '+353',\n code: 'IE',\n },\n {\n name: 'Isle of Man',\n dial_code: '+44',\n code: 'IM',\n },\n {\n name: 'Israel',\n dial_code: '+972',\n code: 'IL',\n },\n {\n name: 'Italy',\n dial_code: '+39',\n code: 'IT',\n },\n {\n name: 'Jamaica',\n dial_code: '+1876',\n code: 'JM',\n },\n {\n name: 'Japan',\n dial_code: '+81',\n code: 'JP',\n },\n {\n name: 'Jersey',\n dial_code: '+44',\n code: 'JE',\n },\n {\n name: 'Jordan',\n dial_code: '+962',\n code: 'JO',\n },\n {\n name: 'Kazakhstan',\n dial_code: '+77',\n code: 'KZ',\n },\n {\n name: 'Kenya',\n dial_code: '+254',\n code: 'KE',\n },\n {\n name: 'Kiribati',\n dial_code: '+686',\n code: 'KI',\n },\n {\n name: \"Korea, Democratic People's Republic of Korea\",\n dial_code: '+850',\n code: 'KP',\n },\n {\n name: 'Korea, Republic of South Korea',\n dial_code: '+82',\n code: 'KR',\n },\n {\n name: 'Kuwait',\n dial_code: '+965',\n code: 'KW',\n },\n {\n name: 'Kyrgyzstan',\n dial_code: '+996',\n code: 'KG',\n },\n {\n name: 'Laos',\n dial_code: '+856',\n code: 'LA',\n },\n {\n name: 'Latvia',\n dial_code: '+371',\n code: 'LV',\n },\n {\n name: 'Lebanon',\n dial_code: '+961',\n code: 'LB',\n },\n {\n name: 'Lesotho',\n dial_code: '+266',\n code: 'LS',\n },\n {\n name: 'Liberia',\n dial_code: '+231',\n code: 'LR',\n },\n {\n name: 'Libyan Arab Jamahiriya',\n dial_code: '+218',\n code: 'LY',\n },\n {\n name: 'Liechtenstein',\n dial_code: '+423',\n code: 'LI',\n },\n {\n name: 'Lithuania',\n dial_code: '+370',\n code: 'LT',\n },\n {\n name: 'Luxembourg',\n dial_code: '+352',\n code: 'LU',\n },\n {\n name: 'Macao',\n dial_code: '+853',\n code: 'MO',\n },\n {\n name: 'Macedonia',\n dial_code: '+389',\n code: 'MK',\n },\n {\n name: 'Madagascar',\n dial_code: '+261',\n code: 'MG',\n },\n {\n name: 'Malawi',\n dial_code: '+265',\n code: 'MW',\n },\n {\n name: 'Malaysia',\n dial_code: '+60',\n code: 'MY',\n },\n {\n name: 'Maldives',\n dial_code: '+960',\n code: 'MV',\n },\n {\n name: 'Mali',\n dial_code: '+223',\n code: 'ML',\n },\n {\n name: 'Malta',\n dial_code: '+356',\n code: 'MT',\n },\n {\n name: 'Marshall Islands',\n dial_code: '+692',\n code: 'MH',\n },\n {\n name: 'Martinique',\n dial_code: '+596',\n code: 'MQ',\n },\n {\n name: 'Mauritania',\n dial_code: '+222',\n code: 'MR',\n },\n {\n name: 'Mauritius',\n dial_code: '+230',\n code: 'MU',\n },\n {\n name: 'Mayotte',\n dial_code: '+262',\n code: 'YT',\n },\n {\n name: 'Mexico',\n dial_code: '+52',\n code: 'MX',\n },\n {\n name: 'Micronesia, Federated States of Micronesia',\n dial_code: '+691',\n code: 'FM',\n },\n {\n name: 'Moldova',\n dial_code: '+373',\n code: 'MD',\n },\n {\n name: 'Monaco',\n dial_code: '+377',\n code: 'MC',\n },\n {\n name: 'Mongolia',\n dial_code: '+976',\n code: 'MN',\n },\n {\n name: 'Montenegro',\n dial_code: '+382',\n code: 'ME',\n },\n {\n name: 'Montserrat',\n dial_code: '+1664',\n code: 'MS',\n },\n {\n name: 'Morocco',\n dial_code: '+212',\n code: 'MA',\n },\n {\n name: 'Mozambique',\n dial_code: '+258',\n code: 'MZ',\n },\n {\n name: 'Myanmar',\n dial_code: '+95',\n code: 'MM',\n },\n {\n name: 'Namibia',\n dial_code: '+264',\n code: 'NA',\n },\n {\n name: 'Nauru',\n dial_code: '+674',\n code: 'NR',\n },\n {\n name: 'Nepal',\n dial_code: '+977',\n code: 'NP',\n },\n {\n name: 'Netherlands',\n dial_code: '+31',\n code: 'NL',\n },\n {\n name: 'Netherlands Antilles',\n dial_code: '+599',\n code: 'AN',\n },\n {\n name: 'New Caledonia',\n dial_code: '+687',\n code: 'NC',\n },\n {\n name: 'New Zealand',\n dial_code: '+64',\n code: 'NZ',\n },\n {\n name: 'Nicaragua',\n dial_code: '+505',\n code: 'NI',\n },\n {\n name: 'Niger',\n dial_code: '+227',\n code: 'NE',\n },\n {\n name: 'Nigeria',\n dial_code: '+234',\n code: 'NG',\n },\n {\n name: 'Niue',\n dial_code: '+683',\n code: 'NU',\n },\n {\n name: 'Norfolk Island',\n dial_code: '+672',\n code: 'NF',\n },\n {\n name: 'Northern Mariana Islands',\n dial_code: '+1670',\n code: 'MP',\n },\n {\n name: 'Norway',\n dial_code: '+47',\n code: 'NO',\n },\n {\n name: 'Oman',\n dial_code: '+968',\n code: 'OM',\n },\n {\n name: 'Pakistan',\n dial_code: '+92',\n code: 'PK',\n },\n {\n name: 'Palau',\n dial_code: '+680',\n code: 'PW',\n },\n {\n name: 'Palestinian Territory, Occupied',\n dial_code: '+970',\n code: 'PS',\n },\n {\n name: 'Panama',\n dial_code: '+507',\n code: 'PA',\n },\n {\n name: 'Papua New Guinea',\n dial_code: '+675',\n code: 'PG',\n },\n {\n name: 'Paraguay',\n dial_code: '+595',\n code: 'PY',\n },\n {\n name: 'Peru',\n dial_code: '+51',\n code: 'PE',\n },\n {\n name: 'Philippines',\n dial_code: '+63',\n code: 'PH',\n },\n {\n name: 'Pitcairn',\n dial_code: '+872',\n code: 'PN',\n },\n {\n name: 'Poland',\n dial_code: '+48',\n code: 'PL',\n },\n {\n name: 'Portugal',\n dial_code: '+351',\n code: 'PT',\n },\n {\n name: 'Puerto Rico',\n dial_code: '+1939',\n code: 'PR',\n },\n {\n name: 'Qatar',\n dial_code: '+974',\n code: 'QA',\n },\n {\n name: 'Romania',\n dial_code: '+40',\n code: 'RO',\n },\n {\n name: 'Russia',\n dial_code: '+7',\n code: 'RU',\n },\n {\n name: 'Rwanda',\n dial_code: '+250',\n code: 'RW',\n },\n {\n name: 'Reunion',\n dial_code: '+262',\n code: 'RE',\n },\n {\n name: 'Saint Barthelemy',\n dial_code: '+590',\n code: 'BL',\n },\n {\n name: 'Saint Helena, Ascension and Tristan Da Cunha',\n dial_code: '+290',\n code: 'SH',\n },\n {\n name: 'Saint Kitts and Nevis',\n dial_code: '+1869',\n code: 'KN',\n },\n {\n name: 'Saint Lucia',\n dial_code: '+1758',\n code: 'LC',\n },\n {\n name: 'Saint Martin',\n dial_code: '+590',\n code: 'MF',\n },\n {\n name: 'Saint Pierre and Miquelon',\n dial_code: '+508',\n code: 'PM',\n },\n {\n name: 'Saint Vincent and the Grenadines',\n dial_code: '+1784',\n code: 'VC',\n },\n {\n name: 'Samoa',\n dial_code: '+685',\n code: 'WS',\n },\n {\n name: 'San Marino',\n dial_code: '+378',\n code: 'SM',\n },\n {\n name: 'Sao Tome and Principe',\n dial_code: '+239',\n code: 'ST',\n },\n {\n name: 'Saudi Arabia',\n dial_code: '+966',\n code: 'SA',\n },\n {\n name: 'Senegal',\n dial_code: '+221',\n code: 'SN',\n },\n {\n name: 'Serbia',\n dial_code: '+381',\n code: 'RS',\n },\n {\n name: 'Seychelles',\n dial_code: '+248',\n code: 'SC',\n },\n {\n name: 'Sierra Leone',\n dial_code: '+232',\n code: 'SL',\n },\n {\n name: 'Singapore',\n dial_code: '+65',\n code: 'SG',\n },\n {\n name: 'Slovakia',\n dial_code: '+421',\n code: 'SK',\n },\n {\n name: 'Slovenia',\n dial_code: '+386',\n code: 'SI',\n },\n {\n name: 'Solomon Islands',\n dial_code: '+677',\n code: 'SB',\n },\n {\n name: 'Somalia',\n dial_code: '+252',\n code: 'SO',\n },\n {\n name: 'South Africa',\n dial_code: '+27',\n code: 'ZA',\n },\n {\n name: 'South Sudan',\n dial_code: '+211',\n code: 'SS',\n },\n {\n name: 'South Georgia and the South Sandwich Islands',\n dial_code: '+500',\n code: 'GS',\n },\n {\n name: 'Spain',\n dial_code: '+34',\n code: 'ES',\n },\n {\n name: 'Sri Lanka',\n dial_code: '+94',\n code: 'LK',\n },\n {\n name: 'Sudan',\n dial_code: '+249',\n code: 'SD',\n },\n {\n name: 'Suriname',\n dial_code: '+597',\n code: 'SR',\n },\n {\n name: 'Svalbard and Jan Mayen',\n dial_code: '+47',\n code: 'SJ',\n },\n {\n name: 'Swaziland',\n dial_code: '+268',\n code: 'SZ',\n },\n {\n name: 'Sweden',\n dial_code: '+46',\n code: 'SE',\n },\n {\n name: 'Switzerland',\n dial_code: '+41',\n code: 'CH',\n },\n {\n name: 'Syrian Arab Republic',\n dial_code: '+963',\n code: 'SY',\n },\n {\n name: 'Taiwan',\n dial_code: '+886',\n code: 'TW',\n },\n {\n name: 'Tajikistan',\n dial_code: '+992',\n code: 'TJ',\n },\n {\n name: 'Tanzania, United Republic of Tanzania',\n dial_code: '+255',\n code: 'TZ',\n },\n {\n name: 'Thailand',\n dial_code: '+66',\n code: 'TH',\n },\n {\n name: 'Timor-Leste',\n dial_code: '+670',\n code: 'TL',\n },\n {\n name: 'Togo',\n dial_code: '+228',\n code: 'TG',\n },\n {\n name: 'Tokelau',\n dial_code: '+690',\n code: 'TK',\n },\n {\n name: 'Tonga',\n dial_code: '+676',\n code: 'TO',\n },\n {\n name: 'Trinidad and Tobago',\n dial_code: '+1868',\n code: 'TT',\n },\n {\n name: 'Tunisia',\n dial_code: '+216',\n code: 'TN',\n },\n {\n name: 'Turkey',\n dial_code: '+90',\n code: 'TR',\n },\n {\n name: 'Turkmenistan',\n dial_code: '+993',\n code: 'TM',\n },\n {\n name: 'Turks and Caicos Islands',\n dial_code: '+1649',\n code: 'TC',\n },\n {\n name: 'Tuvalu',\n dial_code: '+688',\n code: 'TV',\n },\n {\n name: 'Uganda',\n dial_code: '+256',\n code: 'UG',\n },\n {\n name: 'Ukraine',\n dial_code: '+380',\n code: 'UA',\n },\n {\n name: 'United Arab Emirates',\n dial_code: '+971',\n code: 'AE',\n },\n {\n name: 'United Kingdom',\n dial_code: '+44',\n code: 'GB',\n },\n {\n name: 'United States',\n dial_code: '+1',\n code: 'US',\n },\n {\n name: 'Uruguay',\n dial_code: '+598',\n code: 'UY',\n },\n {\n name: 'Uzbekistan',\n dial_code: '+998',\n code: 'UZ',\n },\n {\n name: 'Vanuatu',\n dial_code: '+678',\n code: 'VU',\n },\n {\n name: 'Venezuela, Bolivarian Republic of Venezuela',\n dial_code: '+58',\n code: 'VE',\n },\n {\n name: 'Vietnam',\n dial_code: '+84',\n code: 'VN',\n },\n {\n name: 'Virgin Islands, British',\n dial_code: '+1284',\n code: 'VG',\n },\n {\n name: 'Virgin Islands, U.S.',\n dial_code: '+1340',\n code: 'VI',\n },\n {\n name: 'Wallis and Futuna',\n dial_code: '+681',\n code: 'WF',\n },\n {\n name: 'Yemen',\n dial_code: '+967',\n code: 'YE',\n },\n {\n name: 'Zambia',\n dial_code: '+260',\n code: 'ZM',\n },\n {\n name: 'Zimbabwe',\n dial_code: '+263',\n code: 'ZW',\n },\n ];\n\nexport const corsProxyURL = 'https://cors-anywhere.herokuapp.com/';\n\n/* Data Analytics Consts */\n\nexport const dataAnalysisSelections: DropdownSelection[] = [\n {\n label: 'Time Series Chart',\n value: 'time-series',\n },\n {\n label: 'Averaged Summary Statistics',\n value: 'averaged-summary-statistics',\n },\n {\n label: 'Calendar Plot',\n value: 'calendar-plot',\n },\n {\n label: 'Pollution Rose',\n value: 'pollution-rose',\n },\n {\n label: 'Polar Plot',\n value: 'polar-plot',\n },\n];\n\nexport const emptyDataAvailabilityChartOptions = {\n xAxis: {\n axisLine: {\n show: true,\n },\n },\n yAxis: {\n axisLine: {\n show: true,\n },\n },\n series: [],\n tooltip: {},\n dataZoom: [\n {\n type: 'slider',\n filterMode: 'none',\n },\n ],\n};\n\nexport const averagingChainsWithoutUnaveraged = {\n 6: 13,\n 4: 1,\n 5: 14,\n 10: 11,\n};\n\nexport const virtualZephyrsPollutants: Pollutant[] = [\n {\n dataIdentifier: 'O3',\n speciesExtentIdentifier: 'O3',\n HTMLLabel: 'O3',\n HTMLUnitLabel: 'O₃(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM1',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM1',\n HTMLUnitLabel: 'PM₁(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM10',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM10',\n HTMLUnitLabel: 'PM₁₀(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM25',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM2.5',\n HTMLUnitLabel: 'PM₂.₅(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'NO2',\n speciesExtentIdentifier: 'NO2',\n HTMLLabel: 'NO2',\n HTMLUnitLabel: 'NO₂(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'NO',\n speciesExtentIdentifier: 'NO',\n HTMLLabel: 'NO',\n HTMLUnitLabel: 'NO(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: true,\n },\n {\n dataIdentifier: 'SO2',\n speciesExtentIdentifier: 'SO2',\n HTMLLabel: 'SO2',\n HTMLUnitLabel: 'SO₂(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n];\n\nexport const averagingChains: AveragingChain = {\n '1 min average on the minute': 14,\n '5 minute averaging on the hour': 15,\n '15 min average on the quarter hours': 3,\n 'Hourly average on the hour': 1,\n '8 hour average at midnight and 8am and 4pm': 8,\n 'Daily average at midnight': 2,\n};\n\nexport const thresholdMenuItemStyles = {\n width: 135,\n padding: '3px 0 3px 40px',\n fontSize: 14,\n '& span:first-of-type': {\n color: '#4a5568',\n },\n};\n\nexport const thresholdMainItemStyles = {\n '& span:first-of-type': {\n color: '#4a5568',\n },\n};\n\nexport const staticPollutantsList = [\n {\n dataIdentifier: 'NO2',\n speciesExtentIdentifier: 'NO2',\n HTMLLabel: 'NO2',\n HTMLUnitLabel: 'NO₂(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'NO',\n speciesExtentIdentifier: 'NO',\n HTMLLabel: 'NO',\n HTMLUnitLabel: 'NO(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'O3',\n speciesExtentIdentifier: 'O3',\n HTMLLabel: 'O3',\n HTMLUnitLabel: 'O₃(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM1',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM1',\n HTMLUnitLabel: 'PM₁(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM25',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM2.5',\n HTMLUnitLabel: 'PM₂.₅(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'particulatePM10',\n speciesExtentIdentifier: 'PM',\n HTMLLabel: 'PM10',\n HTMLUnitLabel: 'PM₁₀(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'tempC',\n speciesExtentIdentifier: 'BT',\n HTMLLabel: 'Temp',\n HTMLUnitLabel: 'Temperature(°C)',\n HTMLShortUnitLabel: '°C',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'ambHumidity',\n speciesExtentIdentifier: 'BRH',\n HTMLLabel: 'Humidity',\n HTMLUnitLabel: 'Humidity(%)',\n HTMLShortUnitLabel: '%',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'SO2',\n speciesExtentIdentifier: 'SO2',\n HTMLLabel: 'SO2',\n HTMLUnitLabel: 'SO₂(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'H2S',\n speciesExtentIdentifier: 'H2S',\n HTMLLabel: 'H2S',\n HTMLUnitLabel: 'H₂S(μg/m³)',\n HTMLShortUnitLabel: 'μg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'CO',\n speciesExtentIdentifier: 'CO',\n HTMLLabel: 'CO',\n HTMLUnitLabel: 'CO(mg/m³)',\n HTMLShortUnitLabel: 'mg/m³',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'CO2',\n speciesExtentIdentifier: 'CO2',\n HTMLLabel: 'CO2',\n HTMLUnitLabel: 'CO₂(ppm)',\n HTMLShortUnitLabel: 'ppm',\n isChecked: false,\n isSelected: false,\n },\n {\n dataIdentifier: 'TVOC',\n speciesExtentIdentifier: 'TVOC',\n HTMLLabel: 'TVOCs',\n HTMLUnitLabel: 'TVOCs(ppb)',\n HTMLShortUnitLabel: 'ppb',\n isChecked: false,\n isSelected: false,\n },\n];\n\nexport const DEFRALimits: PollutantLimit[] = [\n { id: 1, pollutant: 'PM10', subscript: 'Annual | 40μg/m3', value: 40 },\n { id: 2, pollutant: 'PM10', subscript: 'Hourly | 50μg/m3', value: 50 },\n { id: 3, pollutant: 'PM2.5', subscript: 'Annual | 10μg/m3', value: 10 },\n { id: 4, pollutant: 'NO2', subscript: 'Annual | 40μg/m3', value: 40 },\n { id: 5, pollutant: 'NO2', subscript: '1hr | 200μg/m3', value: 200 },\n { id: 6, pollutant: 'O3', subscript: '8hr | 100μg/m3', value: 100 },\n { id: 7, pollutant: 'SO2', subscript: 'Daily | 125μg/m3', value: 125 },\n { id: 8, pollutant: 'SO2', subscript: '1hr | 350μg/m3', value: 350 },\n { id: 9, pollutant: 'SO2', subscript: '15min | 266μg/m3', value: 266 },\n { id: 10, pollutant: 'CO', subscript: '8hr | 10mg/m3', value: 10 },\n];\n\nexport const WHOLimits: PollutantLimit[] = [\n { id: 11, pollutant: 'PM10', subscript: 'Annual | 15μg/m3', value: 15 },\n { id: 12, pollutant: 'PM10', subscript: 'Daily | 45μg/m3', value: 45 },\n { id: 13, pollutant: 'PM2.5', subscript: 'Annual | 5μg/m3', value: 5 },\n { id: 14, pollutant: 'PM2.5', subscript: 'Daily | 15μg/m3', value: 15 },\n { id: 15, pollutant: 'NO2', subscript: 'Annual | 10μg/m3', value: 10 },\n { id: 16, pollutant: 'NO2', subscript: 'Daily | 25μg/m3', value: 25 },\n { id: 17, pollutant: 'O3', subscript: '8hr | 100μg/m3', value: 100 },\n { id: 18, pollutant: 'SO2', subscript: 'Daily | 40μg/m3', value: 40 },\n { id: 19, pollutant: 'CO', subscript: 'Daily | 4mg/m3', value: 4 },\n];\n\nexport const pollutantsOrder = {\n NO2: 1,\n NO: 2,\n O3: 3,\n particulatePM1: 4,\n particulatePM25: 5,\n particulatePM10: 6,\n tempC: 7,\n ambHumidity: 8,\n SO2: 9,\n H2S: 10,\n CO: 11,\n CO2: 12,\n TVOC: 13\n};\n\nexport const saLabelsNox = {\n LRP: 'Other',\n NRT: 'Local Non-Road Transport',\n RT: 'Local Road Transport',\n RWC: 'Local Residential Wood Combustion',\n LPS: 'Local Large Point Sources'\n};\n\nexport const saLabelsPm2p5 = {\n LRP: 'Background',\n NRT: 'Local Non-Road Transport',\n RT: 'Local Road Transport',\n RWC: 'Local Residential Wood Combustion',\n LPS: 'Local Large Point Sources'\n};\n\nexport const mapTilerKey = 'kcf3zYQkTpJtjRKOVFGv';\nexport const MAPTILER_URL = \"https://api.maptiler.com/maps/7b2c486a-6bf3-430b-8248-d6e1ec74ce8f/256/{z}/{x}/{y}.webp?key=g5gVaWNZybi6pZqExpsb\";\n\n\nexport const widgetsGenerator = (layouts: any) => {\n return {\n deviceView: [\n {\n id: 1,\n title: 'Gases Chart',\n subTitle: 'A time-series that displays data for gas pollutants. NO2, NO, O3, SO2, H2S, CO, CO2, TVOC.',\n imageURL: 'gasesChart.svg',\n item: {\n w: 8,\n h: 10,\n x: 0,\n y: Infinity,\n i: `gasWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `gasWidget${layouts.deviceView.length + 1}`,\n name: `gases${layouts.deviceView.length + 1}`,\n i: `gasWidget${layouts.deviceView.length + 1}`,\n threshold: true,\n }\n },\n {\n id: 2,\n title: 'Particulates Chart',\n subTitle: 'A time-series that displays data for particulate matter. PM1, PM2.5 and PM10.',\n imageURL: 'particulatesChart.svg',\n item: {\n w: 8,\n h: 10,\n x: 0,\n y: Infinity,\n i: `particulateWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `particulateWidget${layouts.deviceView.length + 1}`,\n name: `particulate${layouts.deviceView.length + 1}`,\n i: `particulateWidget${layouts.deviceView.length + 1}`,\n threshold: true,\n }\n },\n {\n id: 3,\n title: \"Gases Averages\",\n subTitle: \"Average values for gas pollutants across a given time period.\",\n imageURL: \"gasesAverages.svg\",\n item: {\n w: 4,\n h: 4,\n x: 8,\n y: Infinity,\n i: `gasAveragesWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 4,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `gasAveragesWidget${layouts.deviceView.length + 1}`,\n name: `gasAverages${layouts.deviceView.length + 1}`,\n i: `gasAveragesWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 4,\n title: \"Particulates Averages\",\n subTitle: \"Average values for particulate matter across a given time period.\",\n imageURL: \"particulatesAverages.svg\",\n item: {\n w: 4,\n h: 4,\n x: 8,\n y: Infinity,\n i: `particulateAveragesWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 4,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `particulateAveragesWidget${layouts.deviceView.length + 1}`,\n name: `pmAverages${layouts.deviceView.length + 1}`,\n i: `particulateAveragesWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 5,\n title: \"Temperature / Humidity\",\n subTitle: \"A time-series with temperature and humidity over-plotted.\",\n imageURL: \"th.svg\",\n item: {\n w: 4,\n h: 8,\n x: 0,\n y: Infinity,\n i: `thpWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `thpWidget${layouts.deviceView.length + 1}`,\n name: `thpChartPlotly${layouts.deviceView.length + 1}`,\n i: `thpWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 6,\n title: \"Wind\",\n subTitle: \"Time-series graphs with wind direction and wind speed data.\",\n imageURL: \"wind.svg\",\n item: {\n w: 4,\n h: 8,\n x: 4,\n y: Infinity,\n i: `wsdWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `wsdWidget${layouts.deviceView.length + 1}`,\n name: `windSpeedDirChartPlotly${layouts.deviceView.length + 1}`,\n i: `wsdWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 7,\n title: \"Rainfall\",\n subTitle: \"A bar-chart showing rainfall in mm/hour.\",\n imageURL: \"rainfall.svg\",\n item: {\n w: 4,\n h: 8,\n x: 8,\n y: Infinity,\n i: `precipitationWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 4,\n minW: 4,\n },\n layout: {\n uid: `precipitationWidget${layouts.deviceView.length + 1}`,\n name: `precipitation${layouts.deviceView.length + 1}`,\n i: `precipitationWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 8,\n title: \"Device Map\",\n subTitle: \"A base-map centred on the device location providing spatial context.\",\n imageURL: \"deviceMap.svg\",\n item: {\n w: 12,\n h: 8,\n x: 8,\n y: Infinity,\n i: `mapWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 18,\n minH: 3,\n minW: 4\n },\n layout: {\n uid: `mapWidget${layouts.deviceView.length + 1}`,\n name: `map${layouts.deviceView.length + 1}`,\n i: `mapWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 9,\n title: \"NOx Sources\",\n subTitle: \"A pie-chart displaying modelled NOx source apportionment at the device location.\",\n imageURL: \"noxSources.svg\",\n item: {\n w: 4,\n h: 6,\n x: 8,\n y: Infinity,\n i: `saNOxWidget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 6,\n minH: 6,\n minW: 4\n },\n layout: {\n uid: `saNOxWidget${layouts.deviceView.length + 1}`,\n name: `sourceApportionmentNO2${layouts.deviceView.length + 1}`,\n i: `saNOxWidget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n },\n {\n id: 10,\n title: \"PM2.5 Sources\",\n subTitle: \"A pie-chart displaying modelled PM2.5 source apportionment at the device location.\",\n imageURL: \"pm25Sources.svg\",\n item: {\n w: 4,\n h: 6,\n x: 8,\n y: Infinity,\n i: `saPM25Widget${layouts.deviceView.length + 1}`,\n moved: false,\n static: false,\n maxH: 6,\n minH: 6,\n minW: 4,\n },\n layout: {\n uid: `saPM25Widget${layouts.deviceView.length + 1}`,\n name: `sourceApportionmentPM25${layouts.deviceView.length + 1}`,\n i: `saPM25Widget${layouts.deviceView.length + 1}`,\n threshold: false,\n }\n }\n ],\n networkView: [\n {\n id: 1,\n title: \"Gases Summary Chart\",\n subTitle: \"A time-series that displays network statistics for gas pollutants. Defaults to 5th & 95th percentiles and median.\",\n imageURL: \"networkGases.svg\",\n item: { w: 8, h: 9, x: 0, y: Infinity, i: `networkGasWidget${layouts.networkView.length + 1}`, moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n layout: { uid: `networkGasWidget${layouts.networkView.length + 1}`, name: `networkViewGases${layouts.networkView.length + 1}`, i: `networkGasWidget${layouts.networkView.length + 1}`, threshold: true }\n },\n {\n id: 2,\n title: \"Particulates Summary Chart\",\n subTitle: \"A time-series that displays network statistics for particulate matter. Defaults to 5th & 95th percentiles and median.\",\n imageURL: \"networkParticulates.svg\",\n item: { w: 8, h: 9, x: 0, y: Infinity, i: `networkParticulateWidget${layouts.networkView.length + 1}`, moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n layout: { uid: `networkParticulateWidget${layouts.networkView.length + 1}`, name: `networkViewParticulates${layouts.networkView.length + 1}`, i: `networkParticulateWidget${layouts.networkView.length + 1}`, threshold: true, }\n },\n {\n id: 3,\n title: \"Summary Table\",\n subTitle: \"A table of statistics for each device selected, including min/max/mean for each pollutant.\",\n imageURL: \"summaryTable.svg\",\n item: { w: 12, h: 10, x: 0, y: Infinity, i: `networkSummaryWidget${layouts.networkView.length + 1}`, moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n layout: { uid: `networkSummaryWidget${layouts.networkView.length + 1}`, name: `networkViewPollutantSummary${layouts.networkView.length + 1}`, i: `networkSummaryWidget${layouts.networkView.length + 1}`, threshold: false }\n },\n {\n id: 4,\n title: \"Network Map\",\n subTitle: \"A base-map showing all selected device locations providing spatial context.\",\n imageURL: \"networkMap.svg\",\n item: { w: 4, h: 18, x: 8, y: Infinity, i: `networkMapWidget${layouts.networkView.length + 1}`, moved: false, static: false, maxH: 18, minH: 4, minW: 4 },\n layout: { uid: `networkMapWidget${layouts.networkView.length + 1}`, name: `networkViewMap${layouts.networkView.length + 1}`, i: `networkMapWidget${layouts.networkView.length + 1}`, threshold: false }\n },\n ]\n }\n};\n\nexport const draggingWidgetStyles = {\n border: '2px dashed #3f51b5',\n boxShadow: '0px 4px 12px rgba(0, 0, 0, 0.15), 0 0 0 4px rgba(63, 81, 181, 0.2)',\n borderRadius: 5,\n transition: 'box-shadow 0.2s ease, border 0.2s ease'\n};\n\nexport const scatterChartLimit = 2;\n\nexport const VZInstructionsModal = {\n header1: 'Add Virtual Zephyr',\n text1: 'Click on any location on the map to add Virtual Zephyr and start monitoring data.',\n header2: 'Adjust Virtual Zephyr Position',\n text2: 'To adjust the Virtual Zephyr location select the pin and move to your desired location.',\n};\n\nexport const publicPortals = ['SandwellPublic', 'GlobalPublic', 'EastRidingPublic', 'LeicestershireCCPublic', 'liberiapublico', 'LancasterCCPublic', 'EastStaffordshirePublic', 'SouthRibblePublic', 'SouthendOnSeaCCPublic', 'DoncasterPublic', 'WorcestershirePublic', 'ErewashBCPublic', 'BrightonHoveandSussexPublic', 'SouthCambsCouncilPublic', 'SouthamptonPublic', 'WestburyTownCouncilPublic', 'derbyshiredales']\n","// Package Imports\nimport rgbHex from 'rgb-hex';\n\n// Type Imports\nimport { Colour, Overlay, Stylegroup } from '../interface';\n\n/* Function\nDESC: colourConverter returns the Hex colour code for an RGB-provided colour\nARGS: object with r, g, b keys and legitemate numbers for each\n*/\nconst colourConverter = (colour: Colour) => {\n const hexColor = rgbHex(\n parseInt(colour.r),\n parseInt(colour.g),\n parseInt(colour.b),\n );\n return hexColor;\n};\n\n/* Function\nDESC: colourFinder finds the correct colour to display a beacon (typically on the Map or Aside bar)\nARGS: AQ value(e.g. 12), species name(e.g. NO2), styleGroupName(e.g. ES), styleGroups(derived from API), \n opacity(value between 0 and 1)\n*/\nconst colourFinder = (\n curOverlay: Overlay,\n stylegroups: Stylegroup[],\n styleGroupName: string,\n opacity: number,\n overlays: Overlay[],\n value: number | null,\n requestType: 'zephyr' | 'mappair' | 'virtual',\n) => {\n const defaultColour = { r: 255, g: 255, b: 255 };\n let colour = defaultColour;\n if (stylegroups.length) {\n const speciesHasZephyrOverlay = overlays.filter(\n (ol) =>\n ol.speciesIdentifier === curOverlay.speciesIdentifier &&\n !ol.isMappairOverlay &&\n !ol.isSAOverlay,\n );\n\n if (\n (speciesHasZephyrOverlay.length > 0 || requestType === 'mappair') &&\n !curOverlay.isSAOverlay &&\n value !== null\n ) {\n const curStylegroup = stylegroups.filter(\n (group) => group.name === styleGroupName,\n )[0];\n if (curStylegroup) {\n const possibleColours = curStylegroup.thresholds[curOverlay.name].filter(\n (th) => value >= th.min,\n );\n colour = possibleColours[possibleColours.length - 1];\n }\n }\n\n // TODO add style for requestType === 'mappair'\n\n if (colour) {\n return `rgba(${colour.r},${colour.g},${colour.b},${opacity})`;\n }\n }\n};\n\nexport { colourConverter, colourFinder };\n","// Package Imports\nimport axios, { AxiosRequestConfig } from 'axios';\nimport Cookies from 'js-cookie';\nimport TagManager from 'react-gtm-module';\n\n// Type Imports\nimport {\n APIAirAlertPost,\n APIAirAlertParameter,\n DataConfig,\n LocationCoordinates,\n PolarPlotData,\n ZephyrLocationShort,\n APIAirAlertTarget,\n VirtualZephyr,\n VirtualZephyrData,\n Pollutant,\n Zephyr,\n AveragingChain,\n} from './interface';\n\nimport i18n from 'i18next';\n\n// Path Imports\nimport {\n APIPaths,\n averagingChains,\n averagingChainsWithoutUnaveraged,\n config,\n keys,\n permissionCookieSettings,\n} from './consts';\n\n// Utils\nimport { getAuth } from './functions/getAuth';\n\n// MappAir API Requests\nconst checkValidToken = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairAPIVersion}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n if (response.data.version) {\n return true;\n }\n return false;\n } catch (e) {\n return false;\n }\n};\n\nconst getAveragingPeriods = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getAveragingPeriods}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getCapabilities = async () => {\n try {\n const response = await axios.get(`${config.mappairAPI}wmtsfeed?`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n });\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getDataConfig = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getDataConfig}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getDisplayConfig = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getDisplayConfig}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getFetchToken = async (\n email: string,\n password: string,\n bearerToken: string | null,\n) => {\n const urlencoded = new URLSearchParams();\n urlencoded.append('username', email);\n urlencoded.append('password', password);\n urlencoded.append('grant_type', 'password');\n\n const data = {\n grant_type: 'password',\n username: email,\n password,\n };\n\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getToken}`,\n data,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data.access_token;\n } catch (e) {\n console.error(e);\n }\n};\n\nconst getLatestMetDataForUser = async (\n data: ZephyrLocationShort[],\n bearerToken?: string | null,\n) => {\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getLatestMetDataForUser}`,\n data,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getOverlays = async (bearerToken: string | null, isPublic: boolean) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairOverlays}?PPUser=${isPublic}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getPolarPlots = async (\n data: PolarPlotData,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getPolarPlots}`,\n data,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getPublicAdvice = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getPublicAdvice}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getAnnualAvgAtCoords = async (\n lat: any,\n lng: any,\n startdt: string,\n enddt: string,\n step: string,\n bearerToken: string | null,\n species?: string,\n keyword?: string,\n) => {\n try {\n const url = `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairPoint}`;\n\n const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n queryParams.set('lat', lat.toString());\n queryParams.set('lng', lng.toString());\n queryParams.set('dt_start', startdt);\n queryParams.set('dt_end', enddt);\n queryParams.set('step', step);\n if (species) queryParams.set('species', species);\n if (keyword) queryParams.set('keyword', keyword);\n // might need in future\n // const requestConfig = {\n // headers: {\n // Authorization: `Basic ${getAuth()}`,\n // 'Accept-Language': i18n.language,\n // },\n // };\n\n const response = await axios.get(`${url}/?${queryParams.toString()}`, {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n });\n return response.data;\n } catch (e) {\n console.error(e);\n return {};\n }\n};\n\nconst getSAAtPoint = async (\n pixels: number[],\n bounds: any,\n width: number,\n height: number,\n lat: number,\n lng: number,\n bearerToken: string | null,\n) => {\n const hardcodedProduct = 'Mappair_100m_UK:NRT_PM2p5_FC';\n try {\n const response = await axios(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairOverlaySAValues\n }?product=${hardcodedProduct}&x=${Math.round(pixels[0])}&y=${Math.round(\n pixels[1],\n )}&bbox=${bounds}&width=${width}&height=${height}&lat=${lat}&lng=${lng}`,\n {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch {\n return { value: 'NA' };\n }\n};\n\nconst getStylegroups = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairStylegroups}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getTimePeriods = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getTimePeriods}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getUserFeedbackQuestions = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getUserFeedbackQuestions}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getTodayData = async (\n species: string,\n latLon: LocationCoordinates,\n step: number,\n bearerToken: string | null,\n dates?: {\n startDT?: string | any;\n endDT?: string | any;\n },\n keyword?: string,\n) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getTodayData\n }?lat=${latLon[0]}&lng=${latLon[1]}&species=${species}&includeText=true${dates && dates.startDT ? `&dt_start=${dates.startDT}` : ''\n }${dates && dates.endDT ? `&dt_end=${dates.endDT}` : ''}${keyword ? `&keyword=${keyword}` : ''\n }&step=${step}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n console.error(e);\n return null;\n }\n};\n\nconst getUserAgreements = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getUserAgreements}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getUserConfig = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getUserConfig}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst getUserInfo = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getUserInfo}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return {};\n }\n};\n\nconst getDataAtCoords = async (\n lat: any,\n lng: any,\n startdt: string,\n enddt: string,\n bearerToken: string | null,\n species?: string,\n includeText?: boolean,\n step?: number,\n) => {\n try {\n const url = `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairPoint}`;\n const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n queryParams.set('lat', lat.toString());\n queryParams.set('lng', lng.toString());\n queryParams.set('dt_start', startdt);\n queryParams.set('dt_end', enddt);\n if (species) queryParams.set('species', species);\n if (step) queryParams.set('step', step.toString());\n if (includeText) queryParams.set('includeText', includeText.toString());\n const requestConfig = {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n };\n const response = await axios.get(\n `${url}/?${queryParams.toString()}`,\n requestConfig,\n );\n if (response.status != 200) throw new Error();\n return response.data;\n } catch (e) {\n return { value: 'NA' };\n }\n};\n\nconst getValueAtPoint = async (\n pixels: number[],\n overlay: string,\n bounds: number,\n width: number,\n height: number,\n time: string,\n crs: string,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMappairOverlayValue\n }?overlay=${overlay}&x=${Math.round(pixels[0])}&y=${Math.round(\n pixels[1],\n )}&bbox=${bounds}&width=${width}&height=${height}&time=${time}&crs=${crs}`,\n {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return { value: 'NA' };\n }\n};\n\nconst getVersions = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.getMyAirVersions}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst postUserFeedback = async (\n mufId: number,\n score: number,\n comments: string,\n email: string,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.postUserFeedback}?mufId=${mufId}&score=${score}&comments=${comments}&email=${email}`,\n {},\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst setShowTour = async (showTour: boolean, bearerToken: string | null) => {\n try {\n const auth = getAuth();\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.setUserTour}?auth=${auth}&showTour=${showTour}`,\n {},\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst signUserAgreement = async (muaId: number, bearerToken: string | null) => {\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.signUserAgreement}?muaId=${muaId}`,\n {},\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst submitContactForm = async (\n formData: {\n firstName: string;\n lastName: string;\n email: string;\n company: string;\n enquiry: string;\n details: string;\n comments: string;\n },\n bearerToken: string | null,\n) => {\n const {\n firstName,\n lastName,\n email,\n company,\n enquiry,\n details,\n comments,\n } = formData;\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.postContactFormEmail}?email=${email}&firstName=${firstName}&lastName=${lastName}&company=${company}&enquiry=${enquiry}&details=${details}&comments=${comments}`,\n formData,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst updateUserLatestVersionViewed = async (\n versionId: number,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.post(\n `${config.mappairAPI}${APIPaths.pathMappair}${APIPaths.updateUserLatestVersionViewed}?versionId=${versionId}`,\n {},\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\n// Unit WiFi Requests\nexport const apiRenameUnitWifiNetwork = async (\n // the method for triggering this endpoint is in AsideUnit component but it's not attached to any HTML element\n zNumber: string,\n wifiData: { networkName: string; networkPassword: string },\n bearerToken: string | null,\n) => {\n try {\n const axiosConfig: AxiosRequestConfig = {\n method: 'post',\n url: `${config.zephyrAPI}wifisettings/${zNumber}`,\n headers: {\n // userkey: auth,\n username: localStorage.getItem('user') || '',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${bearerToken}`,\n },\n data: {\n SSID: wifiData.networkName,\n Password: wifiData.networkPassword,\n },\n };\n\n const response = await axios(axiosConfig);\n\n return [null, response.data];\n } catch (e) {\n console.error(e);\n console.error('failed to rename user wifi credentials');\n return [e, null];\n }\n};\n\nexport const apiGetWifiCredentials = async (\n zNumber: string,\n bearerToken: string | null,\n) => {\n // the method for triggering this endpoint is in AsideUnit component but it's not attached to any HTML element\n try {\n const response = await axios.get(\n `${config.zephyrAPI}wifisettings/${zNumber}`,\n {\n headers: {\n 'Content-Type': 'application/json',\n username: localStorage.getItem('user') || '',\n Authorization: `Bearer ${bearerToken}`,\n // userkey: auth,\n },\n },\n );\n\n return [null, response.data];\n } catch (e) {\n console.error('failed to get user wifi credentials');\n return [e, null];\n }\n};\n\n// Zephyr API Requests\nconst createZephyrAlias = async (\n zNumber: number,\n alias: string,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.post(\n `${config.zephyrAPI\n }${APIPaths.createZephyrAlias.toLowerCase()}/${zNumber}/${alias}`,\n {},\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst getAurns = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(\n `${config.zephyrAPI}${APIPaths.getAurns.toLowerCase()}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getCachedZephyrHistoricalData = async (\n // Deprecated\n zNumber: number,\n start: string,\n end: string,\n dataConfig: DataConfig,\n cache: number,\n bearerToken: string | null,\n acOverride?: number,\n) => {\n try {\n const averagingChain = acOverride || dataConfig.averagingChain;\n const response = await axios.get(\n `${config.zephyrAPI\n }${APIPaths.cachedDataForViewBySlotsAveraged.toLowerCase()}/${zNumber}/${start}/${end}/AB/${dataConfig.ctv\n }/${cache}/${averagingChain}/JSON/api`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\nconst getCartridge = async (\n cartridgeSerial: string,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.get(\n `${config.zephyrAPI\n }${APIPaths.getCartridge.toLowerCase()}/${cartridgeSerial}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return null;\n }\n};\n\nconst getUserZephyrsWithHistory = async (bearerToken: string | null) => {\n // Deprecated\n try {\n const response = await axios.get(\n `${config.zephyrAPI}${APIPaths.zephyrsForUserWithHistory.toLowerCase()}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getUserZephyrsWithHistoryAndAQ = async (\n // Deprecated\n ctv: string,\n getZephyrs: number,\n getAURNs: number,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.get(\n `${config.zephyrAPI\n }${APIPaths.zephyrsForUserWithHistoryAndAQ.toLowerCase()}/${ctv}/${getZephyrs}/${getAURNs}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\n// #region virtualZephyrs\nconst getVZephyrs = async (bearerToken: string | null, location?: string) => {\n try {\n const url = `${config.vZephyrAPI}GetVzephyrs`;\n const queryValues = [];\n if (location) queryValues.push(['location', location]);\n\n const queryParams = new URLSearchParams(queryValues).toString();\n\n const requestConfig = {\n headers: {\n // Authorization: `Basic ${auth}`,\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n const response = await axios.get(`${url}`, requestConfig);\n // const response = await axios.get(`${url}/?${queryParams}`, requestConfig);\n return response.data;\n } catch (e) {\n console.error(\n 'Failed to retrieve Virtual Zephyrs. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n\nconst averagingOptionMapping: { [option: string]: number } = {\n \"Hourly average on the hour\": 1,\n \"8 hour average at midnight and 8am and 4pm\": 8,\n \"Daily average at midnight\": 24,\n};\n\nconst getVZephyrData = async (\n bearerToken: string | null,\n vzephyrid: number,\n dataConfig: DataConfig,\n startdt: string,\n enddt?: string,\n averagingOption?: string,\n sa?: boolean,\n) => {\n try {\n const url = `${config.vZephyrAPI}getdata`;\n const { averagingChain } = dataConfig;\n // const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n // queryParams.set('vzephyr_id', vzephyrid.toString());\n // queryParams.set('start_dt', startdt);\n // if (enddt) queryParams.set('end_dt', enddt);\n // // queryParams.set('id_user_target', '2769');\n // queryParams.set('averaging', averagingChain.toString());\n const requestConfig = {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n\n const averaging = averagingOption ? averagingOptionMapping[averagingOption] : undefined;\n\n const response = await axios.get(url, {\n params: {\n vzephyr_id: vzephyrid.toString(),\n start_dt: startdt,\n end_dt: enddt,\n averaging,\n sa: !!sa,\n average_all: !!sa,\n },\n ...requestConfig,\n }\n );\n return response.data;\n } catch (e) {\n console.error(\n 'Failed to retrieve Virtual Zephyr data. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n\nconst getProxyVZephyrData = async (id_pod: number, bearerToken: string | null, startdt: string, enddt?: string, averagingOption?: string, sa?: boolean) => {\n const averaging = averagingOption ? averagingOptionMapping[averagingOption] : undefined;\n if (!averaging) {\n return\n }\n\n try {\n const response = await axios.get(\n `${config.vZephyrAPI}getdata`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Authorization': `Bearer ${bearerToken}`\n },\n params: sa ? {\n pod_id: id_pod.toString(),\n id_user_target: 2996,\n start_dt: startdt,\n end_dt: enddt,\n sa: !!sa,\n average_all: !!sa,\n } : {\n pod_id: id_pod.toString(),\n id_user_target: 2996,\n start_dt: startdt,\n end_dt: enddt,\n averaging,\n sa: !!sa,\n average_all: !!sa,\n }\n },\n );\n return response.data;\n } catch (e) {\n console.error('Failed to retrieve Virtual Zephyr data. Please notify');\n return [];\n }\n};\n\nconst addVZephyr = async (\n name: string,\n description: string,\n latitude: number,\n longitude: number,\n bearerToken: string | null,\n) => {\n try {\n const url = `${config.vZephyrAPI}AddVzephyr`;\n\n const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n queryParams.set('name', name);\n if (description) queryParams.set('description', description);\n queryParams.set('latitude', latitude.toString());\n queryParams.set('longitude', longitude.toString());\n\n const requestConfig = {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n const response = await axios.post(\n `${url}/?${queryParams.toString()}`,\n {},\n requestConfig,\n );\n return response;\n } catch (e) {\n console.error(\n 'Failed to add Virtual Zephyr. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n\nconst editVZephyr = async (\n vzephyrid: number,\n name: string,\n bearerToken: string | null,\n description?: string,\n) => {\n try {\n const url = `${config.vZephyrAPI}EditVzephyr`;\n\n const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n queryParams.set('vzephyr_id', vzephyrid.toString());\n queryParams.set('name', name);\n if (description) queryParams.set('description', description);\n\n const requestConfig = {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n const response = await axios.patch(\n `${url}/?${queryParams.toString()}`,\n {},\n requestConfig,\n );\n\n return response;\n } catch (e) {\n console.error(\n 'Failed to edit Virtual Zephyr. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n\nconst unsubFromVZephyr = async (\n vzephyrid: number,\n bearerToken: string | null,\n) => {\n try {\n const url = `${config.vZephyrAPI}unsubvzephyr`;\n\n const queryParams = new URLSearchParams();\n // queryParams.set('auth', auth);\n queryParams.set('vzephyr_id', vzephyrid.toString());\n\n const requestConfig = {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n const response = await axios.patch(\n `${url}/?${queryParams.toString()}`,\n {},\n requestConfig,\n );\n\n return response;\n } catch (e) {\n console.error(\n 'Failed to unsub Virtual Zephyr. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n\nconst getUserVZephyrConfig = async (bearerToken: string | null) => {\n try {\n const requestConfig = {\n headers: {\n Authorization: `Bearer ${bearerToken}`,\n 'Accept-Language': i18n.language,\n },\n };\n const response = await axios.get(\n `${config.vZephyrAPI}getuserconfig`,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n console.error(\n 'Failed to get vZephyr user config. Please notify support@earthsense.co.uk if this is not expected.',\n );\n return [];\n }\n};\n// #endregion\n\nconst getZephyrs = async (bearerToken: string | null) => {\n try {\n\n const response = await axios.get(\n `${config.zephyrAPI}${APIPaths.getZephyrs.toLowerCase()}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getZephyrMeasurementData = async (\n zephyr: Zephyr,\n start: string,\n end: string,\n dataConfig: DataConfig,\n bearerToken: string | null,\n isPathLocation: boolean,\n DSE?: boolean,\n selectedPollutants?: Pollutant[],\n isDA?: boolean,\n averagingOption?: string,\n isPublic?: boolean,\n) => {\n try {\n const { zNumber: znumber, type: zephyrType, HasMetStation } = zephyr;\n // Passing particulates individually as param doesn't work, need to pass them as 'Particulates'\n const pollutionArr = selectedPollutants?.map((pollutant) => {\n return pollutant.dataIdentifier.includes('particulate') ? pollutant.dataIdentifier.split('particulate')[1] : pollutant.dataIdentifier;\n });\n const hasPollutionArrParticulates = pollutionArr?.find((pollutant: string) => pollutant.includes('PM'));\n const params = selectedPollutants && pollutionArr ? hasPollutionArrParticulates ? `metCore,${pollutionArr.join(',')},Particulates` : `metCore,${pollutionArr.join(',')}` : 'metCore,MyAirLocation';\n const auth = getAuth();\n const DSEOFF = `${config.zephyrAPI}v2/measurementdata/${znumber}/${start}/${end}/AB/${isPathLocation ? 1 : isDA ? averagingChains[averagingOption as string] : dataConfig.averagingChain}/${HasMetStation ? 'metCore,' : ''}${isPublic ? 'NO2,particulatePM25' : 'MyAirLocation'}/${dataConfig.ctv}`;\n const DSEON = `${config.zephyrAPI}${APIPaths.GetMeasurmentDataDSE\n }/${znumber}/${start}/${end}/AB/${13}/tempC,humidity,Enhanced,CO2,TVOC/${dataConfig.ctv\n }/C`;\n const headers = {\n // 'access-control-request-headers': 'usertoken',\n // usertoken: auth,\n 'access-control-request-headers': 'Authorization',\n 'Content-Type': 'application/json',\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n };\n\n const response = await axios.get(DSE ? DSEON : DSEOFF, { headers });\n response.data['statusCode'] = {\n responseCode: response.status,\n text: response.statusText,\n description: null,\n };\n response.data['zType'] = zephyrType;\n return response.data\n } catch (e) {\n const { type: zephyrType } = zephyr;\n if (typeof (e as any).response.data === 'string') {\n const errorCopy = { ...(e as any).response };\n errorCopy.data = {};\n errorCopy.data['statusCode'] = {\n responseCode: errorCopy.status,\n text: 'Something went wrong on the server',\n description: 'Something went wrong on the server',\n };\n errorCopy.data['zType'] = zephyrType;\n return errorCopy.data;\n }\n const isDescriptionValid =\n 'data' in (e as any) &&\n 'description' in (e as any).data &&\n (e as any).data.description;\n (e as any).response.data['statusCode'] = {\n responseCode: (e as any).response.status,\n text: (e as any).response.statusText,\n description: isDescriptionValid ? (e as any).data.description : null,\n };\n (e as any).response.data['zType'] = zephyrType;\n return (e as any).response.data;\n }\n};\n\nconst getZephyrMetData = async (\n znumber: number,\n start: string,\n end: string,\n dataConfig: DataConfig,\n contentType = 'application/json',\n bearerToken: string | null,\n) => {\n try {\n const headers = {\n // 'access-control-request-headers': 'usertoken',\n // usertoken: auth,\n 'access-control-request-headers': 'Authorization',\n Authorization: `Bearer ${bearerToken}`,\n 'Content-Type': 'csv',\n 'Accept-Language': i18n.language,\n };\n const response = await axios.get(\n `${config.zephyrAPI\n }${APIPaths.GetMeasurementData.toLowerCase()}/${znumber}/${start}/${end}/AB/0/metCore/${dataConfig.ctv\n }`,\n { headers },\n );\n return response.data.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getZephyrHistoricalData = async (\n // Deprecated\n zNumber: number,\n start: string,\n end: string,\n dataConfig: DataConfig,\n bearerToken: string | null,\n) => {\n try {\n const response = await axios.get(\n `${config.zephyrAPI\n }${APIPaths.dataForViewBySlotsAveraged.toLowerCase()}/${zNumber}/${start}/${end}/AB/${dataConfig.ctv\n }/${dataConfig.averagingChain}/JSON/api`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return false;\n }\n};\n\n// Downloads\nconst downloadCalibrationCertificate = (zNumber: number) => {\n try {\n const auth = getAuth();\n (window as any).location = `${config.zephyrAPI\n }${APIPaths.downloadCalibrationCertificate.toLowerCase()}/${auth}/${zNumber}`;\n } catch (e) { }\n};\n\nconst downloadDataCSV = (\n // Deprecated\n zNumber: number,\n startDT: string,\n endDT: string,\n slot: string,\n timeAveraging: string,\n) => {\n try {\n const auth = getAuth();\n (window as any).location = `${config.zephyrAPI\n }${APIPaths.csvDataDownload.toLowerCase()}/${auth}/${zNumber}/${startDT}/${endDT}/${slot}/def/6/CSV/download`;\n } catch (e) { }\n};\n\nconst downloadDataKML = async (\n znumber: number,\n start: string,\n end: string,\n slot: string,\n species: string,\n dataConfig: DataConfig,\n bearerToken: string | null,\n) => {\n try {\n const headers = {\n // 'access-control-request-headers': 'usertoken, content-type',\n 'access-control-request-headers': 'Authorization, content-type',\n Authorization: `Bearer ${bearerToken}`,\n 'content-type': 'text/kml',\n };\n const data = {\n KmlRequest: '',\n };\n const response = await axios\n .get(\n `${config.zephyrAPI\n }${APIPaths.GetMeasurementData.toLowerCase()}/${znumber}/${start}/${end}/${slot}/0/${species},latitude,longitude/${dataConfig.ctv\n }`,\n { headers, data },\n )\n .then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', `${znumber}_${species}.kml`);\n document.body.appendChild(link);\n link.click();\n });\n return response;\n } catch (e) {\n return [];\n }\n};\n\n// Alerts API Requests\nconst deleteAirAlert = async (alertId: number) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.delete(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.deleteAirAlert}/${alertId}`,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst updateAlertParameter = async (parameters: APIAirAlertParameter[]) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.post(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.updateAlertParameters}`,\n parameters,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst updateAlertTargets = async (targets: APIAirAlertTarget) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.post(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.updateAlertTargets}`,\n targets,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\nconst AddAlertTarget = async (target: APIAirAlertTarget) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.put(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.addAlertTarget}`,\n target,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\nconst removeAlertTarget = async (target: APIAirAlertTarget) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.post(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.removeAlertTarget}/${target.alertId}`,\n target,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getAirAlertTypes = async () => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n 'Accept-Language': i18n.language,\n },\n };\n try {\n const response = await axios.get(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.getAirAlertTypes}`,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getAirAlerts = async () => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n 'Accept-Language': i18n.language,\n },\n };\n try {\n const response = await axios.get(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.getAirAlerts}`,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst postAirAlert = async (alert: APIAirAlertPost) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const alerts = { ...alert };\n const { Alerts: { JsonInput } } = alerts;\n const filteredZNumbers = JsonInput[0].Znumbers.filter((zNumber: number | null) => zNumber !== null);\n alerts.Alerts.JsonInput[0].Znumbers = filteredZNumbers;\n const response = await axios.put(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.postAirAlerts}`,\n alerts,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst updateAirAlert = async (alert: APIAirAlertPost) => {\n const auth = getAuth();\n const requestConfig = {\n headers: {\n usertoken: auth,\n },\n };\n try {\n const response = await axios.post(\n `${config.alertsAPI}${APIPaths.airAlertsApi}${APIPaths.updateAirAlert}`,\n alert.Alerts,\n requestConfig,\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\n// External API Requests\nconst getLocation = async (latLon: LocationCoordinates) => {\n try {\n const response = await axios.get(\n `${APIPaths.getLocationGoogle}?latlng=${latLon}&key=${keys.GoogleMaps}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst getLocationFromPlaceId = async (placeId: string) => {\n try {\n const response = await axios.get(\n `${APIPaths.getLocationGoogle}?place_id=${placeId}&key=${keys.GoogleMaps}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst setLocation = async (location: string, searchBias: string) => {\n try {\n const response = await axios.get(\n `${APIPaths.getLocationGoogle}?address=${location}&key=${keys.GoogleMaps}&bounds=${searchBias}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nexport const getLocationSuggestions = async (\n search: string,\n searchBias: number[],\n suggestionsCallback: any,\n) => {\n try {\n const autoCompleteService = new google.maps.places.AutocompleteService();\n const biasBounds = new google.maps.LatLngBounds(\n new google.maps.LatLng(searchBias[0], searchBias[1]),\n new google.maps.LatLng(searchBias[2], searchBias[3]),\n );\n autoCompleteService.getPlacePredictions(\n { input: search, bounds: biasBounds },\n suggestionsCallback,\n );\n } catch (e) {\n return [];\n }\n};\n\n// Browser API Requests\nconst fireTrackingEvent = (\n action: string,\n category: string,\n label: string,\n value: number,\n) => {\n const optOutCookie = Cookies.get(permissionCookieSettings.name);\n // dataLayer won't exist for non-qualified analytics users\n if (TagManager.dataLayer && optOutCookie !== 'true') {\n const event = 'userEvent';\n const eventProps = { action, category, value, label };\n // Push to dataLayer\n const tagManagerArgs = {\n dataLayer: {\n event,\n eventProps,\n },\n };\n TagManager.dataLayer(tagManagerArgs);\n }\n};\n\n// Master Auth Token\n\nconst getMasterAuthToken = async (username?: string, password?: string, isPublic?: boolean) => {\n const auth = btoa(\n `${username ? username : localStorage.getItem('user')}:${password ? password : localStorage.getItem('key')\n }`,\n );\n try {\n const response = await axios.get(\n `${config.masterAuthAPI}authuser?auth=${!isPublic ? auth : 'false'}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n );\n return response.data.token;\n } catch (e) {\n return false;\n }\n};\n\n// MyAir API\n\n// https://service-dev.earthsense.co.uk/myair/api/dev/\n\nconst getUserViews = async (bearerToken: string | null) => {\n try {\n const response = await axios.get(`${config.myAirApi}analyticsview`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst saveView = async (data: any, bearerToken: string | null) => {\n try {\n const response = await axios.post(\n `${config.myAirApi}v2/analyticsview`,\n data,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nconst deleteView = async (viewId: number, bearerToken: string | null) => {\n try {\n const response = await axios.delete(\n `${config.myAirApi}analyticsview/${viewId}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n Authorization: `Bearer ${bearerToken}`,\n },\n },\n );\n return response.data;\n } catch (e) {\n return [];\n }\n};\n\nexport default {\n addVZephyr,\n getVZephyrs,\n getVZephyrData,\n editVZephyr,\n getUserVZephyrConfig,\n unsubFromVZephyr,\n checkValidToken,\n apiGetWifiCredentials,\n apiRenameUnitWifiNetwork,\n createZephyrAlias,\n deleteAirAlert,\n downloadCalibrationCertificate,\n downloadDataCSV,\n downloadDataKML,\n fireTrackingEvent,\n getAirAlertTypes,\n getAirAlerts,\n getAurns,\n getAveragingPeriods,\n getCachedZephyrHistoricalData,\n getCapabilities,\n getCartridge,\n getDataConfig,\n getDisplayConfig,\n getFetchToken,\n getLatestMetDataForUser,\n getLocation,\n getLocationFromPlaceId,\n getLocationSuggestions,\n getOverlays,\n getPublicAdvice,\n getPolarPlots,\n getSAAtPoint,\n getAnnualAvgAtCoords,\n getStylegroups,\n getTimePeriods,\n getTodayData,\n getUserAgreements,\n getUserConfig,\n getUserInfo,\n getUserFeedbackQuestions,\n getZephyrMeasurementData,\n getUserZephyrsWithHistory,\n getUserZephyrsWithHistoryAndAQ,\n getValueAtPoint,\n getDataAtCoords,\n getVersions,\n getZephyrMetData,\n getZephyrs,\n getZephyrHistoricalData,\n postAirAlert,\n updateAlertParameter,\n updateAlertTargets,\n postUserFeedback,\n signUserAgreement,\n submitContactForm,\n setLocation,\n setShowTour,\n updateAirAlert,\n AddAlertTarget,\n removeAlertTarget,\n updateUserLatestVersionViewed,\n getMasterAuthToken,\n getProxyVZephyrData,\n getUserViews,\n saveView,\n deleteView,\n};\n","// Types Imports=\nimport {\n SET_UNIT_HISTORIES,\n SET_UNIT_HISTORIES_LOADING,\n SET_THRESHOLD_LIMITS,\n SET_ZEPHYR_COVERAGES_LIST,\n SET_IS_DATA_AVAILABILITY_CHART_LOADING,\n SET_DSE_CHECKBOX_STATE,\n INCREASE_ARRIVED_REQUESTS,\n SET_ARRIVED_REQUESTS_TO_INIT_STATE,\n SET_NULLABLE_UNITS,\n SET_PROCEED_WITH_ANALYSIS,\n SET_IS_VIEW_LOADED,\n SET_IS_CARTRIDGE_DATA_LOADING,\n SET_IS_WIDGETS_LIBRARY_VISIBLE,\n} from '../actions/types';\n\n// Type Imports\nimport {\n UnitHistoriesOptions,\n Zephyr,\n ZephyrCoverages,\n} from '../utils/interface';\n\ninterface setUnitHistoriesOptions {\n type:\n | typeof SET_UNIT_HISTORIES\n | typeof SET_UNIT_HISTORIES_LOADING\n | typeof SET_THRESHOLD_LIMITS\n | typeof SET_ZEPHYR_COVERAGES_LIST\n | typeof SET_IS_DATA_AVAILABILITY_CHART_LOADING\n | typeof SET_DSE_CHECKBOX_STATE\n | typeof INCREASE_ARRIVED_REQUESTS\n | typeof SET_ARRIVED_REQUESTS_TO_INIT_STATE\n | typeof SET_NULLABLE_UNITS\n | typeof SET_PROCEED_WITH_ANALYSIS\n | typeof SET_IS_VIEW_LOADED\n | typeof SET_IS_CARTRIDGE_DATA_LOADING\n | typeof SET_IS_WIDGETS_LIBRARY_VISIBLE;\n payload: any;\n // payload: any | Zephyr | ZephyrCoverages[];\n}\n\nexport const thresholdLimitsInitState = {\n thresholds: {\n lowerThreshold: {\n title: '',\n value: null,\n },\n upperThreshold: {\n title: '',\n value: null,\n }\n },\n hidden: false\n};\n\n//State\nconst initState: UnitHistoriesOptions = {\n unitHistories: [],\n isUnitHistoriesLoading: false,\n thresholdLimits: thresholdLimitsInitState,\n zephyrCoveragesList: [],\n isDataAvailabilityChartLoading: false,\n dseOn: false,\n requests: 0,\n nullableUnits: [],\n toProceed: null,\n viewLoaded: false,\n isCartridgeDataLoading: null,\n isWidgetLibraryVisible: false,\n};\n\n// Reducer\nexport default function (state = initState, action: setUnitHistoriesOptions) {\n const { type, payload } = action;\n\n switch (type) {\n case SET_UNIT_HISTORIES:\n return {\n ...state,\n unitHistories: payload,\n };\n\n case SET_UNIT_HISTORIES_LOADING:\n return {\n ...state,\n isUnitHistoriesLoading: payload,\n };\n\n case SET_THRESHOLD_LIMITS:\n return {\n ...state,\n thresholdLimits: payload,\n };\n\n case SET_ZEPHYR_COVERAGES_LIST:\n const { name, zNumber, type } = payload;\n const zephyrExists = state.zephyrCoveragesList.find(\n (zephyr: ZephyrCoverages) => zephyr.zephyrNumber === zNumber,\n );\n if (zephyrExists) {\n const zephyr =\n state.zephyrCoveragesList[\n state.zephyrCoveragesList.indexOf(zephyrExists)\n ];\n zephyr.isSelected = !zephyr.isSelected;\n }\n const newState = !zephyrExists\n ? [\n ...state.zephyrCoveragesList,\n {\n name,\n zephyrNumber: zNumber,\n zType: type,\n isSelected: true,\n requestMade: false,\n coverageData: null,\n },\n ]\n : [...state.zephyrCoveragesList];\n return {\n ...state,\n zephyrCoveragesList: 'zNumber' in payload ? newState : payload,\n };\n\n case SET_IS_DATA_AVAILABILITY_CHART_LOADING:\n return {\n ...state,\n isDataAvailabilityChartLoading: payload,\n };\n case SET_DSE_CHECKBOX_STATE:\n return {\n ...state,\n dseOn: !state.dseOn,\n };\n case INCREASE_ARRIVED_REQUESTS:\n return {\n ...state,\n requests: ++state.requests,\n };\n case SET_ARRIVED_REQUESTS_TO_INIT_STATE:\n return {\n ...state,\n requests: 0,\n };\n case SET_NULLABLE_UNITS:\n return {\n ...state,\n nullableUnits:\n typeof payload === 'number' ? [...state.nullableUnits, payload] : [],\n };\n case SET_PROCEED_WITH_ANALYSIS:\n return {\n ...state,\n toProceed: payload,\n };\n case SET_IS_VIEW_LOADED:\n return {\n ...state,\n viewLoaded: payload,\n };\n case SET_IS_CARTRIDGE_DATA_LOADING:\n return {\n ...state,\n isCartridgeDataLoading: payload,\n };\n case SET_IS_WIDGETS_LIBRARY_VISIBLE:\n return {\n ...state,\n isWidgetLibraryVisible: payload\n }\n default:\n return state;\n }\n}\n","// Const Imports\nimport { periods } from '../consts';\n\n// Common JS Imports\nconst moment = require('moment');\nconst momentTimezone = require('moment-timezone');\n\nconst current = (format?: string) => {\n const dtFormat = format || 'YYYYMMDDHHmm';\n const currentTime = momentTimezone().tz(\"Europe/London\").format(dtFormat);\n return currentTime;\n};\n\nconst dateFinder = (date: Date, daysDiff: number, past: boolean) => {\n past\n ? date.setDate(date.getDate() - daysDiff)\n : date.setDate(date.getDate() + daysDiff);\n return date;\n};\n\nconst defaultStartEndFinder = () => {\n const endTime = current();\n const period = periods.default;\n const startTime = subtractTimeFromNow(period.quantity, period.unit);\n return { start: startTime, end: endTime };\n};\n\nconst getDateFromTimestamp = (date: string) => {\n const newlyFormattedDate = moment(date, 'YYYY-MM-DDZHH:mm:ss').format(\n 'DD-MM-YYYY',\n );\n return newlyFormattedDate;\n};\n\nconst getTimeOld = (date: string | null, dateFormat: string, unit: string) => {\n if (date) {\n const curDate = new Date().getTimezoneOffset() !== -60 ? moment(moment.tz(new Date(), 'Europe/London').format('YYYY-MM-DD HH:mm:ss')) : moment(new Date());\n const targetDate = moment(date, dateFormat);\n const difference = curDate.diff(targetDate, unit, true);\n return difference;\n }\n return 10;\n};\n\nconst getShortDateFromISO = (date: string) => {\n const year = date.slice(0, 4);\n const month = date.slice(5, 7);\n const day = date.slice(8, 10);\n const newlyFormattedStringDate = `${day}-${month}-${year}`;\n return newlyFormattedStringDate;\n};\n\nconst startEndFinder = (timePeriod: string) => {\n const endTime = current();\n const period = periods[timePeriod];\n const startTime = subtractTimeFromNow(period.quantity, period.unit);\n return { start: startTime, end: endTime };\n};\n\nconst subtractTimeFromNow = (periodQuantity: number, periodUnit: string) => {\n const subtractedTime = momentTimezone(new Date()).tz(\"Europe/London\")\n .subtract(periodQuantity, periodUnit)\n .format('YYYYMMDDHHmm');\n return subtractedTime;\n};\n\nconst subtractTwoDates = (start: any, end: any) => {\n const strStart = start.toString();\n const strEnd = end.toString();\n const dateSplicer = (dateString: string, start: number, end: number) => {\n const dateSpliced = parseInt(dateString.slice(start, end));\n return dateSpliced;\n };\n const diffStart = moment([\n dateSplicer(strStart, 0, 4),\n dateSplicer(strStart, 4, 6) - 1,\n dateSplicer(strStart, 6, 8),\n ]);\n const diffEnd = moment([\n dateSplicer(strEnd, 0, 4),\n dateSplicer(strEnd, 4, 6) - 1,\n dateSplicer(strEnd, 6, 8),\n ]);\n // true flag doesn't round the number\n const difference = diffEnd.diff(diffStart, 'days', true);\n return difference;\n};\n\nconst twinFormatDateFinder = (date: Date, daysDiff: number, past: boolean) => {\n const isoDate = dateFinder(date, daysDiff, past).toISOString;\n const stringDate = subtractTimeFromNow(daysDiff, 'days');\n const output = { isoDate, stringDate };\n return output;\n};\n\nconst tzConverter = (date: any) => {\n const tz = new Date();\n const tzOffset = tz.getTimezoneOffset();\n const tzDate = moment(date, 'YYYYMMDDHHmm')\n .subtract(tzOffset, 'minutes')\n .format('YYYYMMDDHHmm');\n return tzDate;\n};\n\nconst utcConvertor = (date: any) => {\n const ukOffset = moment.tz.zonesForCountry('GB', true)[0].offset;\n const utcDate = moment(date, 'YYYYMMDDHHmm')\n .add(ukOffset, 'minutes')\n .format('YYYYMMDDHHmm');\n return utcDate;\n};\n\nconst getCurrentTimeZoneAbbreviation = () => {\n const curTimeZone = moment.tz.guess();\n const timeZoneAbbr = moment().tz(curTimeZone).format('z');\n return timeZoneAbbr;\n};\n\nconst convertUnitTimeToLocalTime = (date: any) => {\n\n const convertedTime = `${moment(date).format('YYYY/MM/DD HH:mm:ss')} +0000`;\n return moment(new Date((typeof date === \"string\" ? new Date(convertedTime) : convertedTime)\n .toLocaleString(\"en-US\", { timeZone: moment.tz.guess() })));\n};\n\nexport {\n current,\n dateFinder,\n getDateFromTimestamp,\n getTimeOld,\n getShortDateFromISO,\n startEndFinder,\n defaultStartEndFinder,\n subtractTimeFromNow,\n subtractTwoDates,\n twinFormatDateFinder,\n tzConverter,\n utcConvertor,\n getCurrentTimeZoneAbbreviation,\n convertUnitTimeToLocalTime\n};\n","module.exports = __webpack_public_path__ + \"static/media/logo-white-text.1b07830e.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKCSURBVHgB1VrblZswEL1sfvJJCUoFcQkuwR2sSnAHkAqcVOB04O2ApAKSCthUgH/zpWgQ4ihavNjSiMc95x4fyWDdKw2MYJyBB7nmQfOzptDc9X25c8xrz1+avzV/9O3FQOIKzUpTBbLWlDCmZxfeIlz4GM+YwUgK4T4LJICAWW41ExswrsYz0s/6GGnMAyJRALMLZwupNYgPNnEAsLRon8+4EwLLxPwUW9x5YTfA4mJvsZ4SX6xA5BTLW+LFikROhdKwx/rgGDjBbMLWjo+af2E2gwMEtjH7b1bhqTewRwJIKXE6nZAAJP7odrDvc4QQqm1bRajrumszj1FZ8YJbPLFpGuWC2rvdjnucLowkt/iiKAbR+/1eVVU1GDkej5xjkXZ8Df0BHd8qz/P/+miWLUi87S/LUt1ChAHSHv5IaGfZxjd92tAhwf7xNPv2umAy8EIGmhgDBBJF4s7n82DqkfMjDJD24JNHw4HM3HvHYTDQshhwQ8O9SMnIe2YYDCgWA1asH/eXy6UzphNaUgPBe//3BNhbqQW1UxloYg34YULtMfgZmesivsQacLMs5QU/C7twj2UwUJGB4ETmw72VTsENsQgDXSKTXAZCEWFAZjAbou5++ijM2PHIsgyB+ETPA1d4TzcbAb2mf7UPND8RAJo5Dgbim9uwYaQ2REHC7QpcfUcrx3eMVHe2tArCin5yDGxlFb5gorY2ZyHjUTa4AwIbf7lLkACWFuzz4WpNCWBp0ZYlAlECUNioeAtauqWKfBJMEJi38FEjUdG7BJIKb8EQMlMQMKk8hfAcM0LAxGhM4qsQKTx4L+tBwNQYqMJj/3IjnO+vPWkP/6f/fOn7ovAPO0Nn7th04QUAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAReSURBVHgB1ZpPaBRXHMe/782bkNK0aMkhBYVQWughB0tbNMVDwHRpxENLEREqtOChp0DYNfYPpdtDWxMmDe2phx4EC0VEWlC0rDkEFI2gmIMHQfwDBszBg+AGQmZnnr/fmImTzezO7tvJ7uQDu/Pmvdmd32/e77158/uOQAqMTEzsqCg1DIH3AT0gIPo10EvlnhdHiLKAXqS6BSrfhsZ1S65c+X/s24doEQFDhqantynfPSqEdYgM/QBmzGntn31Fy5PnCoUnMKBpB0b+oKvtWj9S8Qv6dTfSQGNZSPGncr2JC+Pji838tGEHhorFbvV6T0FofJ+a4dWwI9ATK8+WTswWi8uN/KQhB3KO8662cIZOMID2MC98HC4VCneSDpRJB+xznE+1wK02Gs/s4nPum5o6kHRgXQc+/s3JS4l/Ny1k6kHnlEKfy01NFuodZtVqYONp46DTCJF7Oze8dK906Wpsc1wldx17jwxBY+IzGhP/baivrggGLMd8J8KmHjxDabxXPbDXjQGeKrXEP5kzniGbeCZkG6PV6xzoeu3Vb2izC1mFZsIuuhdFq9ZCaP/kZJ9ryQeZvPpRKJSU7b1zcfT4Au+u9UDFto5n3niGbKx4wVJmdZcYcpxeW+DRlnCAoV5wpfXm7NjY06AHlPC/7JTxR/Z8hKYhW5XvH+Vi4IAQ8nN0ADb+yOAgTBACh4LtJ9O/9nvafoA2Exrv+T5Gfp+GCa7ydkrP79qLlEm6slHjf7lwHqbYrhpWFE+7kSLVxp+6di22PTT+8t27MIYeYckBPUCjOhWixoX7TOhEqsYzZLsi43cgBeLC4rv9B17OMrTAijOe20/NXYUJQot+noX60CJxV5Y/XOa6Wle+lVmI0dC97EAPWqBeWESdiGtvxfhVehRaoJGYDp0Iy2nDPVCGIbXCItrOhCFV3Z4CZXJAGCWUmKSYTtpPgUVJQ/khDGkkpuN6JDUEFiRNb7dhyGbEdFOQ7eQAbqIFUo7p5tD+dalsewaGbEJMN4UlK1fkxdFRTnnfgAGdNJ6Y4/R88DygNU5jiyGEfzbY8hfn+m3fe7yVHim7NXayphD0AD9b0i3tb2wRWEsIBZG1rISyvJ/YM2QdTquQEBLurjnAeRZa8f6MjMMCSFTFWZeZq2wvO3SE8Y2tDcyvvLF0IlqxzoHZr4rLwsPBTIYSJ3dJtWEbo9UbBA7O/lIW+DAyBkm3B+Mkp1iB416pdOctEhUEiQvIACTFHruUP3Yyrq2mQnOfFJEsOMHGz+THaypFiSpljtQaevY80/abXKAdk1I5tlGViZKoUpby+fOsjFBxHu2CZsJAjUkwnkl0gOHB424vDwqtN/dmR/9NKaof3G3lDxvRiJmmXzVgIYS1BO3rr9N81YCXMrwaCIWLRjF/2YM0BU7Lr2a298AIcUNr73RF2n8F6zGTf0AKBBluX+2lVdbu1VQlZftEX/R1G/p6Ejx/6+B1m5vKrsw0e7XjeA6X+AUO2nVRtgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ7SURBVHgB1VnNbxNHFP+92fWXUIsr9SMVquScWqkVSQ+t1KpVU3HqjagHjpQDPZTSJBLXFsM/ECJKLz3gHlupCsce+pFKqNeYAxKnYoQAC4EwoBAnZnd4b5Y1xnac3fXYrH9SMjuzk+z7nvfmESxALxeLG07+oKv0DAglrWlWa10komLHtpr8EHRV+3QJHtYKS/UahgQhIYToZja/AI05ns4hAQjEzOiVYZiJzUBIOH94sUvCw6KCFk7FZSQWA5vnpk6OgHB0UVQuHKufir49AjaXp0qUoVUNPYvxoMba+DyKNtRuG7Z/mjqsXb0+RuIFIrD1jbOvH9xt40AGtthkPB+VkZrMDmCBFRWpVTHbQft2NCEh3tcoIw0Y4Bd9GRDVCfdIERyFr7Lf1H/pXu9hQBxWbP5FmM0g8JnR0C39frdj9/pABv+kjXiB+IREwu715xjYChymhJRCIuHG2aly51rbhMR0WPpXkXKIKeVam9O01GjI/JkGMjiJCYCY0iM3vxjOjQaSSD9/7BZsonnuzch7O7VgNOA5ybLJF4VOLbjySym9kDSzjiO5fkiqSUX4TEbXmA8wzjzHFuYktVeTZj6dkCpQKaKRSZ9eegvZL85jVFCkZ10irmNHAGf/Ubgfnkhes0YB19/ixCVYRubAGTjvHGrP1b6P4d/4D7bBKc+MhNESLML95LQhXm89gH8zIFoYEnOyDdJU3LUiiwO17yO4M0fN8+O/F7C9+iX0ncuBL8z/bp0JU/TAItz9X5vRu/IrvP//AHIvY/uvReiH1w3xuUN/WmdCMRcNWAK99q4ZverPwTy7F9kDy0YT3pXfDENiTjahJK+AJYTS9e9eNqNIHrm9hujWxe+DD776HqyBUONQqquwBHFc839Z0m2wFiQKtdH5bugPMgM+1DVYgn4aKp0PThgmJCLJ6LM/OG8HYdVmOOX710uuzxpwLJ02rYs/IMvSNpFo6z70g+tmTZjIfHra7BEHtwUOo1W6xwlRPpO/h5gIs8gwG42bVXb/XaKstoVp9UpQmq1hwsDRsyo3FO7T2b/s0XNIgKT5/LAVHfm0IqM5yJqPm2dsngdjgRdYzbNbCbmuoMko7BmVwrf1I/LQTiUmSgvcCAkf2wyIM3NYWkHKwRfOz3Vxek6ARz++sc7pRVpr5BqbznTnQk82Si2aT6Mp8anbkK5N93oPA6IeDlFLSBkc6CP9Wk5964HCd/UKnw2RG22jhth97vjtC/3eDcyC0hBahfg9x+vlnd7vmsZJt4aL5/Ps2GPtGYjNk6Ilbi1VBu2L3GaVxgfG1DswHfyWno/SZo3X6B6xSRmpg1YKA0ymG7ErAdGG76LMtehhWEJIeJ6zgbBxERWJSxljVnyvqvlme4iDb00y4SSEh7BSi7WZ4btKuS1D4Cul8L2RMHGXkagK37/mcyW1x2teSEp0J54A6cOs/jwZwYoAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/save-view.b5d817eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/load-view.7024651b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-kebab-dark.db73e60d.svg\";","module.exports = __webpack_public_path__ + \"static/media/remove.b24466d8.svg\";","module.exports = __webpack_public_path__ + \"static/media/download.8322f18b.svg\";","import Box from '@mui/material/Box';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Modal from '@mui/material/Modal';\nimport React, { useState } from 'react';\nimport CloseIcon from '../../../assets/images/icon-close.svg';\nimport KebabIcon from '../../../assets/images/icon-kebab-dark.svg';\nimport MaximiseIcon from '../../../assets/images/icon-maximize.svg';\nimport RemoveIcon from '../../../assets/images/remove.svg';\nimport { styleModalWithCta } from '../../../utils/styles';\nimport { thresholdLimitsInitState } from '../../../reducers/dataAnalytics';\nimport { ThresholdLimits, ThresholdsList } from '../../../utils/interface';\nimport { thresholdMainItemStyles, thresholdMenuItemStyles } from '../../../utils/consts';\nimport { Tooltip } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\n\nfunction KebabMenuCta({\n setIsThresholdModalOpen,\n thresholdLimits,\n setThresholdsList,\n type,\n selectedOption,\n setSelectedOption,\n isComparisonView,\n onRemoveWidget,\n}: {\n setIsThresholdModalOpen: Function;\n thresholdLimits?: ThresholdLimits,\n setThresholdsList?: Function;\n type?: string;\n selectedOption?: string;\n setSelectedOption?: Function;\n isComparisonView?: boolean;\n onRemoveWidget?: (type: string) => void;\n}) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [menu2AnchorEl, setMenu2AnchorEl] = useState(null);\n const [statisticsMenuAnchorEl, setStatisticsMenuAnchorEl] = useState(null);\n const openChartMenu = Boolean(anchorEl);\n const openSubMenu = Boolean(menu2AnchorEl);\n const openStatisticsMenu = Boolean(statisticsMenuAnchorEl);\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMainMenuClosing = () => {\n setAnchorEl(null);\n };\n\n const handleClose = () => {\n setMenu2AnchorEl(null);\n };\n\n const handleStatisticsClose = () => {\n setStatisticsMenuAnchorEl(null);\n }\n\n const handleMenu2Open = (event: React.MouseEvent) => {\n setMenu2AnchorEl(event.currentTarget);\n };\n\n const handleStatisticsMenuOpen = (event: React.MouseEvent) => {\n setStatisticsMenuAnchorEl(event.currentTarget);\n };\n\n const updateThresholdsList = (value: ThresholdLimits) => {\n setThresholdsList!((prevState: ThresholdsList) => ({\n ...prevState,\n [type as keyof ThresholdsList]: value,\n }));\n };\n\n const handleThresholdToggling = () => {\n const updatedThresholds = {\n ...thresholdLimits,\n hidden: !(thresholdLimits as ThresholdLimits).hidden,\n };\n updateThresholdsList(updatedThresholds as ThresholdLimits);\n };\n\n const thresholdLinesAdded = () => {\n return thresholdLimits && (typeof thresholdLimits.thresholds.lowerThreshold.value === 'number' || typeof thresholdLimits.thresholds.upperThreshold.value === 'number');\n };\n\n const openStatistics = () => {\n return (\n \n \n \n \n \n \n \n \n )\n }\n\n const subMenuItems = () => {\n const linesExist = thresholdLinesAdded();\n return (\n { handleClose(); handleStatisticsClose(); }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: !isComparisonView ? 'right' : 'left',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: !isComparisonView ? 'left' : 'right',\n }}\n style={{ top: -8 }}\n PaperProps={{\n style: {\n borderRadius: 0,\n marginLeft: !isComparisonView ? 1 : -1,\n marginTop: 0\n },\n }}\n >\n {!linesExist && { setIsThresholdModalOpen(true); handleClose(); handleMainMenuClosing(); }}\n sx={thresholdMenuItemStyles}\n >\n Add\n \n }\n {linesExist &&
    \n \n {thresholdLimits?.hidden ? 'Show' : 'Hide'}\n \n \n { setIsThresholdModalOpen(true); handleClose(); handleMainMenuClosing(); }}\n sx={thresholdMenuItemStyles}\n >\n Edit\n \n \n { handleClose(); updateThresholdsList(thresholdLimitsInitState); handleMainMenuClosing(); }}\n sx={thresholdMenuItemStyles}\n >\n Remove\n \n \n
    \n\n }\n \n );\n };\n\n const handleRemoveWidget = () => {\n if (onRemoveWidget && type) {\n handleMainMenuClosing();\n onRemoveWidget(type);\n };\n }\n\n return (\n
    \n \n \"menu\"\n \n \n \n Threshold line\n \n \n {type && type.includes('network') && (\n \n Statistics\n \n \n )}\n {localStorage.getItem('isPublic') !== 'true' && \n \n \"remove\"\n Remove widget\n \n }\n \n {openSubMenu && subMenuItems()}\n {openStatisticsMenu && openStatistics()}\n
    \n );\n}\n\nfunction ModalWithCta({ modalChart = null }: { modalChart?: any | null }) {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const handleOpenChartModal = () => {\n setIsModalOpen(true);\n };\n const handleCloseModal = () => {\n setIsModalOpen(false);\n };\n\n if (!modalChart) return null;\n\n return (\n
    \n \n \"expand\"\n \n \n \n \n \"close\n \n {modalChart}\n \n \n
    \n );\n}\n\nexport function CustomMenu({ onRemoveWidget, type }: { onRemoveWidget: (type: string) => void, type: string }) {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n return type === 'map' && localStorage.getItem('isPublic') === 'true' ? null : (\n <>\n \n \"menu\"\n \n setAnchorEl(null)}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n style={{ top: -8 }}\n PaperProps={{\n style: {\n borderRadius: 0,\n marginLeft: 1,\n marginTop: 0\n },\n }}\n >\n {localStorage.getItem('isPublic') !== 'true' && onRemoveWidget(type)}\n style={{ fontSize: 14, width: 165, paddingTop: 3, paddingBottom: 3 }}\n >\n \n \"remove\"\n Remove widget\n \n }\n \n \n )\n}\n\nfunction TitleBarCtas({\n modalChart = null,\n setIsThresholdModalOpen = null,\n thresholdLimits,\n setThresholdsList,\n type,\n selectedOption,\n setSelectedOption,\n isComparisonView,\n onRemoveWidget,\n useCustomMenu = false,\n}: {\n modalChart?: any | null;\n setIsThresholdModalOpen?: null | Function;\n thresholdLimits?: ThresholdLimits,\n setThresholdsList?: Function;\n type?: string;\n selectedOption?: string;\n setSelectedOption?: Function;\n isComparisonView?: boolean;\n onRemoveWidget?: (type: string) => void;\n useCustomMenu?: boolean;\n}) {\n return (\n
    \n {setIsThresholdModalOpen ? (\n \n ) : null}\n\n {onRemoveWidget && useCustomMenu && (\n \n )}\n \n
    \n );\n}\n\nexport const ChartTitleBar = ({\n title,\n HasMetStation,\n chartType,\n zType,\n children = null,\n setIsThresholdModalOpen,\n className = '',\n customModal,\n thresholdLimits,\n setThresholdsList,\n type,\n isComparisonView,\n selectedOption,\n setSelectedOption,\n isDragging,\n draggedItem,\n isWidgetHovered,\n isNetworkMap,\n onRemoveWidget,\n useCustomMenu = false,\n}: {\n title: string | string[];\n HasMetStation?: number;\n chartType?: string;\n zType?: number;\n children?: any | null;\n setIsThresholdModalOpen?: Function;\n className?: string;\n customModal?: any;\n thresholdLimits?: ThresholdLimits,\n setThresholdsList?: Function;\n type?: string;\n isComparisonView?: boolean;\n selectedOption?: string;\n setSelectedOption?: Function;\n isDragging?: boolean;\n draggedItem?: string | null;\n isWidgetHovered?: boolean;\n isNetworkMap?: boolean;\n onRemoveWidget?: (type: string) => void;\n useCustomMenu?: boolean;\n}) => {\n const chartBadge = !isComparisonView && type !== 'networkViewPollutantSummary' && !type?.includes('networkViewPollutantSummary') && (chartType || typeof zType === 'number' || type?.toLowerCase().includes('network')) ? {type?.toLowerCase().includes('sourceapportionment') ? 'Modelled (Beta)' : type?.toLowerCase().includes('network') ? selectedOption === 'minMeanMax' ? 'Min / Mean / Max' : '5% / Median / 95%' : typeof zType === 'number' ? zType === 0 ? 'Zephyr' : 'Modelled' : chartType === 'th' ? HasMetStation ? 'Met Station' : zType === 0 ? 'Zephyr' : 'Modelled' : HasMetStation ? 'Met Station' : 'Modelled'} : null;\n const getReformattedName = () => {\n return title === 'NO2 Sources' ? <>NO2 Sources : title === 'PM2.5 Sources' ? <>PM2.5 Sources : Array.isArray(title)\n ? title[1] === '25'\n ? <>{title[0]}2.5\n : <>{title[0]}{title[1]}\n : title;\n };\n return (\n
    \n
    \n {isWidgetHovered &&
    \n \n \n \n
    }\n

    {getReformattedName()}{chartBadge}

    \n {customModal || (\n \n )}\n
    \n
    \n );\n};\n","import moment from 'moment';\n\n// Util Imports\nimport { Dispatch } from 'redux';\nimport utilsRequest from '../utils/request';\nimport {\n current,\n subtractTimeFromNow,\n subtractTwoDates,\n} from '../utils/functions/dateFinder';\n\n// Type Imports\nimport {\n CLEAR_DRAGGED_UNIT,\n GET_AURNS,\n GET_ZEPHYRS,\n GET_ZEPHYR_HISTORICAL_DATA,\n SET_DRAGGED_UNIT,\n SET_ZEPHYR,\n SET_ZEPHYR_IN_EDIT_MODE,\n SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n ADD_ZEPHYRS,\n SET_HAS_INITIAL_SET,\n} from './types';\nimport { DataConfig, Zephyr, ZephyrTypes, Keys, Pollutant } from '../utils/interface';\nimport { proxy } from 'jquery';\nimport { truncate } from 'fs';\n\n// Type Safety\ninterface TPValue {\n [key: string]: number;\n}\n\n// Consts\nconst tpValues: TPValue = { '24': 1, '48': 2, week: 7 };\n\n// Action Creators\nexport const setAurns = (aurns: Zephyr[]) => (dispatch: Dispatch) => {\n dispatch({\n type: GET_AURNS,\n payload: aurns,\n });\n};\n\nexport const setZephyrs = (zephyrs: Zephyr[]) => (dispatch: Dispatch) => {\n dispatch({\n type: GET_ZEPHYRS,\n payload: zephyrs,\n });\n};\n\nexport const addZephyrs = (zephyr: any[]) => (dispatch: Dispatch) => {\n dispatch({\n type: ADD_ZEPHYRS,\n payload: zephyr,\n });\n};\n\nexport const setZephyrInEditMode = (zephyr: Zephyr) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ZEPHYR_IN_EDIT_MODE,\n payload: zephyr,\n });\n};\n\nexport const setZephyr = (zephyr: Zephyr) => (dispatch: Dispatch) => {\n if (zephyr) {\n dispatch({\n type: SET_ZEPHYR,\n payload: zephyr,\n });\n }\n};\n\nexport const setInitialUnitSet = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_HAS_INITIAL_SET\n })\n};\n\nexport const setDraggedUnit = (unit: Zephyr) => (dispatch: Dispatch) => {\n dispatch({\n type: SET_DRAGGED_UNIT,\n payload: unit,\n });\n};\n\nexport const clearDraggedUnit = () => (dispatch: Dispatch) => {\n dispatch({\n type: CLEAR_DRAGGED_UNIT,\n });\n};\n\nexport const startLoading = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n payload: true,\n });\n};\n\nexport const endLoading = () => (dispatch: Dispatch) => {\n dispatch({\n type: SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n payload: false,\n });\n};\n\nexport const getZephyrData = (\n zephyr: Zephyr,\n timePeriod: string,\n start: string,\n end: string,\n dataConfig: DataConfig,\n // multiMode is applicable to multi Data load and anywhere else we want to get Z data without updating global state\n multiMode: boolean,\n bearerToken: string | null,\n caching: number,\n isPathLocation: boolean,\n dse?: boolean,\n selectedPollutants?: Pollutant[],\n isDA?: boolean,\n averagingOption?: string\n) => async (dispatch: Dispatch) => {\n if (!multiMode) {\n dispatch({\n type: SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n payload: true,\n });\n }\n\n // check whether the data already exists in the cache\n const dataInCache = checkCacheForZephyrData(\n zephyr.zNumber,\n timePeriod,\n start,\n end,\n );\n let zephyrHistoricalData = null;\n let proxyVZHistoricalData = null;\n let proxyVZSourceApportionmentData = null;\n let statusCode = null;\n // disqualify certain time periods from caching owing to size\n const disqualifiedFromCache = ['24', '48', 'week', 'month', 'custom', '72'];\n if (dataInCache) {\n zephyrHistoricalData = dataInCache;\n } else {\n const startDateUTC = moment.utc(start, 'YYYYMMDDHHmm')\n const endDateUTC = moment.utc(end, 'YYYYMMDDHHmm')\n const startDateISO = startDateUTC.toISOString().substr(0, 19);\n const endDateISO = endDateUTC.toISOString().substr(0, 19);\n\n if (zephyr.type === ZephyrTypes.virtual) {\n const vZephyrDataResponse = await utilsRequest.getVZephyrData(\n bearerToken,\n zephyr.zNumber,\n dataConfig,\n startDateISO,\n endDateISO,\n averagingOption,\n );\n const vZephyrSourceApportionmentDataResponse = await utilsRequest.getVZephyrData(\n bearerToken,\n zephyr.zNumber,\n dataConfig,\n startDateISO,\n endDateISO,\n averagingOption,\n true,\n );\n zephyrHistoricalData = convertVZephyrDataToZephyrHistoricalData(\n vZephyrDataResponse,\n zephyr,\n startDateISO,\n endDateISO,\n false,\n zephyr.type\n );\n proxyVZSourceApportionmentData = convertVZephyrDataToZephyrHistoricalData(vZephyrSourceApportionmentDataResponse, zephyr, startDateISO, endDateISO, false, zephyr.type, true);\n } else {\n zephyrHistoricalData = await utilsRequest.getZephyrMeasurementData(\n zephyr,\n start,\n end,\n dataConfig,\n bearerToken,\n isPathLocation,\n dse ? dse : undefined,\n selectedPollutants,\n isDA,\n averagingOption\n );\n const proxyVZUnformattedData = await utilsRequest.getProxyVZephyrData(zephyr.id_pod, bearerToken, startDateISO, endDateISO, averagingOption, false);\n const proxyVZSourceApportionmentUnformattedData = await utilsRequest.getProxyVZephyrData(zephyr.id_pod, bearerToken, startDateISO, endDateISO, averagingOption, true);\n proxyVZHistoricalData = convertVZephyrDataToZephyrHistoricalData(proxyVZUnformattedData, zephyr, startDateISO, endDateISO, true, zephyr.type);\n proxyVZSourceApportionmentData = convertVZephyrDataToZephyrHistoricalData(proxyVZSourceApportionmentUnformattedData, zephyr, startDateISO, endDateISO, true, zephyr.type, true);\n }\n zephyrHistoricalData.zType = zephyr.type;\n statusCode = zephyrHistoricalData.statusCode;\n // check whether either slot has any data\n if (zephyrHistoricalData.data) {\n const containsData =\n zephyrHistoricalData.data[isDA ? averagingOption as string : 'Hourly average on the hour'];\n\n // Check whether there is something other than nulls in either of the slots\n const slotAContainsData = containsData && \"slotA\" in containsData\n ? checkDataResponseForData(containsData.slotA, \"slotA\")\n : null;\n\n const slotBContainsData = containsData && \"slotB\" in containsData\n ? checkDataResponseForData(containsData.slotB, \"slotB\")\n : null;\n\n const headContainsData = containsData && \"head\" in containsData\n ? checkDataResponseForData(containsData.head, \"head\")\n : null;\n\n if (slotAContainsData || slotBContainsData || headContainsData) {\n // check whether the tp is excluded from caching owing to size constraints\n if (!disqualifiedFromCache.includes(timePeriod)) {\n // check if this is a custom date request\n if (timePeriod === 'custom') {\n const customTP = subtractTwoDates(start, end);\n // check whether the custom date request is up to 7 days in size\n if (customTP <= 7) {\n populateCustomCache(\n zephyr.zNumber,\n customTP,\n start,\n end,\n zephyrHistoricalData,\n );\n }\n } else {\n populateStandardCache(\n zephyr.zNumber,\n timePeriod,\n zephyrHistoricalData,\n );\n }\n }\n } else {\n zephyrHistoricalData = null;\n }\n } else {\n zephyrHistoricalData = false;\n }\n }\n // data: null references data requests that have retrieved null data for both slots\n // data: false references data requests that have failed with a 500\n const output =\n zephyrHistoricalData === null\n ? zephyr.type === 0 ? { data: null, statusCode, proxyVZData: proxyVZHistoricalData, proxyVZSourceApportionmentData } : { data: null, statusCode, proxyVZSourceApportionmentData }\n : zephyrHistoricalData === false\n ? zephyr.type === 0 ? { data: false, statusCode, proxyVZData: proxyVZHistoricalData, proxyVZSourceApportionmentData } : { data: false, statusCode, proxyVZSourceApportionmentData }\n : zephyr.type === 0 ? { ...zephyrHistoricalData, proxyVZData: proxyVZHistoricalData, proxyVZSourceApportionmentData } : { ...zephyrHistoricalData, proxyVZSourceApportionmentData };\n\n // const populatedData = unitList.length > 1 && output.data === null ? output.data = unitHistories[Object.keys(unitHistories)[0]] : null\n // const newOutput = unitList.length === 1 ? output : unitList.length > 1 && output.data === null ? populatedData : output;\n // zephyrHistoricalData === null ? newOutput.isHistoricalDataNull = true : newOutput.isHistoricalDataNull = false;\n\n if (!multiMode) {\n dispatch({\n type: GET_ZEPHYR_HISTORICAL_DATA,\n payload: output,\n });\n dispatch({\n type: SET_ZEPHYR_HISTORICAL_DATA_LOADING,\n payload: false,\n });\n }\n // if (zephyrHistoricalData) { output.data = null; }\n // if output.data is null, dont push it to chart dataset state\n return output;\n};\n\n// Functions\nconst getLocalStorageData = () => localStorage.getItem('data');\n\nconst clearSpaceInStorage = (stringCache: string, timePeriod: string) => {\n const newCache = JSON.parse(stringCache);\n try {\n localStorage.setItem('data', stringCache);\n } catch (e) {\n const updatedUnitsCache = newCache;\n // remove oldest accessed unit data to free-up LS space\n let dataCount = 0;\n while (dataCount < tpValues[timePeriod]) {\n // grab the first element from updatedUnits and remove it\n const curUnit = updatedUnitsCache.units.shift();\n if (curUnit && newCache[curUnit]) {\n // count how many tps exist for the unit in the standard and custom caches\n for (const stdKey in newCache[curUnit].standard) {\n // increment dataCount\n dataCount += tpValues[stdKey];\n }\n for (const custKey in newCache[curUnit].custom) {\n // calculate number of days\n const [start, end] = custKey.split('_');\n dataCount += subtractTwoDates(start, end);\n }\n // update stringCache\n delete updatedUnitsCache[curUnit];\n }\n }\n // set localStorage with updatedUnitsCache\n const stringUpdatedUnitsCache = JSON.stringify(newCache);\n try {\n localStorage.setItem('data', stringUpdatedUnitsCache);\n } catch (e) {\n console.error(e);\n }\n }\n};\n\nconst populateStandardCache = (\n zNumber: number,\n timePeriod: string,\n newData: any,\n) => {\n const data = getLocalStorageData();\n if (data) {\n const cache = JSON.parse(data);\n let newCache = cache;\n if (newCache[zNumber]) {\n newCache = {\n ...cache,\n [zNumber]: {\n ...cache[zNumber],\n standard: {\n ...cache[zNumber].standard,\n [timePeriod]: { data: newData, createdAt: current() },\n },\n },\n };\n } else {\n newCache = {\n ...cache,\n [zNumber]: {\n standard: { [timePeriod]: { data: newData, createdAt: current() } },\n custom: {},\n },\n };\n }\n const stringCache = JSON.stringify(newCache);\n clearSpaceInStorage(stringCache, timePeriod);\n }\n};\n\nconst populateCustomCache = (\n zNumber: number,\n timePeriod: string,\n start: string,\n end: string,\n newData: any,\n) => {\n const data = getLocalStorageData();\n if (data) {\n const cache = JSON.parse(data);\n let newCache = cache;\n if (newCache[zNumber]) {\n newCache = {\n ...cache,\n [zNumber]: {\n ...cache[zNumber],\n custom: { ...cache[zNumber].custom, [`${start}_${end}`]: newData },\n },\n };\n } else {\n newCache = {\n ...cache,\n [zNumber]: { standard: {}, custom: { [`${start}_${end}`]: newData } },\n };\n }\n const stringCache = JSON.stringify(newCache);\n clearSpaceInStorage(stringCache, timePeriod);\n }\n};\n\nconst checkCacheForZephyrData = (\n zNumber: number,\n timePeriod: string,\n start: string,\n end: string,\n) => {\n let output = false;\n const data = getLocalStorageData();\n // check whether the cache has been established or not\n if (!data) {\n // make the data request and create the localStorage item\n localStorage.setItem('data', JSON.stringify({ units: [zNumber] }));\n } else {\n // retrieve the current cache from local storage\n const cache = JSON.parse(data);\n // check if the unit exsist already in the unit list\n const newUnitList = cache.units.slice();\n if (cache.units.includes(zNumber)) {\n const idx = newUnitList.indexOf(zNumber);\n newUnitList.splice(idx, 1);\n }\n // update the accessed units list\n const newCache = { ...cache, units: [...newUnitList, zNumber] };\n localStorage.setItem('data', JSON.stringify(newCache));\n const zCache = newCache[zNumber];\n // attempt to locate the data\n if (zCache) {\n if (timePeriod !== 'custom') {\n if (zCache.standard[timePeriod]) {\n if (\n zCache.standard[timePeriod].createdAt >=\n subtractTimeFromNow(15, 'minutes')\n ) {\n output = zCache.standard[timePeriod].data;\n }\n }\n } else if (timePeriod === 'custom') {\n if (zCache.custom[`${start}_${end}`]) {\n output = zCache.custom[`${start}_${end}`];\n }\n }\n }\n return output;\n }\n};\n\nexport const checkDataResponseForData = (\n unaveragedSlotData: {\n [key: string]: { data: number[] };\n },\n objKey: string,\n) => {\n let hasData: any = false;\n if (unaveragedSlotData) {\n const discountedSpecies = [\n 'UTS',\n 'dateTime',\n 'localDateTime',\n 'latitude',\n 'longitude',\n ];\n for (const [speciesKey, speciesValues] of Object.entries(\n unaveragedSlotData,\n )) {\n if (speciesValues.data) {\n const notNull = speciesValues.data.find(\n (dp) => dp !== null && !discountedSpecies.includes(speciesKey),\n );\n\n hasData = notNull;\n if (notNull) {\n hasData = true;\n return hasData;\n }\n }\n }\n }\n return hasData;\n};\n\nexport const convertVZephyrDataToZephyrHistoricalData = (\n unformattedData: any,\n zephyr: Zephyr,\n startDateISO: string,\n endDateISO: string,\n isModelled: boolean,\n zephyrType?: number,\n isSa?: boolean,\n) => {\n const convertedData = zephyrType ? {\n data: {\n 'Hourly average on the hour': {},\n },\n zType: zephyrType\n } : {\n data: {\n 'Hourly average on the hour': {},\n }\n }\n\n if (unformattedData) {\n const currentDate = new Date();\n const estimateDataDelayHrs = 1;\n const dateDataDueISO = new Date(\n new Date(zephyr.userStartTimeDate).setHours(\n new Date(zephyr.userStartTimeDate).getHours() + estimateDataDelayHrs,\n ),\n ).toISOString();\n // check if estimateDataDelayHrs has passed\n if (currentDate.toISOString() > dateDataDueISO) {\n // now check if we have the data\n if (!Array.isArray(unformattedData) && unformattedData && unformattedData.outputs.results.length > 0 && unformattedData.outputs.results[0].values_timestamps.length) {\n // data is ready\n convertedData.data = convertVZephyrRawToCSV(unformattedData, isModelled, !!isSa);\n } else {\n // data is there(empty)because its not ready\n }\n } else {\n // data is not due\n }\n }\n return convertedData;\n};\n\nconst convertVZephyrRawToCSV = (raw: {\n latlon: { longitude: any; latitude: any };\n outputs: { results: any };\n}, isModelled: boolean, isSa: boolean) => {\n const unitHistory: any = {\n 'Hourly average on the hour': { head: {}, slotA: null, slotB: {} },\n '8 hour average at midnight and 8am and 4pm': {\n head: {},\n slotA: null,\n slotB: {},\n },\n '15 min average on the quarter hours': { head: {}, slotA: null, slotB: {} },\n '5 minute averaging on the hour': { head: {}, slotA: null, slotB: {} },\n '1 min average on the minute': { head: {}, slotA: null, slotB: {} },\n 'Daily average at midnight': { head: {}, slotA: null, slotB: {} },\n Unaveraged: { head: {}, slotA: null, slotB: {} },\n };\n for (const [avgKey, avgValue] of Object.entries(unitHistory)) {\n setAveragePties(raw, avgKey, avgValue, unitHistory, isModelled, isSa);\n }\n return unitHistory;\n};\n\nconst setAveragePties = (raw: any, avgKey: any, avgValue: any, unitHistory: any, isModelled: boolean, isSa: boolean) => {\n const localDateTimeDataArr: string[] = [];\n const UTSDataArr: string[] = [];\n const dateTimeDataArr: string[] = [];\n const PM2P5Keys = {\n headerspecimen: 'particulatePM25',\n headerHTMLLabel: 'PM2.5',\n headergroup: 'particulatePM',\n headerlabel: 'PM2.5',\n };\n const { head, slotB }: any = avgValue;\n\n const dateToLocalISO = (date: any) => {\n const off = new Date(date).getTimezoneOffset();\n const absoff = Math.abs(off);\n return (\n new Date(date.getTime() - off * 60 * 1000).toISOString().substr(0, 23) +\n (off > 0 ? '-' : '+') +\n Math.floor(absoff / 60)\n .toFixed(0)\n .padStart(2, '0') +\n ':' +\n (absoff % 60).toString().padStart(2, '0')\n );\n };\n\n const { longitude, latitude } = raw.latlon;\n const { results } = raw.outputs;\n const formattedResults = !isModelled ? results : results.filter((res: { species: string, values_timestamps: any[], units: any, averaging_hours: number }) => {\n if (avgKey === 'Hourly average on the hour' && !isSa) return res.averaging_hours === 1;\n if (avgKey === '8 hour average at midnight and 8am and 4pm' && !isSa) return res.averaging_hours === 8;\n if (avgKey === 'Daily average at midnight' && !isSa) return res.averaging_hours === 24;\n return res;\n });\n \n if (isSa) {\n formattedResults.filter((res: any) => !res.keyword.includes('all')).map((res: any) => {\n switch (avgKey) {\n case 'Hourly average on the hour':\n case '8 hour average at midnight and 8am and 4pm':\n case 'Daily average at midnight': {\n slotB[res.keyword] = {\n data: res && res.values_timestamps && res.values_timestamps.length > 0 ? res.values_timestamps[0].proportion_percentage : null,\n allNull: res.allNull,\n keyword: res.keyword,\n label: res.sa_layer_HTML_label,\n species: res.species,\n units: res.units,\n }\n break;\n }\n default:\n slotB[res.keyword] = {\n data: null\n }\n }\n })\n }\n else {\n formattedResults.map(\n (\n result: { species: string, values_timestamps: any[], units: any } | { species: string, values_timestamps: any[], units: any, averaging_hours: number },\n i: any,\n ) => {\n // hardcoding here as backend data is not similar for vZephyr.\n // need to make it similar for PM2P5\n let headerspecimen = result.species === 'temperature' ? 'ambTempC' : result.species === 'relhum' ? 'ambHumidity' : result.species.toUpperCase();\n\n // they are all the same except for PM2P5\n let headerHTMLLabel = headerspecimen;\n let headergroup = headerspecimen;\n let headerkey = headerspecimen;\n let headerlabel = headerspecimen;\n\n if (headerspecimen === 'PM2P5') {\n headerspecimen = PM2P5Keys.headerspecimen;\n headerHTMLLabel = PM2P5Keys.headerHTMLLabel;\n headergroup = PM2P5Keys.headergroup;\n headerkey = PM2P5Keys.headerspecimen;\n headerlabel = PM2P5Keys.headerlabel;\n }\n\n const startOfDay = new Date();\n\n switch (avgKey) {\n case 'Hourly average on the hour': {\n // make species data\n slotB[headerspecimen] = {\n data: result.values_timestamps.map((values, j) => {\n values.timestamp_start = values.timestamp_start + '+00:00';\n values.timestamp_end = values.timestamp_end + '+00:00';\n // time will be the same for other species,so we get only the first\n const { averaging_hours } = result as { species: string, values_timestamps: any[], units: any, averaging_hours: number };\n if (averaging_hours === 1 || !isModelled) {\n if (i === 0) {\n localDateTimeDataArr.push(\n dateToLocalISO(new Date(!isModelled ? values.timestamp || values.timestamp_start : values.timestamp_start)),\n );\n dateTimeDataArr.push(`${!isModelled ? new Date(values.timestamp || values.timestamp_end).toISOString().slice(0, -5) : values.timestamp_end}+00:00`);\n UTSDataArr.push(\n String(new Date(!isModelled ? values.timestamp || values.timestamp_start : values.timestamp_start).getTime()).slice(0, -3),\n );\n }\n return values.value;\n }\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n\n case '8 hour average at midnight and 8am and 4pm': {\n // every 8 hrs in a day\n const dataToAdd = !isModelled ? !result.hasOwnProperty('averaging_hours') ? new Array(24 / 8).fill(null) : result.values_timestamps : result.values_timestamps;\n slotB[headerspecimen] = {\n data: dataToAdd.map((values, j) => {\n const { averaging_hours } = result as { species: string; values_timestamps: any[]; units: any, averaging_hours: number };\n if (averaging_hours === 8 || !isModelled) {\n if (i === 0) {\n !isModelled && startOfDay.setUTCHours(j * 8, 0, 0, 0);\n localDateTimeDataArr.push(\n dateToLocalISO(new Date(!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay : values.timestamp_start : values.timestamp_start)),\n );\n dateTimeDataArr.push(`${!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay.toISOString().slice(0, -5) : values.timestamp_end : values.timestamp_end}+00:00`);\n UTSDataArr.push(\n String(new Date(!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay : values.timestamp_start : values.timestamp_start).getTime()).slice(0, -3),\n );\n }\n return !isModelled ? !result.hasOwnProperty('averaging_hours') ? values : values.value : values.value;\n }\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n case '15 min average on the quarter hours': {\n // every 15mins in a day\n const dataToAdd = new Array(24 * 4).fill(null);\n slotB[headerspecimen] = {\n data: dataToAdd.map((value, j) => {\n if (i === 0) {\n startOfDay.setUTCHours(j * 0.25, 0, 0, 0);\n localDateTimeDataArr.push(dateToLocalISO(new Date(startOfDay)));\n dateTimeDataArr.push(`${!isModelled ? startOfDay.toISOString().slice(0, -5) : startOfDay}+00:00`);\n UTSDataArr.push(String(startOfDay.getTime()).slice(0, -3));\n }\n return value;\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n case '5 minute averaging on the hour': {\n // every 15mins in a day\n const dataToAdd = new Array(24 * 12).fill(null);\n slotB[headerspecimen] = {\n data: dataToAdd.map((value, j) => {\n if (i === 0) {\n startOfDay.setUTCHours(j * 0.25, 0, 0, 0);\n localDateTimeDataArr.push(dateToLocalISO(new Date(startOfDay)));\n dateTimeDataArr.push(`${startOfDay}+00:00`);\n UTSDataArr.push(String(startOfDay.getTime()).slice(0, -3));\n }\n return value;\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n case '1 min average on the minute': {\n // every 15mins in a day\n const dataToAdd = new Array(24 * 60).fill(null);\n slotB[headerspecimen] = {\n data: dataToAdd.map((value, j) => {\n if (i === 0) {\n startOfDay.setUTCHours(j * 0.25, 0, 0, 0);\n localDateTimeDataArr.push(dateToLocalISO(new Date(startOfDay)));\n dateTimeDataArr.push(`${startOfDay}+00:00`);\n UTSDataArr.push(String(startOfDay.getTime()).slice(0, -3));\n }\n return value;\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n case 'Daily average at midnight': {\n const dataToAdd = !isModelled ? !result.hasOwnProperty('averaging_hours') ? [null] : result.values_timestamps : result.values_timestamps;\n slotB[headerspecimen] = {\n data: dataToAdd.map((values, j) => {\n // time will be the same for other species,so we get only the first\n const { averaging_hours } = result as { species: string; values_timestamps: any[]; units: any, averaging_hours: number };\n if (averaging_hours === 24 || !isModelled) {\n if (i === 0) {\n localDateTimeDataArr.push(\n dateToLocalISO(new Date(!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay : values.timestamp_start : values.timestamp_start)),\n );\n dateTimeDataArr.push(`${!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay.toISOString().slice(0, -5) : values.timestamp_end : values.timestamp_end}+00:00`);\n UTSDataArr.push(\n String(new Date(!isModelled ? !result.hasOwnProperty('averaging_hours') ? startOfDay : values.timestamp_start : values.timestamp_start).getTime()).slice(0, -3),\n );\n }\n return !isModelled ? !result.hasOwnProperty('averaging_hours') ? null : values.value : values.value;\n }\n }),\n\n header: {\n CSVOrder: Object.keys(head).length + i,\n HTMLLabel: headerHTMLLabel,\n group: headergroup,\n key: headerkey,\n label: headerlabel,\n units: result.units,\n },\n };\n break;\n }\n case 'Unaveraged':\n break;\n\n default:\n break;\n }\n slotB.UTS = { data: UTSDataArr };\n slotB.localDateTime = { data: localDateTimeDataArr };\n slotB.dateTime = { data: dateTimeDataArr };\n },\n );\n }\n\n avgValue.head = {\n latitude: {\n data: new Array(localDateTimeDataArr.length).fill(latitude),\n header: {\n CSVOrder: 4,\n HTMLLabel: 'Latitude',\n group: 'latitude',\n key: 'latitude',\n label: 'Latitude',\n units: 'degrees',\n },\n },\n longitude: {\n data: new Array(localDateTimeDataArr.length).fill(longitude),\n header: {\n CSVOrder: 3,\n HTMLLabel: 'Longitude',\n group: 'Longitude',\n key: 'Longitude',\n label: 'Longitude',\n units: 'degrees',\n },\n },\n UTS: {\n data: UTSDataArr,\n header: {\n CSVOrder: 2,\n HTMLLabel: 'Timestamp-UTS',\n group: 'UTS',\n key: 'UTS',\n label: 'Timestamp-UTS',\n units: '',\n },\n },\n localDateTime: {\n data: localDateTimeDataArr,\n header: {\n CSVOrder: 1,\n HTMLLabel: 'Local Timestamp',\n group: 'localDateTime',\n key: 'localDateTime',\n label: 'Timestamp-Local',\n units: ' ',\n },\n },\n dateTime: {\n data: dateTimeDataArr,\n header: {\n CSVOrder: 0,\n HTMLLabel: 'Timestamp',\n group: 'dateTime',\n key: 'dateTime',\n label: 'Timestamp',\n units: ' ',\n },\n },\n };\n};","module.exports = __webpack_public_path__ + \"static/media/icon-maximize.6ca081a0.svg\";","export const styleModalWithCta = {\n position: 'absolute' as 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '90vw',\n bgcolor: 'background.paper',\n boxShadow: 24,\n pt: 2,\n px: 4,\n pb: 3,\n};\n","import * as React from 'react';\nimport styled, { keyframes } from 'styled-components';\n\ntype Props = {\n color: string;\n isActive: boolean;\n isALHDLoading?: boolean;\n};\n\ninterface HSLArray extends Array {\n 0: number;\n 1: number;\n 2: number;\n length: 3;\n}\n\nconst shimmer = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(50%);\n }\n`;\n\nconst ShimmerOverlay = styled.rect`\n fill: url(#shimmerGradient);\n width: 30%;\n height: 26px;\n transform: translateX(-100%);\n animation: ${shimmer} 0.9s infinite linear;\n filter: blur(1px);\n`;\n\nconst SVGBase = styled.svg`\n position: relative;\n transition: all 0.3s ease;\n filter: drop-shadow(0px 4px 6px rgba(0, 0, 0, 0.4));\n cursor: pointer;\n\n & .stroke {\n display: none;\n }\n\n &:hover,\n &.active {\n transform: scale(1.5);\n }\n\n &.active .stroke {\n display: revert;\n }\n\n ${(props) =>\n props.isALHDLoading &&\n `\n filter: blur(0.8px);\n `}\n`;\n\nfunction gammaCorrect(value: number): number {\n return value <= 0.04045 ? value / 12.92 : Math.pow((value + 0.055) / 1.055, 2.4);\n}\n\nfunction rgbaToHsl(rgba: string): HSLArray {\n const defaultHsl: HSLArray = [0, 0, 100];\n\n const match = rgba.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)$/);\n if (!match) return defaultHsl;\n\n // Gamma correction for perceived brightness\n const r = gammaCorrect(Number.parseInt(match[1], 10) / 255);\n const g = gammaCorrect(Number.parseInt(match[2], 10) / 255);\n const b = gammaCorrect(Number.parseInt(match[3], 10) / 255);\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)];\n}\n\nfunction whiteToGrey(rgba: string): string {\n const [h, s, l] = rgbaToHsl(rgba);\n\n // If it's white or near-white, return grey\n if (h === 0 && s === 0 && l >= 95) {\n return 'rgba(192, 202, 212, 1)';\n }\n\n return rgba;\n}\n\nexport function Square({ color, isActive = false }: Props) {\n const convertedColor = whiteToGrey(color);\n const hslColor = rgbaToHsl(convertedColor);\n const [h, s, l] = hslColor;\n\n return (\n \n \n\n \n\n \n\n \n \n );\n}\n\nexport function Circle({\n color = 'rgba(143, 207, 99, 0.6)',\n isActive = false,\n isALHDLoading,\n}: Props) {\n const convertedColor = whiteToGrey(color);\n const hslColor = rgbaToHsl(convertedColor);\n const [h, s, l] = hslColor;\n\n return (\n \n {/* Define the gradient for shimmer effect */}\n {isALHDLoading &&\n \n \n \n \n \n \n\n {/* Define a mask to clip the shimmer effect to the circular area */}\n \n \n \n \n }\n\n \n \n \n \n\n {isALHDLoading && (\n \n )}\n \n );\n}\n\nexport function Triangle({\n color = 'rgba(143, 207, 99, 0.6)',\n isActive = false,\n}: Props) {\n const [h, s, l] = rgbaToHsl(whiteToGrey(color));\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","// Package Imports\nimport React, { useEffect, useRef, useState } from 'react';\n\n// Type Imports\nimport { MappAirSelectedFilter, Zephyr, ZephyrTypes } from '../../utils/interface';\nimport { Circle, Square, Triangle } from './Markers';\nimport styled from 'styled-components';\nimport { filter } from 'jszip';\n\n// Types\ninterface LocationMarkerProps {\n isActive: boolean;\n isVisible: boolean;\n markerColour: string;\n selectUnit: Function;\n showLabel: boolean;\n unit: Zephyr;\n selectedFilters: MappAirSelectedFilter[];\n isALHDLoading: boolean;\n}\ninterface MarkerProps {\n isActive: boolean;\n markerColour: string;\n showLabel: boolean;\n unit: Zephyr;\n isALHDLoading: boolean;\n}\n\n// issue with react fragment, needed to use a normal html element as wrapper(div)\n\nconst MarkerType = ({\n unit,\n markerColour,\n isActive,\n isALHDLoading\n}: MarkerProps) => {\n if (unit.type === ZephyrTypes.virtual) {\n return ;\n }\n if (unit.type === ZephyrTypes.zephyr) {\n return ;\n }\n if (unit.type === ZephyrTypes.aurns) {\n return ;\n }\n\n return (\n
    \n \n {unit.type === 1 ? (\n \n ) : null}\n
    \n \n );\n};\n\nconst Tooltip = styled.div`\n display: none;\n position: absolute;\n bottom: -46px;\n border-radius: 8px;\n background-color: white;\n padding: 6px;\n font-size: 14px;\n border: 1px solid lightgray;\n width: max-content;\n`;\n\nconst LocationMarkerWrapper = styled.div`\n position: relative;\n \n &:hover ${Tooltip} {\n display: block;\n }\n`;\n\nconst LocationMarker = ({\n isActive,\n isVisible,\n markerColour,\n selectUnit,\n showLabel,\n unit,\n selectedFilters,\n isALHDLoading\n}: LocationMarkerProps) => {\n const wrapperRef = useRef(null);\n\n useEffect(() => {\n if (wrapperRef.current) {\n const parentElement = wrapperRef.current.parentElement;\n if (parentElement) {\n parentElement.style.zIndex = isActive ? '1' : '0';\n }\n }\n }, [isActive]);\n\n const handleMouseEnter = () => {\n if (wrapperRef.current) {\n const parentElement = wrapperRef.current.parentElement;\n if (parentElement && !isActive) {\n parentElement.style.zIndex = '2';\n }\n }\n };\n\n const handleMouseLeave = () => {\n if (wrapperRef.current) {\n const parentElement = wrapperRef.current.parentElement;\n if (parentElement && !isActive) {\n parentElement.style.zIndex = '0';\n }\n }\n };\n\n const showLabels = (type: number) => {\n const unitFilter = selectedFilters.find((filters: MappAirSelectedFilter) => {\n return type === 0 ? filters.name === 'zephyr' : type === 100 ? filters.name === 'virtual' : filters.name === 'aurn';\n });\n if (unitFilter) {\n const { showAllLabels, showSelectedLabel } = unitFilter;\n if (!showAllLabels && !showSelectedLabel) return;\n if (showAllLabels) return 'block';\n if (showSelectedLabel) return isActive ? 'block' : undefined;\n }\n }\n return (\n
    \n selectUnit(unit)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n \n\n \n

    {unit.name ?? '-'}

    \n
    \n \n
    \n );\n};\n\nexport default LocationMarker;\n","// Package Imports\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\n// Component Imports\nimport LocationMarker from './LocationMarker';\n\n// Action Imports\nimport { setInitialUnitSet, setZephyr } from '../../actions/zephyrs';\n\n// Util Imports\nimport { colourFinder } from '../../utils/functions/colourFinder';\n\n// Type Imports\nimport {\n MappAirSelectedFilter,\n Overlay as OverlayType,\n ReduxState,\n Stylegroup,\n UserInfo,\n Zephyr,\n ZephyrTypes,\n} from '../../utils/interface';\n\n// Types\ninterface LocationMarkerListProps {\n curOverlayName: string;\n curZephyr?: Zephyr;\n overlays: OverlayType[];\n setCancelPopup: Function;\n setZephyr: Function;\n stylegroups: Stylegroup[];\n threshold: string;\n unitFilters: MappAirSelectedFilter[];\n unitList: Zephyr[];\n points: any;\n isAnalysis: boolean;\n hasInitialUnitSet: boolean;\n setInitialUnitSet: Function;\n selectedFilters: MappAirSelectedFilter[];\n userInfo: UserInfo;\n}\n\n// Component\nconst LocationMarkerList = ({\n curOverlayName,\n curZephyr,\n overlays,\n setCancelPopup,\n setZephyr,\n stylegroups,\n threshold,\n unitFilters,\n unitList,\n points,\n isAnalysis,\n hasInitialUnitSet,\n setInitialUnitSet,\n selectedFilters,\n userInfo,\n}: LocationMarkerListProps) => {\n // Functions\n const getMarkerColour = (unit: Zephyr) => {\n let markerColour = 'rgba(192, 202, 212, 1)';\n const curOverlay = overlays.filter((ol) => ol.name === curOverlayName)[0];\n const opacity = 0.8;\n\n if (overlays && curOverlay && unit && unit.averageOfLastHourOfData) {\n markerColour =\n colourFinder(\n curOverlay,\n stylegroups,\n threshold,\n opacity,\n overlays,\n unit.averageOfLastHourOfData[curOverlay.speciesIdentifier],\n unit.type === ZephyrTypes.virtual ? 'virtual' : 'zephyr',\n ) || markerColour;\n }\n\n return markerColour;\n };\n\n const filterApproved = (unitType: number) => {\n // TODO: Move to consts\n const typeMap = ['zephyr', 'aurn'];\n\n switch (unitType) {\n case 0:\n case 1:\n return (\n unitFilters.filter((uf) => uf.name === typeMap[unitType]).length > 0\n );\n case 100:\n return unitFilters.filter((uf) => uf.name === 'virtual').length > 0;\n default:\n return false;\n }\n };\n\n const labelFilterApproved = (unitId: number, unitType: number) => {\n const typeMap = ['zephyr', 'aurn'];\n\n let unitTypeFilter: any[] = [];\n switch (unitType) {\n case 0:\n case 1:\n unitTypeFilter = unitFilters.filter(\n (uf) => uf.name === typeMap[unitType],\n );\n break;\n case 100:\n unitTypeFilter = unitFilters.filter((uf) => uf.name === 'virtual');\n break;\n default:\n unitTypeFilter = [];\n break;\n }\n\n if (unitTypeFilter.length) {\n return (\n unitTypeFilter[0].showAllLabels ||\n (unitTypeFilter[0].showSelectedLabel && unitActive(unitId))\n );\n }\n return false;\n };\n\n const selectUnit = (unit: Zephyr) => {\n if (!hasInitialUnitSet) setInitialUnitSet(true);\n setCancelPopup(true);\n setZephyr(unit);\n };\n\n const unitActive = (unitId: number) => {\n if (curZephyr) {\n return curZephyr.id_pod === unitId;\n }\n return false;\n };\n\n return (\n
    \n {unitList.length > 0 ? (\n <>\n {unitList.map((unit, i) => {\n const color = isAnalysis ? 'rgba(78, 115, 195, .9)' : getMarkerColour(unit);\n\n return (\n \n );\n })}\n \n ) : null}\n
    \n );\n};\n\n// Redux\nconst mapStateToProps = (state: ReduxState) => ({\n hasInitialUnitSet: state.setZephyr.hasInitialSet,\n selectedFilters: state.mappAirFilters.selectedFilters,\n userInfo: state.auth.userInfo,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n setZephyr,\n setInitialUnitSet\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LocationMarkerList);\n","module.exports = __webpack_public_path__ + \"static/media/icon-kebab-sg.a2bb3625.svg\";","module.exports = __webpack_public_path__ + \"static/media/layers.2246b4f1.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/icon-drag.19a9d959.svg\";","module.exports = __webpack_public_path__ + \"static/media/bin.eff458e3.svg\";","module.exports = __webpack_public_path__ + \"static/media/run-view.13c10aba.svg\";","module.exports = __webpack_public_path__ + \"static/media/arrow-right.ba5318b2.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-chevron.0f16a142.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-close.e1dc03a8.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/add-widget.cee9a59d.svg\";","module.exports = __webpack_public_path__ + \"static/media/refresh-icon.9ce3d185.svg\";","// Module Type Imports\nimport Geometry from 'ol/geom/Geometry';\nimport { ModularFeatures } from '../reducers/modularFeatures';\n\n// Interfaces\n\n// Start Dynamic Charts\nexport interface ChartProps {\n [key: string]: any; // This allows any number of properties with any type\n}\nexport interface GridItemInfo {\n i: string;\n uid: string;\n type?: string;\n name: string;\n}\nexport interface LayoutItem {\n // A string corresponding to the component key\n i: string;\n id?: string;\n type?: string;\n\n // These are all in grid units, not pixels\n x: number;\n y: number;\n w: number;\n h: number;\n minW?: number;\n maxW?: number;\n minH?: number;\n maxH?: number;\n add?: boolean;\n // If true, equal to `isDraggable: false, isResizable: false`.\n static?: boolean;\n // If false, will not be draggable. Overrides `static`.\n isDraggable?: boolean;\n // If false, will not be resizable. Overrides `static`.\n isResizable?: boolean;\n // By default, a handle is only shown on the bottom-right (southeast) corner.\n // As of RGL >= 1.4.0, resizing on any corner works just fine!\n resizeHandles?: Array<'s' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne'>;\n // If true and draggable, item will be moved only within grid.\n isBounded?: boolean;\n isRemoved?: boolean;\n}\n\nexport interface LayoutMapItem {\n i: string;\n uid: string;\n type?: string;\n name: string;\n}\n\n// End Dynamic Charts\n\nexport interface ActiveTab {\n group: SpeciesGroupOptions;\n tab: SpeciesDataIdentifiers[];\n labels: SpeciesDataLabels[];\n}\n\nexport interface Agreement {\n id: number;\n terms: string;\n}\n\nexport interface AirAlerts {\n alerts: AlertObject[];\n}\n\nexport interface SpeciesData {\n username: string;\n userkey: string;\n Znumbers: number[];\n Species: string;\n Threshold: number;\n Comparator: string;\n Duration: number; //This duration is in minutes\n}\n\nexport interface BatteryAlert {\n id: string;\n znum: number;\n batteryVoltage: number;\n externalVoltage: number;\n batteryCharge: number;\n status: boolean;\n comparator: string;\n}\n\nexport interface SpeciesAlert {\n alertLevel: number | null;\n period: AlertPeriod;\n repeat: AlertRepeat;\n species: SpeciesDataIdentifiers;\n threshold: AlertThreshold;\n}\n\nexport interface AlertObject {\n airAlerts: SpeciesData[];\n batteryAlert: BatteryAlert;\n email: string[];\n phoneNumbers: string[];\n // TBD\n id: number | null;\n name: string | null;\n status: boolean;\n units: number[];\n}\n\nexport interface AlertMappedSpeciesExtent {\n alertLevel: string;\n dataIdentifier: SpeciesDataIdentifiers;\n HTMLLabel: string;\n HTMLShortUnitLabel: string;\n HTMLUnitLabel: string;\n id: string;\n period: AlertPeriod;\n repeat: AlertRepeat;\n speciesExtentIdentifier: SpeciesExtentIdentifiers;\n status: boolean;\n threshold: AlertThreshold;\n [key: string]: string | boolean;\n}\n\nexport interface AlertPeriodMap {\n formattedPeriod: AlertPeriodFormatted;\n rawPeriod: AlertPeriod;\n}\n\nexport interface AlertRepeatMap {\n formattedRepeat: AlertRepeatFormatted;\n rawRepeat: AlertRepeat;\n}\n\nexport interface AlertThresholdMap {\n formattedThreshold: AlertThresholdFormatted;\n rawThreshold: AlertThreshold;\n postVerb: 'than' | 'to';\n}\n\nexport interface Alerts {\n agreements: Agreement[];\n on: boolean;\n}\n\nexport interface APIAirAlert {\n name: string;\n userId: number;\n alertId: number;\n phoneNumber: string | null;\n EmailAddress: string | null;\n TargetGroups: number;\n alertClassId: number;\n startDate: string;\n endDate: string | null;\n interval: number;\n timeOffset: number;\n ZephyrNumber: number;\n targets: APIAirAlertTarget[];\n jsonOutput: string;\n}\n\nexport interface AlertModel {\n AlertId: number | null;\n Name: string | null;\n AlertClassId: number;\n Organisation: string | null;\n FirstName: string;\n LastName: string;\n PhoneNumber: string | null;\n EmailAddress: string | null;\n StartDate: string;\n EndDate: string | null;\n Interval: number;\n TimeOffset: number;\n // TBD\n Targets: APIAirAlertTarget[];\n JsonInput: SpeciesData[];\n}\n\nexport interface APIAirAlertPost {\n Alerts: AlertModel;\n}\n\nexport interface APIAirAlertParameter {\n AlertObject?: number | null;\n Name: string;\n IsInput: boolean;\n Value: number | null;\n StringValue: SpeciesDataIdentifiers | string | null;\n Units: null;\n}\n\nexport interface APIAirAlertTarget {\n targetId: number;\n firstName: string;\n lastName: string;\n emailAddress: string | null;\n phoneNumber: string | null;\n organisation: string | null;\n alertId: number | null;\n}\n\nexport interface APIZephyrList {\n query: string;\n userName: string;\n usersZephyrs: {\n current: {\n [key: number]: Zephyr;\n };\n past: {\n [key: number]: Zephyr;\n };\n };\n}\n\nexport interface AddVZephyr {\n addVZIconClicked: boolean;\n cursorIconDropped: boolean;\n settings: {\n lat: number,\n lon: number,\n locationName: any\n } | null,\n virtualZephyrName: string;\n vzCreationMenuOpened: boolean;\n initCursorPosition: { x: number, y: number };\n}\n\nexport interface DisplayConfig {\n met?: Met[];\n tabs: Tab[];\n sources: Sources[];\n speciesExtent: SpeciesExtent[];\n windCategories: WindCategory[];\n}\n\nexport interface AppIntro {\n body: string;\n header: string;\n on: boolean;\n tourLink: boolean;\n}\n\nexport interface AQ101 {\n on: boolean;\n sectionId: string;\n}\n\nexport interface AnnualAvgList {\n species: string;\n units: string;\n latlon: any;\n values_timestamps: { timestamp: string; units: string; value: number }[];\n}\nexport interface AnnualAvgResultData {\n meta: {\n keyword: string;\n speciesList: string[];\n timestamps: string[];\n };\n results: any;\n}\n\n// eslint-disable-next-line no-shadow\nexport enum StateStatus {\n idle = 'idle',\n loading = 'loading',\n failed = 'failed',\n succeeded = 'succeeded',\n}\n\nexport interface MapAirPointValueHistoryData {\n saValue: SAData | null;\n valueHistory: TodayData | null;\n status: StateStatus;\n}\n\nexport interface AnnualAvgData {\n list: AnnualAvgList | null;\n raw: AnnualAvgResultData | null;\n chart: { labels: Date[]; datasets: LineChartData[] };\n}\n\nexport interface AnnualAvgTabs {\n chart: boolean;\n list: boolean;\n [key: string]: boolean;\n}\n\nexport interface AQLatestMeasurementDataTabs {\n zephyr: boolean;\n met: boolean;\n other: boolean;\n [key: string]: boolean;\n}\n\nexport interface AQModelDataTabs {\n aqmSA: boolean;\n aqmTemp: boolean;\n aqmWind: boolean;\n [key: string]: boolean;\n}\n\nexport interface AQOptionsMap {\n label: string;\n value: AQOptionsValues;\n}\n\nexport interface AnnualAvgTabMap {\n label: string;\n value: string;\n}\n\nexport interface AQTabs {\n aqData: boolean;\n aqColourscale: boolean;\n aqModelData: boolean;\n annualAvg: boolean;\n [key: string]: boolean;\n}\n\nexport interface AreaConfig {\n areaSize: number | null;\n centreHdms: string | null;\n latLngGeometry: Geometry | null;\n}\n\nexport interface Aside {\n on: boolean;\n}\n\nexport interface AsideOverlaysSpeciesMap {\n speciesMap: { type: UnitOverlayTypes; label: string }[];\n}\nexport interface FleetManagementSpeciesMap {\n speciesMap: {\n type: UnitOverlayTypes;\n label: string;\n checked: boolean;\n zType: number;\n }[];\n}\n\nexport interface AsideUnitMetricsMap {\n metricsFrequencyMap: { item: string; header: string }[];\n metricsStatusMap: { item: string; header: string; unit: string }[];\n}\n\nexport interface Auth {\n token: string | null;\n isAuthenticated: boolean;\n loading: boolean;\n user: string | null;\n userInfo: UserInfo;\n loginFailed: boolean;\n bearerToken: string | null;\n}\n\nexport interface AuthProps {\n internal: boolean;\n isAuthenticated: boolean;\n password: string;\n queryString: UrlQueryStringParams | null;\n username: string;\n}\n\nexport interface AveragingPeriod {\n labelHTML: AveragingLabels;\n averagingOption: AveragingOptions;\n}\n\nexport interface AveragingPeriods {\n periods: AveragingPeriod[];\n}\n\nexport interface BarChartDataPoints {\n label: string;\n y: number;\n}\n\nexport interface CardinalDirections {\n minDegrees: number;\n dirName: string;\n}\n\nexport interface ChartData {\n labels: Date[];\n datasets: LineChartData[];\n}\n\nexport interface ComponentContent {\n [key: string]: string;\n}\n\nexport interface ContactForm {\n formData: {\n details: string;\n email: string;\n enquiry: string;\n comments: string;\n company: string;\n firstName: string;\n lastName: string;\n };\n userMessage: string;\n}\n\nexport interface ContactFormMappair {\n formData: {\n area: AreaConfig;\n comments: string;\n company: string;\n email: string;\n firstName: string;\n lastName: string;\n pollutants: string[];\n [key: string]:\n | string\n | number\n | AreaConfig\n | ContactFormSelection[]\n | string[];\n };\n userMessage: string;\n}\n\nexport interface ContactFormSelection {\n value: string;\n label: string;\n}\n\nexport interface ContactFormSelectionLookup {\n [key: string]: ContactFormSelection[];\n}\n\nexport interface ContactFormZephyr {\n formData: {\n firstName: string;\n lastName: string;\n email: string;\n company: string;\n zephyrs: number;\n powerOption: string;\n species: ContactFormSelection[];\n [key: string]: string | number | ContactFormSelection[];\n };\n userMessage: string;\n}\n\nexport interface CookieSettings {\n name: string;\n expiry: number;\n}\n\nexport interface Colour {\n r: string;\n g: string;\n b: string;\n [key: string]: string;\n}\n\nexport interface Config {\n machine: string;\n alertsAPI: string | undefined;\n mappairAPI: string | undefined;\n zephyrAPI: string | undefined;\n zephyrDataAPI: string;\n vZephyrAPI: string | undefined;\n mappairTiledAPI: string | undefined;\n masterAuthAPI: string | undefined;\n myAirApi: string | undefined;\n enableGridDragAndDrop?: any;\n enableAutoLoadFirstView?: boolean;\n sentryENABLED?: boolean;\n sentryDSN?: string;\n sentryRELEASE?: string;\n sentryENVIRONMENT?: string;\n}\n\nexport interface VZephyrsConfig {\n active: number;\n max: number;\n new30Days: number;\n new30DaysMax: number;\n}\n\nexport interface Credentials {\n token: string;\n user: string;\n key: string;\n}\n\nexport interface CsvData {\n 'Timestamp(UTC)': string;\n [key: string]: number | string | null;\n}\n\nexport interface DataConfig {\n averagingChain: number;\n ctv: string;\n}\n\nexport interface Days {\n [key: number]: DayOptions;\n}\n\nexport interface DropdownSelection {\n label: string;\n value: string;\n}\n\nexport interface EnhancedThreshold {\n name: string;\n min: number;\n r: number;\n g: number;\n b: number;\n max: number | null;\n}\n\nexport interface ExternalMetData {\n dateTime: string;\n humidity: number;\n locationId: number;\n locationLat: number;\n locationLon: number;\n siteId: number;\n siteLat: number;\n siteLon: number;\n siteName: string;\n temp: number;\n windDir: number;\n windSpeed: number;\n [key: string]: number | string;\n}\n\nexport interface Feedback {\n idx: 0;\n on: boolean;\n oneTimeAutomation: boolean;\n questions: FeedbackQuestion[];\n}\n\nexport interface FeedbackQuestion {\n comments: boolean;\n commentsQuestion: string;\n max: number;\n min: number;\n mufId: number;\n name: string;\n order: number;\n question: string;\n}\n\nexport interface GetZephyrHistoricalData {\n zephyrHistory: ZephyrHistory | null;\n loading: boolean;\n zType?: number | null;\n isHistoricalDataNull?: boolean;\n}\n\nexport interface getZephyrMeasurementData {\n zephyrHistory: ZephyrHistory | null;\n loading: boolean;\n}\n\nexport interface GetZephyrs {\n zephyrs: Zephyr[];\n loading: boolean;\n}\n\nexport interface GoogleLocation {\n address_components: any;\n formatted_address: string;\n types: GoogleLocationTypes[];\n}\n\nexport interface GooglePlace {\n description: string;\n place_id: string;\n}\n\nexport interface GtmConfig {\n gtmId: string;\n auth: string;\n preview: string;\n}\n\nexport interface GtmEventIdentifiers {\n [key: string]: string;\n}\n\nexport interface GtmEvents {\n [key: string]: {\n category: string;\n action: string;\n label: string;\n value: number;\n };\n}\n\nexport interface HighDefinitionPointsGroup {\n users: string[];\n layers: HighDefinitionPointsLayer[];\n}\n\nexport interface HighDefinitionPointsLayer {\n curOverlay: string;\n highDefRef: string;\n extent: number[][];\n}\n\nexport interface Keys {\n [key: string]: string;\n}\n\nexport interface LatestPublicMeasurement {\n identifier: SpeciesDataIdentifiers;\n HTMLLabel: string;\n HTMLUnitLabel: string;\n value: number;\n}\n\nexport interface LineChartData {\n borderDash: number[];\n borderDash2: BorderDashStrings;\n data: number[] | string[] | null[];\n defaultColour: string;\n featureColour: string;\n hidden: boolean;\n label: string;\n species: SpeciesDataIdentifiers;\n speciesLabel: SpeciesDataLabels | any;\n speciesObj: Species;\n unitId: number;\n unitNameLabel: string;\n}\n\nexport interface LineChartDataPoints {\n x: Date;\n y: number | null;\n}\n\nexport interface LineChartDataEnriched {\n axisYType?: string;\n axisYIndex?: number;\n click: Function;\n cursor: CursorOptions;\n dataPoints: LineChartDataPoints[];\n label: SpeciesDataLabels;\n lineColor: string;\n lineDashType: BorderDashStrings;\n markerBorderColor: string;\n markerBorderThickness: number;\n markerColor: string;\n markerSize: number;\n name: string;\n type: ChartOptions;\n visible: boolean;\n xValueFormatString: string;\n}\n\nexport interface Location {\n location: LocationCoordinates;\n}\n\nexport interface LocationCoordinates {\n 0: number;\n 1: number;\n}\n\nexport interface Link {\n content?: string;\n precedingContent?: string;\n target: LinkTargetOptions;\n url: string;\n}\n\nexport interface Loading {\n aurnLastHour: boolean;\n initApp: boolean;\n zephyrLastHour: boolean;\n}\n\nexport interface MappAirFilters {\n selectedFilters: MappAirSelectedFilter[];\n showMappAirFilters: boolean;\n}\n\nexport interface MappAirFilterToggles {\n value: MappAirFilterOverlayToggles;\n label: string;\n}\n\nexport interface MappAirSelectedFilter {\n name: UnitOverlayTypes;\n showAllLabels: boolean;\n showSelectedLabel: boolean;\n [key: string]: boolean | UnitOverlayTypes;\n}\n\nexport interface MapsLocationLoaded {\n mapsLoaded: boolean;\n}\n\nexport interface Met {\n group: string;\n species: MetSpecies[];\n}\n\nexport interface MetSpecies {\n dataIdentifier: SpeciesDataIdentifiers;\n HTMLExposedUnitLabel: SpeciesUnits;\n HTMLLabel: string;\n HTMLShortUnitLabel: SpeciesUnitsWrapped;\n HTMLUnitLabel: SpeciesDataLabels;\n}\n\nexport interface Modal {\n contact: boolean;\n data: boolean;\n mappairQuote: boolean;\n mappairTimeseries: boolean;\n zephyrQuote: boolean;\n}\n\nexport interface ObjectMap {\n [key: string]: string;\n}\n\nexport interface Overlay {\n accessGranted: boolean;\n isMappairOverlay: boolean;\n isSAOverlay: boolean;\n name: string;\n nameHTML: string;\n speciesIdentifier: string;\n species: string;\n keyword: string;\n layername?: string;\n displayOrder?: number;\n}\n\nexport interface Overlays {\n [index: number]: { name: string; nameHTML: string };\n}\n\nexport interface Paths {\n [key: string]: string;\n}\n\nexport interface Periods {\n [key: string]: { quantity: number; unit: string };\n}\n\nexport interface PlaceholderAxis {\n labelFontSize: number;\n title: string;\n tickLength: number;\n lineThickness: number;\n margin: number;\n}\n\nexport interface PlaceholderAxisConfig {\n idx: number;\n maximum: number | null;\n minimum: number | null;\n title: string;\n}\n\nexport interface PlacePrediction {\n description: string;\n placeId: string;\n}\n\nexport interface PublicAdvice {\n advice: string;\n advice_sensitive: string;\n behavioural_change: string;\n label: string;\n lower_limit_value: number;\n species: string;\n}\n\nexport interface publicAdviceArr {\n advice: PublicAdvice[][];\n}\n\nexport interface PointValues {\n colour: string;\n coordinates: LocationCoordinates;\n hdms: string;\n hdRef: string | null;\n namedLocation: GoogleLocation[] | null;\n pixels: number[];\n position: number[];\n saValue: SAData | null;\n // Used for the PP to display advice for aqi\n secondaryValue: number | null;\n value: number | null;\n valueHistory: TodayData | null;\n}\n\nexport interface PolarPlots {\n windRose: string;\n [key: string]: string;\n}\n\nexport interface PolarPlotData {\n ws: number[];\n wd: number[];\n [key: string]: number[];\n Authorization?: any;\n}\n\nexport interface ReduxState {\n [x: string]: any;\n airAlerts: AirAlerts;\n alerts: Alerts;\n aq101: AQ101;\n aside: Aside;\n auth: Auth;\n dataConfig: DataConfig;\n draggedUnit: Zephyr | null;\n feedback: Feedback;\n getStyleGroups: Stylegroups;\n getZephyrs: GetZephyrs;\n getZephyrHistoricalData: getZephyrMeasurementData;\n loading: Loading;\n mappAirFilters: MappAirFilters;\n mapsLocationLoaded: MapsLocationLoaded;\n modal: Modal;\n publicAdvice: publicAdviceArr;\n queryStringParams: UrlQueryStringParams;\n showAQMALayer: ShowAQMALayer;\n setAveragingPeriods: AveragingPeriods;\n setDisplayConfig: DisplayConfig;\n setLocation: Location;\n setOverlays: Overlay[];\n setThresholdTab: ThresholdTab;\n setTimePeriods: TimePeriods;\n setTodayData: TodayData | null;\n setUnitLocation: Location;\n setUserConfig: UserConfig;\n setVersions: Version[];\n setZephyr: SetZephyr;\n tour: Tour;\n annualAvgData: AnnualAvgData;\n locale: any;\n modularFeatures: ModularFeatures;\n unitHistoriesOptions: UnitHistoriesOptions;\n thresholds: ThresholdsList;\n\n analysisTourOpen: boolean;\n alertsTourOpen: boolean;\n selectChartModeOpen: boolean;\n selectedChartViewMode: 'deviceView' | 'networkView' | 'comparisonView';\n addVZephyrs: AddVZephyr;\n}\n\nexport interface RequestError {\n errorType: string | number | null;\n unitId: number;\n unitName: string;\n}\n\nexport interface SAChartData {\n data: {\n color: string;\n cursor: CursorOptions;\n dataPoints: BarChartDataPoints[];\n dataPointMinWidth: number;\n type: ChartOptions;\n }[];\n meta: {\n total: number;\n };\n}\n\nexport interface SAData {\n auxinfo: { species: string; layer_names: string[][] }[];\n meta: {\n speciesList: string[];\n timestamps: string[];\n };\n results: SAResult[];\n}\n\nexport interface SADataSet {\n data: number[] | string[] | null[];\n backgroundColor: string[];\n borderWidth: number;\n}\n\nexport interface SAResult {\n species: string;\n units: string;\n values_coordinates: SAResultData[];\n}\n\nexport interface SAResultData {\n latlon: { lat: number; lon: number };\n values_timestamps: { timestamp: string; value: number }[];\n}\n\nexport interface SecondaryAxisConfig {\n idx: number;\n maximum: number | null;\n minimum: number | null;\n title: string;\n void?: boolean;\n}\n\nexport interface SetZephyr {\n editMode: boolean;\n set: boolean;\n zephyr: Zephyr;\n hasInitialSet: boolean;\n}\n\nexport interface ShowAQMALayer {\n opacity: number;\n overlay: string;\n mappairPointModeOn: boolean;\n showAQMALayer: boolean;\n showSchoolsLayer: boolean;\n showSmokeControlZones: boolean;\n showOverlayLayer: boolean;\n showSatelliteLayer: boolean;\n showOSM: boolean;\n showAALayer: boolean;\n annualAverage: number | null;\n}\n\nexport interface Slot {\n HTMLLabel: string;\n label: string;\n}\n\nexport interface SlotsInfo {\n slotA: ZephyrConfigSlot | null;\n slotB: ZephyrConfigSlot | null;\n [key: string]: ZephyrConfigSlot | null;\n}\n\nexport interface Sources {\n colour: Colour;\n HTMLExposedUnitLabel: SpeciesUnits;\n HTMLShortUnitLabel: SpeciesUnitsWrapped;\n source: SourceOptions;\n}\n\nexport interface Species {\n colour: Colour[];\n dataIdentifier: SpeciesDataIdentifiers;\n dataIdentifiers: SpeciesDataIdentifiers[];\n HTMLExposedUnitLabel: SpeciesUnits;\n HTMLLabel: string;\n HTMLUnitLabel: SpeciesDataLabels;\n HTMLShortUnitLabel: SpeciesUnitsWrapped;\n label: string;\n // Scales\n maximum: number | boolean;\n minimum: number | boolean;\n // Conversions\n conversionDivider: number | boolean;\n conversionMultiplier: number | boolean;\n secondaryAxis: boolean;\n}\n\nexport interface SpeciesExtent {\n dataIdentifier: SpeciesExtentIdentifiers;\n species: SpeciesExtentInd[];\n}\nexport interface SpeciesExtentInd {\n HTMLLabel: string;\n HTMLUnitLabel: SpeciesDataLabels;\n HTMLShortUnitLabel: string;\n}\n\nexport interface SpeciesExtentIndEnriched {\n dataIdentifier: SpeciesDataIdentifiers;\n HTMLLabel: string;\n HTMLUnitLabel: SpeciesDataLabels;\n HTMLShortUnitLabel: string;\n speciesExtentIdentifier: SpeciesExtentIdentifiers;\n}\n\nexport interface SpeciesMap {\n [key: string]: string;\n}\n\nexport interface StrippedTab {\n group: SpeciesGroupOptions;\n HTMLGroupLabel: string;\n curSlot?: SlotOptions | null;\n}\n\nexport interface Stylegroup {\n displayedDescriptionHTML: string;\n displayedDescriptionNameHTML?: string;\n displayedName: string;\n displayedNameHTML: string;\n name: string;\n thresholds: { [key: string]: Threshold[] };\n}\n\nexport interface Stylegroups {\n styleGroups: Stylegroup[];\n}\n\nexport interface Tab {\n group: SpeciesGroupOptions;\n context: ContextOptions;\n contextLabel: string;\n HTMLGroupLabel: string;\n species: Species[];\n}\n\nexport interface Threshold {\n b: number;\n g: number;\n r: number;\n min: number;\n name: string;\n}\n\nexport interface TilingGroup {\n layers: TilingLayer[];\n name: string;\n}\n\nexport interface TilingLayer {\n extent: number[][] | undefined;\n layer: string;\n level: number;\n name: string;\n owner: string;\n}\n\nexport interface Timezone {\n endLocal: string;\n endUTC: string;\n startLocal: string;\n startUTC: string;\n timezone: string;\n}\n\nexport interface TimePeriod {\n labelHTML: PeriodLabels;\n timeOption: PeriodOptions;\n}\n\nexport interface TimePeriods {\n periods: TimePeriod[];\n}\n\nexport interface ThresholdTab {\n tab: string;\n}\n\nexport interface TodayData {\n meta: {\n species_list: string[];\n timestamps: string[];\n };\n results: TodayDataset[];\n location: {\n latlon: LocationCoordinates;\n desc: string;\n };\n}\n\nexport interface TodayDataset {\n species: string;\n units: SpeciesUnits;\n values_coordinates: {\n latlon: {\n lat: number;\n lon: number;\n };\n values_timestamps: {\n advice: string;\n advice_sensitive: string;\n behavioural_change: string;\n label: string;\n timestamp: string;\n value: number;\n }[];\n }[];\n}\n\nexport interface TodayDatasetPackaged {\n advice: string;\n advice_sensitive: string;\n behavioural_change: string;\n day: string;\n label: string;\n species: string;\n timestamp: string;\n unit: SpeciesUnits;\n value: number;\n}\n\nexport interface TodayDatasetsPackaged {\n [key: string]: any;\n data: TodayDatasetPackaged[][];\n location: {\n desc: string;\n latlon: LocationCoordinates;\n };\n species: string[];\n}\n\nexport interface TodayInfoSection {\n customTitle: string;\n postText: string;\n preText: string;\n // This links to an AQ101 section id\n spanSectionLink: string;\n spanText: string;\n}\n\nexport interface TodaySubspeciesMap {\n label: string;\n speciesRef: string;\n}\n\nexport interface Tour {\n clickMap: boolean;\n openAside: boolean;\n openAsideFilter: boolean;\n openAQIndex: {\n openAQData: boolean;\n openAQColourscale: boolean;\n openAQMAIndex: boolean;\n openAQModelData: boolean;\n };\n openHelp: boolean;\n openLocationSearch: boolean;\n openTour: boolean;\n}\n\nexport interface UnitSelection {\n HTMLLabel: UnitSelectionLabels;\n type: UnitSelectionTypes;\n}\n\nexport interface UnitSelections {\n unitSelectionOptions: UnitSelection[];\n}\n\nexport interface UnitStatus {\n HTMLLabel: string;\n type: string;\n}\n\nexport interface UrlQueryStringParams {\n ctv: string;\n diagnostics: string;\n [id: string]: string;\n}\n\nexport interface UserConfig {\n latestVersionViewed: number;\n showTour: boolean;\n}\n\nexport interface UserInfo {\n appIntro: AppIntro | null;\n authorityLink: string;\n caching: number;\n info: string;\n isInternal: boolean;\n isPublic: boolean;\n logo: string | null;\n maxLat: number;\n maxLng: number;\n minLat: number;\n minLng: number;\n projectLink: string;\n startingLat: number;\n startingLng: number;\n startingZoom: number;\n subtitle: string;\n today: boolean;\n todayCustomInfo: TodayInfoSection | null;\n todaySpecies: MappairSpecies | null;\n title: string;\n showDetailedZephyrInfo: boolean;\n showSmileyFaces: boolean;\n userCustomInfo: UserInfoSection | null;\n userStandardInfo: UserInfoSection | null;\n mappair: boolean;\n}\n\nexport interface UserInfoSubSection {\n id: string;\n header: string;\n html: string;\n}\n\nexport interface UserInfoSection {\n sections: UserInfoSubSection[];\n}\n\nexport interface Version {\n versionId: number;\n versionNotes: string;\n versionRef: string;\n}\n\nexport interface WindCategory {\n colour: Colour;\n minVal: number;\n name: string;\n unit: SpeciesUnits;\n}\n\nexport interface WindPackagedData {\n dateTime: string[];\n direction: number[];\n speed: number[];\n [key: string]: string[] | number[];\n}\n\nexport interface WindRoseData {\n hoverinfo: string;\n marker: { color: string };\n name: string;\n r: number[];\n theta: string[];\n type: any;\n unit: SpeciesUnits;\n}\n\nexport interface VirtualZephyr {\n [x: string]: any;\n id: number;\n name: string;\n description: string | null;\n latlon: VirtualZephyrLocation;\n sampleFreqMins: number;\n startdt: string;\n endDt: string;\n}\n\nexport interface VirtualZephyrData {\n id: number;\n name: string;\n description: string | null;\n latlon: VirtualZephyrLocation;\n outputs: VirtualZephyrResults;\n}\n\nexport interface VirtualZephyrResults {\n results: any[];\n}\n\nexport interface VirtualZephyrLocation {\n latitude: string;\n longitude: string;\n}\n\nexport interface Zephyr {\n HasMetStation?: 0 | 1;\n HasCertificate: 0 | 1 | null;\n averageOfLastHourOfData: ZephyrLastHourInd | null | any;\n SampPeriod: number | null;\n alias: string;\n backLogCount: number | null;\n batteryCharge: number | null;\n batteryVoltage: string | null;\n externalMetData: ExternalMetData | null;\n externalVoltage: string | null;\n firmwareVersion: string | null;\n id_location: number | null;\n id_pod: number;\n lastConnectionDT: string | null;\n lastDataDT: string | null;\n latLngAltered: string | null;\n latitude: string;\n location: string;\n locationStartTimeDate: string | null;\n locationType: number | null;\n longitude: string;\n measurementCount: number | null;\n mobileLocation: number | null;\n name: string;\n serialNumber: string | null;\n slotA_SN: string | null;\n slotA_start: string | null;\n slotB_SN: string | null;\n slotB_start: string | null;\n slotsInfo: SlotsInfo;\n type: ZephyrTypes;\n userEndTimeDate: string | null;\n userStartTimeDate: string;\n zNumber: number;\n [key: string]: any;\n}\n\nexport enum ZephyrTypes {\n zephyr = 0,\n aurns = 1,\n virtual = 100,\n}\n\nexport interface ZephyrAlert {\n battery: boolean;\n charge: boolean;\n data: boolean;\n power: boolean;\n solar: boolean;\n [key: string]: boolean;\n}\n\nexport interface ZephyrAlertUnit {\n alertStatus: boolean;\n HasCertificate: 0 | 1 | null;\n averageOfLastHourOfData: ZephyrLastHourInd | null;\n alias: string | null;\n backLogCount: number | null;\n batteryCharge: number | null;\n batteryVoltage: string | null;\n externalMetData: ExternalMetData | null;\n externalVoltage: string | null;\n firmwareVersion: string | null;\n id_location: number | null;\n id_pod: number;\n lastConnectionDT: string | null;\n lastDataDT: string | null;\n latLngAltered: string | null;\n latitude: string | null;\n location: string;\n locationStartTimeDate: string | null;\n locationType: number | null;\n longitude: string | null;\n measurementCount: number | null;\n mobileLocation: number | null;\n name: string;\n serialNumber: string | null;\n slotA_SN: string | null;\n slotA_start: string | null;\n slotB_SN: string | null;\n slotB_start: string | null;\n slotsInfo: SlotsInfo | null;\n type: number;\n userEndTimeDate: string | null;\n userStartTimeDate: string;\n zNumber: number;\n [key: string]: any;\n}\n\nexport interface ZephyrAllocation {\n end: string;\n start: string;\n}\n\nexport interface ZephyrConfig {\n measurementPeriodSecs: number;\n slotsInfo: {\n [key: string]: ZephyrConfigSlot;\n };\n uploadPeriodMeasurements: number;\n}\n\nexport interface ZephyrConfigSlot {\n CommercialName: string;\n FirmICType: number;\n ICType: number;\n InternalName: string;\n Serial: string;\n ShortCode: string;\n species: SpeciesExtentIdentifiers[];\n Version: string;\n xFirmICType: string;\n}\n\nexport interface ZephyrLastHourInd {\n O3: number | null;\n PM2p5: number | null;\n CO2: number | null;\n humidity: number | null;\n CO: number | null;\n TVOC: number | null;\n H2S: number | null;\n PM: number | null;\n AQI: number | null;\n SO2: number | null;\n PM10: number | null;\n NO: number | null;\n NO2: number | null;\n PM1: number | null;\n temp: number | null;\n metWS: number | null;\n metWD: number | null;\n metT: number | null;\n metH: number | null;\n [key: string]: number | null;\n}\n\nexport interface ZephyrLocation {\n desc: string;\n lng: string;\n latLngAltered: string;\n locationType: number;\n id: string;\n isMobile: number;\n lat: string;\n since: string;\n}\n\nexport interface ZephyrLocationShort {\n locationId: number;\n lat: string;\n lon: string;\n Authorization?: string;\n}\n\nexport interface ZephyrConnection {\n averageOfLastHourOfData: ZephyrLastHourInd;\n backlogCount: number | null;\n batteryCharge: number | null;\n batteryVoltage: number | null;\n cartridgeAge_months_slotA: number | null;\n cartridgeAge_months_slotB: number | null;\n extVoltage: number | null;\n lastDataDT: string | null;\n lastDT: string | null;\n measurementCount: number | null;\n [key: string]: number | string | ZephyrLastHourInd | null;\n}\n\nexport interface ZephyrHistory {\n [key: string]: ZephyrHistoryInd;\n Unaveraged: ZephyrHistoryInd;\n 'Daily average at midnight': ZephyrHistoryInd;\n '15 min average on the quarter hours': ZephyrHistoryInd;\n '8 hour average at midnight and 8am and 4pm': ZephyrHistoryInd;\n 'Hourly average on the hour': ZephyrHistoryInd;\n}\n\nexport interface ZephyrHistoryInd {\n // Slot\n [key: string]: {\n // Species\n [key: string]: {\n header: {\n key: string;\n group: string;\n units: string;\n HTMLLabel: string;\n CSVOrder: number;\n label: string;\n };\n allNull: boolean;\n data_hash: string;\n data: any[];\n tzHistory?: Timezone[] | null;\n };\n } | null;\n}\n\nexport interface ZephyrHistoryIndSlotData {\n [key: string]: {\n header: {\n key: string;\n group: string;\n units: string;\n HTMLLabel: string;\n CSVOrder: number;\n label: string;\n };\n allNull: boolean;\n data_hash: string;\n data: any[];\n tzHistory?: Timezone[] | null;\n };\n}\n\nexport interface ZephyrHistoryWithId {\n [key: number]: ZephyrHistory;\n}\n\nexport interface ZephyrStatInd {\n distanceTravelledKm: number | null;\n connectionCount: number | null;\n measurementCount: number | null;\n}\n\nexport interface ZephyrStats {\n total: ZephyrStatInd;\n day: ZephyrStatInd;\n}\n\n// Types\nexport type AlertErrors =\n | 'sourceSelect'\n | 'dataSelect'\n | 'name'\n | 'email'\n | 'concentrationLimit'\n | 'phonenumber'\n | 'communication';\n\nexport type AlertPeriod = 'instant' | '15' | '30' | '60' | '480' | '1440' | '';\n\nexport type AlertPeriodFormatted =\n | 'Instant'\n | '15 min'\n | '30 min'\n | '60 min'\n | '8hr'\n | '24hr'\n | 'Select';\n\nexport type AlertRepeat = 'never' | 'hourly' | 'daily' | '';\n\nexport type AlertRepeatFormatted = 'Never' | 'Hourly' | 'Daily' | 'Select';\n\nexport type AlertThreshold =\n | 'greater'\n | 'greaterOrEqual'\n | 'lessOrEqual'\n | 'less'\n | '';\n\nexport type AlertThresholdFormatted =\n | 'greater'\n | 'greater or equal'\n | 'less or equal'\n | 'less'\n | 'Select';\n\nexport type AQOptionsValues =\n | 'zephyr'\n | 'met'\n | 'other'\n | 'aqmTemp'\n | 'aqmSA'\n | 'aqmWind';\n\nexport type AveragingLabels =\n | 'None'\n | '15 Min'\n | '1 Hour'\n | '8 Hour'\n | '24 Hour';\n\nexport type AveragingOptions =\n | 'Unaveraged'\n | 'Daily average at midnight'\n | '15 min average on the quarter hours'\n | '8 hour average at midnight and 8am and 4pm'\n | 'Hourly average on the hour';\n\nexport type BorderDashStrings =\n | 'solid'\n | 'shortDot'\n | 'shortDash'\n | 'longDashDot'\n | 'longDash';\n\nexport type CursorOptions = 'default' | 'pointer' | 'crosshair';\n\nexport type ChartOptions = 'bar' | 'line' | 'spline';\n\nexport type ContextOptions = 'zephyr' | 'met';\n\nexport type DayOptions = 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun';\n\nexport type Directions =\n | 'N'\n | 'NNE'\n | 'NE'\n | 'ENE'\n | 'E'\n | 'ESE'\n | 'SE'\n | 'SSE'\n | 'S'\n | 'SSW'\n | 'SW'\n | 'WSW'\n | 'W'\n | 'WWW'\n | 'NW'\n | 'NNW'\n | '';\n\nexport type DownloadOptions = 'csv' | 'kml';\n\n// Docs: https://developers.google.com/maps/documentation/geocoding/intro#Types\nexport type GoogleLocationTypes =\n | 'street_address'\n | 'route'\n | 'intersection'\n | 'political'\n | 'country'\n | 'administrative_area_level_1'\n | 'administrative_area_level_2'\n | 'administrative_area_level_3'\n | 'administrative_area_level_4'\n | 'administrative_area_level_5'\n | 'colloquial_area'\n | 'locality'\n | 'sublocality'\n | 'neighbourhood'\n | 'premise'\n | 'subpremise'\n | 'plus_code'\n | 'postal_code'\n | 'natural_feature'\n | 'airport'\n | 'park'\n | 'point_of_interest';\n\nexport type LinkTargetOptions = '_blank' | '_self' | '_parent' | '_top';\n\nexport type MappAirFilterOverlayToggles = 'showAllLabels' | 'showSelectedLabel';\n\nexport type MappairSpecies = 'no2' | 'pm2p5' | 'aqi_uk';\n\nexport type PeriodLabels =\n | '24 Hours'\n | '48 Hours'\n | 'Week'\n | 'Month'\n | 'Custom'\n | 'Yesterday'\n | '2 days'\n | '3 days';\n\nexport type PeriodOptions = '24' | '48' | 'week' | 'month' | 'custom' | '72';\n\nexport type SlotOptions = 'slotA' | 'slotB' | 'head' | '';\n\nexport type SlotLabels = 'Slot A' | 'Slot B' | 'head';\n\nexport type SourceOptions =\n | 'agric'\n | 'domcom'\n | 'energypro'\n | 'industrialcom'\n | 'industrialpro'\n | 'nature'\n | 'offshore'\n | 'otherstransport'\n | 'roadtransport'\n | 'solvent'\n | 'waste';\n\nexport type SpeciesDataIdentifiers =\n | 'NO'\n | 'NO2'\n | 'O3'\n | 'particulatePM1'\n | 'particulatePM25'\n | 'particulatePM10'\n | 'PM'\n | 'CO2'\n | 'SO2'\n | 'H2S'\n | 'CO'\n | 'TVOC'\n | 'tempC'\n | 'ambHumidity'\n | 'AQI'\n // Met\n | 'temp'\n | 'humidity'\n | 'windDir'\n | 'windSpeed'\n | 'Charge';\n\nexport type SpeciesDataLabels =\n | 'NO(μg/m³)'\n | 'NO₂(μg/m³)'\n | 'O₃(μg/m³)'\n | 'PM₁(μg/m³)'\n | 'PM₂.₅(μg/m³)'\n | 'PM₁₀(μg/m³)'\n | 'CO₂(ppm)'\n | 'SO₂(μg/m³)'\n | 'H₂S(μg/m³)'\n | 'CO(mg/m³)'\n | 'TVOCs(ppb)'\n | 'Temperature(°C)'\n | 'Humidity(%)'\n | 'AQI'\n // Met\n | 'Wind Direction(°)'\n | 'Wind Speed(m/s)'\n | 'Charge(%)';\n\nexport type SpeciesExtentIdentifiers =\n | 'NO'\n | 'NO2'\n | 'O3'\n | 'PM'\n | 'CO2'\n | 'SO2'\n | 'H2S'\n | 'CO'\n | 'TVOC'\n | 'AT'\n | 'ARH'\n | 'AQI'\n | 'Charge';\n\nexport type SpeciesGroupOptions =\n | 'NO2'\n | 'PM'\n | 'PM2.5'\n | 'CO2'\n | 'Enhanced'\n | 'TVOC'\n | 'temp';\n\nexport type SpeciesUnits =\n | 'μg/m³'\n | 'mg/m³'\n | 'ppb'\n | 'ppm'\n | '°C'\n | '%'\n | 'tonnes/annum'\n | 'Max:10'\n // Met\n | 'm/s'\n | '°';\n\nexport type SpeciesUnitsWrapped =\n | '(μg/m³)'\n | '(mg/m³)'\n | '(ppb)'\n | '(ppm)'\n | '(°C)'\n | '(%)'\n | '(tonnes/annum)'\n | '(Max:10)'\n // Met\n | '(m/s)'\n | '(°)'\n | '';\n\nexport type UnitOverlayTypes = 'aurn' | 'zephyr' | 'virtual';\n\nexport type UnitSelectionTypes = 'specific' | 'non-specific';\n\nexport type UnitSelectionLabels =\n | 'Specific Zephyr(s)'\n | 'All Zephyrs in my inventory';\n\nexport type UrlQueryStringOptions = 'ctv' | 'diagnostics' | '';\n\nexport interface translationOption {\n value: string;\n label: string;\n icon: string;\n}\n\nexport interface LonLatXY {\n xMin: number;\n yMin: number;\n xMax: number;\n yMax: number;\n}\n\nexport interface tileDimensions {\n width: number;\n height: number;\n}\n\nexport interface YearObj {\n value: string;\n label: number;\n}\n\nexport interface TimeSliderOption {\n id: number;\n d: string;\n text: string;\n}\n\nexport interface UnitHistoriesOptions {\n unitHistories: any;\n isUnitHistoriesLoading: boolean;\n thresholdLimits: ThresholdLimits;\n zephyrCoveragesList: ZephyrCoverages[];\n isDataAvailabilityChartLoading: boolean;\n dseOn: boolean;\n requests: number;\n nullableUnits: number[];\n toProceed: boolean | null;\n viewLoaded: boolean;\n isCartridgeDataLoading: boolean | null;\n isWidgetLibraryVisible: boolean;\n}\n\nexport interface ZephyrAnalytics extends Zephyr {\n isSelected: boolean;\n}\n\nexport interface Pollutant {\n dataIdentifier: string;\n speciesExtentIdentifier: string;\n HTMLLabel: string;\n HTMLUnitLabel: string;\n HTMLShortUnitLabel: string;\n isChecked?: boolean;\n isSelected?: boolean;\n}\n\nexport interface ThresholdProperties {\n title: string;\n value: number | null;\n id?: number | null;\n}\n\nexport interface ThresholdLimits {\n thresholds: {\n lowerThreshold: ThresholdProperties;\n upperThreshold: ThresholdProperties;\n },\n hidden: boolean\n}\n\nexport interface ZephyrCoverages {\n name?: string;\n zephyrNumber?: number;\n isSelected?: boolean;\n requestMade?: boolean;\n coverageData?: any;\n zType?: number;\n}\n\nexport interface AveragingChain {\n [key: string]: number\n};\n\nexport interface ThresholdsList {\n gases: ThresholdLimits,\n particulate: ThresholdLimits,\n networkViewGases: ThresholdLimits,\n networkViewParticulates: ThresholdLimits,\n [key: string]: ThresholdLimits\n};\n\nexport interface PollutantLimit {\n id: number,\n pollutant: string,\n subscript: string,\n value: number\n};\n","// AirAlert Types\nexport const SET_AIR_ALERTS: string = 'SET_AIR_ALERTS';\n\n// Alert Types\nexport const ALERTS_ON: string = 'ALERTS_ON';\nexport const ALERTS_OFF: string = 'ALERTS_OFF';\n\n// Auth Types\nexport const AUTH_ERROR: string = 'AUTH_ERROR';\nexport const LOGIN_FAIL: string = 'LOGIN_FAIL';\nexport const LOGIN_SUCCESS: string = 'LOGIN_SUCCESS';\nexport const LOGOUT: string = 'LOGOUT';\nexport const SET_AVERAGING_PERIODS: string = 'SET_AVERAGING_PERIODS';\nexport const SET_DATA_CONFIG: string = 'SET_DATA_CONFIG';\nexport const SET_DISPLAY_CONFIG: string = 'SET_DISPLAY_CONFIG';\nexport const SET_FEEDBACK: string = 'SET_FEEDBACK';\nexport const SET_FEEDBACK_IDX: string = 'SET_FEEDBACK_IDX';\nexport const SET_FEEDBACK_OFF: string = 'SET_FEEDBACK_OFF';\nexport const SET_FEEDBACK_ON: string = 'SET_FEEDBACK_ON';\nexport const SET_OVERLAYS: string = 'SET_OVERLAYS';\nexport const SET_PUBLIC_ADVICE: string = 'SET_PUBLIC_ADVICE';\nexport const SET_TIME_PERIODS: string = 'SET_TIME_PERIODS';\nexport const SET_USER_CONFIG: string = 'SET_USER_CONFIG';\nexport const SET_VERSIONS: string = 'SET_VERSIONS';\nexport const USERINFO_LOADED: string = 'USERINFO_LOADED';\nexport const USER_LOADED: string = 'USER_LOADED';\nexport const SET_MASTER_AUTH_BEARER_TOKEN: string = 'SET_MASTER_AUTH_BEARER_TOKEN';\n\n// MappAir Types\nexport const CHANGE_OVERLAY_LAYER: string = 'CHANGE_OVERLAY_LAYER';\nexport const CHANGE_OVERLAY_OPACITY: string = 'CHANGE_OVERLAY_OPACITY';\nexport const GET_STYLE_GROUPS: string = 'GET_STYLE_GROUPS';\nexport const MAPS_LOCATION_LOADED: string = 'MAPS_LOCATION_LOADED';\nexport const SET_ACTIVE_THRESHOLD: string = 'SET_ACTIVE_THRESHOLD';\nexport const SET_LOCATION: string = 'SET_LOCATION';\nexport const SET_MAPPAIR_POINT_MODE_ON: string = 'MAPPAIR_POINT_MODE_ON';\nexport const SET_MAPPAIR_POINT_MODE_OFF: string = 'MAPPAIR_POINT_MODE_OFF';\nexport const SET_SELECTED_FILTER: string = 'SET_SELECTED_FILTER';\nexport const SET_TODAY_DATA: string = 'SET_TODAY_DATA';\nexport const SET_UNIT_LOCATION: string = 'SET_UNIT_LOCATION';\nexport const SHOW_AQMA_LAYER: string = 'SHOW_AQMA_LAYER';\nexport const SHOW_MAP_AIR_FILTERS: string = 'SHOW_MAP_AIR_FILTERS';\nexport const SHOW_OVERLAY_LAYER: string = 'SHOW_OVERLAY_LAYER';\nexport const SHOW_SATELLITE_LAYER: string = 'SHOW_SATELLITE_LAYER';\nexport const SHOW_OSM_LAYER: string = 'SHOW_OSM_LAYER';\nexport const SHOW_SCHOOLS_LAYER: string = 'SHOW_SCHOOLS_LAYER';\nexport const SHOW_SMOKE_CONTROL_ZONES: string = 'SHOW_SMOKE_CONTROL_ZONES';\nexport const SET_MAPPAIR_POINT_VALUE_HISTORY: string =\n 'SET_MAPPAIR_POINT_VALUE_HISTORY';\nexport const SHOW_AA_LAYER: string =\n 'SHOW_AA_LAYER';\nexport const SET_ANNUAL_AVERAGE: string = 'SET_ANNUAL_AVERAGE';\n\n// Nav Types\nexport const CLOSE_ASIDE: string = 'CLOSE_ASIDE';\nexport const OPEN_ASIDE: string = 'OPEN_ASIDE';\nexport const SET_AQ101_OFF: string = 'SET_AQ101_OFF';\nexport const SET_AQ101_ON: string = 'SET_AQ101_ON';\nexport const SET_AQ101_SECTION: string = 'SET_AQ101_SECTION';\n\n// Tour Types\nexport const TOUR_CLOSE_AQ_COLORSCALE_INDEX: string =\n 'TOUR_CLOSE_AQ_COLORSCALE_INDEX';\nexport const TOUR_CLOSE_AQ_DATA_INDEX: string = 'TOUR_CLOSE_AQ_DATA_INDEX';\nexport const TOUR_CLOSE_AQMA_INDEX: string = 'TOUR_CLOSE_AQMA_INDEX';\nexport const TOUR_CLOSE_ASIDE: string = 'TOUR_CLOSE_ASIDE';\nexport const TOUR_CLOSE_ASIDE_FILTER: string = 'TOUR_CLOSE_ASIDE_FITLER';\nexport const TOUR_FINISHED: string = 'TOUR_FINISHED';\nexport const TOUR_LAUNCHED: string = 'TOUR_LAUNCHED';\nexport const TOUR_OPEN_AQ_COLORSCALE_INDEX: string =\n 'TOUR_OPEN_AQ_COLORSCALE_INDEX';\nexport const TOUR_OPEN_AQ_DATA_INDEX: string = 'TOUR_OPEN_AQ_DATA_INDEX';\nexport const TOUR_OPEN_AQMA_INDEX: string = 'TOUR_OPEN_AQMA_INDEX';\nexport const TOUR_OPEN_ASIDE: string = 'TOUR_OPEN_ASIDE';\nexport const TOUR_OPEN_ASIDE_FILTER: string = 'TOUR_OPEN_ASIDE_FILTER';\nexport const TOUR_OPEN_HELP: string = 'TOUR_OPEN_HELP';\nexport const TOUR_CLOSE_HELP: string = 'TOUR_CLOSE_HELP';\nexport const TOUR_OPEN_LOCATION_SEARCH: string = 'TOUR_OPEN_LOCATION_SEARCH';\nexport const TOUR_CLOSE_LOCATION_SEARCH: string = 'TOUR_CLOSE_LOCATION_SEARCH';\nexport const TOUR_MAP_CLICK: string = 'TOUR_MAP_CLICK';\nexport const TOUR_CLOSE_MODEL_DATA_INDEX = 'TOUR_CLOSE_MODEL_DATA_INDEX';\nexport const TOUR_OPEN_MODEL_DATA_INDEX = 'TOUR_OPEN_MODEL_DATA_INDEX';\n\n// URL Query String Types\nexport const SET_QUERY_STRING_PARAMS: string = 'SET_QUERY_STRING_PARAMS';\n\n// Zephyr Types\nexport const CLEAR_ZEPHYR: string = 'CLEAR_ZEPHYR';\nexport const GET_ZEPHYRS: string = 'GET_ZEPHYRS';\nexport const ADD_ZEPHYRS: string = 'ADD_ZEPHYRS';\nexport const GET_ZEPHYR_HISTORICAL_DATA: string = 'GET_ZEPHYR_HISTORICAL_DATA';\nexport const SET_ZEPHYR: string = 'SET_ZEPHYR';\nexport const SET_ZEPHYR_IN_EDIT_MODE: string = 'SET_ZEPHYR_IN_EDIT_MODE';\nexport const SET_ZEPHYR_HISTORICAL_DATA_LOADING: string =\n 'SET_ZEPHYR_HISTORICAL_DATA_LOADING';\nexport const SET_DRAGGED_UNIT: string = 'SET_DRAGGED_UNIT';\nexport const CLEAR_DRAGGED_UNIT: string = 'CLEAR_DRAGGED_UNIT';\nexport const GET_AURNS = 'GET_AURNS';\nexport const GET_ZEPHYR_MET_DATA: string = 'GET_ZEPHYR_MET_DATA';\nexport const SET_HAS_INITIAL_SET: string = 'SET_HAS_INITIAL_SET';\nexport const SET_VZ_ICON_CLICKED: string = 'SET_VZ_ICON_CLICKED';\nexport const SET_CURSOR_ICON_DROPPED: string = 'SET_CURSOR_ICON_DROPPED';\nexport const SET_ADD_VZ_SETTINGS: string = 'SET_ADD_VZ_SETTINGS';\nexport const SET_VZ_NAME: string = 'SET_VZ_NAME';\nexport const SET_VZ_CREATION_MENU: string = 'SET_VZ_CREATION_MENU';\nexport const SET_INIT_CURSOR_POSITION: string = 'SET_INIT_CURSOR_POSITION';\n\n// Loading types\nexport const LOADING_INIT_APP_OFF: string = 'LOADING_INIT_APP_OFF';\nexport const LOADING_INIT_APP_ON: string = 'LOADING_INIT_APP_ON';\nexport const LOADING_INIT_APP_DATA_OFF: string = 'LOADING_INIT_APP_DATA_OFF';\nexport const LOADING_INIT_APP_DATA_ON: string = 'LOADING_INIT_APP_DATA_ON';\nexport const LOADING_INIT_APP_THIRDPARTY_DATA_OFF: string =\n 'LOADING_INIT_APP_THIRDPARTY_DATA_OFF';\nexport const LOADING_INIT_APP_THIRDPARTY_DATA_ON: string =\n 'LOADING_INIT_APP_THIRDPARTY_DATA_ON';\n\n// Modal types\nexport const SET_CONTACT_MODAL_ON: string = 'SET_CONTACT_MODAL_ON';\nexport const SET_DATA_MODAL_ON: string = 'SET_DATA_MODAL_ON';\nexport const SET_MAPPAIR_QUOTE_MODAL_ON: string = 'SET_MAPPAIR_QUOTE_MODAL_ON';\nexport const SET_MAPPAIR_TIMESERIES_MODAL_ON: string =\n 'SET_MAPPAIR_TIMESERIES_MODAL_ON';\nexport const SET_MODALS_OFF: string = 'SET_MODALS_OFF';\nexport const SET_ZEPHYR_QUOTE_MODAL_ON: string = 'SET_ZEPHYR_QUOTE_MODAL_ON';\nexport const SET_ANNUAL_AVERAGES: string = 'SET_ANNUAL_AVERAGES';\n\n// set Language\nexport const SET_LOCALE: string = 'SET_LOCALE';\n\n// Modular features types\nexport const SET_MODULAR_FEATURES: string = 'SET_MODULAR_FEATURES';\n\n// Data Analytics Types\nexport const SET_UNIT_HISTORIES: string = 'SET_UNIT_HISTORIES';\nexport const SET_UNIT_HISTORIES_LOADING: string = 'SET_UNIT_HISTORIES_LOADING';\nexport const SET_THRESHOLD_LIMITS: string = 'SET_THRESHOLD_LIMITS';\nexport const SET_ZEPHYR_COVERAGES_LIST: string = 'SET_ZEPHYR_COVERAGES_LIST';\nexport const SET_IS_DATA_AVAILABILITY_CHART_LOADING: string = 'SET_IS_DATA_AVAILABILITY_CHART_LOADING';\nexport const SET_DSE_CHECKBOX_STATE: string = 'SET_DSE_CHECKBOX_STATE';\nexport const INCREASE_ARRIVED_REQUESTS: string = 'INCREASE_ARRIVED_REQUESTS';\nexport const SET_ARRIVED_REQUESTS_TO_INIT_STATE: string = 'SET_ARRIVED_REQUESTS_TO_INIT_STATE';\nexport const SET_NULLABLE_UNITS: string = 'SET_NULLABLE_UNITS';\nexport const SET_PROCEED_WITH_ANALYSIS: string = 'SET_PROCEED_WITH_ANALYSIS';\nexport const SET_IS_VIEW_LOADED: string = 'SET_IS_VIEW_LOADED';\nexport const SET_IS_CARTRIDGE_DATA_LOADING: string = 'SET_IS_CARTRIDGE_DATA_LOADING';\nexport const SET_THRESHOLDS: string = 'SET_THRESHOLDS';\nexport const SET_IS_WIDGETS_LIBRARY_VISIBLE: string = 'SET_IS_WIDGETS_LIBRARY_VISIBLE';","// Type Imports\nimport { SlotOptions, ZephyrHistory } from '../interface';\n\n/* Function\nDESC: slotFinder returns an array of available slots that have available data for a given unit, slot, \n and time period\nARGS: unitData(derived from API)\n*/\nconst slotFinder = (unitData: ZephyrHistory) => {\n const slots: SlotOptions[] = ['slotA', 'slotB', 'head'];\n\n if (!unitData) return slots;\n\n for (const [avg, avgInfo] of Object.entries(unitData)) {\n if (avgInfo) {\n const availableSlots = slots.filter((slot) => avgInfo[slot]);\n return availableSlots;\n }\n }\n\n return slots;\n};\n\nexport { slotFinder };\n","/*\n CanvasJS HTML5 & JavaScript Charts - v3.2 GA - https://canvasjs.com/ \n Copyright 2020 fenopix\n\n --------------------- License Information --------------------\n CanvasJS is a commercial product which requires purchase of license. Without a commercial license you can use it for evaluation purposes for upto 30 days. Please refer to the following link for further details.\n https://canvasjs.com/license/\n\n*/\n/*eslint-disable*/\n/*jshint ignore:start*/\n(function(){function ma(k,m){k.prototype=bb(m.prototype);k.prototype.constructor=k;k.base=m.prototype}function bb(k){function m(){}m.prototype=k;return new m}function Va(k,m,v){\"millisecond\"===v?k.setMilliseconds(k.getMilliseconds()+1*m):\"second\"===v?k.setSeconds(k.getSeconds()+1*m):\"minute\"===v?k.setMinutes(k.getMinutes()+1*m):\"hour\"===v?k.setHours(k.getHours()+1*m):\"day\"===v?k.setDate(k.getDate()+1*m):\"week\"===v?k.setDate(k.getDate()+7*m):\"month\"===v?k.setMonth(k.getMonth()+1*m):\"year\"===v&&k.setFullYear(k.getFullYear()+\n1*m);return k}function W(k,m){var v=!1;0>k&&(v=!0,k*=-1);k=\"\"+k;for(m=m?m:1;k.length>16).toString(16),v=((k&65280)>>8).toString(16);k=((k&255)>>0).toString(16);m=2>m.length?\"0\"+m:m;v=2>v.length?\"0\"+v:v;k=2>k.length?\"0\"+k:k;return\"#\"+m+v+k}function cb(k,m){var v=this.length>>>0,t=Number(m)||0,t=0>t?Math.ceil(t):\nMath.floor(t);for(0>t&&(t+=v);t=(new Date).getTime()-k._dropDownCloseTime.getTime()||(k._dropdownMenu.style.display=\"block\",\nk._menuButton.blur(),k._dropdownMenu.focus())},k.allDOMEventHandlers,!0);K(k._menuButton,\"mouseover\",function(){m||(na(k._menuButton,{backgroundColor:k.toolbar.backgroundColorOnHover,color:k.toolbar.fontColorOnHover}),0>=navigator.userAgent.search(\"MSIE\")&&na(k._menuButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},k.allDOMEventHandlers,!0);K(k._menuButton,\"mouseout\",function(){m||(na(k._menuButton,{backgroundColor:k.toolbar.backgroundColor,color:k.toolbar.fontColor}),0>=\nnavigator.userAgent.search(\"MSIE\")&&na(k._menuButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},k.allDOMEventHandlers,!0)}if(!k._dropdownMenu&&k.exportEnabled&&s){m=!1;k._dropdownMenu=document.createElement(\"div\");k._dropdownMenu.setAttribute(\"tabindex\",-1);var v=-1!==k.theme.indexOf(\"dark\")?\"black\":\"#888888\";k._dropdownMenu.style.cssText=\"position: absolute; z-index: 1; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; cursor: pointer;right: 0px;top: 25px;min-width: 120px;outline: 0;font-size: 14px; font-family: Arial, Helvetica, sans-serif;padding: 5px 0px 5px 0px;text-align: left;line-height: 10px;background-color:\"+\nk.toolbar.backgroundColor+\";box-shadow: 2px 2px 10px \"+v;k._dropdownMenu.style.display=\"none\";k._toolBar.appendChild(k._dropdownMenu);K(k._dropdownMenu,\"blur\",function(){sa(k._dropdownMenu);k._dropDownCloseTime=new Date},k.allDOMEventHandlers,!0);v=document.createElement(\"div\");v.style.cssText=\"padding: 12px 8px 12px 8px\";v.innerHTML=k._cultureInfo.printText;v.style.backgroundColor=k.toolbar.backgroundColor;v.style.color=k.toolbar.fontColor;k._dropdownMenu.appendChild(v);K(v,\"touchstart\",function(k){m=\n!0},k.allDOMEventHandlers);K(v,\"mouseover\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColorOnHover,this.style.color=k.toolbar.fontColorOnHover)},k.allDOMEventHandlers,!0);K(v,\"mouseout\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColor,this.style.color=k.toolbar.fontColor)},k.allDOMEventHandlers,!0);K(v,\"click\",function(){k.print();sa(k._dropdownMenu)},k.allDOMEventHandlers,!0);v=document.createElement(\"div\");v.style.cssText=\"padding: 12px 8px 12px 8px\";v.innerHTML=\nk._cultureInfo.saveJPGText;v.style.backgroundColor=k.toolbar.backgroundColor;v.style.color=k.toolbar.fontColor;k._dropdownMenu.appendChild(v);K(v,\"touchstart\",function(k){m=!0},k.allDOMEventHandlers);K(v,\"mouseover\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColorOnHover,this.style.color=k.toolbar.fontColorOnHover)},k.allDOMEventHandlers,!0);K(v,\"mouseout\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColor,this.style.color=k.toolbar.fontColor)},k.allDOMEventHandlers,\n!0);K(v,\"click\",function(){k.exportChart({format:\"jpeg\",fileName:k.exportFileName});sa(k._dropdownMenu)},k.allDOMEventHandlers,!0);v=document.createElement(\"div\");v.style.cssText=\"padding: 12px 8px 12px 8px\";v.innerHTML=k._cultureInfo.savePNGText;v.style.backgroundColor=k.toolbar.backgroundColor;v.style.color=k.toolbar.fontColor;k._dropdownMenu.appendChild(v);K(v,\"touchstart\",function(k){m=!0},k.allDOMEventHandlers);K(v,\"mouseover\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColorOnHover,\nthis.style.color=k.toolbar.fontColorOnHover)},k.allDOMEventHandlers,!0);K(v,\"mouseout\",function(){m||(this.style.backgroundColor=k.toolbar.backgroundColor,this.style.color=k.toolbar.fontColor)},k.allDOMEventHandlers,!0);K(v,\"click\",function(){k.exportChart({format:\"png\",fileName:k.exportFileName});sa(k._dropdownMenu)},k.allDOMEventHandlers,!0)}}function Ya(k,m,v){k*=X;m*=X;k=v.getImageData(k,m,2,2).data;m=!0;for(v=0;4>v;v++)if(k[v]!==k[v+4]|k[v]!==k[v+8]|k[v]!==k[v+12]){m=!1;break}return m?k[0]<<\n16|k[1]<<8|k[2]:0}function ha(k,m,v){return k in m?m[k]:v[k]}function La(k,m,v){if(s&&Za){var t=k.getContext(\"2d\");Ma=t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;X=Qa/Ma;k.width=m*X;k.height=v*X;Qa!==Ma&&(k.style.width=m+\"px\",k.style.height=v+\"px\",t.scale(X,X))}else k.width=m,k.height=v}function gb(k){if(!hb){var m=!1,v=!1;\"undefined\"===typeof va.Chart.creditHref?(k.creditHref=ga(\"iuuqr;..b`ow`rkr/bnl.\"),\nk.creditText=ga(\"B`ow`rKR/bnl\")):(m=k.updateOption(\"creditText\"),v=k.updateOption(\"creditHref\"));if(k.creditHref&&k.creditText){k._creditLink||(k._creditLink=document.createElement(\"a\"),k._creditLink.setAttribute(\"class\",\"canvasjs-chart-credit\"),k._creditLink.setAttribute(\"title\",\"JavaScript Charts\"),k._creditLink.setAttribute(\"style\",\"outline:none;margin:0px;position:absolute;right:2px;top:\"+(k.height-14)+\"px;color:dimgrey;text-decoration:none;font-size:11px;font-family: Calibri, Lucida Grande, Lucida Sans Unicode, Arial, sans-serif\"),\nk._creditLink.setAttribute(\"tabIndex\",-1),k._creditLink.setAttribute(\"target\",\"_blank\"));if(0===k.renderCount||m||v)k._creditLink.setAttribute(\"href\",k.creditHref),k._creditLink.innerHTML=k.creditText;k._creditLink&&k.creditHref&&k.creditText?(k._creditLink.parentElement||k._canvasJSContainer.appendChild(k._creditLink),k._creditLink.style.top=k.height-14+\"px\"):k._creditLink.parentElement&&k._canvasJSContainer.removeChild(k._creditLink)}}}function ra(k,m){Ga&&(this.canvasCount|=0,window.console.log(++this.canvasCount));\nvar v=document.createElement(\"canvas\");v.setAttribute(\"class\",\"canvasjs-chart-canvas\");La(v,k,m);s||\"undefined\"===typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(v);return v}function na(k,m){for(var v in m)k.style[v]=m[v]}function ta(k,m,v){m.getAttribute(\"state\")||(m.style.backgroundColor=k.toolbar.backgroundColor,m.style.color=k.toolbar.fontColor,m.style.border=\"none\",na(m,{WebkitUserSelect:\"none\",MozUserSelect:\"none\",msUserSelect:\"none\",userSelect:\"none\"}));m.getAttribute(\"state\")!==\nv&&(m.setAttribute(\"state\",v),m.setAttribute(\"type\",\"button\"),na(m,{padding:\"5px 12px\",cursor:\"pointer\",\"float\":\"left\",width:\"40px\",height:\"25px\",outline:\"0px\",verticalAlign:\"baseline\",lineHeight:\"0\"}),m.setAttribute(\"title\",k._cultureInfo[v+\"Text\"]),m.innerHTML=\"\"+k._cultureInfo[v+\"Text\"]+\"\")}function Ka(){for(var k=null,m=0;md?\"a\":\"p\";case \"tt\":return 12>d?\"am\":\"pm\";case \"T\":return 12>d?\"A\":\"P\";case \"TT\":return 12>d?\"AM\":\"PM\";case \"K\":return H?\"UTC\":(String(F).match(x)||[\"\"]).pop().replace(D,\"\");case \"z\":return(0k?!0:!1;t&&(k*=-1);var s=v?v.decimalSeparator:\".\",x=v?v.digitGroupSeparator:\",\",D=\"\";m=String(m);var D=1,F=v=\"\",N=-1,O=[],L=[],R=0,K=0,U=0,H=!1,Q=0,F=m.match(/\"[^\"]*\"|'[^']*'|[eE][+-]*[0]+|[,]+[.]|\\u2030|./g);m=null;for(var J=0;F&&JN)N=J;else{if(\"%\"===m)D*=100;else if(\"\\u2030\"===m){D*=1E3;continue}else if(\",\"===m[0]&&\".\"===m[m.length-1]){D/=Math.pow(1E3,m.length-1);N=J+m.length-1;continue}else\"E\"!==m[0]&&\"e\"!==m[0]||\"0\"!==m[m.length-1]||(H=!0);\n0>N?(O.push(m),\"#\"===m||\"0\"===m?R++:\",\"===m&&U++):(L.push(m),\"#\"!==m&&\"0\"!==m||K++)}H&&(m=Math.floor(k),F=-Math.floor(Math.log(k)/Math.LN10+1),Q=0===k?0:0===m?-(R+F):String(m).length-R,D/=Math.pow(10,Q));0>N&&(N=J);D=(k*D).toFixed(K);m=D.split(\".\");D=(m[0]+\"\").split(\"\");k=(m[1]+\"\").split(\"\");D&&\"0\"===D[0]&&D.shift();for(H=F=J=K=N=0;0Q?m.replace(\"+\",\"\").replace(\"-\",\"\"):m.replace(\"-\",\"\"),v+=m.replace(/[0]+/,function(a){return W(Q,a.length)}));x=\"\";for(O=!1;0Q?m.replace(\"+\",\"\").replace(\"-\",\"\"):m.replace(\"-\",\"\"),x+=m.replace(/[0]+/,function(a){return W(Q,a.length)}));v+=(O?s:\"\")+x;return t?\"-\"+v:v},Na=function(k){var m=0,v=0;k=k||window.event;k.offsetX||0===k.offsetX?\n(m=k.offsetX,v=k.offsetY):k.layerX||0==k.layerX?(m=k.layerX,v=k.layerY):(m=k.pageX-k.target.offsetLeft,v=k.pageY-k.target.offsetTop);return{x:m,y:v}},Za=!0,Qa=window.devicePixelRatio||1,Ma=1,X=Za?Qa/Ma:1,Z=function(k,m,v,t,s,x,D,F,N,O,R,L,K){\"undefined\"===typeof K&&(K=1);D=D||0;F=F||\"black\";var H=15m)x=F-1;else break}t>m&&1F&&(D=m.pop(),s-=D.height,x=H)}this._wrappedText={lines:m,width:x,height:s};this.width=x+(this.leftPadding+this.rightPadding);this.height=s+(this.topPadding+this.bottomPadding);this.ctx.font=t};ia.prototype._getFontString=function(){var k;k=\"\"+(this.fontStyle?this.fontStyle+\" \":\n\"\");k+=this.fontWeight?this.fontWeight+\" \":\"\";k+=this.fontSize?this.fontSize+\"px \":\"\";var m=this.fontFamily?this.fontFamily+\"\":\"\";!s&&m&&(m=m.split(\",\")[0],\"'\"!==m[0]&&'\"'!==m[0]&&(m=\"'\"+m+\"'\"));return k+=m};ma(Sa,H);ma(wa,H);wa.prototype.setLayout=function(){if(this.text){var k=this.dockInsidePlotArea?this.chart.plotArea:this.chart,m=k.layoutManager.getFreeSpace(),s=m.x1,x=m.y1,F=0,H=0,D=this.chart._menuButton&&this.chart.exportEnabled&&\"top\"===this.verticalAlign?22:0,N,K;\"top\"===this.verticalAlign||\n\"bottom\"===this.verticalAlign?(null===this.maxWidth&&(this.maxWidth=m.width-4-D*(\"center\"===this.horizontalAlign?2:1)),H=0.5*m.height-this.margin-2,F=0):\"center\"===this.verticalAlign&&(\"left\"===this.horizontalAlign||\"right\"===this.horizontalAlign?(null===this.maxWidth&&(this.maxWidth=m.height-4),H=0.5*m.width-this.margin-2):\"center\"===this.horizontalAlign&&(null===this.maxWidth&&(this.maxWidth=m.width-4),H=0.5*m.height-4));var O;t(this.padding)||\"number\"!==typeof this.padding?t(this.padding)||\"object\"!==\ntypeof this.padding||(O=this.padding.top?this.padding.top:this.padding.bottom?this.padding.bottom:0,O+=this.padding.bottom?this.padding.bottom:this.padding.top?this.padding.top:0):O=2*this.padding;this.wrap||(H=Math.min(H,1.5*this.fontSize+O));H=new ia(this.ctx,{fontSize:this.fontSize,fontFamily:this.fontFamily,fontColor:this.fontColor,fontStyle:this.fontStyle,fontWeight:this.fontWeight,horizontalAlign:this.horizontalAlign,verticalAlign:this.verticalAlign,borderColor:this.borderColor,borderThickness:this.borderThickness,\nbackgroundColor:this.backgroundColor,maxWidth:this.maxWidth,maxHeight:H,cornerRadius:this.cornerRadius,text:this.text,padding:this.padding,textBaseline:\"top\"});O=H.measureText();\"top\"===this.verticalAlign||\"bottom\"===this.verticalAlign?(\"top\"===this.verticalAlign?(x=m.y1+2,K=\"top\"):\"bottom\"===this.verticalAlign&&(x=m.y2-2-O.height,K=\"bottom\"),\"left\"===this.horizontalAlign?s=m.x1+2:\"center\"===this.horizontalAlign?s=m.x1+m.width/2-O.width/2:\"right\"===this.horizontalAlign&&(s=m.x2-2-O.width-D),N=this.horizontalAlign,\nthis.width=O.width,this.height=O.height):\"center\"===this.verticalAlign&&(\"left\"===this.horizontalAlign?(s=m.x1+2,x=m.y2-2-(this.maxWidth/2-O.width/2),F=-90,K=\"left\",this.width=O.height,this.height=O.width):\"right\"===this.horizontalAlign?(s=m.x2-2,x=m.y1+2+(this.maxWidth/2-O.width/2),F=90,K=\"right\",this.width=O.height,this.height=O.width):\"center\"===this.horizontalAlign&&(x=k.y1+(k.height/2-O.height/2),s=k.x1+(k.width/2-O.width/2),K=\"center\",this.width=O.width,this.height=O.height),N=\"center\");H.x=\ns;H.y=x;H.angle=F;H.horizontalAlign=N;this._textBlock=H;k.layoutManager.registerSpace(K,{width:this.width+(\"left\"===K||\"right\"===K?this.margin+2:0),height:this.height+(\"top\"===K||\"bottom\"===K?this.margin+2:0)});this.bounds={x1:s,y1:x,x2:s+this.width,y2:x+this.height};this.ctx.textBaseline=\"top\"}};wa.prototype.render=function(){this._textBlock&&this._textBlock.render(!0)};ma(Ha,H);Ha.prototype.setLayout=wa.prototype.setLayout;Ha.prototype.render=wa.prototype.render;Ta.prototype.get=function(k,m){var s=\nnull;0a[f].x&&0A?{x:a[l].x+A/3,y:a[l].y+b/3}:{x:a[l].x,y:a[l].y+b/9};l=e;f=0===l?0:l-1;p=l===a.length-1?l:l+1;b=Math.abs((a[p].x-a[f].x)/(0===a[l].x-a[f].x?0.01:a[l].x-a[f].x))*(d-1)/2+1;A=(a[p].x-a[f].x)/b;b=(a[p].y-a[f].y)/b;c[c.length]=a[l].x>a[f].x&&0A?{x:a[l].x-A/3,y:a[l].y-b/3}:{x:a[l].x,y:a[l].y-b/9};c[c.length]=a[e]}return c}function x(a,d,c,b,e,f,p,l,A,h){var n=0;h?(p.color=f,l.color=f):\nh=1;n=A?Math.abs(e-c):Math.abs(b-d);n=0this.labelAngle?this.labelAngle-=180:270<=this.labelAngle&&360>=this.labelAngle&&(this.labelAngle-=360);this.options.scaleBreaks&&(this.scaleBreaks=new Q(this.chart,this.options.scaleBreaks,++this.chart._eventManager.lastObjectId,\nthis));this.stripLines=[];if(this.options.stripLines&&0=this._appliedBreaks[a+1].startValue&&(this._appliedBreaks[a].endValue=Math.max(this._appliedBreaks[a].endValue,this._appliedBreaks[a+1].endValue),window.console&&window.console.log(\"CanvasJS Error: Breaks \"+a+\" and \"+(a+1)+\" are overlapping.\"),this._appliedBreaks.splice(a,2),a--)}}function ba(a,d,c,b,e,f){ba.base.constructor.call(this,\"Break\",d,c,b,f);this.id=e;this.chart=a;this.ctx=this.chart.ctx;this.scaleBreaks=f;this.optionsName=\nd;this.isOptionsInArray=!0;this.type=c.type?this.type:f.type;this.fillOpacity=t(c.fillOpacity)?f.fillOpacity:this.fillOpacity;this.lineThickness=t(c.lineThickness)?f.lineThickness:this.lineThickness;this.color=c.color?this.color:f.color;this.lineColor=c.lineColor?this.lineColor:f.lineColor;this.lineDashType=c.lineDashType?this.lineDashType:f.lineDashType;!t(this.startValue)&&this.startValue.getTime&&(this.startValue=this.startValue.getTime());!t(this.endValue)&&this.endValue.getTime&&(this.endValue=\nthis.endValue.getTime());\"number\"===typeof this.startValue&&(\"number\"===typeof this.endValue&&this.endValue=navigator.userAgent.search(\"MSIE\")&&na(a._zoomButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},this.allDOMEventHandlers);K(this._zoomButton,\"mouseout\",function(){d||(na(a._zoomButton,{backgroundColor:a.toolbar.backgroundColor,color:a.toolbar.fontColor,transition:\"0.4s\",WebkitTransition:\"0.4s\"}),0>=navigator.userAgent.search(\"MSIE\")&&na(a._zoomButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},\nthis.allDOMEventHandlers)}this._resetButton||(d=!1,sa(this._resetButton=document.createElement(\"button\")),ta(this,this._resetButton,\"reset\"),this._resetButton.style.borderRight=(this.exportEnabled?this.toolbar.borderThickness:0)+\"px solid \"+this.toolbar.borderColor,this._toolBar.appendChild(this._resetButton),K(this._resetButton,\"touchstart\",function(a){d=!0},this.allDOMEventHandlers),K(this._resetButton,\"click\",function(){a.toolTip.hide();a.toolTip.dispatchEvent(\"hidden\",{chart:a,toolTip:a.toolTip},\na.toolTip);a.zoomEnabled||a.panEnabled?(a.zoomEnabled=!0,a.panEnabled=!1,ta(a,a._zoomButton,\"pan\"),a._defaultCursor=\"default\",a.overlaidCanvas.style.cursor=a._defaultCursor):(a.zoomEnabled=!1,a.panEnabled=!1);if(a.sessionVariables.axisX)for(var b=0;b=navigator.userAgent.search(\"MSIE\")&&na(a._resetButton.childNodes[0],{WebkitFilter:\"invert(100%)\",filter:\"invert(100%)\"}))},this.allDOMEventHandlers),K(this._resetButton,\"mouseout\",function(){d||(na(a._resetButton,{backgroundColor:a.toolbar.backgroundColor,\ncolor:a.toolbar.fontColor,transition:\"0.4s\",WebkitTransition:\"0.4s\"}),0>=navigator.userAgent.search(\"MSIE\")&&na(a._resetButton.childNodes[0],{WebkitFilter:\"invert(0%)\",filter:\"invert(0%)\"}))},this.allDOMEventHandlers),this.overlaidCanvas.style.cursor=a._defaultCursor);this.zoomEnabled||this.panEnabled||(this._zoomButton?(a._zoomButton.getAttribute(\"state\")===a._cultureInfo.zoomText?(this.panEnabled=!0,this.zoomEnabled=!1):(this.zoomEnabled=!0,this.panEnabled=!1),Ka(a._zoomButton,a._resetButton)):\n(this.zoomEnabled=!0,this.panEnabled=!1))}else this.panEnabled=this.zoomEnabled=!1;fb(this);\"none\"!==this._toolBar.style.display&&this._zoomButton&&(this.panEnabled?ta(a,a._zoomButton,\"zoom\"):ta(a,a._zoomButton,\"pan\"),a._resetButton.getAttribute(\"state\")!==a._cultureInfo.resetText&&ta(a,a._resetButton,\"reset\"));this.options.toolTip&&this.toolTip.options!==this.options.toolTip&&(this.toolTip.options=this.options.toolTip);for(var c in this.toolTip.options)this.toolTip.options.hasOwnProperty(c)&&this.toolTip.updateOption(c)};\nm.prototype._updateSize=function(){var a;a=[this.canvas,this.overlaidCanvas,this._eventManager.ghostCanvas];var d=0,c=0;this.options.width?d=this.width:this.width=d=0b.linkedDataSeriesIndex||b.linkedDataSeriesIndex>=this.options.data.length||\"number\"!==typeof b.linkedDataSeriesIndex||\"error\"===this.options.data[b.linkedDataSeriesIndex].type)&&\n(b.linkedDataSeriesIndex=null);null===b.name&&(b.name=\"DataSeries \"+a);null===b.color?1a&&\"undefined\"!==typeof A.startTimePercent?a>=A.startTimePercent&&A.animationCallback(A.easingFunction(a-A.startTimePercent,0,1,1-A.startTimePercent),A):A.animationCallback(A.easingFunction(a,0,1,1),A);\nn.dispatchEvent(\"dataAnimationIterationEnd\",{chart:n})},function(){c=[];for(var a=0;aa.dataSeriesIndexes.length))for(var d=a.axisY.dataInfo,c=a.axisX.dataInfo,b,e,f=!1,p=0;pc.max&&(c.max=b);ed.max&&\"number\"===typeof e&&(d.max=e);if(0y&&(y=1/y);c.minDiff>y&&1!==y&&(c.minDiff=y)}else y=b-l.dataPoints[A-1].x,0>y&&(y*=-1),c.minDiff>y&&0!==y&&(c.minDiff=y);null!==e&&null!==l.dataPoints[A-1].y&&(a.axisY.logarithmic?(y=e/l.dataPoints[A-1].y,1>y&&(y=1/y),d.minDiff>y&&1!==y&&(d.minDiff=y)):(y=e-l.dataPoints[A-1].y,0>y&&(y*=-1),d.minDiff>y&&0!==y&&(d.minDiff=y)))}if(bg&&!n)n=!0;else if(b>g&&n)continue;l.dataPoints[A].label&&(a.axisX.labels[b]=l.dataPoints[A].label);\nbc.viewPortMax&&(c.viewPortMax=b);null===e?c.viewPortMin===b&&rd.viewPortMax&&\"number\"===typeof e&&(d.viewPortMax=e))}}l.axisX.valueType=l.xValueType=f?\"dateTime\":\"number\"}};m.prototype._processStackedPlotUnit=function(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){for(var d=a.axisY.dataInfo,c=a.axisX.dataInfo,b,e,f=!1,p=[],l=[],A=Infinity,h=-Infinity,n=0;nc.max&&(c.max=b);if(0w&&(w=1/w);c.minDiff>w&&1!==w&&(c.minDiff=w)}else w=b-r.dataPoints[q-1].x,0>w&&(w*=-1),c.minDiff>w&&0!==w&&(c.minDiff=w);null!==e&&null!==r.dataPoints[q-1].y&&(a.axisY.logarithmic?0w&&(w=1/w),d.minDiff>w&&1!==w&&(d.minDiff=w)):(w=e-r.dataPoints[q-1].y,0>w&&(w*=-1),d.minDiff>w&&0!==w&&(d.minDiff=w)))}if(bu&&!y)y=!0;else if(b>u&&y)continue;r.dataPoints[q].label&&\n(a.axisX.labels[b]=r.dataPoints[q].label);bc.viewPortMax&&(c.viewPortMax=b);null===r.dataPoints[q].y?c.viewPortMin===b&&kd.max&&(d.max=a),qc.viewPortMax||(ad.viewPortMax&&(d.viewPortMax=a)));for(q in l)l.hasOwnProperty(q)&&!isNaN(q)&&(a=l[q],ad.max&&(d.max=Math.max(a,h)),qc.viewPortMax||(ad.viewPortMax&&(d.viewPortMax=Math.max(a,h))))}};m.prototype._processStacked100PlotUnit=function(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){for(var d=a.axisY.dataInfo,c=a.axisX.dataInfo,b,e,f=!1,p=!1,l=!1,A=[],h=0;hc.max&&(c.max=b);if(0u&&(u=1/u);c.minDiff>u&&1!==u&&(c.minDiff=u)}else u=b-n.dataPoints[r-1].x,0>u&&(u*=-1),c.minDiff>u&&0!==u&&(c.minDiff=u);t(e)||null===n.dataPoints[r-\n1].y||(a.axisY.logarithmic?0u&&(u=1/u),d.minDiff>u&&1!==u&&(d.minDiff=u)):(u=e-n.dataPoints[r-1].y,0>u&&(u*=-1),d.minDiff>u&&0!==u&&(d.minDiff=u)))}if(bfa&&!g)g=!0;else if(b>fa&&g)continue;n.dataPoints[r].label&&(a.axisX.labels[b]=n.dataPoints[r].label);bc.viewPortMax&&(c.viewPortMax=b);null===e?c.viewPortMin===b&&ye&&(l=!0),A[b]=A[b]?A[b]+Math.abs(e):Math.abs(e))}}n.axisX.valueType=n.xValueType=f?\"dateTime\":\"number\"}a.axisY.logarithmic?(d.max=t(d.viewPortMax)?99*Math.pow(a.axisY.logarithmBase,-0.05):Math.max(d.viewPortMax,99*Math.pow(a.axisY.logarithmBase,-0.05)),d.min=t(d.viewPortMin)?1:Math.min(d.viewPortMin,1)):p&&!l?(d.max=t(d.viewPortMax)?99:Math.max(d.viewPortMax,99),d.min=t(d.viewPortMin)?1:Math.min(d.viewPortMin,1)):p&&l?(d.max=t(d.viewPortMax)?99:Math.max(d.viewPortMax,99),d.min=t(d.viewPortMin)?\n-99:Math.min(d.viewPortMin,-99)):!p&&l&&(d.max=t(d.viewPortMax)?-1:Math.max(d.viewPortMax,-1),d.min=t(d.viewPortMin)?-99:Math.min(d.viewPortMin,-99));d.viewPortMin=d.min;d.viewPortMax=d.max;a.dataPointYSums=A}};m.prototype._processMultiYPlotUnit=function(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length))for(var d=a.axisY.dataInfo,c=a.axisX.dataInfo,b,e,f,p,l=!1,A=0;Ac.max&&(c.max=b);fd.max&&(d.max=p);0y&&(y=1/y),c.minDiff>y&&1!==y&&(c.minDiff=y)):(y=b-h.dataPoints[n-1].x,0>y&&(y*=-1),c.minDiff>y&&0!==y&&(c.minDiff=y)),e&&(null!==e[0]&&h.dataPoints[n-1].y&&null!==h.dataPoints[n-1].y[0])&&(a.axisY.logarithmic?(y=e[0]/h.dataPoints[n-1].y[0],1>y&&(y=1/y),d.minDiff>y&&1!==y&&(d.minDiff=y)):(y=e[0]-h.dataPoints[n-1].y[0],0>y&&(y*=-1),d.minDiff>y&&0!==\ny&&(d.minDiff=y))));if(!(bu&&!q)q=!0;else if(b>u&&q)continue;h.dataPoints[n].label&&(a.axisX.labels[b]=h.dataPoints[n].label);bc.viewPortMax&&(c.viewPortMax=b);if(c.viewPortMin===b&&e)for(w=0;wd.viewPortMax&&(d.viewPortMax=p))}}h.axisX.valueType=h.xValueType=l?\"dateTime\":\n\"number\"}};m.prototype._processSpecificPlotUnit=function(a){if(\"waterfall\"===a.type&&a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length))for(var d=a.axisY.dataInfo,c=a.axisX.dataInfo,b,e,f=!1,p=0;pc.max&&(c.max=b),l.dataPointEOs[A].cumulativeSumd.max&&(d.max=l.dataPointEOs[A].cumulativeSum),0r&&(r=1/r),c.minDiff>r&&1!==r&&(c.minDiff=r)):(r=b-l.dataPoints[A-1].x,0>r&&(r*=-1),c.minDiff>r&&0!==r&&(c.minDiff=r)),null!==e&&null!==l.dataPoints[A-1].y&&(a.axisY.logarithmic?(e=l.dataPointEOs[A].cumulativeSum/l.dataPointEOs[A-1].cumulativeSum,1>e&&\n(e=1/e),d.minDiff>e&&1!==e&&(d.minDiff=e)):(e=l.dataPointEOs[A].cumulativeSum-l.dataPointEOs[A-1].cumulativeSum,0>e&&(e*=-1),d.minDiff>e&&0!==e&&(d.minDiff=e)))),!(bg&&!n)n=!0;else if(b>g&&n)continue;l.dataPoints[A].label&&(a.axisX.labels[b]=l.dataPoints[A].label);bc.viewPortMax&&(c.viewPortMax=b);0d.viewPortMax&&(d.viewPortMax=l.dataPointEOs[A-1].cumulativeSum));l.dataPointEOs[A].cumulativeSumd.viewPortMax&&(d.viewPortMax=l.dataPointEOs[A].cumulativeSum)}l.axisX.valueType=l.xValueType=f?\"dateTime\":\"number\"}};m.prototype.calculateAutoBreaks=function(){function a(a,b,c,e){if(e)return c=Math.pow(Math.min(c*a/b,b/a),0.2),1>=c&&(c=Math.pow(1>a?1/a:Math.min(b/a,a),0.25)),{startValue:a*\nc,endValue:b/c};c=0.2*Math.min(c-b+a,b-a);0>=c&&(c=0.25*Math.min(b-a,Math.abs(a)));return{startValue:a+c,endValue:b-c}}function d(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)){var b=a.axisX.scaleBreaks&&a.axisX.scaleBreaks.autoCalculate&&1<=a.axisX.scaleBreaks.maxNumberOfAutoBreaks,c=a.axisY.scaleBreaks&&a.axisY.scaleBreaks.autoCalculate&&1<=a.axisY.scaleBreaks.maxNumberOfAutoBreaks;if(b||c)for(var d=a.axisY.dataInfo,f=a.axisX.dataInfo,g,h=f.min,p=f.max,l=d.min,n=d.max,f=f._dataRanges,\nd=d._dataRanges,q,r=0,A=0;Ak.dataPoints.length))for(r=0;rf[q].max&&(f[q].max=g)),c){var m=(n+1-l)*Math.max(parseFloat(a.axisY.scaleBreaks.collapsibleThreshold)||10,10)/100;if((g=\"waterfall\"===\na.type?k.dataPointEOs[r].cumulativeSum:k.dataPoints[r].y)&&g.length)for(var s=0;sd[q].max&&(d[q].max=g[s]);else t(g)||(q=Math.floor((g-l)/m),gd[q].max&&(d[q].max=g))}}}}function c(a){if(a.dataSeriesIndexes&&!(1>a.dataSeriesIndexes.length)&&a.axisX.scaleBreaks&&a.axisX.scaleBreaks.autoCalculate&&1<=a.axisX.scaleBreaks.maxNumberOfAutoBreaks)for(var b=a.axisX.dataInfo,c=b.min,d=b.max,f=b._dataRanges,\ng,h=0,p=0;pl.dataPoints.length))for(h=0;hf[g].max&&(f[g].max=b)}}for(var b,e=this,f=!1,p=0;pn[g].max&&(n[g].max=r)}delete this._axes[p].dataInfo.dataPointYPositiveSums}if(this._axes[p].dataInfo.dataPointYNegativeSums){q=this._axes[p].dataInfo.dataPointYNegativeSums;n=h;for(l in q)q.hasOwnProperty(l)&&!isNaN(l)&&(r=-1*q[l],t(r)||(g=Math.floor((r-A)/b),rn[g].max&&(n[g].max=r)));delete this._axes[p].dataInfo.dataPointYNegativeSums}for(l=0;lb&&f.push({diff:r,start:n,end:A});break}else l++;if(this._axes[p].scaleBreaks.customBreaks)for(l=0;l=e.x1&&(a<=e.x2&&d>=e.y1&&d<=e.y2)&&(b=e.id)}return b};m.prototype.getAutoFontSize=kb;m.prototype.resetOverlayedCanvas=function(){this.overlaidCanvasCtx.clearRect(0,0,this.width,this.height)};\nm.prototype.clearCanvas=jb;m.prototype.attachEvent=function(a){this._events.push(a)};m.prototype._touchEventHandler=function(a){if(a.changedTouches&&this.interactivityEnabled){var d=[],c=a.changedTouches,b=c?c[0]:a,e=null;switch(a.type){case \"touchstart\":case \"MSPointerDown\":d=[\"mousemove\",\"mousedown\"];this._lastTouchData=Na(b);this._lastTouchData.time=new Date;break;case \"touchmove\":case \"MSPointerMove\":d=[\"mousemove\"];break;case \"touchend\":case \"MSPointerUp\":var f=this._lastTouchData&&this._lastTouchData.time?\nnew Date-this._lastTouchData.time:0,d=\"touchstart\"===this._lastTouchEventType||\"MSPointerDown\"===this._lastTouchEventType||300>f?[\"mouseup\",\"click\"]:[\"mouseup\"];break;default:return}if(!(c&&1f)this._lastTouchData.scroll=!0}catch(l){}this._lastTouchEventType=a.type;if(this._lastTouchData.scroll&&this.zoomEnabled)this.isDrag&&this.resetOverlayedCanvas(),\nthis.isDrag=!1;else for(c=0;c=e.x1&&d.x<=e.x2&&d.y>=e.y1&&d.y<=e.y2){b[c].call(b.context,d.x,d.y);\"mousedown\"===c&&!0===b.capture?(m.capturedEventParam=b,this.overlaidCanvas.setCapture?this.overlaidCanvas.setCapture():document.documentElement.addEventListener(\"mouseup\",this._mouseEventHandler,!1)):\"mouseup\"===c&&(b.chart.overlaidCanvas.releaseCapture?\nb.chart.overlaidCanvas.releaseCapture():document.documentElement.removeEventListener(\"mouseup\",this._mouseEventHandler,!1));break}else b=null;a.target.style.cursor=b&&b.cursor?b.cursor:this._defaultCursor}c=this.plotArea;if(d.xc.x2||d.yc.y2)if(this.toolTip&&this.toolTip.enabled){this.toolTip.hide();this.toolTip.dispatchEvent(\"hidden\",{chart:this,toolTip:this.toolTip},this.toolTip);for(f=0;fc.maximum&&(f=c.viewportMaximum/c.maximum,c.sessionVariables.newViewportMinimum=c.viewportMinimum/f,c.sessionVariables.newViewportMaximum=c.viewportMaximum/f,p=!0):c.viewportMinimumc.maximum&&(f=c.viewportMaximum-c.maximum,c.sessionVariables.newViewportMinimum=c.viewportMinimum-f,c.sessionVariables.newViewportMaximum=\nc.viewportMaximum-f,p=!0);else if((!e||2Math.abs(c)&&(this.panEnabled||this.zoomEnabled)?(this.toolTip.hide(),this.toolTip.dispatchEvent(\"hidden\",{chart:this,toolTip:this.toolTip},this.toolTip)):\nthis.panEnabled||this.zoomEnabled||this.toolTip.mouseMoveHandler(a,d);if((!e||2g)var y=g,g=q,q=y;if(r.scaleBreaks)for(y=0;!f&&y=g;if(isFinite(r.dataInfo.minDiff))if(y=\nr.getApparentDifference(q,g,null,!0),!(f||!(this.panEnabled&&r.scaleBreaks&&r.scaleBreaks._appliedBreaks.length)&&(r.logarithmic&&yr.maximum))A.push(r),n.push({val1:q,val2:g}),l=!0;else if(!e){l=!1;break}}return{isValid:l,axesWithValidRange:A,axesRanges:n}};m.prototype.preparePlotArea=function(){var a=this.plotArea;!s&&(0c.lineCoordinates.x2?d.x2:c.lineCoordinates.x2;a.y2=d.y2>d.y1?d.y2:c.lineCoordinates.y2;a.width=a.x2-a.x1;a.height=a.y2-a.y1}this.axisY2&&0c.lineCoordinates.x2?d.x2:c.lineCoordinates.x2,a.y2=d.y2>d.y1?d.y2:c.lineCoordinates.y2,a.width=a.x2-a.x1,a.height=a.y2-a.y1)}else d=this.layoutManager.getFreeSpace(),a.x1=d.x1,a.x2=d.x2,a.y1=d.y1,a.y2=d.y2,a.width=d.width,a.height=d.height;s||(a.canvas.width=a.width,a.canvas.height=a.height,a.canvas.style.left=a.x1+\"px\",a.canvas.style.top=a.y1+\"px\",(0c.x2||h.point.yc.y2+1)continue}else if(\"rangearea\"===n||\"rangesplinearea\"===n){if(h.dataPoint.xB.viewportMaximum||\nMath.max.apply(null,h.dataPoint.y)z.viewportMaximum)continue}else if(0<=n.indexOf(\"line\")||0<=n.indexOf(\"area\")||0<=n.indexOf(\"bubble\")||0<=n.indexOf(\"scatter\")){if(h.dataPoint.xB.viewportMaximum||h.dataPoint.yz.viewportMaximum)continue}else if(0<=n.indexOf(\"column\")||\"waterfall\"===n||\"error\"===n&&!h.axisSwapped){if(h.dataPoint.xB.viewportMaximum||\nh.bounds.y1>c.y2||h.bounds.y2B.viewportMaximum||h.bounds.x1>c.x2||h.bounds.x2B.viewportMaximum||Math.max.apply(null,h.dataPoint.y)z.viewportMaximum)continue}else if(h.dataPoint.xB.viewportMaximum)continue;\ne=p=2;\"horizontal\"===w?(l=g.width,A=g.height):(A=g.width,l=g.height);if(\"normal\"===this.plotInfo.axisPlacement){if(0<=n.indexOf(\"line\")||0<=n.indexOf(\"area\"))u=\"auto\",p=4;else if(0<=n.indexOf(\"stacked\"))\"auto\"===u&&(u=\"inside\");else if(\"bubble\"===n||\"scatter\"===n)u=\"inside\";r=h.point.x-l/2;\"inside\"!==u?(e=c.y1,f=c.y2,0h.point.y)):(q=h.point.y+p+b,q>f-A-p-b&&(q=\"auto\"===u?Math.min(h.point.y,f)-A-p-b:f-A-p-b,v=qf-A-p&&(\"bubble\"===n||\"scatter\"===n)&&(q=Math.min(h.point.y+p,c.y2-A-p))),q=Math.min(q,f-A))}else 0<=n.indexOf(\"line\")||0<=n.indexOf(\"area\")||\n0<=n.indexOf(\"scatter\")?(u=\"auto\",e=4):0<=n.indexOf(\"stacked\")?\"auto\"===u&&(u=\"inside\"):\"bubble\"===n&&(u=\"inside\"),q=h.point.y-A/2,\"inside\"!==u?(p=c.x1,f=c.x2,0>C?(r=h.point.x-l-e-b,rh.point.x)):(r=h.point.x+e+b,r>f-l-e-b&&(r=\"auto\"===u?Math.min(h.point.x,f)-l-e-b:f-l-e-b,v=rC?Math.max(h.bounds.x1,c.x1)+l/2+e:Math.min(h.bounds.x2,c.x2)-\nl/2-e:(Math.max(h.bounds.x1,c.x1)+Math.min(h.bounds.x2,c.x2))/2,r=0>C?Math.max(h.point.x,b)-l/2:Math.min(h.point.x,b)-l/2,r=Math.max(r,p));\"vertical\"===w&&(q+=A);g.x=r;g.y=q;g.render(!0);m&&(\"inside\"!==u&&(0>n.indexOf(\"bar\")&&(\"error\"!==n||!h.axisSwapped)&&h.point.x>c.x1&&h.point.xn.indexOf(\"column\")&&(\"error\"!==n||h.axisSwapped)&&h.point.y>c.y1&&h.point.y=a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx;c.save();var e=this.plotArea;c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();for(var f=[],p,l=0;la.axisX.dataInfo.viewPortMax&&(!h.connectNullData||!C)))if(\"number\"!==typeof n[u].y)0n[u].y===a.axisY.reversed?1:-1,color:y})}c.stroke();s&&b.stroke()}}V.drawMarkers(f);s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,\ne.y1,e.width,e.height),b.beginPath());c.restore();c.beginPath();return{source:d,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderStepLine=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx;c.save();var e=this.plotArea;c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();for(var f=[],p,l=0;la.axisX.dataInfo.viewPortMax&&(!h.connectNullData||!C)))if(\"number\"!==typeof n[u].y)0n[u].y===a.axisY.reversed?1:-1,color:y})}c.stroke();s&&b.stroke()}}V.drawMarkers(f);s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&\nthis._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),b.beginPath());c.restore();c.beginPath();return{source:d,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderSpline=function(a){function d(a){a=v(a,2);if(0=a.dataSeriesIndexes.length)){var e=this._eventManager.ghostCtx;b.save();var f=this.plotArea;b.beginPath();b.rect(f.x1,f.y1,f.width,f.height);b.clip();for(var p=[],l=0;la.axisX.dataInfo.viewPortMax&&(!h.connectNullData||!w)))if(\"number\"!==\ntypeof n[m].y)0n[m].y===a.axisY.reversed?1:-1,color:y});w=!1}d(t)}V.drawMarkers(p);s&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(f.x1,\nf.y1,f.width,f.height),e.beginPath());b.restore();b.beginPath();return{source:c,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderColumn=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=0,p,l,A,h=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?\nthis.dataPointWidth:1,n=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.width,0.9*(this.plotArea.width/a.plotType.totalDataSeries))<<0,r=a.axisX.dataInfo.minDiff;isFinite(r)||(r=0.3*Math.abs(a.axisX.range));r=this.dataPointWidth=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.width*(a.axisX.logarithmic?Math.log(r)/Math.log(a.axisX.range):Math.abs(r)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&\nf>n&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,n));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&nn&&(r=n);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(n=0;na.axisX.dataInfo.viewPortMax)&&\"number\"===typeof y[f].y){p=a.axisX.convertValueToPixel(A);l=a.axisY.convertValueToPixel(y[f].y);p=a.axisX.reversed?p+a.plotType.totalDataSeries*r/2-(a.previousDataSeriesCount+n)*r<<0:p-a.plotType.totalDataSeries*r/2+(a.previousDataSeriesCount+n)*r<<0;var m=a.axisX.reversed?\np-r<<0:p+r<<0,u;0<=y[f].y?u=h:(u=l,l=h);l>u&&(b=l,l=u,u=b);b=y[f].color?y[f].color:g._colorSet[f%g._colorSet.length];Z(c,p,l,m,u,b,0,null,k&&0<=y[f].y,0>y[f].y&&k,!1,!1,g.fillOpacity);b=g.dataPointIds[f];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:q,dataPointIndex:f,x1:p,y1:l,x2:m,y2:u};b=R(b);s&&Z(this._eventManager.ghostCtx,p,l,m,u,b,0,null,!1,!1,!1,!1);(y[f].indexLabel||g.indexLabel||y[f].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:\"column\",\ndataPoint:y[f],dataSeries:g,point:{x:p+(m-p)/2,y:0>y[f].y===a.axisY.reversed?l:u},direction:0>y[f].y===a.axisY.reversed?1:-1,bounds:{x1:p,y1:Math.min(l,u),x2:m,y2:Math.max(l,u)},color:b})}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.yScaleAnimation,easingFunction:J.easing.easeOutQuart,animationBase:ha.axisY.bounds.y2?a.axisY.bounds.y2:h}}};m.prototype.renderStackedColumn=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,\nf=[],p=[],l=[],A=[],h=0,n,r,q=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;n=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.width<<0;var g=a.axisX.dataInfo.minDiff;isFinite(g)||(g=0.3*Math.abs(a.axisX.range));g=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.width*(a.axisX.logarithmic?Math.log(g)/\nMath.log(a.axisX.range):Math.abs(g)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&h>n&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,n));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&nn&&(g=n);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,\ne.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var y=0;ya.axisX.dataInfo.viewPortMax)&&\"number\"===typeof u[h].y){n=a.axisX.convertValueToPixel(b);var t=n-a.plotType.plotUnits.length*g/2+a.index*g<<0,C=t+g<<0,B;if(a.axisY.logarithmic||\na.axisY.scaleBreaks&&0=u[h].y)A[b]=u[h].y+(A[b]?A[b]:0),B=a.axisY.convertValueToPixel(A[b]),r=\"undefined\"!==typeof p[b]?p[b]:q,p[b]=B;else if(r=a.axisY.convertValueToPixel(u[h].y),0<=u[h].y){var z=\"undefined\"!==typeof f[b]?f[b]:0;r-=z;B=q-z;f[b]=z+(B-r)}else z=\np[b]?p[b]:0,B=r+z,r=q+z,p[b]=z+(B-r);b=u[h].color?u[h].color:m._colorSet[h%m._colorSet.length];Z(c,t,r,C,B,b,0,null,w&&0<=u[h].y,0>u[h].y&&w,!1,!1,m.fillOpacity);b=m.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:h,x1:t,y1:r,x2:C,y2:B};b=R(b);s&&Z(this._eventManager.ghostCtx,t,r,C,B,b,0,null,!1,!1,!1,!1);(u[h].indexLabel||m.indexLabel||u[h].indexLabelFormatter||m.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedColumn\",\ndataPoint:u[h],dataSeries:m,point:{x:n,y:0<=u[h].y?r:B},direction:0>u[h].y===a.axisY.reversed?1:-1,bounds:{x1:t,y1:Math.min(r,B),x2:C,y2:Math.max(r,B)},color:b})}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.yScaleAnimation,easingFunction:J.easing.easeOutQuart,animationBase:qa.axisY.bounds.y2?a.axisY.bounds.y2:q}}};m.prototype.renderStackedColumn100=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,\nf=[],p=[],l=[],A=[],h=0,n,r,q=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;n=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.width<<0;var g=a.axisX.dataInfo.minDiff;isFinite(g)||(g=0.3*Math.abs(a.axisX.range));g=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.width*(a.axisX.logarithmic?Math.log(g)/\nMath.log(a.axisX.range):Math.abs(g)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&h>n&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,n));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&nn&&(g=n);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,\ne.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var y=0;ya.axisX.dataInfo.viewPortMax)&&\"number\"===typeof u[h].y){n=a.axisX.convertValueToPixel(b);r=0!==a.dataPointYSums[b]?100*(u[h].y/a.dataPointYSums[b]):0;var t=n-a.plotType.plotUnits.length*g/\n2+a.index*g<<0,C=t+g<<0,B;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0=l[b])continue;r=a.axisY.convertValueToPixel(l[b]);B=f[b]?f[b]:q;f[b]=r}else if(a.axisY.scaleBreaks&&0=u[h].y)A[b]=r+(\"undefined\"!==typeof A[b]?A[b]:0),B=a.axisY.convertValueToPixel(A[b]),r=p[b]?p[b]:q,p[b]=B;else if(r=a.axisY.convertValueToPixel(r),0<=u[h].y){var z=\"undefined\"!==typeof f[b]?\nf[b]:0;r-=z;B=q-z;a.dataSeriesIndexes.length-1===y&&1>=Math.abs(e.y1-r)&&(r=e.y1);f[b]=z+(B-r)}else z=\"undefined\"!==typeof p[b]?p[b]:0,B=r+z,r=q+z,a.dataSeriesIndexes.length-1===y&&1>=Math.abs(e.y2-B)&&(B=e.y2),p[b]=z+(B-r);b=u[h].color?u[h].color:m._colorSet[h%m._colorSet.length];Z(c,t,r,C,B,b,0,null,w&&0<=u[h].y,0>u[h].y&&w,!1,!1,m.fillOpacity);b=m.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:h,x1:t,y1:r,x2:C,y2:B};b=R(b);s&&Z(this._eventManager.ghostCtx,\nt,r,C,B,b,0,null,!1,!1,!1,!1);(u[h].indexLabel||m.indexLabel||u[h].indexLabelFormatter||m.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedColumn100\",dataPoint:u[h],dataSeries:m,point:{x:n,y:0<=u[h].y?r:B},direction:0>u[h].y===a.axisY.reversed?1:-1,bounds:{x1:t,y1:Math.min(r,B),x2:C,y2:Math.max(r,B)},color:b})}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,\nthis.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.yScaleAnimation,easingFunction:J.easing.easeOutQuart,animationBase:qa.axisY.bounds.y2?a.axisY.bounds.y2:q}}};m.prototype.renderBar=\nfunction(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=0,p,l,A,h=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,n=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.height,0.9*(this.plotArea.height/a.plotType.totalDataSeries))<<\n0,r=a.axisX.dataInfo.minDiff;isFinite(r)||(r=0.3*Math.abs(a.axisX.range));r=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.height*(a.axisX.logarithmic?Math.log(r)/Math.log(a.axisX.range):Math.abs(r)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&f>n&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,n));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&nn&&(r=n);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(n=0;na.axisX.dataInfo.viewPortMax)&&\"number\"===typeof y[f].y){l=a.axisX.convertValueToPixel(A);p=a.axisY.convertValueToPixel(y[f].y);l=a.axisX.reversed?l+a.plotType.totalDataSeries*r/2-(a.previousDataSeriesCount+n)*r<<0:l-a.plotType.totalDataSeries*r/2+(a.previousDataSeriesCount+n)*r<<0;var m=a.axisX.reversed?l-r<<0:l+r<<0,u;0<=y[f].y?u=h:(u=p,p=h);b=y[f].color?y[f].color:g._colorSet[f%g._colorSet.length];Z(c,u,l,p,m,b,0,null,k,!1,!1,!1,g.fillOpacity);b=g.dataPointIds[f];\nthis._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:q,dataPointIndex:f,x1:u,y1:l,x2:p,y2:m};b=R(b);s&&Z(this._eventManager.ghostCtx,u,l,p,m,b,0,null,!1,!1,!1,!1);(y[f].indexLabel||g.indexLabel||y[f].indexLabelFormatter||g.indexLabelFormatter)&&this._indexLabels.push({chartType:\"bar\",dataPoint:y[f],dataSeries:g,point:{x:0<=y[f].y?p:u,y:l+(m-l)/2},direction:0>y[f].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(u,p),y1:l,x2:Math.max(u,p),y2:m},color:b})}}}s&&(d.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.xScaleAnimation,easingFunction:J.easing.easeOutQuart,\nanimationBase:ha.axisY.bounds.x2?a.axisY.bounds.x2:h}}};m.prototype.renderStackedBar=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=[],p=[],l=[],A=[],h=0,n,r,q=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;r=this.options.dataPointMaxWidth?\nthis.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.height<<0;var g=a.axisX.dataInfo.minDiff;isFinite(g)||(g=0.3*Math.abs(a.axisX.range));g=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.height*(a.axisX.logarithmic?Math.log(g)/Math.log(a.axisX.range):Math.abs(g)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&h>r&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,r));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&\nrr&&(g=r);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var y=0;ya.axisX.dataInfo.viewPortMax)&&\"number\"===typeof u[h].y){r=a.axisX.convertValueToPixel(b);var t=r-a.plotType.plotUnits.length*g/2+a.index*g<<0,C=t+g<<0,B;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0=u[h].y)A[b]=u[h].y+(A[b]?A[b]:0),n=p[b]?p[b]:q,p[b]=B=a.axisY.convertValueToPixel(A[b]);else if(n=a.axisY.convertValueToPixel(u[h].y),0<=u[h].y){var z=f[b]?f[b]:0;B=q+z;n+=z;f[b]=z+(n-B)}else z=p[b]?p[b]:0,B=n-z,n=q-z,p[b]=z+(n-B);b=u[h].color?u[h].color:m._colorSet[h%m._colorSet.length];Z(c,B,t,n,C,b,0,null,w,!1,!1,!1,m.fillOpacity);b=m.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:h,x1:B,y1:t,x2:n,y2:C};b=R(b);s&&Z(this._eventManager.ghostCtx,\nB,t,n,C,b,0,null,!1,!1,!1,!1);(u[h].indexLabel||m.indexLabel||u[h].indexLabelFormatter||m.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedBar\",dataPoint:u[h],dataSeries:m,point:{x:0<=u[h].y?n:B,y:r},direction:0>u[h].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(B,n),y1:t,x2:Math.max(B,n),y2:C},color:b})}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),\na.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.xScaleAnimation,easingFunction:J.easing.easeOutQuart,animationBase:qa.axisY.bounds.x2?a.axisY.bounds.x2:q}}};m.prototype.renderStackedBar100=\nfunction(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=[],p=[],l=[],A=[],h=0,n,r,q=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),h=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;r=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.15*this.height<<0;var g=a.axisX.dataInfo.minDiff;\nisFinite(g)||(g=0.3*Math.abs(a.axisX.range));g=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.height*(a.axisX.logarithmic?Math.log(g)/Math.log(a.axisX.range):Math.abs(g)/Math.abs(a.axisX.range))/a.plotType.plotUnits.length)<<0;this.dataPointMaxWidth&&h>r&&(h=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,r));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&rr&&(g=r);c.save();s&&\nthis._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var y=0;ya.axisX.dataInfo.viewPortMax)&&\"number\"===typeof u[h].y){r=a.axisX.convertValueToPixel(b);var t;t=0!==a.dataPointYSums[b]?100*(u[h].y/a.dataPointYSums[b]):0;var C=r-a.plotType.plotUnits.length*g/2+a.index*g<<0,B=C+g<<0;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0=l[b])continue;t=f[b]?f[b]:q;f[b]=n=a.axisY.convertValueToPixel(l[b])}else if(a.axisY.scaleBreaks&&0=u[h].y)A[b]=\nt+(A[b]?A[b]:0),n=p[b]?p[b]:q,p[b]=t=a.axisY.convertValueToPixel(A[b]);else if(n=a.axisY.convertValueToPixel(t),0<=u[h].y){var z=f[b]?f[b]:0;t=q+z;n+=z;a.dataSeriesIndexes.length-1===y&&1>=Math.abs(e.x2-n)&&(n=e.x2);f[b]=z+(n-t)}else z=p[b]?p[b]:0,t=n-z,n=q-z,a.dataSeriesIndexes.length-1===y&&1>=Math.abs(e.x1-t)&&(t=e.x1),p[b]=z+(n-t);b=u[h].color?u[h].color:m._colorSet[h%m._colorSet.length];Z(c,t,C,n,B,b,0,null,w,!1,!1,!1,m.fillOpacity);b=m.dataPointIds[h];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",\ndataSeriesIndex:k,dataPointIndex:h,x1:t,y1:C,x2:n,y2:B};b=R(b);s&&Z(this._eventManager.ghostCtx,t,C,n,B,b,0,null,!1,!1,!1,!1);(u[h].indexLabel||m.indexLabel||u[h].indexLabelFormatter||m.indexLabelFormatter)&&this._indexLabels.push({chartType:\"stackedBar100\",dataPoint:u[h],dataSeries:m,point:{x:0<=u[h].y?n:t,y:r},direction:0>u[h].y===a.axisY.reversed?1:-1,bounds:{x1:Math.min(t,n),y1:C,x2:Math.max(t,n),y2:B},color:b})}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\n\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.xScaleAnimation,easingFunction:J.easing.easeOutQuart,animationBase:qa.axisY.bounds.x2?a.axisY.bounds.x2:q}}};m.prototype.renderArea=function(a){var d,c;function b(){B&&(0=a.axisY.viewportMinimum&&0<=a.axisY.viewportMaximum?C=E:0>a.axisY.viewportMaximum?C=l.y1:0=a.dataSeriesIndexes.length)){var p=this._eventManager.ghostCtx,l=a.axisY.lineCoordinates,A=[],h=this.plotArea,n;f.save();s&&p.save();f.beginPath();f.rect(h.x1,h.y1,h.width,h.height);f.clip();s&&(p.beginPath(),p.rect(h.x1,h.y1,h.width,h.height),p.clip());for(var r=0;ra.axisX.dataInfo.viewPortMax&&(!g.connectNullData||!ja)))if(\"number\"!==typeof y[k].y)g.connectNullData||(ja||d)||b(),ja=!0;else{m=a.axisX.convertValueToPixel(t);u=a.axisY.convertValueToPixel(y[k].y);d||ja?(!d&&g.connectNullData?(f.setLineDash&&(g.options.nullDataLineDashType||c===g.lineDashType&&g.lineDashType!==g.nullDataLineDashType)&&(d=m,c=u,m=n.x,u=n.y,b(),f.moveTo(n.x,n.y),m=d,u=c,B=n,c=g.nullDataLineDashType,f.setLineDash(T)),f.lineTo(m,u),s&&p.lineTo(m,\nu)):(f.beginPath(),f.moveTo(m,u),s&&(p.beginPath(),p.moveTo(m,u)),B={x:m,y:u}),ja=d=!1):(f.lineTo(m,u),s&&p.lineTo(m,u),0==k%250&&b());n={x:m,y:u};ky[k].y===a.axisY.reversed?1:-1,color:z})}b();V.drawMarkers(A)}}s&&(e.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),f.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&f.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&f.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),f.clearRect(h.x1,h.y1,h.width,h.height),this._eventManager.ghostCtx.restore());f.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,\nanimationBase:0}}};m.prototype.renderSplineArea=function(a){function d(){var c=v(t,2);if(0=a.axisY.viewportMinimum&&0<=a.axisY.viewportMaximum?\nm=k:0>a.axisY.viewportMaximum?m=f.y1:0=a.dataSeriesIndexes.length)){var e=this._eventManager.ghostCtx,f=a.axisY.lineCoordinates,p=[],l=this.plotArea;b.save();s&&e.save();b.beginPath();b.rect(l.x1,\nl.y1,l.width,l.height);b.clip();s&&(e.beginPath(),e.rect(l.x1,l.y1,l.width,l.height),e.clip());for(var A=0;Aa.axisX.dataInfo.viewPortMax&&(!n.connectNullData||!y)))if(\"number\"!==typeof r[q].y)0\nr[q].y===a.axisY.reversed?1:-1,color:E});y=!1}d();V.drawMarkers(p)}}s&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(l.x1,l.y1,l.width,l.height),this._eventManager.ghostCtx.restore());\nb.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderStepArea=function(a){var d,c;function b(){B&&(0=a.axisY.viewportMinimum&&0<=a.axisY.viewportMaximum?C=E:0>a.axisY.viewportMaximum?C=l.y1:0=a.dataSeriesIndexes.length)){var p=this._eventManager.ghostCtx,l=a.axisY.lineCoordinates,A=[],h=this.plotArea,n;f.save();s&&p.save();f.beginPath();f.rect(h.x1,h.y1,h.width,h.height);f.clip();s&&(p.beginPath(),p.rect(h.x1,h.y1,h.width,h.height),p.clip());for(var r=0;ra.axisX.dataInfo.viewPortMax&&(!g.connectNullData||!c))){var $=u;\"number\"!==typeof y[k].y?(g.connectNullData||(c||d)||b(),c=!0):(m=a.axisX.convertValueToPixel(t),u=a.axisY.convertValueToPixel(y[k].y),d||c?(!d&&g.connectNullData?(f.setLineDash&&(g.options.nullDataLineDashType||T===g.lineDashType&&g.lineDashType!==g.nullDataLineDashType)&&(d=m,c=u,m=n.x,u=n.y,b(),\nf.moveTo(n.x,n.y),m=d,u=c,B=n,T=g.nullDataLineDashType,f.setLineDash(S)),f.lineTo(m,$),f.lineTo(m,u),s&&(p.lineTo(m,$),p.lineTo(m,u))):(f.beginPath(),f.moveTo(m,u),s&&(p.beginPath(),p.moveTo(m,u)),B={x:m,y:u}),c=d=!1):(f.lineTo(m,$),s&&p.lineTo(m,$),f.lineTo(m,u),s&&p.lineTo(m,u),0==k%250&&b()),n={x:m,y:u},ky[k].y===a.axisY.reversed?1:-1,color:z}))}b();V.drawMarkers(A)}}s&&(e.drawImage(this._preRenderCanvas,0,0,this.width,this.height),f.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&f.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&f.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),f.clearRect(h.x1,\nh.y1,h.width,h.height),this._eventManager.ghostCtx.restore());f.restore();return{source:e,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderStackedArea=function(a){function d(){if(!(1>h.length)){for(0=a.dataSeriesIndexes.length)){var e=null,f=null,p=[],l=this.plotArea,A=[],h=[],n=[],r=[],q=0,g,k,m=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),t=this._eventManager.ghostCtx,u,w,E;s&&t.beginPath();b.save();s&&t.save();b.beginPath();b.rect(l.x1,l.y1,l.width,l.height);b.clip();s&&(t.beginPath(),t.rect(l.x1,l.y1,l.width,l.height),t.clip());for(var e=[],C=0;Ca.axisX.dataInfo.viewPortMax&&(!z.connectNullData||!$)))if(\"number\"!==typeof ea.y)z.connectNullData||($||w)||d(),$=!0;else{g=a.axisX.convertValueToPixel(f);var ka=A[f]?A[f]:0;if(a.axisY.logarithmic||\na.axisY.scaleBreaks&&0=r[f]&&a.axisY.logarithmic)continue;k=a.axisY.convertValueToPixel(r[f])}else k=a.axisY.convertValueToPixel(ea.y),k-=ka;h.push({x:g,y:m-ka});A[f]=m-k;w||$?(!w&&z.connectNullData?(b.setLineDash&&(z.options.nullDataLineDashType||E===z.lineDashType&&z.lineDashType!==z.nullDataLineDashType)&&(w=h.pop(),E=h[h.length-1],d(),b.moveTo(u.x,u.y),h.push(E),h.push(w),E=z.nullDataLineDashType,b.setLineDash(S)),b.lineTo(g,\nk),s&&t.lineTo(g,k)):(b.beginPath(),b.moveTo(g,k),s&&(t.beginPath(),t.moveTo(g,k))),$=w=!1):(b.lineTo(g,k),s&&t.lineTo(g,k),0==q%250&&(d(),b.moveTo(g,k),s&&t.moveTo(g,k),h.push({x:g,y:m-ka})));u={x:g,y:k};qv[q].y===a.axisY.reversed?1:-1,color:e})}}d();b.moveTo(g,k);s&&t.moveTo(g,k)}delete z.dataPointIndexes}V.drawMarkers(p);s&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),\nthis._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(l.x1,l.y1,l.width,l.height),t.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderStackedArea100=function(a){function d(){for(0=a.dataSeriesIndexes.length)){var e=null,f=null,p=this.plotArea,l=[],k=[],h=[],n=[],r=[],q=0,g,y,m,t,u,w=a.axisY.convertValueToPixel(a.axisY.logarithmic?a.axisY.viewportMinimum:0),E=this._eventManager.ghostCtx;b.save();s&&E.save();b.beginPath();b.rect(p.x1,p.y1,p.width,p.height);b.clip();s&&(E.beginPath(),E.rect(p.x1,p.y1,p.width,p.height),E.clip());\nfor(var e=[],C=0;Ca.axisX.dataInfo.viewPortMax&&(!z.connectNullData||!$)))if(\"number\"!==typeof ea.y)z.connectNullData||\n($||t)||d(),$=!0;else{var ka;ka=0!==a.dataPointYSums[f]?100*(ea.y/a.dataPointYSums[f]):0;g=a.axisX.convertValueToPixel(f);var F=k[f]?k[f]:0;if(a.axisY.logarithmic||a.axisY.scaleBreaks&&0=r[f]&&a.axisY.logarithmic)continue;y=a.axisY.convertValueToPixel(r[f])}else y=a.axisY.convertValueToPixel(ka),y-=F;h.push({x:g,y:w-F});k[f]=w-y;t||$?(!t&&z.connectNullData?(b.setLineDash&&(z.options.nullDataLineDashType||u===z.lineDashType&&z.lineDashType!==\nz.nullDataLineDashType)&&(t=h.pop(),u=h[h.length-1],d(),b.moveTo(m.x,m.y),h.push(u),h.push(t),u=z.nullDataLineDashType,b.setLineDash(S)),b.lineTo(g,y),s&&E.lineTo(g,y)):(b.beginPath(),b.moveTo(g,y),s&&(E.beginPath(),E.moveTo(g,y))),$=t=!1):(b.lineTo(g,y),s&&E.lineTo(g,y),0==q%250&&(d(),b.moveTo(g,y),s&&E.moveTo(g,y),h.push({x:g,y:w-F})));m={x:g,y:y};qv[q].y===a.axisY.reversed?1:-1,color:e})}}d();b.moveTo(g,y);s&&E.moveTo(g,y)}delete z.dataPointIndexes}V.drawMarkers(l);s&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&\nb.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.clearRect(p.x1,p.y1,p.width,p.height),E.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderBubble=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,\nc=s?this._preRenderCtx:d;if(!(0>=a.dataSeriesIndexes.length)){var b=this.plotArea,e=0,f,p;c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(b.x1,b.y1,b.width,b.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.clip());for(var l=-Infinity,k=Infinity,h=0;ha.axisX.dataInfo.viewPortMax||\"undefined\"===typeof q[e].z||(g=q[e].z,g>l&&(l=g),ga.axisX.dataInfo.viewPortMax)&&\n\"number\"===typeof q[e].y){f=a.axisX.convertValueToPixel(f);p=a.axisY.convertValueToPixel(q[e].y);var g=q[e].z,t=2*Math.max(Math.sqrt((l===k?m/2:y+(m-y)/(l-k)*(g-k))/Math.PI)<<0,1),g=r.getMarkerProperties(e,c);g.size=t;c.globalAlpha=r.fillOpacity;V.drawMarker(f,p,c,g.type,g.size,g.color,g.borderColor,g.borderThickness);c.globalAlpha=1;var u=r.dataPointIds[e];this._eventManager.objectMap[u]={id:u,objectType:\"dataPoint\",dataSeriesIndex:n,dataPointIndex:e,x1:f,y1:p,size:t};t=R(u);s&&V.drawMarker(f,p,\nthis._eventManager.ghostCtx,g.type,g.size,t,t,g.borderThickness);(q[e].indexLabel||r.indexLabel||q[e].indexLabelFormatter||r.indexLabelFormatter)&&this._indexLabels.push({chartType:\"bubble\",dataPoint:q[e],dataSeries:r,point:{x:f,y:p},direction:1,bounds:{x1:f-g.size/2,y1:p-g.size/2,x2:f+g.size/2,y2:p+g.size/2},color:null})}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),\na.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderScatter=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:\nd;if(!(0>=a.dataSeriesIndexes.length)){var b=this.plotArea,e=0,f,p;c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(b.x1,b.y1,b.width,b.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.clip());for(var l=0;la.axisX.dataInfo.viewPortMax)&&\"number\"===typeof n[e].y){f=a.axisX.convertValueToPixel(f);p=a.axisY.convertValueToPixel(n[e].y);var g=h.getMarkerProperties(e,f,p,c);c.globalAlpha=h.fillOpacity;V.drawMarker(g.x,g.y,g.ctx,g.type,g.size,g.color,g.borderColor,g.borderThickness);c.globalAlpha=1;Math.sqrt((r-f)*(r-f)+(q-p)*(q-p))Math.min(this.plotArea.width,\nthis.plotArea.height)||(r=h.dataPointIds[e],this._eventManager.objectMap[r]={id:r,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:e,x1:f,y1:p},r=R(r),s&&V.drawMarker(g.x,g.y,this._eventManager.ghostCtx,g.type,g.size,r,r,g.borderThickness),(n[e].indexLabel||h.indexLabel||n[e].indexLabelFormatter||h.indexLabelFormatter)&&this._indexLabels.push({chartType:\"scatter\",dataPoint:n[e],dataSeries:h,point:{x:f,y:p},direction:1,bounds:{x1:f-g.size/2,y1:p-g.size/2,x2:f+g.size/2,y2:p+g.size/2},color:null}),\nr=f,q=p)}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(b.x1,b.y1,b.width,b.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,\nanimationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderCandlestick=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d,b=this._eventManager.ghostCtx;if(!(0>=a.dataSeriesIndexes.length)){var e=null,f=null,p=this.plotArea,l=0,k,h,n,r,q,g,e=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,f=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?\nthis.dataPointWidth:0.015*this.width,y=a.axisX.dataInfo.minDiff;isFinite(y)||(y=0.3*Math.abs(a.axisX.range));y=this.options.dataPointWidth?this.dataPointWidth:0.7*p.width*(a.axisX.logarithmic?Math.log(y)/Math.log(a.axisX.range):Math.abs(y)/Math.abs(a.axisX.range))<<0;this.dataPointMaxWidth&&e>f&&(e=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,f));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&ff&&(y=f);c.save();s&&b.save();c.beginPath();c.rect(p.x1,p.y1,p.width,p.height);c.clip();s&&(b.beginPath(),b.rect(p.x1,p.y1,p.width,p.height),b.clip());for(var m=0;ma.axisX.dataInfo.viewPortMax)&&!t(w[l].y)&&w[l].y.length&&\"number\"===typeof w[l].y[0]&&\n\"number\"===typeof w[l].y[1]&&\"number\"===typeof w[l].y[2]&&\"number\"===typeof w[l].y[3]){k=a.axisX.convertValueToPixel(g);h=a.axisY.convertValueToPixel(w[l].y[0]);n=a.axisY.convertValueToPixel(w[l].y[1]);r=a.axisY.convertValueToPixel(w[l].y[2]);q=a.axisY.convertValueToPixel(w[l].y[3]);var v=k-y/2<<0,B=v+y<<0,f=u.options.fallingColor?u.fallingColor:u._colorSet[0],e=w[l].color?w[l].color:u._colorSet[0],z=Math.round(Math.max(1,0.15*y)),x=0===z%2?0:0.5,D=u.dataPointIds[l];this._eventManager.objectMap[D]=\n{id:D,objectType:\"dataPoint\",dataSeriesIndex:fa,dataPointIndex:l,x1:v,y1:h,x2:B,y2:n,x3:k,y3:r,x4:k,y4:q,borderThickness:z,color:e};c.strokeStyle=e;c.beginPath();c.lineWidth=z;b.lineWidth=Math.max(z,4);\"candlestick\"===u.type?(c.moveTo(k-x,n),c.lineTo(k-x,Math.min(h,q)),c.stroke(),c.moveTo(k-x,Math.max(h,q)),c.lineTo(k-x,r),c.stroke(),Z(c,v,Math.min(h,q),B,Math.max(h,q),w[l].y[0]<=w[l].y[3]?u.risingColor:f,z,e,E,E,!1,!1,u.fillOpacity),s&&(e=R(D),b.strokeStyle=e,b.moveTo(k-x,n),b.lineTo(k-x,Math.min(h,\nq)),b.stroke(),b.moveTo(k-x,Math.max(h,q)),b.lineTo(k-x,r),b.stroke(),Z(b,v,Math.min(h,q),B,Math.max(h,q),e,0,null,!1,!1,!1,!1))):\"ohlc\"===u.type&&(c.moveTo(k-x,n),c.lineTo(k-x,r),c.stroke(),c.beginPath(),c.moveTo(k,h),c.lineTo(v,h),c.stroke(),c.beginPath(),c.moveTo(k,q),c.lineTo(B,q),c.stroke(),s&&(e=R(D),b.strokeStyle=e,b.moveTo(k-x,n),b.lineTo(k-x,r),b.stroke(),b.beginPath(),b.moveTo(k,h),b.lineTo(v,h),b.stroke(),b.beginPath(),b.moveTo(k,q),b.lineTo(B,q),b.stroke()));(w[l].indexLabel||u.indexLabel||\nw[l].indexLabelFormatter||u.indexLabelFormatter)&&this._indexLabels.push({chartType:u.type,dataPoint:w[l],dataSeries:u,point:{x:v+(B-v)/2,y:a.axisY.reversed?r:n},direction:1,bounds:{x1:v,y1:Math.min(n,r),x2:B,y2:Math.max(n,r)},color:e})}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),\nthis._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(p.x1,p.y1,p.width,p.height),b.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderBoxAndWhisker=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d,b=this._eventManager.ghostCtx;if(!(0>=a.dataSeriesIndexes.length)){var e=null,f=this.plotArea,\np=0,l,k,h,n,r,q,g,e=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1,p=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.015*this.width,y=a.axisX.dataInfo.minDiff;isFinite(y)||(y=0.3*Math.abs(a.axisX.range));y=this.options.dataPointWidth?this.dataPointWidth:0.7*f.width*(a.axisX.logarithmic?Math.log(y)/Math.log(a.axisX.range):Math.abs(y)/Math.abs(a.axisX.range))<<0;this.dataPointMaxWidth&&e>\np&&(e=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,p));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&pp&&(y=p);c.save();s&&b.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();s&&(b.beginPath(),b.rect(f.x1,f.y1,f.width,f.height),b.clip());for(var m=!1,m=!!a.axisY.reversed,v=0;va.axisX.dataInfo.viewPortMax)&&!t(E[p].y)&&E[p].y.length&&\"number\"===typeof E[p].y[0]&&\"number\"===typeof E[p].y[1]&&\"number\"===typeof E[p].y[2]&&\"number\"===typeof E[p].y[3]&&\"number\"===typeof E[p].y[4]&&5===E[p].y.length){l=a.axisX.convertValueToPixel(g);k=a.axisY.convertValueToPixel(E[p].y[0]);h=a.axisY.convertValueToPixel(E[p].y[1]);n=a.axisY.convertValueToPixel(E[p].y[2]);\nr=a.axisY.convertValueToPixel(E[p].y[3]);q=a.axisY.convertValueToPixel(E[p].y[4]);var B=l-y/2<<0,z=l+y/2<<0,e=E[p].color?E[p].color:w._colorSet[0],x=Math.round(Math.max(1,0.15*y)),D=0===x%2?0:0.5,T=E[p].whiskerColor?E[p].whiskerColor:E[p].color?w.whiskerColor?w.whiskerColor:E[p].color:w.whiskerColor?w.whiskerColor:e,S=\"number\"===typeof E[p].whiskerThickness?E[p].whiskerThickness:\"number\"===typeof w.options.whiskerThickness?w.whiskerThickness:x,F=E[p].whiskerDashType?E[p].whiskerDashType:w.whiskerDashType,\n$=t(E[p].whiskerLength)?t(w.options.whiskerLength)?y:w.whiskerLength:E[p].whiskerLength,$=\"number\"===typeof $?0>=$?0:$>=y?y:$:\"string\"===typeof $?parseInt($)*y/100>y?y:parseInt($)*y/100:y,ea=1===Math.round(S)%2?0.5:0,ka=E[p].stemColor?E[p].stemColor:E[p].color?w.stemColor?w.stemColor:E[p].color:w.stemColor?w.stemColor:e,za=\"number\"===typeof E[p].stemThickness?E[p].stemThickness:\"number\"===typeof w.options.stemThickness?w.stemThickness:x,G=1===Math.round(za)%2?0.5:0,H=E[p].stemDashType?E[p].stemDashType:\nw.stemDashType,K=E[p].lineColor?E[p].lineColor:E[p].color?w.lineColor?w.lineColor:E[p].color:w.lineColor?w.lineColor:e,L=\"number\"===typeof E[p].lineThickness?E[p].lineThickness:\"number\"===typeof w.options.lineThickness?w.lineThickness:x,O=E[p].lineDashType?E[p].lineDashType:w.lineDashType,M=1===Math.round(L)%2?0.5:0,Q=w.upperBoxColor,ua=w.lowerBoxColor,qa=t(w.options.fillOpacity)?1:w.fillOpacity,P=w.dataPointIds[p];this._eventManager.objectMap[P]={id:P,objectType:\"dataPoint\",dataSeriesIndex:u,dataPointIndex:p,\nx1:B,y1:k,x2:z,y2:h,x3:l,y3:n,x4:l,y4:r,y5:q,borderThickness:x,color:e,stemThickness:za,stemColor:ka,whiskerThickness:S,whiskerLength:$,whiskerColor:T,lineThickness:L,lineColor:K};c.save();0=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=0,p,l,k,f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:\n1;p=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:0.03*this.width;var h=a.axisX.dataInfo.minDiff;isFinite(h)||(h=0.3*Math.abs(a.axisX.range));h=this.options.dataPointWidth?this.dataPointWidth:0.9*(e.width*(a.axisX.logarithmic?Math.log(h)/Math.log(a.axisX.range):Math.abs(h)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&f>p&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,p));!this.dataPointMaxWidth&&\n(this.dataPointMinWidth&&pp&&(h=p);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var n=0;na.axisX.dataInfo.viewPortMax)&&!t(g[f].y)&&g[f].y.length&&\"number\"===typeof g[f].y[0]&&\"number\"===typeof g[f].y[1]){b=a.axisX.convertValueToPixel(k);p=a.axisY.convertValueToPixel(g[f].y[0]);l=a.axisY.convertValueToPixel(g[f].y[1]);var m=a.axisX.reversed?b+a.plotType.totalDataSeries*h/2-(a.previousDataSeriesCount+n)*h<<0:b-a.plotType.totalDataSeries*h/2+(a.previousDataSeriesCount+\nn)*h<<0,v=a.axisX.reversed?m-h<<0:m+h<<0,b=g[f].color?g[f].color:q._colorSet[f%q._colorSet.length];if(p>l){var u=p;p=l;l=u}u=q.dataPointIds[f];this._eventManager.objectMap[u]={id:u,objectType:\"dataPoint\",dataSeriesIndex:r,dataPointIndex:f,x1:m,y1:p,x2:v,y2:l};Z(c,m,p,v,l,b,0,b,y,y,!1,!1,q.fillOpacity);b=R(u);s&&Z(this._eventManager.ghostCtx,m,p,v,l,b,0,null,!1,!1,!1,!1);if(g[f].indexLabel||q.indexLabel||g[f].indexLabelFormatter||q.indexLabelFormatter)this._indexLabels.push({chartType:\"rangeColumn\",\ndataPoint:g[f],dataSeries:q,indexKeyword:0,point:{x:m+(v-m)/2,y:g[f].y[1]>=g[f].y[0]?l:p},direction:g[f].y[1]>=g[f].y[0]?-1:1,bounds:{x1:m,y1:Math.min(p,l),x2:v,y2:Math.max(p,l)},color:b}),this._indexLabels.push({chartType:\"rangeColumn\",dataPoint:g[f],dataSeries:q,indexKeyword:1,point:{x:m+(v-m)/2,y:g[f].y[1]>=g[f].y[0]?p:l},direction:g[f].y[1]>=g[f].y[0]?1:-1,bounds:{x1:m,y1:Math.min(p,l),x2:v,y2:Math.max(p,l)},color:b})}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\n\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderError=\nfunction(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:d,b=a.axisY._position?\"left\"===a.axisY._position||\"right\"===a.axisY._position?!1:!0:!1;if(!(0>=a.dataSeriesIndexes.length)){var e=null,f=!1,p=this.plotArea,l=0,k,h,n,r,q,g,y,m=a.axisX.dataInfo.minDiff;isFinite(m)||(m=0.3*Math.abs(a.axisX.range));c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(p.x1,p.y1,p.width,p.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(p.x1,\np.y1,p.width,p.height),this._eventManager.ghostCtx.clip());for(var v=0,u=0;ul&&(e=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,l));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&ll&&(u=l);if(0=T.length?0:T.length>=u?u:T.length:\"string\"===typeof T.length?parseInt(T.length)*u/100>u?u:parseInt(T.length)*u/100>u:u;T.thickness=\"number\"===typeof T.thickness?0>T.thickness?0:Math.round(T.thickness):2;var S={color:B[l].stemColor?B[l].stemColor:B[l].color?C.stemColor?C.stemColor:B[l].color:C.stemColor?C.stemColor:e,thickness:B[l].stemThickness?B[l].stemThickness:C.stemThickness,dashType:B[l].stemDashType?\nB[l].stemDashType:C.stemDashType};S.thickness=\"number\"===typeof S.thickness?0>S.thickness?0:Math.round(S.thickness):2;B[l].getTime?y=B[l].x.getTime():y=B[l].x;if(!(ya.axisX.dataInfo.viewPortMax)&&!t(B[l].y)&&B[l].y.length&&\"number\"===typeof B[l].y[0]&&\"number\"===typeof B[l].y[1]){var ja=a.axisX.convertValueToPixel(y);b?h=ja:k=ja;ja=a.axisY.convertValueToPixel(B[l].y[0]);b?n=ja:q=ja;ja=a.axisY.convertValueToPixel(B[l].y[1]);b?r=ja:g=ja;b?(q=a.axisX.reversed?h+(z?v:\n1)*u/2-(z?D-1:0)*u<<0:h-(z?v:1)*u/2+(z?D-1:0)*u<<0,g=a.axisX.reversed?q-u<<0:q+u<<0):(n=a.axisX.reversed?k+(z?v:1)*u/2-(z?D-1:0)*u<<0:k-(z?v:1)*u/2+(z?D-1:0)*u<<0,r=a.axisX.reversed?n-u<<0:n+u<<0);!b&&q>g&&(ja=q,q=g,g=ja);b&&n>r&&(ja=n,n=r,r=ja);ja=C.dataPointIds[l];this._eventManager.objectMap[ja]={id:ja,objectType:\"dataPoint\",dataSeriesIndex:E,dataPointIndex:l,x1:Math.min(n,r),y1:Math.min(q,g),x2:Math.max(r,n),y2:Math.max(g,q),isXYSwapped:b,stemProperties:S,whiskerProperties:T};x(c,Math.min(n,r),\nMath.min(q,g),Math.max(r,n),Math.max(g,q),e,T,S,b);s&&x(this._eventManager.ghostCtx,n,q,r,g,e,T,S,b);if(B[l].indexLabel||C.indexLabel||B[l].indexLabelFormatter||C.indexLabelFormatter)this._indexLabels.push({chartType:\"error\",dataPoint:B[l],dataSeries:C,indexKeyword:0,point:{x:b?B[l].y[1]>=B[l].y[0]?n:r:n+(r-n)/2,y:b?q+(g-q)/2:B[l].y[1]>=B[l].y[0]?g:q},direction:B[l].y[1]>=B[l].y[0]?-1:1,bounds:{x1:b?Math.min(n,r):n,y1:b?q:Math.min(q,g),x2:b?Math.max(n,r):r,y2:b?g:Math.max(q,g)},color:e,axisSwapped:b}),\nthis._indexLabels.push({chartType:\"error\",dataPoint:B[l],dataSeries:C,indexKeyword:1,point:{x:b?B[l].y[1]>=B[l].y[0]?r:n:n+(r-n)/2,y:b?q+(g-q)/2:B[l].y[1]>=B[l].y[0]?q:g},direction:B[l].y[1]>=B[l].y[0]?1:-1,bounds:{x1:b?Math.min(n,r):n,y1:b?q:Math.min(q,g),x2:b?Math.max(n,r):r,y2:b?g:Math.max(q,g)},color:e,axisSwapped:b})}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),\na.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(p.x1,p.y1,p.width,p.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderRangeBar=function(a){var d=a.targetCanvasCtx||this.plotArea.ctx,c=s?this._preRenderCtx:\nd;if(!(0>=a.dataSeriesIndexes.length)){var b=null,e=this.plotArea,f=0,p,l,k,h,f=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;p=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.height,0.9*(this.plotArea.height/a.plotType.totalDataSeries))<<0;var n=a.axisX.dataInfo.minDiff;isFinite(n)||(n=0.3*Math.abs(a.axisX.range));n=this.options.dataPointWidth?this.dataPointWidth:0.9*\n(e.height*(a.axisX.logarithmic?Math.log(n)/Math.log(a.axisX.range):Math.abs(n)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&f>p&&(f=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,p));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&pp&&(n=p);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(e.x1,e.y1,e.width,e.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),\nthis._eventManager.ghostCtx.rect(e.x1,e.y1,e.width,e.height),this._eventManager.ghostCtx.clip());for(var r=0;ra.axisX.dataInfo.viewPortMax)&&!t(m[f].y)&&m[f].y.length&&\"number\"===typeof m[f].y[0]&&\"number\"===typeof m[f].y[1]){p=a.axisY.convertValueToPixel(m[f].y[0]);\nl=a.axisY.convertValueToPixel(m[f].y[1]);k=a.axisX.convertValueToPixel(h);k=a.axisX.reversed?k+a.plotType.totalDataSeries*n/2-(a.previousDataSeriesCount+r)*n<<0:k-a.plotType.totalDataSeries*n/2+(a.previousDataSeriesCount+r)*n<<0;var fa=a.axisX.reversed?k-n<<0:k+n<<0;p>l&&(b=p,p=l,l=b);b=m[f].color?m[f].color:g._colorSet[f%g._colorSet.length];Z(c,p,k,l,fa,b,0,null,v,!1,!1,!1,g.fillOpacity);b=g.dataPointIds[f];this._eventManager.objectMap[b]={id:b,objectType:\"dataPoint\",dataSeriesIndex:q,dataPointIndex:f,\nx1:p,y1:k,x2:l,y2:fa};b=R(b);s&&Z(this._eventManager.ghostCtx,p,k,l,fa,b,0,null,!1,!1,!1,!1);if(m[f].indexLabel||g.indexLabel||m[f].indexLabelFormatter||g.indexLabelFormatter)this._indexLabels.push({chartType:\"rangeBar\",dataPoint:m[f],dataSeries:g,indexKeyword:0,point:{x:m[f].y[1]>=m[f].y[0]?p:l,y:k+(fa-k)/2},direction:m[f].y[1]>=m[f].y[0]?-1:1,bounds:{x1:Math.min(p,l),y1:k,x2:Math.max(p,l),y2:fa},color:b}),this._indexLabels.push({chartType:\"rangeBar\",dataPoint:m[f],dataSeries:g,indexKeyword:1,point:{x:m[f].y[1]>=\nm[f].y[0]?l:p,y:k+(fa-k)/2},direction:m[f].y[1]>=m[f].y[0]?1:-1,bounds:{x1:Math.min(p,l),y1:k,x2:Math.max(p,l),y2:fa},color:b})}}}s&&(d.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(e.x1,\ne.y1,e.width,e.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,animationBase:0}}};m.prototype.renderRangeArea=function(a){function d(){if(w){for(var a=null,c=k.length-1;0<=c;c--)a=k[c],b.lineTo(a.x,a.y2),e.lineTo(a.x,a.y2);b.closePath();b.globalAlpha=n.fillOpacity;b.fill();b.globalAlpha=1;e.fill();if(0=a.dataSeriesIndexes.length)){var e=this._eventManager.ghostCtx,f=[],p=this.plotArea;b.save();s&&e.save();b.beginPath();b.rect(p.x1,p.y1,p.width,p.height);b.clip();s&&(e.beginPath(),e.rect(p.x1,p.y1,p.width,p.height),e.clip());\nfor(var l=0;la.axisX.dataInfo.viewPortMax&&(!n.connectNullData||!T)))if(null!==r[g].y&&r[g].y.length&&\"number\"===typeof r[g].y[0]&&\"number\"===typeof r[g].y[1]){m=a.axisX.convertValueToPixel(u);t=a.axisY.convertValueToPixel(r[g].y[0]);v=a.axisY.convertValueToPixel(r[g].y[1]);q||T?(n.connectNullData&&!q?(b.setLineDash&&(n.options.nullDataLineDashType||z===n.lineDashType&&\nn.lineDashType!==n.nullDataLineDashType)&&(k[k.length-1].newLineDashArray=D,z=n.nullDataLineDashType,b.setLineDash(x)),b.lineTo(m,t),s&&e.lineTo(m,t),k.push({x:m,y1:t,y2:v})):(b.beginPath(),b.moveTo(m,t),w={x:m,y:t},k=[],k.push({x:m,y1:t,y2:v}),s&&(e.beginPath(),e.moveTo(m,t))),T=q=!1):(b.lineTo(m,t),k.push({x:m,y1:t,y2:v}),s&&e.lineTo(m,t),0==g%250&&d());u=n.dataPointIds[g];this._eventManager.objectMap[u]={id:u,objectType:\"dataPoint\",dataSeriesIndex:h,dataPointIndex:g,x1:m,y1:t,y2:v};gr[g].y[1]===a.axisY.reversed?-1:1,color:E}),this._indexLabels.push({chartType:\"rangeArea\",\ndataPoint:r[g],dataSeries:n,indexKeyword:1,point:{x:m,y:v},direction:r[g].y[0]>r[g].y[1]===a.axisY.reversed?1:-1,color:E})}else T||q||d(),T=!0;d();V.drawMarkers(f)}}s&&(c.drawImage(this._preRenderCanvas,0,0,this.width,this.height),b.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&b.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&b.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,\n0,0,this.width,this.height),b.clearRect(p.x1,p.y1,p.width,p.height),this._eventManager.ghostCtx.restore());b.restore();return{source:c,dest:this.plotArea.ctx,animationCallback:J.xClipAnimation,easingFunction:J.easing.linear,animationBase:0}}};m.prototype.renderRangeSplineArea=function(a){function d(a,c){var d=v(t,2);if(0=a.dataSeriesIndexes.length)){var e=this._eventManager.ghostCtx,f=[],p=this.plotArea;b.save();s&&e.save();b.beginPath();b.rect(p.x1,p.y1,p.width,p.height);b.clip();s&&(e.beginPath(),e.rect(p.x1,p.y1,p.width,p.height),e.clip());for(var l=0;la.axisX.dataInfo.viewPortMax&&(!h.connectNullData||\n!g)))if(null!==n[r].y&&n[r].y.length&&\"number\"===typeof n[r].y[0]&&\"number\"===typeof n[r].y[1]){q=a.axisX.convertValueToPixel(q);g=a.axisY.convertValueToPixel(n[r].y[0]);m=a.axisY.convertValueToPixel(n[r].y[1]);var x=h.dataPointIds[r];this._eventManager.objectMap[x]={id:x,objectType:\"dataPoint\",dataSeriesIndex:k,dataPointIndex:r,x1:q,y1:g,y2:m};t[t.length]={x:q,y:g};fa[fa.length]={x:q,y:m};r=a.dataSeriesIndexes.length)){var b=this._eventManager.ghostCtx,e=null,f=this.plotArea,p=0,l,k,h,n,r=a.axisY.convertValueToPixel(a.axisY.logarithmic?\na.axisY.viewportMinimum:0),p=this.options.dataPointMinWidth?this.dataPointMinWidth:this.options.dataPointWidth?this.dataPointWidth:1;k=this.options.dataPointMaxWidth?this.dataPointMaxWidth:this.options.dataPointWidth?this.dataPointWidth:Math.min(0.15*this.width,0.9*(this.plotArea.width/a.plotType.totalDataSeries))<<0;var q=a.axisX.dataInfo.minDiff;isFinite(q)||(q=0.3*Math.abs(a.axisX.range));q=this.options.dataPointWidth?this.dataPointWidth:0.6*(f.width*(a.axisX.logarithmic?Math.log(q)/Math.log(a.axisX.range):\nMath.abs(q)/Math.abs(a.axisX.range))/a.plotType.totalDataSeries)<<0;this.dataPointMaxWidth&&p>k&&(p=Math.min(this.options.dataPointWidth?this.dataPointWidth:Infinity,k));!this.dataPointMaxWidth&&(this.dataPointMinWidth&&kk&&(q=k);c.save();s&&this._eventManager.ghostCtx.save();c.beginPath();c.rect(f.x1,f.y1,f.width,f.height);c.clip();s&&(this._eventManager.ghostCtx.beginPath(),this._eventManager.ghostCtx.rect(f.x1,\nf.y1,f.width,f.height),this._eventManager.ghostCtx.clip());for(var g=0;gh&&(e=k,k=h,h=e);a.axisY.reversed&&(e=k,k=h,h=e);e=t.dataPointIds[p];this._eventManager.objectMap[e]={id:e,objectType:\"dataPoint\",dataSeriesIndex:m,dataPointIndex:p,x1:l,y1:k,x2:D,y2:h};var T=v[p].color?v[p].color:0v[p].y===a.axisY.reversed?1:-1,bounds:{x1:l,y1:Math.min(k,h),x2:D,y2:Math.max(k,h)},color:e})}}s&&(d.drawImage(this._preRenderCanvas,0,\n0,this.width,this.height),c.globalCompositeOperation=\"source-atop\",a.axisX.maskCanvas&&c.drawImage(a.axisX.maskCanvas,0,0,this.width,this.height),a.axisY.maskCanvas&&c.drawImage(a.axisY.maskCanvas,0,0,this.width,this.height),this._breaksCanvasCtx&&this._breaksCanvasCtx.drawImage(this._preRenderCanvas,0,0,this.width,this.height),c.clearRect(f.x1,f.y1,f.width,f.height),this._eventManager.ghostCtx.restore());c.restore();return{source:d,dest:this.plotArea.ctx,animationCallback:J.fadeInAnimation,easingFunction:J.easing.easeInQuad,\nanimationBase:0}}};var ga=function(a,d,c,b,e,f,p,l,k){if(!(0>c)){\"undefined\"===typeof l&&(l=1);if(!s){var h=Number((p%(2*Math.PI)).toFixed(8));Number((f%(2*Math.PI)).toFixed(8))===h&&(p-=1E-4)}a.save();a.globalAlpha=l;\"pie\"===e?(a.beginPath(),a.moveTo(d.x,d.y),a.arc(d.x,d.y,c,f,p,!1),a.fillStyle=b,a.strokeStyle=\"white\",a.lineWidth=2,a.closePath(),a.fill()):\"doughnut\"===e&&(a.beginPath(),a.arc(d.x,d.y,c,f,p,!1),0<=k&&a.arc(d.x,d.y,k*c,p,f,!0),a.closePath(),a.fillStyle=b,a.strokeStyle=\"white\",a.lineWidth=\n2,a.fill());a.globalAlpha=1;a.restore()}};m.prototype.renderPie=function(a){function d(){if(h&&n){for(var a=0,b=0,c=0,d=0,e=0;eMath.PI/2-u&&l.midAnglel.midAngle)c=e;a++}else if(l.midAngle>3*Math.PI/2-u&&l.midAngle<3*Math.PI/2+u){if(0===b||g[d].midAngle>l.midAngle)d=e;b++}l.hemisphere=f>Math.PI/2&&\nf<=3*Math.PI/2?\"left\":\"right\";l.indexLabelTextBlock=new ia(k.plotArea.ctx,{fontSize:l.indexLabelFontSize,fontFamily:l.indexLabelFontFamily,fontColor:l.indexLabelFontColor,fontStyle:l.indexLabelFontStyle,fontWeight:l.indexLabelFontWeight,horizontalAlign:\"left\",backgroundColor:l.indexLabelBackgroundColor,maxWidth:l.indexLabelMaxWidth,maxHeight:l.indexLabelWrap?5*l.indexLabelFontSize:1.5*l.indexLabelFontSize,text:l.indexLabelText,padding:0,textBaseline:\"top\"});l.indexLabelTextBlock.measureText()}p=f=\n0;r=!1;for(e=0;eMath.PI/2-u&&l.midAngle3*Math.PI/2-u&&l.midAngle<3*Math.PI/2+u)&&(p<=b/2&&!r?(l.hemisphere=\"left\",p++):(l.hemisphere=\"right\",r=!0))}}function c(a){var b=k.plotArea.ctx;b.clearRect(q.x1,q.y1,q.width,q.height);b.fillStyle=k.backgroundColor;b.fillRect(q.x1,q.y1,q.width,q.height);for(b=0;b<\nn.length;b++){var c=g[b].startAngle,d=g[b].endAngle;if(d>c){var e=0.07*z*Math.cos(g[b].midAngle),f=0.07*z*Math.sin(g[b].midAngle),l=!1;if(n[b].exploded){if(1E-9a.indexLabelTextBlock.y?\ne-d:c-f}function e(a){for(var c=null,d=1;db(g[c],g[a])||(\"right\"===g[a].hemisphere?g[c].indexLabelTextBlock.y>=g[a].indexLabelTextBlock.y:g[c].indexLabelTextBlock.y<=g[a].indexLabelTextBlock.y)))break;else c=null;return c}function f(a,c,d){d=(d||0)+1;if(1E3c&&k.indexLabelTextBlock.yp)return 0;var q=0,r=0,r=q=q=0;0>c?k.indexLabelTextBlock.y-k.indexLabelTextBlock.height/2>l&&k.indexLabelTextBlock.y-k.indexLabelTextBlock.height/2+cp&&(c=k.indexLabelTextBlock.y+k.indexLabelTextBlock.height/2+c-p);c=k.indexLabelTextBlock.y+c;l=0;l=\"right\"===k.hemisphere?E.x+Math.sqrt(Math.pow(s,\n2)-Math.pow(c-E.y,2)):E.x-Math.sqrt(Math.pow(s,2)-Math.pow(c-E.y,2));r=E.x+z*Math.cos(k.midAngle);q=E.y+z*Math.sin(k.midAngle);q=Math.sqrt(Math.pow(l-r,2)+Math.pow(c-q,2));r=Math.acos(z/s);q=Math.acos((s*s+z*z-q*q)/(2*z*s));c=qb(g[l],g[a])||(\"right\"===g[a].hemisphere?g[l].indexLabelTextBlock.y<=\ng[a].indexLabelTextBlock.y:g[l].indexLabelTextBlock.y>=g[a].indexLabelTextBlock.y)))break;else l=null;r=l;q=e(a);p=l=0;0>c?(p=\"right\"===k.hemisphere?r:q,h=c,null!==p&&(r=-c,c=k.indexLabelTextBlock.y-k.indexLabelTextBlock.height/2-(g[p].indexLabelTextBlock.y+g[p].indexLabelTextBlock.height/2),c-r+l.toFixed(w)&&(h=c>m?-(c-m):-(r-(p-l)))))):0m?c-m:r-(l-p)))));h&&(d=k.indexLabelTextBlock.y+h,c=0,c=\"right\"===k.hemisphere?E.x+Math.sqrt(Math.pow(s,2)-Math.pow(d-E.y,2)):E.x-Math.sqrt(Math.pow(s,2)-Math.pow(d-E.y,2)),k.midAngle>Math.PI/2-u&&k.midAnglel.indexLabelTextBlock.x?c=l.indexLabelTextBlock.x-15:\"right\"===k.hemisphere&&(\"left\"===\na.hemisphere&&c3*Math.PI/2-u&&k.midAngle<3*Math.PI/2+u&&(l=(a-1+g.length)%g.length,l=g[l],a=g[(a+1+g.length)%g.length],\"right\"===k.hemisphere&&\"left\"===l.hemisphere&&ca.indexLabelTextBlock.x)&&(c=a.indexLabelTextBlock.x-15)),k.indexLabelTextBlock.y=d,k.indexLabelTextBlock.x=c,k.indexLabelAngle=Math.atan2(k.indexLabelTextBlock.y-\nE.y,k.indexLabelTextBlock.x-E.x))}return h}function p(){var a=k.plotArea.ctx;a.fillStyle=\"grey\";a.strokeStyle=\"grey\";a.font=\"16px Arial\";a.textBaseline=\"middle\";for(var c=a=0,d=0,l=!0,c=0;10>c&&(1>c||0C){for(var F=u=0,H=0;Hu?p.indexLabelText=\"\":p.indexLabelTextBlock.maxWidth=0.85*u,0.3*p.indexLabelTextBlock.maxWidthd&&(d=B)),B=B=0,0d&&(d=B)));var M=function(a,b,c){for(var d=[],e=0;d.push(g[b]),b!==c;b=(b+1+n.length)%n.length);d.sort(function(a,b){return a.y-b.y});\nfor(b=0;bC){k=t.indexLabelTextBlock.x;var q=t.indexLabelTextBlock.y-t.indexLabelTextBlock.height/2,m=t.indexLabelTextBlock.y+t.indexLabelTextBlock.height/2,u=l.indexLabelTextBlock.y-l.indexLabelTextBlock.height/\n2,y=l.indexLabelTextBlock.x+l.indexLabelTextBlock.width,A=l.indexLabelTextBlock.y+l.indexLabelTextBlock.height/2;k=t.indexLabelTextBlock.x+t.indexLabelTextBlock.widthy+r||q>A+r||ma&&(a=h),p!==a&&(c=p,d+=-C),0===h%Math.max(n.length/10,3)&&(f=!0)):f=!0;f&&(0=a.dataSeriesIndexes.length)){var h=this.data[a.dataSeriesIndexes[0]],n=h.dataPoints,r=10,q=this.plotArea,g=h.dataPointEOs,m=2,s,v=1.3,u=20/180*Math.PI,\nw=6,E={x:(q.x2+q.x1)/2,y:(q.y2+q.y1)/2},C=0;a=!1;for(var B=0;Ba&&(d=a,e=!0);var f=n[b].color?n[b].color:h._colorSet[b%h._colorSet.length];d>c&&ga(k.plotArea.ctx,g[b].center,g[b].radius,f,h.type,c,d,h.fillOpacity,g[b].percentInnerRadius);if(e)break}l()},\nfunction(){k.disableToolTip=!1;k._animator.animate(0,k.animatedRender?500:0,function(a){c(a);l()})})}}};var pa=function(a,d,c,b){\"undefined\"===typeof c&&(c=1);0>=Math.round(d.y4-d.y1)||(a.save(),a.globalAlpha=c,a.beginPath(),a.moveTo(Math.round(d.x1),Math.round(d.y1)),a.lineTo(Math.round(d.x2),Math.round(d.y2)),a.lineTo(Math.round(d.x3),Math.round(d.y3)),a.lineTo(Math.round(d.x4),Math.round(d.y4)),\"undefined\"!==d.x5&&(a.lineTo(Math.round(d.x5),Math.round(d.y5)),a.lineTo(Math.round(d.x6),Math.round(d.y6))),\na.closePath(),a.fillStyle=b?b:d.color,a.fill(),a.globalAplha=1,a.restore())};m.prototype.renderFunnel=function(a){function d(){for(var a=0,b=[],c=0;cn?(n=c,p=(b+n)*(e-l)/2,a-=p,k=e-l,l+=e-l,k+=0==n?0:a/n,l+=a/n,p=!0):(k=(Math.abs(Y)*b-Math.sqrt(n))/2,n=b-2*k/Math.abs(Y),l+=k,l>e&&(l-=k,n=c,p=(b+n)*(e-l)/2,a-=p,k=e-l,l+=e-l,k+=a/n,l+=a/n,p=!0),b=n)),d.push(k);return d}function b(){if(u&&w){for(var a,b,c,d,\ne,f,h,l,p,k,n,q,r,m,y=[],A=[],v={percent:null,total:null},B=null,z=0;zy[z]&&(y[z]=z!==aa?u.reversed?P[z].x3-P[z].x4:P[z].x2-P[z].x1:\nP[z].x2-P[z].x1,y[z]/=2));r=b.indexLabelMaxWidth?b.indexLabelMaxWidth:u.options.indexLabelMaxWidth?u.indexLabelMaxWidth:y[z];if(r>y[z]||0>r)r=y[z];A[z]=\"inside\"===u.indexLabelPlacement?P[z].height:!1;v=x.getPercentAndTotal(u,b);if(u.indexLabelFormatter||b.indexLabelFormatter)B={chart:x.options,dataSeries:u,dataPoint:b,total:v.total,percent:v.percent};b=b.indexLabelFormatter?b.indexLabelFormatter(B):b.indexLabel?x.replaceKeywordsWithValue(b.indexLabel,b,u,z):u.indexLabelFormatter?u.indexLabelFormatter(B):\nu.indexLabel?x.replaceKeywordsWithValue(u.indexLabel,b,u,z):b.label?b.label:\"\";0>=k&&(k=0);1E3>r&&1E3-rh?h:u.indexLabelMaxWidth:h,l=I.length-1;0<=l;l--){g=w[I[l].id];c=I[l];d=c.textBlock;b=(a=q(l)b.y&&(e=!0);c=g.indexLabelMaxWidth||h;if(c>h||0>c)c=h;f.push(c)}if(e)for(l=I.length-1;0<=l;l--)a=P[l],I[l].textBlock.maxWidth=f[f.length-(l+1)],I[l].textBlock.measureText(),I[l].textBlock.x=K-h,c=I[l].textBlock.height<\nI[l].textBlock.maxHeight?I[l].textBlock.height:I[l].textBlock.maxHeight,e=I[l].textBlock.widthla+C&&(I[l].textBlock.y=la+C-I[l].height),I[l].textBlock.yqa+C&&(I[l].textBlock.y=\nqa+C-I[l].height))}function f(){var a,b,c,d;if(\"inside\"!==u.indexLabelPlacement)for(var e=0;eua?g(c).x2+1:(a.x2+a.x3)/2+1:(a.x2+a.x3)/2+1:\"undefined\"!==typeof a.x5?cla+C&&(I[e].textBlock.y=la+C-I[e].height),\nI[e].textBlock.yqa+C&&(I[e].textBlock.y=qa+C-I[e].height)));else for(e=0;e=c?(b=e!=aa?(a.x4+a.x3)/2-d/2:(a.x5+a.x4)/2-d/2,c=e!=aa?(a.y1+a.y3)/2-c/2:(a.y1+a.y4)/2-c/2,I[e].textBlock.x=b,I[e].textBlock.y=c):I[e].isDirty=!0)}function p(){function a(b,c){var d;if(0>b||b>=I.length)return 0;\nvar e,f=I[b].textBlock;if(0>c){c*=-1;e=r(b);d=l(e,b);if(d>=c)return f.y-=c,c;if(0==b)return 0=c)return f.y+=c,c;if(b==P.length-1)return 0e)&&(l=q(n),!(l>=I.length-1)&&I[n].textBlock.y+I[n].height+ca>I[l].textBlock.y&&\n(I[n].textBlock.y=I[n].textBlock.y+I[n].height-e>e-I[n].textBlock.y?e+1:e-I[n].height-1))}for(l=P.length-1;0e&&(e=0,I[e].isDirty))break;if(I[l].textBlock.y=f){f=0;h+=I[f].height;break}e=r(f);if(0>e){f=0;h+=I[f].height;break}}if(f!=l){g=I[f].textBlock.y;a-=g;a=h-a;g=c(a,d,f);break}}}return g}function c(a,\nb,d){var e=[],f=0,g=0;for(a=Math.abs(a);d<=b;d++)e.push(P[d]);e.sort(function(a,b){return a.height-b.height});for(d=0;d+p.y.toFixed(6))&&(d=g.y+d+ca-p.y,e=a(m,-d),ea?u.reversed?qa-C:la-C:I[a].textBlock.y+I[a].height+ca)}function k(a,b,c){var d,e,g,l=[],p=C,r=[];-1!==b&&(0<=X.indexOf(b)?(e=X.indexOf(b),X.splice(e,1)):(X.push(b),X=X.sort(function(a,b){return a-b})));if(0===X.length)l=ha;else{e=C*(1!=X.length||0!=X[0]&&X[0]!=P.length-1?2:1)/h();for(var q=0;qr&&(r*=-1),c.y1+=b-r[d],c.y2+=b-r[d],c.y3+=\nb-r[d],c.y4+=b-r[d],c.y5&&(c.y5+=b-r[d],c.y6+=b-r[d]),r[d]=b}};a._animator.animate(0,c,function(c){var d=a.plotArea.ctx||a.ctx;ga=!0;d.clearRect(E.x1,E.y1,E.x2-E.x1,E.y2-E.y1);d.fillStyle=a.backgroundColor;d.fillRect(E.x1,E.y1,E.width,E.height);t.changeSection(c,b);var e={};e.dataSeries=u;e.dataPoint=u.reversed?u.dataPoints[w.length-1-b]:u.dataPoints[b];e.index=u.reversed?w.length-1-b:b;a.toolTip.highlightObjects([e]);for(e=0;ea){b=P[c];break}return b?(a=b.y6?a>b.y6?b.x3+(b.x4-b.x3)/(b.y4-b.y3)*(a-b.y3):b.x2+(b.x3-b.x2)/(b.y3-b.y2)*(a-b.y2):b.x2+(b.x3-b.x2)/(b.y3-b.y2)*(a-b.y2),{x1:a,x2:a}):-1}function m(a){for(var b=0;b=a.dataSeriesIndexes.length)){for(var u=this.data[a.dataSeriesIndexes[0]],w=u.dataPoints,E=this.plotArea,C=0.025*E.width,B=0.01*E.width,z=0,D=E.height-2*C,F=Math.min(E.width-2*B,2.8*E.height),H=!1,S=0;SD?Q=D:0>=Q&&(Q=0),G>a?G=a-0.5:0>=G&&(G=0)):\"pyramid\"===u.type&&(G=Q=0,u.reversed=u.reversed?!1:!0);var B=S+a/2,W=S,V=S+a,la=u.reversed?O:L,M=B-G/2,ba=B+G/2,ua=u.reversed?L+Q:O-Q,qa=u.reversed?L:O;a=[];var B=[],P=[],F=[],Z=L,aa,Y=(ua-la)/(M-W),da=-Y,S=\"area\"===(u.valueRepresents?u.valueRepresents:\n\"height\")?c():d();if(-1!==S){if(u.reversed)for(F.push(Z),G=S.length-1;0a&&(z=a));for(G=0;G
    Please right click on the image and save it to your device
    \"),d.document.close()}}};m.prototype.print=function(){var a=\nthis.exportChart({toDataURL:!0}),d=document.createElement(\"iframe\");d.setAttribute(\"class\",\"canvasjs-chart-print-frame\");d.setAttribute(\"style\",\"position:absolute; width:100%; border: 0px; margin: 0px 0px 0px 0px; padding 0px 0px 0px 0px;\");d.style.height=this.height+\"px\";this._canvasJSContainer.appendChild(d);var c=this,b=d.contentWindow||d.contentDocument.document||d.contentDocument;b.document.open();b.document.write('\\n');b.document.close();setTimeout(function(){b.focus();b.print();setTimeout(function(){c._canvasJSContainer.removeChild(d)},1E3)},500)};m.prototype.getPercentAndTotal=function(a,d){var c=null,b=null,e=null;if(0<=a.type.indexOf(\"stacked\"))b=0,c=d.x.getTime?d.x.getTime():d.x,c in a.plotUnit.yTotals&&(b=a.plotUnit.yTotals[c],e=isNaN(d.y)?0:100*(d.y/b));else if(\"pie\"===a.type||\"doughnut\"===a.type||\"funnel\"===a.type||\"pyramid\"===a.type){for(c=b=0;c=p||\"undefined\"===typeof p||0>=v||\"undefined\"===typeof v)){if(\"horizontal\"===this.orientation){q.textBlock=new ia(this.ctx,{x:0,y:0,maxWidth:v,maxHeight:this.itemWrap?p:this.lineHeight,angle:0,text:q.text,horizontalAlign:\"left\",fontSize:this.fontSize,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontColor:this.fontColor,\nfontStyle:this.fontStyle,textBaseline:\"middle\"});q.textBlock.measureText();null!==this.itemWidth&&(q.textBlock.width=this.itemWidth-(s+l+(\"line\"===q.chartType||\"spline\"===q.chartType||\"stepLine\"===q.chartType?2*0.1*this.lineHeight:0)));if(!r||r.width+Math.round(q.textBlock.width+s+l+(0===r.width?0:this.horizontalSpacing)+(\"line\"===q.chartType||\"spline\"===q.chartType||\"stepLine\"===q.chartType?2*0.1*this.lineHeight:0))>f)r={items:[],width:0},h.push(r),this.height+=g,g=0;g=Math.max(g,q.textBlock.height)}else q.textBlock=\nnew ia(this.ctx,{x:0,y:0,maxWidth:x,maxHeight:!0===this.itemWrap?p:1.5*this.fontSize,angle:0,text:q.text,horizontalAlign:\"left\",fontSize:this.fontSize,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontColor:this.fontColor,fontStyle:this.fontStyle,textBaseline:\"middle\"}),q.textBlock.measureText(),null!==this.itemWidth&&(q.textBlock.width=this.itemWidth-(s+l+(\"line\"===q.chartType||\"spline\"===q.chartType||\"stepLine\"===q.chartType?2*0.1*this.lineHeight:0))),this.height>0,0),this.dataPoints.length):0):(n=this.dataPoints[this.dataPoints.length-1].x-this.dataPoints[0].x,n=0>0,0),this.dataPoints.length):0));for(;;){f=\n0a?b.x/a:a/b.x:Math.abs(b.x-a);rn-e&&n+e>=this.dataPoints.length)break;-1===p?(e++,p=1):p=-1}return d||(c.dataPoint.x.getTime?c.dataPoint.x.getTime():c.dataPoint.x)!==(a.getTime?a.getTime():a)?d&&null!==c.dataPoint?c:null:c};L.prototype.getDataPointAtXY=function(a,d,c){if(!this.dataPoints||0===\nthis.dataPoints.length||athis.chart.plotArea.x2||dthis.chart.plotArea.y2)return null;c=c||!1;var b=[],e=0,f=0,p=1,l=!1,k=Infinity,h=0,n=0,r=0;if(\"none\"!==this.chart.plotInfo.axisPlacement)if(r=(this.chart.axisX[0]?this.chart.axisX[0]:this.chart.axisX2[0]).getXValueAt({x:a,y:d}),this.axisX.logarithmic)var q=Math.log(this.dataPoints[this.dataPoints.length-1].x/this.dataPoints[0].x),r=1>0,0),this.dataPoints.length):0;else q=this.dataPoints[this.dataPoints.length-1].x-this.dataPoints[0].x,r=0>0,0),this.dataPoints.length):0;for(;;){f=0=\nq.x1&&(a<=q.x2&&d>=q.y1&&d<=q.y2)&&(b.push({dataPoint:g,dataPointIndex:f,dataSeries:this,distance:Math.min(Math.abs(q.x1-a),Math.abs(q.x2-a),Math.abs(q.y1-d),Math.abs(q.y2-d))}),l=!0);break;case \"line\":case \"stepLine\":case \"spline\":case \"area\":case \"stepArea\":case \"stackedArea\":case \"stackedArea100\":case \"splineArea\":case \"scatter\":var t=ha(\"markerSize\",g,this)||4,s=c?20:t,m=Math.sqrt(Math.pow(q.x1-a,2)+Math.pow(q.y1-d,2));m<=s&&b.push({dataPoint:g,dataPointIndex:f,dataSeries:this,distance:m});q=\nMath.abs(q.x1-a);q<=k?k=q:0s&&(m=Math.atan2(d-t.y,a-t.x),0>m&&(m+=2*Math.PI),m=Number(((180*(m/Math.PI)%360+360)%360).toFixed(12)),t=Number(((180*(q.startAngle/Math.PI)%360+360)%360).toFixed(12)),s=Number(((180*(q.endAngle/Math.PI)%360+360)%360).toFixed(12)),0===s&&1=s&&0!==g.y&&(s+=360,mt&&mm.y1&&dm.y6?(f=m.x6+(m.x5-m.x6)/(m.y5-m.y6)*(d-m.y6),m=m.x3+(m.x4-m.x3)/(m.y4-m.y3)*(d-m.y3)):(f=m.x1+(m.x6-m.x1)/(m.y6-m.y1)*(d-m.y1),m=m.x2+(m.x3-m.x2)/(m.y3-m.y2)*(d-m.y2)):(f=m.x1+(m.x4-m.x1)/(m.y4-m.y1)*(d-m.y1),m=m.x2+(m.x3-m.x2)/(m.y3-m.y2)*(d-m.y2)),a>f&&a=\nq.x1-q.borderThickness/2&&a<=q.x2+q.borderThickness/2&&d>=q.y4-q.borderThickness/2&&d<=q.y1+q.borderThickness/2||Math.abs(q.x2-a+q.x1-a)=q.y1&&d<=q.y4)b.push({dataPoint:g,dataPointIndex:f,dataSeries:this,distance:Math.min(Math.abs(q.x1-a),Math.abs(q.x2-a),Math.abs(q.y2-d),Math.abs(q.y3-d))}),l=!0;break;case \"candlestick\":if(a>=q.x1-q.borderThickness/2&&a<=q.x2+q.borderThickness/2&&d>=q.y2-q.borderThickness/2&&d<=q.y3+q.borderThickness/2||Math.abs(q.x2-a+q.x1-a)=q.y1&&d<=q.y4)b.push({dataPoint:g,dataPointIndex:f,dataSeries:this,distance:Math.min(Math.abs(q.x1-a),Math.abs(q.x2-a),Math.abs(q.y2-d),Math.abs(q.y3-d))}),l=!0;break;case \"ohlc\":if(Math.abs(q.x2-a+q.x1-a)=q.y2&&d<=q.y3||a>=q.x1&&a<=(q.x2+q.x1)/2&&d>=q.y1-q.borderThickness/2&&d<=q.y1+q.borderThickness/2||a>=(q.x1+q.x2)/2&&a<=q.x2&&d>=q.y4-q.borderThickness/2&&d<=q.y4+q.borderThickness/2)b.push({dataPoint:g,dataPointIndex:f,dataSeries:this,distance:Math.min(Math.abs(q.x1-a),\nMath.abs(q.x2-a),Math.abs(q.y2-d),Math.abs(q.y3-d))}),l=!0}if(l||1E3r-e&&r+e>=this.dataPoints.length)break;-1===p?(e++,p=1):p=-1}a=null;for(d=0;dr[g].endValue;g++);a=g=r[g].startValue&&c<=r[g].endValue;n=c;a||(a=this.labelFormatter?this.labelFormatter({chart:this.chart,axis:this.options,value:n,label:this.labels[n]?this.labels[n]:null}):\"axisX\"===this.type&&this.labels[n]?this.labels[n]:Y(n,this.valueFormatString,this.chart._cultureInfo),a=new ia(this.ctx,{x:0,y:0,maxWidth:f,maxHeight:p,angle:this.labelAngle,text:this.prefix+a+this.suffix,backgroundColor:this.labelBackgroundColor,\nborderColor:this.labelBorderColor,cornerRadius:this.labelCornerRadius,textAlign:this.labelTextAlign,fontSize:this.labelFontSize,fontFamily:this.labelFontFamily,fontWeight:this.labelFontWeight,fontColor:this.labelFontColor,fontStyle:this.labelFontStyle,textBaseline:\"middle\",borderThickness:0}),this._labels.push({position:n,textBlock:a,effectiveHeight:null}))}g=q;for(c=this.intervalStartPosition;c<=e;c=parseFloat(1E-12>this.interval?this.logarithmic&&this.equidistantInterval?c*Math.pow(this.logarithmBase,\nthis.interval):c+this.interval:(this.logarithmic&&this.equidistantInterval?c*Math.pow(this.logarithmBase,this.interval):c+this.interval).toFixed(12))){for(;gr[g].endValue;g++);a=g=r[g].startValue&&c<=r[g].endValue;n=c;a||(a=this.labelFormatter?this.labelFormatter({chart:this.chart,axis:this.options,value:n,label:this.labels[n]?this.labels[n]:null}):\"axisX\"===this.type&&this.labels[n]?this.labels[n]:Y(n,this.valueFormatString,this.chart._cultureInfo),a=new ia(this.ctx,{x:0,\ny:0,maxWidth:f,maxHeight:p,angle:this.labelAngle,text:this.prefix+a+this.suffix,textAlign:this.labelTextAlign,backgroundColor:this.labelBackgroundColor,borderColor:this.labelBorderColor,borderThickness:this.labelBorderThickness,cornerRadius:this.labelCornerRadius,fontSize:this.labelFontSize,fontFamily:this.labelFontFamily,fontWeight:this.labelFontWeight,fontColor:this.labelFontColor,fontStyle:this.labelFontStyle,textBaseline:\"middle\"}),this._labels.push({position:n,textBlock:a,effectiveHeight:null}))}}else for(this.intervalStartPosition=\nthis.getLabelStartPoint(new Date(this.viewportMinimum),this.intervalType,this.interval),e=Va(new Date(this.viewportMaximum),this.interval,this.intervalType),g=q,c=this.intervalStartPosition;cr[g].endValue;g++);n=a;a=g=r[g].startValue&&a<=r[g].endValue;a||(a=this.labelFormatter?this.labelFormatter({chart:this.chart,axis:this.options,value:new Date(n),label:this.labels[n]?this.labels[n]:null}):\"axisX\"===this.type&&this.labels[n]?\nthis.labels[n]:ya(n,this.valueFormatString,this.chart._cultureInfo),a=new ia(this.ctx,{x:0,y:0,maxWidth:f,backgroundColor:this.labelBackgroundColor,borderColor:this.labelBorderColor,borderThickness:this.labelBorderThickness,cornerRadius:this.labelCornerRadius,maxHeight:p,angle:this.labelAngle,text:this.prefix+a+this.suffix,textAlign:this.labelTextAlign,fontSize:this.labelFontSize,fontFamily:this.labelFontFamily,fontWeight:this.labelFontWeight,fontColor:this.labelFontColor,fontStyle:this.labelFontStyle,\ntextBaseline:\"middle\"}),this._labels.push({position:n,textBlock:a,effectiveHeight:null,breaksLabelType:void 0}))}if(\"bottom\"===this._position||\"top\"===this._position)l=this.logarithmic&&!this.equidistantInterval&&2<=this._labels.length?this.lineCoordinates.width*Math.log(Math.min(this._labels[this._labels.length-1].position/this._labels[this._labels.length-2].position,this._labels[1].position/this._labels[0].position))/Math.log(this.range):this.lineCoordinates.width/(this.logarithmic&&this.equidistantInterval?\nMath.log(this.range)/Math.log(this.logarithmBase):Math.abs(this.range))*U[this.intervalType+\"Duration\"]*this.interval,f=\"undefined\"===typeof this.options.labelMaxWidth?0.5*this.chart.width>>0:this.options.labelMaxWidth,this.chart.panEnabled||(p=\"undefined\"===typeof this.options.labelWrap||this.labelWrap?0.8*this.chart.height>>0:1.5*this.labelFontSize);else if(\"left\"===this._position||\"right\"===this._position)l=this.logarithmic&&!this.equidistantInterval&&2<=this._labels.length?this.lineCoordinates.height*\nMath.log(Math.min(this._labels[this._labels.length-1].position/this._labels[this._labels.length-2].position,this._labels[1].position/this._labels[0].position))/Math.log(this.range):this.lineCoordinates.height/(this.logarithmic&&this.equidistantInterval?Math.log(this.range)/Math.log(this.logarithmBase):Math.abs(this.range))*U[this.intervalType+\"Duration\"]*this.interval,this.chart.panEnabled||(f=\"undefined\"===typeof this.options.labelMaxWidth?0.3*this.chart.width>>0:this.options.labelMaxWidth),p=\"undefined\"===\ntypeof this.options.labelWrap||this.labelWrap?0.3*this.chart.height>>0:1.5*this.labelFontSize;for(b=0;bthis.labelAngle?this.labelAngle-=180:270<=this.labelAngle&&360>=this.labelAngle&&(this.labelAngle-=360)),\"bottom\"===this._position||\n\"top\"===this._position)if(f=0.9*l>>0,q=0,!this.chart.panEnabled&&1<=this._labels.length){this.sessionVariables.labelFontSize=this.labelFontSize;this.sessionVariables.labelMaxWidth=f;this.sessionVariables.labelMaxHeight=p;this.sessionVariables.labelAngle=this.labelAngle;this.sessionVariables.labelWrap=this.labelWrap;for(c=0;cq&&(v=c,q=n.width)}c=0;for(c=this.intervalStartPosition>0>2*f&&(this.sessionVariables.labelAngle=-25)):(this.sessionVariables.labelWrap=this.labelWrap,this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth,this.sessionVariables.labelAngle=this.sessionVariables.labelMaxWidth>f?-25:this.sessionVariables.labelAngle):t(this.options.labelMaxWidth)?\n(this.sessionVariables.labelWrap=this.labelWrap,this.sessionVariables.labelMaxHeight=p,this.sessionVariables.labelMaxWidth=f,d&&m.width+d.width>>0>2*f&&(this.sessionVariables.labelAngle=-25,this.sessionVariables.labelMaxWidth=n)):(this.sessionVariables.labelAngle=this.sessionVariables.labelMaxWidth>f?-25:this.sessionVariables.labelAngle,this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth,this.sessionVariables.labelMaxHeight=p,this.sessionVariables.labelWrap=this.labelWrap);else{if(t(this.options.labelWrap))if(!t(this.options.labelMaxWidth))this.options.labelMaxWidth<\nf?(this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth,this.sessionVariables.labelMaxHeight=b):(this.sessionVariables.labelAngle=-25,this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth,this.sessionVariables.labelMaxHeight=p);else if(!t(d))if(b=m.width+d.width>>0,g=this.labelFontSize,qr&&(r=b-2*f,b>=2*f&&b<2.2*f?(this.sessionVariables.labelMaxWidth=f,t(this.options.labelFontSize)&&12=2.2*f&&b<2.8*f?(this.sessionVariables.labelAngle=-25,this.sessionVariables.labelMaxWidth=n,this.sessionVariables.labelFontSize=g):b>=2.8*f&&b<3.2*f?(this.sessionVariables.labelMaxWidth=Math.max(f,q),this.sessionVariables.labelWrap=!0,t(this.options.labelFontSize)&&12=3.2*f&&b<3.6*f?(this.sessionVariables.labelAngle=-25,this.sessionVariables.labelWrap=!0,this.sessionVariables.labelMaxWidth=n,this.sessionVariables.labelFontSize=this.labelFontSize):b>3.6*f&&b<5*f?(t(this.options.labelFontSize)&&125*f&&(this.sessionVariables.labelWrap=!0,this.sessionVariables.labelMaxWidth=f,this.sessionVariables.labelFontSize=g,this.sessionVariables.labelMaxHeight=p,this.sessionVariables.labelAngle=this.labelAngle));else if(v===c&&(0===v&&q+this._labels[v+1].textBlock.measureText().width-2*f>r||v===this._labels.length-1&&q+this._labels[v-1].textBlock.measureText().width-2*f>r||0r&&\nq+this._labels[v-1].textBlock.measureText().width-2*f>r))r=0===v?q+this._labels[v+1].textBlock.measureText().width-2*f:q+this._labels[v-1].textBlock.measureText().width-2*f,this.sessionVariables.labelFontSize=t(this.options.labelFontSize)?g:this.options.labelFontSize,this.sessionVariables.labelWrap=!0,this.sessionVariables.labelAngle=-25,this.sessionVariables.labelMaxWidth=n;else if(0===r)for(this.sessionVariables.labelFontSize=t(this.options.labelFontSize)?g:this.options.labelFontSize,this.sessionVariables.labelWrap=\n!0,b=0;b>0>2*f&&(this.sessionVariables.labelAngle=-25))}else(this.sessionVariables.labelAngle=this.labelAngle,this.sessionVariables.labelMaxHeight=0===this.labelAngle?p:Math.min((b-f*Math.cos(Math.PI/\n180*Math.abs(this.labelAngle)))/Math.sin(Math.PI/180*Math.abs(this.labelAngle)),b),n=0!=this.labelAngle?(h-(k+a.fontSize/2)*Math.cos(Math.PI/180*Math.abs(this.labelAngle)))/Math.sin(Math.PI/180*Math.abs(this.labelAngle)):f,this.sessionVariables.labelMaxHeight=p=this.labelWrap?(h-n*Math.sin(Math.PI/180*Math.abs(this.labelAngle)))/Math.cos(Math.PI/180*Math.abs(this.labelAngle)):1.5*this.labelFontSize,t(this.options.labelWrap))?t(this.options.labelWrap)&&(this.labelWrap&&!t(this.options.labelMaxWidth)?\n(this.sessionVariables.labelWrap=this.labelWrap,this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth?this.options.labelMaxWidth:n,this.sessionVariables.labelMaxHeight=p):(this.sessionVariables.labelAngle=this.labelAngle,this.sessionVariables.labelMaxWidth=n,this.sessionVariables.labelMaxHeight=b<0.9*l?0.9*l:b,this.sessionVariables.labelWrap=this.labelWrap)):(this.options.labelWrap?(this.sessionVariables.labelWrap=this.labelWrap,this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth?\nthis.options.labelMaxWidth:n):(t(this.options.labelMaxWidth),this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth?this.options.labelMaxWidth:n,this.sessionVariables.labelWrap=this.labelWrap),this.sessionVariables.labelMaxHeight=p)}for(b=0;b>0:this.options.labelMaxWidth,p=\"undefined\"===typeof this.options.labelWrap||this.labelWrap?0.3*this.chart.height>>0:1.5*this.labelFontSize,!this.chart.panEnabled&&1<=this._labels.length){this.sessionVariables.labelFontSize=this.labelFontSize;this.sessionVariables.labelMaxWidth=f;this.sessionVariables.labelMaxHeight=p;this.sessionVariables.labelAngle=t(this.sessionVariables.labelAngle)?\n0:this.sessionVariables.labelAngle;this.sessionVariables.labelWrap=this.labelWrap;for(c=0;c>0,l-2*p>q&&(q=l-2*p,l>=2*p&&l<2.4*p?(t(this.options.labelFontSize)&&12=2.4*p&&l<2.8*p?(this.sessionVariables.labelMaxHeight=b,this.sessionVariables.labelFontSize=this.labelFontSize,this.sessionVariables.labelWrap=!0):l>=2.8*p&&l<3.2*p?(this.sessionVariables.labelMaxHeight=p,this.sessionVariables.labelWrap=!0,t(this.options.labelFontSize)&&12=3.2*p&&l<3.6*p?(this.sessionVariables.labelMaxHeight=b,this.sessionVariables.labelWrap=!0,this.sessionVariables.labelFontSize=this.labelFontSize):l>3.6*p&&l<10*p?(t(this.options.labelFontSize)&&1210*p&&l<50*p&&(t(this.options.labelFontSize)&&12\nthis.options.labelMaxWidth:this.sessionVariables.labelMaxWidth,this.sessionVariables.labelWrap=this.labelWrap,this.sessionVariables.labelMaxHeight=b):(this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth?this.options.labelMaxWidth:f,this.sessionVariables.labelMaxHeight=0===this.labelAngle?p:b,t(this.options.labelMaxWidth)&&(this.sessionVariables.labelAngle=this.labelAngle))):this.options.labelWrap?(this.sessionVariables.labelMaxHeight=0===this.labelAngle?p:b,this.sessionVariables.labelWrap=\nthis.labelWrap,this.sessionVariables.labelMaxWidth=f):(this.sessionVariables.labelMaxHeight=p,t(this.options.labelMaxWidth),this.sessionVariables.labelMaxWidth=this.options.labelMaxWidth?this.options.labelMaxWidth:this.sessionVariables.labelMaxWidth,this.sessionVariables.labelWrap=this.labelWrap)}for(b=0;b>0:1.5*this.labelFontSize;if(\"left\"===this._position||\"right\"===this._position)x=t(f.options.labelWrap)?this.sessionVariables.labelMaxHeight:\nf.labelWrap?0.8*this.chart.width>>0:1.5*this.labelFontSize;t(f.labelBackgroundColor)&&(f.labelBackgroundColor=\"#EEEEEE\")}else p=\"bottom\"===this._position||\"top\"===this._position?0.9*this.chart.width>>0:0.9*this.chart.height>>0,x=t(f.options.labelWrap)||f.labelWrap?\"bottom\"===this._position||\"top\"===this._position?0.8*this.chart.width>>0:0.8*this.chart.height>>0:1.5*this.labelFontSize,t(f.labelBackgroundColor)&&(t(f.startValue)&&0!==f.startValue?f.labelBackgroundColor=s?\"transparent\":null:f.labelBackgroundColor=\n\"#EEEEEE\");a=new ia(this.ctx,{x:0,y:0,backgroundColor:f.labelBackgroundColor,borderColor:f.labelBorderColor,borderThickness:f.labelBorderThickness,cornerRadius:f.labelCornerRadius,maxWidth:f.options.labelMaxWidth?f.options.labelMaxWidth:p,maxHeight:x,angle:this.labelAngle,text:f.labelFormatter?f.labelFormatter({chart:this.chart,axis:this,stripLine:f}):f.label,textAlign:this.labelTextAlign,fontSize:\"outside\"===f.labelPlacement?f.options.labelFontSize?f.labelFontSize:this.labelFontSize:f.labelFontSize,\nfontFamily:\"outside\"===f.labelPlacement?f.options.labelFontFamily?f.labelFontFamily:this.labelFontFamily:f.labelFontFamily,fontWeight:\"outside\"===f.labelPlacement?f.options.labelFontWeight?f.labelFontWeight:this.labelFontWeight:f.labelFontWeight,fontColor:f.labelFontColor||f.color,fontStyle:\"outside\"===f.labelPlacement?f.options.labelFontStyle?f.labelFontStyle:this.fontWeight:f.labelFontStyle,textBaseline:\"middle\"});this._stripLineLabels.push({position:f.value,textBlock:a,effectiveHeight:null,stripLine:f})}};\nD.prototype.createLabelsAndCalculateWidth=function(){var a=0,d=0;this._labels=[];this._stripLineLabels=[];var c=this.chart.isNavigator?0:5;if(\"left\"===this._position||\"right\"===this._position){this.createLabels();if(\"inside\"!=this.labelPlacement||\"inside\"===this.labelPlacement&&0=this.viewportMinimum&&this._stripLineLabels[d].stripLine.value<=this.viewportMaximum)&&(b=this._stripLineLabels[d].textBlock,e=b.measureText(),f=0===this.labelAngle?e.width:e.width*Math.cos(Math.PI/180*Math.abs(this.labelAngle))+(e.height-b.fontSize/2)*Math.sin(Math.PI/180*Math.abs(this.labelAngle)),\na=this.viewportMinimum&&this._stripLineLabels[c].stripLine.value<=this.viewportMaximum)&&(d=this._stripLineLabels[c].textBlock,\ne=d.measureText(),f=0===this.labelAngle?e.height:e.width*Math.sin(Math.PI/180*Math.abs(this.labelAngle))+(e.height-d.fontSize/2)*Math.cos(Math.PI/180*Math.abs(this.labelAngle)),aq[g].viewportMaximum);s++)m[s].endValue=q[g].viewPortMinimum&&(q[g].scaleBreaks.lastBreakIndex=s));for(var v=s=0,u=0,w=0,x=0,C=0,B=0,z,D,F=l=0,H,J,K,m=H=J=K=!1,g=0;gs;){var G=0,R=0,U=0,X=0,W=e=0,M=0,Z=0,V=0,Y=0,P=0,aa=0;if(c&&0n.width-r?n.width-r:f.x2-aa-Z);if(a&&0n.width-r?n.width-r:f.x2-aa-Z),a[g]._labels&&1k&&(l+=0a[g].labelAngle?z-vk&&(l=D+u/2-k-aa),z-va[g].labelAngle&&0n.width-r?n.width-r:f.x2-aa-Z),d[g].lineCoordinates.width=Math.abs(k-p),d[g]._labels&&1s;){V=X=R=U=Z=M=W=e=Q=O=G=Y=0;if(a&&0n.width-10?n.width-10:f.x2-V-W),c[g].labelAutoFit&&!t(w)&&(0c[g].labelAngle?Math.max(p,w):0===c[g].labelAngle?\nMath.max(p,w/2):p),0b[g].chart.width-10?b[g].chart.width-10:f.x2-V-W),b[g]&&\nb[g].labelAutoFit&&!t(C)&&(0c[g].chart.height?\nc[g].chart.height:f.y2),c[g].lineCoordinates.y1=l-(r[g]+c[g].margin+Y),c[g].lineCoordinates.y2=l-(r[g]+c[g].margin+Y),\"inside\"===c[g].labelPlacement&&0n.height-\nMath.max(M,10)?n.height-Math.max(M,10):f.y2-U):f.y2>n.height-Math.max(M,10)?n.height-Math.max(M,10):f.y2;if(c&&0c[M].labelAngle?Math.max(k,w):0===c[M].labelAngle?Math.max(k,w/2):k,p=0>c[M].labelAngle||0===c[M].labelAngle?k-X:p);if(b&&0n.height-Math.max(M,10)?n.height-Math.max(M,10):f.y2-U):f.y2>n.height-Math.max(M,10)?n.height-Math.max(M,10):f.y2;if(c&&\n0c[M].labelAngle?Math.max(k,w):0===c[M].labelAngle?Math.max(k,w/2):k,p=0>c[M].labelAngle||0===c[M].labelAngle?k-V:p);if(b&&0d[f].spacing?0:Math.abs(d[f].spacing/c),this.logarithmic&&(d[f].size=Math.pow(this.logarithmBase,d[f].size))};D.prototype.calculateBreaksInPixels=function(){if(!(this.scaleBreaks&&0>=this.scaleBreaks._appliedBreaks.length)){var a=this.scaleBreaks?this.scaleBreaks._appliedBreaks:[];a.length&&(this.scaleBreaks.firstBreakIndex=this.scaleBreaks.lastBreakIndex=null);for(var d=0;dthis.conversionParameters.maximum);d++)a[d].endValue=this.conversionParameters.minimum&&(a[d].startPixel=this.convertValueToPixel(a[d].startValue),this.scaleBreaks.lastBreakIndex=d),a[d].endValue<=this.conversionParameters.maximum&&(a[d].endPixel=this.convertValueToPixel(a[d].endValue)))}};D.prototype.renderLabelsTicksAndTitle=function(){var a=this,d=!1,c=0,b=0,e=1,f=0;0!==this.labelAngle&&360!==this.labelAngle&&(e=1.2);if(\"undefined\"===typeof this.options.interval){if(\"bottom\"===\nthis._position||\"top\"===this._position)if(this.logarithmic&&!this.equidistantInterval&&this.labelAutoFit){for(var c=[],e=0!==this.labelAngle&&360!==this.labelAngle?1:1.2,k,l=this.viewportMaximum,m=this.lineCoordinates.width/Math.log(this.range),h=this._labels.length-1;0<=h;h--){r=this._labels[h];if(r.positionthis.viewportMaximum||!(h===this._labels.length-1||kthis.lineCoordinates.width*e&&this.labelAutoFit&&(d=!0)}if(\"left\"===this._position||\"right\"===this._position)if(this.logarithmic&&!this.equidistantInterval&&this.labelAutoFit){for(var c=\n[],n,l=this.viewportMaximum,m=this.lineCoordinates.height/Math.log(this.range),h=this._labels.length-1;0<=h;h--){r=this._labels[h];if(r.positionthis.viewportMaximum||!(h===this._labels.length-1||nthis.lineCoordinates.height*e&&this.labelAutoFit&&(d=!0)}}this.logarithmic&&(!this.equidistantInterval&&this.labelAutoFit)&&this._labels.sort(function(a,b){return a.position-b.position});var h=0,r,q;if(\"bottom\"===this._position){for(h=0;hthis.viewportMaximum||\n(q=this.getPixelCoordinatesOnAxis(r.position),this.tickThickness&&\"inside\"!=this.tickPlacement&&(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor,b=1===this.ctx.lineWidth%2?(q.x<<0)+0.5:q.x<<0,this.ctx.beginPath(),this.ctx.moveTo(b,q.y<<0),this.ctx.lineTo(b,q.y+this.tickLength<<0),this.ctx.stroke()),d&&0!==f++%2&&this.labelAutoFit||(0===r.textBlock.angle?(q.x-=r.textBlock.width/2,q.y=\"inside\"===this.labelPlacement?q.y-((\"inside\"===this.tickPlacement?this.tickLength:0)+r.textBlock.height-\nr.textBlock.fontSize/2):q.y+(\"inside\"===this.tickPlacement?0:this.tickLength)+r.textBlock.fontSize/2+5):(q.x=\"inside\"===this.labelPlacement?0>this.labelAngle?q.x:q.x-r.textBlock.width*Math.cos(Math.PI/180*this.labelAngle):q.x-(0>this.labelAngle?r.textBlock.width*Math.cos(Math.PI/180*this.labelAngle):0),q.y=\"inside\"===this.labelPlacement?0>this.labelAngle?q.y-(\"inside\"===this.tickPlacement?this.tickLength:0)-5:q.y-(\"inside\"===this.tickPlacement?0:this.tickLength)-Math.abs(r.textBlock.width*Math.sin(Math.PI/\n180*this.labelAngle)+5):q.y+(\"inside\"===this.tickPlacement?0:this.tickLength)+Math.abs(0>this.labelAngle?r.textBlock.width*Math.sin(Math.PI/180*this.labelAngle)-5:5)),r.textBlock.x=q.x,r.textBlock.y=q.y));\"inside\"===this.tickPlacement&&this.chart.addEventListener(\"dataAnimationEnd\",function(){for(h=0;ha.viewportMaximum)&&(q=a.getPixelCoordinatesOnAxis(r.position),a.tickThickness)){a.ctx.lineWidth=a.tickThickness;a.ctx.strokeStyle=\na.tickColor;var b=1===a.ctx.lineWidth%2?(q.x<<0)+0.5:q.x<<0;a.ctx.save();a.ctx.beginPath();a.ctx.moveTo(b,q.y<<0);a.ctx.lineTo(b,q.y-a.tickLength<<0);a.ctx.stroke();a.ctx.restore()}},this);this.title&&(this._titleTextBlock.measureText(),this._titleTextBlock.x=this.lineCoordinates.x1+this.lineCoordinates.width/2-this._titleTextBlock.width/2,this._titleTextBlock.y=this.bounds.y2-this._titleTextBlock.height-3,this.titleMaxWidth=this._titleTextBlock.maxWidth,this._titleTextBlock.render(!0))}else if(\"top\"===\nthis._position){for(h=0;hthis.viewportMaximum||(q=this.getPixelCoordinatesOnAxis(r.position),this.tickThickness&&\"inside\"!=this.tickPlacement&&(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor,b=1===this.ctx.lineWidth%2?(q.x<<0)+0.5:q.x<<0,this.ctx.beginPath(),this.ctx.moveTo(b,q.y<<0),this.ctx.lineTo(b,q.y-this.tickLength<<0),this.ctx.stroke()),d&&0!==f++%2&&this.labelAutoFit||(0===r.textBlock.angle?\n(q.x-=r.textBlock.width/2,q.y=\"inside\"===this.labelPlacement?q.y+this.labelFontSize/2+(\"inside\"===this.tickPlacement?this.tickLength:0)+5:q.y-((\"inside\"===this.tickPlacement?0:this.tickLength)+r.textBlock.height-r.textBlock.fontSize/2)):(q.x=\"inside\"===this.labelPlacement?0a.viewportMaximum)&&(q=a.getPixelCoordinatesOnAxis(r.position),a.tickThickness)){a.ctx.lineWidth=a.tickThickness;a.ctx.strokeStyle=a.tickColor;var b=1===a.ctx.lineWidth%2?(q.x<<0)+0.5:q.x<<0;a.ctx.save();a.ctx.beginPath();a.ctx.moveTo(b,q.y<<0);a.ctx.lineTo(b,q.y+a.tickLength<<0);a.ctx.stroke();a.ctx.restore()}},this);this.title&&(this._titleTextBlock.measureText(),\nthis._titleTextBlock.x=this.lineCoordinates.x1+this.lineCoordinates.width/2-this._titleTextBlock.width/2,this._titleTextBlock.y=this.bounds.y1+1,this.titleMaxWidth=this._titleTextBlock.maxWidth,this._titleTextBlock.render(!0))}else if(\"left\"===this._position){for(h=0;hthis.viewportMaximum||(q=this.getPixelCoordinatesOnAxis(r.position),this.tickThickness&&\"inside\"!=this.tickPlacement&&(this.ctx.lineWidth=this.tickThickness,\nthis.ctx.strokeStyle=this.tickColor,b=1===this.ctx.lineWidth%2?(q.y<<0)+0.5:q.y<<0,this.ctx.beginPath(),this.ctx.moveTo(q.x<<0,b),this.ctx.lineTo(q.x-this.tickLength<<0,b),this.ctx.stroke()),d&&0!==f++%2&&this.labelAutoFit||(0===this.labelAngle?(r.textBlock.y=q.y,r.textBlock.x=\"inside\"===this.labelPlacement?q.x+(\"inside\"===this.tickPlacement?this.tickLength:0)+5:q.x-r.textBlock.width*Math.cos(Math.PI/180*this.labelAngle)-(\"inside\"===this.tickPlacement?0:this.tickLength)-5):(r.textBlock.y=\"inside\"===\nthis.labelPlacement?q.y:q.y-r.textBlock.width*Math.sin(Math.PI/180*this.labelAngle),r.textBlock.x=\"inside\"===this.labelPlacement?q.x+(\"inside\"===this.tickPlacement?this.tickLength:0)+5:0a.viewportMaximum)&&(q=a.getPixelCoordinatesOnAxis(r.position),a.tickThickness)){a.ctx.lineWidth=a.tickThickness;a.ctx.strokeStyle=a.tickColor;var b=1===a.ctx.lineWidth%2?(q.y<<0)+0.5:q.y<<0;a.ctx.save();a.ctx.beginPath();a.ctx.moveTo(q.x<<0,b);a.ctx.lineTo(q.x+a.tickLength<<0,b);a.ctx.stroke();a.ctx.restore()}},this);\nthis.title&&(this._titleTextBlock.measureText(),this._titleTextBlock.x=this.bounds.x1+1,this._titleTextBlock.y=this.lineCoordinates.height/2+this._titleTextBlock.width/2+this.lineCoordinates.y1,this.titleMaxWidth=this._titleTextBlock.maxWidth,this._titleTextBlock.render(!0))}else if(\"right\"===this._position){for(h=0;hthis.viewportMaximum||(q=this.getPixelCoordinatesOnAxis(r.position),this.tickThickness&&\"inside\"!=\nthis.tickPlacement&&(this.ctx.lineWidth=this.tickThickness,this.ctx.strokeStyle=this.tickColor,b=1===this.ctx.lineWidth%2?(q.y<<0)+0.5:q.y<<0,this.ctx.beginPath(),this.ctx.moveTo(q.x<<0,b),this.ctx.lineTo(q.x+this.tickLength<<0,b),this.ctx.stroke()),d&&0!==f++%2&&this.labelAutoFit||(0===this.labelAngle?(r.textBlock.y=q.y,r.textBlock.x=\"inside\"===this.labelPlacement?q.x-r.textBlock.width-(\"inside\"===this.tickPlacement?this.tickLength:0)-5:q.x+(\"inside\"===this.tickPlacement?0:this.tickLength)+5):(r.textBlock.y=\n\"inside\"===this.labelPlacement?q.y-r.textBlock.width*Math.sin(Math.PI/180*this.labelAngle):0>this.labelAngle?q.y:q.y-(r.textBlock.height-r.textBlock.fontSize/2-5)*Math.cos(Math.PI/180*this.labelAngle),r.textBlock.x=\"inside\"===this.labelPlacement?q.x-r.textBlock.width*Math.cos(Math.PI/180*this.labelAngle)-(\"inside\"===this.tickPlacement?this.tickLength:0)-5:0a.viewportMaximum)&&(q=a.getPixelCoordinatesOnAxis(r.position),a.tickThickness)){a.ctx.lineWidth=a.tickThickness;a.ctx.strokeStyle=a.tickColor;var b=1===a.ctx.lineWidth%2?(q.y<<0)+0.5:q.y<<0;a.ctx.save();a.ctx.beginPath();a.ctx.moveTo(q.x<<0,b);a.ctx.lineTo(q.x-\na.tickLength<<0,b);a.ctx.stroke();a.ctx.restore()}},this);this.title&&(this._titleTextBlock.measureText(),this._titleTextBlock.x=this.bounds.x2-1,this._titleTextBlock.y=this.lineCoordinates.height/2-this._titleTextBlock.width/2+this.lineCoordinates.y1,this.titleMaxWidth=this._titleTextBlock.maxWidth,this._titleTextBlock.render(!0))}f=0;if(\"inside\"===this.labelPlacement)this.chart.addEventListener(\"dataAnimationEnd\",function(){for(h=0;ha.viewportMaximum||d&&0!==f++%2&&a.labelAutoFit)||(a.ctx.save(),a.ctx.beginPath(),r.textBlock.render(!0),a.ctx.restore())},this);else for(h=0;hthis.viewportMaximum||d&&0!==f++%2&&this.labelAutoFit)||r.textBlock.render(!0)};D.prototype.renderInterlacedColors=function(){var a=this.chart.plotArea.ctx,d,c,b=this.chart.plotArea,e=0;d=!0;if((\"bottom\"===this._position||\"top\"===this._position)&&this.interlacedColor)for(a.fillStyle=\nthis.interlacedColor,e=0;ethis._labels.length-1?this.getPixelCoordinatesOnAxis(this.viewportMaximum):this.getPixelCoordinatesOnAxis(this._labels[e+1].position),a.fillRect(Math.min(c.x,d.x),b.y1,Math.abs(c.x-d.x),Math.abs(b.y1-b.y2)),d=!1):d=!0;else if((\"left\"===this._position||\"right\"===this._position)&&this.interlacedColor)for(a.fillStyle=this.interlacedColor,e=0;ethis._labels.length-1?this.getPixelCoordinatesOnAxis(this.viewportMaximum):this.getPixelCoordinatesOnAxis(this._labels[e+1].position),a.fillRect(b.x1,Math.min(c.y,d.y),Math.abs(b.x1-b.x2),Math.abs(d.y-c.y)),d=!1):d=!0;a.beginPath()};D.prototype.renderStripLinesOfThicknessType=function(a){if(this.stripLines&&0this.viewportMaximum||t(h.value)||isNaN(this.range))||l.push(h))}for(b=0;bthis.viewportMaximum||isNaN(this.range))){a=this.getPixelCoordinatesOnAxis(c.position);if(\"outside\"===c.stripLine.labelPlacement)if(h&&(this.ctx.strokeStyle=h.color,\"pixel\"===h._thicknessType&&(this.ctx.lineWidth=h.thickness)),\"bottom\"===this._position){var n=1===this.ctx.lineWidth%2?(a.x<<\n0)+0.5:a.x<<0;this.ctx.beginPath();this.ctx.moveTo(n,a.y<<0);this.ctx.lineTo(n,a.y+this.tickLength<<0);this.ctx.stroke();0===this.labelAngle?(a.x-=c.textBlock.width/2,a.y+=this.tickLength+c.textBlock.fontSize/2):(a.x-=0>this.labelAngle?c.textBlock.width*Math.cos(Math.PI/180*this.labelAngle):0,a.y+=this.tickLength+Math.abs(0>this.labelAngle?c.textBlock.width*Math.sin(Math.PI/180*this.labelAngle)-5:5))}else\"top\"===this._position?(n=1===this.ctx.lineWidth%2?(a.x<<0)+0.5:a.x<<0,this.ctx.beginPath(),this.ctx.moveTo(n,\na.y<<0),this.ctx.lineTo(n,a.y-this.tickLength<<0),this.ctx.stroke(),0===this.labelAngle?(a.x-=c.textBlock.width/2,a.y-=this.tickLength+c.textBlock.height):(a.x+=(c.textBlock.height-this.tickLength-this.labelFontSize/2)*Math.sin(Math.PI/180*this.labelAngle)-(0this.labelAngle?a.y:a.y-(c.textBlock.height-c.textBlock.fontSize/2-5)*Math.cos(Math.PI/180*this.labelAngle),a.x=0this.chart.plotArea.x1?t(h.startValue)?a.x-=c.textBlock.height-c.textBlock.fontSize/2:a.x-=c.textBlock.height/2-c.textBlock.fontSize/2+3:(c.textBlock.angle=90,t(h.startValue)?a.x+=c.textBlock.height-c.textBlock.fontSize/\n2:a.x+=c.textBlock.height/2-c.textBlock.fontSize/2+3),a.y=-90===c.textBlock.angle?\"near\"===c.stripLine.labelAlign?this.chart.plotArea.y2-3:\"center\"===c.stripLine.labelAlign?(this.chart.plotArea.y2+this.chart.plotArea.y1+c.textBlock.width)/2:this.chart.plotArea.y1+c.textBlock.width+3:\"near\"===c.stripLine.labelAlign?this.chart.plotArea.y2-c.textBlock.width-3:\"center\"===c.stripLine.labelAlign?(this.chart.plotArea.y2+this.chart.plotArea.y1-c.textBlock.width)/2:this.chart.plotArea.y1+3):\"top\"===this._position?\n(c.textBlock.maxWidth=this.options.stripLines[b].labelMaxWidth?this.options.stripLines[b].labelMaxWidth:this.chart.plotArea.height-3,c.textBlock.measureText(),a.x-c.textBlock.height>this.chart.plotArea.x1?t(h.startValue)?a.x-=c.textBlock.height-c.textBlock.fontSize/2:a.x-=c.textBlock.height/2-c.textBlock.fontSize/2+3:(c.textBlock.angle=90,t(h.startValue)?a.x+=c.textBlock.height-c.textBlock.fontSize/2:a.x+=c.textBlock.height/2-c.textBlock.fontSize/2+3),a.y=-90===c.textBlock.angle?\"near\"===c.stripLine.labelAlign?\nthis.chart.plotArea.y1+c.textBlock.width+3:\"center\"===c.stripLine.labelAlign?(this.chart.plotArea.y2+this.chart.plotArea.y1+c.textBlock.width)/2:this.chart.plotArea.y2-3:\"near\"===c.stripLine.labelAlign?this.chart.plotArea.y1+3:\"center\"===c.stripLine.labelAlign?(this.chart.plotArea.y2+this.chart.plotArea.y1-c.textBlock.width)/2:this.chart.plotArea.y2-c.textBlock.width-3):\"left\"===this._position?(c.textBlock.maxWidth=this.options.stripLines[b].labelMaxWidth?this.options.stripLines[b].labelMaxWidth:\nthis.chart.plotArea.width-3,c.textBlock.angle=0,c.textBlock.measureText(),a.y-c.textBlock.height>this.chart.plotArea.y1?t(h.startValue)?a.y-=c.textBlock.height-c.textBlock.fontSize/2:a.y-=c.textBlock.height/2-c.textBlock.fontSize+3:a.y-c.textBlock.heightthis.chart.plotArea.y1?t(h.startValue)?a.y-=c.textBlock.height-c.textBlock.fontSize/2:a.y-=c.textBlock.height/2-c.textBlock.fontSize/2-3:a.y-c.textBlock.height<\nthis.chart.plotArea.y2?a.y+=c.textBlock.fontSize/2+3:t(h.startValue)?a.y-=c.textBlock.height-c.textBlock.fontSize/2:a.y-=c.textBlock.height/2-c.textBlock.fontSize/2+3,a.x=\"near\"===c.stripLine.labelAlign?this.chart.plotArea.x2-c.textBlock.width-3:\"center\"===c.stripLine.labelAlign?(this.chart.plotArea.x2+this.chart.plotArea.x1)/2-c.textBlock.width/2:this.chart.plotArea.x1+3);c.textBlock.x=a.x;c.textBlock.y=a.y;m.push(c)}if(!k){k=!1;this.ctx.save();this.ctx.beginPath();this.ctx.rect(this.chart.plotArea.x1,\nthis.chart.plotArea.y1,this.chart.plotArea.width,this.chart.plotArea.height);this.ctx.clip();for(b=0;bthis.viewportMaximum||isNaN(this.range))||a[d].render(this.maskCtx);this.maskCtx.restore()}};D.prototype.renderCrosshair=function(a,d){isFinite(this.minimum)&&isFinite(this.maximum)&&\n(this.crosshair.render(a,d),this.crosshair.dispatchEvent(\"updated\",{chart:this.chart,crosshair:this.options,axis:this,value:this.crosshair.value},this))};D.prototype.showCrosshair=function(a){t(a)||(athis.viewportMaximum)||(\"top\"===this._position||\"bottom\"===this._position?this.crosshair.render(this.convertValueToPixel(a),null,a):this.crosshair.render(null,this.convertValueToPixel(a),a))};D.prototype.renderGrid=function(){if(this.gridThickness&&0this.viewportMaximum||this._labels[b].breaksLabelType)||(a.beginPath(),d=this.getPixelCoordinatesOnAxis(this._labels[b].position),d=1===a.lineWidth%2?(d.x<<0)+\n0.5:d.x<<0,a.moveTo(d,c.y1<<0),a.lineTo(d,c.y2<<0),a.stroke());else if(\"left\"===this._position||\"right\"===this._position)for(var b=0;bthis.viewportMaximum||this._labels[b].breaksLabelType)||(a.beginPath(),d=this.getPixelCoordinatesOnAxis(this._labels[b].position),d=1===a.lineWidth%2?(d.y<<0)+0.5:d.y<<0,a.moveTo(c.x1<<0,d),a.lineTo(c.x2<<0,d),a.stroke());a.restore()}};D.prototype.renderAxisLine=function(){var a=\nthis.chart.ctx,d=s?this.chart._preRenderCtx:a,c=Math.ceil(this.tickThickness/(this.reversed?-2:2)),b=Math.ceil(this.tickThickness/(this.reversed?2:-2)),e,f;d.save();if(\"bottom\"===this._position||\"top\"===this._position){if(this.lineThickness){this.reversed?(e=this.lineCoordinates.x2,f=this.lineCoordinates.x1):(e=this.lineCoordinates.x1,f=this.lineCoordinates.x2);d.lineWidth=this.lineThickness;d.strokeStyle=this.lineColor?this.lineColor:\"black\";d.setLineDash&&d.setLineDash(N(this.lineDashType,this.lineThickness));\nvar k=1===this.lineThickness%2?(this.lineCoordinates.y1<<0)+0.5:this.lineCoordinates.y1<<0;d.beginPath();if(this.scaleBreaks&&!t(this.scaleBreaks.firstBreakIndex))if(t(this.scaleBreaks.lastBreakIndex))e=this.scaleBreaks._appliedBreaks[this.scaleBreaks.firstBreakIndex].endPixel+b;else for(var l=this.scaleBreaks.firstBreakIndex;l<=this.scaleBreaks.lastBreakIndex;l++)d.moveTo(e,k),d.lineTo(this.scaleBreaks._appliedBreaks[l].startPixel+c,k),e=this.scaleBreaks._appliedBreaks[l].endPixel+b;e&&(d.moveTo(e,\nk),d.lineTo(f,k));d.stroke()}}else if((\"left\"===this._position||\"right\"===this._position)&&this.lineThickness){this.reversed?(e=this.lineCoordinates.y1,f=this.lineCoordinates.y2):(e=this.lineCoordinates.y2,f=this.lineCoordinates.y1);d.lineWidth=this.lineThickness;d.strokeStyle=this.lineColor;d.setLineDash&&d.setLineDash(N(this.lineDashType,this.lineThickness));k=1===this.lineThickness%2?(this.lineCoordinates.x1<<0)+0.5:this.lineCoordinates.x1<<0;d.beginPath();if(this.scaleBreaks&&!t(this.scaleBreaks.firstBreakIndex))if(t(this.scaleBreaks.lastBreakIndex))e=\nthis.scaleBreaks._appliedBreaks[this.scaleBreaks.firstBreakIndex].endPixel+c;else for(l=this.scaleBreaks.firstBreakIndex;l<=this.scaleBreaks.lastBreakIndex;l++)d.moveTo(k,e),d.lineTo(k,this.scaleBreaks._appliedBreaks[l].startPixel+b),e=this.scaleBreaks._appliedBreaks[l].endPixel+c;e&&(d.moveTo(k,e),d.lineTo(k,f));d.stroke()}s&&(a.drawImage(this.chart._preRenderCanvas,0,0,this.chart.width,this.chart.height),this.chart._breaksCanvasCtx&&this.chart._breaksCanvasCtx.drawImage(this.chart._preRenderCanvas,\n0,0,this.chart.width,this.chart.height),d.clearRect(0,0,this.chart.width,this.chart.height));d.restore()};D.prototype.getPixelCoordinatesOnAxis=function(a){var d={};if(\"bottom\"===this._position||\"top\"===this._position)d.x=this.convertValueToPixel(a),d.y=this.lineCoordinates.y1;if(\"left\"===this._position||\"right\"===this._position)d.y=this.convertValueToPixel(a),d.x=this.lineCoordinates.x2;return d};D.prototype.convertPixelToValue=function(a){if(\"undefined\"===typeof a)return null;var d=0,c=0,b,d=!0,\ne=this.scaleBreaks?this.scaleBreaks._appliedBreaks:[],c=\"number\"===typeof a?a:\"left\"===this._position||\"right\"===this._position?a.y:a.x;if(this.logarithmic){a=b=Math.pow(this.logarithmBase,(c-this.conversionParameters.reference)/this.conversionParameters.pixelPerUnit);if(c<=this.conversionParameters.reference===(\"left\"===this._position||\"right\"===this._position)!==this.reversed)for(c=0;ce[c].startValue/this.conversionParameters.minimum){b/=e[c].startValue/this.conversionParameters.minimum;if(be[c].startValue/e[c-1].endValue){b/=e[c].startValue/e[c-1].endValue;if(bthis.conversionParameters.minimum))if(d)if(e[c].endValue>this.conversionParameters.minimum){if(1e[c].startValue){a=Math.pow(e[c].endValue/e[c].startValue,Math.log(b)/Math.log(e[c].size));break}else a*=e[c].startValue/this.conversionParameters.minimum*Math.pow(e[c].size,\nMath.log(e[c].startValue/this.conversionParameters.minimum)/Math.log(e[c].endValue/e[c].startValue))*b,b*=Math.pow(e[c].size,Math.log(this.conversionParameters.minimum/e[c].startValue)/Math.log(e[c].endValue/e[c].startValue));d=!1}else if(b1/e[c].size){a*=Math.pow(e[c].endValue/e[c].startValue,1>=e[c].size?1:Math.log(b)/Math.log(e[c].size))*b;break}else a/=e[c].endValue/e[c].startValue/e[c].size;\nb*=e[c].size;d=!1}else break;else if(b1/e[c].size){a*=Math.pow(e[c].endValue/e[c].startValue,1>=e[c].size?1:Math.log(b)/Math.log(e[c].size))*b;break}else a/=e[c].endValue/e[c].startValue/e[c].size;b*=e[c].size}else break;d=a*this.viewportMinimum}else{a=b=(c-this.conversionParameters.reference)/this.conversionParameters.pixelPerUnit;if(c<=this.conversionParameters.reference===(\"left\"===this._position||\"right\"===this._position)!==\nthis.reversed)for(c=0;c=e[c].size?0:b*(e[c].endValue-e[c].startValue)/e[c].size;break}else a+=e[c].endValue-this.conversionParameters.minimum-e[c].size*(e[c].endValue-this.conversionParameters.minimum)/(e[c].endValue-e[c].startValue),b-=e[c].size*(e[c].endValue-\nthis.conversionParameters.minimum)/(e[c].endValue-e[c].startValue);d=!1}else if(b>e[c].startValue-this.conversionParameters.minimum){b-=e[c].startValue-this.conversionParameters.minimum;if(be[c].startValue-e[c-1].endValue){b-=e[c].startValue-e[c-1].endValue;if(bthis.conversionParameters.minimum))if(d)if(e[c].endValue>this.conversionParameters.minimum)if(e[c].size&&this.conversionParameters.minimum+b*(e[c].endValue-e[c].startValue)/e[c].size>e[c].startValue){a=0>=e[c].size?0:b*(e[c].endValue-e[c].startValue)/e[c].size;break}else a+=e[c].startValue-this.conversionParameters.minimum+e[c].size*(this.conversionParameters.minimum-\ne[c].startValue)/(e[c].endValue-e[c].startValue),b+=e[c].size*(this.conversionParameters.minimum-e[c].startValue)/(e[c].endValue-e[c].startValue),d=!1;else if(b-1*e[c].size){a+=(e[c].endValue-e[c].startValue)*(0===e[c].size?1:b/e[c].size)+b;break}else a-=e[c].endValue-e[c].startValue-e[c].size;b+=e[c].size;d=!1}else break;else if(b-1*e[c].size){a+=(e[c].endValue-e[c].startValue)*(0===e[c].size?1:b/e[c].size)+b;break}else a-=e[c].endValue-e[c].startValue-e[c].size;b+=e[c].size}else break;d=this.conversionParameters.minimum+a}return d};D.prototype.convertValueToPixel=function(a){a=this.getApparentDifference(this.conversionParameters.minimum,a,a);return this.logarithmic?this.conversionParameters.reference+this.conversionParameters.pixelPerUnit*Math.log(a/this.conversionParameters.minimum)/this.conversionParameters.lnLogarithmBase+\n0.5<<0:\"axisX\"===this.type?this.conversionParameters.reference+this.conversionParameters.pixelPerUnit*(a-this.conversionParameters.minimum)+0.5<<0:this.conversionParameters.reference+this.conversionParameters.pixelPerUnit*(a-this.conversionParameters.minimum)+0.5};D.prototype.getApparentDifference=function(a,d,c,b){var e=this.scaleBreaks?this.scaleBreaks._appliedBreaks:[];if(this.logarithmic){c=t(c)?d/a:c;for(var f=0;fe[f].endValue||(a<=e[f].startValue&&d>=e[f].endValue?\nc=c/e[f].endValue*e[f].startValue*e[f].size:a>=e[f].startValue&&d>=e[f].endValue?c=c/e[f].endValue*a*Math.pow(e[f].size,Math.log(e[f].endValue/a)/Math.log(e[f].endValue/e[f].startValue)):a<=e[f].startValue&&d<=e[f].endValue?c=c/d*e[f].startValue*Math.pow(e[f].size,Math.log(d/e[f].startValue)/Math.log(e[f].endValue/e[f].startValue)):!b&&(a>e[f].startValue&&de[f].endValue||(a<=e[f].startValue&&d>=e[f].endValue?c=c-e[f].endValue+e[f].startValue+e[f].size:a>e[f].startValue&&d>=e[f].endValue?c=c-e[f].endValue+a+e[f].size*(e[f].endValue-a)/(e[f].endValue-e[f].startValue):a<=e[f].startValue&&de[f].startValue&&da[e].endValue||(this.viewportMinimum>=a[e].startValue&&this.viewportMaximum<=a[e].endValue?c=0:this.viewportMinimum<=a[e].startValue&&this.viewportMaximum>=a[e].endValue?(b=b/a[e].endValue*a[e].startValue,c=0a[e].startValue&&this.viewportMaximum>=a[e].endValue?(b=b/a[e].endValue*this.viewportMinimum,c=0a[e].endValue||(this.viewportMinimum>=a[e].startValue&&this.viewportMaximum<=\na[e].endValue?c=0:this.viewportMinimum<=a[e].startValue&&this.viewportMaximum>=a[e].endValue?(b=b-a[e].endValue+a[e].startValue,c=0a[e].startValue&&this.viewportMaximum>=a[e].endValue?(b=b-a[e].endValue+this.viewportMinimum,c=0this.maxWidth?8:6);var a=Math.max(b,Math.floor(this.maxWidth/a)),e,f,k,b=0;!t(this.options.viewportMinimum)&&(!t(this.options.viewportMaximum)&&this.options.viewportMinimum>=this.options.viewportMaximum)&&(this.viewportMinimum=this.viewportMaximum=null);if(t(this.options.viewportMinimum)&&!t(this.sessionVariables.newViewportMinimum)&&!isNaN(this.sessionVariables.newViewportMinimum))this.viewportMinimum=\nthis.sessionVariables.newViewportMinimum;else if(null===this.viewportMinimum||isNaN(this.viewportMinimum))this.viewportMinimum=this.minimum;if(t(this.options.viewportMaximum)&&!t(this.sessionVariables.newViewportMaximum)&&!isNaN(this.sessionVariables.newViewportMaximum))this.viewportMaximum=this.sessionVariables.newViewportMaximum;else if(null===this.viewportMaximum||isNaN(this.viewportMaximum))this.viewportMaximum=this.maximum;if(this.scaleBreaks)for(b=0;b=this.scaleBreaks._appliedBreaks[b].startValue||!t(this.options.minimum)&&this.options.minimum>=this.scaleBreaks._appliedBreaks[b].startValue||!t(this.options.viewportMinimum)&&this.viewportMinimum>=this.scaleBreaks._appliedBreaks[b].startValue)&&(!t(this.sessionVariables.newViewportMaximum)&&this.sessionVariables.newViewportMaximum<=this.scaleBreaks._appliedBreaks[b].endValue||!t(this.options.maximum)&&this.options.maximum<=this.scaleBreaks._appliedBreaks[b].endValue||\n!t(this.options.viewportMaximum)&&this.viewportMaximum<=this.scaleBreaks._appliedBreaks[b].endValue)){this.scaleBreaks._appliedBreaks.splice(b,1);break}if(\"axisX\"===this.type){if(this.dataSeries&&0f?(b=Math.min(0.01*Math.abs(this.getApparentDifference(f,e,null,!0)),5),0<=f?e=f-b:f=isFinite(e)?e+b:0):(b=Math.min(0.01*Math.abs(this.getApparentDifference(e,f,null,!0)),0.05),0!==f&&(f+=b),0!==e&&(e-=b)),k=Infinity!==this.dataInfo.minDiff?this.dataInfo.minDiff:1f&&(f=0));b=this.getApparentDifference(isNaN(this.viewportMinimum)||null===this.viewportMinimum?e:this.viewportMinimum,isNaN(this.viewportMaximum)||null===this.viewportMaximum?f:this.viewportMaximum,null,!0);if(\"axisX\"===this.type&&c){this.intervalType||(b/1<=a?(this.interval=1,this.intervalType=\"millisecond\"):b/2<=a?(this.interval=2,this.intervalType=\"millisecond\"):b/5<=a?(this.interval=5,this.intervalType=\"millisecond\"):b/10<=a?(this.interval=\n10,this.intervalType=\"millisecond\"):b/20<=a?(this.interval=20,this.intervalType=\"millisecond\"):b/50<=a?(this.interval=50,this.intervalType=\"millisecond\"):b/100<=a?(this.interval=100,this.intervalType=\"millisecond\"):b/200<=a?(this.interval=200,this.intervalType=\"millisecond\"):b/250<=a?(this.interval=250,this.intervalType=\"millisecond\"):b/300<=a?(this.interval=300,this.intervalType=\"millisecond\"):b/400<=a?(this.interval=400,this.intervalType=\"millisecond\"):b/500<=a?(this.interval=500,this.intervalType=\n\"millisecond\"):b/(1*U.secondDuration)<=a?(this.interval=1,this.intervalType=\"second\"):b/(2*U.secondDuration)<=a?(this.interval=2,this.intervalType=\"second\"):b/(5*U.secondDuration)<=a?(this.interval=5,this.intervalType=\"second\"):b/(10*U.secondDuration)<=a?(this.interval=10,this.intervalType=\"second\"):b/(15*U.secondDuration)<=a?(this.interval=15,this.intervalType=\"second\"):b/(20*U.secondDuration)<=a?(this.interval=20,this.intervalType=\"second\"):b/(30*U.secondDuration)<=a?(this.interval=30,this.intervalType=\n\"second\"):b/(1*U.minuteDuration)<=a?(this.interval=1,this.intervalType=\"minute\"):b/(2*U.minuteDuration)<=a?(this.interval=2,this.intervalType=\"minute\"):b/(5*U.minuteDuration)<=a?(this.interval=5,this.intervalType=\"minute\"):b/(10*U.minuteDuration)<=a?(this.interval=10,this.intervalType=\"minute\"):b/(15*U.minuteDuration)<=a?(this.interval=15,this.intervalType=\"minute\"):b/(20*U.minuteDuration)<=a?(this.interval=20,this.intervalType=\"minute\"):b/(30*U.minuteDuration)<=a?(this.interval=30,this.intervalType=\n\"minute\"):b/(1*U.hourDuration)<=a?(this.interval=1,this.intervalType=\"hour\"):b/(2*U.hourDuration)<=a?(this.interval=2,this.intervalType=\"hour\"):b/(3*U.hourDuration)<=a?(this.interval=3,this.intervalType=\"hour\"):b/(6*U.hourDuration)<=a?(this.interval=6,this.intervalType=\"hour\"):b/(1*U.dayDuration)<=a?(this.interval=1,this.intervalType=\"day\"):b/(2*U.dayDuration)<=a?(this.interval=2,this.intervalType=\"day\"):b/(4*U.dayDuration)<=a?(this.interval=4,this.intervalType=\"day\"):b/(1*U.weekDuration)<=a?(this.interval=\n1,this.intervalType=\"week\"):b/(2*U.weekDuration)<=a?(this.interval=2,this.intervalType=\"week\"):b/(3*U.weekDuration)<=a?(this.interval=3,this.intervalType=\"week\"):b/(1*U.monthDuration)<=a?(this.interval=1,this.intervalType=\"month\"):b/(2*U.monthDuration)<=a?(this.interval=2,this.intervalType=\"month\"):b/(3*U.monthDuration)<=a?(this.interval=3,this.intervalType=\"month\"):b/(6*U.monthDuration)<=a?(this.interval=6,this.intervalType=\"month\"):(this.interval=b/(1*U.yearDuration)<=a?1:b/(2*U.yearDuration)<=\na?2:b/(4*U.yearDuration)<=a?4:Math.floor(D.getNiceNumber(b/(a-1),!0)/U.yearDuration),this.intervalType=\"year\"));if(null===this.viewportMinimum||isNaN(this.viewportMinimum))this.viewportMinimum=e-k/2;if(null===this.viewportMaximum||isNaN(this.viewportMaximum))this.viewportMaximum=f+k/2;d?this.autoValueFormatString=\"MMM DD YYYY HH:mm\":\"year\"===this.intervalType?this.autoValueFormatString=\"YYYY\":\"month\"===this.intervalType?this.autoValueFormatString=\"MMM YYYY\":\"week\"===this.intervalType?this.autoValueFormatString=\n\"MMM DD YYYY\":\"day\"===this.intervalType?this.autoValueFormatString=\"MMM DD YYYY\":\"hour\"===this.intervalType?this.autoValueFormatString=\"hh:mm TT\":\"minute\"===this.intervalType?this.autoValueFormatString=\"hh:mm TT\":\"second\"===this.intervalType?this.autoValueFormatString=\"hh:mm:ss TT\":\"millisecond\"===this.intervalType&&(this.autoValueFormatString=\"fff'ms'\");this.valueFormatString||(this.valueFormatString=this.autoValueFormatString)}else{this.intervalType=\"number\";b=D.getNiceNumber(b,!1);this.interval=\nthis.options&&0f?(b=Math.min(0.01*Math.abs(this.getApparentDifference(f,e,null,!0)),5),0<=f?e=f-b:f=isFinite(e)?e+b:0):(b=Math.min(0.01*Math.abs(this.getApparentDifference(e,f,null,!0)),0.05),0!==f&&(f+=b),0!==e&&(e-=b)):(f=\"undefined\"===typeof this.options.interval?\n-Infinity:this.options.interval,e=\"undefined\"!==typeof this.options.interval||isFinite(this.dataInfo.minDiff)?0:Infinity),k=Infinity!==this.dataInfo.minDiff?this.dataInfo.minDiff:1f&&(f=0)),Math.abs(this.getApparentDifference(e,f,null,!0)),\"axisX\"===this.type&&c){this.valueType=\"dateTime\";if(null===this.minimum||isNaN(this.minimum))this.minimum=\ne-k/2;if(null===this.maximum||isNaN(this.maximum))this.maximum=f+k/2}else this.intervalType=this.valueType=\"number\",null===this.minimum&&(this.minimum=\"axisX\"===this.type?e-k/2:Math.floor(e/this.interval)*this.interval,this.minimum=Math.min(this.minimum,null===this.sessionVariables.viewportMinimum||isNaN(this.sessionVariables.viewportMinimum)?Infinity:this.sessionVariables.viewportMinimum)),null===this.maximum&&(this.maximum=\"axisX\"===this.type?f+k/2:Math.ceil(f/this.interval)*this.interval,this.maximum=\nMath.max(this.maximum,null===this.sessionVariables.viewportMaximum||isNaN(this.sessionVariables.viewportMaximum)?-Infinity:this.sessionVariables.viewportMaximum)),0===this.maximum&&0===this.minimum&&(0===this.options.minimum?this.maximum+=10:0===this.options.maximum&&(this.minimum-=10));t(this.sessionVariables.newViewportMinimum)&&(this.viewportMinimum=Math.max(this.viewportMinimum,this.minimum));t(this.sessionVariables.newViewportMaximum)&&(this.viewportMaximum=Math.min(this.viewportMaximum,this.maximum));\nthis.range=this.viewportMaximum-this.viewportMinimum;this.intervalStartPosition=\"axisX\"===this.type&&c?this.getLabelStartPoint(new Date(this.viewportMinimum),this.intervalType,this.interval):Math.floor((this.viewportMinimum+0.2*this.interval)/this.interval)*this.interval;this.valueFormatString||(this.valueFormatString=D.generateValueFormatString(this.range,2))}};D.prototype.calculateLogarithmicAxisParameters=function(){var a=this.chart.layoutManager.getFreeSpace(),d=Math.log(this.logarithmBase),c;\n\"bottom\"===this._position||\"top\"===this._position?(this.maxWidth=a.width,this.maxHeight=a.height):(this.maxWidth=a.height,this.maxHeight=a.width);var a=\"axisX\"===this.type?500>this.maxWidth?7:Math.max(7,Math.floor(this.maxWidth/100)):Math.max(Math.floor(this.maxWidth/50),3),b,e,f,k;k=1;if(null===this.viewportMinimum||isNaN(this.viewportMinimum))this.viewportMinimum=this.minimum;if(null===this.viewportMaximum||isNaN(this.viewportMaximum))this.viewportMaximum=this.maximum;if(this.scaleBreaks)for(k=\n0;k=this.scaleBreaks._appliedBreaks[k].startValue||!t(this.options.minimum)&&this.options.minimum>=this.scaleBreaks._appliedBreaks[k].startValue||!t(this.options.viewportMinimum)&&this.viewportMinimum>=this.scaleBreaks._appliedBreaks[k].startValue)&&(!t(this.sessionVariables.newViewportMaximum)&&this.sessionVariables.newViewportMaximum<=this.scaleBreaks._appliedBreaks[k].endValue||\n!t(this.options.maximum)&&this.options.maximum<=this.scaleBreaks._appliedBreaks[k].endValue||!t(this.options.viewportMaximum)&&this.viewportMaximum<=this.scaleBreaks._appliedBreaks[k].endValue)){this.scaleBreaks._appliedBreaks.splice(k,1);break}\"axisX\"===this.type?(b=null!==this.viewportMinimum?this.viewportMinimum:this.dataInfo.viewPortMin,e=null!==this.viewportMaximum?this.viewportMaximum:this.dataInfo.viewPortMax,1===e/b&&(k=Math.pow(this.logarithmBase,\"undefined\"===typeof this.options.interval?\n0.4:this.options.interval),e*=k,b/=k),f=Infinity!==this.dataInfo.minDiff?this.dataInfo.minDiff:e/b>this.logarithmBase?e/b*Math.pow(this.logarithmBase,0.5):this.logarithmBase):\"axisY\"===this.type&&(b=null!==this.viewportMinimum?this.viewportMinimum:this.dataInfo.viewPortMin,e=null!==this.viewportMaximum?this.viewportMaximum:this.dataInfo.viewPortMax,0>=b&&!isFinite(e)?(e=\"undefined\"===typeof this.options.interval?0:this.options.interval,b=1):0>=b?b=e:isFinite(e)||(e=b),1===b&&1===e?(e*=this.logarithmBase-\n1/this.logarithmBase,b=1):1===e/b?(k=Math.min(e*Math.pow(this.logarithmBase,0.01),Math.pow(this.logarithmBase,5)),e*=k,b/=k):b>e?(k=Math.min(b/e*Math.pow(this.logarithmBase,0.01),Math.pow(this.logarithmBase,5)),1<=e?b=e/k:e=b*k):(k=Math.min(e/b*Math.pow(this.logarithmBase,0.01),Math.pow(this.logarithmBase,0.04)),1!==e&&(e*=k),1!==b&&(b/=k)),f=Infinity!==this.dataInfo.minDiff?this.dataInfo.minDiff:e/b>this.logarithmBase?e/b*Math.pow(this.logarithmBase,0.5):this.logarithmBase,this.includeZero&&(null===\nthis.viewportMinimum||isNaN(this.viewportMinimum))&&1e&&(e=1));k=(isNaN(this.viewportMaximum)||null===this.viewportMaximum?e:this.viewportMaximum)/(isNaN(this.viewportMinimum)||null===this.viewportMinimum?b:this.viewportMinimum);var l=(isNaN(this.viewportMaximum)||null===this.viewportMaximum?e:this.viewportMaximum)-(isNaN(this.viewportMinimum)||null===this.viewportMinimum?b:this.viewportMinimum);this.intervalType=\n\"number\";k=Math.pow(this.logarithmBase,D.getNiceNumber(Math.abs(Math.log(k)/d),!1));this.options&&0this.logarithmBase?e/b*Math.pow(this.logarithmBase,0.5):this.logarithmBase):\"axisY\"===this.type&&(b=null!==this.minimum?\nthis.minimum:this.dataInfo.min,e=null!==this.maximum?this.maximum:this.dataInfo.max,isFinite(b)||isFinite(e)?1===b&&1===e?(e*=this.logarithmBase,b/=this.logarithmBase):1===e/b?(k=Math.pow(this.logarithmBase,this.interval),e*=k,b/=k):b>e?(k=Math.min(0.01*(b/e),5),1<=e?b=e/k:e=b*k):(k=Math.min(e/b*Math.pow(this.logarithmBase,0.01),Math.pow(this.logarithmBase,0.04)),1!==e&&(e*=k),1!==b&&(b/=k)):(e=\"undefined\"===typeof this.options.interval?0:this.options.interval,b=1),f=Infinity!==this.dataInfo.minDiff?\nthis.dataInfo.minDiff:e/b>this.logarithmBase?e/b*Math.pow(this.logarithmBase,0.5):this.logarithmBase,this.includeZero&&(null===this.minimum||isNaN(this.minimum))&&1e&&(e=1)),this.intervalType=\"number\",null===this.minimum&&(this.minimum=\"axisX\"===this.type?b/Math.sqrt(f):Math.pow(this.logarithmBase,this.interval*Math.floor(Math.log(b)/d/this.interval)),this.minimum=Math.min(this.minimum,null===this.sessionVariables.viewportMinimum||\nisNaN(this.sessionVariables.viewportMinimum)?\"undefined\"===typeof this.sessionVariables.newViewportMinimum?Infinity:this.sessionVariables.newViewportMinimum:this.sessionVariables.viewportMinimum)),null===this.maximum&&(this.maximum=\"axisX\"===this.type?e*Math.sqrt(f):Math.pow(this.logarithmBase,this.interval*Math.ceil(Math.log(e)/d/this.interval)),this.maximum=Math.max(this.maximum,null===this.sessionVariables.viewportMaximum||isNaN(this.sessionVariables.viewportMaximum)?\"undefined\"===typeof this.sessionVariables.newViewportMaximum?\n0:this.sessionVariables.newViewportMaximum:this.sessionVariables.viewportMaximum)),1===this.maximum&&1===this.minimum&&(1===this.options.minimum?this.maximum*=this.logarithmBase-1/this.logarithmBase:1===this.options.maximum&&(this.minimum/=this.logarithmBase-1/this.logarithmBase));this.viewportMinimum=Math.max(this.viewportMinimum,this.minimum);this.viewportMaximum=Math.min(this.viewportMaximum,this.maximum);this.viewportMinimum>this.viewportMaximum&&(!this.options.viewportMinimum&&!this.options.minimum||\nthis.options.viewportMaximum||this.options.maximum?this.options.viewportMinimum||this.options.minimum||!this.options.viewportMaximum&&!this.options.maximum||(this.viewportMinimum=this.minimum=(this.options.viewportMaximum||this.options.maximum)/Math.pow(this.logarithmBase,2*Math.ceil(this.interval))):this.viewportMaximum=this.maximum=this.options.viewportMinimum||this.options.minimum);b=Math.pow(this.logarithmBase,Math.floor(Math.log(this.viewportMinimum)/(d*this.interval)+0.2)*this.interval);this.range=\nthis.viewportMaximum/this.viewportMinimum;this.noTicks=a;if(!this.options.interval&&this.rangethis.viewportMaximum||3>a?2:3)){for(d=Math.floor(this.viewportMinimum/c+0.5)*c;dthis.interval&&(this.interval=c,b=Math.pow(this.logarithmBase,Math.floor(Math.log(this.viewportMinimum)/(d*this.interval)+0.2)*this.interval))),\nthis.equidistantInterval=!0,this.intervalStartPosition=b;if(!this.valueFormatString&&(this.valueFormatString=\"#,##0.##\",1>this.viewportMinimum)){d=Math.floor(Math.abs(Math.log(this.viewportMinimum)/Math.LN10))+2;if(isNaN(d)||!isFinite(d))d=2;if(2a&&(b+=Math.floor(Math.abs(Math.log(a)/Math.LN10)),isNaN(b)||!isFinite(b))&&(b=d);for(var e=0;ec?1>=b?1:5>=b?5:10:Math.max(Math.floor(b),1);return-20>c?Number(b*Math.pow(10,c)):Number((b*Math.pow(10,c)).toFixed(20))};D.getNiceNumber=function(a,d){var c=Math.floor(Math.log(a)/Math.LN10),b=a/Math.pow(10,c),b=d?1.5>b?1:3>b?2:7>b?5:10:1>=b?1:2>=b?2:5>=b?5:10;return-20>c?Number(b*Math.pow(10,c)):Number((b*Math.pow(10,c)).toFixed(20))};D.prototype.getLabelStartPoint=function(){var a=U[this.intervalType+\"Duration\"]*this.interval,a=\nnew Date(Math.floor(this.viewportMinimum/a)*a);if(\"millisecond\"!==this.intervalType)if(\"second\"===this.intervalType)0=a||\"bottom\"===this.scaleBreaks.parent._position&&0<=a)this.ctx.lineTo(b,l),this.ctx.lineTo(k,l),this.ctx.lineTo(k,e);else if(\"wavy\"===this.type){m=b;h=e;f=0.5;n=(l-h)/a/3;for(var q=0;q=a||\"right\"===this.scaleBreaks.parent._position&&0<=a)this.ctx.lineTo(k,e),this.ctx.lineTo(k,l),this.ctx.lineTo(b,l);else if(\"wavy\"===this.type){m=b;h=e;f=0.5;n=(k-m)/a/3;for(q=0;q=d.axisY[b].viewportMinimum&&a<=d.axisY[b].viewportMaximum?a:null);else if(\"top\"===this.parent._position)for(b=0;b=d.axisY2[b].viewportMinimum&&a<=d.axisY2[b].viewportMaximum?a:null);else if(\"left\"===this.parent._position)for(b=0;b=d.axisX[b].viewportMinimum&&a<=d.axisX[b].viewportMaximum?a:null);else{if(\"right\"===this.parent._position)for(b=0;b=d.axisX2[b].viewportMinimum&&a<=d.axisX2[b].viewportMaximum?a:null)}else if(\"bottom\"===this.parent._position)for(b=0;b=d.axisX[b].viewportMinimum&&a<=d.axisX[b].viewportMaximum?a:null);else if(\"top\"===\nthis.parent._position)for(b=0;b=d.axisX2[b].viewportMinimum&&a<=d.axisX2[b].viewportMaximum?a:null);else if(\"left\"===this.parent._position)for(b=0;b=d.axisY[b].viewportMinimum&&a<=d.axisY[b].viewportMaximum?a:null);else if(\"right\"===this.parent._position)for(b=0;b=d.axisY2[b].viewportMinimum&&\na<=d.axisY2[b].viewportMaximum?a:null);for(b=0;b=d.axisX[b].viewportMinimum&&a<=d.axisX[b].viewportMaximum)&&(d.axisX[b].showCrosshair(a),d.axisX[b].crosshair._updatedValue=a,this===d.axisX[b].crosshair&&(c=!0));for(b=0;b=d.axisX2[b].viewportMinimum&&a<=d.axisX2[b].viewportMaximum)&&\n(d.axisX2[b].showCrosshair(a),d.axisX2[b].crosshair._updatedValue=a,this===d.axisX2[b].crosshair&&(c=!0));for(b=0;b=d.axisY[b].viewportMinimum&&a<=d.axisY[b].viewportMaximum)&&(d.axisY[b].showCrosshair(a),d.axisY[b].crosshair._updatedValue=a,this===d.axisY[b].crosshair&&(c=!0));for(b=0;b=d.axisY2[b].viewportMinimum&&d._crosshairY2Value<=d.axisY2[b].viewportMaximum)&&(d.axisY2[b].showCrosshair(a),d.axisY2[b].crosshair._updatedValue=a,this===d.axisY2[b].crosshair&&(c=!0));this.chart.toolTip&&this.chart.toolTip._entries&&this.chart.toolTip.highlightObjects(this.chart.toolTip._entries);return c};aa.prototype.hide=function(){this.chart.resetOverlayedCanvas();this.chart.renderCrosshairs(this.parent);this._hidden=!0};aa.prototype.render=function(a,d,c){var b,\ne,f,k,l=null,m=null,h=null,n=\"\";if(!this.valueFormatString)if(\"dateTime\"===this.parent.valueType)this.valueFormatString=this.parent.valueFormatString;else{var r=0,r=\"xySwapped\"===this.chart.plotInfo.axisPlacement?50this.parent.range?2:Math.floor(Math.abs(Math.log(this.parent.range)/Math.LN10))+(5>this.parent.range?2:10>this.parent.range?1:0):50this.parent.range?2:10>this.parent.range?\n1:0);this.valueFormatString=D.generateValueFormatString(this.parent.range,r)}var h=null===this.opacity?1:this.opacity,r=Math.abs(\"pixel\"===this._thicknessType?this.thickness:this.parent.conversionParameters.pixelPerUnit*this.thickness),q=this.chart.overlaidCanvasCtx,g=q.globalAlpha;q.globalAlpha=h;q.beginPath();q.strokeStyle=this.color;q.lineWidth=r;q.save();this.labelFontSize=t(this.options.labelFontSize)?this.parent.labelFontSize:this.labelFontSize;this.labelMaxWidth=t(this.options.labelMaxWidth)?\n0.3*this.chart.width:this.labelMaxWidth;this.labelMaxHeight=t(this.options.labelWrap)||this.labelWrap?0.3*this.chart.height:2*this.labelFontSize;0this.chart.bounds.x2?h.x=this.chart.bounds.x2-h.width:h.xthis.chart.bounds.y2?h.y=this.chart.bounds.y2-h.height:h.ythis.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.measureText().height+h.fontSize/2);\"left\"===this.parent._position?h.x=this.parent.lineCoordinates.x2-h.measureText().width:\"right\"===this.parent._position&&(h.x=this.parent.lineCoordinates.x2)}}else if(\"bottom\"===this.parent._position||\"top\"===this.parent._position){s=\nthis.parent.convertPixelToValue({x:a});for(x=0;xthis.chart.bounds.x2&&(h.x=this.chart.bounds.x2-h.width);h.xthis.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.measureText().height+h.fontSize/2);\"left\"===this.parent._position?h.x=this.parent.lineCoordinates.x2-h.measureText().width:\"right\"===this.parent._position&&(h.x=this.parent.lineCoordinates.x2)}n=\nnull;if(\"bottom\"===this.parent._position||\"top\"===this.parent._position)\"top\"===this.parent._position&&h.y-h.fontSize/2this.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.height+h.fontSize/2+2),b>=this.parent.convertValueToPixel(this.parent.reversed?this.parent.viewportMaximum:this.parent.viewportMinimum)&&e<=this.parent.convertValueToPixel(this.parent.reversed?\nthis.parent.viewportMinimum:this.parent.viewportMaximum)&&(0this.chart.bounds.x2&&(h.x=this.chart.bounds.x2-h.measureText().width),k>=this.parent.convertValueToPixel(this.parent.reversed?\nthis.parent.viewportMinimum:this.parent.viewportMaximum)&&f<=this.parent.convertValueToPixel(this.parent.reversed?this.parent.viewportMaximum:this.parent.viewportMinimum)&&(0this.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.measureText().height+h.fontSize/2);\"left\"===this.parent._position?h.x=this.parent.lineCoordinates.x1-h.measureText().width:\"right\"===this.parent._position&&(h.x=this.parent.lineCoordinates.x2)}else{if(\"bottom\"===this.parent._position||\"top\"===this.parent._position)h.text=this.labelFormatter?\nthis.labelFormatter({chart:this.chart,axis:this.parent.options,crosshair:this.options,value:c?c:this.parent.convertPixelToValue(a)}):t(this.options.label)?Y(c?c:this.parent.convertPixelToValue(a),this.valueFormatString,this.chart._cultureInfo):this.label,h.x=b-h.measureText().width/2,h.x+h.width>this.chart.bounds.x2&&(h.x=this.chart.bounds.x2-h.width),h.xthis.chart.bounds.x2&&(h.x=this.chart.bounds.x2-h.width);h.xthis.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.measureText().height+h.fontSize/2),\"left\"===this.parent._position?h.x=this.parent.lineCoordinates.x2-h.measureText().width:\"right\"===this.parent._position&&(h.x=this.parent.lineCoordinates.x2);\"left\"===this.parent._position&&h.xthis.chart.bounds.x2?h.x=this.chart.bounds.x2-h.measureText().width:\"top\"===this.parent._position&&h.y-h.fontSize/2this.chart.bounds.y2&&(h.y=this.chart.bounds.y2-h.height+h.fontSize/2+2);0(new Date).getTime()-\nthis._lastUpdated||(this._lastUpdated=(new Date).getTime(),this.chart.resetOverlayedCanvas(),this._updateToolTip(a,d))};W.prototype._updateToolTip=function(a,d,c){c=\"undefined\"===typeof c?!0:c;this.container||this._initialize();this.enabled||(this.hide(),this.dispatchEvent(\"hidden\",{chart:this.chart,toolTip:this},this));if(!this.chart.disableToolTip){if(\"undefined\"===typeof a||\"undefined\"===typeof d){if(isNaN(this._prevX)||isNaN(this._prevY))return;a=this._prevX;d=this._prevY}else this._prevX=a,this._prevY=\nd;var b=null,e=null,f=[],k=0;if(this.shared&&this.enabled&&\"none\"!==this.chart.plotInfo.axisPlacement){if(\"xySwapped\"===this.chart.plotInfo.axisPlacement){var l=[];if(this.chart.axisX)for(var m=0;mh.dataSeries.axisY.viewportMaximum&&c++;c-h.dataPoint.y.length&&f.push(h)}else\"column\"===e.type||\"bar\"===e.type?0>h.dataPoint.y?0>h.dataSeries.axisY.viewportMinimum&&h.dataSeries.axisY.viewportMaximum>=h.dataPoint.y&&f.push(h):h.dataSeries.axisY.viewportMinimum<=h.dataPoint.y&&0<=h.dataSeries.axisY.viewportMaximum&&f.push(h):\"bubble\"===e.type?\n(c=this.chart._eventManager.objectMap[e.dataPointIds[h.index]].size/2,h.dataPoint.y>=h.dataSeries.axisY.viewportMinimum-c&&h.dataPoint.y<=h.dataSeries.axisY.viewportMaximum+c&&f.push(h)):\"waterfall\"===e.type?(c=0,h.cumulativeSumYStartValueh.dataSeries.axisY.viewportMaximum&&c++,h.cumulativeSumh.dataSeries.axisY.viewportMaximum&&c++,2>c&&-2=h.dataSeries.axisY.viewportMinimum&&h.dataPoint.y<=h.dataSeries.axisY.viewportMaximum)&&f.push(h);else f.push(h)}}if(0a&&(a+=this.container.clientWidth+20);a+this.container.clientWidth>Math.max(this.chart.container.clientWidth,this.chart.width)&&(a=Math.max(0,Math.max(this.chart.container.clientWidth,this.chart.width)-this.container.clientWidth));d=1!==f.length||this.shared||\"line\"!==f[0].dataSeries.type&&\"stepLine\"!==f[0].dataSeries.type&&\"spline\"!==f[0].dataSeries.type&&\"area\"!==f[0].dataSeries.type&&\"stepArea\"!==f[0].dataSeries.type&&\"splineArea\"!==f[0].dataSeries.type?\"bar\"===\nf[0].dataSeries.type||\"rangeBar\"===f[0].dataSeries.type||\"stackedBar\"===f[0].dataSeries.type||\"stackedBar100\"===f[0].dataSeries.type?f[0].dataSeries.axisX.convertValueToPixel(f[0].dataPoint.x):d:f[0].dataSeries.axisY.convertValueToPixel(f[0].dataPoint.y);d=-d+10;0\",h=this.chart.replaceKeywordsWithValue(h,b,c,e)),null===b.toolTipContent||\"undefined\"===typeof b.toolTipContent&&\nnull===c.options.toolTipContent||(\"line\"===c.type||\"stepLine\"===c.type||\"spline\"===c.type||\"area\"===c.type||\"stepArea\"===c.type||\"splineArea\"===c.type||\"column\"===c.type||\"bar\"===c.type||\"scatter\"===c.type||\"stackedColumn\"===c.type||\"stackedColumn100\"===c.type||\"stackedBar\"===c.type||\"stackedBar100\"===c.type||\"stackedArea\"===c.type||\"stackedArea100\"===c.type||\"waterfall\"===c.type?(this.chart.axisX&&1\":\"X:{axisXIndex}
    \":\n\"\"),f+=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"{name}:  {y}\",m=c.axisXIndex):\"bubble\"===c.type?(this.chart.axisX&&1\":\"X:{axisXIndex}
    \":\"\"),f+=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?\nthis.content:\"{name}:  {y},   {z}\"):\"rangeColumn\"===c.type||\"rangeBar\"===c.type||\"rangeArea\"===c.type||\"rangeSplineArea\"===c.type||\"error\"===c.type?(this.chart.axisX&&1\":\"X:{axisXIndex}
    \":\"\"),f+=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\n\"{name}:  {y[0]}, {y[1]}\"):\"candlestick\"===c.type||\"ohlc\"===c.type?(this.chart.axisX&&1\":\"X:{axisXIndex}
    \":\"\"),f+=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"{name}:
    Open:   {y[0]}
    High:    {y[1]}
    Low:   {y[2]}
    Close:   {y[3]}\"):\n\"boxAndWhisker\"===c.type&&(this.chart.axisX&&1\":\"X:{axisXIndex}
    \":\"\"),f+=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"{name}:
    Minimum:   {y[0]}
    Q1:               {y[1]}
    Q2:               {y[4]}
    Q3:               {y[2]}
    Maximum:  {y[3]}\"),\nnull===d&&(d=\"\"),!0===this.reversed?(d=this.chart.replaceKeywordsWithValue(f,b,c,e)+d,l\"+d)):(d+=this.chart.replaceKeywordsWithValue(f,b,c,e),l\")));null!==d&&(d=h+d)}else{c=a[0].dataSeries;b=a[0].dataPoint;e=a[0].index;if(null===b.toolTipContent||\"undefined\"===typeof b.toolTipContent&&null===c.options.toolTipContent)return null;\"line\"===c.type||\"stepLine\"===c.type||\"spline\"===c.type||\"area\"===c.type||\"stepArea\"===c.type||\"splineArea\"===c.type||\"column\"===\nc.type||\"bar\"===c.type||\"scatter\"===c.type||\"stackedColumn\"===c.type||\"stackedColumn100\"===c.type||\"stackedBar\"===c.type||\"stackedBar100\"===c.type||\"stackedArea\"===c.type||\"stackedArea100\"===c.type||\"waterfall\"===c.type?f=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.label?\"{label}\":\"{x}\")+\":  {y}\":\"bubble\"===c.type?f=b.toolTipContent?\nb.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.label?\"{label}\":\"{x}\")+\":  {y},   {z}\":\"pie\"===c.type||\"doughnut\"===c.type||\"funnel\"===c.type||\"pyramid\"===c.type?f=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.name?\"{name}:  \":b.label?\"{label}:  \":\"\")+\"{y}\":\"rangeColumn\"===c.type||\"rangeBar\"===c.type||\"rangeArea\"===c.type||\"rangeSplineArea\"===c.type||\"error\"===c.type?f=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.label?\"{label}\":\"{x}\")+\" :  {y[0]},  {y[1]}\":\n\"candlestick\"===c.type||\"ohlc\"===c.type?f=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:this.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.label?\"{label}\":\"{x}\")+\"
    Open:   {y[0]}
    High:    {y[1]}
    Low:     {y[2]}
    Close:   {y[3]}\":\"boxAndWhisker\"===c.type&&(f=b.toolTipContent?b.toolTipContent:c.toolTipContent?c.toolTipContent:\nthis.content&&\"function\"!==typeof this.content?this.content:\"\"+(b.label?\"{label}\":\"{x}\")+\"
    Minimum:   {y[0]}
    Q1:               {y[1]}
    Q2:               {y[4]}
    Q3:               {y[2]}
    Maximum:  {y[3]}\");\nnull===d&&(d=\"\");d+=this.chart.replaceKeywordsWithValue(f,b,c,e)}return d};W.prototype.enableAnimation=function(){if(!this.container.style.WebkitTransition){var a=this.getContainerTransition(this.containerTransitionDuration);this.container.style.WebkitTransition=a;this.container.style.MsTransition=a;this.container.style.transition=a;this.container.style.MozTransition=this.mozContainerTransition}};W.prototype.disableAnimation=function(){this.container.style.WebkitTransition&&(this.container.style.WebkitTransition=\n\"\",this.container.style.MozTransition=\"\",this.container.style.MsTransition=\"\",this.container.style.transition=\"\")};W.prototype.hide=function(a){this.container&&(this.container.style.display=\"none\",this.currentSeriesIndex=-1,this._prevY=this._prevX=NaN,(\"undefined\"===typeof a||a)&&this.chart.resetOverlayedCanvas())};W.prototype.show=function(a,d,c){this._updateToolTip(a,d,\"undefined\"===typeof c?!1:c)};W.prototype.showAtIndex=function(a,d){};W.prototype.showAtX=function(a,d){if(!this.enabled)return!1;\nthis.chart.clearedOverlayedCanvas=null;var c,b,e,f=[];e=!1;d=!t(d)&&0<=d&&db.dataSeries.axisX.viewportMaximum||b.dataPoint.yb.dataSeries.axisY.viewportMaximum)e=!0;else{e=!1;break}if(e)return this.hide(),!1;this.highlightObjects(f);this._entries=f;b=\"\";b=this.getToolTipInnerHTML({entries:f});if(null!==b){this.contentDiv.innerHTML=b;b=!1;\"none\"===this.container.style.display&&(b=!0,this.container.style.display=\"block\");try{this.contentDiv.style.background=this.backgroundColor?this.backgroundColor:s?\"rgba(255,255,255,.9)\":\n\"rgb(255,255,255)\",this.borderColor=\"waterfall\"===f[0].dataSeries.type?this.contentDiv.style.borderRightColor=this.contentDiv.style.borderLeftColor=this.contentDiv.style.borderColor=this.options.borderColor?this.options.borderColor:f[0].dataPoint.color?f[0].dataPoint.color:0c&&(c+=this.container.clientWidth+20);c+this.container.clientWidth>Math.max(this.chart.container.clientWidth,this.chart.width)&&(c=Math.max(0,Math.max(this.chart.container.clientWidth,this.chart.width)-this.container.clientWidth));f=1!==f.length||this.shared||\"line\"!==f[0].dataSeries.type&&\"stepLine\"!==f[0].dataSeries.type&&\"spline\"!==f[0].dataSeries.type&&\"area\"!==f[0].dataSeries.type&&\n\"stepArea\"!==f[0].dataSeries.type&&\"splineArea\"!==f[0].dataSeries.type?\"bar\"===f[0].dataSeries.type||\"rangeBar\"===f[0].dataSeries.type||\"stackedBar\"===f[0].dataSeries.type||\"stackedBar100\"===f[0].dataSeries.type?f[0].dataSeries.axisX.convertValueToPixel(f[0].dataPoint.x):f[0].dataSeries.axisY.convertValueToPixel(f[0].dataPoint.y):f[0].dataSeries.axisY.convertValueToPixel(f[0].dataPoint.y);f=-f+10;0b&&a.push(d),d.animationCallback(b),1<=b&&d.onComplete)d.onComplete();this.animations=a;0g;g++)for(var e=0;3>e;e++){for(var f=0,d=0;3>d;d++)f+=a[g][d]*b[d][e];c[g][e]=f}return c}function P(a,b){b.fillStyle=a.fillStyle;b.lineCap=a.lineCap;b.lineJoin=a.lineJoin;b.lineWidth=a.lineWidth;b.miterLimit=a.miterLimit;b.shadowBlur=a.shadowBlur;b.shadowColor=a.shadowColor;b.shadowOffsetX=\na.shadowOffsetX;b.shadowOffsetY=a.shadowOffsetY;b.strokeStyle=a.strokeStyle;b.globalAlpha=a.globalAlpha;b.font=a.font;b.textAlign=a.textAlign;b.textBaseline=a.textBaseline;b.arcScaleX_=a.arcScaleX_;b.arcScaleY_=a.arcScaleY_;b.lineScale_=a.lineScale_}function Q(a){var b=a.indexOf(\"(\",3),c=a.indexOf(\")\",b+1),b=a.substring(b+1,c).split(\",\");if(4!=b.length||\"a\"!=a.charAt(3))b[3]=1;return b}function E(a,b,c){return Math.min(c,Math.max(b,a))}function F(a,b,c){0>c&&c++;16*c?a+6*(b-a)*c:\n1>2*c?b:2>3*c?a+6*(b-a)*(2/3-c):a}function G(a){if(a in H)return H[a];var b,c=1;a=String(a);if(\"#\"==a.charAt(0))b=a;else if(/^rgb/.test(a)){c=Q(a);b=\"#\";for(var g,e=0;3>e;e++)g=-1!=c[e].indexOf(\"%\")?Math.floor(255*(parseFloat(c[e])/100)):+c[e],b+=v[E(g,0,255)];c=+c[3]}else if(/^hsl/.test(a)){e=c=Q(a);b=parseFloat(e[0])/360%360;0>b&&b++;g=E(parseFloat(e[1])/100,0,1);e=E(parseFloat(e[2])/100,0,1);if(0==g)g=e=b=e;else{var f=0.5>e?e*(1+g):e+g-e*g,d=2*e-f;g=F(d,f,b+1/3);e=F(d,f,b);b=F(d,f,b-1/3)}b=\"#\"+\nv[Math.floor(255*g)]+v[Math.floor(255*e)]+v[Math.floor(255*b)];c=c[3]}else b=Z[a]||a;return H[a]={color:b,alpha:c}}function C(a){this.m_=D();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle=\"#000\";this.lineWidth=1;this.lineJoin=\"miter\";this.lineCap=\"butt\";this.miterLimit=1*q;this.globalAlpha=1;this.font=\"10px sans-serif\";this.textAlign=\"left\";this.textBaseline=\"alphabetic\";this.canvas=a;var b=\"width:\"+a.clientWidth+\"px;height:\"+a.clientHeight+\"px;overflow:hidden;position:absolute\",\nc=a.ownerDocument.createElement(\"div\");c.style.cssText=b;a.appendChild(c);b=c.cloneNode(!1);b.style.backgroundColor=\"red\";b.style.filter=\"alpha(opacity=0)\";a.appendChild(b);this.element_=c;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}function R(a,b,c,g){a.currentPath_.push({type:\"bezierCurveTo\",cp1x:b.x,cp1y:b.y,cp2x:c.x,cp2y:c.y,x:g.x,y:g.y});a.currentX_=g.x;a.currentY_=g.y}function S(a,b){var c=G(a.strokeStyle),g=c.color,c=c.alpha*a.globalAlpha,e=a.lineScale_*a.lineWidth;1>e&&(c*=e);b.push(\"')}function T(a,b,c,g){var e=a.fillStyle,f=a.arcScaleX_,d=a.arcScaleY_,k=g.x-c.x,n=g.y-c.y;if(e instanceof w){var h=0,l=g=0,u=0,m=1;if(\"gradient\"==e.type_){h=e.x1_/f;c=e.y1_/d;var p=s(a,e.x0_/f,e.y0_/d),h=s(a,h,c),h=180*Math.atan2(h.x-p.x,h.y-p.y)/Math.PI;0>h&&(h+=360);1E-6>h&&(h=0)}else p=s(a,e.x0_,e.y0_),g=(p.x-c.x)/k,l=(p.y-c.y)/n,k/=f*q,\nn/=d*q,m=x.max(k,n),u=2*e.r0_/m,m=2*e.r1_/m-u;f=e.colors_;f.sort(function(a,b){return a.offset-b.offset});d=f.length;p=f[0].color;c=f[d-1].color;k=f[0].alpha*a.globalAlpha;a=f[d-1].alpha*a.globalAlpha;for(var n=[],r=0;r')}else e instanceof\nI?k&&n&&b.push(\"'):(e=G(a.fillStyle),b.push(''))}function s(a,b,c){a=a.m_;return{x:q*(b*a[0][0]+c*a[1][0]+a[2][0])-r,y:q*(b*a[0][1]+c*a[1][1]+a[2][1])-r}}function z(a,b,c){isFinite(b[0][0])&&(isFinite(b[0][1])&&isFinite(b[1][0])&&isFinite(b[1][1])&&isFinite(b[2][0])&&isFinite(b[2][1]))&&(a.m_=b,c&&(a.lineScale_=aa(ba(b[0][0]*b[1][1]-b[0][1]*\nb[1][0]))))}function w(a){this.type_=a;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}function I(a,b){if(!a||1!=a.nodeType||\"IMG\"!=a.tagName)throw new A(\"TYPE_MISMATCH_ERR\");if(\"complete\"!=a.readyState)throw new A(\"INVALID_STATE_ERR\");switch(b){case \"repeat\":case null:case \"\":this.repetition_=\"repeat\";break;case \"repeat-x\":case \"repeat-y\":case \"no-repeat\":this.repetition_=b;break;default:throw new A(\"SYNTAX_ERR\");}this.src_=a.src;this.width_=a.width;this.height_=a.height}\nfunction A(a){this.code=this[a];this.message=a+\": DOM Exception \"+this.code}var x=Math,k=x.round,J=x.sin,K=x.cos,ba=x.abs,aa=x.sqrt,q=10,r=q/2;navigator.userAgent.match(/MSIE ([\\d.]+)?/);var M=Array.prototype.slice;O(document);var U={init:function(a){a=a||document;a.createElement(\"canvas\");a.attachEvent(\"onreadystatechange\",W(this.init_,this,a))},init_:function(a){a=a.getElementsByTagName(\"canvas\");for(var b=0;bd;d++)for(var B=0;16>B;B++)v[16*d+B]=d.toString(16)+B.toString(16);var Z={aliceblue:\"#F0F8FF\",antiquewhite:\"#FAEBD7\",aquamarine:\"#7FFFD4\",azure:\"#F0FFFF\",beige:\"#F5F5DC\",\nbisque:\"#FFE4C4\",black:\"#000000\",blanchedalmond:\"#FFEBCD\",blueviolet:\"#8A2BE2\",brown:\"#A52A2A\",burlywood:\"#DEB887\",cadetblue:\"#5F9EA0\",chartreuse:\"#7FFF00\",chocolate:\"#D2691E\",coral:\"#FF7F50\",cornflowerblue:\"#6495ED\",cornsilk:\"#FFF8DC\",crimson:\"#DC143C\",cyan:\"#00FFFF\",darkblue:\"#00008B\",darkcyan:\"#008B8B\",darkgoldenrod:\"#B8860B\",darkgray:\"#A9A9A9\",darkgreen:\"#006400\",darkgrey:\"#A9A9A9\",darkkhaki:\"#BDB76B\",darkmagenta:\"#8B008B\",darkolivegreen:\"#556B2F\",darkorange:\"#FF8C00\",darkorchid:\"#9932CC\",darkred:\"#8B0000\",\ndarksalmon:\"#E9967A\",darkseagreen:\"#8FBC8F\",darkslateblue:\"#483D8B\",darkslategray:\"#2F4F4F\",darkslategrey:\"#2F4F4F\",darkturquoise:\"#00CED1\",darkviolet:\"#9400D3\",deeppink:\"#FF1493\",deepskyblue:\"#00BFFF\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1E90FF\",firebrick:\"#B22222\",floralwhite:\"#FFFAF0\",forestgreen:\"#228B22\",gainsboro:\"#DCDCDC\",ghostwhite:\"#F8F8FF\",gold:\"#FFD700\",goldenrod:\"#DAA520\",grey:\"#808080\",greenyellow:\"#ADFF2F\",honeydew:\"#F0FFF0\",hotpink:\"#FF69B4\",indianred:\"#CD5C5C\",indigo:\"#4B0082\",\nivory:\"#FFFFF0\",khaki:\"#F0E68C\",lavender:\"#E6E6FA\",lavenderblush:\"#FFF0F5\",lawngreen:\"#7CFC00\",lemonchiffon:\"#FFFACD\",lightblue:\"#ADD8E6\",lightcoral:\"#F08080\",lightcyan:\"#E0FFFF\",lightgoldenrodyellow:\"#FAFAD2\",lightgreen:\"#90EE90\",lightgrey:\"#D3D3D3\",lightpink:\"#FFB6C1\",lightsalmon:\"#FFA07A\",lightseagreen:\"#20B2AA\",lightskyblue:\"#87CEFA\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#B0C4DE\",lightyellow:\"#FFFFE0\",limegreen:\"#32CD32\",linen:\"#FAF0E6\",magenta:\"#FF00FF\",mediumaquamarine:\"#66CDAA\",\nmediumblue:\"#0000CD\",mediumorchid:\"#BA55D3\",mediumpurple:\"#9370DB\",mediumseagreen:\"#3CB371\",mediumslateblue:\"#7B68EE\",mediumspringgreen:\"#00FA9A\",mediumturquoise:\"#48D1CC\",mediumvioletred:\"#C71585\",midnightblue:\"#191970\",mintcream:\"#F5FFFA\",mistyrose:\"#FFE4E1\",moccasin:\"#FFE4B5\",navajowhite:\"#FFDEAD\",oldlace:\"#FDF5E6\",olivedrab:\"#6B8E23\",orange:\"#FFA500\",orangered:\"#FF4500\",orchid:\"#DA70D6\",palegoldenrod:\"#EEE8AA\",palegreen:\"#98FB98\",paleturquoise:\"#AFEEEE\",palevioletred:\"#DB7093\",papayawhip:\"#FFEFD5\",\npeachpuff:\"#FFDAB9\",peru:\"#CD853F\",pink:\"#FFC0CB\",plum:\"#DDA0DD\",powderblue:\"#B0E0E6\",rosybrown:\"#BC8F8F\",royalblue:\"#4169E1\",saddlebrown:\"#8B4513\",salmon:\"#FA8072\",sandybrown:\"#F4A460\",seagreen:\"#2E8B57\",seashell:\"#FFF5EE\",sienna:\"#A0522D\",skyblue:\"#87CEEB\",slateblue:\"#6A5ACD\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#FFFAFA\",springgreen:\"#00FF7F\",steelblue:\"#4682B4\",tan:\"#D2B48C\",thistle:\"#D8BFD8\",tomato:\"#FF6347\",turquoise:\"#40E0D0\",violet:\"#EE82EE\",wheat:\"#F5DEB3\",whitesmoke:\"#F5F5F5\",yellowgreen:\"#9ACD32\"},\nH={},L={},$={butt:\"flat\",round:\"round\"},d=C.prototype;d.clearRect=function(){this.textMeasureEl_&&(this.textMeasureEl_.removeNode(!0),this.textMeasureEl_=null);this.element_.innerHTML=\"\"};d.beginPath=function(){this.currentPath_=[]};d.moveTo=function(a,b){var c=s(this,a,b);this.currentPath_.push({type:\"moveTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};d.lineTo=function(a,b){var c=s(this,a,b);this.currentPath_.push({type:\"lineTo\",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};d.bezierCurveTo=\nfunction(a,b,c,g,e,f){e=s(this,e,f);a=s(this,a,b);c=s(this,c,g);R(this,a,c,e)};d.quadraticCurveTo=function(a,b,c,g){a=s(this,a,b);c=s(this,c,g);g={x:this.currentX_+2/3*(a.x-this.currentX_),y:this.currentY_+2/3*(a.y-this.currentY_)};R(this,g,{x:g.x+(c.x-this.currentX_)/3,y:g.y+(c.y-this.currentY_)/3},c)};d.arc=function(a,b,c,g,e,f){c*=q;var d=f?\"at\":\"wa\",k=a+K(g)*c-r,n=b+J(g)*c-r;g=a+K(e)*c-r;e=b+J(e)*c-r;k!=g||f||(k+=0.125);a=s(this,a,b);k=s(this,k,n);g=s(this,g,e);this.currentPath_.push({type:d,\nx:a.x,y:a.y,radius:c,xStart:k.x,yStart:k.y,xEnd:g.x,yEnd:g.y})};d.rect=function(a,b,c,g){this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+g);this.lineTo(a,b+g);this.closePath()};d.strokeRect=function(a,b,c,g){var e=this.currentPath_;this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+c,b+g);this.lineTo(a,b+g);this.closePath();this.stroke();this.currentPath_=e};d.fillRect=function(a,b,c,g){var e=this.currentPath_;this.beginPath();this.moveTo(a,b);this.lineTo(a+c,b);this.lineTo(a+\nc,b+g);this.lineTo(a,b+g);this.closePath();this.fill();this.currentPath_=e};d.createLinearGradient=function(a,b,c,g){var e=new w(\"gradient\");e.x0_=a;e.y0_=b;e.x1_=c;e.y1_=g;return e};d.createRadialGradient=function(a,b,c,g,e,f){var d=new w(\"gradientradial\");d.x0_=a;d.y0_=b;d.r0_=c;d.x1_=g;d.y1_=e;d.r1_=f;return d};d.drawImage=function(a,b){var c,g,e,d,r,y,n,h;e=a.runtimeStyle.width;d=a.runtimeStyle.height;a.runtimeStyle.width=\"auto\";a.runtimeStyle.height=\"auto\";var l=a.width,u=a.height;a.runtimeStyle.width=\ne;a.runtimeStyle.height=d;if(3==arguments.length)c=arguments[1],g=arguments[2],r=y=0,n=e=l,h=d=u;else if(5==arguments.length)c=arguments[1],g=arguments[2],e=arguments[3],d=arguments[4],r=y=0,n=l,h=u;else if(9==arguments.length)r=arguments[1],y=arguments[2],n=arguments[3],h=arguments[4],c=arguments[5],g=arguments[6],e=arguments[7],d=arguments[8];else throw Error(\"Invalid number of arguments\");var m=s(this,c,g),p=[];p.push(\" ','\",\"\");this.element_.insertAdjacentHTML(\"BeforeEnd\",p.join(\"\"))};d.stroke=function(a){var b=[];b.push(\"d.x)d.x=f.x;if(null==c.y||f.yd.y)d.y=f.y}}b.push(' \">');a?T(this,b,c,d):S(this,b);b.push(\"\");this.element_.insertAdjacentHTML(\"beforeEnd\",b.join(\"\"))};d.fill=function(){this.stroke(!0)};d.closePath=function(){this.currentPath_.push({type:\"close\"})};d.save=function(){var a=\n{};P(this,a);this.aStack_.push(a);this.mStack_.push(this.m_);this.m_=t(D(),this.m_)};d.restore=function(){this.aStack_.length&&(P(this.aStack_.pop(),this),this.m_=this.mStack_.pop())};d.translate=function(a,b){z(this,t([[1,0,0],[0,1,0],[a,b,1]],this.m_),!1)};d.rotate=function(a){var b=K(a);a=J(a);z(this,t([[b,a,0],[-a,b,0],[0,0,1]],this.m_),!1)};d.scale=function(a,b){this.arcScaleX_*=a;this.arcScaleY_*=b;z(this,t([[a,0,0],[0,b,0],[0,0,1]],this.m_),!0)};d.transform=function(a,b,c,d,e,f){z(this,t([[a,\nb,0],[c,d,0],[e,f,1]],this.m_),!0)};d.setTransform=function(a,b,c,d,e,f){z(this,[[a,b,0],[c,d,0],[e,f,1]],!0)};d.drawText_=function(a,b,c,d,e){var f=this.m_;d=0;var r=1E3,t=0,n=[],h;h=this.font;if(L[h])h=L[h];else{var l=document.createElement(\"div\").style;try{l.font=h}catch(u){}h=L[h]={style:l.fontStyle||\"normal\",variant:l.fontVariant||\"normal\",weight:l.fontWeight||\"normal\",size:l.fontSize||10,family:l.fontFamily||\"sans-serif\"}}var l=h,m=this.element_;h={};for(var p in l)h[p]=l[p];p=parseFloat(m.currentStyle.fontSize);\nm=parseFloat(l.size);\"number\"==typeof l.size?h.size=l.size:-1!=l.size.indexOf(\"px\")?h.size=m:-1!=l.size.indexOf(\"em\")?h.size=p*m:-1!=l.size.indexOf(\"%\")?h.size=p/100*m:-1!=l.size.indexOf(\"pt\")?h.size=m/0.75:h.size=p;h.size*=0.981;p=h.style+\" \"+h.variant+\" \"+h.weight+\" \"+h.size+\"px \"+h.family;m=this.element_.currentStyle;l=this.textAlign.toLowerCase();switch(l){case \"left\":case \"center\":case \"right\":break;case \"end\":l=\"ltr\"==m.direction?\"right\":\"left\";break;case \"start\":l=\"rtl\"==m.direction?\"right\":\n\"left\";break;default:l=\"left\"}switch(this.textBaseline){case \"hanging\":case \"top\":t=h.size/1.75;break;case \"middle\":break;default:case null:case \"alphabetic\":case \"ideographic\":case \"bottom\":t=-h.size/2.25}switch(l){case \"right\":d=1E3;r=0.05;break;case \"center\":d=r=500}b=s(this,b+0,c+t);n.push('');e?S(this,n):T(this,n,{x:-d,y:0},\n{x:r,y:h.size});e=f[0][0].toFixed(3)+\",\"+f[1][0].toFixed(3)+\",\"+f[0][1].toFixed(3)+\",\"+f[1][1].toFixed(3)+\",0,0\";b=k(b.x/q)+\",\"+k(b.y/q);n.push('','','');this.element_.insertAdjacentHTML(\"beforeEnd\",n.join(\"\"))};d.fillText=function(a,b,c,d){this.drawText_(a,b,c,d,!1)};d.strokeText=function(a,\nb,c,d){this.drawText_(a,b,c,d,!0)};d.measureText=function(a){this.textMeasureEl_||(this.element_.insertAdjacentHTML(\"beforeEnd\",''),this.textMeasureEl_=this.element_.lastChild);var b=this.element_.ownerDocument;this.textMeasureEl_.innerHTML=\"\";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(b.createTextNode(a));return{width:this.textMeasureEl_.offsetWidth}};d.clip=function(){};\nd.arcTo=function(){};d.createPattern=function(a,b){return new I(a,b)};w.prototype.addColorStop=function(a,b){b=G(b);this.colors_.push({offset:a,color:b.color,alpha:b.alpha})};d=A.prototype=Error();d.INDEX_SIZE_ERR=1;d.DOMSTRING_SIZE_ERR=2;d.HIERARCHY_REQUEST_ERR=3;d.WRONG_DOCUMENT_ERR=4;d.INVALID_CHARACTER_ERR=5;d.NO_DATA_ALLOWED_ERR=6;d.NO_MODIFICATION_ALLOWED_ERR=7;d.NOT_FOUND_ERR=8;d.NOT_SUPPORTED_ERR=9;d.INUSE_ATTRIBUTE_ERR=10;d.INVALID_STATE_ERR=11;d.SYNTAX_ERR=12;d.INVALID_MODIFICATION_ERR=\n13;d.NAMESPACE_ERR=14;d.INVALID_ACCESS_ERR=15;d.VALIDATION_ERR=16;d.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=U;CanvasRenderingContext2D=C;CanvasGradient=w;CanvasPattern=I;DOMException=A}();\n/*eslint-enable*/\n/*jshint ignore:end*/"],"sourceRoot":""}