{"version":3,"sources":["images/clarity.png","signalr/connection.js","store/HistoricalData.js","store/HistoricalRecordSearchStore.js","store/TestDefinitions.js","store/TestLogs.js","store/TestLogsSampleData.js","api/GetScraperDetails.js","store/ScraperDetailStore.js","store/SubscriptionStore.js","store/NotificationStore.js","api/GetJurisdictions.js","helpers/post.js","store/JurisdictionStore.js","store/CaseTrackingStore.js","store/SourceStatusStore.js","store/SourceFeedbackStore.js","helpers/sort.js","store/ScraperDefinitionModels.js","contexts/uiContext.js","components/charts/ScraperOverTimeChart.js","helpers/getGradientColor.js","helpers/stateNames.js","styles/progress.js","components/charts/ScraperByState.jsx","components/pages/MapUsaPage.js","components/NavigationItems.js","components/Layout.js","registerServiceWorker.js","index.js","store/configureStore.js","App.js"],"names":["module","exports","signalR","require","connection","HubConnectionBuilder","withUrl","build","sleep","ms","Promise","resolve","setTimeout","onclose","Object","asyncToGenerator","regenerator_default","a","mark","_callee","wrap","_context","prev","next","start","stop","connectionPromise","then","userSettings","JSON","parse","localStorage","getItem","invoke","ossIdSubs","filter","ossIds","keys","key","length","console","log","concat","initialState","historicalData","isLoading","reducer","state","action","type","objectSpread","existingHistoricalData","modifiedItem","i","ossId","modifiedValues","courtUid","updateInterval","historicalRecordSearchData","usaStates","scrapers","sourceTypes","testDefinitions","testLogs","testLogsSampleData","caseTypesReportData","isLoadingCaseTypesData","getScraperDetails","Connection","c","getStateDetails","stateAbbreviation","getCaseAndChargeCounts","getSourceCaseTypeInfo","getSourceCaseTypeInfosAggregateBySource","getSourceSymptomsInfo","addMonitoringOrders","orders","Orders","forceUpdateMonitoringOrder","personId","PersonId","scraperConfigModel","scraperDetailDataItems","sourceDateTimeDataPoints","stateDateTimeDataPoints","stateDateTimeDataPointsCourts","stateDateTimeDataPointsArrests","sourceCaseTypeInfo","sourceCaseTypeInfoAll","sourceCaseTypeInfoAllByFips","sourceCaseTypeMessagesAll","sourceCaseTypeMessages","sourceCaseTypeInfoAggregateBySource","sourceCaseTypeInfoAggregateBySourceAll","sourceCaseAndChargeCounts","sourceCaseAndChargeCountsAll","sourceSymptomsInfoAll","sourceSymptomsInfo","actionCreators","requestCaseAndChargeCounts","_ref","dispatch","getState","errorMessage","data","catch","ex","_x","_x2","apply","this","arguments","requestStateDetail","_ref2","_callee2","_context2","_x3","_x4","requestScraperDetail","_ref3","_callee3","_context3","_x5","_x6","requestSourceCaseTypeInfos","_ref4","_callee4","_context4","sourceCaseTypeInfos","messages","sourceCaseTypeInfosByFips","_x7","_x8","requestSourceCaseTypeInfosAggregateBySource","_ref5","_callee5","_context5","_x9","_x10","requestSourceSymptomsInfos","_ref6","_callee6","_context6","sourceSymptomsInfos","sourceSymptomsMessages","sourceSymptomsMessagesAll","_x11","_x12","_ref7","_callee7","_context7","_x13","_x14","_ref8","_callee8","_context8","_x15","_x16","setItem","stringify","all","content","category","time","Date","now","toString","getJurisdictions","url","fetch","method","mode","cache","credentials","headers","Content-Type","redirect","referrer","body","response","status","Error","json","Post","requestJurisdictions","jurisdictions","abrupt","GetJurisdictions","caseTrackingData","unservedCaseTrackingRequests","unservedCaseTrackingRequestsAll","twoPartSearchOrdersAll","missingExpectedResults","sourceStatuses","sourceFeedback","sourceFeedbackMessageMap","sortAscending","propName","b","allNonSdms","withCaseTracking","withoutCaseTracking","withMonitoring","withoutMonitoring","withNameSearch","withoutNameSearch","withTwoPartSearch","withoutTwoPartSearch","requestSdms","courts","sexOffenderRegistries","arrests","scraperDefinitionModels","sent","sort","item","dataSourceType","requestNonSdms","React","createContext","connect","scraperDetail","scraperDetailActionCreators","propsFromState","propsFromDispatch","ownProps","Component","constructor","props","super","classes","makeStyles","theme","progress","margin","spacing","marginLeft","marginRight","display","chartRef","createRef","updateChart","bind","chart","groupBy","xs","reduce","rv","x","push","getGroups","propertyName","grouped","map","scraperOverTimeChartRef","current","getContext","d","slice","y","z","Array","draw","destroy","Chart","datasets","label","backgroundColor","options","animation","scales","bounds","ticks","source","xAxes","unit","unitStepSize","displayFormats","day","updateHandlers","componentWillUnmount","componentDidUpdate","prevProps","prevState","showDetailPane","componentDidMount","render","react_default","createElement","style","paddingLeft","paddingRight","id","ref","CircularProgress","className","getGradientColor","start_color","end_color","percent","replace","start_red","parseInt","substr","start_green","start_blue","diff_red","diff_green","diff_blue","split","stateNames","AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA","WV","WI","WY","useStyles","typography","padding","secondaryColor","color","palette","secondary","main","sourceDetailActionCreators","useTheme","otherClasses","numberWithCommas","cleanName","str","indexOf","privileged","advanced","sessionStorage","switchContainerClass","justifyContent","flexWrap","fromDbSelectedFilter","_React$useState","useState","_React$useState2","slicedToArray","selectedFilter","setSelectedFilter","_useState","_useState2","depth","setDepth","_useState3","_useState4","combinedPopulationCoverage","setCombinedPopulationCoverage","_useState5","_useState6","combinedPopulationCoveragePercentage","setCombinedPopulationCoveragePercentage","_useState7","_useState8","courtPopulationCoverage","setCourtPopulationCoverage","_useState9","_useState10","courtPopulationCoveragePercentage","setCourtPopulationCoveragePercentage","_useState11","_useState12","setArrestPopulationCoverage","_useState13","_useState14","setArrestPopulationCoveragePercentage","_useState15","_useState16","_useState17","_useState18","_useState19","_useState20","statisticsTitle","setStatisticsTitle","_useState21","_useState22","totalPopulation","setTotalPopulation","_useState23","_useState24","totalNumJurisdictions","setTotalNumJurisdictions","_useState25","_useState26","totalNumCoveredJurisdictions","setTotalNumCoveredJurisdictions","_useState27","_useState28","numCoveredJurisdictionsPercentage","setNumCoveredJurisdictionsPercentage","_useState29","_useState30","missingJurisdictions","setMissingJurisdictions","_useState31","_useState32","supportedJurisdictions","setSupportedJurisdictions","_useState33","_useState34","supportedCourtTypes","setSupportedCourtTypes","_useState35","_useState36","supportedSourcesLocation","setSupportedSourcesLocation","supportedLocationIsState","_useState37","_useState38","currentState","setCurrentState","_useState39","_useState40","showProportionalToJurisdictions","_useState41","_useState42","showProportionalToPopulation","_useState43","_useState44","showSetupToSaveInHistoricalDB","setShowSetupToSaveInHistoricalDB","onSwitchChange","event","target","renderMap","context","useContext","UIContext","countyOnClick","jurisdiction","args","sdms","forEach","isArray","courtUidsBasedOnFips","k","fips","calculateSupportFunc","toUpperCase","theColors","window","elevation","index","theColor","GetGradientColor","renderState","itemName","theSelectedFilter","stateMapId","usaDrilldownConfig","shapes","name","combinedPopulationSupported","combinedNumCoveredJurisdictions","courtPopulationSupported","courtNumCoveredJurisdictions","arrestPopulationSupported","arrestNumCoveredJurisdictions","populationSupported","statewidePopulation","localMissingJurisdictions","localSupportedJurisdictions","objectOfCounties","counties","zingchart","maps","totalNoJurisdictions","entries","value","countyName","tooltip","text","j","county","toLowerCase","includes","support","isIlCook","jurisdictionPopulation","background-color","combinedSupport","courtSupport","arrestSupport","numCoveredJurisdictions","totalJurisdictionCoveredPercentage","parseFloat","Math","round","oneHundredPercentCoverage","items","stateName","usaState","numCourts","numArrests","numRegistries","header","float","setDetailHeader","openDetailPane","stateOnClick","exec","gui","contextMenu","button","visible","gear","zooming","panning","scrolling","controls","cursor","hoverState","alpha","borderColor","borderRadius","fontColor","fontFamily","fontSize","textAlpha","height","width","styles","filterBar","marginBottom","formGroup","sourceTypeMap","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","42","43","49","50","51","54","59","69","75","92","listOfStates","digitAtPos","number","pos","trunc","pow","computeCourtTypes","stateJurisdictions","theData","supportedList","notSupportedList","withSaveToDB","withoutSaveToDB","scraperName","s","setupToSaveInHistoricalDB","ossidCourtUidMap","prop","oid","firstDigit","secondDigit","combination","sourceType","undefined","uniqueFips","supportedPopulation","accum","isStateWide","sj","fraction","supportedLength","l","denominator","ceil","floor","renderUsa","c2","document","getElementById","noCoverageLabel","ctx","grd","createLinearGradient","addColorStop","innerText","fillStyle","fillRect","theState","objectOfStates","itemId","cacheKey","removeItem","auxCache","precomputedArgs","globalArrestPopulationSupported","globalCombinedPopulationSupported","globalCourtPopulationSupported","globalTotalNumCoveredJurisdictions","globalMissingJurisdictions","globalSupportedJurisdictions","Map","values","numSupported","courtSupported","usaConfig","fillType","rebindChart","unbind","e","String","shapeid","showMissingOpen","handleShowMissing","showSupportedOpen","handleShowSupported","setPageTitle","drillDownCountries","curVal","hasStateDrilldownData","selectedJurisdiction","newLocation","_React$useState3","_React$useState4","showMissingAnchorEl","setShowMissingAnchorEl","currentTarget","Boolean","showMissingId","_React$useState5","_React$useState6","showSupportedAnchorEl","setShowSupportedAnchorEl","showSupportedId","_React$useState7","_React$useState8","useEffect","loadModules","acc","textAlign","Grid","react","fontWeight","paddingTop","title","FormGroup","row","FormControlLabel","control","Switch","checked","onChange","Button","aria-describedby","variant","onClick","Popper","open","anchorEl","transition","modifiers","flip","enabled","preventOverflow","boundariesElement","TransitionProps","Fade","assign","timeout","Paper","maxHeight","overflow","Typography","component","noWrap","marginTop","maxWidth","elevation2","paddingBottom","jurisdictionActionCreators","sdmActionCreators","progressClass","pageTitle","match","params","charts_ScraperByState","switchWrapper","switchLabel","flexGrow","switch","flexShrink","popper","active","selected","topSection","bottomSection","alignItems","flexDirection","container","flex","selectedIcon","MainListItems","notificationAnchorEl","notificationPopperOpen","notificationPopperId","setSelected","moreNoDataAnchorEl","setMoreNoDataAnchorEl","moreNoDataPopperOpen","moreNoDataPopperId","moreCaseTypesAnchorEl","setMoreCaseTypesAnchorEl","moreCaseTypesPopperOpen","moreCaseTypesPopperId","_React$useState9","_React$useState10","moreTestsAnchorEl","setMoreTestsAnchorEl","moreTestsPopperOpen","moreTestsPopperId","_React$useState11","_React$useState12","settingsAnchorEl","settingsPopperOpen","settingsPopperId","onNavigationItemClick","selectedItem","_React$useState13","_React$useState14","monitoringConnection","setMonitoringConnection","clsx","placement","Divider","ListItem","Link","to","ListItemIcon","TrendingDown_default","ListItemText","primary","SportsKabaddi_default","Traffic_default","Book_default","Description_default","Warning_default","Explicit_default","Fingerprint_default","Terrain_default","Block_default","Dashboard_default","Map_default","LocalHospitalOutlined_default","GroupWorkOutlined_default","HighlightOff_default","ErrorOutline_default","MoreHoriz_default","FolderOpen_default","EventAvailable_default","Filter2_default","Pets_default","TextField","select","textField","newValue","SelectProps","native","MenuProps","menu","helperText","bodyItem","bottomAppBar","top","bottom","zIndex","boxShadow","fabButton","position","left","right","root","toolbar","hidden","reverse","transform","toolbarIcon","mixins","minHeight","rightToolbarIcon","appBar","drawer","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","menuButton","menuButtonHidden","drawerPaper","whiteSpace","drawerPaperRight","drawerWidth","drawerLeftRoot","ul","drawerRightRoot","drawrRightRootOpen","drawerPaperClose","overflowX","drawerRightPaperClose","[object Object]","breakpoints","up","appBarSpacer","paper","grow","list","subheader","background","clarityImage","leftList","rightSidebarIcon","withRouter","setAnchorEl","loginAnchorEl","setLoginAnchorEl","handleLoginClose","loginOpen","loginId","fromDbLeftSidebarOpen","leftSidebarOpen","setLeftSidebarOpen","setRightSidebarOpen","setDetailDrawerHeaderSection","setDetailDrawerBodySection","persistSidebarOpen","usernameValue","setUsernameValue","passwordValue","setPasswordValue","uiContext","Provider","setDetailBody","newPageTitle","CssBaseline","AppBar","Toolbar","IconButton","edge","aria-label","Menu_default","Popover","onClose","anchorOrigin","vertical","horizontal","transformOrigin","lineHeight","location","pathname","reload","sender","Drawer","ChevronLeft_default","List","toLocaleDateString","Container","children","isLocalhost","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","error","createMuiTheme","blue","join","overrides","MuiCircularProgress","setInterval","pageSizeSelector","querySelectorAll","pageSize","innerHTML","heading","offsetHeight","setAttribute","parentElement","offsetWidth","nextSibling","baseUrl","getElementsByTagName","getAttribute","history","createBrowserHistory","basename","store","reducers","HistoricalData","historicalRecordSearchReducer","HistoricalRecordSearchStore","TestDefinitions","TestLogs","testLogsSampleDataReducer","TestLogsSampleData","ScraperDetail","ScraperDefinitionModels","subscriptions","Subscriptions","notifications","NotificationStore","JurisdictionStore","caseTracking","CaseTrackingStore","sourceStatus","SourceStatusStore","SourceFeedbackStore","middleware","thunk","routerMiddleware","enhancers","rootReducer","combineReducers","routing","routerReducer","createStore","compose","applyMiddleware","configureStore","initialReduxState","rootElement","listen","ReactDOM","ThemeProvider","es","react_router_redux_es","useUtils_cfb96ac9","utils","MomentUtils","p","Layout","Route","path","pages_MapUsaPage","exact","react_toastify","URL","process","origin","addEventListener","get","ready","unregister","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.b164ec3a.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABWCAYAAADhecDRAAAbiklEQVR4Xu1dB3iUVdZ+zzdphIRQEqmBgEjvUQgQMLSVusAKqKtrd+2uLKvo2lBxLbhrx/5b1rKCitKsQBAJNfROKNIiNYRAIMnMd//n3JgYIJP5ZtJmvjn3eXwU55Zz3nOZd+495RKkCQKCwFkIJCa+GRrSuEFdQxl1yGWcznOYh9NnjcgVmAQBQeBsBEgAEQQEAY0AJY2a0SxEhfQ1iHoA6EJktIZSRwCsMqGWw2n+lJuZuT49/dYCwUwQEAQAIRDZBUGNQELKgohmtXNHK1J3E9AdIIc7QJSCAtReMow3zzgL3l02c+TBoAZPlA96BIRAgn4LBBcAPcd+Wzc039lGkdGZoAaAVD8C1fUaBYU8RVhGUPOcylih8tWmtLkr9gKTTK/nkgGCQIAiIAQSoIYTsb1AYOw0R3J+ZD8y1BWGMvqAVKwC6hDI8GKWUrvyqYSITkGpwybUDijzs9xTZ6an/zguu7xzy3hBwN8REALxdwuJfF4jkJKyIMKMyY5zISTBQcY4kLqCgDivJ/JxgAIKSGEOTPVJgWGsyjsZeiT9x0FCKD7iKcP8FwEhEP+1jUjmJQLJw2d1NkKNZAKSANVVAW0r4pThpRhnd1fYp5Raq4DlZJo/nwItlYiuciEqg/0IASEQPzKGiOI9An2GzI1DuOsGgO40iJp6P0MVj2DfCdTHTtAraV8NW1PFq8tygkCFIiAEUqFwymSVi4Ci3sNnxZOh2hE5uhNhIIiSCAit3HUrfnYd0UVqK0yaZxpqoZmPzccjc7dtmj4uv+JXkxkFgcpBQAikcnCVWSsQgS4pM2pHR4eNIkONAVE7kIqDoppE9ghDV1D5UDgCoj0w1WzTiU9/njN8ZwVCKFMJApWCgBBIpcAqk5YDAUocOK1WeFRUbAiZnZWJq8igywiILsecgTVUwQmFlSbRZzAL5rvOuH5Ny193DKmTnIGliEhrdwSEQOxu4QDRr8eQubUiwtHbVGZ/IupGhNYKqmG1O8GrGT+lcIKAbQpqHQg/5Z0x5i37Zui+ahZLlhcENAJCILIRqhWBXqNndwgB7oLCOCKqU63CBMDihdddlAplvHRke86PmzaJzyQAzGZbEYVAbGta/1MsIeW9iCZ1YlvDRDeDHElEqi8UWoIQ4n/S+rdEOoER6pAC/awUFisyV6OA1v48Z3iWf0su0tkJASEQO1nTT3XpNWruhSHKvBKEYUQUDyBWKYTbxQle7bArOBUhC1AHlUk/my7j48U1cpZg+jhXtcsmAtgaASEQW5u3OpSb5ug5vEYDgxzxDsO8FERjiFTXsooUVoeUdl9TKewFYQaUOccJx45DediX8c3QPLvrLfpVLQJCIFWLt21XSxwxK7aGwxhEhP6kVEciagMgxrYKB4hi7DMhGNsBczNAi5xO17zFs/64MUDEFzH9HAEhED83kL+L13v0nEGGwp0GYaS/yyryFSKgoLbApBcLwup8uGR6r9OCiyDgKwJCIL4iF4TjEgf+EFMzMr+zMlQ3AiUDuJQIsUEIhS1UVkA+KZUGYJFLqRUGXGt++nrUXlsoJ0pUCQJCIFUCc2Av0mfUrO4EuooIgxSMOIKqB8Dtw0uBrW3wSV9Ykh4noOgwlLnGhPosdx/mpqfLM77Btxu801gIxDu8bN+759i0GlRwvJGhzOZENISgRhNRc9srLgqehQAnMCpgjlLmbNNJ6wxgv4QIyyY5FwEhENkTGoHExDdDa8Y3uoNIX021hSLOzwgXeIIbAQVlQhFnvm8BX3PlG2+kSiZ8cG+KEtoLgchW0AgkD5tdxxFGxwQOQaAsBEyFMYu+GvaFoCQIMAJCILIPhEBkD1hGQAjEMlRB0VEIJCjM7FlJOYF4xkh6AEIgsgtKIiAEIvtBTiCyBywjIARiGaqg6CgEEhRm9qykv55AYqJDcfnw34PA/u/TbZ6V8cMedWuHY9SQZlqyXw+dxtx5gZluIQTih5urGkUSAqlG8P1p6YogkNAQA7VjwtCvd0PUrROO5k2jERkRgpyTBdi9Nwe7957Elh3ZyPw1FwVO05L6TRvXxIevXFrcN+VPcy2N87dOLRNq4Z3/cIAbsGbjMdz7yFK3IoaFGTCo8K/mmTz/qocoBOJvO6t65RECqV78/Wb18hAIk0bfpAboefEF6NS2LmpGuq/Onl9gIn3dESxaelD/++DhsitpBCOBPDkxES2aFj7AOP6xpTh05Izf7BMhEL8xhV8IIgTiF2aofiF8JZCuHerh7pvaoVmTKDgc1rcTn0Bycgrw4L9WYuuObLcABCOBvPlcb7RuWViH8uo7UrH/19zq3yC/SSAE4jem8AtBrP+N9wtxRYjKQsBbAnEYpO/0b7+uLUJCCrfRsaw87PglB9/O34ede07oL778fFN/Ht8oCp3a1UVy9/po1aIWYmqF6TGHj57BC29tQNqKQ6WqZhcCiW9UE49N6Kp1ZMKcMnW9W1MKgVTWLpd5KxoBIZCKRjRA5/OGQNjXcd24lhg1NAFRkSFwuRTmLTqA6bN3Yfeek2X6N3hsu9a1cc3lLZHYKRaGAWTnFGDyC6uxYs2R89CzC4GwntE1Q7V+TpfCqVynEEiA/l0RsX9HQAhEdoNGwBsCGXlZU4y/tYMe5zIVps/ahbf+uwWmNb+4HhcWamDyA4m4uHOcJpF9madwz8NL9SmmZLMLgXizzeQE4g1a0rc6ERACqU70/WhtqwTS9qLamPSPrqgfVwOnz7jw4fTtmDZzlz6FeNv4NPLAPZ3Qr1cjuEwTb3+0Vc8lBCI+EG/3kvSvHgSEQKoHd79b1SqB8Kmh9yX1wVGm36Xux5Sp6+B0ek8eRQBc1KIWnrw/EWs3HcM7H2/VPhEhECEQv/sLIgKVioAQiGwMy1dY7VvXxmtP99L9Ofz2gadWYNeek+VGsMEFNXRyXWmtPFdY0VGhaNm8FprHR6FNy9po2iQK4WEGlAIOHzuDzduOY+3GY9i2M7tMn0SRXOz4H/GHpvqPG7dkYfWGo8UiM6E2ahAJzvdoeEEkGjaI1ITIOTDc6sSEYdigwrGHDp/G9wv3F4+NqhmCUUMSiv/MV4Rx9SL0n/lEduK3OYo6zFu0H5kHT6NGhAOX9myI2HoRyM0twNx5+3zOG2Gc+/ZsqJdYs+EoNmzJKtUeEoVV7u1uqwmEQGxlTt+V8XQC4RDdp/95Mbp3jdOL/O+rnXjjwy2+L2hxpC8Ewv6VIQPicWnPBmh1YYx29Ltr7MzesDUL7368Fdt2nihTquZNo/Dei311n4+/3KGv3LgxKf1lTEv07t4ALC9jxb6cW+9fXHyiKiuRsHGDSHw8NcUiIsD9T67A8tWHwVeA429tj6ED4vUpkAl95drzAxGsTPzQvV0wqG8j3fXauxdiz/5TQiBWgAvyPkIgQb4BitT3RCCcVf7C4z10pjknA4687gftA6ns5i2B8JXYP27rqPMo2MGfm+vUp5sFaZnIPJiL49n5+lTCvpzO7euiTky4duLn5Zu474nlWLfJfUX70gjkgtgI/OfxHmjSsKaGgtfk0GW+irv30d+DAsoiEPYnvfRkUjGUnMXPJMiN5znXv/T0K2v1yYnbJV1iMeXR7vq/WXZe05tgBh7Hsr/8VBK43MqS9EN48KmVbs0qJ5DK3vGBNb8QSGDZq9Kk9UQgl6U0xoTbOoLLbHDOxj+fdv8lU5FCekMgfI107diLcO24lsg6no/vUvdhafohbNp6XH+xn9uYSC4floAByY20Xhm7TmDi5BU4ek4kWNG4cwlk1nd78OiErmjXqrYmIM6s5+sfvt7jL/4tGceLv8y9KWXiTRQWn3befj4ZLZoVZq7f/dASrN9c+vWTO7twPs+dN7Tlp6PwzKtrMf/nTCGQitzENp5LCMTGxvVGtbIIhH+h//UvbXDFH1to5zlfXfEVVlU0bwiE5eGM+CtHtcBHn2fok0dpxFFSbr7eemRCV/ToGqd9I//9PAPuCjaeSyBQwFWjL8SRY2fAp4It24+7PZVVFoGwLh3b1sErT/XUavGX/xP/WW3ZNExAj4zvgpReDbFjdw4efnal9q+4a3ICsQxtUHQUAgkKM3tWsiwC4esUzvsY0r+Jvk55+Jl0fdVRFc1bAvFFptYXxuClyUmICHdoJ/Sfb0/FseNn56PwvCUJZNnqw+jcrq4+tTz+79XnRY+dd9rxopiiNycQXodPTy8+kaRPQkyaDz+bruWy0mLrhmu/DgccfP3dHrz09oYyr8CEQKygGjx9hECCx9ZlaloWgXC0DztZuQwJRxXxF1TRHXxlw1cVBMI68C94/iXPbdLzq5Ca9ut5qpUkEP6QI9Aee34V9uzzHIlWmScQluWKkc31KZFPRa+9vxlfztltyTQ3/7kVrhnTUve944E0bNp2vMxxQiCWYA2aTkIgQWPqshUti0C4ui5XiO3WsR6yT+RrAvH2nt1XmKuKQG68spX2nXDja6x3Pzn/3ZFzCYSjsDgay0qrbAJJiI/CC08k6XDhrRnZOgLMU+OT5Yz3BurqyZu3H8ftE9M8DZEXCT0iFFwdhECCy95utS2LQDhM9f67Omln88lcJx5+eqV+06IqWlURCJejf+L+bpYJhK+4bhy/SEd1WWmVTSDsp3pkfFf9Fgu3vz+2DKvW/56nUpqMfCU58a5O+lry0SmrsHj5QY+qyAnEI0RB1UEIJKjM7V5Zqz4QdjTzCcTKl01FQFsRBMLRVlx2vqhqMEcb7dqbo53eXMiRW1JiHJ556BLLBMInMI54stoqm0BYjob1a+DT1/tpkTydQthv8sR9iVrvnb/kYPxjy/Tp0lMTAvGEUHB9LgQSXPb26QTCg64d2xLXX9FK50z4cxQWy8pXM1061EOfHvUxsG9jnbHtrv16+DTWbTyG7Jx8jB1R+HSulSssfyQQlp1LxvMphMOKJz653O1JsU3LGEx+4GLUqxOOT2fs0Fd2niLWeH4hEPnCKImAEIjsB42ApzwQdqCzI52/jPlqhK9IqqJ5ewLhpLy7bmyHizvHaln5S3H1+sLSHBxue+DXXPYz6xf/2G/ACYWcJFnyMaxAJpCuHeth8sRERNYIwRdzdmPq+5tKjaq6anQL3HJ1G11631MCZUk7C4FUxa4PnDWEQALHVpUqqScC4dpMU5/ppWs0cagrv5TnLuGuIgX1hkBKRotxaQ8ONeYy83sPlF6Wo0hO1um6cRdh+KD4gD+BcL0uPoVwwAPrzdds5/pp+BT51pRknZHPJUtuGr/I8hv1QiAVubsDfy4hkMC3YYVo4IlAeJEH7+kMzkjn9u2CfXjmlXUVsnZZk3hDIEwCN1x5kZ6O3yj5cHpGcTFDT4LawQdSpOO4PzbHHde3desc59PZ848Vlj959tV1+Gb+Pk/wFH8uBGIZqqDoKAQSFGb2rKQVAomJDsVnb/XXCXfscOWifmW9Z+551cIePB9nuJdWW8sqgXAi3FfvDSwuZDj2lvmW7vSLZLQTgXAoL4fncuNnhfm0WLJx7S4+obD/56rbFugMfKtNCMQqUsHRTwgkOOzsUUsrBMKTcM2ky4cVOpt/WpqJyS+uKdd7IFxR9m+3tEdS4gWYMXc3Pp+9SzuAi5pVAuG7fy72yO3Hnw5oubxpdiIQ1rtkgiDX91q26rCGg7Pun3u0u35e94Np2/U/3jQhEG/Qsn9fIRD729iShlYJhEuPP3F/Ii5MiNb35uxw/nBahqU1SuvEV2J339xel1w/dOQMrrkzVVf79ZZA2MnPj11xm/HNL3jp7Y1eyVSUE8GDAtmJXqQ0V9Z9c0pv7bNi8uDyM2yvq/90IW78cytkZ+fr3A937364A08IxKttZfvOQiC2N7E1Ba0SCM/Ghfceurezfo+CG4eAfvb1zrO++D2t6jBIl1OfdF831IoK1ff1H0zffh4ZWT2BcDTV688WPna1cetx3P1QmuWy5ux85/pT/OCU3xHInanYn5nrCc7zPueosgm3cf2yeF2na+Lk5dh3IBfPPXIJ+LTG74k8NmWV1yX5hUC8NoWtBwiB2Nq81pXzhkB4Vq69xKXTuQwG+y7SVhzUjustGdkeF+Vfx5cPT8CfhiYU52hw7al/v7H+PKc3/4Ke/nb/4jnZt3Hus7f8Ied+fPpGP53XwI2/HBcuOb+e1bnC8fsmE27tgD5JDYo/+nTGTrz53/MfyypZyqSq8kDGP7rsrJcPPYJbogM7y7kETXiYA69/sFmHM099tpfG6rnX1mPuvL3eTKf7CoF4DZmtBwiB2Nq81pXzlkD4BMHvSHC0D//aZUds7mknUtMy8dEXGaWWBOdrqlFDE3DVqBaIiHCA5+A2+4e9ePmdjW5PMKlfDi1WhCvGct9zH1niDvwC4eP3FZYjYQfx48+v1jWe3DX2B9x3R0e0aFYLC9IOoEPrOuA8Er7yeeS5dP0wVMlWHQTC/pznX19/1lO1vS6+AJu2H/dYRoWzzTlcl/NdOKR349YsDO7XRNtpzM3z9b+9bUIg3iJm7/5CIPa2r2XtvCWQoon5S/uKkS3QqkVMcakQ/mxf5il99VLkz+BX7+rHRegEt6J24GAuvv72F8z8bk+ZVynj/9oeIwc308OYOJgUuGx5dHSoTgi8mv0m+aZe//47C2t2Malxngr/yuYvziPH8vTTs7w+y9K9WxwSO8Xq+b6YXRjy+yxf73Sop/8fZ9vziao6CGT0kGa466Z2xQTL73Nk7D6hrwyZxJjkrIbflvTtcP4OR7yVfI7X8gb5raMQiLeI2bu/EIi97WtZO18JhBfgNyUG94/HmGEJ+slbT43fIedoK378aM/+kx7DSDl8+NWneyG+UeGzsee2kq/w8XOwt1zdWr9dwq3oZJRzqkB/AfN1TlTNQhLbvfckXn9/M9ZsPAqnS+Gff+usyYfbO59s049SVQeBcBjuUw9erN/3cNesBgqwzu+/1BeNG0bqqU6cLMDtExf75Ffh8UIgnnZ3cH0uBBJc9narbXkIpGhSvpJK7lEfowY3Q63oMP3QkcEJHuA3x126gCFfDy1MyzwrVNeKCbhQ4B3XtwM71UMchc77rOw8bNiahS9m7z7PL9LrkgswZnhzcNRYkbOfy5rwr3B+v2POvL1Yln74rFwRLmly27Vt9C98Jji+WivZGtXnCLTCK7Ltu07oU4DVxuTHGeLcOHdmytT1ZQ5lPxGXG+neNa5Y3/wClyY9Jo+NW7Is57nws71339ROk+n8nw/gudfWeY1/kbBCIFYtHhz9hECCw84etawIAim5CJMJl9UoqjHFiYclw3M9CuSmA/tRavx2DXY060yZkVYsQ5NGNbWjnxuvf/TYGWR5KMHO11x5eS7LX9C+6mJlXEl9T+Tk+/TFzyXb+UTG5V3Yn8JVBHxtQiC+ImfPcUIg9rSr11pVNIF4LYAMqBQEOCpt2lv9NZHz1SFnnvM1lq9NCMRX5Ow5TgjEnnb1WishEK8hC4gBnOXPTnlu/Mzty+9uKpfcQiDlgs92g4VAbGdS3xQSAvENN38exb6cV//VU2ejc5TauFvnewz99aSPEIgnhILrcyGQ4LK3W22FQOy3EbhMzITbO+rEwR9+OoCnvKwPVhoiQiD22yfl0UgIpDzo2WhsyyFzwxuHq/8pqGQiirWRakGpCkfAPfdId3RpX1c73h//9yqkrTjkMxZKIZeAdNNw3Lvoy8GrfJ5IBtoKASEQW5mz/MowkTQMNQeSA7cDGEQgz4kd5V9WZqgABPiqqlGDSMREh+H6Ky5Ci2bRetaMXScwYdKy4vffrS6lFD/eqDIUjKkOl+uj1FkjjlgdK/2CAwEhkOCws09a9hgyt0lYuJlCQD+AOgBoQ4RaPk0mgyodAU485FcjS7aTp5x4+d2N+D51v8f1FVQ+QDugsAlKLTUN9UNIVtTG1NR+3tc88biadLADAkIgdrBiZeuQMimkT43udRBa0FBRSIph4BoCOKPOUdlLy/zWETiXQHbszsEr727E2k3Hysz2V0rtMYHppkkzlWnuyDx55Oju1BvOWF9ZegYrAkIgwWr5cuqdPPTLVkZY+FUAhhKhsYKKk+uucoJazuFc56pZkyhdAeD0aZeun1VKc0EhSwGHALUEBn1oHItMk1NGOcEP0uFCIEFq+IpSW/tMwnChMsz2hqmSYdAfoKg1EWRvVRTIFTGPUkdN0PcwaYHhcG0g5dyc+tVo96WKK2JNmcP2CMhfctubuOoV7D1iZnuHw/g7ga4GofCBDmnVgoCpVCqIXlw0Y9jX1SKALGprBIRAbG3e6lWuSc+0GgkNsgaQUgOIqDMBbQH8/nJT9Ypnv9UVTilSW2HSBhhqocvl+nbxzJEH7KeoaOQvCAiB+IslbC5H4sAfYsKjCmJDFXUCmdcqwmACImyudpWop5RaCeB/UPR9nnIeWjZz9WFg0tmvYVWJJLJIsCEgBBJsFvcTfXsM+ahWWFitcTCMyw1QG0DFKkU1xXdStoGUUvkgOgqFvYD5TYEZ+tGSmYPPfrjET2wsYtgfASEQ+9vYzzWcZPQd0a2ZyxHSxlBIIjIHEihRfCe/m01BmVCUoRTmQ6mFgGtTZsEvWzO+uSfPz40r4tkcASEQmxs4ENXrOXxW47Awx3XKNG8GKCFYTyVKIQdQ01359PriucPS+YHFQLSnyGxfBIRA7GvbgNcsJWVBiCsqp5NyULKDjCQFdAGhJQGhAa/cOQoowCSoTKVoHWAud5nGYiBm6eKZyTl201X0sQ8CQiD2saWtNUkcMSsyQqlYR0hIG0VqtKHUaBDVD3SlFdRppdQ8BWMaCMtCVP6h1K9GZQMkp41AN24QyC8EEgRGtqOKCSkLIprVye2jlBpDQCKIGgOI8+fyKoXFCflaCvym7BblwixXXsjctO8v871Mrh2NKzoFDAJCIAFjKhHUDQLUZ8jcWDPC2TrEdHQDoZ+CSiGi2v6CmALyodRKRcaPCs4VhhMbjZzovVI+xF8sJHL4ioAQiK/IyTi/RSAlZUGEq9apUSDcTgZ1BRAOhdAqdMY7oZCnoDKh6N1TDscH6V8OzvRbwEQwQcBHBIRAfAROhgUGAkmDZySERoSlEFRPAF0I1LkyQoQ51JYUbQep1UphpcukhYtPRK6BlEIPjI0iUvqEgBCIT7DJoEBDIDHxzdDo+k3q5YVQw1CHORTgkvScwFi+ppQ6TkSfO13qE+WknXkO83D6rBG55ZtVRgsCgYGAEEhg2EmkrAQEeo2e3cFhYixAA4gQD0LDskKEtROccAQK+7h8CJH6/KevTs8DxrkqQTyZUhDwewSEQPzeRCJgZSPAEV1Nap9qD1A7A2oAQP01ofzWlFIcObXIVPQdyFxnUtimtBkSOVXZdpH5/R8BIRD/t5FIWA0I9B4+M9kREjJKmeYa5+G6XyxZ0ut0NYghSwoCfo2AEIhfm0eEEwQEAUHAfxH4fxkmFgufbKwkAAAAAElFTkSuQmCC\"","\"use strict\";\r\n//import { manualDispatchActions } from '../store/HistoricalData';\r\n//import { actionCreators as sourceFeedbackActionCreators } from '../store/SourceFeedbackStore';\r\n//import { actionCreators as sourceCommunicationActionCreators } from '../store/SourceCommunicationStore';\r\n\r\nlet signalR = require(\"@aspnet/signalr\");\r\nvar he = require('he');\r\n\r\nlet connection = new signalR.HubConnectionBuilder().withUrl(\"/notificationHub\").build();\r\n\r\n\r\n//connection.on(\"CaseTrackingServiceCompleted\", function (data) {\r\n// console.log(data);\r\n//});\r\n\r\n//connection.on(\"ReceiveUpdatedHistoricalData\", function (data) {\r\n// console.log(data);\r\n//});\r\n\r\n//connection.on(\"ReceiveSourceFeedbackMessages\", function (data) {\r\n// sourceFeedbackActionCreators.requestSourceFeedbackUpdate(window.store.dispatch, data);\r\n//});\r\n\r\n//connection.on(\"ReceiveSourceCommunicationMessages\", function (data, updateOrDelete) {\r\n// sourceCommunicationActionCreators.requestSourceCommunicationUpdate(window.store.dispatch, data, updateOrDelete);\r\n//});\r\n\r\n\r\n//connection.on(\"ModifiedSourceUpdateInterval\", function (ossId, courtUid, updateInterval) {\r\n// manualDispatchActions.updateSourceInterval(window.store.dispatch, ossId, courtUid, updateInterval);\r\n//});\r\n\r\nlet afterConnectionStarts = (connection) => {\r\n connection.then(function () {\r\n // read from local storage\r\n\r\n // set user settings on server\r\n let userSettings = JSON.parse(localStorage.getItem('userSettings'));\r\n connection.then(c => c.invoke(\"SetUserSettings\", userSettings));\r\n\r\n // set subscriptions on server\r\n let ossIdSubs = JSON.parse(localStorage.getItem('ossIdSubs'));\r\n if (!ossIdSubs || !ossIdSubs.filter)\r\n return;\r\n let ossIds = Object.keys(ossIdSubs).filter(key => ossIdSubs[key]['historical']);\r\n\r\n if (ossIds.length > 0) {\r\n console.log(`startup: subscribing to ${ossIds}`);\r\n connection.then(c => c.invoke(\"Subscribe\", \"historical\", { ossIds: ossIds }));\r\n }\r\n\r\n}).catch(function (err) {\r\n return console.error(err.toString());\r\n});\r\n}\r\n\r\n//afterConnectionStarts(connection.start());\r\n\r\nfunction sleep(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n}\r\n\r\n\r\nconnection.connection.onclose(async () => {\r\n await sleep(5000);\r\n\r\n connection.start();\r\n});\r\n\r\nvar connectionPromise = connection.start().then(function () {\r\n // read from local storage\r\n\r\n // set user settings on server\r\n let userSettings = JSON.parse(localStorage.getItem('userSettings'));\r\n connection.invoke(\"SetUserSettings\", userSettings);\r\n\r\n // set subscriptions on server\r\n let ossIdSubs = JSON.parse(localStorage.getItem('ossIdSubs'));\r\n if (!ossIdSubs || !ossIdSubs.filter)\r\n return connection;\r\n let ossIds = Object.keys(ossIdSubs).filter(key => ossIdSubs[key]['historical']);\r\n\r\n if (ossIds.length > 0) {\r\n console.log(`startup: subscribing to ${ossIds}`);\r\n connection.invoke(\"Subscribe\", \"historical\", { ossIds: ossIds });\r\n }\r\n return connection;\r\n});\r\n// .catch(function (err) {\r\n// console.log(err);\r\n// return connection;\r\n//});\r\n\r\n//connection.connection.onclose(function () {\r\n// setTimeout(function () {\r\n// afterConnectionStarts(connection.start());\r\n// }, 5000); // Restart connection after 5 seconds.\r\n//});\r\nexport default connectionPromise;","import { getHistoricalDataCourts, modifySourceUpdateInterval } from '../api/GetHistoricalData';\r\nconst requestHistoricalDataType = 'REQUEST_HISTORICAL_DATA';\r\nconst receiveHistoricalDataType = 'RECEIVE_HISTORICAL_DATA';\r\n\r\nconst afterModifiedUpdateIntervalType = 'AFTER_MODIFIED_UPDATE_INTERVAL';\r\n\r\nconst initialState = { historicalData: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestHistoricalData: () => async (dispatch, getState) => {\r\n\r\n if (getState().historicalData.historicalData.length > 0 || getState().historicalData.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestHistoricalDataType });\r\n\r\n getHistoricalDataCourts().then(data => {\r\n dispatch({ type: receiveHistoricalDataType, historicalData: data });\r\n }).catch(ex => {\r\n // todo\r\n }); \r\n },\r\n modifySourceUpdateInterval: (ossId, courtUid, updateInterval) => async (dispatch, getState) => {\r\n modifySourceUpdateInterval(ossId, courtUid, updateInterval).then(() => {\r\n \r\n }).catch(ex => {\r\n\r\n })\r\n },\r\n}; \r\n\r\nexport const manualDispatchActions = {\r\n updateSourceInterval: (dispatch, ossId, courtUid, updateInterval) => {\r\n dispatch({ type: afterModifiedUpdateIntervalType, modifiedValues: { ossId, courtUid, updateInterval } });\r\n }\r\n}\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestHistoricalDataType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveHistoricalDataType) {\r\n return {\r\n ...state,\r\n historicalData: action.historicalData,\r\n isLoading: false\r\n };\r\n }\r\n\r\n if (action.type === afterModifiedUpdateIntervalType) {\r\n let existingHistoricalData = [...state.historicalData];\r\n var modifiedItem = existingHistoricalData.filter(i => i.ossId == action.modifiedValues.ossId && i.courtUid == action.modifiedValues.courtUid)[0];\r\n if (modifiedItem != null) {\r\n modifiedItem.updateInterval = action.modifiedValues.updateInterval;\r\n }\r\n \r\n return {\r\n ...state,\r\n historicalData: existingHistoricalData\r\n }\r\n }\r\n\r\n return state;\r\n};\r\n","const requestHistoricalRecordSearch = 'REQUEST_HISTORICAL_RECORD_SEARCH';\r\nconst receiveHistoricalRecordSearch = 'RECEIVE_HISTORICAL_RECORD_SEARCH';\r\n\r\nconst requestUsaStates = 'REQUEST_USASTATES';\r\nconst receiveUsaStates = 'RECEIVE_USASTATES';\r\n\r\nconst requestScrapers = 'REQUEST_SCRAPERS';\r\nconst receiveScrapers = 'RECEIVE_SCRAPERS';\r\n\r\nconst requestSourceTypes = 'REQUEST_SOURCETYPES';\r\nconst receiveSourceTypes = 'RECEIVE_SOURCETYPES';\r\n\r\nconst initialState = { historicalRecordSearchData: [], usaStates: [], scrapers: [], sourceTypes: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestHistoricalRecordSearch: (states, scrapers, sourceTypes, numRecords, startDate, endDate) => async (dispatch, getState) =>\r\n new Promise(async function (resolve, reject) {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestHistoricalRecordSearch });\r\n const url = `api/HistoricalRecordSearch/GetHistoricalRecords?states=${states}&scrapers=${scrapers}&sourceTypes=${sourceTypes}&numRecords=${numRecords}&searchStart=${startDate}&searchEnd=${endDate}`;\r\n let fetchData = {\r\n method: 'POST',\r\n body: {},\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n const response = await fetch(url, fetchData);\r\n const historicalRecordSearchData = await response.json();\r\n\r\n dispatch({ type: receiveHistoricalRecordSearch, historicalRecordSearchData });\r\n resolve(historicalRecordSearchData);\r\n }), \r\n\r\n requestUsaStates: () => async (dispatch, getState) =>\r\n new Promise(async function (resolve, reject) {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestUsaStates });\r\n const url = `api/HistoricalRecordSearch/GetStates`;\r\n let fetchData = {\r\n method: 'GET',\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n const response = await fetch(url, fetchData);\r\n const usaStates = await response.json();\r\n\r\n dispatch({ type: receiveUsaStates, usaStates });\r\n resolve(usaStates);\r\n }),\r\n\r\n requestScrapers: () => async (dispatch, getState) =>\r\n new Promise(async function (resolve, reject) {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestScrapers });\r\n const url = `api/HistoricalRecordSearch/GetScrapers`;\r\n let fetchData = {\r\n method: 'GET',\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n const response = await fetch(url, fetchData);\r\n const scrapers = await response.json();\r\n\r\n dispatch({ type: receiveScrapers, scrapers });\r\n resolve(scrapers);\r\n }), \r\n\r\n requestSourceTypes: () => async (dispatch, getState) =>\r\n new Promise(async function (resolve, reject) {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestSourceTypes });\r\n const url = `api/HistoricalRecordSearch/GetSourceTypes`;\r\n let fetchData = {\r\n method: 'GET',\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n const response = await fetch(url, fetchData);\r\n const sourceTypes = await response.json();\r\n\r\n dispatch({ type: receiveSourceTypes, sourceTypes });\r\n resolve(sourceTypes);\r\n }), \r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestHistoricalRecordSearch\r\n || action.type === requestUsaStates\r\n || action.type === requestScrapers\r\n || action.type === requestSourceTypes) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveHistoricalRecordSearch\r\n || action.type === receiveUsaStates\r\n || action.type === receiveScrapers\r\n || action.type === receiveSourceTypes) {\r\n return {\r\n ...state,\r\n ...action,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","const requestTestDefinitionsType = 'REQUEST_TEST_DEFINITIONS';\r\nconst receiveTestDefinitionsType = 'RECEIVE_TEST_DEFINITIONS';\r\nconst initialState = { testDefinitions: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestTestDefinitions: () => async (dispatch, getState) => {\r\n\r\n if (getState().testDefinitions.testDefinitions.length > 0 || getState().testDefinitions.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestTestDefinitionsType });\r\n\r\n const url = `api/ATekTestDataApi/GetTestDefinitions`;\r\n const response = await fetch(url);\r\n const testDefinitions = await response.json();\r\n\r\n dispatch({ type: receiveTestDefinitionsType, testDefinitions });\r\n }\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestTestDefinitionsType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveTestDefinitionsType) {\r\n return {\r\n ...state,\r\n testDefinitions: action.testDefinitions,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","const requestTestLogsType = 'REQUEST_TEST_Logs';\r\nconst receiveTestLogsType = 'RECEIVE_TEST_Logs';\r\nconst initialState = { testLogs: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestTestLogs: () => async (dispatch, getState) => {\r\n\r\n if (getState().testLogs.testLogs.length > 0 || getState().isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestTestLogsType });\r\n\r\n const url = `api/ATekTestDataApi/GetTestLogs`;\r\n const response = await fetch(url);\r\n const testLogs = await response.json();\r\n\r\n dispatch({ type: receiveTestLogsType, testLogs });\r\n }\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestTestLogsType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveTestLogsType) {\r\n return {\r\n ...state,\r\n testLogs: action.testLogs,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","const requestSampleDataType = 'REQUEST_TEST_Logs_SampleData';\r\nconst receiveSampleDataType = 'RECEIVE_TEST_Logs_SampleData';\r\nconst requestCaseTypesReport = 'REQUEST_TEST_CaseTypesReport';\r\nconst receiveCaseTypesReport = 'RECEIVE_TEST_CaseTypesReport';\r\nconst initialState = { testLogsSampleData: [], caseTypesReportData: [], isLoading: false, isLoadingCaseTypesData: false };\r\n\r\nexport const actionCreators = {\r\n requestTestLogsSampleData: (testDefId, dbName, searchFrom, runDate, groupByFields) => async (dispatch, getState) =>\r\n new Promise(async function (resolve, reject) {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestSampleDataType });\r\n const url = `api/ATekTestDataApi/GetSampleData?testId=${testDefId}&databaseName=${dbName}&searchFrom=${searchFrom}&runDate=${runDate}`;\r\n let fetchData = {\r\n method: 'POST',\r\n body: groupByFields,\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n const response = await fetch(url, fetchData);\r\n const testLogsSampleData = await response.json();\r\n\r\n dispatch({ type: receiveSampleDataType, testLogsSampleData });\r\n resolve(testLogsSampleData);\r\n }),\r\n\r\n requestCaseTypesReport: (ossId, searchStart, searchEnd) => async (dispatch, getState) =>\r\n {\r\n if (getState().isLoading) {\r\n // Don't issue a duplicate request (already loading the requested data)\r\n return;\r\n }\r\n\r\n if (!ossId)\r\n ossId = 45;\r\n\r\n dispatch({ type: requestCaseTypesReport });\r\n const url = `api/ATekTestDataApi/GetCaseTypesReport?ossId=${ossId}&searchStart=${searchStart}&searchEnd=${searchEnd}`;\r\n let fetchData = {\r\n method: 'GET',\r\n headers: new Headers({ 'content-type': 'application/json' })\r\n }\r\n\r\n await fetch(url, fetchData).then(\r\n response => response.json(),\r\n error => console.log('Error in requestCaseTypesReport', error)).then(\r\n caseTypesReportData => dispatch({ type: receiveCaseTypesReport, caseTypesReportData })\r\n );\r\n }\r\n\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestSampleDataType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveSampleDataType) {\r\n return {\r\n ...state,\r\n testLogsSampleData: action.testLogsSampleData,\r\n isLoading: false\r\n };\r\n }\r\n\r\n if (action.type === requestCaseTypesReport) {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n isLoadingCaseTypesData: true\r\n };\r\n }\r\n\r\n if (action.type === receiveCaseTypesReport) {\r\n return {\r\n ...state,\r\n caseTypesReportData: action.caseTypesReportData, \r\n isLoading: false,\r\n isLoadingCaseTypesData: false\r\n };\r\n }\r\n return state;\r\n};\r\n","import Connection from '../signalr/connection';\r\n\r\nexport let getScraperDetails = (ossId) => {\r\n return Connection.then(c => c.invoke(\"GetScraperDetail\", ossId));\r\n};\r\n\r\nexport let getStateDetails = (stateAbbreviation) => {\r\n return Connection.then(c => c.invoke(\"GetStateDetail\", stateAbbreviation));\r\n};\r\n\r\nexport let getCaseAndChargeCounts = (ossId) => {\r\n return Connection.then(c => c.invoke(\"GetCaseAndChargeCounts\", ossId));\r\n};\r\n\r\nexport let getSourceCaseTypeInfo = (ossId) => {\r\n return Connection.then(c => c.invoke(\"GetSourceCaseTypeInfos\", ossId));\r\n};\r\n\r\nexport let getSourceCaseTypeInfosAggregateBySource = (ossId) => {\r\n return Connection.then(c => c.invoke(\"GetSourceCaseTypeInfosAggregateBySource\", ossId));\r\n};\r\n\r\nexport let getSourceSymptomsInfo = (ossId) => {\r\n return Connection.then(c => c.invoke(\"GetSourceSymptomsInfo\", ossId));\r\n};\r\n\r\nexport let addMonitoringOrders = (orders) => {\r\n return Connection.then(c => c.invoke(\"AddMonitoringOrders\", {\r\n Orders: orders\r\n }));\r\n};\r\n\r\nexport let forceUpdateMonitoringOrder = (personId) => {\r\n return Connection.then(c => c.invoke(\"ForceUpdateMonitoringOrder\", {\r\n PersonId: personId\r\n }));\r\n};","import { getCaseAndChargeCounts, getScraperDetails, getSourceCaseTypeInfo, getSourceCaseTypeInfosAggregateBySource, addMonitoringOrders, getSourceSymptomsInfo, forceUpdateMonitoringOrder, getStateDetails } from '../api/GetScraperDetails';\r\n\r\nconst requestScraperDetailType = 'REQUEST_SCRAPER_DETAIL';\r\nconst receiveScraperDetailType = 'RECEIVE_SCRAPER_DETAIL';\r\n\r\nconst requestStateDetailType = 'REQUEST_STATE_DETAIL';\r\nconst receiveStateDetailType = 'RECEIVE_STATE_DETAIL';\r\n\r\nconst requestCaseAndChargeCountsType = 'REQUEST_CASE_AND_CHARGE_COUNTS';\r\nconst receiveCaseAndChargeCountsType = 'RECEIVE_CASE_AND_CHARGE_COUNTS';\r\n\r\nconst requestCaseAndChargeCountsAllType = 'REQUEST_CASE_AND_CHARGE_COUNTS_ALL';\r\nconst receiveCaseAndChargeCountsAllType = 'RECEIVE_CASE_AND_CHARGE_COUNTS_ALL';\r\n\r\nconst requestSourceCaseTypeInfoType = 'REQUEST_SOURCE_CASE_TYPE_INFO';\r\nconst receiveSourceCaseTypeInfoType = 'RECEIVE_SOURCE_CASE_TYPE_INFO';\r\n\r\nconst requestSourceCaseTypeInfoAggregateBySourceType = 'REQUEST_SOURCE_CASE_TYPE_AGGREGATE_BY_SOURCEINFO';\r\nconst receiveSourceCaseTypeInfoAggregateBySourceType = 'RECEIVE_SOURCE_CASE_TYPE_AGGREGATE_BY_SOURCEINFO';\r\n\r\nconst requestSourceCaseTypeInfoAllType = 'REQUEST_SOURCE_CASE_TYPE_INFO_ALL';\r\nconst receiveSourceCaseTypeInfoAllType = 'RECEIVE_SOURCE_CASE_TYPE_INFO_ALL';\r\n\r\nconst requestSourceCaseTypeInfoAggregateBySourceAllType = 'REQUEST_SOURCE_CASE_TYPE_INFO_AGGREGATE_BY_SOURCE_ALL';\r\nconst receiveSourceCaseTypeInfoAggregateBySourceAllType = 'RECEIVE_SOURCE_CASE_TYPE_INFO_AGGREGATE_BY_SOURCE_ALL';\r\n\r\nconst requestSourceSymptomsInfoType = 'REQUEST_SOURCE_SYMPTOMS_INFO';\r\nconst receiveSourceSymptomsInfoType = 'RECEIVE_SOURCE_SYMPTOMS_INFO';\r\n\r\nconst requestSourceSymptomsInfoAllType = 'REQUEST_SOURCE_SYMPTOMS_INFO_ALL';\r\nconst receiveSourceSymptomsInfoAllType = 'RECEIVE_SOURCE_SYMPTOMS_INFO_ALL';\r\n\r\n\r\n\r\nconst initialState = {\r\n scraperConfigModel: {}, scraperDetailDataItems: [], sourceDateTimeDataPoints: [], stateDateTimeDataPoints: [], stateDateTimeDataPointsCourts: [], stateDateTimeDataPointsArrests: [], \r\n sourceCaseTypeInfo: [], sourceCaseTypeInfoAll: [], sourceCaseTypeInfoAllByFips: [],\r\n sourceCaseTypeMessagesAll: [], sourceCaseTypeMessages: [],\r\n sourceCaseTypeInfoAggregateBySource: [], sourceCaseTypeInfoAggregateBySourceAll: [],\r\n sourceCaseAndChargeCounts: [], sourceCaseAndChargeCountsAll: [],\r\n sourceSymptomsInfoAll: [], sourceSymptomsInfo: [], isLoading: false\r\n};\r\n\r\nexport const actionCreators = {\r\n requestCaseAndChargeCounts: (ossId) => async (dispatch, getState) => {\r\n dispatch({ type: requestCaseAndChargeCountsType });\r\n\r\n let errorMessage = `Could not load OSS ID '${ossId}'; Try Refreshing The Webpage.`;\r\n getCaseAndChargeCounts(ossId).then(data => {\r\n if (!ossId)\r\n dispatch({ type: receiveCaseAndChargeCountsAllType, data: { sourceCaseAndChargeCountsAll: data }, errorMessage: data == null ? errorMessage : null });\r\n else\r\n dispatch({ type: receiveCaseAndChargeCountsType, data: { sourceCaseAndChargeCounts: data }, errorMessage: data == null ? errorMessage : null });\r\n\r\n }).catch(ex => {\r\n if (!ossId)\r\n dispatch({ type: receiveCaseAndChargeCountsAllType, data: { sourceCaseAndChargeCountsAll: [] }, errorMessage: errorMessage })\r\n else \r\n dispatch({ type: receiveCaseAndChargeCountsType, data: { sourceCaseAndChargeCounts: [] }, errorMessage: errorMessage })\r\n });\r\n },\r\n\r\n requestStateDetail: (stateAbbreviation) => async (dispatch, getState) => {\r\n dispatch({ type: requestStateDetailType });\r\n\r\n let errorMessage = `There was an issue loading the state information; please try again later.`;\r\n getStateDetails(stateAbbreviation).then(data => {\r\n dispatch({ type: receiveStateDetailType, data, errorMessage: data == null ? errorMessage : null });\r\n }).catch(ex => {\r\n dispatch({ type: receiveStateDetailType, data: {}, errorMessage: errorMessage })\r\n });\r\n },\r\n\r\n requestScraperDetail: (ossId) => async (dispatch, getState) => {\r\n dispatch({ type: requestScraperDetailType });\r\n\r\n let errorMessage = `Could not load OSS ID '${ossId}'; Try Refreshing The Webpage.`;\r\n getScraperDetails(ossId).then(data => {\r\n dispatch({ type: receiveScraperDetailType, data, errorMessage: data == null ? errorMessage : null });\r\n }).catch(ex => {\r\n dispatch({ type: receiveScraperDetailType, data: {}, errorMessage: errorMessage })\r\n }); \r\n },\r\n requestSourceCaseTypeInfos: (ossId) => async (dispatch, getState) => {\r\n let errorMessage = `Could not load case type infos for OSS ID '${ossId}'; Try Refreshing The Webpage.`;\r\n dispatch({ type: requestSourceCaseTypeInfoType });\r\n getSourceCaseTypeInfo(ossId).then(data => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceCaseTypeInfoAllType, data: { sourceCaseTypeInfoAll: data.sourceCaseTypeInfos, sourceCaseTypeInfoAllByFips: data.sourceCaseTypeInfosByFips, sourceCaseTypeMessagesAll: data.messages }, errorMessage: data == null ? errorMessage : null });\r\n else\r\n dispatch({ type: receiveSourceCaseTypeInfoType, data: { sourceCaseTypeInfo: data.sourceCaseTypeInfos, sourceCaseTypeMessages: data.messages }, errorMessage: data == null ? errorMessage : null });\r\n }).catch(ex => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceCaseTypeInfoAllType, data: { sourceCaseTypeInfoAll: [], sourceCaseTypeInfoAllByFips: [], sourceCaseTypeMessagesAll: [] }, errorMessage: errorMessage });\r\n else\r\n dispatch({ type: receiveSourceCaseTypeInfoType, data: { sourceCaseTypeInfo: [], sourceCaseTypeMessages: [] }, errorMessage: errorMessage });\r\n });\r\n },\r\n requestSourceCaseTypeInfosAggregateBySource: (ossId) => async (dispatch, getState) => {\r\n let errorMessage = `Could not load case type infos for OSS ID '${ossId}'; Try Refreshing The Webpage.`;\r\n dispatch({ type: requestSourceCaseTypeInfoAggregateBySourceType });\r\n getSourceCaseTypeInfosAggregateBySource(ossId).then(data => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceCaseTypeInfoAggregateBySourceAllType, data: { sourceCaseTypeInfoAggregateBySourceAll: data.sourceCaseTypeInfos}, errorMessage: data == null ? errorMessage : null });\r\n else\r\n dispatch({ type: receiveSourceCaseTypeInfoAggregateBySourceType, data: { sourceCaseTypeInfoAggregateBySource: data.sourceCaseTypeInfos }, errorMessage: data == null ? errorMessage : null });\r\n }).catch(ex => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceCaseTypeInfoAggregateBySourceAllType, data: { sourceCaseTypeInfoAggregateBySourceAll: []}, errorMessage: errorMessage });\r\n else\r\n dispatch({ type: receiveSourceCaseTypeInfoAggregateBySourceType, data: { sourceCaseTypeInfoAggregateBySource: []}, errorMessage: errorMessage });\r\n });\r\n },\r\n \r\n\r\n requestSourceSymptomsInfos: (ossId) => async (dispatch, getState) => {\r\n let errorMessage = `Could not load case type infos for OSS ID '${ossId}'; Try Refreshing The Webpage.`;\r\n dispatch({ type: requestSourceSymptomsInfoType });\r\n getSourceSymptomsInfo(ossId).then(data => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceSymptomsInfoAllType, data: { sourceSymptomsInfoAll: data.sourceSymptomsInfos }, errorMessage: data == null ? errorMessage : null });\r\n else\r\n dispatch({ type: receiveSourceSymptomsInfoType, data: { sourceSymptomsInfo: data.sourceSymptomsInfos }, errorMessage: data == null ? errorMessage : null });\r\n }).catch(ex => {\r\n if (!ossId)\r\n dispatch({ type: receiveSourceSymptomsInfoAllType, data: { sourceSymptomsInfoAll: [], sourceSymptomsMessagesAll: [] }, errorMessage: errorMessage });\r\n else\r\n dispatch({ type: receiveSourceSymptomsInfoType, data: { sourceSymptomsInfo: [], sourceSymptomsMessages: [] }, errorMessage: errorMessage });\r\n });\r\n },\r\n\r\n addMonitoringOrders: (orders) => async (dispatch, getState) => {\r\n addMonitoringOrders(orders).then(data => {\r\n // todo make the ui cool\r\n });\r\n },\r\n forceUpdateMonitoringOrder: (personId) => async (dispatch, getState) => {\r\n forceUpdateMonitoringOrder(personId).then(data => {\r\n // todo make the ui cool\r\n });\r\n },\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestScraperDetailType\r\n || action.type === requestStateDetailType\r\n || action.type === requestSourceCaseTypeInfoType\r\n || action.type === requestSourceCaseTypeInfoAggregateBySourceType\r\n || action.type === requestCaseAndChargeCountsAllType\r\n || action.type === requestCaseAndChargeCountsType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveScraperDetailType ||\r\n action.type === receiveStateDetailType ||\r\n action.type == receiveSourceCaseTypeInfoType\r\n || action.type == receiveSourceCaseTypeInfoAllType\r\n || action.type == receiveSourceSymptomsInfoType\r\n || action.type === receiveSourceSymptomsInfoAllType\r\n || action.type === receiveSourceCaseTypeInfoAggregateBySourceAllType\r\n || action.type === receiveSourceCaseTypeInfoAggregateBySourceType\r\n || action.type === receiveCaseAndChargeCountsAllType\r\n || action.type === receiveCaseAndChargeCountsType) {\r\n return {\r\n ...state,\r\n ...action.data,\r\n errorMessage: action.errorMessage,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};","import Connection from '../signalr/connection';\r\nconst loadSubscriptionsType = 'LOAD_SUBSCRIPTIONS';\r\nconst saveSubscriptionsType = 'SAVE_SUBSCRIPTIONS';\r\n\r\n\r\nconst initialState = {\r\n ossIdSubs: {},\r\n};\r\n\r\nexport const actionCreators = {\r\n loadSubscriptions: () => async (dispatch, getState) => {\r\n dispatch({ type: loadSubscriptionsType });\r\n },\r\n removeOssIdSubscriptions: (list) => async (dispatch, getState) => {\r\n let subs = { ...(getState().subscriptions.ossIdSubs) };\r\n for (let index = 0; index != list.length; ++index) {\r\n let { ossId, category } = list[index];\r\n\r\n if (!['historical'].includes(category)) throw new Error(`is this category intentional? ${category}`);\r\n if (!ossId) throw new Error(`ossId should be a positive integer... ${ossId}`);\r\n\r\n if (subs[ossId] && subs[ossId][category]) {\r\n Connection.then(c => c.invoke(\"Unsubscribe\", category, { ossIds: [ossId] }).then(() => {\r\n console.log(`unsubscribed from ${ossId}`)\r\n delete subs[ossId][category];\r\n subs[ossId][category] = false;\r\n\r\n dispatch({ type: saveSubscriptionsType, ossIdSubs: subs });\r\n }).catch(() => {\r\n \r\n }));\r\n \r\n }\r\n }\r\n\r\n \r\n },\r\n addOssIdSubscriptions: (list) => async (dispatch, getState) => {\r\n let subs = { ...(getState().subscriptions.ossIdSubs) };\r\n let newSubsToAdd = [];\r\n for (let index = 0; index != list.length; ++index) {\r\n let { ossId, category } = list[index];\r\n\r\n if (!['historical'].includes(category)) throw new Error(`is this category intentional? ${category}`);\r\n if (!ossId) throw new Error(`ossId should be a positive integer... ${ossId}`);\r\n\r\n if (subs[ossId]) {\r\n if (!subs[ossId][category]) {\r\n newSubsToAdd.push(ossId);\r\n subs[ossId][category] = true;\r\n }\r\n }\r\n else {\r\n subs[ossId] = { [category]: true };\r\n newSubsToAdd.push(ossId);\r\n }\r\n }\r\n\r\n Connection.then(c => c.invoke(\"Subscribe\", 'historical', { ossIds: newSubsToAdd })).then(() => {\r\n console.log(`subscribed to ${newSubsToAdd}`)\r\n dispatch({ type: saveSubscriptionsType, ossIdSubs: subs });\r\n }).catch (() => {\r\n \r\n });\r\n\r\n \r\n }\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === loadSubscriptionsType) {\r\n return {\r\n ...state,\r\n ossIdSubs: JSON.parse(localStorage.getItem('ossIdSubs')) || initialState.ossIdSubs\r\n };\r\n }\r\n\r\n if (action.type === saveSubscriptionsType) {\r\n localStorage.setItem('ossIdSubs', JSON.stringify(action.ossIdSubs));\r\n return {\r\n ...state,\r\n ossIdSubs: JSON.parse(JSON.stringify(action.ossIdSubs))\r\n };\r\n }\r\n\r\n return state;\r\n};","import { toast } from \"react-toastify\";\r\n\r\nconst addNotificationType = 'ADD_NOTIFICATION';\r\nconst initialState = { all: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n addNotification: (content, category) => async (dispatch, getState) =>\r\n {\r\n if (getState().notifications.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n else {\r\n toast(content);\r\n dispatch({ type: addNotificationType, category, content });\r\n }\r\n }\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n \r\n if (action.type === addNotificationType) {\r\n return {\r\n ...state,\r\n isLoading: true,\r\n all: [...state.all, { content: action.content, category: \"System\", time: Date(Date.now()).toString()}]\r\n };\r\n }\r\n return state;\r\n};","import Post from '../helpers/post';\r\n\r\nlet getJurisdictions = (state) => {\r\n const url = `api/Jurisdictions/Get`;\r\n return Post(url, {\r\n state\r\n });\r\n};\r\n\r\nexport default getJurisdictions;","export default function post(url = '', data = {}) {\r\n // Default options are marked with *\r\n return fetch(url, {\r\n method: 'POST', // *GET, POST, PUT, DELETE, etc.\r\n mode: 'same-origin', // no-cors, cors, *same-origin\r\n cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached\r\n credentials: 'same-origin', // include, *same-origin, omit\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n // 'Content-Type': 'application/x-www-form-urlencoded',\r\n },\r\n redirect: 'follow', // manual, *follow, error\r\n referrer: 'no-referrer', // no-referrer, *client\r\n body: JSON.stringify(data), // body data type must match \"Content-Type\" header\r\n })\r\n .then(response => {\r\n if (response.status !== 200)\r\n throw new Error(`expected a 200 response, instead got ${response.status}`);\r\n\r\n return response.json()\r\n }); // parses JSON response into native JavaScript objects \r\n}","import GetJurisdictions from '../api/GetJurisdictions';\r\n\r\nconst requestJurisdictionType = 'REQUEST_JURISDICTION';\r\nconst receiveJurisdictionType = 'RECEIVE_JURISDICTION';\r\nconst initialState = {\r\n isLoading: false,\r\n all: []\r\n};\r\n\r\nexport const actionCreators = {\r\n requestJurisdictions: (state) => async (dispatch, getState) => {\r\n if (getState().jurisdictions.isLoading)\r\n return;\r\n\r\n dispatch({ type: requestJurisdictionType });\r\n\r\n GetJurisdictions(state).then(data => {\r\n dispatch({ type: receiveJurisdictionType, data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveJurisdictionType, ...initialState, errorMessage: \"A server error has occurred. Error Code #1.\" })\r\n });\r\n },\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestJurisdictionType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveJurisdictionType) {\r\n return {\r\n ...state,\r\n all: [...action.data],\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};","import { getCaseTrackings, getUnservedCaseTrackingRequests, getUnservedCaseTrackingRequestsAll, getTwoPartSearchOrdersAll, getMissingExpectedResults } from '../api/GetCaseTrackings';\r\nconst requestCaseTrackingType = 'REQUEST_CASE_TRACKING';\r\nconst receiveCaseTrackingType = 'RECEIVE_CASE_TRACKING';\r\n\r\nconst requestUnservedCaseTrackingRequestsType = 'REQUEST_UNSERVED_CASE_TRACKING_REQUESTS';\r\nconst receiveUnservedCaseTrackingRequestsType = 'RECEIVE_UNSERVED_CASE_TRACKING_REQUESTS';\r\n\r\nconst requestUnservedCaseTrackingRequestsAllType = 'REQUEST_UNSERVED_CASE_TRACKING_REQUESTS_ALL';\r\nconst receiveUnservedCaseTrackingRequestsAllType = 'RECEIVE_UNSERVED_CASE_TRACKING_REQUESTS_ALL';\r\n\r\nconst requestTwoPartSearchOrdersAllType = 'REQUEST_TWO_PART_SEARCH_ORDERS_ALL';\r\nconst receiveTwoPartSearchOrdersAllType = 'RECEIVE_TWO_PART_SEARCH_ORDERS_ALL';\r\n\r\nconst requestMissingExpectedResultsType = 'REQUEST_MISSING_EXPECTED_RESULTS';\r\nconst receiveMissingExpectedResultsType = 'RECEIVE_MISSING_EXPECTED_RESULTS';\r\n\r\nconst initialState = { caseTrackingData: [], unservedCaseTrackingRequests: [], unservedCaseTrackingRequestsAll: [], twoPartSearchOrdersAll: [], missingExpectedResults: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestCaseTracking: (ossId) => async (dispatch, getState) => {\r\n\r\n if (getState().caseTracking.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestCaseTrackingType });\r\n\r\n getCaseTrackings(ossId).then(data => {\r\n dispatch({ type: receiveCaseTrackingType, caseTrackingData: data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveCaseTrackingType, ...initialState, errorMessage: \"A server error has occurred. Error Code #2.\" });\r\n });\r\n },\r\n\r\n requestUnservedCaseTrackingRequests: (ossId) => async (dispatch, getState) => {\r\n //if (getState().caseTracking.isLoading) {\r\n // // Don't issue a duplicate request (we already have or are loading the requested data)\r\n // return;\r\n //}\r\n\r\n dispatch({ type: requestUnservedCaseTrackingRequestsType });\r\n\r\n getUnservedCaseTrackingRequests(ossId).then(data => {\r\n dispatch({ type: receiveUnservedCaseTrackingRequestsType, unservedCaseTrackingRequests: data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveUnservedCaseTrackingRequestsType, ...initialState, errorMessage: \"A server error has occurred. Code #3.\" });\r\n });\r\n },\r\n\r\n requestUnservedCaseTrackingRequestsAll: () => async (dispatch, getState) => {\r\n //if (getState().caseTracking.isLoading || getState().caseTracking.unservedCaseTrackingRequests.length > 0) {\r\n // // Don't issue a duplicate request (we already have or are loading the requested data)\r\n // return;\r\n //}\r\n\r\n dispatch({ type: requestUnservedCaseTrackingRequestsAllType });\r\n\r\n getUnservedCaseTrackingRequestsAll().then(data => {\r\n dispatch({ type: receiveUnservedCaseTrackingRequestsAllType, unservedCaseTrackingRequestsAll: data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveUnservedCaseTrackingRequestsAllType, ...initialState, errorMessage: \"A server error has occurred. Code #4.\" });\r\n });\r\n },\r\n\r\n requestTwoPartSearchOrdersAll: () => async (dispatch, getState) => {\r\n //if (getState().caseTracking.isLoading || getState().caseTracking.unservedCaseTrackingRequests.length > 0) {\r\n // // Don't issue a duplicate request (we already have or are loading the requested data)\r\n // return;\r\n //}\r\n\r\n dispatch({ type: requestTwoPartSearchOrdersAllType });\r\n\r\n getTwoPartSearchOrdersAll().then(data => {\r\n dispatch({ type: receiveTwoPartSearchOrdersAllType, twoPartSearchOrdersAll: data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveTwoPartSearchOrdersAllType, ...initialState, errorMessage: \"A server error has occurred. Code #5.\" });\r\n });\r\n },\r\n\r\n requestMissingExpectedResults: () => async (dispatch, getState) => {\r\n //if (getState().caseTracking.isLoading || getState().caseTracking.unservedCaseTrackingRequests.length > 0) {\r\n // // Don't issue a duplicate request (we already have or are loading the requested data)\r\n // return;\r\n //}\r\n\r\n dispatch({ type: requestMissingExpectedResultsType });\r\n\r\n getMissingExpectedResults().then(data => {\r\n dispatch({ type: receiveMissingExpectedResultsType, missingExpectedResults: data });\r\n }).catch(ex => {\r\n dispatch({ type: receiveMissingExpectedResultsType, ...initialState, errorMessage: \"A server error has occurred. Code #6.\" });\r\n });\r\n },\r\n}; \r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestCaseTrackingType ||\r\n action.type === requestUnservedCaseTrackingRequestsType ||\r\n action.type === requestUnservedCaseTrackingRequestsAllType ||\r\n action.type === requestTwoPartSearchOrdersAllType ||\r\n action.type === requestMissingExpectedResultsType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveCaseTrackingType || \r\n action.type === receiveUnservedCaseTrackingRequestsType ||\r\n action.type === receiveUnservedCaseTrackingRequestsAllType ||\r\n action.type === receiveTwoPartSearchOrdersAllType ||\r\n action.type === receiveMissingExpectedResultsType) {\r\n return {\r\n ...state,\r\n ...action,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { getSourceStatuses } from '../api/GetHistoricalData';\r\nconst requestSourceStatusType = 'REQUEST_SOURCE_STATUSES';\r\nconst receiveSourceStatusType = 'RECEIVE_SOURCE_STATUSES';\r\n\r\nconst initialState = { sourceStatuses: [], isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestSourceStatuses: () => async (dispatch) => {\r\n let store = window.store;\r\n if (!store.getState().sourceStatus.isLoading) {\r\n dispatch({ type: requestSourceStatusType });\r\n if (store.getState().sourceStatus.sourceStatuses && store.getState().sourceStatus.sourceStatuses.length == 0)\r\n getSourceStatuses().then(data => {\r\n dispatch({ type: receiveSourceStatusType, sourceStatuses: data });\r\n }).catch(ex => {\r\n // todo\r\n });\r\n else\r\n dispatch({ type: receiveSourceStatusType, sourceStatuses: store.getState().sourceStatus.sourceStatuses });\r\n }\r\n },\r\n}; \r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestSourceStatusType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveSourceStatusType) {\r\n return {\r\n ...state,\r\n ...action,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { getSourceFeedback, getSourceFeedbackMessageMap } from '../api/GetHistoricalData';\r\nconst requestSourceFeedbackType = 'REQUEST_SOURCE_FEEDBACK';\r\nconst receiveSourceFeedbackType = 'RECEIVE_SOURCE_FEEDBACK';\r\nconst requestSourceFeedbackUpdateType = 'REQUEST_SOURCE_FEEDBACK_UPDATE';\r\nconst receiveSourceFeedbackUpdateType = 'RECEIVE_SOURCE_FEEDBACK_UPDATE';\r\nconst requestSourceFeedbackTypeMessageMap = 'REQUEST_SOURCE_FEEDBACK_MESSAGE_MAP';\r\nconst receiveSourceFeedbackTypeMessageMap = 'RECEIVE_SOURCE_FEEDBACK_MESSAGE_MAP';\r\n\r\nconst initialState = {\r\n sourceFeedback: [], sourceFeedbackMessageMap: {}, isLoading: false };\r\n\r\nexport const actionCreators = {\r\n requestSourceFeedback: () => async (dispatch) => {\r\n let store = window.store;\r\n if (!store.getState().sourceFeedback.isLoading) {\r\n dispatch({ type: requestSourceFeedbackType });\r\n if (store.getState().sourceFeedback.sourceFeedback && store.getState().sourceFeedback.sourceFeedback.length == 0) {\r\n dispatch({ type: requestSourceFeedbackType });\r\n getSourceFeedback().then(data => {\r\n dispatch({ type: receiveSourceFeedbackType, sourceFeedback: data });\r\n }).catch(ex => {\r\n // todo\r\n });\r\n }\r\n else\r\n dispatch({ type: receiveSourceFeedbackType, sourceFeedback: store.getState().sourceFeedback.sourceFeedback });\r\n }\r\n },\r\n requestSourceFeedbackUpdate: (dispatch, data) => {\r\n let store = window.store;\r\n if (store.getState().sourceFeedback.sourceFeedback && store.getState().sourceFeedback.sourceFeedback.length == 0)\r\n return; // do nothing until we have initial data populated\r\n\r\n dispatch({ type: receiveSourceFeedbackUpdateType, sourceFeedback: data });\r\n },\r\n requestSourceFeedbackMessageMap: () => async (dispatch) => {\r\n dispatch({ type: requestSourceFeedbackTypeMessageMap });\r\n\r\n getSourceFeedbackMessageMap().then(data => {\r\n dispatch({ type: receiveSourceFeedbackTypeMessageMap, sourceFeedbackMessageMap: data });\r\n }).catch(ex => {\r\n // todo\r\n });\r\n },\r\n}; \r\n\r\n//export const manualDispatchActions = {\r\n// getSourceFeedbackManual: (dispatch) => {\r\n// dispatch({ type: requestSourceFeedbackType });\r\n\r\n// getSourceFeedback().then(data => {\r\n// dispatch({ type: receiveSourceFeedbackType, sourceFeedback: data });\r\n// }).catch(ex => {\r\n// // todo\r\n// }); \r\n// }\r\n//}\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestSourceFeedbackType ||\r\n action.type === requestSourceFeedbackUpdateType ||\r\n action.type === requestSourceFeedbackTypeMessageMap) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveSourceFeedbackTypeMessageMap ||\r\n action.type === receiveSourceFeedbackType) {\r\n return {\r\n ...state,\r\n ...action,\r\n isLoading: false\r\n };\r\n }\r\n\r\n if (action.type === receiveSourceFeedbackUpdateType) {\r\n return {\r\n ...state,\r\n sourceFeedback: [...state.sourceFeedback, ...action.sourceFeedback],\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","export function sortAscending(propName) {\r\n return function (a, b) {\r\n if (a[propName] < b[propName])\r\n return -1;\r\n if (a[propName] > b[propName])\r\n return 1;\r\n return 0;\r\n };\r\n};\r\n\r\nexport function sortDescending(propName) {\r\n return function (a, b) {\r\n if (a[propName] > b[propName])\r\n return -1;\r\n if (a[propName] < b[propName])\r\n return 1;\r\n return 0;\r\n };\r\n};\r\n\r\n\r\n\r\n","import { sortAscending } from '../helpers/sort';\r\n\r\nconst requestSdmType = 'REQUEST_SDM';\r\nconst receiveSdmType = 'RECEIVE_SDM';\r\n\r\nconst requestNonSdmType = 'REQUEST_NON_SDM';\r\nconst receiveNonSdmType = 'RECEIVE_NON_SDM';\r\nconst initialState = {\r\n all: [],\r\n allNonSdms: [],\r\n\r\n withCaseTracking: [],\r\n withoutCaseTracking: [],\r\n\r\n withMonitoring: [],\r\n withoutMonitoring: [],\r\n\r\n withNameSearch: [],\r\n withoutNameSearch: [],\r\n\r\n withTwoPartSearch: [],\r\n withoutTwoPartSearch: [],\r\n\r\n isLoading: false\r\n};\r\n\r\n\r\n\r\nexport const actionCreators = {\r\n requestSdms: () => async (dispatch, getState) => {\r\n\r\n if (getState().scraperDefinitionModels.all.length > 0 || getState().scraperDefinitionModels.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestSdmType });\r\n\r\n const url = `api/Sdm/GetSdms`;\r\n const response = await fetch(url);\r\n const all = await response.json();\r\n\r\n all.sort(sortAscending(\"scraperName\"));\r\n\r\n //let withCaseTracking = all.filter(item => item.hasCaseTracking && item.dataSourceType === 'Court' );\r\n //let withoutCaseTracking = all.filter(item => !item.hasCaseTracking && item.dataSourceType === 'Court');\r\n //let withMonitoring = all.filter(item => item.hasMonitoring/* && item.dataSourceType === 'Court'*/);\r\n //let withoutMonitoring = all.filter(item => !item.hasMonitoring/* && item.dataSourceType === 'Court'*/);\r\n //let withNameSearch = all.filter(item => item.hasNameSearch && item.dataSourceType === 'Court');\r\n //let withoutNameSearch = all.filter(item => !item.hasNameSearch && item.dataSourceType === 'Court');\r\n //let withTwoPartSearch = all.filter(item => item.hasTwoPartSearch);\r\n //let withoutTwoPartSearch = all.filter(item => !item.hasTwoPartSearch);\r\n\r\n //let withSaveToDB = all.filter(item => item.setupToSaveInHistoricalDB);\r\n //let withoutSaveToDB = all.filter(item => !item.setupToSaveInHistoricalDB);\r\n\r\n let courts = all.filter(item => item.dataSourceType === 'Court');\r\n let sexOffenderRegistries = all.filter(item => item.dataSourceType === 'SexOffenderRegistry');\r\n let arrests = all.filter(item => item.dataSourceType === 'Arrest');\r\n \r\n dispatch({\r\n type: receiveSdmType,\r\n data: {\r\n all,\r\n\r\n //withCaseTracking,\r\n //withoutCaseTracking,\r\n\r\n //withMonitoring,\r\n //withoutMonitoring,\r\n\r\n //withNameSearch,\r\n //withoutNameSearch,\r\n\r\n //withTwoPartSearch,\r\n //withoutTwoPartSearch,\r\n\r\n //withSaveToDB,\r\n //withoutSaveToDB,\r\n\r\n courts,\r\n sexOffenderRegistries,\r\n arrests\r\n }\r\n });\r\n },\r\n requestNonSdms: () => async (dispatch, getState) => {\r\n\r\n if (getState().scraperDefinitionModels.allNonSdms.length > 0 || getState().scraperDefinitionModels.isLoading) {\r\n // Don't issue a duplicate request (we already have or are loading the requested data)\r\n return;\r\n }\r\n\r\n dispatch({ type: requestSdmType });\r\n\r\n const url = `api/Sdm/GetNonSdms`;\r\n const response = await fetch(url);\r\n const allNonSdms = await response.json();\r\n\r\n allNonSdms.sort(sortAscending(\"scraperName\"));\r\n\r\n dispatch({\r\n type: receiveNonSdmType,\r\n data: {\r\n allNonSdms\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport const reducer = (state, action) => {\r\n state = state || initialState;\r\n\r\n if (action.type === requestSdmType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveSdmType) {\r\n return {\r\n ...state,\r\n ...action.data,\r\n isLoading: false\r\n };\r\n }\r\n\r\n if (action.type === requestNonSdmType) {\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n }\r\n\r\n if (action.type === receiveNonSdmType) {\r\n return {\r\n ...state,\r\n ...action.data,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import React from 'react';\r\nexport default React.createContext('ui');\r\n","import React, { Component } from 'react'\r\nimport Chart from \"chart.js\";\r\nimport { connect } from 'react-redux';\r\nimport { actionCreators as scraperDetailActionCreators } from '../../store/ScraperDetailStore';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { lighten, makeStyles } from '@material-ui/core/styles';\r\nimport { draw, generate } from 'patternomaly'\r\n\r\nfunction groupByGetter(list, keyGetter) {\r\n const map = new Map();\r\n list.forEach((item) => {\r\n const key = keyGetter(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n}\r\n\r\nclass ScraperOverTimeChart extends Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n this.chartRef = React.createRef();\r\n this.updateChart = this.updateChart.bind(this);\r\n this.chart = null;\r\n }\r\n\r\n classes = makeStyles(theme => ({\r\n progress: {\r\n margin: theme.spacing(2),\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block'\r\n },\r\n }));\r\n\r\n groupBy() {\r\n return function (xs, key) {\r\n return xs.reduce(function (rv, x) {\r\n (rv[x[key]] = rv[x[key]] || []).push(x);\r\n return rv;\r\n }, {});\r\n };\r\n }\r\n\r\n getGroups(data, propertyName) {\r\n let grouped = this.groupBy()(data, propertyName);\r\n let asArray = Object.keys(grouped).map(function (key) {\r\n return [key, grouped[key]];\r\n });\r\n\r\n return asArray.sort(function (a, b) {\r\n return a > b;\r\n });\r\n }\r\n\r\n updateChart() {\r\n const scraperOverTimeChartRef = this.chartRef.current.getContext(\"2d\");\r\n\r\n let data = this.props.data.map(d => {\r\n return {\r\n x: d['dateTime'].slice(0, 10),\r\n y: d['count'],\r\n z: d['caseCount'],\r\n }\r\n })\r\n\r\n //let data = Array.from(groupByGetter(this.props.data, e => {\r\n // let theDate = new Date(e[this.props.dateField]);\r\n\r\n // theDate.setHours(0);\r\n // theDate.setMinutes(0);\r\n // theDate.setSeconds(0);\r\n // theDate.setMilliseconds(0);\r\n\r\n // return theDate.toISOString().slice(0, 10);\r\n //})).map(e => {\r\n // return {\r\n // x: e[0],\r\n // y: e[1].length,\r\n // items: e[1]\r\n // }\r\n //});\r\n \r\n let caseData = data.map(d => {\r\n return {\r\n x: d.x,\r\n y: d.z\r\n }\r\n });\r\n\r\n var N = 100;\r\n let colors = Array.apply(null, { length: N }).map(() => draw('square', '#455368'));\r\n \r\n if (this.chart) this.chart.destroy();\r\n this.chart = new Chart(scraperOverTimeChartRef, {\r\n type: 'bar',\r\n data: {\r\n datasets: [\r\n {\r\n label: \"Records\",\r\n data,\r\n //color: \"rgba(69, 83, 104, .5)\"\r\n backgroundColor: \"rgba(69, 83, 104, 1)\",//\"#455368\",//\"rgba(69, 83, 104, .5)\",//\"#455368\",\r\n },\r\n //{\r\n // label: \"Cases\",\r\n // data: caseData,\r\n // backgroundColor: \"rgba(69, 83, 104, .5)\",//\"#455368\",\r\n //}\r\n ]\r\n },\r\n options: {\r\n animation: false,\r\n scales: {\r\n bounds: 'ticks',\r\n ticks: {\r\n source: 'data'\r\n },\r\n xAxes: [{\r\n source: 'auto',\r\n type: 'time',\r\n time: {\r\n unit: 'day',\r\n unitStepSize: 3,\r\n displayFormats: {\r\n day: 'MMM DD' //MMM D\r\n },\r\n },\r\n //distribution: 'series'\r\n }],\r\n //yAxes: [{\r\n // scaleLabel: {\r\n // display: true,\r\n // labelString: ''\r\n // }\r\n //}]\r\n }\r\n }\r\n });\r\n\r\n this.updateHandlers();\r\n }\r\n\r\n updateHandlers() {\r\n //this.chartRef.current.onclick = evt => {\r\n // let element = this.chart.getElementsAtEvent(evt)[0];\r\n // if (element && element._model && element._model.label)\r\n // this.props.showDetailPane(element._model.label,
);\r\n //}\r\n }\r\n\r\n componentWillUnmount() {\r\n //this.chartRef.destroy();\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.data != this.props.data) {\r\n this.updateChart();\r\n }\r\n if (prevProps.showDetailPane != this.props.showDetailPane) {\r\n this.updateHandlers();\r\n }\r\n }\r\n componentDidMount() {\r\n if (this.props.data && this.props.data.length)\r\n this.updateChart();\r\n }\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\n//export default connect()(ScraperOverTimeChart);\r\nexport default connect(state => {\r\n return {\r\n ...(state.scraperDetail)\r\n }\r\n},\r\n {\r\n requestScraperDetail: scraperDetailActionCreators.requestScraperDetail\r\n },(propsFromState, propsFromDispatch, ownProps) => {\r\n return {\r\n ...propsFromState,\r\n ...propsFromDispatch,\r\n ...ownProps\r\n }\r\n})(ScraperOverTimeChart);","export default function (start_color, end_color, percent) {\r\n // strip the leading # if it's there\r\n start_color = start_color.replace(/^\\s*#|\\s*$/g, '');\r\n end_color = end_color.replace(/^\\s*#|\\s*$/g, '');\r\n\r\n // convert 3 char codes --> 6, e.g. `E0F` --> `EE00FF`\r\n if (start_color.length == 3) {\r\n start_color = start_color.replace(/(.)/g, '$1$1');\r\n }\r\n\r\n if (end_color.length == 3) {\r\n end_color = end_color.replace(/(.)/g, '$1$1');\r\n }\r\n\r\n // get colors\r\n var start_red = parseInt(start_color.substr(0, 2), 16),\r\n start_green = parseInt(start_color.substr(2, 2), 16),\r\n start_blue = parseInt(start_color.substr(4, 2), 16);\r\n\r\n var end_red = parseInt(end_color.substr(0, 2), 16),\r\n end_green = parseInt(end_color.substr(2, 2), 16),\r\n end_blue = parseInt(end_color.substr(4, 2), 16);\r\n\r\n // calculate new color\r\n var diff_red = end_red - start_red;\r\n var diff_green = end_green - start_green;\r\n var diff_blue = end_blue - start_blue;\r\n\r\n diff_red = ((diff_red * percent) + start_red).toString(16).split('.')[0];\r\n diff_green = ((diff_green * percent) + start_green).toString(16).split('.')[0];\r\n diff_blue = ((diff_blue * percent) + start_blue).toString(16).split('.')[0];\r\n\r\n // ensure 2 digits by color\r\n if (diff_red.length == 1) diff_red = '0' + diff_red\r\n if (diff_green.length == 1) diff_green = '0' + diff_green\r\n if (diff_blue.length == 1) diff_blue = '0' + diff_blue\r\n\r\n return '#' + diff_red + diff_green + diff_blue;\r\n};","const stateNames = {\r\n \"AL\": \"Alabama\",\r\n \"AK\": \"Alaska\",\r\n \"AS\": \"American Samoa\",\r\n \"AZ\": \"Arizona\",\r\n \"AR\": \"Arkansas\",\r\n \"CA\": \"California\",\r\n \"CO\": \"Colorado\",\r\n \"CT\": \"Connecticut\",\r\n \"DE\": \"Delaware\",\r\n \"DC\": \"District Of Columbia\",\r\n \"FM\": \"Federated States Of Micronesia\",\r\n \"FL\": \"Florida\",\r\n \"GA\": \"Georgia\",\r\n \"GU\": \"Guam\",\r\n \"HI\": \"Hawaii\",\r\n \"ID\": \"Idaho\",\r\n \"IL\": \"Illinois\",\r\n \"IN\": \"Indiana\",\r\n \"IA\": \"Iowa\",\r\n \"KS\": \"Kansas\",\r\n \"KY\": \"Kentucky\",\r\n \"LA\": \"Louisiana\",\r\n \"ME\": \"Maine\",\r\n \"MH\": \"Marshall Islands\",\r\n \"MD\": \"Maryland\",\r\n \"MA\": \"Massachusetts\",\r\n \"MI\": \"Michigan\",\r\n \"MN\": \"Minnesota\",\r\n \"MS\": \"Mississippi\",\r\n \"MO\": \"Missouri\",\r\n \"MT\": \"Montana\",\r\n \"NE\": \"Nebraska\",\r\n \"NV\": \"Nevada\",\r\n \"NH\": \"New Hampshire\",\r\n \"NJ\": \"New Jersey\",\r\n \"NM\": \"New Mexico\",\r\n \"NY\": \"New York\",\r\n \"NC\": \"North Carolina\",\r\n \"ND\": \"North Dakota\",\r\n \"MP\": \"Northern Mariana Islands\",\r\n \"OH\": \"Ohio\",\r\n \"OK\": \"Oklahoma\",\r\n \"OR\": \"Oregon\",\r\n \"PW\": \"Palau\",\r\n \"PA\": \"Pennsylvania\",\r\n \"PR\": \"Puerto Rico\",\r\n \"RI\": \"Rhode Island\",\r\n \"SC\": \"South Carolina\",\r\n \"SD\": \"South Dakota\",\r\n \"TN\": \"Tennessee\",\r\n \"TX\": \"Texas\",\r\n \"UT\": \"Utah\",\r\n \"VT\": \"Vermont\",\r\n \"VI\": \"Virgin Islands\",\r\n \"VA\": \"Virginia\",\r\n \"WA\": \"Washington\",\r\n \"WV\": \"West Virginia\",\r\n \"WI\": \"Wisconsin\",\r\n \"WY\": \"Wyoming\"\r\n}\r\n\r\nexport default stateNames;","import { makeStyles } from '@material-ui/core/styles';\r\nexport default makeStyles(theme => ({\r\n progress: {\r\n margin: theme.spacing(2),\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block'\r\n },\r\n}));","import React, { useContext, useEffect, useState, Fragment } from 'react';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport { getScraperDetails, getStateDetails } from '../../api/GetScraperDetails';\r\nimport SwipeableViews from 'react-swipeable-views';\r\nimport ScraperOverTime from '../charts/ScraperOverTimeChart';\r\nimport GetGradientColor from '../../helpers/getGradientColor';\r\nimport { connect } from 'react-redux';\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\r\nimport { actionCreators as historicalDataActionCreators } from '../../store/HistoricalData';\r\nimport { actionCreators as sdmActionCreators } from '../../store/ScraperDefinitionModels';\r\nimport { actionCreators as sourceDetailActionCreators } from '../../store/ScraperDetailStore';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Fade from '@material-ui/core/Fade';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport UIContext from '../../contexts/uiContext'\r\nimport stateNames from '../../helpers/stateNames';\r\n//import StateDetails from '../details/stateDetails';\r\nimport Link from '@material-ui/core/Link';\r\nimport progress from '../../styles/progress';\r\nimport { setSourceStatus } from '../../api/GetHistoricalData';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n typography: {\r\n padding: theme.spacing(2),\r\n },\r\n secondaryColor: {\r\n color: theme.palette.secondary.main\r\n }\r\n}));\r\n\r\nlet ScraperByState = props => {\r\n const theme = useTheme();\r\n let otherClasses = useStyles();\r\n function numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n function cleanName(str) {\r\n //str = str.replace('City', '').replace('city', '');\r\n str = str.replace('ñ', 'n');\r\n if (str.indexOf(' (') !== -1)\r\n return str.substr(0, str.indexOf(' ('));\r\n if (str.indexOf(' |') !== -1)\r\n return str.substr(0, str.indexOf(' |'));\r\n return str;\r\n }\r\n\r\n let classes = progress();\r\n\r\n let privileged = props.advanced && sessionStorage.getItem('loggedIn') == 'true';\r\n let switchContainerClass = {\r\n justifyContent: 'flex-start',\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n };\r\n\r\n let userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\r\n let fromDbSelectedFilter = userSettings['selectedFilter'];\r\n\r\n let [selectedFilter, setSelectedFilter] = React.useState(props.advanced && sessionStorage.getItem('loggedIn') == 'true' ? fromDbSelectedFilter : 'all');\r\n \r\n let [depth, setDepth] = useState(-1);\r\n\r\n let [combinedPopulationCoverage, setCombinedPopulationCoverage] = useState(0);\r\n let [combinedPopulationCoveragePercentage, setCombinedPopulationCoveragePercentage] = useState(0);\r\n\r\n let [courtPopulationCoverage, setCourtPopulationCoverage] = useState(0);\r\n let [courtPopulationCoveragePercentage, setCourtPopulationCoveragePercentage] = useState(0);\r\n\r\n let [arrestPopulationCoverage, setArrestPopulationCoverage] = useState(0);\r\n let [arrestPopulationCoveragePercentage, setArrestPopulationCoveragePercentage] = useState(0);\r\n\r\n let [populationCoverage, setPopulationCoverage] = useState(0);\r\n let [populationCoveragePercentage, setPopulationCoveragePercentage] = useState(0);\r\n let [statisticsTitle, setStatisticsTitle] = useState('United States');\r\n let [totalPopulation, setTotalPopulation] = useState(0);\r\n\r\n let [totalNumJurisdictions, setTotalNumJurisdictions] = useState(0);\r\n let [totalNumCoveredJurisdictions, setTotalNumCoveredJurisdictions] = useState(0);\r\n let [numCoveredJurisdictionsPercentage, setNumCoveredJurisdictionsPercentage] = useState(0);\r\n let [missingJurisdictions, setMissingJurisdictions] = useState([]);\r\n let [supportedJurisdictions, setSupportedJurisdictions] = useState([]); \r\n let [supportedCourtTypes, setSupportedCourtTypes] = useState([]); \r\n let [supportedSourcesLocation, setSupportedSourcesLocation] = useState(''); \r\n let supportedLocationIsState = supportedSourcesLocation.indexOf('-') == -1;\r\n let [currentState, setCurrentState] = useState(null);\r\n let [showProportionalToJurisdictions, setShowProportionalToJurisdictions] = useState(false);\r\n let [showProportionalToPopulation, setShowProportionalToPopulation] = useState(true);\r\n let [showSetupToSaveInHistoricalDB, setShowSetupToSaveInHistoricalDB] = useState(true);\r\n let onSwitchChange = (event) => {\r\n \r\n let id = (typeof (event) === 'string')\r\n ? event\r\n : event.target.id;\r\n setSelectedFilter(id);\r\n\r\n let userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\r\n userSettings['selectedFilter'] = id;\r\n localStorage.setItem('userSettings', JSON.stringify(userSettings));\r\n\r\n renderMap(id);\r\n };\r\n\r\n let onShowProportionalToPopulationChange = (event) => {\r\n if (!showProportionalToPopulation) {\r\n setShowProportionalToJurisdictions(false);\r\n showProportionalToJurisdictions = false;\r\n }\r\n\r\n setShowProportionalToPopulation(!showProportionalToPopulation);\r\n showProportionalToPopulation = !showProportionalToPopulation;\r\n renderMap(selectedFilter);\r\n }\r\n\r\n let onShowProportionalToJurisdictionsChange = (event) => {\r\n if (!showProportionalToJurisdictions) {\r\n setShowProportionalToPopulation(false);\r\n showProportionalToPopulation = false;\r\n }\r\n\r\n setShowProportionalToJurisdictions(!showProportionalToJurisdictions);\r\n showProportionalToJurisdictions = !showProportionalToJurisdictions;\r\n \r\n renderMap(selectedFilter);\r\n }\r\n\r\n let onShowSetupToSaveInHistoricalDBChange = (event) => {\r\n setShowSetupToSaveInHistoricalDB(!showSetupToSaveInHistoricalDB);\r\n showSetupToSaveInHistoricalDB = !showSetupToSaveInHistoricalDB;\r\n renderMap(selectedFilter);\r\n }\r\n\r\n const context = useContext(UIContext);\r\n let ref = React.createRef();\r\n let stateOnClick = function (stateName) {\r\n let args = { ...props.sdms };\r\n Object.keys(args).forEach(function (key) { if (Array.isArray(args[key])) args[key] = args[key].filter(item => item.usaState == stateName); });\r\n window.numCourts = args.courts.length;\r\n window.numArrests = args.arrests.length;\r\n window.numRegistries = args.sexOffenderRegistries.length;\r\n\r\n let mapLink = `/map-usa/${stateName}`;\r\n let header = (
\r\n
\r\n {stateNames[stateName] || \"Unknown State\"}\r\n
\r\n {/*
\r\n \r\n
*/}\r\n
);\r\n\r\n context.setDetailHeader(header);\r\n //context.setDetailBody();\r\n if (window.elevation) context.openDetailPane(true);\r\n }\r\n\r\n let countyOnClick = async function (jurisdiction) {\r\n let args = { ...props.sdms, allNonSdms: [] };\r\n Object.keys(args).forEach(function (key) {\r\n if (Array.isArray(args[key])) args[key] = args[key].filter(item =>\r\n Object.keys(item.courtUidsBasedOnFips).map(k => k.toString()).filter(i => i == jurisdiction.fips.toString()).length != 0);\r\n });\r\n\r\n //let header = (
\r\n //
\r\n // {stateNames[jurisdiction.state]} - {jurisdiction.county}\r\n //
\r\n //
);\r\n\r\n calculateSupportFunc(currentState.toUpperCase(), 'all', args, true);\r\n\r\n //context.setDetailHeader(header);\r\n ////context.setDetailBody();\r\n //if (window.elevation) context.openDetailPane(true);\r\n }\r\n\r\n //let theColors = {\r\n // fullSupport: '#2E7F18', // #45731E\r\n // majoritySupport: '#45731E', // #675E24\r\n // moderateSupport: '#675E24', //#8D472B\r\n // limitedSupport: '#8D472B', //#B13433\r\n // noSupport: '#B13433', //#C82538\r\n //} \r\n\r\n\r\n let theColors = ['gray'];\r\n\r\n let alternativeNoSupportColor = '#0d47a1';\r\n if (window.elevation)\r\n theColors.push(alternativeNoSupportColor);\r\n \r\n let maxColorIndex = 50;\r\n for (let index = 1; index != maxColorIndex; ++index) {\r\n let theColor = GetGradientColor('#650f0f', '#FFFF00', index / (maxColorIndex - 1));\r\n\r\n theColors.push(theColor);\r\n }\r\n for (let index = 2; index != maxColorIndex; ++index) {\r\n theColors.push(GetGradientColor('#FFFF00', '#086508', index / (maxColorIndex - 1)));\r\n }\r\n\r\n\r\n // '#FF0000', // <-- red\r\n // '#FF1100',\r\n // '#FF2200',\r\n // '#FF3300',\r\n // '#FF4400',\r\n // '#FF5500',\r\n // '#FF6600',\r\n // '#FF7700',\r\n // '#FF8800',\r\n // '#FF9900',\r\n // '#FFAA00',\r\n // '#FFBB00',\r\n // '#FFCC00',\r\n // '#FFDD00',\r\n // '#FFEE00',\r\n // '#FFFF00',// <-- yellow\r\n // '#EEFF00',\r\n // '#DDFF00',\r\n // '#CCFF00',\r\n // '#BBFF00',\r\n // '#AAFF00',\r\n // '#99FF00',\r\n // '#88FF00',\r\n // '#77FF00',\r\n // '#66FF00',\r\n // '#55FF00',\r\n // '#44FF00',\r\n // '#33FF00',\r\n // '#22FF00',\r\n // '#11FF00',\r\n // '#00FF00',// <-- green\r\n //];\r\n \r\n\r\n let renderState = (itemName, theSelectedFilter) => {\r\n supportedSourcesLocation = stateNames[(itemName || currentState).toUpperCase()];\r\n setSupportedSourcesLocation(supportedSourcesLocation)\r\n supportedLocationIsState = supportedSourcesLocation.indexOf('-') == -1;\r\n let stateMapId = 'usa_' + itemName;\r\n usaDrilldownConfig.shapes[0].options.name = stateMapId;\r\n // access state, then access county\r\n\r\n //props.requestStateDetail(itemName);\r\n\r\n let combinedPopulationSupported = 0;\r\n let combinedNumCoveredJurisdictions = 0;\r\n\r\n let courtPopulationSupported = 0;\r\n let courtNumCoveredJurisdictions = 0;\r\n\r\n let arrestPopulationSupported = 0;\r\n let arrestNumCoveredJurisdictions = 0;\r\n\r\n let populationSupported = 0;\r\n let statewidePopulation = 0;\r\n let totalNumCoveredJurisdictions = 0;\r\n\r\n let localMissingJurisdictions = [];\r\n let localSupportedJurisdictions = [];\r\n\r\n let objectOfCounties = {};\r\n let counties = window.zingchart.maps.data[stateMapId];\r\n let totalNoJurisdictions = 0;\r\n calculateSupportFunc(itemName.toUpperCase(), 'all', { ...props.sdms, allNonSdms: [] }, true);\r\n Object.entries(counties).filter(([key, value]) => {\r\n if (key.indexOf('_') == 0)\r\n return false;\r\n return true;\r\n }).forEach(([key, value]) => {\r\n totalNoJurisdictions += 1; \r\n // calculate percentage supported\r\n\r\n let countyName = cleanName(counties[key].tooltip.text);\r\n\r\n let jurisdiction = props.jurisdictions.filter(j => j.state == itemName.toUpperCase() && j.county.toLowerCase().replace(/[\\. ',:-]+/g, \"\").includes(countyName.toLowerCase().replace(/[\\. ',:-]+/g, \"\")))[0];\r\n if (key == \"SMI\" && itemName == \"tx\")\r\n jurisdiction = props.jurisdictions.filter(j => j.state == itemName.toUpperCase() && j.county.toLowerCase().replace(/[\\. ',:-]+/g, \"\").includes(countyName.toLowerCase().replace(/[\\. ',:-]+/g, \"\")))[1];\r\n if (jurisdiction) {\r\n statewidePopulation = jurisdiction.statewidePopulation;\r\n let args = { ...props.sdms, allNonSdms: [] };\r\n Object.keys(args).forEach(function (key) {\r\n if (Array.isArray(args[key])) args[key] = args[key].filter(item =>\r\n Object.keys(item.courtUidsBasedOnFips).map(k => k.toString()).filter(i => i == jurisdiction.fips.toString()).length != 0);\r\n });\r\n let support = calculateSupportFunc(itemName.toUpperCase(), theSelectedFilter, args);\r\n\r\n\r\n //var isSedgwick = itemName == 'ks' && (countyName.indexOf('Sedgwick') != -1);\r\n //if (isSedgwick && theSelectedFilter == 'courts') {\r\n // support = '#FFFF00';\r\n //}\r\n //else if (isSedgwick && (theSelectedFilter == 'arrests' || theSelectedFilter == 'all')) {\r\n // support = '#086508';\r\n //}\r\n\r\n var isIlCook = itemName == 'il' && (countyName.indexOf('Cook') != -1);\r\n if (isIlCook && theSelectedFilter == 'courts') {\r\n support = '#FFFF00';\r\n }\r\n else if (isIlCook && (theSelectedFilter == 'arrests' || theSelectedFilter == 'all')) {\r\n support = '#086508';\r\n }\r\n \r\n\r\n if (!(support == 'gray' || support == alternativeNoSupportColor)) {\r\n populationSupported += jurisdiction.jurisdictionPopulation;\r\n totalNumCoveredJurisdictions += 1;\r\n localSupportedJurisdictions.push([countyName, jurisdiction.jurisdictionPopulation]);\r\n } else {\r\n localMissingJurisdictions.push([countyName, jurisdiction.jurisdictionPopulation]);\r\n }\r\n objectOfCounties[key] = { 'background-color': support };\r\n\r\n\r\n let combinedSupport = calculateSupportFunc(itemName.toUpperCase(), 'all', args);\r\n\r\n if (!(combinedSupport == 'gray' || combinedSupport == alternativeNoSupportColor)) {\r\n combinedPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n combinedNumCoveredJurisdictions += 1\r\n } else {\r\n\r\n }\r\n\r\n let courtSupport = calculateSupportFunc(itemName.toUpperCase(), 'courts', args);\r\n\r\n if (!(courtSupport == 'gray' || courtSupport == alternativeNoSupportColor)) {\r\n if (!isIlCook) {\r\n courtPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n courtNumCoveredJurisdictions += 1\r\n }\r\n } else {\r\n\r\n }\r\n\r\n let arrestSupport = calculateSupportFunc(itemName.toUpperCase(), 'arrests', args);\r\n\r\n if (!(arrestSupport == 'gray' || arrestSupport == alternativeNoSupportColor)) {\r\n arrestPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n arrestNumCoveredJurisdictions += 1\r\n } else {\r\n\r\n }\r\n\r\n //if (isSedgwick)\r\n // counties[key].tooltip.text = `Sedgwick | Court Support Limited To Wichita City`;\r\n //if (isIlCook)\r\n // counties[key].tooltip.text = `Cook | Partial Court Support`;\r\n }\r\n else {\r\n if (countyName == \"Golden Valley\" && (theSelectedFilter == 'courts' || theSelectedFilter == 'all')) {\r\n localSupportedJurisdictions.push(['Golden Valley', 1]);\r\n objectOfCounties[key] = { 'background-color': '#086508' };\r\n } else if (countyName == \"Golden Valley\" && (theSelectedFilter == 'arrests')) {\r\n localMissingJurisdictions.push(['Golden Valley', 1]);\r\n objectOfCounties[key] = { 'background-color': 'gray' };\r\n } else if (itemName == 'sd' && countyName == \"Shannon\" && (theSelectedFilter == 'courts' || theSelectedFilter == 'all')) {\r\n localSupportedJurisdictions.push(['Shannon', 8189]);\r\n objectOfCounties[key] = { 'background-color': '#086508' };\r\n }\r\n else if (itemName == 'sd' && countyName == \"Shannon\" && (theSelectedFilter == 'arrests')) {\r\n localSupportedJurisdictions.push(['Shannon', 8189]);\r\n objectOfCounties[key] = { 'background-color': '#808080' };\r\n }\r\n else {\r\n //localMissingJurisdictions.push([countyName, -1]);\r\n //objectOfCounties[key] = { 'background-color': '#086508' };\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n let numCoveredJurisdictions = ((theSelectedFilter == 'courts' || theSelectedFilter == 'all') && (itemName == 'sd' || itemName == \"nd\" || itemName == \"hi\")) ? totalNoJurisdictions : totalNumCoveredJurisdictions; // \r\n\r\n setTotalNumJurisdictions(totalNoJurisdictions);\r\n setTotalNumCoveredJurisdictions(numCoveredJurisdictions);\r\n //setNumCoveredJurisdictionsPercentage(Math.floor((totalNumCoveredJurisdictions / totalNoJurisdictions) * 100));\r\n let totalJurisdictionCoveredPercentage = parseFloat(Math.round((numCoveredJurisdictions / totalNoJurisdictions) * 10000) / 100);\r\n setNumCoveredJurisdictionsPercentage(totalJurisdictionCoveredPercentage);\r\n\r\n //let courtJurisdictionCoveredPercentage = parseFloat(Math.round((courtNumCoveredJurisdictions / totalNoJurisdictions) * 10000) / 100);\r\n //setNumCoveredJurisdictionsPercentage(courtJurisdictionCoveredPercentage); \r\n\r\n let oneHundredPercentCoverage = totalJurisdictionCoveredPercentage.toString() == \"100\" || itemName == 'il' || itemName == 'sd' || itemName == \"nd\" || itemName == \"hi\" || itemName == \"nc\" || itemName == 'va' || itemName == 'ks' || itemName == 'co';\r\n\r\n setStatisticsTitle(stateNames[itemName.toUpperCase()]);\r\n setTotalPopulation(statewidePopulation);\r\n\r\n setCombinedPopulationCoverage(oneHundredPercentCoverage ? statewidePopulation : combinedPopulationSupported);\r\n setCombinedPopulationCoveragePercentage(oneHundredPercentCoverage ? 100 : parseFloat(Math.round((combinedPopulationSupported / statewidePopulation) * 10000) / 100));\r\n\r\n //setPopulationCoverage(oneHundredPercentCoverage ? statewidePopulation : populationSupported);\r\n //setPopulationCoveragePercentage(oneHundredPercentCoverage ? 100 : parseFloat(Math.round((populationSupported / statewidePopulation) * 10000) / 100));\r\n\r\n setCourtPopulationCoverage(itemName == 'ks' || itemName == 'mo' || itemName == 'md' || itemName == 'ia' || itemName == 'co' || itemName == 'sd' || itemName == 'nd' || itemName == 'hi' || itemName == 'va' || itemName == 'nc' ? statewidePopulation : courtPopulationSupported);\r\n setCourtPopulationCoveragePercentage(itemName == 'ks' || itemName == 'mo' || itemName == 'md' || itemName == 'ia' || itemName == 'co' || itemName == 'sd' || itemName == 'nd' || itemName == 'hi' || itemName == 'va' || itemName == 'nc' ? 100 : parseFloat(Math.round((courtPopulationSupported / statewidePopulation) * 10000) / 100));\r\n\r\n //if (itemName == 'ks') {\r\n // setCourtPopulationCoverage(2397898); // population minus sedgwick, since we only cover Wichita\r\n // setCourtPopulationCoveragePercentage(parseFloat(Math.round((2397898 / statewidePopulation) * 10000) / 100)); // population minus sedgwick, since we only cover Wichita\r\n //}\r\n\r\n //if (itemName == 'il') {\r\n // setCourtPopulationCoverage(7566130); // population minus cook, since we only partially cover Cook\r\n // setCourtPopulationCoveragePercentage(parseFloat(Math.round((7566130 / statewidePopulation) * 10000) / 100)); // population minus cook, since we only partiall cover Cook\r\n //}\r\n\r\n setArrestPopulationCoverage(false ? statewidePopulation : arrestPopulationSupported);\r\n setArrestPopulationCoveragePercentage(false ? 100 : parseFloat(Math.round((arrestPopulationSupported / statewidePopulation) * 10000) / 100));\r\n\r\n setMissingJurisdictions(localMissingJurisdictions);\r\n setSupportedJurisdictions(localSupportedJurisdictions);\r\n \r\n // populate right side\r\n\r\n\r\n usaDrilldownConfig.shapes[0].options.style.items = objectOfCounties;\r\n\r\n // load right-side pane\r\n stateOnClick(itemName.toUpperCase());\r\n\r\n setTimeout(function () { // makes the ui less jittery after enlarging a state\r\n window.zingchart.exec('usaChart', 'setdata', {\r\n data: usaDrilldownConfig\r\n });\r\n }, 0);\r\n }\r\n\r\n //drilldown chart configuration\r\n let usaDrilldownConfig = {\r\n gui: {\r\n contextMenu: {\r\n button: {\r\n visible: false\r\n }\r\n },\r\n gear: {\r\n type: 'hamburger',\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n shapes: [\r\n { //Drilldown maps.\r\n type: 'zingchart.maps',\r\n options: {\r\n name: 'state',\r\n\r\n zooming: false,\r\n panning: false,\r\n scrolling: false,\r\n\r\n style: {\r\n controls: {\r\n visible: false\r\n },\r\n cursor: 'pointer',\r\n backgroundColor: 'pink',\r\n hoverState: {\r\n alpha: 0.3,\r\n backgroundColor: 'white',\r\n },\r\n tooltip: {\r\n alpha: 0.8,\r\n backgroundColor: 'white',\r\n borderColor: 'white',\r\n borderRadius: 3,\r\n fontColor: 'black',\r\n fontFamily: 'Georgia',\r\n fontSize: 12,\r\n textAlpha: 1\r\n }\r\n }\r\n }\r\n },\r\n { //Button to go back to main map.\r\n id: 'back_button',\r\n type: 'rectangle',\r\n height: 25,\r\n width: 40,\r\n x: 20,\r\n y: 20,\r\n\r\n backgroundColor: '#C4C4C4',\r\n borderRadius: 3,\r\n cursor: 'hand',\r\n //fontColor: 'white',\r\n hoverState: {\r\n alpha: 0.3,\r\n backgroundColor: 'white'\r\n },\r\n label: {\r\n text: 'Back',\r\n }\r\n }\r\n ]\r\n };\r\n\r\n // used in the shape_click event to determine if we should drilldown\r\n function hasStateDrilldownData(stateMapId) {\r\n let drillDownCountries = listOfStates.map(function (curVal) {\r\n return 'usa_' + curVal;\r\n });\r\n for (let i = 0; i < drillDownCountries.length; i++) {\r\n if (stateMapId === drillDownCountries[i])\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function hasCountyDrilldownData() {\r\n return true;\r\n }\r\n\r\n let styles = {\r\n filterBar: {\r\n //width: \"80%\",\r\n marginLeft: \"1em\",\r\n marginRight: \"1em\",\r\n paddingLeft: \"1em\",\r\n paddingRight: \"1em\",\r\n marginBottom: \"1em\"\r\n },\r\n formGroup: {\r\n justifyContent: \"center\",\r\n display: 'grid'\r\n }\r\n };\r\n\r\n let sourceTypeMap = {\r\n '10': 'County Court',\r\n '11': 'Circuit Court',\r\n '12': 'Common Pleas Court',\r\n '13': 'General District Court',\r\n '14': 'Municipal Court',\r\n '15': 'Mayor\\'s Court',\r\n '16': 'Justice of the Peace',\r\n '17': 'Family Court',\r\n '18': 'Probate Court',\r\n '19': 'General Civil Court',\r\n '20': 'Small Claims Court',\r\n '21': 'City Court',\r\n '22': 'Statewide Court',\r\n '23': 'District Court',\r\n '24': 'Village Court',\r\n '25': 'General Sessions',\r\n '26': 'Superior Court',\r\n '27': 'Town Court',\r\n '28': 'Magistrate Court',\r\n '29': 'Other',\r\n '30': 'Criminal Court',\r\n '31': 'Housing Court',\r\n '32': 'Community Court',\r\n '33': 'Tribal Court',\r\n '34': 'State Court',\r\n '35': 'Traffic Court',\r\n '36': 'Metro Court',\r\n '37': 'County Court at Law',\r\n '38': 'Justice Court',\r\n '39': 'Trial Court',\r\n '40': 'Constitutional Court',\r\n //'41': 'Prefile',\r\n '42': 'Judicial Bureau',\r\n '43': 'Violations Bureau',\r\n '49': 'Other',\r\n '50': 'Arrest',\r\n '51': 'Warrant / Most Wanted',\r\n //'52': 'Department Of Corrections',\r\n //'53': 'Sex Offender Registry',\r\n '54': 'Jail Booking',\r\n '59': 'Other',\r\n //'60': 'Bar Organization',\r\n '69': 'Other',\r\n '75': 'Arrest',\r\n //'89': 'Other', // (AL Use)\r\n '92': 'Texas Conviction Database',\r\n //'99': 'National Booking Source',\r\n };\r\n\r\n let listOfStates = [\"al\", \"ak\", \"az\", \"ar\", \"ca\", \"co\", \"ct\", \"de\", \"dc\", \"fl\", \"ga\", \"hi\", \"id\", \"il\", \"in\", \"ia\", \"ks\", \"ky\", \"la\", \"me\", \"md\", \"ma\", \"mi\", \"mn\", \"ms\", \"mo\", \"mt\", \"ne\", \"nv\", \"nh\", \"nj\", \"nm\", \"ny\", \"nc\", \"nd\", \"oh\", \"ok\", \"or\", \"pa\", \"ri\", \"sc\", \"sd\", \"tn\", \"tx\", \"ut\", \"vt\", \"va\", \"wa\", \"wv\", \"wi\", \"wy\"];\r\n let digitAtPos = function (number, pos)\r\n {\r\n return Math.round(Math.trunc((number / Math.pow(10.0, pos - 1) )) % 10);\r\n }\r\n let calculateSupportFunc = (stateName, theSelectedFilter, data, computeCourtTypes) => {\r\n let stateJurisdictions = props.jurisdictions.filter(j => j.state == stateName.toUpperCase());\r\n let theData = data || props.sdms;\r\n let supportedList = [];\r\n let notSupportedList = [];\r\n\r\n\r\n if (theSelectedFilter === 'caseTracking') {\r\n supportedList = theData.withCaseTracking;\r\n notSupportedList = theData.withoutCaseTracking;\r\n \r\n }\r\n else if (theSelectedFilter === 'monitoring') {\r\n supportedList = theData.withMonitoring;\r\n notSupportedList = theData.withoutMonitoring;\r\n \r\n }\r\n else if (theSelectedFilter === 'nameSearch') {\r\n supportedList = theData.withNameSearch;\r\n notSupportedList = theData.withoutNameSearch;\r\n \r\n }\r\n else if (theSelectedFilter === 'saveToDB') {\r\n supportedList = theData.withSaveToDB;\r\n notSupportedList = theData.withoutSaveToDB;\r\n \r\n }\r\n else if (theSelectedFilter === 'courts') {\r\n supportedList = theData.courts;\r\n notSupportedList = [];\r\n }\r\n else if (theSelectedFilter === 'sexOffenderRegistries') {\r\n supportedList = theData.sexOffenderRegistries;\r\n notSupportedList = [];\r\n }\r\n else if (theSelectedFilter === 'arrests') {\r\n supportedList = theData.arrests;\r\n notSupportedList = [];\r\n }\r\n else if (theSelectedFilter === 'all') {\r\n supportedList = theData.all;\r\n notSupportedList = [];\r\n }\r\n\r\n supportedList = supportedList.filter(item => item.usaState == stateName);\r\n notSupportedList = notSupportedList.filter(item => item.usaState == stateName);\r\n\r\n if (depth == 0 && theSelectedFilter === 'courts') {\r\n supportedList = supportedList.filter(item => !(item.usaState == 'IL' && item.scraperName == 'Cook County Circuit Court'));\r\n //supportedList = supportedList.filter(item => !(item.usaState == 'KS' && item.scraperName == 'Wichita Municipal Court'));\r\n }\r\n\r\n if (depth == 1 && computeCourtTypes && props.advanced && sessionStorage.getItem('loggedIn') == 'true' /*&& !Array.isArray(supportedCourtTypes)*/) {\r\n\r\n //if (supportedLocationIsState && stateName == 'NC')\r\n // setSupportedCourtTypes([sourceTypeMap['50'], sourceTypeMap['26'] + ' | 100% state pop. covered', sourceTypeMap['23'] + ' | 100% state pop. covered', sourceTypeMap['53']]);\r\n //else\r\n if (supportedLocationIsState && stateName == 'VA')\r\n setSupportedCourtTypes([sourceTypeMap['50'] + ' | Not Calculated', sourceTypeMap['11'] + ' | 100% state pop. covered', sourceTypeMap['13'] + ' | 100% state pop. covered', /*sourceTypeMap['53'] + ' | 100% state pop. covered'*/]);\r\n else if (supportedLocationIsState && stateName == 'MD')\r\n setSupportedCourtTypes([sourceTypeMap['50'] + ' | Not Calculated', sourceTypeMap['11'] + ' | 100% state pop. covered', sourceTypeMap['13'] + ' | 100% state pop. covered', /*sourceTypeMap['53'] + ' | 100% state pop. covered'*/]);\r\n else if (supportedLocationIsState && stateName == 'VT')\r\n setSupportedCourtTypes([sourceTypeMap['42'] + ' | 100% state pop. covered', /*sourceTypeMap['53'] + ' | 100% state pop. covered'*/]);\r\n else if (supportedLocationIsState && stateName == 'ME')\r\n setSupportedCourtTypes([sourceTypeMap['43'] + ' | 100% state pop. covered', sourceTypeMap['50'] + ' | Not Calculated', /*sourceTypeMap['53'] + ' | 100% state pop. covered'*/]);\r\n else {\r\n supportedList.filter(s => s.setupToSaveInHistoricalDB ).forEach(x => { \r\n\r\n var ossidCourtUidMap = x.courtUidsBasedOnFips;\r\n for (const prop in ossidCourtUidMap) {\r\n\r\n if (stateName == 'VA' && x.scraperName == \"Circuit Court\") {\r\n if (supportedCourtTypes.filter(x => x.indexOf('Circuit Court') != -1).length == 0)\r\n supportedCourtTypes.push(sourceTypeMap['11'] + ' | 100% state pop. covered');\r\n continue;\r\n }\r\n else if (stateName == 'VA' && x.scraperName == \"General Court\") {\r\n if (supportedCourtTypes.filter(x => x.indexOf('General District Court') != -1).length == 0)\r\n supportedCourtTypes.push(sourceTypeMap['13'] + ' | 100% state pop. covered');\r\n continue;\r\n }\r\n else if (stateName == 'NC') {\r\n if (supportedCourtTypes.filter(x => x.indexOf('Arrest') != -1).length == 0)\r\n supportedCourtTypes.push(sourceTypeMap['50'] + ' | Not Calculated')\r\n if (supportedCourtTypes.filter(x => x.indexOf('Superior Court') != -1).length == 0)\r\n supportedCourtTypes.push(sourceTypeMap['26'] + ' | 100% state pop. covered')\r\n if (supportedCourtTypes.filter(x => x.indexOf('District Court') != -1).length == 0)\r\n supportedCourtTypes.push(sourceTypeMap['23'] + ' | 100% state pop. covered')\r\n continue;\r\n }\r\n\r\n let ossIds = ossidCourtUidMap[prop]\r\n ossIds.forEach(oid => {\r\n if (oid.toString().length != 9 && x.usaState != \"CA\" && x.usaState != \"AL\" && x.usaState != \"AR\" && x.usaState != \"CO\") {\r\n console.log('not length 9');\r\n }\r\n\r\n let firstDigit = digitAtPos(oid, 4);\r\n let secondDigit = digitAtPos(oid, 3);\r\n let combination = firstDigit.toString() + secondDigit.toString();\r\n\r\n var sourceType = sourceTypeMap[combination];\r\n if (!sourceType)\r\n ;\r\n if (sourceType != undefined && supportedCourtTypes.filter(x => x.indexOf(sourceType) != -1).length == 0) {\r\n let uniqueFips = {};\r\n var supportedPopulation = supportedList.reduce(function (accum, current) { if (current.isStateWide) return accum; Object.keys(current.courtUidsBasedOnFips).forEach((c) => { if (!uniqueFips[c] && current.courtUidsBasedOnFips[c].filter(x => (digitAtPos(x, 4).toString() + digitAtPos(x, 3).toString()) == combination).length > 0) { let jurisdictions = stateJurisdictions.filter(sj => sj.fips == c); accum += jurisdictions.length ? jurisdictions[0].jurisdictionPopulation : 0; uniqueFips[c] = true; } }); return accum; }, 0);\r\n if (stateJurisdictions[0].statewidePopulation) {\r\n if (supportedPopulation > (stateJurisdictions[0].statewidePopulation * 1.2))\r\n supportedPopulation -= stateJurisdictions[0].statewidePopulation;\r\n }\r\n\r\n supportedCourtTypes.push(sourceType + ` | ${parseFloat(Math.round((supportedPopulation / stateJurisdictions[0].statewidePopulation * 10000) / 100))}% state pop. covered`)\r\n }\r\n \r\n })\r\n\r\n }\r\n });\r\n\r\n //for (let i = supportedCourtTypes.length; i != -1; --i) {\r\n // if (supportedCourtTypes[i].indexOf(' 0%'))\r\n //}\r\n \r\n setSupportedCourtTypes(supportedCourtTypes);\r\n return;\r\n }\r\n }\r\n //else setSupportedCourtTypes([]);\r\n \r\n\r\n\r\n if (depth <= 0 && (stateName == 'ME') && theSelectedFilter == 'courts')\r\n return \"#FFFF00\";\r\n\r\n if (depth <= 0 && (stateName == 'VT') && theSelectedFilter != 'arrests')\r\n return \"#FFFF00\";\r\n else if (depth <= 0 && (stateName == 'VT') && theSelectedFilter == 'arrests')\r\n return '#808080';\r\n if ((theSelectedFilter == 'courts' || theSelectedFilter == 'all') && (stateName == 'VA' || stateName == 'ND' || stateName == 'SD' || stateName == 'HI' || stateName == 'NC'))\r\n return theColors[theColors.length - 1];\r\n\r\n if (depth <= 0 && theSelectedFilter == 'arrests' && (stateName == 'VA'))\r\n return '#8a490b';\r\n\r\n\r\n if (supportedList.length === 0 && notSupportedList.filter(s => s.dataSourceType != 'sexOffenderRegistry').length > 0) {\r\n return theColors[1];//'darkblue';//theColors[1];\r\n }\r\n\r\n\r\n\r\n if (theSelectedFilter == 'courts') {\r\n\r\n }\r\n\r\n let fraction = -1;\r\n\r\n if ((showSetupToSaveInHistoricalDB || showProportionalToJurisdictions || showProportionalToPopulation)/* && (theSelectedFilter == 'courts' || theSelectedFilter == 'arrests' || theSelectedFilter == 'sexOffenderRegistries' || theSelectedFilter === 'all')*/) {\r\n if (showSetupToSaveInHistoricalDB)\r\n supportedList = supportedList.filter(s => s.setupToSaveInHistoricalDB );\r\n if (showProportionalToJurisdictions && theSelectedFilter != 'sexOffenderRegistries') {\r\n let supportedLength = supportedList.reduce(function (accum, current) { Object.keys(current.courtUidsBasedOnFips).forEach(c => accum.push(c)); return accum; }, []).length;\r\n if (depth <= 0)\r\n fraction = supportedLength / props.jurisdictions.filter(j => j.state == stateName.toUpperCase()).length;\r\n //else if (depth == 1)\r\n // fraction = supportedLength / 1;\r\n }\r\n else if (showProportionalToPopulation) {\r\n if (depth <= 0) {\r\n if (stateJurisdictions.length === 0) {\r\n fraction = 0;\r\n }\r\n else {\r\n supportedList = supportedList.filter(l => l.dataSourceType !== \"SexOffenderRegistry\" && l.dataSourceType !== \"DepartmentOfCorrections\");\r\n let uniqueFips = {};\r\n var supportedPopulation = supportedList.reduce(function (accum, current) { if (current.isStateWide) return accum; Object.keys(current.courtUidsBasedOnFips).forEach(c => { if (!uniqueFips[c]) { let jurisdictions = stateJurisdictions.filter(sj => sj.fips == c); accum += jurisdictions.length ? jurisdictions[0].jurisdictionPopulation : 0; uniqueFips[c] = true; } }); return accum; }, 0);\r\n if (stateJurisdictions[0].statewidePopulation) {\r\n if (supportedPopulation > (stateJurisdictions[0].statewidePopulation * 1.2))\r\n supportedPopulation -= stateJurisdictions[0].statewidePopulation;\r\n fraction = supportedPopulation / stateJurisdictions[0].statewidePopulation;\r\n }\r\n \r\n else fraction = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n let denominator = (supportedList.length + notSupportedList.length) || 1;\r\n if (fraction == -1)\r\n fraction = supportedList.length / denominator;\r\n\r\n let index = fraction > 0 && (fraction < (1 / theColors.length)) ? Math.ceil(fraction * theColors.length) :\r\n fraction < 1 && (fraction > (theColors.length - 1 / theColors.length))\r\n ? Math.floor(fraction * theColors.length)\r\n : Math.floor(fraction * theColors.length);\r\n if (index < 0 || !index)\r\n index = 0;\r\n if (index > (theColors.length - 1))\r\n index = theColors.length - 1;\r\n\r\n if (index == 0 && depth == 1 && (stateName == 'VT' || stateName == 'ME') && theSelectedFilter != 'arrests')\r\n return \"#FFFF00\";\r\n\r\n return theColors[index];\r\n }\r\n\r\n let renderMap = (theSelectedFilter, itemName) => {\r\n let zingchart = window.zingchart;\r\n\r\n if (depth == 1)\r\n {\r\n renderState(itemName || currentState, theSelectedFilter);\r\n }\r\n else if (depth <= 0) {\r\n renderUsa(theSelectedFilter); \r\n }\r\n\r\n\r\n var c2 = document.getElementById(\"legendCanvas2\");\r\n let noCoverageLabel = document.getElementById('noCoverageLabel');\r\n if (c2) {\r\n if (depth == 0) {\r\n c2.style.display = 'initial';\r\n let ctx = c2.getContext(\"2d\");\r\n let grd = ctx.createLinearGradient(0, 0, 250, 0);\r\n\r\n grd.addColorStop(0, \"gray\");\r\n grd.addColorStop(1, \"gray\");\r\n\r\n noCoverageLabel.style.display = 'block';\r\n noCoverageLabel.innerText = \"No Support\";\r\n\r\n ctx.fillStyle = grd;\r\n ctx.fillRect(0, 0, 250, 100);\r\n }\r\n else {\r\n c2.style.display = 'none';\r\n noCoverageLabel.style.display = 'none';\r\n }\r\n }\r\n\r\n var c = document.getElementById(\"legendCanvas\");\r\n if (c) {\r\n let ctx = c.getContext(\"2d\");\r\n let grd = ctx.createLinearGradient(0, 0, 250, 0);\r\n\r\n document.getElementById('middleCoverageLabel').innerText = \"\";\r\n if (depth == 1 && (\r\n theSelectedFilter == 'courts'\r\n || theSelectedFilter == 'arrests'\r\n || theSelectedFilter == 'sexOffenderRegistries'\r\n || theSelectedFilter == 'all')) {\r\n var theState = (itemName || currentState);\r\n if (theState == 'me' || theState == 'vt') {\r\n //grd.addColorStop(0, \"gray\");\r\n //grd.addColorStop(.32, \"gray\");\r\n grd.addColorStop(0, \"#FFFF00\");\r\n grd.addColorStop(.49, \"#FFFF00\");\r\n grd.addColorStop(.5, \"#086508\");\r\n grd.addColorStop(1, \"#086508\");\r\n\r\n document.getElementById('lessCoverageLabel').innerText = \"Traffic Courts\";\r\n document.getElementById('moreCoverageLabel').innerText = \"Traffic Courts + Arrests\";\r\n }\r\n else {\r\n grd.addColorStop(0, \"gray\");\r\n grd.addColorStop(.49, \"gray\");\r\n grd.addColorStop(.50, \"#086508\");\r\n grd.addColorStop(1, \"#086508\");\r\n\r\n document.getElementById('lessCoverageLabel').innerText = \"No Support\";\r\n document.getElementById('moreCoverageLabel').innerText = \"Partial/Full Support\";\r\n }\r\n }\r\n else {\r\n grd.addColorStop(0, \"#650f0f\");\r\n grd.addColorStop(.49, \"#FFFF00\");\r\n grd.addColorStop(.50, \"#FFFF00\");\r\n grd.addColorStop(1, \"#086508\");\r\n\r\n document.getElementById('lessCoverageLabel').innerText = \"Less Support\";\r\n document.getElementById('moreCoverageLabel').innerText = \"More Support\";\r\n\r\n //grd.addColorStop(0, \"gray\");\r\n //grd.addColorStop(.14, \"gray\");\r\n //grd.addColorStop(.16, \"#650f0f\");\r\n //grd.addColorStop(.55, \"#FFFF00\");\r\n //grd.addColorStop(.56, \"#FFFF00\");\r\n //grd.addColorStop(1, \"#086508\");\r\n\r\n //document.getElementById('lessCoverageLabel').innerText = \"No Support\";\r\n //document.getElementById('middleCoverageLabel').innerText = \"Less Support\";\r\n //document.getElementById('moreCoverageLabel').innerText = \"More Support\";\r\n }\r\n\r\n ctx.fillStyle = grd;\r\n ctx.fillRect(0, 0, 250, 100);\r\n }\r\n }\r\n\r\n let renderUsa = (theSelectedFilter) => {\r\n let objectOfStates = {};\r\n for (let i = 0; i < listOfStates.length; i++) {\r\n let itemId = listOfStates[i].toUpperCase();\r\n\r\n let support = calculateSupportFunc(itemId, theSelectedFilter); \r\n\r\n objectOfStates[itemId] = {\r\n //'background-color': itemId == 'OR' || itemId == 'ID' || itemId == 'UT' || itemId == 'HI' ? '#086508' :\r\n // itemId == 'TX' ? '#71A704' : support,\r\n 'background-color': support\r\n }\r\n }\r\n\r\n let nationwidePopulation = 327171000;\r\n let localMissingJurisdictions = [];\r\n let localSupportedJurisdictions = [];\r\n let totalNoJurisdictions = 3143;\r\n\r\n\r\n let cacheKey = theSelectedFilter;\r\n\r\n //remove old cached values\r\n localStorage.removeItem(\"precomputedArgs\");\r\n localStorage.removeItem(\"precomputedArgs1\");\r\n localStorage.removeItem(\"precomputedArgs2\");\r\n localStorage.removeItem(\"precomputedArgs3\");\r\n localStorage.removeItem(\"precomputedArgs4\");\r\n localStorage.removeItem(\"precomputedArgs5\");\r\n localStorage.removeItem(\"precomputedArgs6\");\r\n localStorage.removeItem(\"precomputedArgs7\");\r\n localStorage.removeItem(\"precomputedArgs8\");\r\n localStorage.removeItem(\"precomputedArgs9\");\r\n let precomputeKey = \"precomputedArgs10\";\r\n window.auxCache = window.auxCache || {};\r\n window.precomputedArgs = localStorage.getItem(precomputeKey) && JSON.parse(localStorage.getItem(precomputeKey)) || {};\r\n\r\n \r\n if (!window.precomputedArgs[cacheKey]) {\r\n window.precomputedArgs[cacheKey] = true;\r\n\r\n let globalArrestPopulationSupported = 0; //globalArrestPopulationSupported || 0;\r\n let globalCombinedPopulationSupported = 0; //globalCombinedPopulationSupported || 0;\r\n let globalCourtPopulationSupported = 0; //globalCourtPopulationSupported || 0;\r\n let globalTotalNumCoveredJurisdictions = 0; //globalTotalNumCoveredJurisdictions || 0;\r\n let globalMissingJurisdictions = [];\r\n let globalSupportedJurisdictions = [];\r\n\r\n let theJurisdictions = [...new Map(props.jurisdictions.map(jurisdiction => [jurisdiction.state + jurisdiction.county, jurisdiction])).values()];\r\n theJurisdictions.forEach((jurisdiction) => {\r\n //totalNoJurisdictions += 1;\r\n // calculate percentage supported\r\n let itemName = jurisdiction.state;\r\n let countyName = jurisdiction.county;\r\n //let jurisdiction = props.jurisdictions.filter(j => listOfStates.indexOf(x => x == j.state) != -1 && j.county.toLowerCase().replace(/[\\. ',:-]+/g, \"\").includes(countyName.toLowerCase().replace(/[\\. ',:-]+/g, \"\")))[0];\r\n if (!jurisdiction.isStateWide && jurisdiction.county.toLowerCase() != 'all' && jurisdiction.county.toLowerCase() != 'statewide' && jurisdiction.county.toLowerCase() != 'nation wide' && jurisdiction.county.toLowerCase() != 'all superior courts') {\r\n //nationwidePopulation = jurisdiction.nationwidePopulation;\r\n let args = { ...props.sdms, allNonSdms: [] };\r\n\r\n if (window.auxCache[`${itemName}${countyName}`]) {\r\n args = window.auxCache[`${itemName}${countyName}`];\r\n }\r\n else {\r\n Object.keys(args).forEach(function (key) {\r\n if (Array.isArray(args[key])) args[key] = args[key].filter(item =>\r\n Object.keys(item.courtUidsBasedOnFips).map(k => k.toString()).filter(i => i == jurisdiction.fips.toString()).length != 0);\r\n });\r\n window.auxCache[`${itemName}${countyName}`] = args;\r\n }\r\n\r\n let support = 'gray';\r\n var isIlCook = itemName == 'IL' && (jurisdiction.county.indexOf('Cook') != -1);\r\n //var isSedgwick = itemName == 'KS' && (jurisdiction.county.indexOf('Sedgwick') != -1);\r\n\r\n if (window.precomputedArgs[`${itemName}${countyName}${theSelectedFilter}`])\r\n support = window.precomputedArgs[`${itemName}${countyName}${theSelectedFilter}`];\r\n else {\r\n support = calculateSupportFunc(itemName.toUpperCase(), theSelectedFilter, args);\r\n\r\n\r\n \r\n //if (isSedgwick && theSelectedFilter == 'courts') {\r\n // support = 'gray';\r\n //}\r\n //else if (isSedgwick && (theSelectedFilter == 'arrests' || theSelectedFilter == 'all')) {\r\n // support = '#086508';\r\n //}\r\n\r\n \r\n if (isIlCook && theSelectedFilter == 'courts') {\r\n support = 'gray';\r\n }\r\n else if (isIlCook && (theSelectedFilter == 'arrests' || theSelectedFilter == 'all')) {\r\n support = '#086508';\r\n }\r\n\r\n window.precomputedArgs[`${itemName}${countyName}${theSelectedFilter}`] = support;\r\n }\r\n\r\n \r\n\r\n if (!(support == 'gray' || support == alternativeNoSupportColor)) {\r\n globalTotalNumCoveredJurisdictions += 1;\r\n localSupportedJurisdictions.push([countyName, jurisdiction.jurisdictionPopulation, itemName]);\r\n } else {\r\n localMissingJurisdictions.push([countyName, jurisdiction.jurisdictionPopulation, itemName]);\r\n }\r\n //objectOfCounties[key] = { 'background-color': support };\r\n\r\n\r\n let combinedSupport = calculateSupportFunc(itemName.toUpperCase(), 'all', args);\r\n\r\n if (!(combinedSupport == 'gray' || combinedSupport == alternativeNoSupportColor)) {\r\n globalCombinedPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n //globalCombinedNumCoveredJurisdictions += 1\r\n } else {\r\n\r\n }\r\n\r\n let courtSupport = calculateSupportFunc(itemName.toUpperCase(), 'courts', args);\r\n\r\n if (isIlCook) {\r\n courtSupport = 'gray';\r\n }\r\n\r\n if (!(courtSupport == 'gray' || courtSupport == alternativeNoSupportColor)) {\r\n globalCourtPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n //globalCourtNumCoveredJurisdictions += 1\r\n } else {\r\n\r\n }\r\n\r\n let arrestSupport = calculateSupportFunc(itemName.toUpperCase(), 'arrests', args);\r\n\r\n if (!(arrestSupport == 'gray' || arrestSupport == alternativeNoSupportColor)) {\r\n globalArrestPopulationSupported += jurisdiction.jurisdictionPopulation;\r\n //globalArrestNumCoveredJurisdictions += 1\r\n } else {\r\n\r\n }\r\n\r\n }\r\n else {\r\n if (countyName == \"Golden Valley\" && (theSelectedFilter == 'courts' || theSelectedFilter == 'all')) {\r\n localSupportedJurisdictions.push(['Golden Valley', 1, 'ND']);\r\n //objectOfCounties[key] = { 'background-color': '#086508' };\r\n } else if (countyName == \"Golden Valley\" && (theSelectedFilter == 'arrests')) {\r\n localMissingJurisdictions.push(['Golden Valley', 1, 'ND']);\r\n //objectOfCounties[key] = { 'background-color': 'gray' };\r\n } else if (itemName == 'sd' && countyName == \"Shannon\" && (theSelectedFilter == 'courts' || theSelectedFilter == 'all')) {\r\n localSupportedJurisdictions.push(['Shannon', 8189, 'SD']);\r\n //objectOfCounties[key] = { 'background-color': '#086508' };\r\n }\r\n else {\r\n //localMissingJurisdictions.push([countyName, -1]);\r\n //objectOfCounties[key] = { 'background-color': '#086508' };\r\n }\r\n }\r\n });\r\n\r\n window.precomputedArgs[cacheKey + \"globalArrestPopulationSupported\"] = globalArrestPopulationSupported;\r\n window.precomputedArgs[cacheKey + \"globalCombinedPopulationSupported\"] = globalCombinedPopulationSupported;\r\n window.precomputedArgs[cacheKey + \"globalCourtPopulationSupported\"] = globalCourtPopulationSupported;\r\n window.precomputedArgs[cacheKey + \"globalTotalNumCoveredJurisdictions\"] = globalTotalNumCoveredJurisdictions;\r\n window.precomputedArgs[cacheKey + \"globalMissingJurisdictions\"] = globalMissingJurisdictions;\r\n window.precomputedArgs[cacheKey + \"globalSupportedJurisdictions\"] = globalSupportedJurisdictions;\r\n } \r\n\r\n localStorage.setItem(precomputeKey, JSON.stringify(window.precomputedArgs));\r\n\r\n setTotalNumJurisdictions(totalNoJurisdictions);\r\n setTotalNumCoveredJurisdictions(window.precomputedArgs[cacheKey + \"globalTotalNumCoveredJurisdictions\"]);\r\n //setNumCoveredJurisdictionsPercentage(Math.floor((window.precomputedArgs[cacheKey + \"globalTotalNumCoveredJurisdictions\"] / totalNoJurisdictions) * 100));\r\n let totalJurisdictionCoveredPercentage = parseFloat(Math.round((window.precomputedArgs[cacheKey + \"globalTotalNumCoveredJurisdictions\"] / totalNoJurisdictions) * 10000) / 100);\r\n setNumCoveredJurisdictionsPercentage(totalJurisdictionCoveredPercentage);\r\n\r\n //let courtJurisdictionCoveredPercentage = parseFloat(Math.round((globalCourtNumCoveredJurisdictions / totalNoJurisdictions) * 10000) / 100);\r\n //setNumCoveredJurisdictionsPercentage(courtJurisdictionCoveredPercentage); \r\n\r\n //let oneHundredPercentCoverage = totalJurisdictionCoveredPercentage.toString() == \"100\" || itemName == \"nd\" || itemName == \"hi\" || itemName == \"nc\" || itemName == 'va';\r\n\r\n setStatisticsTitle(\"United States\");\r\n setTotalPopulation(nationwidePopulation);\r\n\r\n var numSupported = window.precomputedArgs[cacheKey + \"globalCombinedPopulationSupported\"] - 626299 - 783348 - 982000; // vermont maine populationadjustment\r\n setCombinedPopulationCoverage(numSupported); \r\n setCombinedPopulationCoveragePercentage(parseFloat(Math.round((numSupported / nationwidePopulation) * 10000) / 100));\r\n\r\n //setPopulationCoverage(oneHundredPercentCoverage ? nationwidePopulation : populationSupported);\r\n //setPopulationCoveragePercentage(oneHundredPercentCoverage ? 100 : parseFloat(Math.round((populationSupported / nationwidePopulation) * 10000) / 100));\r\n\r\n var courtSupported = window.precomputedArgs[cacheKey + \"globalCourtPopulationSupported\"] - 626299 - 1338404 - 939000; // vermont maine populationadjustment\r\n setCourtPopulationCoverage(courtSupported); \r\n setCourtPopulationCoveragePercentage(parseFloat(Math.round((courtSupported / nationwidePopulation) * 10000) / 100));\r\n \r\n\r\n setArrestPopulationCoverage(false ? nationwidePopulation : window.precomputedArgs[cacheKey + \"globalArrestPopulationSupported\"]);\r\n setArrestPopulationCoveragePercentage(false ? 100 : parseFloat(Math.round((window.precomputedArgs[cacheKey + \"globalArrestPopulationSupported\"] / nationwidePopulation) * 10000) / 100));\r\n\r\n setMissingJurisdictions(window.precomputedArgs[cacheKey + \"globalMissingJurisdictions\"]);\r\n setSupportedJurisdictions(window.precomputedArgs[cacheKey + \"globalSupportedJurisdictions\"]);\r\n\r\n let usaConfig = {\r\n gui: {\r\n contextMenu: {\r\n button: {\r\n visible: false\r\n }\r\n },\r\n gear: {\r\n type: 'hamburger',\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n shapes: [\r\n {\r\n type: 'zingchart.maps',\r\n options: {\r\n name: 'usa',\r\n\r\n zooming: false,\r\n panning: false,\r\n scrolling: false,\r\n\r\n style: {\r\n backgroundColor: '#fafafa',\r\n controls: {\r\n visible: false\r\n },\r\n fillType: 'radial',\r\n cursor: 'pointer',\r\n hoverState: {\r\n alpha: 0.3,\r\n backgroundColor: 'white',\r\n },\r\n items: objectOfStates, //include specific shape regions with unique styles\r\n tooltip: {\r\n alpha: 0.8,\r\n backgroundColor: 'white',\r\n borderColor: 'white',\r\n borderRadius: 3,\r\n fontColor: 'black',\r\n fontFamily: 'Georgia',\r\n fontSize: 12,\r\n textAlpha: 1\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n /* \r\n * need this function to render the first map load with random colors\r\n */\r\n // set boolean that we are looking at the usa county, not individual state\r\n window.zingchart.render({\r\n id: 'usaChart',\r\n data: usaConfig,\r\n height: '100%',\r\n width: '100%'\r\n });\r\n\r\n depth = 0; // i know this seems wrong, but don't remove this line. this variable is captured by closure in the rebindChart below.\r\n rebindChart();\r\n };\r\n\r\n let rebindChart = () => {\r\n let zingchart = window.zingchart;\r\n /*\r\n * shape click is when we render a new chart or load the original chart\r\n */\r\n zingchart.unbind('usaChart', 'shape_click');\r\n zingchart.bind('usaChart', 'shape_click', e => {\r\n let itemName = String(e.shapeid).toLowerCase();\r\n\r\n let shapeId = e.shapeid;\r\n\r\n // if shape is our back button and not the map\r\n if (shapeId == 'back_button') {\r\n setDepth(0);\r\n depth = 0;\r\n if (showMissingOpen)\r\n handleShowMissing();\r\n if (showSupportedOpen)\r\n handleShowSupported();\r\n setStatisticsTitle('United States');\r\n context.setPageTitle(!window.elevation && 'Court & Arrest Coverage' || \"USA Map\");\r\n // since we are using setdata, reload will reload the original chartJSON\r\n\r\n //zingchart.exec('usaChart', 'reload');\r\n renderMap(selectedFilter);\r\n return;\r\n }\r\n\r\n if (depth == 0) { // navigate to state\r\n supportedCourtTypes = [];\r\n setSupportedCourtTypes([]);\r\n let stateMapId = 'usa_' + itemName;\r\n context.setPageTitle(`${stateNames[itemName.toUpperCase()] || 'Unknown'} Coverage`);\r\n if (hasStateDrilldownData(stateMapId)) {\r\n setDepth(1);\r\n depth = 1;\r\n setCurrentState(itemName);\r\n\r\n renderMap(selectedFilter, itemName);\r\n }\r\n }\r\n else if (depth == 1) { // navigate to county\r\n let stateMapId = 'usa_' + currentState;\r\n let countyName = cleanName(window.zingchart.maps.data[stateMapId][itemName.toUpperCase()].tooltip.text);\r\n \r\n let selectedJurisdiction = props.jurisdictions.filter(j => j.state == currentState.toUpperCase() && j.county.toLowerCase().replace(/[\\. ',:-]+/g, \"\").includes(countyName.toLowerCase().replace(/[\\. ',:-]+/g, \"\")))[0];\r\n\r\n supportedCourtTypes = [];\r\n let newLocation = stateNames[currentState.toUpperCase()] + ' - ' + countyName;\r\n setSupportedSourcesLocation(newLocation)\r\n supportedSourcesLocation = newLocation;\r\n supportedLocationIsState = supportedSourcesLocation.indexOf('-') == -1;\r\n countyOnClick(selectedJurisdiction);\r\n }\r\n });\r\n };\r\n rebindChart();\r\n\r\n if (depth < 0 ) {\r\n if (props.sdms.all.length > 0) {\r\n renderMap(selectedFilter);\r\n setDepth(0);\r\n depth = 0;\r\n }\r\n }\r\n\r\n const [showMissingAnchorEl, setShowMissingAnchorEl] = React.useState(null);\r\n let handleShowMissing = (event) => {\r\n setShowMissingAnchorEl(showMissingAnchorEl ? null : event.currentTarget);\r\n if (showSupportedOpen)\r\n handleShowSupported();\r\n }\r\n\r\n let showMissingOpen = Boolean(showMissingAnchorEl);\r\n const showMissingId = showMissingOpen ? 'show-missing-popper' : undefined;\r\n\r\n const [showSupportedAnchorEl, setShowSupportedAnchorEl] = React.useState(null);\r\n let handleShowSupported = (event) => {\r\n setShowSupportedAnchorEl(showSupportedAnchorEl ? null : event.currentTarget);\r\n if (showMissingOpen)\r\n handleShowMissing();\r\n }\r\n\r\n let showSupportedOpen = Boolean(showSupportedAnchorEl);\r\n const showSupportedId = showSupportedOpen ? 'show-missing-popper' : undefined;\r\n\r\n const [stateDataIndex, setStateDataIndex] = React.useState(0);\r\n\r\n function handleStateDataChange(event, newValue) {\r\n setStateDataIndex(newValue);\r\n }\r\n\r\n function handleStateDataIndexChange(index) {\r\n setStateDataIndex(index);\r\n }\r\n\r\n useEffect(() => {\r\n //props.requestSdms();\r\n\r\n let zingchart = window.zingchart;\r\n // must load maps and first map we are going to render\r\n zingchart.loadModules('maps,maps-usa');\r\n\r\n //renderMap();\r\n\r\n // stringify the maps to load them into page using loadModules()\r\n let stringifyMapList = listOfStates.reduce(function (acc, curVal, index) {\r\n if (index === 1)\r\n acc = 'maps-usa_' + acc;\r\n return acc + ',' + 'maps-usa_' + curVal;\r\n });\r\n\r\n // for maps that exist in our library. Pre-load them later on\r\n //zingchart.loadModules(stringifyMapList); \r\n\r\n try {\r\n if (props.sdms.all.length > 0) {\r\n renderMap(selectedFilter);\r\n setDepth(0);\r\n depth = 0;\r\n }\r\n //else\r\n // setTimeout(function () {\r\n // renderMap(selectedFilter);\r\n // setDepth(0);\r\n // depth = 0;\r\n // }, 3000);\r\n }\r\n catch(ex) {\r\n\r\n }\r\n }, []);\r\n\r\n \r\n return (\r\n
\r\n \r\n {(window.elevation || privileged) && (\r\n {window.elevation && (
\r\n Feature Support\r\n
\r\n
\r\n \r\n \r\n {/*\r\n }\r\n label=\"Automated Test\"\r\n />*/}\r\n \r\n
\r\n \r\n }\r\n label=\"Case Tracking\"\r\n />\r\n \r\n }\r\n label=\"Monitoring\"\r\n />\r\n \r\n }\r\n label=\"Name Search\"\r\n />\r\n \r\n }\r\n label=\"Saves To Database\"\r\n />\r\n
\r\n
\r\n
\r\n )}\r\n {/*\r\n
\r\n Order Progress\r\n
\r\n
\r\n
\r\n \r\n \r\n }\r\n label=\"Case Tracking\"\r\n />\r\n \r\n
\r\n
*/}\r\n\r\n
\r\n Data Sources\r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n label=\"Courts\"\r\n />\r\n \r\n }\r\n label=\"Arrests\"\r\n />\r\n {!privileged && depth == 0 && (\r\n \r\n }\r\n label=\"S.O.R.\"\r\n />\r\n )}\r\n \r\n }\r\n label=\"Combined\"\r\n />\r\n
\r\n
\r\n {depth == 0 && false && (\r\n \r\n
\r\n Adjust Parameters\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n label=\"Jurisdiction\"\r\n />\r\n \r\n }\r\n label=\"Population\"\r\n />\r\n \r\n
\r\n
\r\n
\r\n )}\r\n {depth == 1 && supportedJurisdictions && supportedJurisdictions.length > 0 && (\r\n \r\n
\r\n {(window.elevation || privileged) && (
\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n Supported Jurisdictions\r\n \r\n
\r\n {supportedJurisdictions.sort((a, b) => b[0] - a[0]).map(j => {`${(depth == 0 ? (j[2] + ' - ') : '')}${j[0]}`})/* (pop. ${numberWithCommas(j[1])})*/}\r\n
\r\n
\r\n )}\r\n
)}\r\n
\r\n
\r\n )}\r\n {depth == 1 && missingJurisdictions && missingJurisdictions.length > 0 && (\r\n \r\n {(window.elevation || privileged) && (
\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n Missing Jurisdictions\r\n \r\n
\r\n {missingJurisdictions.sort((a, b) => b[0] - a[0]).map(j => {`${(depth == 0 ? (j[2] + ' - ') : '')}${j[0]}`}/* (pop. ${numberWithCommas(j[1])})*/)}\r\n
\r\n
\r\n )}\r\n
)}\r\n
\r\n )}\r\n {depth == 1 && false && props.advanced && supportedCourtTypes && (\r\n \r\n
\r\n
\r\n Available Sources {/*(privileged) && ()*/}\r\n
\r\n
\r\n \r\n {supportedSourcesLocation}\r\n \r\n {supportedCourtTypes.sort((a, b) => (a > b ? 1 : -1)).map(sct =>
{sct.split('|')[0].trim()} {sct.split('|')[1].trim()}
)}\r\n {(supportedCourtTypes.length == 0 ?
N/A
: '')}\r\n
\r\n )}\r\n {window.elevation && (\r\n
\r\n Misc\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n }\r\n label=\"S2DB Configured For ATServer2\"\r\n />\r\n \r\n
\r\n
)}\r\n {window.elevation && (\r\n
\r\n Legend\r\n {/*hide*/}\r\n
\r\n
\r\n \r\n
\r\n \r\n
)}\r\n
)}\r\n \r\n
\r\n
\r\n
\r\n \r\n {!statisticsTitle && (\r\n window.elevation2 && (\r\n \r\n {/*\r\n
\r\n Unsupported Courts/Arrests\r\n
\r\n
\r\n Delaware\r\n
\r\n
*/}\r\n {/*\r\n
\r\n Unsupported Courts\r\n
\r\n
\r\n Louisiana
\r\n Mississippi
\r\n Montana
\r\n New Hampshire
\r\n South Dakota
\r\n Wyoming
\r\n
\r\n
*/}\r\n {/*\r\n
\r\n Traffic Court Support Only \r\n
\r\n
\r\n Maine
\r\n Vermont
\r\n
\r\n
*/}\r\n
\r\n )\r\n \r\n )}\r\n {(true || statisticsTitle) && (\r\n \r\n
\r\n \r\n {statisticsTitle}\r\n \r\n
\r\n \r\n {combinedPopulationCoveragePercentage}%\r\n
\r\n Combined Coverage\r\n
\r\n
\r\n {numberWithCommas(combinedPopulationCoverage)} / {numberWithCommas(totalPopulation)} people\r\n
\r\n
\r\n {window.elevation2 && courtPopulationCoverage > 0 && (\r\n \r\n \r\n {courtPopulationCoveragePercentage}%\r\n
\r\n {(depth == 1 && (currentState == 'me' || currentState == 'vt') ? 'Traffic ' : '')}Court Coverage\r\n
\r\n
\r\n {numberWithCommas(courtPopulationCoverage)} / {numberWithCommas(totalPopulation)} people\r\n
\r\n
\r\n
\r\n )}\r\n {false && privileged && arrestPopulationCoverage > 0 && (\r\n \r\n \r\n {arrestPopulationCoveragePercentage}%\r\n
\r\n Arrest Coverage\r\n
\r\n
\r\n {numberWithCommas(arrestPopulationCoverage)} / {numberWithCommas(totalPopulation)} people\r\n
\r\n
\r\n
\r\n )}\r\n {depth == 1 && privileged && (\r\n \r\n \r\n {numCoveredJurisdictionsPercentage}%\r\n
\r\n {(selectedFilter == 'all' ? Combined : selectedFilter == 'courts' ? Court : Arrest )}Jurisdiction Coverage\r\n
\r\n
\r\n {totalNumCoveredJurisdictions} / {totalNumJurisdictions} jurisdictions\r\n
\r\n
\r\n
)}\r\n
\r\n )}\r\n {depth == 1 && (\r\n \r\n {!window.elevation && (\r\n {(window.numCourts > 0 ? Includes {(currentState == 'me' || currentState == 'vt' ? 'Traffic ' : '')}Courts : '')} {(window.numArrests > 0 ? {(window.numCourts > 0 ? | : '')} Includes Arrests : '')} {(window.numRegistries > 0 ?
: '')}{(window.numRegistries > 0 ? Includes Statewide Sex Offender Registry : \"\")}\r\n
\r\n
)}\r\n {/*\r\n \r\n \r\n \r\n {window.elevation && ()}\r\n {window.elevation && ()}\r\n \r\n \r\n \r\n
\r\n
\r\n {numberWithCommas(props.stateDateTimeDataPoints.reduce((acc, cur) => acc + cur.count, 0))} Records     \r\n
\r\n \r\n
\r\n {window.elevation && (
\r\n
\r\n # of Records: {numberWithCommas(props.stateDateTimeDataPointsArrests.reduce((acc, cur) => acc + cur.count, 0))}   \r\n # of Cases: {numberWithCommas(props.stateDateTimeDataPointsArrests.reduce((acc, cur) => acc + cur.caseCount, 0))}   \r\n
\r\n \r\n
)}\r\n {window.elevation && (
\r\n
\r\n # of Records: {numberWithCommas(props.stateDateTimeDataPointsCourts.reduce((acc, cur) => acc + cur.count, 0))}   \r\n # of Cases: {numberWithCommas(props.stateDateTimeDataPointsCourts.reduce((acc, cur) => acc + cur.caseCount, 0))}   \r\n
\r\n \r\n
)}\r\n \r\n \r\n\r\n \r\n
*/}\r\n
\r\n )}\r\n {!window.elevation && (\r\n \r\n
\r\n \r\n Legend\r\n \r\n {/*hide*/}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
)}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default connect(state => {\r\n return {\r\n isLoading: state.historicalData.isLoading,\r\n historicalData: state.historicalData.historicalData,\r\n //sdms: state.scraperDefinitionModels,\r\n ...state.scraperDetail\r\n };\r\n},\r\n {\r\n //requestSdms: sdmActionCreators.requestSdms,\r\n ...sourceDetailActionCreators\r\n })(ScraperByState);","import React, { useContext, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { actionCreators as jurisdictionActionCreators } from '../../store/JurisdictionStore';\r\nimport { actionCreators as sdmActionCreators } from '../../store/ScraperDefinitionModels';\r\nimport UIContext from '../../contexts/uiContext';\r\nimport ScraperByState from '../charts/ScraperByState';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport progress from '../../styles/progress';\r\nconst MapUsaPage = props => {\r\n const progressClass = progress();\r\n const context = useContext(UIContext);\r\n\r\n if (context.pageTitle.indexOf('Map') === -1)\r\n context.setPageTitle(!window.elevation && 'Court & Arrest Coverage');\r\n\r\n let stateName = props.stateName || props.match.params.stateName;\r\n\r\n useEffect(() => {\r\n props.requestJurisdictions();\r\n props.requestSdms();\r\n }, []);\r\n\r\n if (props.sdms.all.length == 0 || props.jurisdictions.length == 0)\r\n return ;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default connect(state => {\r\n return {\r\n jurisdictions: state.jurisdictions.all,\r\n ...state.scraperDefinitionModels,\r\n sdms: state.scraperDefinitionModels,\r\n };\r\n},\r\n {\r\n ...jurisdictionActionCreators,\r\n requestSdms: sdmActionCreators.requestSdms,\r\n }\r\n)(MapUsaPage);","import React from 'react';\r\nimport clsx from 'clsx';\r\nimport Connection from '../signalr/connection';\r\nimport { Link } from 'react-router-dom';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport Fade from '@material-ui/core/Fade';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport DashboardIcon from '@material-ui/icons/Dashboard';\r\nimport MoreIcon from '@material-ui/icons/MoreHoriz';\r\nimport MapIcon from '@material-ui/icons/Map';\r\nimport TestLogsIcon from '@material-ui/icons/Description';\r\nimport CaseTypesByFipsIcon from '@material-ui/icons/Terrain';\r\nimport CaseTypesBySourceIcon from '@material-ui/icons/Fingerprint';\r\nimport SymptomAnalysisIcon from '@material-ui/icons/Block';\r\nimport FipsWithNoDataIcon from '@material-ui/icons/TrendingDown';\r\nimport TrafficIcon from '@material-ui/icons/Traffic';\r\nimport CaseCountAnalysisIcon from '@material-ui/icons/FolderOpen';\r\nimport DavaValidationIcon from '@material-ui/icons/EventAvailable';\r\nimport ArrestsIcon from '@material-ui/icons/AccessibilityNew';\r\nimport CriminalIcon from '@material-ui/icons/SportsKabaddi';\r\nimport MissingCaseTypesIcon from '@material-ui/icons/Explicit';\r\nimport UnservedCaseTrackingRequestsIcon from '@material-ui/icons/Pets';\r\nimport GroupWorkIcon from '@material-ui/icons/GroupWorkOutlined';\r\nimport UnconfiguredDatabaseIcon from '@material-ui/icons/ErrorOutline';\r\nimport UnmodeledSourcesIcon from '@material-ui/icons/HighlightOff';\r\nimport ModeledSourcesIcon from '@material-ui/icons/AccountBalanceOutlined';\r\nimport MissingDataIcon from '@material-ui/icons/Warning';\r\nimport TestDefinitionsIcon from '@material-ui/icons/Book';\r\nimport TwoPartSearchIcon from '@material-ui/icons/Filter2';\r\nimport HealthStatusIcon from '@material-ui/icons/LocalHospitalOutlined';\r\nimport AssignmentIcon from '@material-ui/icons/Assignment';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nconst useStyles = makeStyles(theme => ({\r\n switchWrapper: {\r\n display: \"flex\"\r\n },\r\n switchLabel: {\r\n flexGrow: 1,\r\n paddingTop: 9\r\n },\r\n switch: {\r\n flexShrink:1\r\n },\r\n popper: {\r\n padding: \"1em\"\r\n },\r\n active: {\r\n backgroundColor: theme.palette.action.selected\r\n },\r\n topSection: {\r\n justifyContent: 'flex-start',\r\n flexGrow: 1\r\n },\r\n bottomSection: {\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n marginTop: '1em',\r\n flexDirection: 'column'\r\n },\r\n container: {\r\n display: 'flex',\r\n flex: '0 0 auto',\r\n flexDirection: 'column',\r\n height: '100%',\r\n flexGrow: 1\r\n },\r\n selected: {\r\n backgroundColor: `rgba(13, 71, 161, .88) !important`,\r\n color: 'white!important',\r\n transition: '.5s all ease'\r\n },\r\n selectedIcon: {\r\n color: 'white!important',\r\n transition: '.5s all ease'\r\n }\r\n}));\r\n\r\n\r\nexport const MainListItems = () => {\r\n const classes = useStyles();\r\n const [notificationAnchorEl, setNotificationAnchorEl] = React.useState(null);\r\n const notificationPopperOpen = Boolean(notificationAnchorEl);\r\n const notificationPopperId = notificationPopperOpen ? 'simple-popper' : undefined;\r\n function showNotificationPopper(event) {\r\n setNotificationAnchorEl(notificationAnchorEl ? null : event.currentTarget);\r\n }\r\n\r\n let [selected, setSelected] = React.useState('');\r\n\r\n\r\n const [moreNoDataAnchorEl, setMoreNoDataAnchorEl] = React.useState(null);\r\n const moreNoDataPopperOpen = Boolean(moreNoDataAnchorEl);\r\n const moreNoDataPopperId = moreNoDataPopperOpen ? 'simple-popper' : undefined;\r\n function showMoreNoDataPopper(event) {\r\n setMoreNoDataAnchorEl(moreNoDataAnchorEl ? null : event.currentTarget);\r\n }\r\n\r\n const [moreCaseTypesAnchorEl, setMoreCaseTypesAnchorEl] = React.useState(null);\r\n const moreCaseTypesPopperOpen = Boolean(moreCaseTypesAnchorEl);\r\n const moreCaseTypesPopperId = moreCaseTypesPopperOpen ? 'simple-popper' : undefined;\r\n function showMoreCaseTypesPopper(event) {\r\n setMoreCaseTypesAnchorEl(moreCaseTypesAnchorEl ? null : event.currentTarget);\r\n }\r\n\r\n const [moreTestsAnchorEl, setMoreTestsAnchorEl] = React.useState(null);\r\n const moreTestsPopperOpen = Boolean(moreTestsAnchorEl);\r\n const moreTestsPopperId = moreTestsPopperOpen ? 'simple-popper' : undefined;\r\n function showMoreTestsPopper(event) {\r\n setMoreTestsAnchorEl(moreTestsAnchorEl ? null : event.currentTarget);\r\n }\r\n\r\n\r\n const [settingsAnchorEl, setSettingsAnchorEl] = React.useState(null);\r\n const settingsPopperOpen = Boolean(settingsAnchorEl);\r\n const settingsPopperId = settingsPopperOpen ? 'simple-popper' : undefined;\r\n function showSettingsPopper(event) {\r\n setSettingsAnchorEl(settingsAnchorEl ? null : event.currentTarget);\r\n }\r\n\r\n let onNavigationItemClick = (selectedItem) => () => {\r\n setSelected(selectedItem);\r\n }\r\n\r\n const userSettings = JSON.parse(localStorage.getItem('userSettings'));\r\n const [monitoringConnection, setMonitoringConnection] = React.useState(userSettings['monitoringConnection']);\r\n\r\n let handleMonitoringConnectionChange = (event) => {\r\n let newValue = event.target.value;\r\n setMonitoringConnection(newValue);\r\n var userSettings = JSON.parse(localStorage.getItem('userSettings'));\r\n userSettings['monitoringConnection'] = newValue;\r\n localStorage.setItem('userSettings', JSON.stringify(userSettings));\r\n Connection.then(c => c.invoke(\"SetUserSettings\", userSettings));\r\n };\r\n\r\n return (\r\n
\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n Notification Settings\r\n \r\n
\r\n
New Monitoring Hits
\r\n \r\n
\r\n
\r\n
Recently Scraped
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n {({ TransitionProps }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/*\r\n \r\n \r\n \r\n \r\n */}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n {\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/*\r\n \r\n \r\n \r\n \r\n \r\n */}\r\n\r\n \r\n\r\n {\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n {\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {/**/}\r\n {/*\r\n \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n};\r\n\r\nexport const SecondaryListItems = () => {\r\n const classes = useStyles();\r\n return (\r\n
\r\n Saved reports\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n};\r\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport Button from '@material-ui/core/Button';\nimport TextField from '@material-ui/core/TextField';\nimport Drawer from '@material-ui/core/Drawer';\nimport Popover from '@material-ui/core/Popover';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport List from '@material-ui/core/List';\nimport Paper from '@material-ui/core/Paper';\nimport Fab from '@material-ui/core/Fab';\nimport Typography from '@material-ui/core/Typography';\nimport Divider from '@material-ui/core/Divider';\nimport IconButton from '@material-ui/core/IconButton';\nimport Badge from '@material-ui/core/Badge';\nimport Container from '@material-ui/core/Container';\nimport Link from '@material-ui/core/Link';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport NotificationsIcon from '@material-ui/icons/Notifications';\nimport { MainListItems } from './NavigationItems';\nimport { withRouter } from 'react-router-dom';\nimport UIContext from '../contexts/uiContext'\nimport ClarityImage from '../images/clarity.png'\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport MoreIcon from '@material-ui/icons/MoreVert';\n\nfunction MadeWithLove() {\n return (\n \n {'Built with love by the '}\n \n Material-UI\n \n {' team.'}\n \n );\n}\n\nconst drawerWidth = 400;\n\nconst useStyles = makeStyles(theme => ({\n bodyItem: {\n //height: \"93.5vh!important\"\r\n },\n bottomAppBar: {\r\n top: 'auto',\r\n bottom: 0,\r\n zIndex: 100,\r\n boxShadow: '0px -2px 4px -1px rgba(0,0,0,0.2), 0px -4px 5px 0px rgba(0,0,0,0.14), 0px -1px 10px 0px rgba(0,0,0,0.12)',\r\n marginBottom: 0,\r\n },\n fabButton: {\r\n position: 'absolute',\r\n zIndex: 1,\r\n top: -30,\r\n left: 0,\r\n right: 0,\r\n margin: '0 auto',\r\n },\n root: {\n display: 'flex',\n },\n toolbar: {\n paddingRight: 24, // keep right padding when drawer closed\n },\n hidden: {\n display: 'none'\r\n },\n reverse: {\n transform: 'rotate(-180deg)'\r\n },\n toolbarIcon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: '0 8px',\n ...theme.mixins.toolbar,\n minHeight: \"48px!important\",\n height: 48,\n },\n rightToolbarIcon: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-start',\n padding: '0 8px',\n backgroundColor: '#0d47a1',\n color: 'white',\n ...theme.mixins.toolbar,\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: window.elevation && `calc(100% - ${drawerWidth}px)` || '100%',\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n menuButton: {\n marginRight: 36,\n },\n menuButtonHidden: {\n display: 'none',\n },\n title: {\n flexGrow: 1,\n },\n drawerPaper: {\n position: 'relative',\n whiteSpace: 'nowrap',\n width: drawerWidth,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerPaperRight: {\n position: 'relative',\n whiteSpace: 'nowrap',\n width: drawerWidth * 1.5,\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawerLeftRoot: {\n ul: {\n flexGrow: 1\n }\n },\n drawerRightRoot: {\n marginLeft: '1em',\n height: \"calc(100vh - 128px) !important\",\n flex: '0 1 auto',\n marginTop: 64,\n //borderLeft: '1px solid #3f51b57a',\n //boxShadow: '-2px 0px 4px -1px rgba(0,0,0,0.2), -4px 9px 5px 0px rgba(0,0,0,0.14), -1px 0px 10px 0px rgba(0,0,0,0.12)'\n boxShadow: '0px 1px 3px 0px rgba(0,0,0,0.2), 0px 1px 1px 0px rgba(0,0,0,0.14), 0px 2px 1px -1px rgba(0,0,0,0.12)'\n },\n drawrRightRootOpen: {\n //minWidth: 340,\r\n },\n\n drawerPaperClose: {\n overflowX: 'hidden',\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n width: theme.spacing(7),\n //[theme.breakpoints.up('sm')]: {\n // width: theme.spacing(9),\n //},\n },\n drawerRightPaperClose: {\n overflowX: 'hidden',\n transition: theme.transitions.create('width', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n width: 0,//theme.spacing(7),\n [theme.breakpoints.up('sm')]: {\n width: 0, //theme.spacing(9),\n },\n },\n appBarSpacer: theme.mixins.toolbar,\n content: {\n flexGrow: 1,\n height: '100vh',\n overflow: 'hidden',\n },\n container: {\n paddingLeft: theme.spacing(1),\n paddingRight: theme.spacing(1),\n height: 'calc(100vh - 128px)!important',\n overflow: 'auto'\n },\n paper: {\n padding: theme.spacing(2),\n display: 'flex',\n overflow: 'auto',\n flexDirection: 'column',\n },\n grow: {\r\n flexGrow: 1,\r\n },\n text: {\r\n padding: theme.spacing(2, 2, 0),\r\n },\r\n paper: {\r\n paddingBottom: 50,\r\n },\r\n list: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n subheader: {\r\n backgroundColor: theme.palette.background.paper,\r\n },\n clarityImage: {\n width: \"200px\",\r\n position: \"relative\",\r\n left: 26\r\n },\n leftList: {\n flexGrow: 1,\r\n paddingTop:0\r\n },\n rightSidebarIcon: {\n color:'white'\r\n }\n}));\n\nexport default withRouter(function Dashboard(props) {\n const classes = useStyles();\n\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? 'simple-popover' : undefined;\n\n const [loginAnchorEl, setLoginAnchorEl] = React.useState(null);\r\n\r\n const handleLoginClick = event => {\r\n setLoginAnchorEl(event.currentTarget);\r\n }; \r\n\r\n const handleLoginClose = () => {\r\n setLoginAnchorEl(null);\r\n };\r\n\r\n const loginOpen = Boolean(loginAnchorEl);\r\n const loginId = loginOpen ? 'simple-popover' : undefined;\n\n\n const handleLoginToSiteClick = event => {\n if (usernameValue == 'chris' && passwordValue == 'chris'\r\n || usernameValue == 'accurate' && passwordValue == 'Accuratemap'\r\n || (usernameValue == 'lrgadvanced' && passwordValue == 'Lrgadvanced1!')\r\n || (usernameValue == 'vcheck' && passwordValue == 'vcheck1')\r\n || (usernameValue == 'map' && passwordValue == 'access') ) {\r\n sessionStorage.setItem('loggedIn', \"true\");\r\n handleLoginClose();\r\n }\r\n else sessionStorage.setItem('loggedIn', \"false\");\r\n };\n\n const handleLogoutClick = event => {\r\n sessionStorage.setItem('loggedIn', \"false\");\r\n window.location.reload();\r\n }\n\n let userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\n\n let fromDbLeftSidebarOpen = userSettings[\"leftSidebarOpen\"];\n const [leftSidebarOpen, setLeftSidebarOpen] = React.useState(fromDbLeftSidebarOpen === undefined ? true : fromDbLeftSidebarOpen);\n const [rightSidebarOpen, setRightSidebarOpen] = React.useState(false);\n const [detailDrawerHeaderSection, setDetailDrawerHeaderSection] = React.useState(\"Detail Sidebar\");\n const [detailDrawerBodySection, setDetailDrawerBodySection] = React.useState(\"\");\n const [pageTitle, setPageTitle] = React.useState(\"\");\n\n\n let persistSidebarOpen = (value) => {\n let userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\n userSettings[\"leftSidebarOpen\"] = value;\r\n localStorage.setItem(\"userSettings\", JSON.stringify(userSettings));\r\n }\n\n const handleDrawerLeftSidebarOpen = () => {\n setLeftSidebarOpen(true);\n persistSidebarOpen(true);\n };\n const handleDrawerRightSidebarOpen = () => {\n setRightSidebarOpen(!rightSidebarOpen);\n };\n const handleLeftDrawerClose = () => {\n setLeftSidebarOpen(false);\n persistSidebarOpen(false);\n };\n const handleRightDrawerClose = () => {\n setRightSidebarOpen(false);\n };\n\n const setPageTitleFunc = (newPageTitle) => {\n setPageTitle(newPageTitle);\r\n };\n\n let hiddenRightContent = (true ? classes.hidden : \"\");\n\n let [usernameValue, setUsernameValue] = useState('');\n let [passwordValue, setPasswordValue] = useState('');\n\n let handleSetUsername = (sender, args) => {\n setUsernameValue(sender.currentTarget.value);\r\n };\n\n let handleSetPassword = (sender, args) => {\n setPasswordValue(sender.currentTarget.value);\r\n };\n\n\n return (\n \n
\n \n \n \n \n \n \n \n {pageTitle}\n \n \n \r\n \r\n \r\n \r\n
\r\n DISCLAIMERS - This map is intended only as a summary of coverage and is provided on an on an \"as is\" and \"as available\" basis..\" No representations or warranties are made as to the accuracy or currentness of the statistics and data provided on this map, or the continued or current availability of any coverage indicated on the map. For specific, current information relating to coverage in any particular state or jurisdiction, please contact administrator. The coverage statistics provided on the are calculated based on (1) percentage of jurisdictions where court or arrest data is being accessed, and (2) the percentage of the population in the state that resides in jurisdictions where court and/or arrest data is being accessed. NOTE: Court or arrest data coverage in a particular jurisdiction does not mean that data is accessed in that jurisdiction from every court or arrest source. For example, in WV court data is only available from Circuit Courts, and in AR District Court data is limited to District Courts reporting to the AOC. To the fullest extent permitted by applicable law, we shall not be liable for any damages of any kind, including, but not limited to, direct, indirect, incidental, consequential, and/or punitive damages, arising from the use of this coverage map and/or the data/information represented therein.\r\n
\r\n
\r\n DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY - WE PROVIDE THIS WEBSITE ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS. WE MAKE NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE OPERATION OF THIS WEBSITE, OR THE CONTENT, INFORMATION, OR SERVICES PROVIDED TO YOU THROUGH OUR WEBSITE OR SOFTWARE. YOU FURTHER AGREE THAT WE ARE IN NO WAY RESPONSIBLE FOR ANY INACCURACIES, OR LIABILITY ARISING OUT OF INACCURACIES, IN DATA PROVIDED THROUGH THIS WEBSITE. YOU AGREE THAT YOUR USE OF THIS WEBSITE AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. WE WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THIS SITE, OUR SOFTWARE, and OUR SERVICES INCLUDING, BUT NOT LIMITED TO, DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, AND PUNITIVE DAMAGES.\r\n
\r\n
\r\n \n\n {props.location.pathname == \"/advanced\" && sessionStorage.getItem('loggedIn') != 'true' && ()}\r\n {props.location.pathname == \"/advanced\" && sessionStorage.getItem('loggedIn') == 'true' && ()}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \n
\n
\n {window.elevation && (\n
\n\n \n Monitoring Coverage\n \n\n \n \n \n\n
\n \n {/*\n {secondaryListItems}*/}\n )}\n
\n
\n {!window.elevation && (\n Below are maps showing complete or partial coverage for both court and arrest sources as of {(new Date()).toLocaleDateString()}\n )}\n \n {props.children}\n \n
\n
\n
\n );\n});\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'react-router-redux';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\nimport { createMuiTheme } from '@material-ui/core/styles';\r\nimport { ThemeProvider } from '@material-ui/styles';\r\nimport blue from '@material-ui/core/colors/blue';\r\nimport './signalr/connection';\r\nimport \"react-responsive-carousel/lib/styles/carousel.min.css\";\r\nimport './App.css';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: blue[900]\r\n }\r\n },\r\n typography: {\r\n fontFamily: [\r\n //'Roboto',\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n },\r\n overrides: {\r\n // Name of the component / style sheet\r\n MuiCircularProgress: {\r\n // Name of the rule\r\n root: {\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n display: 'block'\r\n },\r\n },\r\n },\r\n});\r\n\r\n\r\nsetTimeout(() => {\r\n setInterval(function () {\r\n\r\n let pageSizeSelector = document.querySelectorAll('.MuiTablePagination-select div');\r\n if (pageSizeSelector.length > 0) {\r\n let pageSize = parseInt(pageSizeSelector[0].innerText)\r\n\r\n let userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\r\n let existingPageSize = userSettings.pageSize;\r\n if (existingPageSize != pageSize) {\r\n userSettings.pageSize = pageSize;\r\n localStorage.setItem('userSettings', JSON.stringify(userSettings));\r\n }\r\n\r\n if (pageSize > 20) {\r\n window.document.getElementById('additionalStyles').innerHTML = `.MuiContainer-root > div > .MuiPaper-root > .MuiToolbar-root {\r\n position: fixed;\r\n background-color: white;\r\n z-index: 1000;\r\n box-shadow: 0px 0px 0px 0px rgba(0,0,0,0), 0px 4px 5px 0px rgba(0,0,0,0.24), 0px 0px 0px 0px rgba(0,0,0,0)\r\n }\r\n .MuiContainer-root > div > .MuiPaper-root > .MuiToolbar-root + div {\r\n position: relative;\r\n top: 91px;\r\n }\r\n\r\n .MuiContainer-root > div > .MuiPaper-root > .MuiToolbar-root + div + table {\r\n position: relative;\r\n top: 91px;\r\n }`;\r\n\r\n let heading = window.document.querySelectorAll('.MuiContainer-root > div > .MuiPaper-root > .MuiToolbar-root');\r\n if (heading.length) {\r\n let height = heading[0].offsetHeight;\r\n heading[0].setAttribute('style', `width: ${heading[0].parentElement.offsetWidth}px`);\r\n heading[0].nextSibling.setAttribute('style', `top: ${height + 10}px; position: relative;`);\r\n heading[0].nextSibling.nextSibling.setAttribute('style', `top: ${height + 10}px; position: relative;`);\r\n }\r\n \r\n }\r\n else {\r\n window.document.getElementById('additionalStyles').innerHTML = '';\r\n\r\n let heading = window.document.querySelectorAll('.MuiContainer-root > div > .MuiPaper-root > .MuiToolbar-root');\r\n if (heading.length) {\r\n heading[0].nextSibling.setAttribute('style', ``);\r\n heading[0].nextSibling.nextSibling.setAttribute('style', ``);\r\n }\r\n }\r\n }\r\n }, 200);\r\n}, 0);\r\n// a way to persist page size... \r\n\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst initialState = window.initialReduxState;\r\nconst store = configureStore(history, initialState);\r\nwindow.store = store;\r\nconst rootElement = document.getElementById('root');\r\n\r\nlet userSettings = JSON.parse(localStorage.getItem(\"userSettings\"));\nif (!userSettings)\r\n userSettings = {};\r\n\r\n// user settings defaults\r\nif (userSettings['monitoringConnection'] === undefined) userSettings['monitoringConnection'] = \"Monitoring DB\";\r\nif (userSettings['leftSidebarOpen'] === undefined) userSettings['leftSidebarOpen'] = true;\r\nif (userSettings['selectedFilter'] === undefined) userSettings['selectedFilter'] = 'all';\r\nif (userSettings['pageSize'] === undefined) userSettings['pageSize'] = 15;\r\nlocalStorage.setItem('userSettings', JSON.stringify(userSettings));\r\n\r\nhistory.listen(location => {\r\n //console.log(location);\r\n //let charts = document.querySelectorAll('.chartjs-render-monitor');\r\n //charts.forEach(c => {\r\n // c.getContext(\"2d\")\r\n //});\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { routerReducer, routerMiddleware } from 'react-router-redux';\r\nimport * as HistoricalData from './HistoricalData';\r\nimport * as HistoricalRecordSearchStore from './HistoricalRecordSearchStore';\r\nimport * as TestDefinitions from './TestDefinitions';\r\nimport * as TestLogs from './TestLogs';\r\nimport * as TestLogsSampleData from './TestLogsSampleData';\r\nimport * as ScraperDetail from './ScraperDetailStore';\r\nimport * as Subscriptions from './SubscriptionStore';\r\nimport * as NotificationStore from './NotificationStore';\r\nimport * as JurisdictionStore from './JurisdictionStore';\r\nimport * as CaseTrackingStore from './CaseTrackingStore';\r\nimport * as SourceStatusStore from './SourceStatusStore';\r\nimport * as SourceFeedbackStore from './SourceFeedbackStore';\r\n//import * as SourceCommunicationStore from './SourceCommunicationStore';\r\nimport * as ScraperDefinitionModels from './ScraperDefinitionModels';\r\n\r\nexport default function configureStore (history, initialState) {\r\n const reducers = {\r\n historicalData: HistoricalData.reducer,\r\n historicalRecordSearchReducer: HistoricalRecordSearchStore.reducer,\r\n testDefinitions: TestDefinitions.reducer,\r\n testLogs: TestLogs.reducer,\r\n testLogsSampleDataReducer: TestLogsSampleData.reducer,\r\n scraperDetail: ScraperDetail.reducer,\r\n scraperDefinitionModels: ScraperDefinitionModels.reducer,\r\n subscriptions: Subscriptions.reducer,\r\n notifications: NotificationStore.reducer,\r\n jurisdictions: JurisdictionStore.reducer,\r\n caseTracking: CaseTrackingStore.reducer,\r\n sourceStatus: SourceStatusStore.reducer,\r\n sourceFeedback: SourceFeedbackStore.reducer,\r\n //sourceCommunication: SourceCommunicationStore.reducer,\r\n };\r\n\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n // In development, use the browser's Redux dev tools extension if installed\r\n const enhancers = [];\r\n const isDevelopment = process.env.NODE_ENV === 'development';\r\n if (isDevelopment && typeof window !== 'undefined' && window.devToolsExtension) {\r\n enhancers.push(window.devToolsExtension());\r\n }\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n routing: routerReducer\r\n });\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Route } from 'react-router';\r\n\r\nimport MapUsaPage from './components/pages/MapUsaPage';\r\nimport Layout from './components/Layout';\r\nimport { ToastContainer, toast } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.min.css'\r\n\r\nexport default (p) => {\r\n return (
\r\n \r\n { } />}\r\n { } />}\r\n {/* } />*/}\r\n {/*{window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)} \r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}\r\n {window.elevation && ( } />)}*/}\r\n \r\n\r\n \r\n\r\n
\r\n )\r\n};\r\n\r\n"],"sourceRoot":""}