{"version":3,"sources":["webpack:///./config/modern-polyfills.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./app/scripts/packs/main.js","webpack:///./app/scripts/packs/main/carto_arrow.js"],"names":["require","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","today","iliRolled","icuRolled","dataMap","todaysDate","Date","setHours","parseDate","timeParse","parseDate2","formatDate","timeFormat","fmtComma","format","formatRegDate","margin","top","right","bottom","left","variableMap","slopeVariables","xDomainMap","yDomainMap","barLineMap","yLabelMap","thresholdMap","flat","quartileMap","context","ratingSub1","ratingSub4","ratingSub2","ratingSub3","setupNote","stateAbbreviation","stateName","reopenDoc","doc","html","noteExists","stateData","absolute","combine","entity","combiningTestsNote","specimen","reportingSpecimensNote","reopeningDoc1","reopeningDoc2","docNote","note","$","hide","select","style","setupGrade","variable","stateRow","filteredData","mostRecentRow","mostRecentVal","goodOrBad","el","state","jEl","w","width","h","height","gradeWord","includes","getGoodOrBad","iliDataRow","state_name","scaleTime","domain","range","scaleLinear","trend","append","attr","symbol","getColorClass","setupArrow","svg","x","y","slopeData","reopen","xSeries","d","date","ySeries","leastSquaresCoeff","reduceSumFunc","prev","cur","xBar","reduce","length","yBar","ssXX","Math","pow","ssYY","ssXY","i","slope","intercept","rSquare","leastSquares","x1","y1","x2","y2","invert","calculateIliLinearRegression","setupChart","max","reopenedStatus","rectHeight","window","startingPoint","lineY2","rectWidth","mostRecentValText","round","text","setupBarGrade","line","d3line","defined","d3area","y0","selectAll","data","enter","endpointCoord","roundTwoSigFigs","calcRectW","dx","setupReopen","metricCorrectCount","num","string","daysDiff","or_end","getDaysDiff","noStayAtHome","or_start","stayAtHome","quartile","toUpperCase","slice","rating","val","diff","abs","date1","date2","diffTime","ceil","toPrecision","dataset","pop","firstDate","moment","endDate","dateArr","dates","timer","m","opts","isMobile","scrollOffset","sliderLabelOffset","sliderTextTransform","slideCircleSize","slidestartDate","slideendDate","moving","currentValue","targetValue","clamp","playButton","slider","this","parentNode","appendChild","cloneNode","call","drag","on","interrupt","event","update","clearInterval","ticksArr","insert","exPath","handle","label","duration","intervalDate","transition","delay","ease","easeLinear","step","button","setInterval","ap","show","animate","scrollTop","offset","drawGrid","interval","rotation","exec","min","floor","random","drawCartoArrows","timelapseData","icu","forEach","row","pctICUBedsOccupied","NaN","ili","WEEK","YEAR","sort","a","b","descending","nest","key","object","REGION","ctp","index","values","index2","ctpRolled_2","example","test","positive","variables","value","defG","secondY","firstY","axisBottom","tickValues","tickSize","tickFormat","tickPadding","yaxis","axisLeft","ticks","tickSizeInner","setupDefs","entries","filter","isNaN","addClass","setupTable","document","getElementById","onchange","abbreviation","position","propublica","views","socialSection","View","extend","cssClass","tag","bindings","click","socialRef","preventDefault","currentTarget","hasClass","fb","tw","getTitle","getImg","getText","getDesc","getLink","getHashtag","dataLayer","socialObj","link","name","classes","network","action","FB","ui","method","picture","caption","description","response","undefined","push","socialShare","baseUrl","encodeURIComponent","open","tweetTakeaways","socialTweet","socialLI","socialMethods"],"mappings":"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","file":"main.c7fa3f3b20.mjs","sourcesContent":["'use strict';\n\n// We depend on intersection-observer enough that it should just be assumed as necessary\nrequire('intersection-observer');\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import {drawCartoArrows} from './main/carto_arrow.js';\n// import {drawTimelapseArrows} from './main/timelapse_arrows.js';\n\n// import * as d3 from 'd3';\nimport { descending } from 'd3-array';\nimport { nest } from 'd3-collection';\nimport { timeParse, timeFormat } from 'd3-time-format';\nimport { format } from 'd3-format';\nimport { select } from 'd3-selection';\nimport { scaleTime, scaleLinear } from 'd3-scale';\nimport { line as d3line } from 'd3-shape';\nimport { area as d3area } from 'd3-shape';\nimport { axisBottom, axisLeft } from 'd3-axis';\n\nimport context from '../../data/text.json';\nimport ili from '../../process/processed/ILINet.json';\nimport icu from '../../process/processed/latestICUBeds.json';\nimport ctp from '../../process/processed/testing_data.json';\nimport timelapseData from '../../process/processed/timelapse.json';\n\n// console.log(ctp)\n// --------------- ASH LAND\n\nvar circleRadius = 3;\nvar failColor = \"#ec4c4c\";\nvar passColor = \"#20c17c\";\nvar darkGrayColor = \"#999\";\n\nvar todaysDate = getTodaysDate()\nvar parseDate = timeParse(\"%Y%m%d\");\nvar parseDate2 = timeParse(\"%m/%d/%Y\");\nvar formatDate = timeFormat(\"%b %-d\");\nvar fmtComma = format(\",\")\nvar formatLongMonthDate = timeFormat(\"%B %-d\");\nvar formatRegDate = timeFormat(\"%B %-d, %Y\")\nvar margin = {top: 10, right: 0, bottom: 0, left: 3};\n\nvar iliRolled;\nvar icuRolled;\n\nvar dataMap;\nvar variableMap = {\n\t\"icu\": \"pctICUBedsOccupied\",\n\t\"inpatient\": \"pctInpatientBedsOccupied\",\n\t\"ili\": \"%UNWEIGHTED ILI\",\n\t\"test\": \"mov_total\",\n\t\"positive\": \"mov_perc\",\n\t\"absolute\": \"mov_100k\"\n}\n\nvar slopeVariables = [\n\"mov_100k\",\n\"mov_perc\",\n\"mov_total\"]\n\nvar xDomainMap = {\n\t\"icu\": [],\n\t\"inpatient\": [],\n\t\"ili\": [],\n\t\"test\": [],\n\t\"positive\": [],\n\t\"absolute\": []\n}\n\nvar yDomainMap = {\n\t\"icu\": [0, 100],\n\t\"inpatient\": [0, 100],\n\t\"ili\": [0, 5],\n\t\"test\": [0, 300],\n\t\"positive\": [0, 30],\n\t\"absolute\": [0, 100]\n}\n\nvar barLineMap = {\n\t\"test\": [0, 300],\n\t\"icu\": [0, 100]\n}\n\nvar yLabelMap = {\n\t\"icu\": yDomainMap[\"icu\"][1] + \"%\",\n\t\"inpatient\": yDomainMap[\"inpatient\"][1] + \"%\",\n\t\"ili\": yDomainMap[\"ili\"][1] + \"%\",\n\t\"test\": yDomainMap[\"test\"][1] + \" tests\",\n\t\"positive\": yDomainMap[\"positive\"][1] + \"%\",\n\t\"absolute\": yDomainMap[\"absolute\"][1] + \" cases per 100k\"\n}\n\nvar thresholdMap = {\n\t\"icu\": 30,\n\t\"test\": 100\n}\n\nvar flat = {\n\t\"positive\": 0.5,\n\t\"absolute\": 0.25,\n\t\"ili\": 0.25\n}\n\nvar quartileMap = {\n\t\"low\": `${context.ratingSub1} ${context.ratingSub4}`,\n\t\"medium\": `${context.ratingSub2}  ${context.ratingSub4}`,\n\t\"high\": `${context.ratingSub3}  ${context.ratingSub4}`\n}\n\n\n// console.log(ctp)\ndrawCartoArrows(timelapseData)\nsetupData()\nsetupTable()\nsetupSelectize()\n$(\"#updateDate\").text(`Updated ${formatRegDate(xDomainMap[\"test\"][1])}`)\n// $(\"#updateDate\").text(`Updated ${formatRegDate(new Date())}`)\n\nfunction setupData() {\n\n\ticu.forEach(function(d, i){\n\t\tvar row = icu[i]\n\t\t// turn date field into an actual Date object\n\t\trow.date = new Date(row.date + \" 0:00:00\")\n\t\tif (row.pctICUBedsOccupied == 0) {\n\t\t\trow.pctICUBedsOccupied = NaN\n\t\t} else {\n\t\t\trow.pctICUBedsOccupied = 100 - +row.pctICUBedsOccupied\n\t\t\trow.pctICUBedsOccupied = Math.max(row.pctICUBedsOccupied, 0)\n\t\t}\n\t})\n\n\tili.forEach(function(d, i) {\n\t\tvar row = ili[i]\n\t\trow.WEEK = +row.WEEK\n\t\trow[\"%UNWEIGHTED ILI\"] = +row[\"%UNWEIGHTED ILI\"]\n\t\trow[\"date\"] = getDateOfWeek(row.WEEK, +row.YEAR)\n\t})\n\n\ticu.sort((a, b) => descending(a.date, b.date))\n\n\ticuRolled = nest()\n\t.key(d => d.state)\n\t.object(icu);\n\n\tiliRolled = nest()\n\t.key(d => d.REGION)\n\t.object(ili);\n\n\tdataMap = {\n\t\t\"icu\": icuRolled,\n\t\t\"ili\": iliRolled\n\t}\n\n}\n\n\n\n\n//------------ SETUP TABLE\n\n\nfunction setupTable() {\n\tctp.forEach(function(stateData, index) {\n\t\tstateData.or_end = parseDate2(stateData.or_end)\n\t\tstateData.or_start = parseDate2(stateData.or_start)\n\n\t\tfor (let i = 0; i < slopeVariables.length - 1; i++) {\n\t\t\tlet variable = slopeVariables[i]\n\t\t\tstateData[variable].trend[0] = parseDate(stateData[variable].trend[0])\n\t\t\tstateData[variable].trend[2] = parseDate(stateData[variable].trend[2])\n\t\t}\n\n\t\t(stateData.values).forEach(function(d, index2) {\n\t\t\td.date = parseDate(d.date)\n\t\t})\n\t})\n\tvar ctpRolled_2 = nest()\n\t.key(d => { return d.state; })\n\t.object(ctp)\n\n\tlet example = ctpRolled_2[\"CA\"][0].values\n\txDomainMap.test = [example[0].date, example[example.length - 1].date]\n\txDomainMap.positive = xDomainMap.test\n\txDomainMap.absolute = xDomainMap.test\n\n\tdataMap.test = ctpRolled_2;\n\tdataMap.positive = ctpRolled_2;\n\tdataMap.absolute = ctpRolled_2;\n\n\tlet variables = [\"absolute\", \"positive\", \"test\", \"icu\", \"ili\"]\n\n\n\tvariables.forEach(function(variable, index) {\n\t\tif (variable == \"ili\") {\n\t\t\tlet filteredData = dataMap[variable][\"California\"]\n\t\t\txDomainMap.ili = [filteredData[0].date, filteredData[filteredData.length - 1].date]\n\t\t}\n\t\tsetupDefs(variable)\n\t})\n\n\n\n\n\tfor (let [key, value] of Object.entries(ctpRolled_2)) {\n\t\tvar stateRow = ctpRolled_2[key][0]\n\t\tvar metricCorrectCount = 0\n\n\t\tvariables.forEach(function(variable, index) {\n\t\t\tvar data = dataMap[variable]\n\t\t\tvar filteredData = ([\"test\", \"positive\", \"absolute\"].includes(variable)) ? data[stateRow.state][0].values : data[stateRow.state_name];\n\n\t\t\tif (variable == \"ili\") {\n\t\t\t\tfilteredData = data[stateRow.state_name].filter(d => {\n\t\t\t\t\treturn d.YEAR == \"2020\" && d.WEEK > 15\n\t\t\t\t})\n\t\t\t\txDomainMap.ili = [filteredData[0].date, filteredData[filteredData.length - 1].date]\n\t\t\t}\n\n\t\t\tlet mostRecentRow = filteredData[filteredData.length - 1]\n\n\t\t\tlet mostRecentVal = mostRecentRow[variableMap[variable]]\n\n\t\t\tif (isNaN(mostRecentVal) || ([\"positive\"].includes(variable) && stateRow.state_name == \"Puerto Rico\")) {\n\t\t\t\t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">No Data Available</div>`)\n\t\t\t\t$(`#${variable}-${stateRow.state}`).addClass(\"noDataChart\")\n\t\t\t} else if ([\"positive\", \"test\"].includes(variable) && [\"MS\",\"IA\"].includes(stateRow.state)) {\n\t\t\t\t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">Data Unreliable For This Time Period</div>`)\n\t\t\t} else if ([\"positive\",\"absolute\"].includes(variable) && [].includes(stateRow.state)) {\n\t\t\t\t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">Data Unreliable For This Time Period</div>`)\n\t\t\t} else if ([\"ili\"].includes(variable) && [\"IA\"].includes(stateRow.state)) {\n\t\t\t\t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">Data Unreliable For This Time Period</div>`)\n\t\t\t} else if ([\"positive\"].includes(variable) && [\"WI\",\"WY\"].includes(stateRow.state)) {\n\t\t\t\t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">Data Unreliable For This Time Period</div>`)\n\t\t\t// } else if ([\"icu\"].includes(variable)) {\n\t\t\t// \t$(`#${variable}-${stateRow.state}`).html(`<div class=\"noData\">Data Is No Longer Being Updated By HHS</div>`)\n\t\t\t} else {\n\t\t\t\tsetupChart(variable, stateRow, filteredData, mostRecentRow, mostRecentVal)\n\t\t\t\tmetricCorrectCount += setupGrade(variable, stateRow, filteredData, mostRecentRow, mostRecentVal)\t\n\t\t\t}\n\t\t})\n\n\t\tsetupReopen(stateRow, metricCorrectCount)\n\t\tsetupNote(stateRow.state, stateRow.state_name)\n\t}\n}\n\nfunction setupDefs(variable) {\n\tvar el = `#${variable}-CA`;\n\tvar jEl = $(el);\n\tvar w = jEl.width() - margin.left - margin.right;\t\n\tw = Math.max(120, w)\n\tvar h = jEl.height() - margin.top - margin.bottom;\n\n\t[\"open\", \"closed\"].forEach(function(reopenedStatus, index){\n\t\treopenedStatus = \"open\"\n\t\tlet defG = select(`#${variable}-${reopenedStatus}`)\n\t\t\n\n\t\tif ([\"test\", \"icu\"].includes(variable)) {\n\t\t\tvar x = scaleLinear()\n\t\t\t.domain(yDomainMap[variable])\n\t\t\t.range([0, w]);\n\n\t\t\tlet rectHeight = $(window).width() < 1000 ? 80 : 90;\n\t\t\tvar startingPoint = [0, 0]\n\t\t\tlet secondY = rectHeight + 12;\n\t\t\tlet firstY = secondY + 11;\n\t\t\tlet lineY = 0\n\t\t\tlet lineY2 = rectHeight\n\n\t\t\tdefG.append(\"text\")\n\t\t\t.attr(\"class\", \"labelText\")\n\t\t\t.attr(\"x\", x(0))\n\t\t\t.attr(\"y\", startingPoint[1])\n\t\t\t.attr(\"dy\", secondY)\n\t\t\t.attr(\"text-anchor\", \"start\")\n\t\t\t.text(barLineMap[variable][0])\n\n\t\t\tdefG.append(\"text\")\n\t\t\t.attr(\"class\", \"labelText\")\n\t\t\t.attr(\"x\", w)\n\t\t\t.attr(\"y\", startingPoint[1])\n\t\t\t.attr(\"dy\", secondY)\n\t\t\t.attr(\"text-anchor\", \"end\")\n\t\t\t.text(barLineMap[variable][1])\n\n\t\t\tdefG.append(\"text\")\n\t\t\t.attr(\"class\", \"labelText\")\n\t\t\t.attr(\"x\", x(thresholdMap[variable]))\n\t\t\t.attr(\"y\", startingPoint[1])\n\t\t\t.attr(\"dy\", secondY)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.text(\"Goal:\")\n\n\t\t\tdefG.append(\"text\")\n\t\t\t.attr(\"class\", \"labelText\")\n\t\t\t.attr(\"x\", x(thresholdMap[variable]))\n\t\t\t.attr(\"y\", startingPoint[1])\n\t\t\t.attr(\"dy\", firstY)\n\t\t\t.attr(\"text-anchor\", \"middle\")\n\t\t\t.text(`${thresholdMap[variable]}${variable == \"icu\" ? \"%\" : \" tests\"}`)\n\n\t\t\tdefG.append(\"line\")\n\t\t\t.attr(\"class\", \"thresholdLine\")\n\t\t\t.attr(\"x1\", x(thresholdMap[variable]))\n\t\t\t.attr(\"x2\", x(thresholdMap[variable]))\n\t\t\t.attr(\"y1\", startingPoint[1] + lineY)\n\t\t\t.attr(\"y2\", startingPoint[1] + lineY2)\n\t\t\t.attr(\"stroke\", reopenedStatus == \"open\" ? \"#efefef\" : \"#222\")\n\n\n\t\t} else {\n\t\t\t// Set the ranges\n\t\t\tvar x = scaleTime()\n\t\t\t.domain(xDomainMap[variable])\n\t\t\t.range([0, w]);\n\n\t\t\tvar y = scaleLinear()\n\t\t\t.domain(yDomainMap[variable])\n\t\t\t.range([$(window).width() < 1000 ? h + margin.top : h, 0]);\n\n\t\t\tlet tickSize = 0;\n\t\t\t// Set up the x axis\n\t\t\tvar xaxis = defG.append(\"g\")\n\t\t\t\t.attr(\"transform\", \"translate(0,\" + h + \")\")\n\t\t\t\t.attr(\"class\", \"x axis xaxis\")\n\t\t\t\t.call(axisBottom(x)\n\t\t\t\t\t.tickValues(xDomainMap[variable])\n\t\t\t\t\t.tickSize(tickSize, tickSize)\n\t\t\t\t\t.tickFormat(formatDate)\n\t\t\t\t\t.tickPadding(5));\n\n\t\t\t// apply specific ids so as to style the x ticks individually\n\t\t\txaxis.selectAll(\"text\")\n\t\t\t\t.attr(\"class\", function(d,i) {return \"xaxis\" + i})\n\t\t\t\t.attr(\"fill\", reopenedStatus == \"open\" ? \"#777\" : \"#aaa\")\n\t\t\t\t.attr(\"font-family\", \"graphik\")\n\n\t\t\t// Add the Y Axis\n\t\t\tvar yaxis = defG.append(\"g\")\n\t\t\t.attr(\"class\", \"y axis yaxis\")\n\t\t\t.call(axisLeft(y)\n\t\t\t\t.tickValues(yDomainMap[variable])\n\t\t\t\t.ticks(1)\n\t\t\t\t.tickSizeInner(0)\n\t\t\t\t.tickSize(-w, tickSize));\n\t\t\t// apply specific ids so as to style the x ticks individually\n\t\t\tyaxis.selectAll(\".tick text\").attr(\"class\", function(d,i) {return \"tick-text\" + i});\n\t\t\tyaxis.selectAll(\".tick line\").attr(\"class\", function(d,i) {return \"tick-line\" + i});\n\n\t\t\tyaxis.selectAll(\".tick-line0\")\n\t\t\t\t.attr(\"stroke-width\", 0)\n\t\t\t\t.attr(\"display\", \"none\")\n\n\t\t\tyaxis.selectAll(\".tick-text1\").text(\"\")\n\t\t\tyaxis.selectAll(\".tick-text1\").text(yLabelMap[variable])\n\t\t\t.attr(\"dx\", 5)\n\t\t\t.attr(\"dy\", 10)\n\t\t\t.attr(\"fill\", reopenedStatus == \"open\" ? \"#777\" : \"#aaa\")\n\t\t\t.attr(\"font-family\", \"graphik\")\n\t\t}\n\t})\n}\n\nfunction setupNote(stateAbbreviation, stateName){\n\tlet reopenDoc = dataMap[\"test\"][stateAbbreviation][0].doc\n\tlet html = `Note: `\n\tlet noteExists = false;\n\tlet stateData = dataMap.absolute[stateAbbreviation][0]\n\n\tif (stateData.combine) {\n\t\tlet entity = stateName\n\t\tif (noteExists) {\n\t\t\tentity = \"The state\"\n\t\t}\n\t\thtml += `${entity} ${context.combiningTestsNote} `\n\t\tnoteExists = true;\n\t}\n\n\tif (stateData.specimen) {\n\t\tlet entity = stateName\n\t\tif (noteExists) {\n\t\t\tentity = \"The state\"\n\t\t}\n\t\thtml += `${entity} ${context.reportingSpecimensNote} `\n\t\tnoteExists = true;\n\t}\n\n\tif (reopenDoc != null) {\n\t\tlet entity = stateName\n\t\tif (noteExists) {\n\t\t\tentity = \"The state\"\n\t\t}\n\t\thtml += `${entity} ${context.reopeningDoc1} <a href=\"${reopenDoc}\" target=\"_blank\">${context.reopeningDoc2}</a> `\n\t\tnoteExists = true;\n\t}\n\n\tlet docNote = dataMap[\"test\"][stateAbbreviation][0].note\n\tif (docNote != \"\") {\n\t\tif (noteExists) {\n\t\t\thtml += \" \"\n\t\t}\n\t\thtml += docNote\n\t\tnoteExists = true;\t\n\t}\n\t\n\t// hide the note if there is nothing extra to share\n\tif (!noteExists) {\n\t\t$(`#state-note-${stateAbbreviation}`).hide()\n\t\tselect(`#state-note-${stateAbbreviation}`).style(\"display\", \"none\")\n\t}\n\n\t$(`#state-note-${stateAbbreviation}`).html(html)\n}\n\nfunction setupGrade(variable, stateRow, filteredData, mostRecentRow, mostRecentVal) {\n\tvar el = `#${variable}-grade-${stateRow.state}`;\n\tvar jEl = $(el);\n\tvar w = jEl.width() - margin.left - margin.right;\t\n\tvar h = jEl.height() - margin.top - margin.bottom;\n\n\tlet goodOrBad;\n\tlet gradeWord = \"steady\"\n\n\tif ([\"test\", \"icu\"].includes(variable)) {\n\t\tgoodOrBad = getGoodOrBad(variable, mostRecentVal)\n\t\tgradeWord = goodOrBad == \"good\" ? \"meets goal\" : \"does not meet goal\"\n\t} else if (variable == \"ili\") {\n\t\tlet iliDataRow = dataMap[variable][stateRow.state_name][0]\n\n\t\tvar x = scaleTime()\n\t\t.domain(xDomainMap[variable])\n\t\t.range([0, w]);\n\n\t\tvar y = scaleLinear()\n\t\t.domain(yDomainMap[variable])\n\t\t.range([h, 0]);\n\n\t\tlet val = iliDataRow.trend[3] - iliDataRow.trend[1]\n\t\tgoodOrBad = getGoodOrBad(variable, val)\n\t\tif (goodOrBad == \"flat\") {\n\t\t\tgradeWord = \"steady\"\n\t\t} else {\n\t\t\tgradeWord = goodOrBad == \"good\" ? \"decreasing\" : \"increasing\"\t\n\t\t}\n\t} else {\n\t\tvar val = stateRow[variableMap[variable]].trend[3] - stateRow[variableMap[variable]].trend[1]\n\t\tgoodOrBad = getGoodOrBad(variable, val)\n\t\tif (goodOrBad == \"flat\") {\n\t\t\tgradeWord = \"steady\"\n\t\t} else {\n\t\t\tgradeWord = goodOrBad == \"good\" ? \"decreasing\" : \"increasing\"\t\n\t\t}\n\t}\n\n\tvar svg = select(el)\n\t.append(\"svg\")\n\t.append(\"g\")\n\t.attr(\"transform\",\"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\tlet symbol = `<div class=\"flatColorSvg colorSvg\"><svg class=\"flatColor\">\n\t\t<use xlink:href=\"#flatMark\"/>\n\t\t</svg></div>`\n\tif (goodOrBad == \"good\") {\n\t\tsymbol = `<div class=\"passColorSvg colorSvg\"><svg class=\"passColor\">\n\t\t\t<use xlink:href=\"#checkMark\"/>\n\t\t\t</svg></div>`\n\t} else if (goodOrBad == \"bad\") {\n\t\tsymbol = `<div class=\"failColorSvg colorSvg\"><svg class=\"failColor\">\n\t\t\t<use xlink:href=\"#crossMark\"/>\n\t\t\t</svg></div>`\n\t}\n\t\n\t// slope chart\n\tlet html = \"\"\n\thtml += `<div class=\"grade-word\">${gradeWord}</div>`\n\thtml += symbol\n\tselect(el)\n\t.attr(\"class\", `state-grade ${getColorClass(variable, mostRecentVal)}`)\n\n\tselect(el).html(html)\n\n\treturn (goodOrBad == \"good\") ? 1 : 0;\n}\n\nfunction setupBarGrade(svg, variable, mostRecentVal, w, h, margin, reopenedStatus) {\n\treopenedStatus = \"open\"\n\t// Set the ranges\n\tvar x = scaleLinear()\n\t.domain(yDomainMap[variable])\n\t.range([0, w]);\n\n\tsvg.attr(\"overflow\", \"visible\")\n\n\tlet rectHeight = $(window).width() < 1000 ? 80 : 90;\n\tvar startingPoint = [0, 0]\n\tlet secondY = rectHeight + 12;\n\tlet firstY = secondY + 11;\n\tlet lineY = 0\n\tlet lineY2 = rectHeight\n\n\tlet rectWidth = x(mostRecentVal)\n\tlet mostRecentValText = Math.round(mostRecentVal)\n\tif (mostRecentVal > barLineMap[variable][1]) {\n\t\trectWidth = x(barLineMap[variable][1])\n\t\tmostRecentVal = barLineMap[variable][1]\n\t\tmostRecentValText = mostRecentVal + \"+\"\n\t}\n\n\tsvg.append(\"rect\")\n\t.attr(\"class\", \"barRect\")\n\t.attr(\"x\", 0)\n\t.attr(\"y\", startingPoint[1])\n\t.attr(\"width\", function(d) {\n\t\treturn rectWidth > 0 ? rectWidth : 0\n\t})\n\t.attr(\"height\", rectHeight)\n\n\tsvg.append(\"use\")\n\t\t.attr(\"xlink:href\", `#${variable}-${reopenedStatus}`)\n\n\n\n\n\n\n\n\tlet max = yDomainMap[variable][1]\n\tlet threshold = (variable == \"test\") ? 2 : 3.3;\n\tif ((mostRecentVal > max * 4/ 5)) {\n\t\t\t// inside the rect\n\t\t\tsvg.append(\"text\")\n\t\t\t.attr(\"class\", \"endpointTextInside endpointText\")\n\t\t\t.attr(\"x\", x(mostRecentVal))\n\t\t\t.attr(\"y\", startingPoint[1] - 1)\n\t\t\t.attr(\"dx\", -6)\n\t\t\t.attr(\"dy\", (lineY + lineY2) / 2 + 6)\n\t\t\t.attr(\"text-anchor\", \"end\")\n\t\t\t.text(`${mostRecentValText}${variable == \"icu\" ? \"%\" : \"\"}`)\n\t\t} else {\n\t\t\tsvg.append(\"text\")\n\t\t\t.attr(\"class\", \"endpointTextBar endpointText\")\n\t\t\t.attr(\"fill\", \"black\")\n\t\t\t.attr(\"x\", x(mostRecentVal))\n\t\t\t.attr(\"y\", startingPoint[1] - 1)\n\t\t\t.attr(\"dx\", 4)\n\t\t\t.attr(\"dy\", (lineY + lineY2) / 2 + 6)\n\t\t\t.attr(\"text-anchor\", \"start\")\n\t\t\t.text(`${mostRecentValText}${variable == \"icu\" ? \"%\" : \"\"}`)\n\n\t\t}\n\t}\n\nfunction setupArrow(svg, stateRow, variable, filteredData, mostRecentVal, w, h, margin, x, y) {\n\tlet reopenedStatus = dataMap[\"test\"][stateRow.state][0].reopen\n\treopenedStatus = \"open\"\n\tvar slopeData;\n\tif (variable == \"ili\") {\n\t\tslopeData = calculateIliLinearRegression(filteredData, x, y)\n\t\tdataMap[\"ili\"][stateRow.state_name][0].trend = slopeData\n\t} else {\n\t\tslopeData = filteredData[variableMap[variable]].trend\n\t\tslopeData[0] = slopeData[0]\n\t\tslopeData[2] = slopeData[2]\n\t\tslopeData[1] = slopeData[1]\n\t\tslopeData[3] = slopeData[3]\n\t}\n\n\tsvg.append(\"line\")\n\t.attr(\"class\", \"trendLine\")\n\t.attr(\"x1\", x(slopeData[0]))\n\t.attr(\"x2\", x(slopeData[2]))\n\t.attr(\"y1\", y(slopeData[1]))\n\t.attr(\"y2\", y(slopeData[3]))\n\t.attr(\"marker-end\", function(d) {\n\t\treturn `url(#arrow-${reopenedStatus})`\n\t})\n\t.attr(\"marker-start\", function(d) {\n\t\treturn `url(#circle-${reopenedStatus})`\n\t})\n}\n\nfunction setupChart(variable, stateRow, filteredData, mostRecentRow, mostRecentVal) {\n\tvar el = `#${variable}-${stateRow.state}`;\n\n\tvar data = dataMap[variable]\n\n\tvar jEl = $(el);\n\tvar w = jEl.width() - margin.left - margin.right;\t\n\tw = Math.max(120, w)\n\tvar h = jEl.height() - margin.top - margin.bottom;\n\n\tvar svg = select(el)\n\t.append(\"svg\")\n\t.append(\"g\")\n\t.attr(\"transform\",\"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n\tlet reopenedStatus = dataMap[\"test\"][stateRow.state][0].reopen\n\treopenedStatus = \"open\"\n\n\tif ([\"test\", \"icu\"].includes(variable)) {\n\t\t// bar chart \n\t\tsetupBarGrade(svg, variable, mostRecentVal, w, h, margin, reopenedStatus)\n\t} else {\n\n\t\t// Set the ranges\n\t\tvar x = scaleTime()\n\t\t.domain(xDomainMap[variable])\n\t\t.range([0, w]);\n\n\t\tvar y = scaleLinear()\n\t\t.domain(yDomainMap[variable])\n\t\t.range([h, 0]);\n\n\t\tsvg.append(\"use\")\n\t\t\t.attr(\"xlink:href\", `#${variable}-${reopenedStatus}`)\n\n\t\t// Define the line\n\t\tvar line = d3line()\n\t\t.defined(d => {\n\t\t\treturn d[variableMap[variable]] != \"\"\n\t\t})\n\t\t.x(d => x(d.date))\n\t\t.y(d => y(d[variableMap[variable]]))\n\n\t\tvar area = d3area()\n\t\t.defined(d => {\n\t\t\treturn d[variableMap[variable]] != \"\"\n\t\t})\n\t\t.y0(y(0))\n\t\t.x(d => x(d.date))\n\t\t.y1(d => y(d[variableMap[variable]]))\n\n\t\tsvg.selectAll(\".dataLine\")\n\t\t.data([filteredData])\n\t\t.enter()\n\t\t.append(\"path\")\n\t\t.attr(\"stroke\", darkGrayColor)\n\t\t.attr(\"class\", \"dataLine\")\n\t\t.attr(\"d\", d => line(d))\n\n\t\t// ADD SLOPE ARROW\n\n\t\tlet arrowData = (variable == \"ili\") ? filteredData : stateRow;\n\t\tsetupArrow(svg, stateRow, variable, arrowData, mostRecentVal, w, h, margin, x, y)\n\n\t\t// ADD ENDPOINT LABEL\n\n\t\tlet endpointCoord = [x(mostRecentRow[\"date\"]), y(mostRecentVal)]\n\n\t\tlet rectW = 2;\n\t\tlet rectH = 16;\n\t\tlet charLength = 9;\n\t\tlet dy = -10;\n\t\tlet text = fmtComma(roundTwoSigFigs(mostRecentVal))\n\t\ttext += (![\"test\", \"absolute\"].includes(variable) ? \"%\" : \"\");\n\t\tlet calcRectW = rectW + (charLength * text.length)\n\t\tlet dx = -text.length * 6;\t\n\n\t\tsvg.append(\"text\")\n\t\t.attr(\"class\", \"endpointText\")\n\t\t.attr(\"x\", endpointCoord[0] + calcRectW / 2 + dx)\n\t\t.attr(\"y\", endpointCoord[1])\n\t\t.attr(\"dy\", dy)\n\t\t.attr(\"dx\", -5)\n\t\t.attr(\"text-anchor\", \"middle\")\n\t\t.text(text)\n\n\t}\n}\n\n\n\nfunction setupReopen(stateRow, metricCorrectCount) {\n\tlet html = \"\"\n\tlet daysDiff = 0\n\tif (stateRow.reopen == \"open\") {\n\t\tif (stateRow.or_end) {\n\t\t\tdaysDiff = getDaysDiff(todaysDate, stateRow.or_end)\n\t\t}\n\t\t$(`#state-row-${stateRow.state}`).attr(\"class\", \"state-row openedRow\")\n\t\t$(`#state-name-${stateRow.state}`).attr(\"class\", \"state-name\")\n\t\thtml += ` <span class=\"status\"><strong>${context.noStayAtHome}</strong>`\n\t} else {\n\t\tdaysDiff = getDaysDiff((stateRow.or_start), todaysDate)\n\t\t$(`#state-row-${stateRow.state}`).attr(\"class\", \"state-row openedRow\")\n\t\t$(`#state-name-${stateRow.state}`).attr(\"class\", \"state-name\")\n\t\tif (stateRow.state == \"KY\") {\n\t\t\thtml += ` <span class=\"status\"><strong>Healthy at home guidance</strong>`\n\t\t} else {\n\t\t\thtml += ` <span class=\"status\"><strong>${context.stayAtHome}</strong>`\t\n\t\t}\n\t}\n\tif (stateRow[\"days_since\"] != \"NA\") {\n\t\t// increment by 1 so that there are no 0 days\n\t\t// daysDiff += 1\n\t\tdaysDiff = fmtComma(daysDiff)\n\t\thtml += `<span class=\"subDefinition\">for ${daysDiff} ${dayorDays(daysDiff)}</span></span>`\t\n\t} \n\thtml += `</span>`\n\thtml += `<span class=\"status\"> <strong>${capitalizeFLetter(stateRow.quartile)}</strong> ${context.rating}`\n\thtml += `<span class=\"subDefinition\">${quartileMap[stateRow.quartile]}</span>`\n\thtml += `</span>`\n\t$(`#status-${stateRow.state}`).html(html)\n}\n\nfunction dayorDays(num) {\n\tif (num == 0) return \"days\"\n\treturn num > 1 ? \"days\" : \"day\"\n}\n\nfunction calculateIliLinearRegression(filteredData, x, y) {\n\t// get the x and y values for least squares\n\tvar xSeries = filteredData.map(d => x(d.date));\n\tvar ySeries = filteredData.map(d => y(d[variableMap[\"ili\"]]));\n\tvar ySeries1 = filteredData.map(d => (d[variableMap[\"ili\"]]));\n\t\n\tvar leastSquaresCoeff = leastSquares(xSeries, ySeries);\n\tvar slope = leastSquaresCoeff[0];\n\tvar intercept = leastSquaresCoeff[1];\n\tvar rSquare = leastSquaresCoeff[2];\n\n\t// apply the reults of the least squares regression\n\tvar x1 = xSeries[0];\n\tvar y1 = intercept;\n\tvar x2 = xSeries[xSeries.length - 1];\n\tvar y2 = slope * x(xDomainMap[\"ili\"][1]) + intercept;\n\n\treturn [x.invert(x1),y.invert(y1),x.invert(x2),y.invert(y2), slope];\n}\n\n\nfunction getDateDifference(date1, date2) {\n\t// First we split the values to arrays date1[0] is the year, [1] the month and [2] the day\n\tdate1 = date1.split('-');\n\tdate2 = date2.split('-');\n\n\t// Now we convert the array to a Date object, which has several helpful methods\n\tdate1 = new Date(date1[0], date1[1], date1[2]);\n\tdate2 = new Date(date2[0], date2[1], date2[2]);\n\n\t// We use the getTime() method and get the unixtime (in milliseconds, but we want seconds, therefore we divide it through 1000)\n\tlet date1_unixtime = parseInt(date1.getTime() / 1000);\n\tlet date2_unixtime = parseInt(date2.getTime() / 1000);\n\n\t// This is the calculated difference in seconds\n\tvar timeDifference = date2_unixtime - date1_unixtime;\n\n\t// in Hours\n\tvar timeDifferenceInHours = timeDifference / 60 / 60;\n\n\t// and finaly, in days :)\n\tvar timeDifferenceInDays = timeDifferenceInHours  / 20;\n\n\treturn timeDifferenceInDays\n}\n\n// YYYY-MM-DD format\nfunction getTodaysDate() {\n\tvar today = new Date();\n\ttoday.setHours(0,0,0,0)\n\treturn today\n}\n\nfunction getColor(variable, mostRecentVal) {\n\tif (variable == \"test\") {\n\t\treturn (mostRecentVal > 152) ? passColor : failColor;\n\t} else if (variable == \"positive\") {\n\t\treturn (mostRecentVal > 10) ? failColor: passColor;\n\t} else {\n\t\treturn (mostRecentVal > 70) ? failColor : passColor;\n\t}\n}\n\nfunction getGoodOrBad(variable, val) {\n\tval = roundTwoSigFigs(val)\n\tlet diff = Math.abs(val)\n\tif (variable == \"test\") {\n\t\treturn (val >= thresholdMap[variable]) ? \"good\" : \"bad\";\n\t} else if (variable == \"icu\") {\n\t\treturn (val >= thresholdMap[variable]) ? \"good\" : \"bad\";\n\t} else {\n\t\tif (diff < flat[variable]) return \"flat\"\n\t\treturn (val >= 0) ? \"bad\" : \"good\";\n\t}\n}\n\nfunction getColorClass(variable, mostRecentVal) {\n\tif (variable == \"test\") {\n\t\treturn (mostRecentVal > 152) ? \"passColor\" : \"failColor\";\n\t} else if (variable == \"positive\") {\n\t\treturn (mostRecentVal > 10) ? \"failColor\": \"passColor\";\n\t} else {\n\t\treturn (mostRecentVal > 70) ? \"failColor\" : \"passColor\";\n\t}\n}\n\nfunction getDateOfWeek(w, y) {\n    var d = (1 + (w - 1) * 7) + 3 ; // 1st of January + 7 days for each week\n\n    return new Date(y, 0, d);\n}\n\nfunction setupSelectize() {\n\tvar selector = document.getElementById(\"select-state\")\n\tselector.onchange = function() { updateTable(this.value)}\n}\n\nfunction updateTable(abbreviation) {\n\tif (abbreviation == \"All\") {\n\t\t// show all rows\n\t\t$(\".state-row\").show()\n\t} else {\n\t\t// show specific row\n\t\t$(\".state-row\").hide()\n\t\t$(`#state-row-${abbreviation}`).show()\n\t}\n\t$('html, body').animate({scrollTop:$('#state-table').position().top}, 'slow');\n\n}\n\n// returns slope, intercept and r-square of the line\nfunction leastSquares(xSeries, ySeries) {\n\tvar reduceSumFunc = function(prev, cur) { return prev + cur; };\n\t\n\tvar xBar = xSeries.reduce(reduceSumFunc) * 1.0 / xSeries.length;\n\tvar yBar = ySeries.reduce(reduceSumFunc) * 1.0 / ySeries.length;\n\n\tvar ssXX = xSeries.map(function(d) { return Math.pow(d - xBar, 2); })\n\t.reduce(reduceSumFunc);\n\t\n\tvar ssYY = ySeries.map(function(d) { return Math.pow(d - yBar, 2); })\n\t.reduce(reduceSumFunc);\n\n\tvar ssXY = xSeries.map(function(d, i) { return (d - xBar) * (ySeries[i] - yBar); })\n\t.reduce(reduceSumFunc);\n\n\tvar slope = ssXY / ssXX;\n\tvar intercept = yBar - (xBar * slope);\n\tvar rSquare = Math.pow(ssXY, 2) / (ssXX * ssYY);\n\t\n\treturn [slope, intercept, rSquare];\n}\n\nfunction getDaysDiff(date1, date2) {\n\tconst diffTime = Math.abs(date2 - date1);\n\tconst diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); \n\treturn +diffDays\n}\n\nfunction roundTwoSigFigs(num) {\n\treturn num.toPrecision(2)\n}\n\nfunction capitalizeFLetter(string) {\n\treturn string[0].toUpperCase() +  string.slice(1); \n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npropublica.views.socialSection = propublica.View.extend({\n  cssClass: 'ss-social',\n  tag: 'span',\n\n  bindings: {\n    click: 'socialRef',\n  },\n\n  socialRef: function(e) {\n    e.preventDefault();\n    var cur = $(e.currentTarget);\n    if (cur.hasClass('ss-fb') || cur.hasClass(\"fb\")) {\n      this.fb(cur);\n    }\n    if (cur.hasClass('ss-tw') || cur.hasClass(\"tw\")) {\n      this.tw(cur);\n    }\n  },\n\n  getTitle: function(cur) {\n    return cur.attr('data-title');\n  },\n\n  getImg: function(cur) {\n    return cur.attr('data-img');\n  },\n\n  getText: function(cur) {\n    return cur.attr('data-txt');\n  },\n\n  getDesc: function(cur) {\n    return cur.attr('data-desc');\n  },\n\n  getLink: function(cur) {\n    return cur.attr('data-url');\n  },\n\n  getHashtag: function(cur) {\n    return cur.attr('data-hashtag');\n  },\n\n  fb: function(cur) {\n    window.dataLayer = window.dataLayer || [];\n    var socialObj = {\n      link: cur.attr('data-url'),\n      name: cur.attr('data-title'),\n      classes: cur.attr('class'),\n      id: cur.attr('id'),\n      network: 'facebook',\n      action: 'share',\n    };\n\n    FB.ui(\n      {\n        method: 'feed',\n        link: this.getLink(cur),\n        picture: this.getImg(cur),\n        name: this.getTitle(cur),\n        caption: this.getText(cur),\n        description: this.getDesc(cur),\n      },\n      function(response) {\n        if (response['post_id'] !== undefined) {\n          window.dataLayer.push({\n            socialShare: socialObj,\n            event: 'socialShare',\n          });\n        }\n      }\n    );\n  },\n\n  tw: function(cur) {\n    window.dataLayer = window.dataLayer || [];\n    window.dataLayer.push({\n      event: 'socialShare',\n      socialShare: {\n        link: cur.attr('data-url'),\n        name: cur.attr('data-title'),\n        classes: cur.attr('class'),\n        id: cur.attr('id'),\n        network: 'twitter',\n        action: 'tweet-intent',\n      },\n    });\n\n    var baseUrl = 'https://twitter.com/intent/tweet';\n    baseUrl += '?text=' + encodeURIComponent(this.getText(cur));\n    baseUrl += '&url=' + encodeURIComponent(this.getLink(cur));\n    baseUrl += '&hashtags=' + encodeURIComponent(this.getHashtag(cur));\n    window.open(baseUrl, '', 'toolbar=0, status=0, width=550, height=420');\n  },\n});\n\npropublica.views.tweetTakeaways = propublica.View.extend({\n  cssClass: 'anno-tweet',\n  tag: 'span',\n\n  bindings: {\n    click: 'socialTweet',\n  },\n\n  socialTweet: function(e) {\n    e.preventDefault();\n    var cur = $(e.currentTarget);\n    this.tw(cur);\n  },\n\n  getLink: function(cur) {\n    return cur.attr('data-url');\n  },\n\n  getHashtag: function(cur) {\n    return cur.attr('data-hashtag');\n  },\n\n  getText: function(cur) {\n    return cur.attr('data-txt');\n  },\n\n  tw: function(cur) {\n    window.dataLayer = window.dataLayer || [];\n    window.dataLayer.push({\n      event: 'socialShare',\n      socialShare: {\n        link: cur.attr('data-url'),\n        name: cur.attr('data-title'),\n        classes: cur.attr('class'),\n        id: cur.attr('id'),\n        network: 'twitter',\n        action: 'tweet-takeaways',\n      },\n    });\n\n    var baseUrl = 'https://twitter.com/intent/tweet';\n    baseUrl += '?text=' + encodeURIComponent(this.getText(cur));\n    baseUrl += '&url=' + encodeURIComponent(this.getLink(cur));\n    baseUrl += '&hashtags=' + encodeURIComponent(this.getHashtag(cur));\n    window.open(baseUrl, '', 'toolbar=0, status=0, width=550, height=420');\n  },\n});\n\npropublica.views.socialLI = propublica.views.socialSection.extend({\n  cssClass: 'social-widget',\n  tag: 'li',\n});\n\npropublica.views.socialMethods = propublica.views.socialSection.extend({\n  cssClass: 'social-intent',\n  tag: 'a',\n});\n\n","import { select, event } from 'd3-selection';\nimport { interval } from 'd3-timer';\nimport { transition } from 'd3-transition';\nimport { easeLinear } from 'd3-ease';\nimport { scaleTime } from 'd3-scale';\nimport { drag } from 'd3-drag';\nimport moment from 'moment';\n\nexport function drawCartoArrows(dataset){\n\tvar lastDate = Object.keys(dataset[0][\"dates\"]).pop()\n\n\tvar firstDate = moment(\"3-10-2020\", \"MM-DD-YYYY\").format('l');\n\tvar endDate = Object.keys(dataset[0][\"dates\"]).pop()\n\tvar dateArr = Object.keys(dataset[0][\"dates\"])\n\tvar endDate = dateArr[dateArr.length - 1]\n\tif (dataset[0].dates[endDate][1] === null) {\n\t\tendDate = dateArr[dateArr.length - 2]\n\t}\n\t// var endDate = moment(\"6-02-2020\", \"MM-DD-YYYY\").format('l');\n\tvar mapColor = \"#e4e4e4\"\n\n\tvar m = {top: 20, right: 50, bottom: 20, left: 50},\n\twidth = 900 - m.left - m.right,\n\theight = 650 - m.top - m.bottom,\n\topts = {w: width/11, h: width/11},\n\tisMobile = $(window).width() < 600,\n\tscrollOffset = isMobile ? 20 : 150,\n\tsliderLabelOffset = isMobile ? -40 : -20,\n\tsliderTextTransform = isMobile ? 45 : 28,\n\tslideCircleSize = isMobile ? 20 : 9;\n\n\n\n\n\tvar chart = select(\"#carto-arrows\")\n\tvar yPoint = 40;\n\n\tvar svg = chart\n\t\t.append(\"svg\")\n\t    .attr(\"fill\",\"none\")\n\t    .attr(\"viewBox\", \"0 0 \" + width + \" \" + height )\n\t    .attr(\"preserveAspectRatio\", \"xMaxYMax meet\")\n\t    .append(\"g\")\n\t    .attr(\"transform\", \"translate(\" + 0 + \",\" + m.top + \")\");\n\n\tvar slidestartDate = new Date(firstDate),\n\t    slideendDate = new Date(endDate);\n\tvar timer;\n\tvar playText = \"play\"\n\tvar pauseText = \"pause\"\n\n\t\t////////// slider //////////\n\n\tvar moving = false;\n\tvar currentValue = 0;\n\tvar targetValue = width;\n\n\tvar x = scaleTime()\n\t    .domain([slidestartDate, slideendDate])\n\t    .range([0, targetValue])\n\t    .clamp(true)\n\n\tvar playButton = select(\"#slider\").append(\"button\").attr(\"id\",\"play-button\").attr(\"class\", playText)\n\t.text(playText)\n\n\tvar slider = select(\"#slider\")\n\t\t.append(\"svg\")\n\t    .attr(\"viewBox\", \"0 0 \" + width + \" \" + 50 )\n\t\t  .attr(\"preserveAspectRatio\", \"xMaxYMax meet\")\n\t    .append(\"g\")\n\t    .attr(\"class\", \"slider\")\n\t    .attr(\"transform\", \"translate(-10,\" + 30 + \")\");\n\n\tslider.append(\"line\")\n\t    .attr(\"class\", \"track\")\n\t    .attr(\"x1\", x.range()[0])\n\t    .attr(\"x2\", x.range()[1])\n\t  .select(function() { return this.parentNode.appendChild(this.cloneNode(true)); })\n\t    .attr(\"class\", \"track-inset\")\n\t  .select(function() { return this.parentNode.appendChild(this.cloneNode(true)); })\n\t    .attr(\"class\", \"track-overlay\")\n\t    .call(drag()\n\t        .on(\"start.interrupt\", function() { slider.interrupt(); })\n\t        .on(\"start drag\", function() {\n\t        \tmoving = true;\n\t          currentValue = event.x;\n\t          update(x.invert(currentValue),50); \n\t        })\n\t        .on(\"end\", function() {\n\t        \t moving = false;\n\t        \tif (currentValue > targetValue) {\n\t\t\t    \t\tcurrentValue = 0;\n\t\t\t    \t\tclearInterval(timer);\n\t\t\t    \t\tplayButton.attr(\"class\", playText).text(playText);\n\t\t    \t\t}\n\t        })\n\t    );\n\n\tvar ticksArr = [\n\tnew Date(2020, 3, 1),\n\tnew Date(2020, 4, 1), \n\tnew Date(2020, 5, 1),\n\tnew Date(2020, 6, 1),\n\tnew Date(2020, 7, 1),\n\tnew Date(2020, 8, 1),\n\tnew Date(2020, 9, 1)\n\t]\n\t\n\tslider.insert(\"g\", \".track-overlay\")\n\t    .attr(\"class\", \"ticks\")\n\t    .attr(\"transform\", \"translate(0,\" + sliderTextTransform + \")\")\n\t  .selectAll(\"text\")\n\t    .data(ticksArr)\n\t    .enter()\n\t    .append(\"text\")\n\t    .attr(\"x\", d => x(d))\n\t    .attr(\"y\", 0)\n\t    .attr(\"text-anchor\", \"middle\")\n\t    .text(function(d) { return moment(d).format('MMM D'); });\n\n\tvar handle = slider.insert(\"circle\", \".track-overlay\")\n\t    .attr(\"class\", \"handle\")\n\t    .attr(\"r\", function (d) {\n\t    \treturn slideCircleSize\n\t    });\n\n\tvar label = slider.append(\"text\")  \n\t    .attr(\"class\", \"label\")\n\t    .attr(\"text-anchor\", \"middle\")\n\t    .text(moment(slidestartDate).format('MMMM D'))\n\t    .attr(\"transform\", \"translate(0,\" + sliderLabelOffset + \")\")\n\t    .style(\"font-weight\",\"bold\")\n\n\n\t\tplayButton\n\t    .on(\"click\", function() {\n\t    var button = select(this);\n\t\t    if (button.text() == pauseText) {\n\t\t      moving = false;\n\t\t      clearInterval(timer);\n\t\t      button.attr(\"class\", playText).text(playText);\n\t\t    } else {\n\t\t      moving = true;\n\t\t      timer = setInterval(step, 100);\n\t\t      button.attr(\"class\", pauseText).text(pauseText);\n\t\t    }\n  \t\t})\n\n  //// update the map //////\n\n\tfunction update(date,duration) {\n\t\thandle.attr(\"cx\", x(date));\n  \tlabel.attr(\"x\", x(date))\n  \t.text(moment(date).format('MMMM D'))\n\n\t\tvar intervalDate = moment(date).format('l');\n\t\tvar dateMoment = moment(date)\n\n\t\tsvg.selectAll(\".state line\")\n\t\t.transition()\n\t\t  .duration(duration)\n\t\t  .delay(0)\n\t\t  .ease(easeLinear)\n\t\t\t.attr(\"y2\", function(d) { \n\t\t\t\tif (d.dates[intervalDate] && d.dates[intervalDate][3] && d.dates[intervalDate][1]) {\n\t\t\t\t\treturn ( (d.dates[intervalDate][3]) - (d.dates[intervalDate][1]) + yPoint )\n\t\t\t\t} else {\n\t\t\t\t\treturn yPoint\n\t\t\t\t}\n\t    })\n\t    .attr(\"x1\", function(d) { \n\t    \tif (d.dates[intervalDate] && d.dates[intervalDate][2]) {\n\t    \t\treturn (d.dates[intervalDate][0]); \n\t    \t} else {\n\t    \t\treturn 9.37\n\t    \t}\n\t    })\n\t    .attr(\"x2\", function(d) { \n\t    \tif (d.dates[intervalDate] && d.dates[intervalDate][2]) {\n\t    \t\treturn (d.dates[intervalDate][2]); \n\t    \t} else {\n\t    \t\treturn 69\n\t    \t}\n\t    })     \n\t\n\t}\n\n\tfunction step() {\n\t\tif (select(\".handle\").attr(\"cx\") == 800) {\n\t\t\tupdate(x.invert(currentValue),0);\n\t\t} else {\n\t\t\tupdate(x.invert(currentValue),400);\n\t\t}\n\t\t\n\t  currentValue = currentValue + (targetValue/150);\n\t  if (currentValue-10 > targetValue) {\n\t  \tmoving == false\n\t    currentValue = 0;\n\t    clearInterval(timer);\n\t    playButton.attr(\"class\", playText).text(playText);\n\t  } \n\t}\n\n\n\t//// draw the map //////\n\n\tfunction drawGrid(dataset) {\n\n\t\thandle.attr(\"cx\", x(slideendDate));\n  \tlabel.attr(\"x\", x(slideendDate)).text(moment(slideendDate).format('MMMM D'));\n\t\t\n    svg.html(\"\")\n    var state = svg.selectAll(\".state\")\n    .data(dataset)\n    .enter().append('g')\n    .attr('transform', function(d){\n    \treturn 'translate('+d.x*opts.w+','+d.y*opts.h+')'; \n    })\n    .attr(\"class\", function(d) {\n    \treturn \" open state \"+ d.state\n    })\n\n    state.append(\"text\")\n    .attr('x', 1)\n    .attr('y', opts.h/2.5)\n    .style('text-anchor', 'start')\n    .text(function(d) {\n    \treturn d.ap\n    })\n\n    state.append(\"rect\")\n\t    .attr(\"class\", \"state-rect\")\n\t    .attr(\"id\", d => `state-rect-${d.state}`)\n\t    .attr(\"width\", opts.w)\n\t    .attr(\"height\", opts.h)\n\t    .attr(\"fill\", \"none\")\n\t    .attr(\"stroke-width\", 1)\n\t    .attr(\"stroke-opacity\", 0)\n    \t.attr(\"stroke\", d => {\n    \t\treturn mapColor\n    \t})\n    \t.style(\"cursor\", \"pointer\")\n\t    .style(\"pointer-events\",\"visible\")\n\t    .on(\"click\", function() {\n\t    \t// show all the state rows, if you filtered before\n\t\t\t$(\".state-row\").show()\n\t    \tlet id = this.id;\n\t    \t$('html, body').animate({\n\t    \t\tscrollTop: $(`#state-row-${id.slice(-2)}`).offset().top - scrollOffset\n\t    \t}, 2000);\n\t    })\n\t    .on(\"mouseover\", function() {\n\t    \tselect(this)\n\t    \t.transition() \n\t    \t.duration(200)\n\t    \t.attr(\"stroke-opacity\", 0.5)\n\t    })\n\t    .on(\"mouseout\", function() {\n\t    \tselect(this)\n\t    \t.transition() \n\t    \t.duration(200)\n\t    \t.attr(\"stroke-opacity\", 0)\n\t    })\n\n    state.append(\"line\")\n    .attr(\"class\", \"trendline\")\n    .attr(\"stroke\",function(d) { \n    \treturn mapColor\n    })\n    .attr(\"y1\", function(d) { \n    \treturn yPoint; \n    })\n    .attr(\"y2\", function(d) { \n    \treturn ( (d.dates[endDate][3]) - (d.dates[endDate][1]) + yPoint )\n    })\n    .attr(\"x1\", function(d) { \n\t\t\treturn d.dates[endDate][0]\n    })\n    .attr(\"x2\", function(d) { \n    \treturn (d.dates[endDate][2]); \n    })\n    .attr(\"marker-end\", function(d) {\n    \treturn \"url(#map-arrow-open)\"\n    })\n    .attr(\"marker-start\", function(d) {\n    \treturn \"url(#map-circle-open)\"\n    })\n\n\t}\n\n\tfunction drawWeeArrows() {\n\n\t\tvar h = 40\n\t\tvar exArrow = select(\"#ex-arrow\")\n\t\tvar arrowpath = \"M0,5.1c0-0.1,0-0.2,0.1-0.5c0.1-0.8,0.6-1.5,1.1-2c0.5-0.3,1-0.6,1.7-0.6c1-0.1,2,0.3,2.5,1C5.8,3.3,5.9,3.7,6,4 c0,0.1,0.1,0.1,0.2,0.1c0,0,0,0,0.1,0c16.8,0,33.6,0,50.4,0c0.1,0,0.1,0,0.2,0c0-1.4,0-2.8,0-4.1H57l0.1,0.1 c3.3,1.6,6.6,3.3,9.9,4.9c0,0,0.1,0,0.1,0.1v0.1c0,0-0.1,0-0.1,0.1c-3.2,1.6-6.4,3.2-9.8,4.8c-0.1,0-0.2,0.1-0.3,0.2h-0.1 c0-1.4,0-2.6,0-4c0,0,0,0,0-0.1c-0.1,0-0.1,0-0.2,0c-16.8,0-33.7,0-50.5,0C6,6.3,6,6.3,5.9,6.4c-0.3,0.9-1,1.6-2.2,1.8 C2.8,8.4,1.8,8.2,1.1,7.6c-0.6-0.5-0.9-1.1-1-1.8C0,5.6,0,5.4,0,5.3S0,5.2,0,5.1z\"\t\t\t\n\t\tvar exSvg = exArrow.append(\"svg\")\n\n\t\t\t.attr(\"width\", 77)\n\t    .attr(\"height\", h)\n\t  \t.append(\"g\").attr('transform', 'translate(10,'+ h/2 +')')\n\n\t  \tvar exPath = exSvg.append(\"path\").attr(\"d\",arrowpath).attr(\"class\",\"open\").attr(\"transform\",\"rotate(0)\")\n\n\t  \tinterval(function() {\n\t\t\t  exPath.transition()\n\t\t\t      .duration(750)\n\t\t\t      .attr(\"transform\", function() {\n\t\t\t      \tif (moving == true) {\n\t\t\t      \t\tvar rotateVal;\n\t\t\t      \t\tvar rotation = select(this).attr(\"transform\")\n\t\t\t      \t\tvar regExp = /\\(([^)]+)\\)/;\n\t\t\t\t\t\t\t\trotateVal = regExp.exec(rotation)[1];\n\t\t\t      \t\treturn \"rotate(\"+rotateVal+\")\"\n\t\t\t      \t} else {\n\t\t\t      \t\treturn \"rotate(\"+randomNum(-15,15)+\")\"\n\t\t\t      \t}\n\t\t\t      \t\n\t\t\t      })\t\t\t\t      \n\t\t\t\t}, 1500);\n\n\t}\n\t\n\tfunction randomNum(min, max) { \n\t  return Math.floor(Math.random() * (max - min + 1) + min);\n\t}\n\n\n\tdrawGrid(dataset);\n\tdrawWeeArrows()\n\n};\n\n"],"sourceRoot":""}