Add weather information display and configuration options

Integrate weather data fetching, display in a widget, and provide a settings page for configuration.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: d43bd811-9372-45a7-8ac9-4a954c0538e1
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/d43bd811-9372-45a7-8ac9-4a954c0538e1/BIZe1t3
This commit is contained in:
michaelschal committed 2025-08-15 06:34:37 +00:00
1 parent 48bfc884ed
commit e70e860097
9 files changed
+863 -4

No files matched your search

+21 -3
View File
@@ -5,7 +5,8 @@ import {
Settings,
Database,
Server,
Bug
Bug,
Cloud
} from "lucide-react";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
@@ -15,6 +16,7 @@ import { AlertTriangle } from "lucide-react";
import BackupManager from "./BackupManager";
import NocoDBConfig from "./NocoDBConfig";
import DatabaseDebug from "./DatabaseDebug";
import WeatherSettings from "./WeatherSettings";
export default function Utilities() {
const { user } = useAuthUnified();
@@ -24,6 +26,7 @@ export default function Utilities() {
if (path === '/backup') return 'backups';
if (path === '/nocodb-config') return 'nocodb';
if (path === '/database-debug') return 'debug';
if (path === '/weather-settings') return 'weather';
return 'backups';
});
@@ -31,9 +34,10 @@ export default function Utilities() {
const canManageBackups = hasPermission(user?.role || '', 'backups', 'manage');
const canManageNocoDB = user?.role === 'admin';
const canDebugDatabase = user?.role === 'admin';
const canManageWeather = user?.role === 'admin';
// Si l'utilisateur n'a aucune permission, afficher le message d'accès refusé
if (!canManageBackups && !canManageNocoDB && !canDebugDatabase) {
if (!canManageBackups && !canManageNocoDB && !canDebugDatabase && !canManageWeather) {
return (
<div className="flex-1 flex items-center justify-center">
<Card className="w-96">
@@ -69,7 +73,7 @@ export default function Utilities() {
{/* Content avec onglets */}
<div className="flex-1 p-6 overflow-hidden">
<Tabs value={activeTab} onValueChange={setActiveTab} className="h-full flex flex-col">
<TabsList className="grid w-full grid-cols-3 mb-6">
<TabsList className="grid w-full grid-cols-4 mb-6">
{canManageBackups && (
<TabsTrigger value="backups" className="flex items-center gap-2">
<Database className="w-4 h-4" />
@@ -88,6 +92,12 @@ export default function Utilities() {
Debug Base de Données
</TabsTrigger>
)}
{canManageWeather && (
<TabsTrigger value="weather" className="flex items-center gap-2">
<Cloud className="w-4 h-4" />
Météo
</TabsTrigger>
)}
</TabsList>
{/* Contenu des onglets */}
@@ -114,6 +124,14 @@ export default function Utilities() {
</div>
</TabsContent>
)}
{canManageWeather && (
<TabsContent value="weather" className="flex-1 overflow-hidden">
<div className="h-full bg-gray-50 -m-6 p-6">
<WeatherSettings />
</div>
</TabsContent>
)}
</Tabs>
</div>
</div>