Template:Interactive COVID-19 maps/common

{{#tag:Graph|

{

"version": 2, "width": {{#expr:{{{scale|.8}}}*{{{width|625}}}}}, "height": {{#expr:{{{scale|.8}}}*{{{height|325}}}}},

"padding": {{{padding|12}}},

"background": "#edf1f7",

"data": [

{

"name": "population",

"url": "wikiraw:///Template:Interactive COVID-19 maps/data/UN 2019 Population by country-csv",

"format": {

"type": "csv"

}

},

{

"name": "highlights",

"url": "wikiraw:///{{{data-coloring}}}",

"format": {

"type": "csv",

"parse": {

"date": "date",

"cases": "number"

}

},

"transform": [{{#if:{{{per-capita|}}}|

{

"type": "lookup",

"on": "population",

"keys": ["id"],

"onKey": "ISO3",

"as": ["pop"],

"default": {"Population": 0}

},

{

"type": "formula",

"field": "v",

"expr": "round((parseFloat(datum[''+dateStamp])/datum.pop.Population)*{{#expr:1e{{{round-to|2}}} }})/{{#expr:1e{{{round-to|2}}} }}"

}

]|

{

"type": "formula",

"field": "v",

"expr": "parseFloat(datum[''+dateStamp])"

}

]}}

},

{

"name": "globalByDate",

"url": "wikiraw:///{{{data-dates}}}",

"format": {

"type": "csv",

"parse": {

"date": "date",

"cases": "number"

}

}

},

{

"name": "countries",

"url": "wikiraw:///Template:Interactive COVID-19 maps/data/World map data",

"format": {"type": "topojson","feature": "countries"},

"transform": [

{

"type": "geopath",

"value": "data",

"scale": {{#expr:{{{scale|.8}}}*100}},

"center": [-180,125],

"translate": [0,0],

"projection": "equirectangular"

},

{

"type": "lookup",

"on": "population",

"keys": ["id"],

"onKey": "ISO3",

"as": ["pop"],

"default": {"Country": "" }

},

{

"type": "lookup",

"on": "highlights",

"keys": ["id"],

"onKey": "id",

"as": ["zipped"],

"default": {"v": null, "Country":"No data"}

}

]

}

],

"signals": [

{

"name": "isDragging",

"init": false,

"streams": [

{"type": "@handle:mousedown","expr": "true"},

{"type": "@scrollArea:mousedown","expr": "true"},

{"type": "mouseup","expr": "false"},

{"type": "#{{{id|covid-map}}}:mouseout","expr":"false"},

{"type": "@scrollArea:touchstart", "expr": "true"},

{"type": "touchend", "expr": "false"}

]

},

{

"name": "handlePosition",

"init": {{#expr:{{{scale|.8}}}*{{{width|625}}}}},

"streams": [

{

"type": "mousemove[isDragging]",

"expr": "clamp(eventX(),0,width)"

},

{

"type": "touchmove[isDragging]",

"expr": "clamp(eventX(),0,width)"

}

]

},

{

"name": "scaledHandlePosition",

"expr": "handlePosition",

"scale": {"name": "dateScale","invert": true}

},

{

"name": "currentDate",

// WugBot! humandate

"init": "May 31",

"expr": "timeFormat({{#ifeq:{{CONTENTLANG}}|en|'%B %d %Y'|'%d/%m/%Y'}},scaledHandlePosition)"

/* %d = day (0-padded), %e = day (unpadded), %B = month name (English in all wikis), %m = month number, %Y = year. */

/* Any order and characters between them is allowed. */

},

{

"name": "dateStamp",

// WugBot! computerdate

"init": "05/31/22",

"expr": "timeFormat('%m/%d/%y',scaledHandlePosition)"

},

{

"name": "tooltipSignalPop",

"init": {"expr": "{x: 0, y: 0, datum: {} }"},

"streams": [

{

"type": "@map:mouseover",

"expr": "{x: eventX(), y: eventY(), datum: eventItem().datum.pop}"

},

{

"type": "@map:mouseout",

"expr": "{x: 0, y: 0, datum: {} }"

}

]

},

{

"name": "tooltipSignalZipped",

"init": {"expr": "{x: 0, y: 0, datum: {} }"},

"streams": [

{

"type": "@map:mouseover",

"expr": "{x: eventX(), y: eventY(), datum: eventItem().datum.zipped}"

},

{

"type": "@map:mouseout",

"expr": "{x: 0, y: 0, datum: {} }"

}

]

}

],

"scales": [

{

"name": "dateScale",

"type": "time",

"domain": {

"data": "globalByDate",

"field":"date"

},

"range": "width"

},

{

"name": "color",

"type": "{{{color-ramp-type|log}}}",

"domain": [

{{#ifeq:{{{color-ramp-type|log}}}|log|{{#ifeq:{{#expr:{{{domain-min}}}=0}}|1|1|{{{domain-min}}}}}}},

{{#ifeq:{{{color-ramp-type|log}}}|log|{{#expr:1e{{{domain-magnitude|{{{domain-max|2}}} }}} }}|{{{domain-max}}}}}],

"domainMin": {{#ifeq:{{{color-ramp-type|log}}}|log|1|{{{domain-min}}}}},

"zero": false,

"range": ["#FFEDBC", "#f83600"]

}

],

"marks": [

{

"name": "map",

"type": "path",

"from": {"data": "countries"},

"properties": {

"enter": {

"path": {"field": "layout_path"}{{#ifexpr:{{{scale|0.8}}}<0.8|,

"y": {"value": 10} }}

},

"update": {

"fill": [

{

"test": "datum.zipped.v !== null",

"scale": "color",

"field": "zipped.v"

},

{"value": "white"}

]

},

"hover": {"fill": {"value": "#989898"} }

}

},

{

"name": "scrollArea",

"type": "rule",

"properties": {

"enter": {

"x": {"value": 0},

"y": {"value": 40},

"x2": {"value": {{#expr:{{{scale|.8}}}*{{{width|625}}}}}},

"stroke": {"value": "#edf1f7"},

"strokeWidth": {"value": 16}

}

}

},

{

"name": "scrollLine",

"type": "rule",

"properties": {

"enter": {

"x": {"value": 0},

"y": {"value": 40},

"x2": {"value": {{#expr:{{{scale|.8}}}*{{{width|625}}}}}},

"stroke": {"value": "#000"},

"strokeWidth": {"value": 2}

}

}

},

{

"name": "handle",

"type": "symbol",

"properties": {

"enter": {

"x": {"value": 200},

"y": {"value": 40},

"size": {"value": 154},

"stroke": {"value": "#880"},

"strokeWidth": {"value": 2.5}

},

"update": {

"fill": {"value": "#fff"},

"x": {"signal": "handlePosition"}

},

"hover": {"fill": {"value": "#f00"} }

}

},

{

"name": "dateLabel",

"type": "text",

"properties": {

"enter": {

"x": {"value": 0},

"y": {"value": 25},

"fontSize": {"value": 32},

"fontWeight": {"value": "bold"},

"fill": {"value": "steelblue"}

},

"update": {"text": {"signal": "currentDate"} }

}

},

{

"name": "HoverText",

"type": "text",

"properties": {

"enter": {

"x": {"value": {{#expr:{{{scale|0.8}}}*{{{width|626}}} }} },

"y": {"value": 10},

"align": {"value": "right"},

"fontSize": {"value": 17},

"fill": {"value": "black"}

},

"update": {

"text": [

{

"test": "tooltipSignalZipped.datum.v === null",

"template": "{{#ifexpr:{{{scale|0.8}}}<0.4||\u007b{tooltipSignalPop.datum.Country}\u007d}} (No data)"

},

{

"test": "tooltipSignalZipped.datum.v",

"template": "{{#ifexpr:{{{scale|0.8}}}<0.4||\u007b{tooltipSignalPop.datum.Country}\u007d}} \u007b{tooltipSignalZipped.datum.v\u007cnumber:','}\u007d"

},

{

"value": ""

}

]

}

}

}

]{{#if:{{{no-legend|}}}||,

"legends": [

{

"fill": "color",

"title": "{{{legend-title|}}}",

"offset": -300,

"properties": {

"gradient": {

"stroke": {"value": "transparent"}

},

"title": {

"fontSize": {"value": 14}

},

"legend": {

"x": {"value": 0},

"y": {"value": {{#expr:{{{scale|.8}}}*225 }} }

}

}

}

] }}

}

|mode=interactive

|title={{{title|Interactive COVID-19 Map}}}

}}

{{documentation}}