Rename and purple instant
This commit is contained in:
parent
f948efc06c
commit
6df2812a4e
8 changed files with 28 additions and 10 deletions
|
|
@ -14,8 +14,10 @@ function currentUserId(): string | null {
|
||||||
*
|
*
|
||||||
* Reads the user from the shared PocketBase authStore so it stays self-contained, with no need to
|
* Reads the user from the shared PocketBase authStore so it stays self-contained, with no need to
|
||||||
* thread a user id down through the map layer tree. Returns a Set for O(1) membership checks in
|
* thread a user id down through the map layer tree. Returns a Set for O(1) membership checks in
|
||||||
* the map's colour accessor; a fresh Set instance is produced on every change so it can double
|
* the map's colour accessor; a fresh Set instance is produced on every change so React re-renders.
|
||||||
* as a deck.gl `updateTrigger` (identity-compared).
|
* Note: a Set can NOT be used directly as a deck.gl `updateTrigger` — deck diffs triggers with
|
||||||
|
* `compareProps`, which finds no enumerable keys on a Set and reports "no change". Callers must
|
||||||
|
* pass `Array.from(clickedUrls)` (or a version counter) as the trigger instead.
|
||||||
*
|
*
|
||||||
* Writes are optimistic: `markClicked` updates local state synchronously so the pin recolours
|
* Writes are optimistic: `markClicked` updates local state synchronously so the pin recolours
|
||||||
* the instant it is clicked, independent of the PocketBase round-trip or the next listings fetch.
|
* the instant it is clicked, independent of the PocketBase round-trip or the next listings fetch.
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,9 @@ export function useListingLayers({ listings, zoom, isDark }: UseListingLayersPro
|
||||||
highlightColor: [29, 228, 195, 220],
|
highlightColor: [29, 228, 195, 220],
|
||||||
onHover: stableHover,
|
onHover: stableHover,
|
||||||
onClick: stableClick,
|
onClick: stableClick,
|
||||||
updateTriggers: { getFillColor: clickedUrls },
|
// deck.gl can't diff a Set (no enumerable keys), so a click never
|
||||||
|
// re-runs getFillColor until data changes. Feed it a diffable array.
|
||||||
|
updateTriggers: { getFillColor: Array.from(clickedUrls) },
|
||||||
}),
|
}),
|
||||||
[visibleListings, clickedUrls, stableHover, stableClick]
|
[visibleListings, clickedUrls, stableHover, stableClick]
|
||||||
);
|
);
|
||||||
|
|
@ -483,7 +485,9 @@ export function useListingLayers({ listings, zoom, isDark }: UseListingLayersPro
|
||||||
highlightColor: [29, 228, 195, 220],
|
highlightColor: [29, 228, 195, 220],
|
||||||
onHover: stableExpandedHover,
|
onHover: stableExpandedHover,
|
||||||
onClick: stableExpandedClick,
|
onClick: stableExpandedClick,
|
||||||
updateTriggers: { getFillColor: clickedUrls },
|
// deck.gl can't diff a Set (no enumerable keys), so a click never
|
||||||
|
// re-runs getFillColor until data changes. Feed it a diffable array.
|
||||||
|
updateTriggers: { getFillColor: Array.from(clickedUrls) },
|
||||||
}),
|
}),
|
||||||
[expandedListings, clickedUrls, stableExpandedHover, stableExpandedClick]
|
[expandedListings, clickedUrls, stableExpandedHover, stableExpandedClick]
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ const de: Translations = {
|
||||||
minute: 'Min.',
|
minute: 'Min.',
|
||||||
or: 'oder',
|
or: 'oder',
|
||||||
area: 'Gebiet',
|
area: 'Gebiet',
|
||||||
properties: 'Immobilien',
|
properties: 'Verkaufte Immobilien',
|
||||||
postcode: 'Postcode',
|
postcode: 'Postcode',
|
||||||
noAreaSelected: 'Kein Gebiet ausgewählt',
|
noAreaSelected: 'Kein Gebiet ausgewählt',
|
||||||
noAreaSelectedDesc:
|
noAreaSelectedDesc:
|
||||||
|
|
@ -631,6 +631,8 @@ const de: Translations = {
|
||||||
email: 'E-Mail',
|
email: 'E-Mail',
|
||||||
emailPlaceholder: 'name@beispiel.de',
|
emailPlaceholder: 'name@beispiel.de',
|
||||||
password: 'Passwort',
|
password: 'Passwort',
|
||||||
|
showPassword: 'Passwort anzeigen',
|
||||||
|
hidePassword: 'Passwort verbergen',
|
||||||
passwordPlaceholderRegister: 'Mind. 8 Zeichen',
|
passwordPlaceholderRegister: 'Mind. 8 Zeichen',
|
||||||
passwordPlaceholderLogin: 'Dein Passwort',
|
passwordPlaceholderLogin: 'Dein Passwort',
|
||||||
forgotPassword: 'Passwort vergessen?',
|
forgotPassword: 'Passwort vergessen?',
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ const en = {
|
||||||
minute: 'min',
|
minute: 'min',
|
||||||
or: 'or',
|
or: 'or',
|
||||||
area: 'Area',
|
area: 'Area',
|
||||||
properties: 'Properties',
|
properties: 'Sold properties',
|
||||||
postcode: 'Postcode',
|
postcode: 'Postcode',
|
||||||
noAreaSelected: 'No area selected',
|
noAreaSelected: 'No area selected',
|
||||||
noAreaSelectedDesc:
|
noAreaSelectedDesc:
|
||||||
|
|
@ -618,6 +618,8 @@ const en = {
|
||||||
email: 'Email',
|
email: 'Email',
|
||||||
emailPlaceholder: 'you@example.com',
|
emailPlaceholder: 'you@example.com',
|
||||||
password: 'Password',
|
password: 'Password',
|
||||||
|
showPassword: 'Show password',
|
||||||
|
hidePassword: 'Hide password',
|
||||||
passwordPlaceholderRegister: 'Min 8 characters',
|
passwordPlaceholderRegister: 'Min 8 characters',
|
||||||
passwordPlaceholderLogin: 'Your password',
|
passwordPlaceholderLogin: 'Your password',
|
||||||
forgotPassword: 'Forgot password?',
|
forgotPassword: 'Forgot password?',
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ const fr: Translations = {
|
||||||
minute: 'min',
|
minute: 'min',
|
||||||
or: 'ou',
|
or: 'ou',
|
||||||
area: 'Secteur',
|
area: 'Secteur',
|
||||||
properties: 'Biens',
|
properties: 'Biens vendus',
|
||||||
postcode: 'Code postal',
|
postcode: 'Code postal',
|
||||||
noAreaSelected: 'Aucun secteur sélectionné',
|
noAreaSelected: 'Aucun secteur sélectionné',
|
||||||
noAreaSelectedDesc:
|
noAreaSelectedDesc:
|
||||||
|
|
@ -642,6 +642,8 @@ const fr: Translations = {
|
||||||
email: 'E-mail',
|
email: 'E-mail',
|
||||||
emailPlaceholder: 'vous@exemple.com',
|
emailPlaceholder: 'vous@exemple.com',
|
||||||
password: 'Mot de passe',
|
password: 'Mot de passe',
|
||||||
|
showPassword: 'Afficher le mot de passe',
|
||||||
|
hidePassword: 'Masquer le mot de passe',
|
||||||
passwordPlaceholderRegister: '8 caractères minimum',
|
passwordPlaceholderRegister: '8 caractères minimum',
|
||||||
passwordPlaceholderLogin: 'Votre mot de passe',
|
passwordPlaceholderLogin: 'Votre mot de passe',
|
||||||
forgotPassword: 'Mot de passe oublié ?',
|
forgotPassword: 'Mot de passe oublié ?',
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ const hi: Translations = {
|
||||||
minute: 'मिनट',
|
minute: 'मिनट',
|
||||||
or: 'या',
|
or: 'या',
|
||||||
area: 'क्षेत्र',
|
area: 'क्षेत्र',
|
||||||
properties: 'प्रॉपर्टीज़',
|
properties: 'बिकी हुई प्रॉपर्टीज़',
|
||||||
postcode: 'पोस्टकोड',
|
postcode: 'पोस्टकोड',
|
||||||
noAreaSelected: 'कोई क्षेत्र चुना नहीं गया',
|
noAreaSelected: 'कोई क्षेत्र चुना नहीं गया',
|
||||||
noAreaSelectedDesc:
|
noAreaSelectedDesc:
|
||||||
|
|
@ -615,6 +615,8 @@ const hi: Translations = {
|
||||||
email: 'ईमेल',
|
email: 'ईमेल',
|
||||||
emailPlaceholder: 'you@example.com',
|
emailPlaceholder: 'you@example.com',
|
||||||
password: 'पासवर्ड',
|
password: 'पासवर्ड',
|
||||||
|
showPassword: 'पासवर्ड दिखाएं',
|
||||||
|
hidePassword: 'पासवर्ड छिपाएं',
|
||||||
passwordPlaceholderRegister: 'कम से कम 8 अक्षर',
|
passwordPlaceholderRegister: 'कम से कम 8 अक्षर',
|
||||||
passwordPlaceholderLogin: 'आपका पासवर्ड',
|
passwordPlaceholderLogin: 'आपका पासवर्ड',
|
||||||
forgotPassword: 'पासवर्ड भूल गए?',
|
forgotPassword: 'पासवर्ड भूल गए?',
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ const hu: Translations = {
|
||||||
minute: 'perc',
|
minute: 'perc',
|
||||||
or: 'vagy',
|
or: 'vagy',
|
||||||
area: 'Terület',
|
area: 'Terület',
|
||||||
properties: 'Ingatlanok',
|
properties: 'Eladott ingatlanok',
|
||||||
postcode: 'Irányítószám',
|
postcode: 'Irányítószám',
|
||||||
noAreaSelected: 'Nincs kiválasztott terület',
|
noAreaSelected: 'Nincs kiválasztott terület',
|
||||||
noAreaSelectedDesc:
|
noAreaSelectedDesc:
|
||||||
|
|
@ -633,6 +633,8 @@ const hu: Translations = {
|
||||||
email: 'E-mail',
|
email: 'E-mail',
|
||||||
emailPlaceholder: 'te@pelda.hu',
|
emailPlaceholder: 'te@pelda.hu',
|
||||||
password: 'Jelszó',
|
password: 'Jelszó',
|
||||||
|
showPassword: 'Jelszó megjelenítése',
|
||||||
|
hidePassword: 'Jelszó elrejtése',
|
||||||
passwordPlaceholderRegister: 'Minimum 8 karakter',
|
passwordPlaceholderRegister: 'Minimum 8 karakter',
|
||||||
passwordPlaceholderLogin: 'Jelszavad',
|
passwordPlaceholderLogin: 'Jelszavad',
|
||||||
forgotPassword: 'Elfelejtetted a jelszavad?',
|
forgotPassword: 'Elfelejtetted a jelszavad?',
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ const zh: Translations = {
|
||||||
minute: '分钟',
|
minute: '分钟',
|
||||||
or: '或',
|
or: '或',
|
||||||
area: '区域',
|
area: '区域',
|
||||||
properties: '房产',
|
properties: '已售房产',
|
||||||
postcode: '邮编',
|
postcode: '邮编',
|
||||||
noAreaSelected: '未选择区域',
|
noAreaSelected: '未选择区域',
|
||||||
noAreaSelectedDesc: '点击地图上的任意彩色区域,查看治安、学校、房价等信息',
|
noAreaSelectedDesc: '点击地图上的任意彩色区域,查看治安、学校、房价等信息',
|
||||||
|
|
@ -579,6 +579,8 @@ const zh: Translations = {
|
||||||
email: '邮箱',
|
email: '邮箱',
|
||||||
emailPlaceholder: 'you@example.com',
|
emailPlaceholder: 'you@example.com',
|
||||||
password: '密码',
|
password: '密码',
|
||||||
|
showPassword: '显示密码',
|
||||||
|
hidePassword: '隐藏密码',
|
||||||
passwordPlaceholderRegister: '至少 8 个字符',
|
passwordPlaceholderRegister: '至少 8 个字符',
|
||||||
passwordPlaceholderLogin: '您的密码',
|
passwordPlaceholderLogin: '您的密码',
|
||||||
forgotPassword: '忘记密码?',
|
forgotPassword: '忘记密码?',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue