From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- ping/frontend/src/routes/dashboard/+layout.svelte | 44 ++ ping/frontend/src/routes/dashboard/+page.svelte | 81 +++ .../src/routes/dashboard/analyses/+page.svelte | 409 +++++++++++++++ .../src/routes/dashboard/messages/+page.svelte | 403 +++++++++++++++ .../src/routes/dashboard/models/+page.svelte | 568 +++++++++++++++++++++ .../src/routes/dashboard/personnel/+page.svelte | 290 +++++++++++ .../src/routes/dashboard/settings/+page.svelte | 452 ++++++++++++++++ .../src/routes/dashboard/transactions/+page.svelte | 360 +++++++++++++ 8 files changed, 2607 insertions(+) create mode 100644 ping/frontend/src/routes/dashboard/+layout.svelte create mode 100644 ping/frontend/src/routes/dashboard/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/analyses/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/messages/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/models/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/personnel/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/settings/+page.svelte create mode 100644 ping/frontend/src/routes/dashboard/transactions/+page.svelte (limited to 'ping/frontend/src/routes/dashboard') diff --git a/ping/frontend/src/routes/dashboard/+layout.svelte b/ping/frontend/src/routes/dashboard/+layout.svelte new file mode 100644 index 0000000..a2f7efe --- /dev/null +++ b/ping/frontend/src/routes/dashboard/+layout.svelte @@ -0,0 +1,44 @@ + + + + + {#snippet rightComponent()} +
+
+ +
+ +
+ {/snippet} +
+ +
{@render children()}
+ + diff --git a/ping/frontend/src/routes/dashboard/+page.svelte b/ping/frontend/src/routes/dashboard/+page.svelte new file mode 100644 index 0000000..c38e281 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/+page.svelte @@ -0,0 +1,81 @@ + + +
+ +
+
+ +
+ + +
+ +
+ +
+
+ + diff --git a/ping/frontend/src/routes/dashboard/analyses/+page.svelte b/ping/frontend/src/routes/dashboard/analyses/+page.svelte new file mode 100644 index 0000000..1a8ed47 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/analyses/+page.svelte @@ -0,0 +1,409 @@ + + +
+
+

Analyses des Transactions

+
+ + +
+
+ + + + {#if analysisData.thresholdAlerts} +
+ {#if analysisData.thresholdAlerts.dailySpending} +
+ ⚠️ Dépenses quotidiennes élevées ({(Math.abs(analysisData.totalAmount) / selectedPeriod).toFixed(0)}€/jour) +
+ {/if} + {#if analysisData.thresholdAlerts.co2Impact} +
+ 🌍 Impact CO2 élevé ({analysisData.totalCO2}g) +
+ {/if} + {#if analysisData.thresholdAlerts.profitTarget} +
+ 🎯 Objectif de profit atteint ({analysisData.totalAmount.toFixed(0)}€) +
+ {/if} +
+ {/if} + +
+
+

Transactions dans le temps

+ {#if analysisData.chartData?.length > 0} + + {:else} +

Aucune donnée

+ {/if} +
+ +
+

Top destinataires

+
+ {#each (analysisData.recipientChartData || []).slice(0, 5) as recipient} +
+ {recipient.x} +
+ {#if analysisData.recipientChartData?.length > 0} + {@const maxValue = Math.max(...analysisData.recipientChartData.map(r => r.y))} +
+ {:else} +
+ {/if} + {recipient.y.toFixed(0)}€ +
+
+ {/each} +
+
+ +
+

Répartition des transactions

+
+
+ Achats: + + {(analysisData.filteredTransactions || []).filter((t: Transaction) => t.type === 'buy').length} + +
+
+ Ventes: + + {(analysisData.filteredTransactions || []).filter((t: Transaction) => t.type === 'sell').length} + +
+
+ Volume total: + + {Math.abs(analysisData.totalAmount || 0).toFixed(0)}€ + +
+
+
+ +
+

Métriques CO2

+
+
+ Impact total: + + {analysisData.totalCO2 || 0}g CO2 + +
+
+ Par transaction: + + {(analysisData.filteredTransactions?.length ? analysisData.totalCO2 / analysisData.filteredTransactions.length : 0).toFixed(1)}g + +
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/messages/+page.svelte b/ping/frontend/src/routes/dashboard/messages/+page.svelte new file mode 100644 index 0000000..52869e4 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/messages/+page.svelte @@ -0,0 +1,403 @@ + + +
+
+ +
+

Messages

+ +
+ +
+ +
+

Boîte de réception

+
+ {#each messages as message} +
selectMessage(message)} + > +
+ {message.sender} + {message.date.toLocaleDateString()} +
+
{message.subject}
+
{message.content.substring(0, 80)}...
+ {#if message.unread} +
+ {/if} +
+ {/each} +
+
+ + +
+ {#if selectedMessage} +
+

{selectedMessage.subject}

+
+ +
+
+
+ De: {selectedMessage.sender} + Date: {selectedMessage.date.toLocaleDateString()} +
+
+ {selectedMessage.content} +
+ + +
+

Répondre

+ + +
+ {:else} +
+

Sélectionnez un message

+

Choisissez un message dans la liste pour le lire

+
+ {/if} +
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/models/+page.svelte b/ping/frontend/src/routes/dashboard/models/+page.svelte new file mode 100644 index 0000000..3be6f00 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/models/+page.svelte @@ -0,0 +1,568 @@ + + +
+
+
+

Modèles actifs

+
+ {#each models as m, i} +
+
+ {m.name}
+ {m.id} +
+
+
+ Eco score + {69} % +
+
+ Efficacité + {69} % +
+
+ + +
+ {/each} +
+
+ +
+
+
+ {#if modelToEdit !== null} +

Modifier un modèle

+ {:else} +

Nouveau modèle

+ {/if} + +
+
+ + +
+ {#if modelToEdit !== null} + + {:else if currentUser} + + {:else} + Chargement en cours... + {/if} + +
+
+ +
+
+ Sources de données + +
+ + {#each sources as source, index} +
+ + +
+ + +
+
+ {/each} +
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/personnel/+page.svelte b/ping/frontend/src/routes/dashboard/personnel/+page.svelte new file mode 100644 index 0000000..a1722c1 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/personnel/+page.svelte @@ -0,0 +1,290 @@ + + +{#if user} +
+
+
+

Mon compte

+ +

Nom: {user.displayName}

+

Login: {user.login}

+

Role: {user.isAdmin ? 'ADMIN' : 'USER'}

+

Id: {user.id}

+
+
+

Modifier

+ Laisser vide pour ne pas modifier
+ {#if user.isAdmin} +

Vous pouvez modifier les informations de n'importe quel utilisateur.

+ {:else} +

Vous ne pouvez modifier que vos propres informations.

+ {/if} +

+
+ {#if user.isAdmin} + + + {/if} + + + + + + + +
+
+
+ + {#if user.isAdmin} +
+
+

Créer un nouvel utilisateur

+
+ + + + + + + + + +
+
+
+

Liste des utilisateurs

+
+ {#each allUsers as u} + { + idValue = u.id; + urlValue = u.avatar || ''; + nameValue = u.displayName || ''; + }} + onDelete={() => { + authFetch(`/api/user/${u.id}`, { + method: 'DELETE' + }) + .then(async (res) => { + if (!res.ok) { + addToast({ + title: 'Erreur', + message: "Impossible de supprimer l'utilisateur." + }); + throw new Error("Erreur lors de la suppression de l'utilisateur"); + } + allUsers = allUsers.filter((user) => user.id !== u.id); + addToast({ + title: 'Succès', + message: 'Utilisateur supprimé avec succès.', + color: 'green' + }); + }) + .catch(() => { + addToast({ + title: 'Erreur', + message: "Impossible de supprimer l'utilisateur." + }); + }); + }} + /> + {/each} +
+
+
+ {/if} +
+{:else} +

Chargement des informations utilisateur...

+{/if} + + diff --git a/ping/frontend/src/routes/dashboard/settings/+page.svelte b/ping/frontend/src/routes/dashboard/settings/+page.svelte new file mode 100644 index 0000000..99c5d8f --- /dev/null +++ b/ping/frontend/src/routes/dashboard/settings/+page.svelte @@ -0,0 +1,452 @@ + + +
+
+
+

Paramètres

+
+ +
+
+

👤 Profil utilisateur

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+

🔔 Notifications

+
+
+ + + + + +
+ +
+
+ +
+

🔒 Sécurité

+
+
+ +
+
+ + +
+
+ +
+ +
+ +
+

Changer le mot de passe

+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+

🎨 Affichage

+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+

📊 Gestion des données

+
+
+
+

Exporter mes données

+

Téléchargez toutes vos données personnelles dans un fichier JSON

+
+ +
+
+
+

Supprimer mon compte

+

Supprimez définitivement votre compte et toutes vos données

+
+ +
+
+
+
+
+
+ + diff --git a/ping/frontend/src/routes/dashboard/transactions/+page.svelte b/ping/frontend/src/routes/dashboard/transactions/+page.svelte new file mode 100644 index 0000000..86f9292 --- /dev/null +++ b/ping/frontend/src/routes/dashboard/transactions/+page.svelte @@ -0,0 +1,360 @@ + + +
+
+
+

Transactions

+ +
+ +
+
+ Trier +
+ + +
+
+
+ + +
+
+ +
+ {#each visibleTransactions as transaction} +
+
+
+

{transaction.label}

+

+ {transaction.receiverIban} • {transaction.receiverLabel} +

+
+
+
+ CO2 + {transaction.eco_score} +
+
+ {transaction.currency} + {transaction.amount} +
+
+ +
+
+ {/each} +
+
+
+ + + -- cgit v1.2.3