feat(maps): show both scores in all map tooltips
Country map: avg Market Score + avg Opportunity Score. City map: Market Score + Opportunity Score per city. Opportunity map: Opportunity Score + Market Score per location. Subtask 4/5: tooltip updates. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -102,9 +102,11 @@
|
|||||||
if (!c.lat || !c.lon) return;
|
if (!c.lat || !c.lon) return;
|
||||||
var size = 12 + 44 * Math.sqrt(c.total_venues / maxV);
|
var size = 12 + 44 * Math.sqrt(c.total_venues / maxV);
|
||||||
var color = scoreColor(c.avg_market_score);
|
var color = scoreColor(c.avg_market_score);
|
||||||
|
var oppColor = c.avg_opportunity_score >= 60 ? '#16A34A' : (c.avg_opportunity_score >= 30 ? '#D97706' : '#3B82F6');
|
||||||
var tip = '<strong>' + c.country_name_en + '</strong><br>'
|
var tip = '<strong>' + c.country_name_en + '</strong><br>'
|
||||||
+ c.total_venues + ' venues · ' + c.city_count + ' cities<br>'
|
+ c.total_venues + ' venues · ' + c.city_count + ' cities<br>'
|
||||||
+ '<span style="color:' + color + ';font-weight:600;">Padelnomics Market Score: ' + c.avg_market_score + '/100</span>';
|
+ '<span style="color:' + color + ';font-weight:600;">Padelnomics Market Score: ' + c.avg_market_score + '/100</span><br>'
|
||||||
|
+ '<span style="color:' + oppColor + ';font-weight:600;">Padelnomics Opportunity Score: ' + (c.avg_opportunity_score || 0) + '/100</span>';
|
||||||
L.marker([c.lat, c.lon], { icon: makeIcon(size, color) })
|
L.marker([c.lat, c.lon], { icon: makeIcon(size, color) })
|
||||||
.bindTooltip(tip, { className: 'map-tooltip', direction: 'top', offset: [0, -Math.round(size / 2)] })
|
.bindTooltip(tip, { className: 'map-tooltip', direction: 'top', offset: [0, -Math.round(size / 2)] })
|
||||||
.on('click', function() { window.location = '/' + lang + '/markets/' + c.country_slug; })
|
.on('click', function() { window.location = '/' + lang + '/markets/' + c.country_slug; })
|
||||||
|
|||||||
@@ -104,8 +104,10 @@
|
|||||||
var dist = loc.nearest_padel_court_km != null
|
var dist = loc.nearest_padel_court_km != null
|
||||||
? loc.nearest_padel_court_km.toFixed(1) + ' km to nearest court'
|
? loc.nearest_padel_court_km.toFixed(1) + ' km to nearest court'
|
||||||
: 'No nearby courts';
|
: 'No nearby courts';
|
||||||
|
var mktColor = loc.market_score >= 60 ? '#16A34A' : (loc.market_score >= 30 ? '#D97706' : '#DC2626');
|
||||||
var tip = '<strong>' + loc.location_name + '</strong><br>'
|
var tip = '<strong>' + loc.location_name + '</strong><br>'
|
||||||
+ '<span style="color:' + color + ';font-weight:600;">Padelnomics Opportunity Score: ' + loc.opportunity_score + '/100</span><br>'
|
+ '<span style="color:' + color + ';font-weight:600;">Padelnomics Opportunity Score: ' + loc.opportunity_score + '/100</span><br>'
|
||||||
|
+ '<span style="color:' + mktColor + ';font-weight:600;">Padelnomics Market Score: ' + (loc.market_score || 0) + '/100</span><br>'
|
||||||
+ dist + ' · Pop. ' + fmtPop(loc.population);
|
+ dist + ' · Pop. ' + fmtPop(loc.population);
|
||||||
L.marker([loc.lat, loc.lon], { icon: makeIcon(size, color) })
|
L.marker([loc.lat, loc.lon], { icon: makeIcon(size, color) })
|
||||||
.bindTooltip(tip, { className: 'map-tooltip', direction: 'top', offset: [0, -Math.round(size / 2)] })
|
.bindTooltip(tip, { className: 'map-tooltip', direction: 'top', offset: [0, -Math.round(size / 2)] })
|
||||||
|
|||||||
@@ -49,10 +49,12 @@
|
|||||||
var pop = c.population >= 1000000
|
var pop = c.population >= 1000000
|
||||||
? (c.population / 1000000).toFixed(1) + 'M'
|
? (c.population / 1000000).toFixed(1) + 'M'
|
||||||
: (c.population >= 1000 ? Math.round(c.population / 1000) + 'K' : (c.population || ''));
|
: (c.population >= 1000 ? Math.round(c.population / 1000) + 'K' : (c.population || ''));
|
||||||
|
var oppColor = c.opportunity_score >= 60 ? '#16A34A' : (c.opportunity_score >= 30 ? '#D97706' : '#3B82F6');
|
||||||
var tip = '<strong>' + c.city_name + '</strong><br>'
|
var tip = '<strong>' + c.city_name + '</strong><br>'
|
||||||
+ (c.padel_venue_count || 0) + ' venues'
|
+ (c.padel_venue_count || 0) + ' venues'
|
||||||
+ (pop ? ' · ' + pop : '')
|
+ (pop ? ' · ' + pop : '')
|
||||||
+ '<br><span style="color:' + color + ';font-weight:600;">Padelnomics Market Score: ' + Math.round(c.market_score) + '/100</span>';
|
+ '<br><span style="color:' + color + ';font-weight:600;">Padelnomics Market Score: ' + Math.round(c.market_score) + '/100</span>'
|
||||||
|
+ '<br><span style="color:' + oppColor + ';font-weight:600;">Padelnomics Opportunity Score: ' + Math.round(c.opportunity_score || 0) + '/100</span>';
|
||||||
if (hasArticle) {
|
if (hasArticle) {
|
||||||
tip += '<br><span style="color:#94A3B8;font-size:0.75rem;">Click to explore →</span>';
|
tip += '<br><span style="color:#94A3B8;font-size:0.75rem;">Click to explore →</span>';
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user