const us_codes = { "Alabama": { "id": "AL", "cc": "US", "name": "Alabama", "dataset": 1 }, "Alaska": { "id": "AK", "cc": "US", "name": "Alaska", "dataset": 1 }, "Arizona": { "id": "AZ", "cc": "US", "name": "Arizona", "dataset": 1 }, "Arkansas": { "id": "AR", "cc": "US", "name": "Arkansas", "dataset": 1 }, "California": { "id": "CA", "cc": "US", "name": "California", "dataset": 1 }, "Colorado": { "id": "CO", "cc": "US", "name": "Colorado", "dataset": 1 }, "Connecticut": { "id": "CT", "cc": "US", "name": "Connecticut", "dataset": 1 }, "Delaware": { "id": "DE", "cc": "US", "name": "Delaware", "dataset": 1 }, "District of Columbia": { "id": "DC", "cc": "US", "name": "District of Columbia", "dataset": 1 }, "Florida": { "id": "FL", "cc": "US", "name": "Florida", "dataset": 1 }, "Georgia": { "id": "GA", "cc": "US", "name": "Georgia", "dataset": 1 }, "Hawaii": { "id": "HI", "cc": "US", "name": "Hawaii", "dataset": 1 }, "Idaho": { "id": "ID", "cc": "US", "name": "Idaho", "dataset": 1 }, "Illinois": { "id": "IL", "cc": "US", "name": "Illinois", "dataset": 1 }, "Indiana": { "id": "IN", "cc": "US", "name": "Indiana", "dataset": 1 }, "Iowa": { "id": "IA", "cc": "US", "name": "Iowa", "dataset": 1 }, "Kansas": { "id": "KS", "cc": "US", "name": "Kansas", "dataset": 1 }, "Kentucky": { "id": "KY", "cc": "US", "name": "Kentucky", "dataset": 1 }, "Louisiana": { "id": "LA", "cc": "US", "name": "Louisiana", "dataset": 1 }, "Maine": { "id": "ME", "cc": "US", "name": "Maine", "dataset": 1 }, "Maryland": { "id": "MD", "cc": "US", "name": "Maryland", "dataset": 1 }, "Massachusetts": { "id": "MA", "cc": "US", "name": "Massachusetts", "dataset": 1 }, "Michigan": { "id": "MI", "cc": "US", "name": "Michigan", "dataset": 1 }, "Minnesota": { "id": "MN", "cc": "US", "name": "Minnesota", "dataset": 1 }, "Mississippi": { "id": "MS", "cc": "US", "name": "Mississippi", "dataset": 1 }, "Missouri": { "id": "MO", "cc": "US", "name": "Missouri", "dataset": 1 }, "Montana": { "id": "MT", "cc": "US", "name": "Montana", "dataset": 1 }, "Nebraska": { "id": "NE", "cc": "US", "name": "Nebraska", "dataset": 1 }, "Nevada": { "id": "NV", "cc": "US", "name": "Nevada", "dataset": 1 }, "New Hampshire": { "id": "NH", "cc": "US", "name": "New Hampshire", "dataset": 1 }, "New Jersey": { "id": "NJ", "cc": "US", "name": "New Jersey", "dataset": 1 }, "New Mexico": { "id": "NM", "cc": "US", "name": "New Mexico", "dataset": 1 }, "New York": { "id": "NY", "cc": "US", "name": "New York", "dataset": 1 }, "North Carolina": { "id": "NC", "cc": "US", "name": "North Carolina", "dataset": 1 }, "North Dakota": { "id": "ND", "cc": "US", "name": "North Dakota", "dataset": 1 }, "Ohio": { "id": "OH", "cc": "US", "name": "Ohio", "dataset": 1 }, "Oklahoma": { "id": "OK", "cc": "US", "name": "Oklahoma", "dataset": 1 }, "Oregon": { "id": "OR", "cc": "US", "name": "Oregon", "dataset": 1 }, "Pennsylvania": { "id": "PA", "cc": "US", "name": "Pennsylvania", "dataset": 1 }, "Rhode Island": { "id": "RI", "cc": "US", "name": "Rhode Island", "dataset": 1 }, "South Carolina": { "id": "SC", "cc": "US", "name": "South Carolina", "dataset": 1 }, "South Dakota": { "id": "SD", "cc": "US", "name": "South Dakota", "dataset": 1 }, "Tennessee": { "id": "TN", "cc": "US", "name": "Tennessee", "dataset": 1 }, "Texas": { "id": "TX", "cc": "US", "name": "Texas", "dataset": 1 }, "Utah": { "id": "UT", "cc": "US", "name": "Utah", "dataset": 1 }, "Vermont": { "id": "VT", "cc": "US", "name": "Vermont", "dataset": 1 }, "Virginia": { "id": "VA", "cc": "US", "name": "Virginia", "dataset": 1 }, "Washington": { "id": "WA", "cc": "US", "name": "Washington", "dataset": 1 }, "West Virginia": { "id": "WV", "cc": "US", "name": "West Virginia", "dataset": 1 }, "Wisconsin": { "id": "WI", "cc": "US", "name": "Wisconsin", "dataset": 1 }, "Wyoming": { "id": "WY", "cc": "US", "name": "Wyoming", "dataset": 1 }, "Puerto Rico": { "id": "PR", "cc": "US", "name": "Puerto Rico", "dataset": 1 }, "B.C.": { "id": "BC", "cc": "CA", "name": "British Columbia", "dataset": 2 }, "Alb.": { "id": "AB", "cc": "CA", "name": "Alberta", "dataset": 2 }, "Sask.": { "id": "SK", "cc": "CA", "name": "Saskatchewan", "dataset": 2 }, "Man.": { "id": "MB", "cc": "CA", "name": "Manitoba", "dataset": 2 }, "Ont.": { "id": "ON", "cc": "CA", "name": "Ontario", "dataset": 2 }, "Que.": { "id": "QC", "cc": "CA", "name": "Quebec", "dataset": 2 }, "N.B.": { "id": "NB", "cc": "CA", "name": "New Brunswick", "dataset": 2 }, "N.S.": { "id": "NS", "cc": "CA", "name": "Nova Scotia", "dataset": 2 }, "P.E.I.": { "id": "PE", "cc": "CA", "name": "Prince Edward Island", "dataset": 2 }, "N.L.": { "id": "NL", "cc": "CA", "name": "Newfoundland and Labrador", "dataset": 2 }, "Nunavut": { "id": "NU", "cc": "CA", "name": "Nunavut", "dataset": 3 }, "Yukon": { "id": "YT", "cc": "CA", "name": "Yukon", "dataset": 3 }, "NWT": { "id": "NT", "cc": "CA", "name": "Northwest Territories", "dataset": 3 }, "Nunavik": { "id": "NV", "cc": "CA", "name": "Nunavik", "dataset": 3 }, } function num_from_dollar(str){ return parseFloat(str.replace(',','').replace('$','')); } function item_tooltipHTML(dataItem, cc){ var h = `
`+dataItem['name']+`, `+dataItem['country']+`
`; if(cc == 'CAD'){ var textitems = dataItem['textitems_cad']; }else{ var textitems = dataItem['textitems_usa']; } for (i in textitems){ h+= `
`+textitems[i]['name']+`
`; } h += `
`; return h; } am4core.useTheme(am4themes_animated); am4core.options.autoSetClassName = true; var chart; var geo_all = {}; for (i in am4geodata_usaLow['features']){ var row = am4geodata_usaLow['features'][i]; if(row['properties']['id'] != 'US-HI'){ geo_all[row['properties']['id']] = row; } } for (i in am4geodata_canadaLow['features']){ var row = am4geodata_canadaLow['features'][i]; geo_all[row['properties']['id']] = row; } for (i in am4geodata_ntLow['features']){ var row = am4geodata_ntLow['features'][i]; geo_all[row['properties']['id']] = row; } // Set up data source var nurses_paid_us = []; var nurses_paid_ca = []; var nurses_paid_nt = []; var nurses_paid_all = []; var chart, polygonTemplateUS, polygonSeriesUS, polygonTemplateCA, polygonSeriesCA, button_cad, button_usd; var currency; function set_currency(cur){ currency = cur; if(cur == 'CAD'){ button_cad.background.defaultState.properties.fill = am4core.color("orange"); button_cad.background.fill = am4core.color("orange"); button_usd.background.defaultState.properties.fill = am4core.color("#d9d9d9"); button_usd.background.fill = am4core.color("#d9d9d9"); for (i in nurses_paid_us){ nurses_paid_us[i]['tt_html'] = nurses_paid_us[i]['tt_html_cad']; } for (i in nurses_paid_ca){ nurses_paid_ca[i]['tt_html'] = nurses_paid_ca[i]['tt_html_cad']; } }else{ button_cad.background.defaultState.properties.fill = am4core.color("#d9d9d9"); button_cad.background.fill = am4core.color("#d9d9d9"); button_usd.background.defaultState.properties.fill = am4core.color("orange"); button_usd.background.fill = am4core.color("orange"); for (i in nurses_paid_us){ nurses_paid_us[i]['tt_html'] = nurses_paid_us[i]['tt_html_usa']; } for (i in nurses_paid_ca){ nurses_paid_ca[i]['tt_html'] = nurses_paid_ca[i]['tt_html_usa']; } } } function chart_create(){ chart = am4core.create("chartdiv", am4maps.MapChart); chart.chartContainer.wheelable = false; chart.chartContainer.paddingLeft = am4core.percent(-10); chart.chartContainer.wheelable = false; chart.seriesContainer.draggable = false; chart.seriesContainer.resizable = false; //chart.projection = new am4maps.projections.Orthographic(); chart.projection = new am4maps.projections.AzimuthalEqualArea(); chart.deltaLatitude = -40; chart.deltaLongitude = 100; // Seies US polygonSeriesUS = chart.series.push(new am4maps.MapPolygonSeries()); // Configure series polygonTemplateUS = polygonSeriesUS.mapPolygons.template; polygonTemplateUS.tooltipHTML = "{tt_html}"; polygonTemplateUS.fill = am4core.color("#74B266"); polygonTemplateUS.stroke = am4core.color("#444"); polygonSeriesUS.geodata = {'type':'FeatureCollection', 'features':nurses_paid_us}; // polygonSeriesUS.exclude = ["US-HI"]; polygonSeriesUS.data = nurses_paid_us; polygonSeriesUS.tooltip.getFillFromObject = false; polygonSeriesUS.tooltip.background.fill = am4core.color("#e19200"); polygonSeriesUS.heatRules.push({ "property": "fill", "target": polygonSeriesUS.mapPolygons.template, "min": am4core.color("#ffffff"), "max": am4core.color("#e19200") }); // Create hover state and set alternative fill color var hs = polygonTemplateUS.states.create("hover"); hs.properties.fill = am4core.color("yellow"); // Seies CA polygonSeriesCA = chart.series.push(new am4maps.MapPolygonSeries()); // Configure series polygonTemplateCA = polygonSeriesCA.mapPolygons.template; polygonTemplateCA.tooltipHTML = "{tt_html}"; polygonTemplateCA.fill = am4core.color("#2cb8e6"); polygonTemplateCA.stroke = am4core.color("#444"); polygonSeriesCA.geodata = {'type':'FeatureCollection', 'features':nurses_paid_ca}; polygonSeriesCA.data = nurses_paid_ca; polygonSeriesCA.tooltip.getFillFromObject = false; polygonSeriesCA.tooltip.background.fill = am4core.color("#2cb8e6"); polygonSeriesCA.heatRules.push({ "property": "fill", "target": polygonSeriesCA.mapPolygons.template, "min": am4core.color("#ffffff"), "max": am4core.color("#2cb8e6") }); // Create hover state and set alternative fill color var hs_ca = polygonTemplateCA.states.create("hover"); hs_ca.properties.fill = am4core.color("yellow"); // Add buttons var buttons = new am4core.Container(); buttons.parent = chart; buttons.layout = 'horizontal'; buttons.align = 'right'; buttons.cursorOverStyle = am4core.MouseCursorStyle.pointer; buttons.marginRight = am4core.percent(2); button_cad = new am4core.Button(); button_cad.parent = buttons; button_cad.label.text = 'CAD'; button_cad.background.cornerRadiusBottomLeft = 5; button_cad.background.cornerRadiusTopLeft = 5; button_cad.background.cornerRadiusBottomRight = 0; button_cad.background.cornerRadiusTopRight = 0; button_cad.events.on("hit", function(ev) { set_currency('CAD'); }, this); button_usd = new am4core.Button(); button_usd.parent = buttons; button_usd.label.text = 'USD'; button_usd.background.cornerRadiusBottomLeft = 0; button_usd.background.cornerRadiusTopLeft = 0; button_usd.background.cornerRadiusBottomRight = 5; button_usd.background.cornerRadiusTopRight = 5; button_usd.events.on("hit", function(ev) { set_currency('USD'); }, this); set_currency('CAD'); // Set up heat legend var heatLegend = chart.createChild(am4maps.HeatLegend); heatLegend.series = polygonSeriesUS; heatLegend.align = "right"; heatLegend.valign = "bottom"; heatLegend.width = am4core.percent(20); heatLegend.marginRight = am4core.percent(2); heatLegend.valueAxis.logarithmic = false; heatLegend.valueAxis.renderer.labels.template.fill = am4core.color("#444"); heatLegend.stroke = am4core.color("#444"); heatLegend.id = 'chart_hl'; heatLegend.valueAxis.numberFormatter = new am4core.NumberFormatter(); heatLegend.valueAxis.numberFormatter.numberFormat = "$###,###.##"; //label var label = chart.createChild(am4core.Label); label.html = `
Data Sources:
CAD Nurse Stats
US Nurse Stats
US Travel Nurse Stats
`; label.width = "250px"; label.fill = "#000"; label.align = "left"; label.valign = "bottom"; label.marginLeft = am4core.percent(2); label.marginBottom = am4core.percent(2); } ds = new am4core.DataSource(); ds.url = 'https://uploads-ssl.webflow.com/62e31c14d90ff56f267a3083/63034c2fb6f3cd0494badc4c_nurse_map.csv'; ds.parser = new am4core.CSVParser({}); ds.load(); ds.events.on("parseended", function(ev) { var csvdata = ev.target.data; for (i in csvdata){ var row = csvdata[i]; var st_name = row['col0']; if(st_name in us_codes){ var id = us_codes[st_name]['cc']+'-'+us_codes[st_name]['id']; if(id in geo_all){ var nr = num_from_dollar(row['col3']); var tnr = num_from_dollar(row['col1']); var info_cad = []; var info_usa = []; info_cad.push({'name':'Nurse Rate '+row['col3']}); info_usa.push({'name':'Nurse Rate '+row['col4']}); if(tnr > 0){ info_cad.push({'name':'Travel Nurse Rate '+row['col1']}); info_cad.push({'name':'Difference for Travel Nurses '+row['col5']}); info_usa.push({'name':'Travel Nurse Rate '+row['col2']}); info_usa.push({'name':'Difference for Travel Nurses '+row['col5']}); } var geoitem = geo_all[id]; geoitem['value'] = nr; geoitem['name'] = geoitem['properties']['name']; geoitem['country'] = geoitem['properties']['CNTRY']; geoitem['textitems_cad'] = info_cad; geoitem['textitems_usa'] = info_usa; geoitem['tt_html_cad'] = item_tooltipHTML(geoitem, 'CAD'); geoitem['tt_html_usa'] = item_tooltipHTML(geoitem, 'USD'); nurses_paid_all.push(geoitem); if(us_codes[st_name]['dataset']==1 || us_codes[st_name]['dataset']==3){ nurses_paid_us.push(geoitem); } if(us_codes[st_name]['dataset']==2){ nurses_paid_ca.push(geoitem); } } } } chart_create(); });