fix milton keynes
This commit is contained in:
+28
-6
@@ -573,17 +573,39 @@ function numberHeader(req, name, min, max) {
|
|||||||
return value
|
return value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const CITY_COORDINATE_OVERRIDES = new Map([
|
||||||
|
['GB|ENGLAND|MILTON KEYNES', { latitude: 52.0406, longitude: -0.7594 }],
|
||||||
|
])
|
||||||
|
|
||||||
|
function normalizedLocationKey(location) {
|
||||||
|
return [
|
||||||
|
String(location.country || '').trim().toUpperCase(),
|
||||||
|
String(location.region || '').trim().toUpperCase(),
|
||||||
|
String(location.city || '').trim().toUpperCase(),
|
||||||
|
].join('|')
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeLocationSignal(location) {
|
||||||
|
const override = CITY_COORDINATE_OVERRIDES.get(normalizedLocationKey(location))
|
||||||
|
if (!override) return location
|
||||||
|
return {
|
||||||
|
...location,
|
||||||
|
latitude: override.latitude,
|
||||||
|
longitude: override.longitude,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function locationFromHeaders(req) {
|
function locationFromHeaders(req) {
|
||||||
if (!requestPeerIsTrusted(req) || TRUST_PROXY !== 'cloudflare') {
|
if (!requestPeerIsTrusted(req) || TRUST_PROXY !== 'cloudflare') {
|
||||||
return { country: countryFromHeaders(req), region: '', city: '', latitude: null, longitude: null }
|
return normalizeLocationSignal({ country: countryFromHeaders(req), region: '', city: '', latitude: null, longitude: null })
|
||||||
}
|
}
|
||||||
return {
|
return normalizeLocationSignal({
|
||||||
country: countryFromHeaders(req),
|
country: countryFromHeaders(req),
|
||||||
region: headerValue(req, 'cf-region', 120),
|
region: headerValue(req, 'cf-region', 120),
|
||||||
city: headerValue(req, 'cf-ipcity', 120),
|
city: headerValue(req, 'cf-ipcity', 120),
|
||||||
latitude: numberHeader(req, 'cf-iplatitude', -90, 90),
|
latitude: numberHeader(req, 'cf-iplatitude', -90, 90),
|
||||||
longitude: numberHeader(req, 'cf-iplongitude', -180, 180),
|
longitude: numberHeader(req, 'cf-iplongitude', -180, 180),
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function sanitizeAnalyticsValue(value, depth = 0) {
|
function sanitizeAnalyticsValue(value, depth = 0) {
|
||||||
@@ -1076,7 +1098,7 @@ function viewerDashboard() {
|
|||||||
city: row.city,
|
city: row.city,
|
||||||
latitude: row.latitude,
|
latitude: row.latitude,
|
||||||
longitude: row.longitude,
|
longitude: row.longitude,
|
||||||
}))
|
})).map(normalizeLocationSignal)
|
||||||
|
|
||||||
const activePageMap = new Map()
|
const activePageMap = new Map()
|
||||||
for (const viewer of active) {
|
for (const viewer of active) {
|
||||||
@@ -1363,7 +1385,7 @@ function viewerDashboard() {
|
|||||||
group by country, region, city, latitude, longitude, timezone, language
|
group by country, region, city, latitude, longitude, timezone, language
|
||||||
order by visitors desc, events desc
|
order by visitors desc, events desc
|
||||||
limit 32
|
limit 32
|
||||||
`).all(daySince)
|
`).all(daySince).map(normalizeLocationSignal)
|
||||||
|
|
||||||
const locations = db.prepare(`
|
const locations = db.prepare(`
|
||||||
select
|
select
|
||||||
@@ -1383,7 +1405,7 @@ function viewerDashboard() {
|
|||||||
group by country, region, city, latitude, longitude, timezone, language
|
group by country, region, city, latitude, longitude, timezone, language
|
||||||
order by visitors desc, events desc
|
order by visitors desc, events desc
|
||||||
limit 32
|
limit 32
|
||||||
`).all(thirtyDaysSince)
|
`).all(thirtyDaysSince).map(normalizeLocationSignal)
|
||||||
|
|
||||||
const totals = db.prepare(`
|
const totals = db.prepare(`
|
||||||
select
|
select
|
||||||
|
|||||||
Reference in New Issue
Block a user