/** @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;