|
20 | 20 | mapFirstLoaded,
|
21 | 21 | sensorMap,
|
22 | 22 | } from './stores.js';
|
| 23 | + import * as d3 from 'd3'; |
23 | 24 |
|
24 | 25 | let LAT = -0.5;
|
25 | 26 | let LON = -0.5;
|
|
54 | 55 | const onMouseEnter = level => e => {
|
55 | 56 | map.getCanvas().style.cursor = 'pointer';
|
56 | 57 | popup.setLngLat(e.lngLat).addTo(map);
|
| 58 | +
|
| 59 | + map.setFeatureState({ source: level, id: hoveredId }, { hover: false }); |
| 60 | + map.setFeatureState({ source: 'mega-county', id: megaHoveredId }, { hover: false }); |
57 | 61 | };
|
58 | 62 |
|
59 | 63 | const onMouseMove = level => e => {
|
|
68 | 72 |
|
69 | 73 | map.setFeatureState({ source: level, id: hoveredId }, { hover: false });
|
70 | 74 | map.setFeatureState({ source: 'mega-county', id: megaHoveredId }, { hover: false });
|
| 75 | +
|
| 76 | + var fillColor; |
71 | 77 | if (level === 'mega-county') {
|
72 | 78 | if (hoveredId === null) {
|
73 | 79 | megaHoveredId = e.features[0].id;
|
74 | 80 | map.setFeatureState({ source: level, id: megaHoveredId }, { hover: true });
|
| 81 | + // get hover color for mega county |
| 82 | + fillColor = e.features[0].layer.paint['fill-color'].toString(); |
75 | 83 | } else {
|
76 | 84 | megaHoveredId = null;
|
77 | 85 | }
|
78 | 86 | } else {
|
79 | 87 | hoveredId = e.features[0].id;
|
80 | 88 | map.setFeatureState({ source: level, id: hoveredId }, { hover: true });
|
| 89 | +
|
| 90 | + //get hover color for regular county |
| 91 | + var color_stops = map.getLayer(level).getPaintProperty('fill-color')['stops']; |
| 92 | + var value_range = []; |
| 93 | + var color_range = []; |
| 94 | +
|
| 95 | + for (var i = 0; i < color_stops.length; i++) { |
| 96 | + value_range.push(color_stops[i][0]); |
| 97 | + color_range.push(color_stops[i][1].match(/\d+/g)); |
| 98 | + } |
| 99 | +
|
| 100 | + var ramp = d3 |
| 101 | + .scaleLinear() |
| 102 | + .domain(value_range) |
| 103 | + .range(color_range); |
| 104 | +
|
| 105 | + var stat_high = color_stops[color_stops.length - 1][0]; |
| 106 | + var stat_low = color_stops[0][0]; |
| 107 | + const value = e.features[0].properties.value; |
| 108 | + if (value <= stat_low) { |
| 109 | + fillColor = color_stops[0][1]; |
| 110 | + } else if (value > stat_high) { |
| 111 | + fillColor = color_stops[color_stops.length - 1][1]; |
| 112 | + } else { |
| 113 | + var arr = ramp(value); |
| 114 | + fillColor = 'rgb(' + arr.join(', ') + ')'; |
| 115 | + } |
81 | 116 | }
|
82 | 117 |
|
83 | 118 | if (hoveredId !== null && level === 'mega-county') return;
|
84 | 119 | // popup
|
85 | 120 | const { value, direction, NAME, Population } = e.features[0].properties;
|
86 |
| - const fillColor = e.features[0].layer.paint['fill-color'].toString(); |
| 121 | + //const fillColor = e.features[0].layer.paint['fill-color'].toString(); |
87 | 122 |
|
88 | 123 | const sens = $sensorMap.get($currentSensor);
|
89 | 124 | let title =
|
|
92 | 127 | ($currentLevel === 'county' && level !== 'mega-county' ? ' County' : '');
|
93 | 128 |
|
94 | 129 | let body;
|
95 |
| - //console.log(e.features[0].properties); |
96 | 130 | if ($signalType === 'value') {
|
97 |
| - // More information displayed when deaths is shown |
| 131 | + // More information displayed when counts is shown |
98 | 132 | if ($currentSensor.match(/deaths_incidence_num/)) {
|
99 | 133 | const death_num = e.features[0].properties.value;
|
100 | 134 | const ratio = e.features[0].properties.value1;
|
|
0 commit comments