/** @jsx jsx */
// src/setting/setting.tsx - MED OPDATERINGSKNAP
import React, { useEffect, useState } from 'react';
import { AllWidgetSettingProps } from 'jimu-app';
import { jsx } from 'jimu-core';
// Importér Button komponent fra Jimu UI
import { Button } from 'jimu-ui';
// Da vi undgår Jimu UI komponenter for inputfelter, behøver vi ikke SettingSection, SettingRow, Select, DatePicker her.
// Men vi importerer Button, som er en Jimu UI komponent. Hvis Button fejler, må vi bruge en simpel HTML-knap.
interface Config {
    stationId: string;
    selectedDate: string;
    selectedTime: string;
    refreshCounter: number; // Tilføjet ny konfigurationsproperty
}
const stationOptions = [
    { value: '06041', label: 'København, Landbohøjskolen (06041)' },
    { value: '06040', label: 'Aarhus, Universitetet (06040)' },
    { value: '05185', label: 'Odense, Lufthavnen (05185)' },
    { value: '06180', label: 'Tirstrup, Lufthavnen (06180)' },
    { value: '06030', label: 'Esbjerg, Lufthavnen (06030)' },
];
const Setting = (props: AllWidgetSettingProps<Config>) => {
    const { config, onSettingChange } = props;
    const [localStationId, setLocalStationId] = useState(config.stationId || '06041');
    const [localSelectedDate, setLocalSelectedDate] = useState(config.selectedDate || '');
    const [localSelectedTime, setLocalSelectedTime] = useState(config.selectedTime || '');
    useEffect(() => {
        setLocalStationId(config.stationId || '06041');
        setLocalSelectedDate(config.selectedDate || '');
        setLocalSelectedTime(config.selectedTime || '');
    }, [config.stationId, config.selectedDate, config.selectedTime]);
    const handleSettingChange = (key: keyof Config, value: any) => {
        let updatedValue = value;
        if (key === 'selectedDate' || key === 'selectedTime') {
            updatedValue = value || '';
        }
        switch (key) {
            case 'stationId':
                setLocalStationId(updatedValue);
                break;
            case 'selectedDate':
                setLocalSelectedDate(updatedValue);
                break;
            case 'selectedTime':
                setLocalSelectedTime(updatedValue);
                break;
            default:
                break;
        }
        onSettingChange({
            ...config,
            [key]: updatedValue
        });
    };
    // Håndterer klik på opdateringsknappen i settings-panelet
    const handleRefreshFromSettings = () => {
        // Forøg refreshCounter i konfigurationen for at udløse opdatering i widget.tsx
        onSettingChange({
            ...config,
            refreshCounter: (config.refreshCounter || 0) + 1 // Sørg for at starte fra 0 hvis undefined
        });
        console.log("Opdateringsknap klikket i settings. refreshCounter:", (config.refreshCounter || 0) + 1);
    };
    return (
        <div className="widget-setting-dmi-weather p-3" style={{ fontFamily: 'Inter, sans-serif' }}>
            {/* Sektion for Lokation */}
            <div style={{ marginBottom: '15px', border: '1px solid #ddd', borderRadius: '5px', padding: '10px' }}>
                <h4 style={{ marginTop: '0', marginBottom: '10px' }}>Lokation</h4>
                <label htmlFor="stationSelect" style={{ display: 'block', marginBottom: '5px' }}>Vælg station:</label>
                <select
                    id="stationSelect"
                    value={localStationId}
                    onChange={(e) => handleSettingChange('stationId', e.target.value)}
                    style={{ width: '100%', padding: '8px', borderRadius: '4px', border: '1px solid #ccc' }}
                >
                    {stationOptions.map(option => (
                        <option key={option.value} value={option.value}>
                            {option.label}
                        </option>
                    ))}
                </select>
            </div>
            {/* Sektion for Dato og Tidspunkt */}
            <div style={{ border: '1px solid #ddd', borderRadius: '5px', padding: '10px' }}>
                <h4 style={{ marginTop: '0', marginBottom: '10px' }}>Dato og Tidspunkt</h4>
                <div style={{ marginBottom: '10px' }}>
                    <label htmlFor="dateInput" style={{ display: 'block', marginBottom: '5px' }}>Vælg dato:</label>
                    <input
                        id="dateInput"
                        type="date"
                        value={localSelectedDate}
                        onChange={(e) => handleSettingChange('selectedDate', e.target.value)}
                        style={{ width: '100%', padding: '8px', borderRadius: '4px', border: '1px solid #ccc' }}
                    />
                </div>
                <div>
                    <label htmlFor="timeInput" style={{ display: 'block', marginBottom: '5px' }}>Vælg tidspunkt:</label>
                    <input
                        id="timeInput"
                        type="time"
                        value={localSelectedTime}
                        onChange={(e) => handleSettingChange('selectedTime', e.target.value)}
                        style={{ width: '100%', padding: '8px', borderRadius: '4px', border: '1px solid #ccc' }}
                    />
                </div>
            </div>
            {/* Ny Opdateringsknap i settings-panelet */}
            <Button
                onClick={handleRefreshFromSettings}
                style={{
                    marginTop: '20px',
                    backgroundColor: '#007bff',
                    color: 'white',
                    border: 'none',
                    borderRadius: '5px',
                    padding: '10px 20px',
                    cursor: 'pointer',
                    width: '100%' // Gør knappen bred i settings-panelet
                }}
            >
                Opdater data i Widget
            </Button>
        </div>
    );
};
export default Setting;