This commit is contained in:
Andras Schmelczer 2026-06-14 15:14:43 +01:00
parent 083f8a982e
commit e90a3285a1
6 changed files with 25 additions and 32 deletions

View file

@ -194,9 +194,7 @@ export function useTravelTime(initial?: TravelTimeInitial) {
setEntries((prev) => setEntries((prev) =>
dedupeTravelTimeEntries( dedupeTravelTimeEntries(
prev.map((entry, i) => prev.map((entry, i) =>
i === index i === index ? { ...entry, noChange: !(entry.noChange ?? false), oneChange: false } : entry
? { ...entry, noChange: !(entry.noChange ?? false), oneChange: false }
: entry
) )
) )
); );

View file

@ -897,7 +897,7 @@ const fr: Translations = {
walk: 'Marche', walk: 'Marche',
cycle: 'Vélo', cycle: 'Vélo',
nationalAvg: 'Moyenne nationale', nationalAvg: 'Moyenne nationale',
crimeDataEnds: 'Les données de police pour cette zone s\'arrêtent en {{year}}', crimeDataEnds: "Les données de police pour cette zone s'arrêtent en {{year}}",
}, },
// ── Street View ──────────────────────────────────── // ── Street View ────────────────────────────────────

View file

@ -776,14 +776,14 @@ mod tests {
// and matching breaks. See is_apostrophe for the full set. // and matching breaks. See is_apostrophe for the full set.
let expected = "kings cross"; let expected = "kings cross";
for q in [ for q in [
"King's Cross", // U+0027 straight "King's Cross", // U+0027 straight
"Kings Cross", // U+2019 right single quote "Kings Cross", // U+2019 right single quote
"Kings Cross", // U+2018 left single quote "Kings Cross", // U+2018 left single quote
"King´s Cross", // U+00B4 acute accent "King´s Cross", // U+00B4 acute accent
"Kingʼs Cross", // U+02BC modifier letter apostrophe "Kingʼs Cross", // U+02BC modifier letter apostrophe
"Kings Cross", // U+2032 prime "Kings Cross", // U+2032 prime
"King`s Cross", // U+0060 grave accent "King`s Cross", // U+0060 grave accent
"Kingʻs Cross", // U+02BB modifier letter turned comma "Kingʻs Cross", // U+02BB modifier letter turned comma
] { ] {
assert_eq!(normalize_search_text(q), expected, "failed for {q:?}"); assert_eq!(normalize_search_text(q), expected, "failed for {q:?}");
} }

View file

@ -791,12 +791,12 @@ mod tests {
// tokenizes differently depending on which quote glyph was typed. // tokenizes differently depending on which quote glyph was typed.
let expected = vec!["obrien".to_string(), "road".to_string()]; let expected = vec!["obrien".to_string(), "road".to_string()];
for addr in [ for addr in [
"O'Brien Road", // U+0027 straight "O'Brien Road", // U+0027 straight
"OBrien Road", // U+2019 right single quote "OBrien Road", // U+2019 right single quote
"OBrien Road", // U+2018 left single quote "OBrien Road", // U+2018 left single quote
"O´Brien Road", // U+00B4 acute accent "O´Brien Road", // U+00B4 acute accent
"OʼBrien Road", // U+02BC modifier letter apostrophe "OʼBrien Road", // U+02BC modifier letter apostrophe
"OBrien Road", // U+2032 prime "OBrien Road", // U+2032 prime
] { ] {
assert_eq!(tokenize_address_text(addr), expected, "failed for {addr:?}"); assert_eq!(tokenize_address_text(addr), expected, "failed for {addr:?}");
} }

View file

@ -1155,14 +1155,14 @@ mod tests {
// step == 1.0 but wide-range (would explode bin count) or fractional // step == 1.0 but wide-range (would explode bin count) or fractional
// (averages/percentiles) features must keep percentile binning. // (averages/percentiles) features must keep percentile binning.
for name in [ for name in [
"Construction year", // Fixed but spans ~2000 years "Construction year", // Fixed but spans ~2000 years
"Date of last transaction", // Fixed, fractional years "Date of last transaction", // Fixed, fractional years
"Income Score", // 0..100 percentile "Income Score", // 0..100 percentile
"% White", // 0..100 percentage "% White", // 0..100 percentage
"Noise (dB)", // 50..80, range > threshold "Noise (dB)", // 50..80, range > threshold
"Serious crime (avg/yr)", // Percentile bounds, fractional "Serious crime (avg/yr)", // Percentile bounds, fractional
"Interior height (m)", // step 0.1 "Interior height (m)", // step 0.1
"Estimated current price", // step 10000 "Estimated current price", // step 10000
] { ] {
assert!( assert!(
!has_integer_bins(name), !has_integer_bins(name),

View file

@ -368,12 +368,7 @@ pub fn compute_crime_by_year(
/// force-level publication gaps (e.g. Greater Manchester ends mid-2019) as /// force-level publication gaps (e.g. Greater Manchester ends mid-2019) as
/// stale data instead of letting old numbers read as current. /// stale data instead of letting old numbers read as current.
pub fn crime_latest_available_year(crime_by_year: &CrimeByYearData) -> Option<i32> { pub fn crime_latest_available_year(crime_by_year: &CrimeByYearData) -> Option<i32> {
crime_by_year crime_by_year.years_by_type.iter().flatten().copied().max()
.years_by_type
.iter()
.flatten()
.copied()
.max()
} }
pub fn compute_poi_feature_stats( pub fn compute_poi_feature_stats(