{"version":3,"sources":["config.js","components/v2/CasesChartV2.js","components/v2/CasesChartRecoveryV2.js","components/v2/DeathChartRecoveryV2.js","components/v2/TestingChartV2.js","components/v2/HospitalChartV2.js","components/v2/TestingPopChartV2.js","components/v2/VaccineChartV2.js","components/v2/VaccineCumulativeChartV2.js","components/v2/RegistrationActiveInactiveChartV2.js","components/v2/RegistrationActiveInactiveChartV2Show.js","components/v2/RegistrationRaceTotalChartV2.js","components/v2/RegistrationRaceTotalChartV2Show.js","components/v2/RegistrationStageTotalChartV2.js","components/v2/RegistrationStageTotalChartV2Show.js","components/v2/RegistrationTotalCardV2.js","components/v2/RegistrationTotalCardV2Show.js","components/v2/RegistrationTotalTableV2.js","components/v2/RegistrationTotalTableV2Show.js","components/v2/RegistrationRaceTotalTableV2.js","components/v2/RegistrationRaceTotalTableShowV2.js","components/v2/RegistrationActiveCardV2.js","components/v2/RegistrationActiveCardV2Show.js","components/v2/RegistrationWeeklyTableV2.js","components/v2/RegistrationWeeklyChartV2.js","components/v2/RegistrationProviderChartV2.js","components/v2/RegistrationProviderTableV2.js","components/v2/RegistrationRaceTotalChartStackedV2.js","components/v2/RegistrationWeeklyChartNormalV2.js","components/v2/RegistrationWeeklyChartAreaV2.js","components/v2/RegistrationProviderChartStackedV2.js","components/v2/RegistrationDashV2.js","components/v2/RegistrationWeeklyChartV2Show.js","components/v2/RegistrationWeeklyTableV2Show.js","components/v2/RegistrationProviderChartV2Show.js","components/v2/RegistrationProviderTableV2Show.js","components/v2/RegistrationRaceTotalChartStackedV2Show.js","components/v2/RegistrationWeeklyChartNormalV2Show.js","components/v2/RegistrationWeeklyChartAreaV2Show.js","components/v2/RegistrationProviderChartStackedV2Show.js","App.js","serviceWorker.js","index.js"],"names":["config","random","number","api","covidCases","testingCovid","hospitalCovid","ethnicityCovid","ageCovid","apiv2","covidRecoveryAllTwoWeeks","covidRecoveryTwoWeeks","vaccine","registrationRace","registrationStage","registrationRaceStage","registrationWeekly","registrationProvider","CasesChartV2","props","state","loading","series","options","chart","height","type","stacked","plotOptions","bar","horizontal","startingShape","endingShape","columnWidth","barHeight","distributed","rangeBarOverlap","colors","ranges","color","backgroundBarOpacity","backgroundBarRadius","dataLabels","enabled","stroke","show","curve","lineCap","width","dashArray","xaxis","categories","labels","datetimeFormatter","year","month","day","legend","horizontalAlign","offsetX","qValues","qs","parse","this","location","search","cleanDate","cleanCasestotal","cleanCasesPerDay","cleanCasesMovingDay","qWhere","offSwitch","limitRecord","ctRec","qMap","Day3","cases","field","text","Day7","Day14","url","trend","range","fieldMap","formData","FormData","append","fetch","method","body","qResp","json","qData","console","log","_","get","forEach","features","value","key","validDate","Date","attributes","date","getTime","casesNewByDay","casesMovingDay","maxLimit","length","push","toFixed","casesTotal","setState","error","name","data","yaxis","seriesName","axisTicks","axisBorder","style","formatter","timestamp","index","title","tooltip","opposite","enabledOnSeries","shared","followCursor","intersect","inverseOrder","fillSeriesColor","fontSize","onDatasetHover","highlightDataSeries","y","marker","loadOut","Container","fluid","paddingRight","paddingLeft","id","textAlign","Row","Col","Spinner","animation","variant","Alert","React","Component","CasesChartRecoveryV2","markers","size","fill","gradient","shadeIntensity","inverseColors","opacityFrom","opacityTo","stops","startTwoWeek","endTwoWeek","mostRecentDate","twoWeekDate","trendText","trendColor","trendData","change","casesNewByDayCounty","change14","oldChangeValue","annotations","x","x2","borderColor","label","background","DeathChartRecoveryV2","deathNewByDay","TestingChartV2","from","to","undefined","backgroundBarColors","opacity","cleanTotalTests","cleanTestPercent","dailyMove","positiveMove","daily","positive","percentValidate","testspercentpositive","cleanTotalValue","testsDaily","percentValidateMove","cleanTotalValueMove","paddingTop","HospitalChartV2","chartType","cleanDayMovingAcuteCare","cleanAcute_care_census","cleanIcuCensus","cleanTotalBedCenus","cleanDayMovingIcuCensus","cleanDayMovingTotal","acute","icu","total","acuteCareCensus","acute_care_census","icuCensus","icu_census","totalBedCensus","totalBed","dayMovingAcuteCare","dayMovingIcuCensus","dayMovingTotal","TestingPopChartV2","testsPopTested","VaccineChartV2","cleanTotalCumulativeAACORes","cleanTotal1stDose","cleanTotal2ndDose","cleanTotalBothDose","TotalCumulativeAACORes","FullyDoseTotal","total1stDose","FirstDose","total2ndDose","SecondSingleDose","Math","min","apply","max","minBothDose","maxBothDose","forceNiceScale","toString","replace","VaccineCumulativeChartV2","TotalCumulative_AACORes","Total1Dose_AACORes","Total2Doses_AACORes","RegistrationActiveInactiveChartV2","maxHeight","stackType","toolbar","theData","totalActive","totalInactive","active","inactive","RegistrationActiveInactiveChartV2Show","Card","className","RegistrationRaceTotalChartV2","raceName","theChartData","groupRace","chain","groupBy","map","race","stages","tempTotal","valueS","keyS","searchPhase","find","Priority_Category","isEmpty","RegistrationRaceTotalChartV2Show","RegistrationStageTotalChartV2","RegistrationStageTotalChartV2Show","RegistrationTotalCardV2","formatNumber","Header","backgroundColor","Body","Title","as","Footer","RegistrationTotalCardV2Show","RegistrationTotalTableV2","theTable","tableHead","tableBody","tableFooter","Object","entries","percCalc","round","Table","striped","bordered","hover","responsive","RegistrationTotalTableV2Show","RegistrationRaceTotalTableV2","tableRowTotal","tableRowTotalPerc","tableRowStage","cols","overallTotal","groupPhase","phase","races","sortBy","totalRace","colSpan","tempTd","tempPercTd","sumStage","valueR","tempPerc","RegistrationRaceTotalTableShowV2","RegistrationActiveCardV2","RegistrationActiveCardV2Show","RegistrationWeeklyTableV2","theHead","thisGuy","d","ye","Intl","DateTimeFormat","format","thisIsTheHead","thisIsTheBody","dateWeek","floor","formatDate","roundPercent","Asian","Black","Hispanic","White","Other","theBody","RegistrationWeeklyChartV2","dropShadow","top","left","blur","theDate","theAsianData","theBlackData","theHispanicData","theOtherData","theWhiteData","maxMinChecker","tickAmount","logarithmic","RegistrationProviderChartV2","theSite","theTotal","Other_Race","Site","RegistrationRaceTotalChartStackedV2","RegistrationWeeklyChartNormalV2","RegistrationWeeklyChartAreaV2","RegistrationProviderChartStackedV2","RegistrationDashV2","xs","md","padding","Nav","activeKey","Item","Link","href","sm","RegistrationProviderTableV2","RegistrationWeeklyChartV2Show","RegistrationWeeklyTableV2Show","RegistrationProviderChartV2Show","RegistrationProviderTableV2Show","RegistrationRaceTotalChartStackedV2Show","RegistrationWeeklyChartNormalV2Show","RegistrationWeeklyChartAreaV2Show","RegistrationProviderChartStackedV2Show","App","exact","path","component","Error","Boolean","window","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.6e369e79.chunk.js","sourcesContent":["// const url=\"https://gis.aacounty.org/app/teamLeader\";\r\nconst url=\"http://localhost:3000\";\r\n\r\nconst dev = {\r\n random: {\r\n number:\"100000000\"\r\n },\r\n api:{\r\n covidCases:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Dept_Covid19_Public_View/FeatureServer/2\",\r\n // testingCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Recovery_Data_View/FeatureServer/2\",\r\n testingCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Recovery_Data_3/FeatureServer/2\",\r\n // hospitalCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Recovery_Data_View/FeatureServer/1\",\r\n hospitalCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Recovery_Data_3/FeatureServer/1\",\r\n ethnicityCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Dept_Covid19_Public_View/FeatureServer/3\",\r\n ageCovid:\"https://gis.aacounty.org/arcgis/rest/services/Hosted/Health_Dept_Covid19_Public_View/FeatureServer/1\"\r\n },\r\n apiv2:{\r\n covidCases:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Master_COVID_View/FeatureServer/1\",\r\n //covidCases:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Daily_View/FeatureServer/5\",\r\n covidRecoveryAllTwoWeeks:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Recovery_View/FeatureServer/3\",\r\n covidRecoveryTwoWeeks:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Recovery_View/FeatureServer/0\",\r\n vaccine:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Master_COVID_View/FeatureServer/2\",\r\n //vaccine:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Vaccine_View/MapServer/1\",\r\n registrationRace:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Registration_View/MapServer/1\",\r\n registrationStage:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Registration_View/MapServer/2\",\r\n registrationRaceStage:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Registration_View/MapServer/3\",\r\n registrationWeekly:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Registration_View/MapServer/5\",\r\n registrationProvider:\"https://gis.aacounty.org/arcgis/rest/services/COVID-19/Registration_View/MapServer/6\"\r\n }\r\n};\r\n \r\n\r\nlet config = dev;\r\n\r\n\r\nexport default config","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\n// import '../resource/css/centerlogin.css';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\n\r\n\r\n\r\nclass CasesChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'area',\r\n stacked: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n startingShape: 'flat',\r\n endingShape: 'flat',\r\n columnWidth: '35%',\r\n barHeight: '70%',\r\n distributed: false,\r\n rangeBarOverlap: true,\r\n colors: {\r\n ranges: [{\r\n // from: 0,\r\n // to: 0,\r\n color: ['#ffc838']\r\n }],\r\n // backgroundBarColors: ['#ffc838'],\r\n backgroundBarOpacity: 0.6,\r\n backgroundBarRadius: 0,\r\n },\r\n \r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n \r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n \r\n },\r\n \r\n \r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanCasestotal=[];\r\n let cleanCasesPerDay=[];\r\n let cleanCasesMovingDay=[];\r\n let qWhere=\"casesTotal IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let offSwitch=false;\r\n let limitRecord=false;\r\n let ctRec=0;\r\n let qMap={\r\n Day3:{\r\n cases:{\r\n field:\"casesPer100K3DayMovingAvg\",\r\n text:\"New Cases Per 100K - 3 Day Avg\"\r\n }\r\n },\r\n Day7:{\r\n cases:{\r\n field:\"casesPer100K7DayMovingAvg\",\r\n text:\"New Cases Per 100K - 7 Day Avg\"\r\n }\r\n },\r\n Day14:{\r\n cases:{\r\n field:\"casesPer100K14DayMovingAvg\",\r\n text:\"New Cases Per 100K - 14 Day Avg\"\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }\r\n //Broken when Health renamed current14DRecord to current14D\r\n // else if(qValues.type===\"all14\"){\r\n // url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n // qWhere=\"casesTotal IS NOT NULL\";\r\n // }else if(qValues.type===\"14\"){\r\n // url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n // qWhere=\"casesTotal IS NOT NULL AND current14DRecord=1\";\r\n // }\r\n else if(qValues.type===\"28\"){\r\n limitRecord=true;\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else if(qValues.trend===\"off\"){\r\n offSwitch=true;\r\n fieldMap=qMap.Day14;\r\n }\r\n \r\n else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n //current14DRecord\r\n formData.append(\"outFields\",[\"date\",\"casesNewByDay\",\"casesTotal\",fieldMap.cases.field,\"current14D\"]);\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n // if(limitRecord===true){\r\n // formData.append(\"resultRecordCount\",\"28\");\r\n // }\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n ctRec+=1;\r\n var validDate = (new Date(value.attributes.date)).getTime();\r\n let casesNewByDay=value.attributes.casesNewByDay;\r\n let casesMovingDay=value.attributes[fieldMap.cases.field];\r\n \r\n if(casesNewByDay==null){\r\n casesNewByDay=0;\r\n }\r\n if(casesMovingDay==null){\r\n casesMovingDay=0;\r\n }\r\n\r\n if(limitRecord===true){\r\n let maxLimit=qData.features.length;\r\n let minLimit=maxLimit-28;\r\n if(ctRec>minLimit && ctRec<=maxLimit){\r\n cleanCasesPerDay.push(casesNewByDay);\r\n cleanCasesMovingDay.push(casesMovingDay.toFixed(2));\r\n cleanDate.push(validDate);\r\n cleanCasestotal.push(value.attributes.casesTotal);\r\n }\r\n }else{\r\n // build out normally\r\n cleanCasesPerDay.push(casesNewByDay);\r\n cleanCasesMovingDay.push(casesMovingDay.toFixed(2));\r\n cleanDate.push(validDate);\r\n cleanCasestotal.push(value.attributes.casesTotal);\r\n }\r\n \r\n });\r\n\r\n if(offSwitch===true){\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name: 'Cases Total',\r\n type: 'area',\r\n data: cleanCasestotal\r\n }, \r\n \r\n // {\r\n // name:fieldMap.cases.text,\r\n // type:\"line\",\r\n // data:cleanCasesMovingDay\r\n // },\r\n {\r\n name: 'New Cases Per Day',\r\n type: 'bar',\r\n data: cleanCasesPerDay\r\n },\r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#055a87', '#f9a404'],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Cases Total',\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#055a87'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#055a87',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Total Cases\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n {\r\n seriesName: 'Cases Per Day',\r\n show: true,\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#ffc838'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#ffc838',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"New Cases Per Day\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n }, \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n\r\n }else{\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name: 'Cases Total',\r\n type: 'area',\r\n data: cleanCasestotal\r\n }, \r\n \r\n {\r\n name:fieldMap.cases.text,\r\n type:\"line\",\r\n data:cleanCasesMovingDay\r\n },\r\n {\r\n name: 'New Cases Per Day',\r\n type: 'bar',\r\n data: cleanCasesPerDay\r\n },\r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#055a87', '#e6e6e6', '#f9a404'],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate,\r\n \r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Cases Total',\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#055a87'\r\n },\r\n labels: {\r\n // style: {\r\n // colors: '#055a87',\r\n // },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Total Cases\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n {\r\n seriesName: fieldMap.cases.text,\r\n show: true,\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#ffc838'\r\n },\r\n labels: {\r\n // style: {\r\n // colors: '#ffc838',\r\n // },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"New Cases Per Day\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n {\r\n seriesName: fieldMap.cases.text,\r\n opposite: true,\r\n show:false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#f9a404'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#f9a404',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Cases Per Day\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(2);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n \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 render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n }\r\n }\r\n\r\nexport default CasesChartV2;","import React, { Component } from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\nimport _ from 'lodash';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\n// import '../resource/css/centerlogin.css';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\nclass CasesChartRecoveryV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'area',\r\n stacked: false\r\n },\r\n \r\n dataLabels: {\r\n enabled: false\r\n },\r\n markers: {\r\n size: 2.5,\r\n },\r\n fill: {\r\n type: 'gradient',\r\n gradient: {\r\n shadeIntensity: 1,\r\n inverseColors: false,\r\n opacityFrom: 0.15,\r\n opacityTo: 0.05,\r\n stops: [20, 100, 100, 100]\r\n },\r\n },\r\n // colors: ['#055a87', '#7da19d' ],\r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n show:false,\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Cases Per Day',\r\n show: true,\r\n opposite: false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#ffc838'\r\n },\r\n labels: {\r\n // style: {\r\n // colors: '#ffc838',\r\n // },\r\n },\r\n title: {\r\n text: \"Cases Per Day\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n \r\n \r\n ],\r\n // tooltip: {\r\n // fixed: {\r\n // enabled: true,\r\n // // position: 'bottomLeft', // topRight, topLeft, bottomRight, bottomLeft\r\n // // offsetY: 30,\r\n // // offsetX: 60\r\n // },\r\n // },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let twoWeekData=[];\r\n let cleanDate=[];\r\n let cleanCasestotal=[];\r\n let cleanCasesPerDay=[];\r\n let cleanCasesMovingDay=[];\r\n let trendData=[];\r\n let qWhere=\"casesTotal IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let offSwitch=false;\r\n let qMap={\r\n Day3:{\r\n cases:{\r\n field:\"Cases3DayMovingAvgCounty\",\r\n text:\"3 Day Avg\"\r\n }\r\n },\r\n Day7:{\r\n cases:{\r\n field:\"Cases7DayMovingAvgCounty\",\r\n text:\"7 Day Avg\"\r\n }\r\n },\r\n Day14:{\r\n cases:{\r\n field:\"Cases14DayMovingAvgCounty\",\r\n text:\"14 Day Avg\"\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }else if(qValues.type===\"all14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }else if(qValues.type===\"14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"casesTotal IS NOT NULL AND current14DRecord=1\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"casesTotal IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else if(qValues.trend===\"off\"){\r\n offSwitch=true;\r\n fieldMap=qMap.Day14;\r\n }else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n formData=new FormData()\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",['date','casesNewByDayCounty','Cases3DayMovingAvgCounty','Cases7DayMovingAvgCounty','Cases14DayMovingAvgCounty','current14DRecord']);\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n // console.log(qData.features);\r\n let startTwoWeek=qData.features[qData.features.length-14];\r\n let endTwoWeek=qData.features[qData.features.length-1];\r\n let mostRecentDate=(new Date(endTwoWeek.attributes.date)).getTime();\r\n let twoWeekDate=(new Date(startTwoWeek.attributes.date)).getTime();\r\n let trendText=\"\";\r\n let trendColor=\"\";\r\n let trendData=[];\r\n let oldChangeValue;\r\n let ct=0;\r\n let change = endTwoWeek.attributes.casesNewByDayCounty-startTwoWeek.attributes.casesNewByDayCounty;\r\n let change14 = change/14;\r\n\r\n if(change14<=0){\r\n //decline - green\r\n trendColor='#00ff00';\r\n trendText='2 Week Decrease ('+change14.toFixed(2)+')';\r\n }else{\r\n //increase - red\r\n trendColor='#FF0000';\r\n trendText='2 Week Increase ('+change14.toFixed(2)+')';\r\n }\r\n _.forEach(qData.features,function(value,key){\r\n\r\n if(value.attributes.date===twoWeekDate){\r\n trendData.push(value.attributes.casesNewByDayCounty);\r\n oldChangeValue=value.attributes.casesNewByDayCounty;\r\n }else if(value.attributes.date===mostRecentDate){\r\n trendData.push(value.attributes.casesNewByDayCounty);\r\n oldChangeValue=value.attributes.casesNewByDayCounty;\r\n }else if(value.attributes.date>=twoWeekDate && value.attributes.date<=mostRecentDate){\r\n trendData.push((oldChangeValue+change14).toFixed(2));\r\n oldChangeValue=oldChangeValue+change14;\r\n }else{\r\n trendData.push(null);\r\n }\r\n\r\n \r\n var validDate = (new Date(value.attributes.date)).getTime();\r\n let casesNewByDay=value.attributes.casesNewByDayCounty;\r\n let casesMovingDay=value.attributes[fieldMap.cases.field];\r\n \r\n if(casesNewByDay==null){\r\n casesNewByDay=0;\r\n }\r\n if(casesMovingDay==null){\r\n casesMovingDay=0;\r\n }\r\n cleanDate.push(validDate);\r\n cleanCasesPerDay.push(casesNewByDay);\r\n cleanCasesMovingDay.push(casesMovingDay.toFixed(2));\r\n });\r\n\r\n if(offSwitch===true){\r\n // no trend line\r\n this.setState({\r\n series: [\r\n {\r\n name: 'New Cases Per Day',\r\n type: 'area',\r\n data: cleanCasesPerDay\r\n },\r\n {\r\n name: 'Two Week Trend',\r\n type:'area',\r\n data:trendData\r\n }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#055a87',trendColor],\r\n annotations: {\r\n xaxis: [{\r\n x:twoWeekDate,\r\n x2:mostRecentDate,\r\n borderColor: trendColor,\r\n label: {\r\n borderColor: trendColor,\r\n style: {\r\n color: '#fff',\r\n background: trendColor,\r\n },\r\n text: trendText,\r\n }\r\n }],\r\n },\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n },\r\n loading:false,\r\n error:false\r\n });\r\n }else{\r\n //trend line\r\n this.setState({\r\n series: [\r\n {\r\n name: 'New Cases Per Day',\r\n type: 'area',\r\n data: cleanCasesPerDay\r\n },\r\n \r\n {\r\n name:fieldMap.cases.text,\r\n type:\"area\",\r\n data:cleanCasesMovingDay\r\n },\r\n {\r\n name: 'Two Week Trend',\r\n type:'area',\r\n data:trendData\r\n }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#055a87','#7da19d', trendColor],\r\n annotations: {\r\n xaxis: [{\r\n x:twoWeekDate,\r\n x2:mostRecentDate,\r\n borderColor: trendColor,\r\n label: {\r\n borderColor: trendColor,\r\n style: {\r\n color: '#fff',\r\n background: trendColor,\r\n },\r\n text: trendText,\r\n }\r\n }],\r\n },\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n },\r\n loading:false,\r\n error:false\r\n });\r\n\r\n }\r\n \r\n \r\n\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n \r\n\r\n render() {\r\n\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\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 CasesChartRecoveryV2;","import React, { Component } from 'react';\r\nimport Container from 'react-bootstrap/Container';\r\nimport _ from 'lodash';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\n// import '../resource/css/centerlogin.css';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\nclass DeathChartRecoveryV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'area',\r\n stacked: false\r\n },\r\n \r\n dataLabels: {\r\n enabled: false\r\n },\r\n markers: {\r\n size: 2.5,\r\n },\r\n fill: {\r\n type: 'gradient',\r\n gradient: {\r\n shadeIntensity: 1,\r\n inverseColors: false,\r\n opacityFrom: 0.15,\r\n opacityTo: 0.05,\r\n stops: [20, 100, 100, 100]\r\n },\r\n },\r\n // colors: ['#055a87', '#7da19d' ],\r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n \r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let twoWeekData=[];\r\n let cleanDate=[];\r\n let cleanCasestotal=[];\r\n let cleanCasesPerDay=[];\r\n let cleanCasesMovingDay=[];\r\n let trendData=[];\r\n let qWhere=\"casesTotal IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let offSwitch=false;\r\n let qMap={\r\n Day3:{\r\n cases:{\r\n field:\"Death3DayMovingAvg\",\r\n text:\"3 Day Avg\"\r\n }\r\n },\r\n Day7:{\r\n cases:{\r\n field:\"Death7DayMovingAvg\",\r\n text:\"7 Day Avg\"\r\n }\r\n },\r\n Day14:{\r\n cases:{\r\n field:\"Death14DayMovingAvg\",\r\n text:\"14 Day Avg\"\r\n }\r\n }\r\n };\r\n\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"deathNewByDay IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"deathNewByDay IS NOT NULL\";\r\n }else if(qValues.type===\"all14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"deathNewByDay IS NOT NULL\";\r\n }else if(qValues.type===\"14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"deathNewByDay IS NOT NULL AND current14DRecord=1\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"deathNewByDay IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else if(qValues.trend===\"off\"){\r\n fieldMap=qMap.Day14;\r\n offSwitch=true;\r\n }else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n formData=new FormData()\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",['date','deathNewByDay','Death3DayMovingAvg','Death7DayMovingAvg','Death14DayMovingAvg','current14DRecord']);\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n // console.log(qData.features);\r\n let startTwoWeek=qData.features[qData.features.length-14];\r\n let endTwoWeek=qData.features[qData.features.length-1];\r\n let mostRecentDate=(new Date(endTwoWeek.attributes.date)).getTime();\r\n let twoWeekDate=(new Date(startTwoWeek.attributes.date)).getTime();\r\n let trendText=\"\";\r\n let trendColor=\"\";\r\n let trendData=[];\r\n let oldChangeValue;\r\n let ct=0;\r\n let change = endTwoWeek.attributes.deathNewByDay-startTwoWeek.attributes.deathNewByDay;\r\n let change14 = change/14;\r\n\r\n if(change14<=0){\r\n //decline - green\r\n trendColor='#00ff00';\r\n trendText='2 Week Decrease ('+change14.toFixed(2)+')';\r\n }else{\r\n //increase - red\r\n trendColor='#FF0000';\r\n trendText='2 Week Increase ('+change14.toFixed(2)+')';\r\n }\r\n _.forEach(qData.features,function(value,key){\r\n\r\n if(value.attributes.date===twoWeekDate){\r\n trendData.push(value.attributes.deathNewByDay);\r\n oldChangeValue=value.attributes.deathNewByDay;\r\n }else if(value.attributes.date===mostRecentDate){\r\n trendData.push(value.attributes.deathNewByDay);\r\n oldChangeValue=value.attributes.deathNewByDay;\r\n }else if(value.attributes.date>=twoWeekDate && value.attributes.date<=mostRecentDate){\r\n trendData.push((oldChangeValue+change14).toFixed(2));\r\n oldChangeValue=oldChangeValue+change14;\r\n }else{\r\n trendData.push(null);\r\n }\r\n\r\n \r\n var validDate = (new Date(value.attributes.date)).getTime();\r\n let casesNewByDay=value.attributes.deathNewByDay;\r\n let casesMovingDay=value.attributes[fieldMap.cases.field];\r\n \r\n if(casesNewByDay==null){\r\n casesNewByDay=0;\r\n }\r\n if(casesMovingDay==null){\r\n casesMovingDay=0;\r\n }\r\n cleanDate.push(validDate);\r\n cleanCasesPerDay.push(casesNewByDay);\r\n cleanCasesMovingDay.push(casesMovingDay.toFixed(2));\r\n });\r\n\r\n if(offSwitch===true){\r\n // no trend\r\n this.setState({\r\n series: [\r\n {\r\n name: 'New Deaths Per Day',\r\n type: 'area',\r\n data: cleanCasesPerDay\r\n },\r\n {\r\n name: 'Two Week Trend',\r\n type:'area',\r\n data:trendData\r\n }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#00a9e6', trendColor],\r\n yaxis: [\r\n {\r\n seriesName: 'Deaths Per Day',\r\n show: true,\r\n opposite: false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n },\r\n \r\n title: {\r\n text: \"Deaths Per Day\",\r\n }\r\n },\r\n \r\n \r\n ],\r\n annotations: {\r\n xaxis: [{\r\n x:twoWeekDate,\r\n x2:mostRecentDate,\r\n borderColor: trendColor,\r\n label: {\r\n borderColor: trendColor,\r\n style: {\r\n color: '#fff',\r\n background: trendColor,\r\n },\r\n text: trendText,\r\n }\r\n }],\r\n },\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n },\r\n loading:false,\r\n error:false\r\n });\r\n }else{\r\n // trend\r\n this.setState({\r\n series: [\r\n {\r\n name: 'New Deaths Per Day',\r\n type: 'area',\r\n data: cleanCasesPerDay\r\n },\r\n \r\n {\r\n name:fieldMap.cases.text,\r\n type:\"area\",\r\n data:cleanCasesMovingDay\r\n },\r\n {\r\n name: 'Two Week Trend',\r\n type:'area',\r\n data:trendData\r\n }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#00a9e6','#bee8ff', trendColor],\r\n yaxis: [\r\n {\r\n seriesName: 'Deaths Per Day',\r\n show: true,\r\n opposite: false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n },\r\n title: {\r\n text: \"Deaths Per Day\",\r\n }\r\n },\r\n \r\n \r\n ],\r\n annotations: {\r\n xaxis: [{\r\n x:twoWeekDate,\r\n x2:mostRecentDate,\r\n borderColor: trendColor,\r\n label: {\r\n borderColor: trendColor,\r\n style: {\r\n color: '#fff',\r\n background: trendColor,\r\n },\r\n text: trendText,\r\n }\r\n }],\r\n },\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n },\r\n loading:false,\r\n error:false\r\n });\r\n }\r\n \r\n \r\n\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n \r\n\r\n render() {\r\n\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\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 DeathChartRecoveryV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport _ from 'lodash';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\n// import '../resource/css/centerlogin.css';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport qs from 'query-string';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// add some custom css to fix scroll bar\r\nclass TestingChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n error:false,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'line',\r\n stacked: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n startingShape: 'flat',\r\n endingShape: 'flat',\r\n columnWidth: '25%',\r\n barHeight: '70%',\r\n distributed: false,\r\n rangeBarOverlap: true,\r\n colors: {\r\n ranges: [{\r\n from: 0,\r\n to: 0,\r\n color: undefined\r\n }],\r\n backgroundBarColors: [],\r\n backgroundBarOpacity: 1,\r\n backgroundBarRadius: 0,\r\n },\r\n \r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n colors: ['#0084a8b3', '#7da19d','#055a87'],\r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n fill: {\r\n type: \"solid\",\r\n opacity:0.09,\r\n \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n \r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },{\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(2)+\"%\";\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalTests=[];\r\n let cleanTestPercent=[];\r\n let dailyMove=[];\r\n let positiveMove=[];\r\n let qWhere=\"testsDaily IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let offSwitch=false;\r\n let limitRecord=false;\r\n let ctRec=0;\r\n let qMap={\r\n Day3:{\r\n daily:{\r\n field:\"testsDaily3DayMovingAvg\",\r\n text:\"Daily Tests - 3 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive3DayMovingAvg\",\r\n text:\"Positivity Rate - 3 Day Avg\"\r\n }\r\n },\r\n Day7:{\r\n daily:{\r\n field:\"testsDaily7DayMovingAvg\",\r\n text:\"Daily Tests - 7 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive7DayMovingAvg\",\r\n text:\"Positivity Rate - 7 Day Avg\"\r\n }\r\n },\r\n Day14:{\r\n daily:{\r\n field:\"testsDaily14DayMovingAvg\",\r\n text:\"Daily Tests - 14 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive14DayMovingAvg\",\r\n text:\"Positivity Rate - 14 Day Avg\"\r\n }\r\n }\r\n };\r\n\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"all14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"testsDaily IS NOT NULL AND current14DRecord=1\";\r\n }else if(qValues.type===\"28\"){\r\n limitRecord=true;\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else if(qValues.trend===\"off\"){\r\n fieldMap=qMap.Day14;\r\n offSwitch=true;\r\n }else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",['date','testsDaily', 'testspercentpositive','testsDaily3DayMovingAvg','testsDaily7DayMovingAvg','testsDaily14DayMovingAvg','current14DRecord']);\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n let validDate = (new Date(value.attributes.date)).getTime();\r\n ctRec+=1;\r\n let percentValidate = (value.attributes.testspercentpositive*100).toFixed(2);\r\n let cleanTotalValue = (value.attributes.testsDaily).toFixed(0);\r\n\r\n let percentValidateMove = (value.attributes[fieldMap.positive.field]*100).toFixed(2);\r\n if(percentValidateMove == null){\r\n percentValidateMove=0;\r\n }\r\n\r\n let cleanTotalValueMove = (value.attributes[fieldMap.daily.field]).toFixed(0);\r\n if(cleanTotalValueMove==null){\r\n cleanTotalValueMove=0;\r\n }\r\n\r\n if(limitRecord===true){\r\n let maxLimit=qData.features.length;\r\n let minLimit=maxLimit-28;\r\n if(ctRec>minLimit && ctRec<=maxLimit){\r\n cleanDate.push(validDate);\r\n cleanTotalTests.push(cleanTotalValue);\r\n cleanTestPercent.push(percentValidate);\r\n dailyMove.push(cleanTotalValueMove);\r\n positiveMove.push(percentValidateMove);\r\n }\r\n }else{\r\n cleanDate.push(validDate);\r\n cleanTotalTests.push(cleanTotalValue);\r\n cleanTestPercent.push(percentValidate);\r\n dailyMove.push(cleanTotalValueMove);\r\n positiveMove.push(percentValidateMove);\r\n }\r\n \r\n });\r\n\r\n if(offSwitch===true){\r\n // off\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name: 'Daily Tests',\r\n type: 'bar',\r\n data: cleanTotalTests\r\n }, \r\n {\r\n name: '7-Day Moving Average Positivity Rate',\r\n type: 'area',\r\n data: cleanTestPercent\r\n },\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n yaxis: [\r\n {\r\n seriesName: 'Daily Tests',\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#0084a8b3'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#0084a8b3',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Daily Tests\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n {\r\n seriesName: '7-Day Moving Average Positivity Rate',\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#5c5c5c'\r\n },\r\n fill:{\r\n opacity:0.1\r\n },\r\n labels: {\r\n style: {\r\n colors: '#5c5c5c',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0)+\"%\";\r\n }\r\n \r\n },\r\n title: {\r\n text: \"7-Day Moving Average Positivity Rate\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n ],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n }\r\n });\r\n\r\n }else{\r\n // not off\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name: 'Daily Tests',\r\n type: 'bar',\r\n data: cleanTotalTests\r\n }, \r\n {\r\n name: '7-Day Moving Average Positivity Rate',\r\n type: 'area',\r\n data: cleanTestPercent\r\n },\r\n {\r\n name: fieldMap.daily.text,\r\n type: 'area',\r\n data: dailyMove\r\n }, \r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n yaxis: [\r\n {\r\n seriesName: fieldMap.daily.text,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#0084a8b3'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#0084a8b3',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Daily Tests\",\r\n // style: {\r\n // color: '#0084a8b3',\r\n // }\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n {\r\n seriesName: '7-Day Moving Average Positivity Rate',\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#5c5c5c'\r\n },\r\n fill:{\r\n opacity:0.1\r\n },\r\n labels: {\r\n style: {\r\n colors: '#5c5c5c',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0)+\"%\";\r\n }\r\n \r\n },\r\n title: {\r\n text: \"7-Day Moving Average Positivity Rate\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n {\r\n seriesName: fieldMap.daily.text,\r\n show:false,\r\n opposite: false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#5c5c5c'\r\n },\r\n // fill:{\r\n // opacity:0.1\r\n // },\r\n labels: {\r\n style: {\r\n colors: '#5c5c5c',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n \r\n },\r\n title: {\r\n text: fieldMap.daily.text,\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n // {\r\n // seriesName: 'Range',\r\n // show:false,\r\n // opposite: true,\r\n // axisTicks: {\r\n // show: true,\r\n // },\r\n // axisBorder: {\r\n // show: true,\r\n // color: '#5c5c5c'\r\n // },\r\n \r\n // labels: {\r\n // style: {\r\n // colors: '#5c5c5c',\r\n // fontSize: '11px'\r\n // },\r\n // formatter: function(value, timestamp, index) {\r\n // return value.toFixed(0)+\"%\";\r\n // }\r\n \r\n // },\r\n // title: {\r\n // text: \"Positivity Rate\",\r\n // // style: {\r\n // // color: '#ffc838',\r\n // // }\r\n // }\r\n // }\r\n ],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n }\r\n });\r\n }\r\n\r\n \r\n\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n }\r\n\r\nexport default TestingChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport _ from 'lodash';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\n// import '../resource/css/centerlogin.css';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport qs from 'query-string';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// add some custom css to fix scroll bar\r\n\r\n\r\n\r\n\r\nclass HospitalChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n chartType:this.props.chartType,\r\n loading:true,\r\n error:false,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n stacked: false\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n colors: ['#bee8ff', '#00a9e6', '#ffbebe', '#e60000', '#e8beff', '#a900e6' ],\r\n markers: {\r\n size: 2.5,\r\n },\r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'square',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n // title: {\r\n // text: 'Patient Hospitalizations by Day',\r\n // align: 'left',\r\n // offsetX: 0,\r\n // style:{\r\n // fontWeight:'normal'\r\n // }\r\n // },\r\n // subtitle: {\r\n // text: 'COVID-19 Patient Hospitalizations by Day',\r\n // align: 'left',\r\n // offsetX: 0\r\n // },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n },\r\n axisTicks: {\r\n show: true,\r\n },\r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Beds',\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#eaeaea'\r\n },\r\n title: {\r\n text: \"Bed Census\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n }\r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '10px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanDayMovingAcuteCare=[];\r\n let cleanAcute_care_census=[];\r\n let cleanIcuCensus=[];\r\n let cleanTotalBedCenus=[];\r\n let cleanDayMovingIcuCensus=[];\r\n let cleanDayMovingTotal=[];\r\n let qWhere=\"acute_care_census IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let qMap={\r\n Day3:{\r\n acute:{\r\n field:\"AcuteCareCensus3DayMovingAvg\",\r\n text:\"3 Day Avg Acute Care Census\"\r\n },\r\n icu:{\r\n field:\"ICUCensus3DayMovingAvg\",\r\n text:\"3 Day Avg ICU Census\"\r\n },\r\n total:{\r\n field:\"TotalBed3DayMovingAvg\",\r\n text:\"3 Day Avg Total Census\"\r\n }\r\n },\r\n Day7:{\r\n acute:{\r\n field:\"AcuteCareCensus7DayMovingAvg\",\r\n text:\"7 Day Avg Acute Care Census\"\r\n },\r\n icu:{\r\n field:\"ICUCensus7DayMovingAvg\",\r\n text:\"7 Day Avg ICU Census\"\r\n },\r\n total:{\r\n field:\"TotalBed7DayMovingAvg\",\r\n text:\"7 Day Avg Total Census\"\r\n }\r\n },\r\n Day14:{\r\n acute:{\r\n field:\"AcuteCareCensus14DayMovingAvg\",\r\n text:\"14 Day Avg Acute Care Census\"\r\n },\r\n icu:{\r\n field:\"ICUCensus14DayMovingAvg\",\r\n text:\"14 Day Avg ICU Census\"\r\n },\r\n total:{\r\n field:\"TotalBed14DayMovingAvg\",\r\n text:\"14 Day Avg Total Census\"\r\n }\r\n }\r\n };\r\n\r\n // if (qValues.type == null){\r\n // qWhere=\"acute_care_census IS NOT NULL\";\r\n // }else if(qValues.type===\"2\"){\r\n // qWhere=\"acute_care_census IS NOT NULL AND current14DRecord=1\";\r\n // }else if(qValues.type===\"1\"){\r\n // qWhere=\"acute_care_census IS NOT NULL\";\r\n // }else{\r\n // qWhere=\"acute_care_census IS NOT NULL\";\r\n // }\r\n\r\n // if (qValues.range == null){\r\n // fieldMap=qMap.Day3;\r\n // } else if(qValues.range===\"3\"){\r\n // fieldMap=qMap.Day3;\r\n // } else if(qValues.range===\"7\"){\r\n // fieldMap=qMap.Day7;\r\n // }else if(qValues.range===\"14\"){\r\n // fieldMap=qMap.Day14;\r\n // }else{\r\n // fieldMap=qMap.Day3;\r\n // }\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"acute_care_census IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"acute_care_census IS NOT NULL\";\r\n }else if(qValues.type===\"all14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"acute_care_census IS NOT NULL\";\r\n }else if(qValues.type===\"14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"acute_care_census IS NOT NULL AND current14DRecord=1\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"acute_care_census IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n formData=new FormData()\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n let validDate = (new Date(value.attributes.date)).getTime();\r\n\r\n let acuteCareCensus = (value.attributes.acute_care_census).toFixed(0);\r\n let icuCensus = (value.attributes.icu_census).toFixed(0);\r\n let totalBedCensus = (value.attributes.totalBed).toFixed(0);\r\n\r\n let dayMovingAcuteCare = (value.attributes[fieldMap.acute.field]).toFixed(0);\r\n let dayMovingIcuCensus = (value.attributes[fieldMap.icu.field]).toFixed(0);\r\n let dayMovingTotal = (value.attributes[fieldMap.total.field]).toFixed(0);\r\n\r\n cleanDate.push(validDate);\r\n cleanTotalBedCenus.push(totalBedCensus);\r\n cleanIcuCensus.push(icuCensus);\r\n cleanDayMovingAcuteCare.push(dayMovingAcuteCare);\r\n cleanAcute_care_census.push(acuteCareCensus);\r\n cleanDayMovingIcuCensus.push(dayMovingIcuCensus);\r\n cleanDayMovingTotal.push(dayMovingTotal);\r\n\r\n });\r\n // console.log(cleanTotalTests)\r\n\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [{\r\n name: 'Acute Care Census',\r\n type: 'line',\r\n data: cleanAcute_care_census\r\n }, {\r\n name: fieldMap.acute.text,\r\n type: 'line',\r\n data: cleanDayMovingAcuteCare\r\n }, {\r\n name: 'ICU Census',\r\n type: 'line',\r\n data: cleanIcuCensus\r\n }, {\r\n name: fieldMap.icu.text,\r\n type: 'line',\r\n data: cleanDayMovingIcuCensus\r\n }, {\r\n name: 'Total Bed Census',\r\n type: 'line',\r\n data: cleanTotalBedCenus\r\n }, {\r\n name: fieldMap.total.text,\r\n type: 'line',\r\n data: cleanDayMovingTotal\r\n } ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n }\r\n });\r\n\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n \r\n\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default HospitalChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport _ from 'lodash';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\n// import '../resource/css/centerlogin.css';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport qs from 'query-string';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// add some custom css to fix scroll bar\r\nclass TestingPopChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n error:false,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'line',\r\n stacked: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n startingShape: 'flat',\r\n endingShape: 'flat',\r\n columnWidth: '25%',\r\n barHeight: '70%',\r\n distributed: false,\r\n rangeBarOverlap: true,\r\n colors: {\r\n ranges: [{\r\n from: 0,\r\n to: 0,\r\n color: undefined\r\n }],\r\n backgroundBarColors: [],\r\n backgroundBarOpacity: 1,\r\n backgroundBarRadius: 0,\r\n },\r\n \r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n colors: ['#0084a8b3', '#7da19d','#055a87'],\r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n fill: {\r\n type: \"solid\",\r\n opacity:1,\r\n \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n yaxis: [\r\n \r\n {\r\n seriesName: 'Population Tested %',\r\n opposite: false,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#5c5c5c'\r\n },\r\n fill:{\r\n opacity:0.1\r\n },\r\n labels: {\r\n style: {\r\n colors: '#5c5c5c',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0)+\"%\";\r\n }\r\n \r\n },\r\n title: {\r\n text: \"Population Tested %\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n {\r\n seriesName: 'Daily Tests',\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#0084a8b3'\r\n },\r\n labels: {\r\n style: {\r\n colors: '#0084a8b3',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n }\r\n },\r\n title: {\r\n text: \"Daily Tests\",\r\n // style: {\r\n // color: '#0084a8b3',\r\n // }\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n },\r\n {\r\n seriesName: 'Range',\r\n show:false,\r\n opposite: true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n color: '#5c5c5c'\r\n },\r\n // fill:{\r\n // opacity:0.1\r\n // },\r\n labels: {\r\n style: {\r\n colors: '#5c5c5c',\r\n fontSize: '11px'\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0)+\"%\";\r\n }\r\n \r\n },\r\n title: {\r\n text: \"Positivity Rate\",\r\n // style: {\r\n // color: '#ffc838',\r\n // }\r\n }\r\n },\r\n // {\r\n // seriesName: 'Range',\r\n // show:false,\r\n // opposite: true,\r\n // axisTicks: {\r\n // show: true,\r\n // },\r\n // axisBorder: {\r\n // show: true,\r\n // color: '#5c5c5c'\r\n // },\r\n \r\n // labels: {\r\n // style: {\r\n // colors: '#5c5c5c',\r\n // fontSize: '11px'\r\n // },\r\n // formatter: function(value, timestamp, index) {\r\n // return value.toFixed(0)+\"%\";\r\n // }\r\n \r\n // },\r\n // title: {\r\n // text: \"Positivity Rate\",\r\n // // style: {\r\n // // color: '#ffc838',\r\n // // }\r\n // }\r\n // }\r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [\r\n \r\n {\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(2)+\"%\";\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n return value.toFixed(0);\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },\r\n ],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalTests=[];\r\n let cleanTestPercent=[];\r\n let dailyMove=[];\r\n let positiveMove=[];\r\n let qWhere=\"testsDaily IS NOT NULL\";\r\n let fieldMap;\r\n let url;\r\n let qMap={\r\n Day3:{\r\n daily:{\r\n field:\"testsDaily3DayMovingAvg\",\r\n text:\"Daily Tests - 3 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive3DayMovingAvg\",\r\n text:\"Positivity Rate - 3 Day Avg\"\r\n }\r\n },\r\n Day7:{\r\n daily:{\r\n field:\"testsDaily7DayMovingAvg\",\r\n text:\"Daily Tests - 7 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive7DayMovingAvg\",\r\n text:\"Positivity Rate - 7 Day Avg\"\r\n }\r\n },\r\n Day14:{\r\n daily:{\r\n field:\"testsDaily14DayMovingAvg\",\r\n text:\"Daily Tests - 14 Day Avg\"\r\n },\r\n positive:{\r\n field:\"testspercentpositive14DayMovingAvg\",\r\n text:\"Positivity Rate - 14 Day Avg\"\r\n }\r\n }\r\n };\r\n\r\n\r\n if (qValues.type == null){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"all\"){\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"all14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }else if(qValues.type===\"14\"){\r\n url=config.apiv2.covidRecoveryAllTwoWeeks;\r\n qWhere=\"testsDaily IS NOT NULL AND current14DRecord=1\";\r\n }else{\r\n url=config.apiv2.covidCases;\r\n qWhere=\"testsDaily IS NOT NULL\";\r\n }\r\n \r\n if (qValues.trend == null){\r\n fieldMap=qMap.Day3;\r\n } else if(qValues.range===\"3\"){\r\n fieldMap=qMap.Day3; \r\n } else if(qValues.trend===\"7\"){\r\n fieldMap=qMap.Day7;\r\n }else if(qValues.trend===\"14\"){\r\n fieldMap=qMap.Day14;\r\n }else{\r\n fieldMap=qMap.Day3;\r\n }\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",['date','testsPopTested', 'testsDaily', 'testspercentpositive','testsDaily3DayMovingAvg','testspercentpositive3DayMovingAvg','testsDaily7DayMovingAvg','testspercentpositive7DayMovingAvg','testsDaily14DayMovingAvg','testspercentpositive14DayMovingAvg','current14DRecord']);\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n let validDate = (new Date(value.attributes.date)).getTime();\r\n\r\n let percentValidate = (value.attributes.testsPopTested*100).toFixed(2);\r\n let cleanTotalValue = (value.attributes.testsDaily).toFixed(0);\r\n\r\n let percentValidateMove = (value.attributes[fieldMap.positive.field]*100).toFixed(2);\r\n if(percentValidateMove == null){\r\n percentValidateMove=0;\r\n }\r\n\r\n let cleanTotalValueMove = (value.attributes[fieldMap.daily.field]).toFixed(0);\r\n if(cleanTotalValueMove==null){\r\n cleanTotalValueMove=0;\r\n }\r\n\r\n\r\n cleanDate.push(validDate);\r\n cleanTotalTests.push(cleanTotalValue);\r\n cleanTestPercent.push(percentValidate);\r\n dailyMove.push(cleanTotalValueMove);\r\n positiveMove.push(percentValidateMove);\r\n });\r\n // console.log(cleanTotalTests)\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [ \r\n {\r\n name: 'Population Tested %',\r\n type: 'line',\r\n data: cleanTestPercent\r\n },\r\n \r\n {\r\n name: fieldMap.daily.text,\r\n type: 'line',\r\n data: dailyMove\r\n }, \r\n {\r\n name: 'Daily Tests',\r\n type: 'bar',\r\n data: cleanTotalTests\r\n },\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate\r\n }\r\n }\r\n });\r\n\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n }\r\n }\r\n\r\nexport default TestingPopChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\n// import '../resource/css/centerlogin.css';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\n// import '../../resources/css/vaccineHelper.css';\r\nimport config from '../../config';\r\n\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\n\r\n\r\n\r\nclass VaccineChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n stacked: true\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n startingShape: 'flat',\r\n endingShape: 'flat',\r\n columnWidth: '35%',\r\n barHeight: '70%',\r\n distributed: false,\r\n rangeBarOverlap: true,\r\n colors: {\r\n ranges: [{\r\n \r\n color: ['#ffc838']\r\n }],\r\n backgroundBarOpacity: 0.6,\r\n backgroundBarRadius: 0,\r\n },\r\n \r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n \r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 2,\r\n dashArray: 0, \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n \r\n },\r\n \r\n \r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalCumulativeAACORes=[];\r\n let cleanTotal1stDose=[];\r\n let cleanTotal2ndDose=[];\r\n let cleanTotalBothDose=[];\r\n let cleanCasesPerDay=[];\r\n let cleanCasesMovingDay=[];\r\n let qWhere=\"1=1\";\r\n let fieldMap;\r\n let url=config.apiv2.vaccine;;\r\n let offSwitch=false;\r\n let limitRecord=false;\r\n let ctRec=0;\r\n \r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n ctRec+=1;\r\n var validDate = (new Date(value.attributes.date)).getTime();\r\n //let TotalCumulativeAACORes=value.attributes.TotalCumulative_AACORes\r\n let TotalCumulativeAACORes=value.attributes.FullyDoseTotal;\r\n //let total1stDose = value.attributes.Total1Dose_AACORes\r\n let total1stDose = value.attributes.FirstDose;\r\n //let total2ndDose = value.attributes.Total2Doses_AACORes\r\n let total2ndDose = value.attributes.SecondSingleDose;\r\n \r\n cleanDate.push(validDate);\r\n cleanTotalCumulativeAACORes.push(TotalCumulativeAACORes);\r\n cleanTotal1stDose.push(total1stDose);\r\n cleanTotal2ndDose.push(total2ndDose);\r\n cleanTotalBothDose.push(total1stDose+total2ndDose);\r\n });\r\n let minTotalDose=Math.min.apply(Math, cleanTotalCumulativeAACORes);\r\n let maxTotalDose=Math.max.apply(Math, cleanTotalCumulativeAACORes);\r\n let minBothDose=Math.min.apply(Math, cleanTotalBothDose);\r\n let maxBothDose=Math.max.apply(Math, cleanTotalBothDose);\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n // {\r\n // name: 'Overall Total',\r\n // type: 'area',\r\n // data: cleanTotalCumulativeAACORes\r\n // },\r\n {\r\n name: '1st Dose',\r\n type: 'bar',\r\n data: cleanTotal1stDose\r\n },\r\n {\r\n name: 'Second/Single Dose',\r\n type: 'bar',\r\n data: cleanTotal2ndDose\r\n },\r\n {\r\n name:'Total Daily Doses',\r\n type:'area',\r\n data:cleanTotalBothDose\r\n }\r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#ffbe4f', '#0ea7b5','#FFf9a404','#FFf9a404'],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate,\r\n \r\n },\r\n yaxis: [\r\n // {\r\n // seriesName: 'Overall Total',\r\n \r\n // axisTicks: {\r\n // show: true,\r\n // },\r\n // axisBorder: {\r\n // show: true,\r\n // // color: '#055a87'\r\n // },\r\n // labels: {\r\n // style: {\r\n // // colors: '#055a87',\r\n // },\r\n // formatter: function(value, timestamp, index) {\r\n // return value.toFixed(0);\r\n // }\r\n // },\r\n // title: {\r\n // text: \"Overall Total\",\r\n // },\r\n // tooltip: {\r\n // enabled: true\r\n // }\r\n // },\r\n {\r\n show: false,\r\n opposite: true,\r\n min:minBothDose,\r\n max:maxBothDose,\r\n forceNiceScale:true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#ffc838'\r\n },\r\n labels: {\r\n style: {\r\n // colors: '#ffc838',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"Daily Doses\",\r\n }\r\n },\r\n {\r\n show: true,\r\n opposite: false,\r\n min:minBothDose,\r\n max:maxBothDose,\r\n forceNiceScale:true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#ffc838'\r\n },\r\n labels: {\r\n style: {\r\n // colors: '#ffc838',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"Daily Doses\",\r\n }\r\n },\r\n // {\r\n // show: false,\r\n // opposite: true,\r\n // min:minBothDose,\r\n // max:maxBothDose,\r\n // forceNiceScale:true,\r\n // axisTicks: {\r\n // show: true,\r\n // },\r\n // axisBorder: {\r\n // show: true,\r\n // color: '#ffc838'\r\n // },\r\n // labels: {\r\n // style: {\r\n // colors: '#ffc838',\r\n // },\r\n // formatter: function(value, timestamp, index) {\r\n // return value.toFixed(0);\r\n // }\r\n // },\r\n // title: {\r\n // text: \"Daily Doses\",\r\n // }\r\n // }\r\n \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [\r\n {\r\n formatter: function(value, timestamp, index) {\r\n if (value != null){\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n }\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n if (value != null){\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n }\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n if (value != null){\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n }\r\n }],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n\r\n \r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n \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 render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n }\r\n }\r\n\r\nexport default VaccineChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\n// import '../resource/css/centerlogin.css';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\n// import '../../resources/css/vaccineHelper.css';\r\nimport config from '../../config';\r\n\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\n\r\n\r\n\r\nclass VaccineCumulativeChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n stacked: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n startingShape: 'flat',\r\n endingShape: 'flat',\r\n columnWidth: '35%',\r\n barHeight: '70%',\r\n distributed: false,\r\n rangeBarOverlap: true,\r\n colors: {\r\n ranges: [{\r\n \r\n color: ['#ffc838']\r\n }],\r\n backgroundBarOpacity: 0.6,\r\n backgroundBarRadius: 0,\r\n },\r\n \r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n \r\n stroke: {\r\n show: true,\r\n curve: 'smooth',\r\n lineCap: 'butt',\r\n // colors: ['#5c5c5c'],\r\n width: 3,\r\n dashArray: 0, \r\n },\r\n \r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n \r\n },\r\n \r\n \r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalCumulativeAACORes=[];\r\n let cleanTotal1stDose=[];\r\n let cleanTotal2ndDose=[];\r\n let cleanTotalBothDose=[];\r\n let cleanCasesPerDay=[];\r\n let cleanCasesMovingDay=[];\r\n let qWhere=\"1=1\";\r\n let fieldMap;\r\n let url=config.apiv2.vaccine;;\r\n let offSwitch=false;\r\n let limitRecord=false;\r\n let ctRec=0;\r\n \r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"date\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n ctRec+=1;\r\n var validDate = (new Date(value.attributes.date)).getTime();\r\n let TotalCumulativeAACORes=value.attributes.TotalCumulative_AACORes;\r\n let total1stDose = value.attributes.Total1Dose_AACORes;\r\n let total2ndDose = value.attributes.Total2Doses_AACORes;\r\n \r\n cleanDate.push(validDate);\r\n cleanTotalCumulativeAACORes.push(TotalCumulativeAACORes);\r\n cleanTotal1stDose.push(total1stDose);\r\n cleanTotal2ndDose.push(total2ndDose);\r\n cleanTotalBothDose.push(total1stDose+total2ndDose);\r\n });\r\n let minTotalDose=Math.min.apply(Math, cleanTotalCumulativeAACORes);\r\n let maxTotalDose=Math.max.apply(Math, cleanTotalCumulativeAACORes);\r\n let minBothDose=Math.min.apply(Math, cleanTotalBothDose);\r\n let maxBothDose=Math.max.apply(Math, cleanTotalBothDose);\r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name: 'Total Vaccines Administered',\r\n type: 'line',\r\n data: cleanTotalCumulativeAACORes\r\n },\r\n \r\n {\r\n name:'Daily Vaccines',\r\n type:'bar',\r\n data:cleanTotalBothDose\r\n }\r\n ],\r\n options: {\r\n ...this.state.options,\r\n colors: ['#ffbe4f', '#0ea7b5'],\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:cleanDate,\r\n \r\n },\r\n yaxis: [\r\n {\r\n seriesName: 'Total Vaccines Administered',\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#055a87'\r\n },\r\n labels: {\r\n style: {\r\n // colors: '#055a87',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"# of Vaccines Administered\",\r\n },\r\n tooltip: {\r\n enabled: false\r\n }\r\n },\r\n {\r\n seriesName:\"Daily Vaccines\",\r\n show: true,\r\n opposite: true,\r\n min:minBothDose,\r\n max:maxBothDose,\r\n forceNiceScale:true,\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n // color: '#ffc838'\r\n },\r\n labels: {\r\n style: {\r\n // colors: '#ffc838',\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"Daily Vaccines\",\r\n }\r\n },\r\n \r\n \r\n \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: true,\r\n fillSeriesColor: false,\r\n // theme: true,\r\n style: {\r\n fontSize: '11px',\r\n //fontFamily: undefined\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: false,\r\n },\r\n \r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n },\r\n {\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n \r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n\r\n \r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n \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 render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default VaccineCumulativeChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n\r\nclass RegistrationActiveInactiveChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 350,\r\n stacked: true,\r\n stackType: '100%',\r\n toolbar: {\r\n show: true\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n },\r\n },\r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Active vs Received Dose / Unregistered'\r\n },\r\n colors: ['#1989db','#073863'],\r\n xaxis: {\r\n categories: ['Phase'],\r\n labels:{\r\n show: true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n },\r\n }\r\n },\r\n yaxis: [\r\n {\r\n labels: {\r\n show:false\r\n },\r\n title: {\r\n text: \"\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n }\r\n \r\n ],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalCumulativeAACORes=[];\r\n let cleanTotal1stDose=[];\r\n let cleanTotal2ndDose=[];\r\n let cleanTotalBothDose=[];\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let ctRec=0;\r\n let raceName=[];\r\n let raceActive=[];\r\n let raceInactive=[];\r\n let raceTotal=[];\r\n let theData=[];\r\n let totalActive=0;\r\n let totalInactive=0;\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n console.log(value.attributes);\r\n totalActive+=value.attributes.active;\r\n totalInactive+=value.attributes.inactive;\r\n // theData.push({\r\n // name: value.attributes.Priority_Category,\r\n // type: 'bar',\r\n // data: [value.attributes.total]\r\n // });\r\n // raceName.push(value.attributes.race);\r\n // raceActive.push(value.attributes.active);\r\n // raceInactive.push(value.attributes.inactive);\r\n // raceTotal.push(value.attributes.total);\r\n });\r\n // console.log(total)\r\n theData.push({\r\n name: \"Active\",\r\n type: 'bar',\r\n data: [totalActive]\r\n });\r\n theData.push({\r\n name: \"Received Dose / Unregistered\",\r\n type: 'bar',\r\n data: [totalInactive]\r\n });\r\n // _.forEach(theData,function(value,key){\r\n // let percCalc=(value.data[0]/total)*100;\r\n // percCalc=Math.round(percCalc * 10) / 10\r\n // console.log(percCalc)\r\n // value.data=[percCalc];\r\n // });\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: theData,\r\n options: {\r\n ...this.state.options,\r\n \r\n \r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n \r\n }],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationActiveInactiveChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\nimport RegistrationActiveInactiveChartV2 from './RegistrationActiveInactiveChartV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n\r\nclass RegistrationActiveInactiveChartV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n height: 350,\r\n stacked: true,\r\n stackType: '100%',\r\n toolbar: {\r\n show: true\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n },\r\n },\r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Active vs Received Dose / Unregistered'\r\n },\r\n colors: ['#1989db','#073863'],\r\n xaxis: {\r\n categories: ['Phase'],\r\n labels:{\r\n show: true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n },\r\n }\r\n },\r\n yaxis: [\r\n {\r\n labels: {\r\n show:false\r\n },\r\n title: {\r\n text: \"\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n }\r\n \r\n ],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalCumulativeAACORes=[];\r\n let cleanTotal1stDose=[];\r\n let cleanTotal2ndDose=[];\r\n let cleanTotalBothDose=[];\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let ctRec=0;\r\n let raceName=[];\r\n let raceActive=[];\r\n let raceInactive=[];\r\n let raceTotal=[];\r\n let theData=[];\r\n let totalActive=0;\r\n let totalInactive=0;\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n console.log(value.attributes);\r\n totalActive+=value.attributes.active;\r\n totalInactive+=value.attributes.inactive;\r\n // theData.push({\r\n // name: value.attributes.Priority_Category,\r\n // type: 'bar',\r\n // data: [value.attributes.total]\r\n // });\r\n // raceName.push(value.attributes.race);\r\n // raceActive.push(value.attributes.active);\r\n // raceInactive.push(value.attributes.inactive);\r\n // raceTotal.push(value.attributes.total);\r\n });\r\n // console.log(total)\r\n theData.push({\r\n name: \"Active\",\r\n type: 'bar',\r\n data: [totalActive]\r\n });\r\n theData.push({\r\n name: \"Received Dose / Unregistered\",\r\n type: 'bar',\r\n data: [totalInactive]\r\n });\r\n // _.forEach(theData,function(value,key){\r\n // let percCalc=(value.data[0]/total)*100;\r\n // percCalc=Math.round(percCalc * 10) / 10\r\n // console.log(percCalc)\r\n // value.data=[percCalc];\r\n // });\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: theData,\r\n options: {\r\n ...this.state.options,\r\n \r\n \r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n \r\n }],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n \r\n return (\r\n \r\n {/* style={{height:\"100vh\",paddingRight:\"0\",paddingLeft:\"0\"}} */}\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 RegistrationActiveInactiveChartV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport qs from 'query-string';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationRaceTotalChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n stacked: true,\r\n stackType: '100%'\r\n },\r\n colors: ['#9d1e1b','#c40c3e','#f15d37','#ff9801','#eda623'],\r\n title: {\r\n text: 'Pre-Registrations by Race/Ethnicity and Phase'\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n columnWidth: '75%',\r\n },\r\n },\r\n dataLabels: {\r\n enabled: true\r\n },\r\n \r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n xaxis: {\r\n type: 'category',\r\n categories: [],\r\n },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationRaceStage;\r\n let raceName=[];\r\n let raceActive=[];\r\n let raceInactive=[];\r\n let raceTotal=[];\r\n let theChartData=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"sortRank,race,Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n\r\n const groupRace= _.chain(qData.features).groupBy(\"attributes.race\").map((value, key) => ({ race: key, stages: value })).value();\r\n // console.log(groupRace);\r\n _.forEach(groupRace,function(value,key){\r\n let tempTotal=0;\r\n \r\n _.forEach(value.stages,function(valueS,keyS){\r\n // need to find the specific stage array\r\n tempTotal+=valueS.attributes.total;\r\n let searchPhase = _.find(theChartData,{name:valueS.attributes.Priority_Category});\r\n if(_.isEmpty(searchPhase)!==true){\r\n //found it\r\n // console.log(searchPhase)\r\n searchPhase.data.push(valueS.attributes.total);\r\n }else{\r\n theChartData.push({\r\n name:valueS.attributes.Priority_Category,\r\n data:[valueS.attributes.total]\r\n });\r\n }\r\n });\r\n raceName.push(value.race+\" - \"+tempTotal);\r\n });\r\n\r\n // _.forEach(qData.features,function(value,key){\r\n // raceActive.push(value.attributes.active);\r\n // raceInactive.push(value.attributes.inactive);\r\n // raceTotal.push(value.attributes.total);\r\n // });\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series:theChartData,\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:raceName,\r\n },\r\n yaxis: [\r\n {\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n },\r\n labels: {\r\n style: {\r\n },\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"\",\r\n },\r\n tooltip: {\r\n enabled: false\r\n }\r\n }\r\n \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationRaceTotalChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationRaceTotalChartV2 from './RegistrationRaceTotalChartV2';\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationRaceTotalChartV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n \r\n\r\n componentDidMount(){\r\n console.log(\"load\")\r\n }\r\n\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 \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationRaceTotalChartV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationStageTotalChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n type: 'bar',\r\n stacked: true,\r\n stackType: '100%',\r\n toolbar: {\r\n show: true\r\n }\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n },\r\n },\r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Pre-Registrations By Phase'\r\n },\r\n colors: ['#9d1e1b','#c40c3e','#f15d37','#ff9801','#eda623'],\r\n xaxis: {\r\n categories: ['Phase'],\r\n labels:{\r\n show: true,\r\n formatter: function(value, timestamp, index) {\r\n return value.toString()+\"%\";\r\n },\r\n }\r\n },\r\n yaxis: [\r\n {\r\n labels: {\r\n show:false\r\n },\r\n title: {\r\n text: \"\",\r\n },\r\n tooltip: {\r\n enabled: true\r\n }\r\n }\r\n \r\n ],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let cleanDate=[];\r\n let cleanTotalCumulativeAACORes=[];\r\n let cleanTotal1stDose=[];\r\n let cleanTotal2ndDose=[];\r\n let cleanTotalBothDose=[];\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let ctRec=0;\r\n let raceName=[];\r\n let raceActive=[];\r\n let raceInactive=[];\r\n let raceTotal=[];\r\n let theData=[];\r\n let total=0;\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n console.log(value.attributes);\r\n total+=value.attributes.total;\r\n theData.push({\r\n name: value.attributes.Priority_Category,\r\n type: 'bar',\r\n data: [value.attributes.total]\r\n });\r\n // raceName.push(value.attributes.race);\r\n // raceActive.push(value.attributes.active);\r\n // raceInactive.push(value.attributes.inactive);\r\n // raceTotal.push(value.attributes.total);\r\n });\r\n console.log(total)\r\n // _.forEach(theData,function(value,key){\r\n // let percCalc=(value.data[0]/total)*100;\r\n // percCalc=Math.round(percCalc * 10) / 10\r\n // console.log(percCalc)\r\n // value.data=[percCalc];\r\n // });\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: theData,\r\n options: {\r\n ...this.state.options,\r\n \r\n \r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n \r\n }],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationStageTotalChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationStageTotalChartV2 from './RegistrationStageTotalChartV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationStageTotalChartV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"Loaded\")\r\n }\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 }\r\n}\r\n\r\nexport default RegistrationStageTotalChartV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport config from '../../config';\r\nimport '../../resources/css/bootstrapHelper.css'; \r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationTotalCardV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n total:0\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n async loadOut(){\r\n let formData;\r\n let qResp;\r\n let qData;\r\n \r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let total=0;\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n total+=value.attributes.total;\r\n });\r\n this.setState({\r\n loading:false,\r\n total:this.formatNumber(total),\r\n error:false,\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n Total Pre-Registrations\r\n \r\n {this.state.total}\r\n \r\n \r\n 1/15/21 to Current\r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationTotalCardV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport config from '../../config';\r\nimport '../../resources/css/bootstrapHelper.css'; \r\n\r\nimport RegistrationTotalCardV2 from './RegistrationTotalCardV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationTotalCardV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n total:0\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded...\")\r\n }\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\r\nexport default RegistrationTotalCardV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Table from 'react-bootstrap/Table';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport qs from 'query-string';\r\nimport config from '../../config';\r\n// import '../../resources/css/test.css';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationTotalTableV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n theData:[],\r\n total:0,\r\n theTable:null,\r\n tableHead:[],\r\n tableBody:[],\r\n tableFooter:[],\r\n height:props.height,\r\n maxHeight:props.maxHeight\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n async loadOut(){\r\n let formData;\r\n let qResp;\r\n let qData;\r\n \r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let theData=[];\r\n let total=0;\r\n let tableHead=[];\r\n let tableBody=[];\r\n let tableFooter=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n tableHead.push(Phase)\r\n tableBody.push(Distributution)\r\n tableFooter.push()\r\n _.forEach(qData.features,function(value,key){\r\n // console.log(value.attributes);\r\n total+=value.attributes.total;\r\n theData.push({\r\n name: value.attributes.Priority_Category,\r\n type: 'bar',\r\n data: [value.attributes.total]\r\n });\r\n // let test = this.formatNumber(value.attributes.total)\r\n // console.log()\r\n tableHead.push({value.attributes.Priority_Category})\r\n \r\n \r\n });\r\n \r\n for (const [key,value] of Object.entries(theData)){ \r\n let percCalc=(value.data[0]/total)*100;\r\n percCalc=Math.round(percCalc * 10) / 10\r\n console.log(percCalc)\r\n tableBody.push({percCalc}%)\r\n tableFooter.push({this.formatNumber(value.data[0])})\r\n\r\n }\r\n // _.forEach(theData,function(value,key){\r\n // let percCalc=(value.data[0]/total)*100;\r\n // percCalc=Math.round(percCalc * 10) / 10\r\n // console.log(percCalc)\r\n // tableBody.push({percCalc}%)\r\n // tableFooter.push({this.formatNumber(total)value.data[0]})\r\n // });\r\n \r\n tableHead.push(Total)\r\n tableBody.push()\r\n tableFooter.push({this.formatNumber(total)})\r\n\r\n this.setState({\r\n loading:false,\r\n total:this.formatNumber(total),\r\n // theData:theData,\r\n tableHead:tableHead,\r\n tableBody:tableBody,\r\n tableFooter:tableFooter,\r\n error:false,\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n \r\n \r\n {this.state.tableHead}\r\n \r\n \r\n \r\n \r\n {this.state.tableBody}\r\n \r\n \r\n {this.state.tableFooter}\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationTotalTableV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationTotalTableV2 from './RegistrationTotalTableV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationTotalTableV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationTotalTableV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Table from 'react-bootstrap/Table';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationRaceTotalTableV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n height:props.height,\r\n loading:true,\r\n theData:[],\r\n total:0,\r\n theTable:null,\r\n tableHead:[],\r\n tableBody:[],\r\n tableFooter:[],\r\n tableRowTotal:[],\r\n tableRowTotalPerc:[],\r\n tableRowStage:[]\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n async loadOut(){\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationRaceStage;;\r\n let total=0;\r\n let tableHead=[];\r\n let tableRowTotalPerc=[];\r\n let tableRowTotal=[];\r\n let tableRowStage=[];\r\n let tableBody=[];\r\n let tableFooter=[];\r\n let cols=[];\r\n let overallTotal=0;\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"sortRank,race,Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n\r\n \r\n tableHead.push(Race/Ethnicity)\r\n tableBody.push(Distributution)\r\n tableRowTotalPerc.push(Distributution);\r\n tableRowTotal.push(Total);\r\n tableFooter.push()\r\n\r\n const groupRace= _.chain(qData.features).groupBy(\"attributes.race\").map((value, key) => ({ race: key, stages: value })).value();\r\n let groupPhase= _.chain(qData.features).groupBy(\"attributes.Priority_Category\").map((value, key) => ({ phase: key, races: value })).value();\r\n groupPhase = _.sortBy(groupPhase, ['phase']);\r\n console.log(groupPhase);\r\n\r\n \r\n // go over once to get overall total and build out header row\r\n // _.forEach(groupRace,function(value,key){\r\n for (const [key,value] of Object.entries(groupRace)){\r\n // builder header and get sum here\r\n tableHead.push({value.race})\r\n cols.push(value.race);\r\n let totalRace=0;\r\n // _.forEach(value.stages,function(valueS,keyS){\r\n for (const [keyS,valueS] of Object.entries(value.stages)){\r\n totalRace+=valueS.attributes.total;\r\n }\r\n // });\r\n overallTotal+=totalRace;\r\n }\r\n // });\r\n\r\n // loop over again to build race rows\r\n // _.forEach(groupRace,function(value,key){\r\n for (const [key,value] of Object.entries(groupRace)){\r\n // builder header and get sum rows here\r\n let totalRace=0;\r\n // _.forEach(value.stages,function(valueS,keyS){\r\n for (const [keyS,valueS] of Object.entries(value.stages)){\r\n totalRace+=valueS.attributes.total;\r\n }\r\n // });\r\n let percCalc=(totalRace/overallTotal)*100;\r\n percCalc=Math.round(percCalc * 10) / 10;\r\n tableRowTotalPerc.push({percCalc}%)\r\n tableRowTotal.push({this.formatNumber(totalRace)})\r\n }\r\n // });\r\n tableRowTotalPerc.push()\r\n tableRowTotal.push({this.formatNumber(overallTotal)})\r\n\r\n // loop over the phase object and build out the stage rows\r\n tableRowStage.push(Phase);\r\n for (const [key,value] of Object.entries(groupPhase)){ \r\n // maybe sort the races object before loop just to be safe\r\n let tempTd=[];\r\n let tempPercTd=[];\r\n let sumStage=0;\r\n for (const [keyR,valueR] of Object.entries(value.races)){ \r\n sumStage+=valueR.attributes.total;\r\n }\r\n for (const [keyR,valueR] of Object.entries(value.races)){ \r\n tempTd.push({this.formatNumber(valueR.attributes.total)});\r\n let tempPerc=(valueR.attributes.total/sumStage)*100;\r\n tempPerc=Math.round(tempPerc * 10) / 10\r\n tempPercTd.push({tempPerc}%);\r\n }\r\n tableRowStage.push(<>{value.phase}{tempTd}{this.formatNumber(sumStage)}{tempPercTd});\r\n }\r\n\r\n tableHead.push(Total)\r\n tableBody.push()\r\n tableFooter.push({this.formatNumber(total)})\r\n\r\n this.setState({\r\n loading:false,\r\n total:this.formatNumber(total),\r\n tableHead:tableHead,\r\n tableBody:tableBody,\r\n tableRowStage:tableRowStage,\r\n tableRowTotalPerc:tableRowTotalPerc,\r\n tableRowTotal:tableRowTotal,\r\n tableFooter:tableFooter,\r\n error:false,\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n {/* height:\"98vh\", */}\r\n \r\n \r\n {this.state.tableHead}\r\n \r\n \r\n \r\n \r\n {this.state.tableRowTotalPerc}\r\n \r\n \r\n {this.state.tableRowTotal}\r\n \r\n {this.state.tableRowStage}\r\n \r\n
\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationRaceTotalTableV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport RegistrationRaceTotalTableV2 from './RegistrationRaceTotalTableV2';\r\n\r\nclass RegistrationRaceTotalTableShowV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"Load out\");\r\n }\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 }\r\n}\r\n\r\nexport default RegistrationRaceTotalTableShowV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport qs from 'query-string';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationActiveCardV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n total:0\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n async loadOut(){\r\n let formData;\r\n let qResp;\r\n let qData;\r\n \r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationStage;\r\n let total=0;\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n _.forEach(qData.features,function(value,key){\r\n total+=value.attributes.active;\r\n });\r\n this.setState({\r\n loading:false,\r\n total:this.formatNumber(total),\r\n error:false,\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n \r\n Active Pre-Registrations\r\n \r\n {this.state.total}\r\n \r\n \r\n 1/15/21 to Current\r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationActiveCardV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport RegistrationActiveCardV2 from './RegistrationActiveCardV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationActiveCardV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n formatNumber(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"Loaded...\")\r\n }\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\r\nexport default RegistrationActiveCardV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport Table from 'react-bootstrap/Table';\r\nimport _ from 'lodash';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyTableV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n theHead:[]\r\n \r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n formatDate(date){\r\n let d = date;\r\n let ye = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);\r\n let mo = new Intl.DateTimeFormat('en', { month: 'short' }).format(d);\r\n let da = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);\r\n return mo+\" \"+da+\", \"+ye;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationWeekly;\r\n let thisIsTheHead=[];\r\n let thisIsTheBody=[];\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"dateWeek\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n //build head\r\n thisIsTheHead.push(Week);\r\n for (const [key,value] of Object.entries(qData.features[0].attributes)){\r\n if(key!==\"OBJECTID\" && key!==\"dateWeek\"){\r\n console.log(key);\r\n thisIsTheHead.push({key});\r\n }\r\n \r\n }\r\n for (const [key,value] of Object.entries(qData.features)){\r\n // console.log(value.attributes);\r\n let d = new Date(value.attributes.dateWeek); // The 0 there is the key, which sets the date to the epoch\r\n thisIsTheBody.push({this.formatDate(d)}{this.roundPercent(value.attributes.Asian)+\"%\"}{this.roundPercent(value.attributes.Black)+\"%\"}{this.roundPercent(value.attributes.Hispanic)+\"%\"}{this.roundPercent(value.attributes.White)+\"%\"}{this.roundPercent(value.attributes.Other)+\"%\"})\r\n }\r\n\r\n this.setState({\r\n loading:false,\r\n theHead:thisIsTheHead,\r\n theBody:thisIsTheBody,\r\n error:false,\r\n });\r\n \r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n \r\n \r\n \r\n {/* style={{backgroundColor:\"#b63a3a\",color:\"#FFFFFF\"}} */}\r\n {this.state.theHead}\r\n \r\n \r\n \r\n {this.state.theBody}\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyTableV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'line',\r\n dropShadow: {\r\n enabled: true,\r\n color: '#000',\r\n top: 18,\r\n left: 7,\r\n blur: 10,\r\n opacity: 0.2\r\n },\r\n // stacked: true,\r\n // stackType: '100%'\r\n },\r\n // plotOptions: {\r\n // bar: {\r\n // // horizontal: true,\r\n // columnWidth: '100%',\r\n // },\r\n // },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n width: 2,\r\n curve: 'smooth'\r\n // colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Vaccinations by Race/Ethnicity by Week'\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n yaxis: [],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n },\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [\r\n {\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n }\r\n ],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationWeekly;\r\n let theDate=[];\r\n let theAsianData=[];\r\n let theBlackData=[];\r\n let theHispanicData=[];\r\n let theOtherData=[];\r\n let theWhiteData=[];\r\n let maxMinChecker=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"dateWeek\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n for (const [key,value] of Object.entries(qData.features)){\r\n theDate.push(value.attributes.dateWeek);\r\n maxMinChecker.push(this.roundPercent(value.attributes.Asian));\r\n maxMinChecker.push(this.roundPercent(value.attributes.Black));\r\n maxMinChecker.push(this.roundPercent(value.attributes.Hispanic));\r\n maxMinChecker.push(this.roundPercent(value.attributes.Other));\r\n\r\n theAsianData.push(this.roundPercent(value.attributes.Asian));\r\n theBlackData.push(this.roundPercent(value.attributes.Black));\r\n theHispanicData.push(this.roundPercent(value.attributes.Hispanic));\r\n theOtherData.push(this.roundPercent(value.attributes.Other));\r\n theWhiteData.push(this.roundPercent(value.attributes.White));\r\n }\r\n\r\n // let minNormal=Math.min.apply(Math,maxMinChecker);\r\n // let maxNormal=Math.max.apply(Math,maxMinChecker);\r\n // let minWhite=Math.min.apply(Math,theWhiteData);\r\n // let maxWhite=Math.max.apply(Math,theWhiteData);\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name:'Asian',\r\n data:theAsianData\r\n },\r\n {\r\n name:'Black',\r\n data:theBlackData\r\n },\r\n {\r\n name:'Hispanic',\r\n data:theHispanicData\r\n },\r\n {\r\n name:'Other',\r\n data:theOtherData\r\n },\r\n {\r\n name:'White',\r\n data:theWhiteData\r\n },\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:theDate,\r\n tickAmount:theDate.length\r\n },\r\n yaxis: [\r\n {\r\n logarithmic:true,\r\n tickAmount:9,\r\n show:true,\r\n labels: {\r\n show:true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n },\r\n title: {\r\n text: undefined,\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n min:2,\r\n max:100\r\n }\r\n ]\r\n \r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n // dropShadow: {\r\n // enabled: true,\r\n // color: '#000',\r\n // top: 18,\r\n // left: 7,\r\n // blur: 10,\r\n // opacity: 0.3\r\n // },\r\n stacked: true,\r\n stackType: '100%'\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: true,\r\n columnWidth: '100%',\r\n },\r\n },\r\n dataLabels: {\r\n enabled: true\r\n },\r\n stroke: {\r\n width: 1,\r\n curve: 'smooth',\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Vaccinations by Race/Ethnicity by Week'\r\n },\r\n xaxis: {\r\n type: 'categories',\r\n categories: [],\r\n },\r\n yaxis: [],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n },\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [\r\n {\r\n formatter: function(value) {\r\n return value.toString();\r\n }\r\n }\r\n ],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationProvider;\r\n let theDate=[];\r\n let theSite=[];\r\n let theAsianData=[];\r\n let theBlackData=[];\r\n let theHispanicData=[];\r\n let theOtherData=[];\r\n let theWhiteData=[];\r\n let maxMinChecker=[];\r\n let theTotal=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Total DESC\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n for (const [key,value] of Object.entries(qData.features)){\r\n // console.log(value);\r\n let tempTotal=value.attributes.Asian+value.attributes.Black+value.attributes.Hispanic+value.attributes.Other_Race+value.attributes.White;\r\n theTotal.push(tempTotal);\r\n theSite.push(value.attributes.Site+\" - \"+tempTotal);\r\n // theDate.push(value.attributes.dateWeek);\r\n maxMinChecker.push(value.attributes.Asian);\r\n maxMinChecker.push(value.attributes.Black);\r\n maxMinChecker.push(value.attributes.Hispanic);\r\n maxMinChecker.push(value.attributes.Other_Race);\r\n\r\n theAsianData.push(value.attributes.Asian);\r\n theBlackData.push(value.attributes.Black);\r\n theHispanicData.push(value.attributes.Hispanic);\r\n theOtherData.push(value.attributes.Other_Race);\r\n theWhiteData.push(value.attributes.White);\r\n \r\n \r\n }\r\n\r\n let minNormal=Math.min.apply(Math,maxMinChecker);\r\n // let maxNormal=Math.max.apply(Math,maxMinChecker);\r\n // let minWhite=Math.min.apply(Math,theWhiteData);\r\n let maxWhite=Math.max.apply(Math,theWhiteData);\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name:'Asian',\r\n type: 'bar',\r\n data:theAsianData\r\n },\r\n {\r\n name:'Black',\r\n type: 'bar',\r\n data:theBlackData\r\n },\r\n {\r\n name:'Hispanic',\r\n type: 'bar',\r\n data:theHispanicData\r\n },\r\n {\r\n name:'Other',\r\n type: 'bar',\r\n data:theOtherData\r\n },\r\n {\r\n name:'White',\r\n type: 'bar',\r\n data:theWhiteData\r\n },\r\n // {\r\n // name:'Total',\r\n // type: 'line',\r\n // data: theTotal\r\n // }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:theSite,\r\n // tickAmount:theDate.length,\r\n labels: {\r\n show:true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n },\r\n },\r\n yaxis: [\r\n {\r\n // logarithmic:true,\r\n // tickAmount:5,\r\n show:true,\r\n labels: {\r\n show:true,\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: undefined,\r\n },\r\n tooltip: {\r\n enabled: true\r\n },\r\n // min:minNormal,\r\n // max:maxWhite\r\n }\r\n ]\r\n \r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationProviderChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport Table from 'react-bootstrap/Table';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderChartV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n theHead:[]\r\n \r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationProvider;\r\n let theHead=[];\r\n let theBody=[];\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Total DESC\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n theHead.push(<>SiteAsianBlackHispanicWhiteOtherTotal);\r\n\r\n for (const [key,value] of Object.entries(qData.features)){\r\n let tempTotal=value.attributes.Asian+value.attributes.Black+value.attributes.Hispanic+value.attributes.Other_Race+value.attributes.White;\r\n\r\n theBody.push({value.attributes.Site}{value.attributes.Asian}{value.attributes.Black}{value.attributes.Hispanic}{value.attributes.White}{value.attributes.Other_Race}{tempTotal});\r\n\r\n theBody.push({Math.round(((value.attributes.Asian/tempTotal)*100) * 10) / 10}%{Math.round(((value.attributes.Black/tempTotal)*100) * 10) / 10}%{Math.round(((value.attributes.Hispanic/tempTotal)*100) * 10) / 10}%{Math.round(((value.attributes.White/tempTotal)*100) * 10) / 10}%{Math.round(((value.attributes.Other_Race/tempTotal)*100) * 10) / 10}%);\r\n }\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n theHead:theHead,\r\n theBody:theBody\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n \r\n \r\n \r\n {/* style={{backgroundColor:\"#b63a3a\",color:\"#FFFFFF\"}} */}\r\n {this.state.theHead}\r\n \r\n \r\n \r\n {this.state.theBody}\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationProviderChartV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationRaceTotalChartStackedV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n stacked: true,\r\n // stackType: '100%'\r\n },\r\n colors: ['#9d1e1b','#c40c3e','#f15d37','#ff9801','#eda623'],\r\n title: {\r\n text: 'Pre-Registrations by Race/Ethnicity and Phase'\r\n },\r\n plotOptions: {\r\n bar: {\r\n // horizontal: true,\r\n columnWidth: '90%',\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n \r\n stroke: {\r\n width: 1,\r\n colors: ['#fff']\r\n },\r\n xaxis: {\r\n type: 'category',\r\n categories: [],\r\n labels: {\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n },\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n }\r\n },\r\n \r\n \r\n };\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationRaceStage;\r\n let raceName=[];\r\n let raceActive=[];\r\n let raceInactive=[];\r\n let raceTotal=[];\r\n let theChartData=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"sortRank,race,Priority_Category\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n\r\n const groupRace= _.chain(qData.features).groupBy(\"attributes.race\").map((value, key) => ({ race: key, stages: value })).value();\r\n // console.log(groupRace);\r\n _.forEach(groupRace,function(value,key){\r\n let tempTotal=0;\r\n \r\n _.forEach(value.stages,function(valueS,keyS){\r\n // need to find the specific stage array\r\n tempTotal+=valueS.attributes.total;\r\n let searchPhase = _.find(theChartData,{name:valueS.attributes.Priority_Category});\r\n if(_.isEmpty(searchPhase)!==true){\r\n //found it\r\n // console.log(searchPhase)\r\n searchPhase.data.push(valueS.attributes.total);\r\n }else{\r\n theChartData.push({\r\n name:valueS.attributes.Priority_Category,\r\n data:[valueS.attributes.total]\r\n });\r\n }\r\n });\r\n raceName.push(value.race+\" - \"+tempTotal);\r\n });\r\n\r\n // console.log(theChartData)\r\n\r\n\r\n\r\n\r\n\r\n // _.forEach(qData.features,function(value,key){\r\n // // console.log(value.attributes);\r\n // // raceName.push(value.attributes.race);\r\n // raceActive.push(value.attributes.active);\r\n // raceInactive.push(value.attributes.inactive);\r\n // raceTotal.push(value.attributes.total);\r\n // });\r\n \r\n\r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series:theChartData,\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:raceName,\r\n },\r\n yaxis: [\r\n {\r\n axisTicks: {\r\n show: true,\r\n },\r\n axisBorder: {\r\n show: true,\r\n },\r\n labels: {\r\n \r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n title: {\r\n text: \"\",\r\n },\r\n tooltip: {\r\n enabled: false\r\n }\r\n }\r\n \r\n ],\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [{\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n },\r\n title: {\r\n formatter: (seriesName) => seriesName,\r\n },\r\n }],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationRaceTotalChartStackedV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartNormalV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'line',\r\n dropShadow: {\r\n enabled: true,\r\n color: '#000',\r\n top: 18,\r\n left: 7,\r\n blur: 10,\r\n opacity: 0.2\r\n },\r\n // stacked: true,\r\n // stackType: '100%'\r\n },\r\n // plotOptions: {\r\n // bar: {\r\n // // horizontal: true,\r\n // columnWidth: '100%',\r\n // },\r\n // },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n width: 2,\r\n curve: 'smooth'\r\n // colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Vaccinations by Race/Ethnicity by Week'\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n yaxis: [],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n },\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [\r\n {\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n }\r\n ],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationWeekly;\r\n let theDate=[];\r\n let theAsianData=[];\r\n let theBlackData=[];\r\n let theHispanicData=[];\r\n let theOtherData=[];\r\n let theWhiteData=[];\r\n let maxMinChecker=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"dateWeek\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n for (const [key,value] of Object.entries(qData.features)){\r\n theDate.push(value.attributes.dateWeek);\r\n theAsianData.push(this.roundPercent(value.attributes.Asian));\r\n theBlackData.push(this.roundPercent(value.attributes.Black));\r\n theHispanicData.push(this.roundPercent(value.attributes.Hispanic));\r\n theOtherData.push(this.roundPercent(value.attributes.Other));\r\n theWhiteData.push(this.roundPercent(value.attributes.White));\r\n }\r\n\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name:'Asian',\r\n data:theAsianData\r\n },\r\n {\r\n name:'Black',\r\n data:theBlackData\r\n },\r\n {\r\n name:'Hispanic',\r\n data:theHispanicData\r\n },\r\n {\r\n name:'Other',\r\n data:theOtherData\r\n },\r\n {\r\n name:'White',\r\n data:theWhiteData\r\n },\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:theDate,\r\n tickAmount:theDate.length\r\n },\r\n yaxis: [\r\n {\r\n // logarithmic:true,\r\n // tickAmount:9,\r\n show:true,\r\n labels: {\r\n show:true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n },\r\n title: {\r\n text: undefined,\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n min:0,\r\n max:100\r\n }\r\n ]\r\n \r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartNormalV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartAreaV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'area',\r\n // dropShadow: {\r\n // enabled: true,\r\n // color: '#000',\r\n // top: 18,\r\n // left: 7,\r\n // blur: 10,\r\n // opacity: 0.2\r\n // },\r\n stacked: true,\r\n stackType: '100%'\r\n },\r\n // plotOptions: {\r\n // bar: {\r\n // // horizontal: true,\r\n // columnWidth: '100%',\r\n // },\r\n // },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n width: 1,\r\n curve: 'smooth',\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Vaccinations by Race/Ethnicity by Week'\r\n },\r\n xaxis: {\r\n type: 'datetime',\r\n categories: [],\r\n labels: {\r\n datetimeFormatter: {\r\n year: 'yyyy',\r\n month: 'MMM dd',\r\n day: 'MMM dd',\r\n }\r\n }\r\n },\r\n yaxis: [],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n },\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [\r\n {\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n }\r\n ],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationWeekly;\r\n let theDate=[];\r\n let theAsianData=[];\r\n let theBlackData=[];\r\n let theHispanicData=[];\r\n let theOtherData=[];\r\n let theWhiteData=[];\r\n let maxMinChecker=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"dateWeek\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n for (const [key,value] of Object.entries(qData.features)){\r\n theDate.push(value.attributes.dateWeek);\r\n theAsianData.push(this.roundPercent(value.attributes.Asian));\r\n theBlackData.push(this.roundPercent(value.attributes.Black));\r\n theHispanicData.push(this.roundPercent(value.attributes.Hispanic));\r\n theOtherData.push(this.roundPercent(value.attributes.Other));\r\n theWhiteData.push(this.roundPercent(value.attributes.White));\r\n }\r\n\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name:'Asian',\r\n data:theAsianData\r\n },\r\n {\r\n name:'Black',\r\n data:theBlackData\r\n },\r\n {\r\n name:'Hispanic',\r\n data:theHispanicData\r\n },\r\n {\r\n name:'Other',\r\n data:theOtherData\r\n },\r\n {\r\n name:'White',\r\n data:theWhiteData\r\n },\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:theDate,\r\n tickAmount:theDate.length\r\n },\r\n yaxis: [\r\n {\r\n // logarithmic:true,\r\n // tickAmount:9,\r\n show:true,\r\n labels: {\r\n show:true,\r\n formatter: function(value) {\r\n return value.toString()+\"%\";\r\n }\r\n },\r\n title: {\r\n text: undefined,\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n min:0,\r\n max:100\r\n }\r\n ]\r\n \r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartAreaV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Container from 'react-bootstrap/Container';\r\nimport Spinner from 'react-bootstrap/Spinner';\r\nimport Alert from 'react-bootstrap/Alert';\r\nimport _ from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport config from '../../config';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderChartStackedV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n type:props.type,\r\n height:props.height,\r\n maxHeight:props.maxHeight,\r\n loading:true,\r\n series: [],\r\n options: {\r\n chart: {\r\n height: '100%',\r\n type: 'bar',\r\n // dropShadow: {\r\n // enabled: true,\r\n // color: '#000',\r\n // top: 18,\r\n // left: 7,\r\n // blur: 10,\r\n // opacity: 0.3\r\n // },\r\n stacked: true,\r\n // stackType: '100%'\r\n },\r\n plotOptions: {\r\n bar: {\r\n horizontal: false,\r\n columnWidth: '90%',\r\n },\r\n },\r\n dataLabels: {\r\n enabled: false\r\n },\r\n stroke: {\r\n width: 1,\r\n curve: 'smooth',\r\n colors: ['#fff']\r\n },\r\n title: {\r\n text: 'Vaccinations by Race/Ethnicity by Week'\r\n },\r\n xaxis: {\r\n type: 'categories',\r\n categories: [],\r\n },\r\n yaxis: [],\r\n legend: {\r\n horizontalAlign: 'left',\r\n offsetX: 0\r\n },\r\n tooltip: {\r\n enabled: true,\r\n enabledOnSeries: true,\r\n shared: true,\r\n followCursor: true,\r\n intersect: false,\r\n inverseOrder: false,\r\n fillSeriesColor: false,\r\n style: {\r\n fontSize: '11px',\r\n },\r\n onDatasetHover: {\r\n highlightDataSeries: true,\r\n },\r\n y: [\r\n {\r\n formatter: function(value) {\r\n return value.toString();\r\n }\r\n }\r\n ],\r\n marker: {\r\n show: true,\r\n },\r\n },\r\n },\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n async loadOut(){\r\n // const qValues = qs.parse(this.props.location.search);\r\n let formData;\r\n let qResp;\r\n let qData;\r\n let qWhere=\"1=1\";\r\n let url=config.apiv2.registrationProvider;\r\n let theDate=[];\r\n let theSite=[];\r\n let theAsianData=[];\r\n let theBlackData=[];\r\n let theHispanicData=[];\r\n let theOtherData=[];\r\n let theWhiteData=[];\r\n let maxMinChecker=[];\r\n let theTotal=[];\r\n\r\n\r\n formData=new FormData();\r\n formData.append(\"where\",qWhere);\r\n formData.append(\"outFields\",\"*\");\r\n formData.append(\"returnGeometry\",\"false\");\r\n formData.append(\"orderByFields\",\"Total DESC\");\r\n formData.append(\"returnDistinctValues\",\"false\");\r\n formData.append(\"f\",\"json\");\r\n\r\n try{\r\n qResp = await fetch(url+\"/query\",{method:\"post\",body:formData});\r\n qData = await qResp.json();\r\n }catch(err){\r\n console.log(err);\r\n }\r\n\r\n if(_.get(qData,\"features.length\",0)>0){\r\n for (const [key,value] of Object.entries(qData.features)){\r\n // console.log(value);\r\n let tempTotal=value.attributes.Asian+value.attributes.Black+value.attributes.Hispanic+value.attributes.Other_Race+value.attributes.White;\r\n theTotal.push(tempTotal);\r\n theSite.push(value.attributes.Site+\" - \"+tempTotal);\r\n // theDate.push(value.attributes.dateWeek);\r\n maxMinChecker.push(value.attributes.Asian);\r\n maxMinChecker.push(value.attributes.Black);\r\n maxMinChecker.push(value.attributes.Hispanic);\r\n maxMinChecker.push(value.attributes.Other_Race);\r\n\r\n theAsianData.push(value.attributes.Asian);\r\n theBlackData.push(value.attributes.Black);\r\n theHispanicData.push(value.attributes.Hispanic);\r\n theOtherData.push(value.attributes.Other_Race);\r\n theWhiteData.push(value.attributes.White);\r\n \r\n \r\n }\r\n\r\n let minNormal=Math.min.apply(Math,maxMinChecker);\r\n // let maxNormal=Math.max.apply(Math,maxMinChecker);\r\n // let minWhite=Math.min.apply(Math,theWhiteData);\r\n let maxWhite=Math.max.apply(Math,theWhiteData);\r\n \r\n this.setState({\r\n loading:false,\r\n error:false,\r\n series: [\r\n {\r\n name:'Asian',\r\n type: 'bar',\r\n data:theAsianData\r\n },\r\n {\r\n name:'Black',\r\n type: 'bar',\r\n data:theBlackData\r\n },\r\n {\r\n name:'Hispanic',\r\n type: 'bar',\r\n data:theHispanicData\r\n },\r\n {\r\n name:'Other',\r\n type: 'bar',\r\n data:theOtherData\r\n },\r\n {\r\n name:'White',\r\n type: 'bar',\r\n data:theWhiteData\r\n },\r\n // {\r\n // name:'Total',\r\n // type: 'line',\r\n // data: theTotal\r\n // }\r\n \r\n ],\r\n options: {\r\n ...this.state.options,\r\n xaxis: {\r\n ...this.state.options.xaxis,\r\n categories:theSite,\r\n // tickAmount:theDate.length,\r\n labels: {\r\n show:true,\r\n formatter: function(value, timestamp, index) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n },\r\n },\r\n yaxis: [\r\n {\r\n // logarithmic:true,\r\n // tickAmount:5,\r\n show:true,\r\n labels: {\r\n show:true,\r\n // formatter: function(value) {\r\n // return value.toString()+\"%\";\r\n // }\r\n },\r\n title: {\r\n text: undefined,\r\n },\r\n tooltip: {\r\n enabled: false\r\n },\r\n // min:minNormal,\r\n // max:maxWhite\r\n }\r\n ]\r\n \r\n }\r\n });\r\n }else{\r\n // error handle\r\n this.setState({\r\n loading:false,\r\n error:true\r\n });\r\n }\r\n }\r\n\r\n componentDidMount(){\r\n this.loadOut();\r\n }\r\n\r\n render() {\r\n if(this.state.loading===true){\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n\r\n }else if(this.state.loading===false && this.state.error===true){\r\n //show error\r\n return (\r\n \r\n \r\n \r\n );\r\n }else{\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default RegistrationProviderChartStackedV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport Nav from 'react-bootstrap/Nav';\r\n\r\nimport RegistrationTotalTableV2 from './RegistrationTotalTableV2';\r\nimport RegistrationStageTotalChartV2 from './RegistrationStageTotalChartV2';\r\nimport RegistrationActiveCardV2 from './RegistrationActiveCardV2';\r\nimport RegistrationTotalCardV2 from './RegistrationTotalCardV2';\r\nimport RegistrationActiveInactiveChartV2 from './RegistrationActiveInactiveChartV2';\r\nimport RegistrationRaceTotalChartV2 from './RegistrationRaceTotalChartV2';\r\nimport RegistrationRaceTotalTableV2 from './RegistrationRaceTotalTableV2';\r\nimport RegistrationWeeklyTableV2 from './RegistrationWeeklyTableV2';\r\nimport RegistrationWeeklyChartV2 from './RegistrationWeeklyChartV2';\r\nimport RegistrationProviderChartV2 from './RegistrationProviderChartV2';\r\nimport RegistrationProviderTableV2 from './RegistrationProviderTableV2';\r\nimport RegistrationRaceTotalChartStackedV2 from './RegistrationRaceTotalChartStackedV2';\r\nimport RegistrationWeeklyChartNormalV2 from './RegistrationWeeklyChartNormalV2';\r\nimport RegistrationWeeklyChartAreaV2 from './RegistrationWeeklyChartAreaV2';\r\nimport RegistrationProviderChartStackedV2 from './RegistrationProviderChartStackedV2';\r\n\r\nclass RegistrationDashV2 extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"Mounted\");\r\n }\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 \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 default RegistrationDashV2;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationWeeklyChartV2 from './RegistrationWeeklyChartV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport RegistrationWeeklyTableV2 from './RegistrationWeeklyTableV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyTableV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n roundPercent(value){\r\n let thisGuy=value*100;\r\n thisGuy=Math.round(thisGuy * 10) / 10;\r\n return thisGuy;\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 }\r\n}\r\n\r\nexport default RegistrationWeeklyTableV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationProviderChartV2 from './RegistrationProviderChartV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderChartV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationProviderChartV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationProviderTableV2 from './RegistrationProviderTableV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderTableV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationProviderTableV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationRaceTotalChartStackedV2 from './RegistrationRaceTotalChartStackedV2';\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationRaceTotalChartStackedV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n\r\n componentDidMount(){\r\n console.log(\"load\")\r\n }\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 \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationRaceTotalChartStackedV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationWeeklyChartNormalV2 from './RegistrationWeeklyChartNormalV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartNormalV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartNormalV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationWeeklyChartAreaV2 from './RegistrationWeeklyChartAreaV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationWeeklyChartAreaV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationWeeklyChartAreaV2Show;","import React, { Component } from 'react';\r\nimport Row from 'react-bootstrap/Row';\r\nimport Col from 'react-bootstrap/Col';\r\nimport Card from 'react-bootstrap/Card';\r\nimport RegistrationProviderChartStackedV2 from './RegistrationProviderChartStackedV2';\r\n\r\n// TODO\r\n// Error handle\r\n// loading spinner\r\n// possibly remove tools\r\n\r\nclass RegistrationProviderChartStackedV2Show extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading:true,\r\n };\r\n }\r\n \r\n componentDidMount(){\r\n console.log(\"Loaded\");\r\n }\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 \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RegistrationProviderChartStackedV2Show;","import React from 'react';\r\nimport { HashRouter, Route, Switch } from 'react-router-dom';\r\nimport CasesChartV2 from './components/v2/CasesChartV2';\r\nimport CasesChartRecoveryV2 from './components/v2/CasesChartRecoveryV2';\r\nimport DeathChartRecoveryV2 from './components/v2/DeathChartRecoveryV2';\r\nimport TestingChartV2 from './components/v2/TestingChartV2';\r\nimport HospitalChartV2 from './components/v2/HospitalChartV2';\r\nimport TestingPopChartV2 from './components/v2/TestingPopChartV2';\r\nimport VaccineChartV2 from './components/v2/VaccineChartV2';\r\nimport VaccineCumulativeChartV2 from './components/v2/VaccineCumulativeChartV2';\r\nimport RegistrationActiveInactiveChartV2Show from './components/v2/RegistrationActiveInactiveChartV2Show';\r\nimport RegistrationRaceTotalChartV2Show from './components/v2/RegistrationRaceTotalChartV2Show';\r\nimport RegistrationStageTotalChartV2Show from './components/v2/RegistrationStageTotalChartV2Show';\r\nimport RegistrationTotalCardV2Show from './components/v2/RegistrationTotalCardV2Show';\r\nimport RegistrationTotalTableV2Show from './components/v2/RegistrationTotalTableV2Show';\r\nimport RegistrationRaceTotalTableShowV2 from './components/v2/RegistrationRaceTotalTableShowV2';\r\nimport RegistrationActiveCardV2Show from './components/v2/RegistrationActiveCardV2Show';\r\nimport RegistrationDashV2 from './components/v2/RegistrationDashV2';\r\nimport RegistrationWeeklyChartV2Show from './components/v2/RegistrationWeeklyChartV2Show';\r\nimport RegistrationWeeklyTableV2Show from './components/v2/RegistrationWeeklyTableV2Show';\r\nimport RegistrationProviderChartV2Show from './components/v2/RegistrationProviderChartV2Show';\r\nimport RegistrationProviderTableV2Show from './components/v2/RegistrationProviderTableV2Show';\r\nimport RegistrationRaceTotalChartStackedV2Show from './components/v2/RegistrationRaceTotalChartStackedV2Show';\r\nimport RegistrationWeeklyChartNormalV2Show from './components/v2/RegistrationWeeklyChartNormalV2Show';\r\nimport RegistrationWeeklyChartAreaV2Show from './components/v2/RegistrationWeeklyChartAreaV2Show';\r\nimport RegistrationProviderChartStackedV2Show from './components/v2/RegistrationProviderChartStackedV2Show';\r\nimport Container from 'react-bootstrap/Container';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport './resources/css/page.css';\r\n\r\n// add error page while im doing this stuff\r\nconst App = () => {\r\n return (\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 default App;\r\n\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\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 subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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 function register(config) {\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.href);\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/facebook/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. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\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 // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\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, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.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, config);\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\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}