{"version":3,"sources":["notes/20200515000814-d3/20200520171419.static.mjs"],"names":["jsdom","d3","fs","width","height","margin","left","top","right","bottom","async","axis","csv","readFile","data","csvParse","toString","d","date","Date","temperature","Number","temp","x","scaleTime","domain","extent","range","nice","y","scaleLinear","svg","select","JSDOM","window","document","body","append","attr","style","xaxis","axisBottom","tickFormat","timeFormat","call","text","yaxis","axisLeft","writeFile","node","outerHTML"],"mappings":";OAEOA,UAAW,eACXC,OAAQ,wBAEFC,OACN,KAEP,MAAMC,MAAQ,IACbC,OAAS,IACTC,OAAS,CACRC,KAAM,GACNC,IAAK,GACLC,MAAO,GACPC,OAAQ,IAGVC,eAAeC,OAId,IAAIC,QAAYV,GAAGW,SAAS,qBACxBC,EAAOb,GAAGc,SAASH,EAAII,WAC1BC,IAAK,CACJC,KAAM,IAAIC,KAAKF,EAAEC,MACjBE,YAAaC,OAAOJ,EAAEK,SAKpBC,EAAItB,GAAGuB,YACTC,OAAOxB,GAAGyB,OAAOZ,EAAMG,GAAKA,EAAEC,OAC9BS,MAAM,CAACtB,OAAOC,KAxBH,IAwBiBD,OAAOG,QACnCoB,OAEEC,EAAI5B,GAAG6B,cACTL,OAAOxB,GAAGyB,OAAOZ,EAAMG,GAAKA,EAAEG,cAC9BO,MAAM,CA5BC,IA4BStB,OAAOI,OAAQJ,OAAOE,MACtCqB,OAEEG,EAAM9B,GAAG+B,QAAO,IAAIhC,MAAMiC,OAAQC,OAAOC,SAASC,MACpDC,OAAO,OACPC,KAAK,QAAS,8BACdC,MAAM,cAAe,QACrBA,MAAM,cAAe,cACrBD,KAAK,UAAW,CAAC,EAAG,EArCT,IACJ,MAsCLE,EAAQvC,GAAGwC,WAAWlB,GACxBmB,WAAWzC,GAAG0C,WAAW,OAE3BZ,EAAIM,OAAO,KACTC,KAAK,YAAa,eA1CX,IA0CmCjC,OAAOI,WACjDmC,KAAKJ,GACLH,OAAO,QACPC,KAAK,KA9CM,IA8CQjC,OAAOC,KAAOD,OAAOG,OAAS,GACjD8B,KAAK,IAAKjC,OAAOI,OAAS,GAC1B6B,KAAK,cAAe,UACpBC,MAAM,YAAa,QACnBA,MAAM,OAAQ,gBACdM,KAAK,WAEP,IAAIC,EAAQ7C,GAAG8C,SAASlB,GAExBE,EAAIM,OAAO,KACTC,KAAK,YAAa,aAAajC,OAAOC,WACtCsC,KAAKE,GACLT,OAAO,QACPC,KAAK,IAAoB,GAAdjC,OAAOC,MAClBgC,KAAK,MA3DE,IA2DcjC,OAAOI,OAASJ,OAAOE,KAAO,GACnD+B,KAAK,cAAe,UACpBA,KAAK,YAAa,eAClBC,MAAM,YAAa,QACnBA,MAAM,OAAQ,gBACdM,KAAK,WAGP3C,GAAG8C,UAAU,WAAYjB,EAAIkB,OAAOC,WAGrCvC","file":"20200520171419.static.mjs","sourcesContent":["#!/usr/bin/node\n\nimport jsdom from \"jsdom\"\nimport d3 from \"d3\"\nimport {\n\tpromises as fs\n} from \"fs\"\n\nconst width = 680,\n\theight = 280,\n\tmargin = {\n\t\tleft: 50,\n\t\ttop: 10,\n\t\tright: 50,\n\t\tbottom: 40\n\t}\n\nasync function axis() {\n\n\t// Load the data\n\n\tlet csv = await fs.readFile(\"seattle-temps.csv\")\n\tlet data = d3.csvParse(csv.toString(),\n\t\td => ({\n\t\t\tdate: new Date(d.date),\n\t\t\ttemperature: Number(d.temp)\n\t\t}))\n\n\t// Create an empty graph\n\n\tlet x = d3.scaleTime()\n\t\t.domain(d3.extent(data, d => d.date))\n\t\t.range([margin.left, width - margin.right])\n\t\t.nice()\n\n\tlet y = d3.scaleLinear()\n\t\t.domain(d3.extent(data, d => d.temperature))\n\t\t.range([height - margin.bottom, margin.top])\n\t\t.nice()\n\n\tlet svg = d3.select(new jsdom.JSDOM().window.document.body)\n\t\t.append(\"svg\")\n\t\t.attr('xmlns', 'http://www.w3.org/2000/svg')\n\t\t.style(\"user-select\", \"none\")\n\t\t.style(\"font-family\", \"sans-serif\")\n\t\t.attr(\"viewBox\", [0, 0, width, height])\n\n\tlet xaxis = d3.axisBottom(x)\n\t\t.tickFormat(d3.timeFormat(\"%b\"))\n\n\tsvg.append(\"g\")\n\t\t.attr(\"transform\", `translate(0,${height - margin.bottom})`)\n\t\t.call(xaxis)\n\t\t.append(\"text\")\n\t\t.attr(\"x\", (width + margin.left - margin.right) / 2)\n\t\t.attr(\"y\", margin.bottom - 4)\n\t\t.attr(\"text-anchor\", \"middle\")\n\t\t.style(\"font-size\", \"16px\")\n\t\t.style(\"fill\", \"currentColor\")\n\t\t.text(\"x label\");\n\n\tlet yaxis = d3.axisLeft(y)\n\n\tsvg.append(\"g\")\n\t\t.attr(\"transform\", `translate(${margin.left},0)`)\n\t\t.call(yaxis)\n\t\t.append(\"text\")\n\t\t.attr(\"y\", -margin.left + 16)\n\t\t.attr(\"x\", (-height + margin.bottom - margin.top) / 2)\n\t\t.attr(\"text-anchor\", \"middle\")\n\t\t.attr(\"transform\", \"rotate(-90)\")\n\t\t.style(\"font-size\", \"16px\")\n\t\t.style(\"fill\", \"currentColor\")\n\t\t.text(\"y label\");\n\n\t// Save svg\n\tfs.writeFile(\"axis.svg\", svg.node().outerHTML)\n}\n\naxis()\n"]}