From 9d52f3193a7b61d82a33545d557b0fb19f273bdb Mon Sep 17 00:00:00 2001 From: Xor290 Date: Sat, 14 Mar 2026 12:22:38 +0100 Subject: [PATCH] chore: update --- frontend-admin/src/api/api_cabine.ts | 11 ++- frontend-admin/src/api/types.ts | 1 + .../src/screens/admin/SettingsScreen.tsx | 25 ++--- .../src/screens/cabine/UsersScreen.tsx | 95 +++++++------------ 4 files changed, 58 insertions(+), 74 deletions(-) diff --git a/frontend-admin/src/api/api_cabine.ts b/frontend-admin/src/api/api_cabine.ts index a715b0f0..20b48968 100644 --- a/frontend-admin/src/api/api_cabine.ts +++ b/frontend-admin/src/api/api_cabine.ts @@ -74,13 +74,14 @@ export const resetClientPenalties = async (clientUsername: string) => { return { success: true, message: data.message }; }; +// pool: 0 = pool principal (point), 1 = pool secondaire (point_zipette), -1 = tous export const resetClientPoints = async ( clientUsername: string, - resetCancellationsPoints: boolean = false, + pool: number = -1, ) => { const { data } = await apiClient.post( `${API}/client/${clientUsername}/point/reset`, - { reset_cancellations_points: resetCancellationsPoints }, + { pool }, ); return { success: true, message: data.message }; }; @@ -349,6 +350,8 @@ export interface PublicSettings { show_amende_score: boolean; points_enabled: boolean; points_separated: boolean; + pool_names: string[]; + pool_keys: string[]; } export const registerCabinePushToken = async ( @@ -399,6 +402,8 @@ export const getPublicSettings = async (): Promise => { show_amende_score: data.show_amende_score ?? true, points_enabled: data.points_enabled ?? true, points_separated: data.points_separated ?? true, + pool_names: data.pool_names ?? [], + pool_keys: data.pool_keys ?? [], }; } catch { return { @@ -406,6 +411,8 @@ export const getPublicSettings = async (): Promise => { show_amende_score: true, points_enabled: true, points_separated: true, + pool_names: [], + pool_keys: [], }; } }; diff --git a/frontend-admin/src/api/types.ts b/frontend-admin/src/api/types.ts index 6dd7d66f..fd8d0749 100644 --- a/frontend-admin/src/api/types.ts +++ b/frontend-admin/src/api/types.ts @@ -28,6 +28,7 @@ export interface ClientResponse { command: number; point: number; points_zipette: number; + points_extra: Record; amende: number; cancellations_count: number; last_penalty_reason?: string; diff --git a/frontend-admin/src/screens/admin/SettingsScreen.tsx b/frontend-admin/src/screens/admin/SettingsScreen.tsx index 86f4b2dd..c4a006d9 100644 --- a/frontend-admin/src/screens/admin/SettingsScreen.tsx +++ b/frontend-admin/src/screens/admin/SettingsScreen.tsx @@ -965,7 +965,10 @@ export default function SettingsScreen() { {/* Gestion des types de points */} - + Types de points Créez vos propres types de points. Le 1er type → colonne principale, le 2e → colonne secondaire. @@ -988,17 +991,15 @@ export default function SettingsScreen() { ); })} - {pools.length < 2 && ( - - - - Ajouter un type - - - )} + + + + Ajouter un type + + diff --git a/frontend-admin/src/screens/cabine/UsersScreen.tsx b/frontend-admin/src/screens/cabine/UsersScreen.tsx index 0bf5517e..5ee06ff6 100644 --- a/frontend-admin/src/screens/cabine/UsersScreen.tsx +++ b/frontend-admin/src/screens/cabine/UsersScreen.tsx @@ -22,6 +22,8 @@ export default function UsersScreen() { show_amende_score: true, points_enabled: true, points_separated: true, + pool_names: [], + pool_keys: [], }); const [penaltyModal, setPenaltyModal] = useState<{ visible: boolean; @@ -70,29 +72,17 @@ export default function UsersScreen() { ); }; - const handleResetPoints = (username: string) => { + const handleResetPool = (username: string, poolIdx: number) => { + const poolNames = appSettings.pool_names; + const poolName = poolIdx >= 0 && poolIdx < poolNames.length + ? poolNames[poolIdx] + : "tous les points"; showConfirm( - "Reset points", - `Réinitialiser les points de ${username} ?`, + `Reset ${poolName}`, + `Réinitialiser les points "${poolName}" de ${username} ?`, async () => { try { - await resetClientPoints(username); - await loadData(); - } catch (e: any) { - showError("Erreur", e.message); - } - }, - "Reset", - ); - }; - - const handleResetZipette = (username: string) => { - showConfirm( - "Reset points zipette", - `Réinitialiser les points zipette de ${username} ?`, - async () => { - try { - await resetClientPoints(username, true); + await resetClientPoints(username, poolIdx); await loadData(); } catch (e: any) { showError("Erreur", e.message); @@ -146,31 +136,23 @@ export default function UsersScreen() { {item.prenom} {item.nom} - {item.telephone} - {appSettings.points_enabled && ( - appSettings.points_separated ? ( - <> - - - {item.point} - - Points - - - - {item.points_zipette} - - Zipette - - - ) : ( - - - {item.point} - - Points + {appSettings.points_enabled && appSettings.pool_names.map((name, i) => { + let value: number; + let color: string; + if (i === 0) { value = item.point; color = colors.success; } + else if (i === 1) { value = item.points_zipette; color = colors.info; } + else { + const key = appSettings.pool_keys[i] ?? ""; + value = item.points_extra?.[key] ?? 0; + color = colors.warning; + } + return ( + + {value} + {name} - ) - )} + ); + })} {appSettings.show_amende_score && ( @@ -195,22 +177,15 @@ export default function UsersScreen() { variant="outline" /> )} - {appSettings.points_enabled && ( - <> -