@@ -26,6 +26,7 @@ interface WeeklyEventConfig {
2626 weekday : number ;
2727 weeksOn : number ;
2828 weeksOff : number ;
29+ skipInterval : number ;
2930 startDate : string ;
3031 airports ?: string [ ] ;
3132 startTime ?: string ;
@@ -48,6 +49,7 @@ interface FormData {
4849 weekday : number ;
4950 weeksOn : number ;
5051 weeksOff : number ;
52+ skipInterval : number ;
5153 startDate : string ;
5254 airports : string [ ] ;
5355 airportInput : string ;
@@ -96,6 +98,7 @@ export default function AdminWeeklyForm({ config, firs }: Props) {
9698 weekday : 1 ,
9799 weeksOn : 1 ,
98100 weeksOff : 0 ,
101+ skipInterval : 0 ,
99102 startDate : new Date ( ) . toISOString ( ) . split ( "T" ) [ 0 ] ,
100103 airports : [ ] ,
101104 airportInput : "" ,
@@ -127,6 +130,7 @@ export default function AdminWeeklyForm({ config, firs }: Props) {
127130 weekday : config . weekday ,
128131 weeksOn : config . weeksOn ,
129132 weeksOff : config . weeksOff ,
133+ skipInterval : config . skipInterval ?? 0 ,
130134 startDate : config . startDate . split ( "T" ) [ 0 ] ,
131135 airports,
132136 airportInput : "" ,
@@ -266,6 +270,7 @@ export default function AdminWeeklyForm({ config, firs }: Props) {
266270 weekday : formData . weekday ,
267271 weeksOn : formData . weeksOn ,
268272 weeksOff : formData . weeksOff ,
273+ skipInterval : formData . skipInterval ,
269274 startDate : new Date ( formData . startDate ) . toISOString ( ) ,
270275 airports : formData . airports . length > 0 ? formData . airports : null ,
271276 startTime : formData . startTime || null ,
@@ -380,7 +385,7 @@ export default function AdminWeeklyForm({ config, firs }: Props) {
380385 setActiveTab ( v ) ;
381386 if ( v === "managers" && isEdit ) loadManagers ( ) ;
382387 } } className = "w-full" >
383- < TabsList className = { `grid w-full ${ isEdit && formData . requiresRoster ? 'grid-cols-4' : isEdit ? 'grid-cols-3' : formData . requiresRoster ? 'grid-cols-3' : 'grid-cols-2' } ` } >
388+ < TabsList className = { `grid w-full ${ isEdit && formData . requiresRoster ? 'grid-cols-4' : formData . requiresRoster ? 'grid-cols-3' : 'grid-cols-2' } ` } >
384389 < TabsTrigger value = "basic" > Grunddaten</ TabsTrigger >
385390 < TabsTrigger value = "schedule" > Zeitplan</ TabsTrigger >
386391 { formData . requiresRoster && (
@@ -650,6 +655,25 @@ export default function AdminWeeklyForm({ config, firs }: Props) {
650655 </ p >
651656 </ div >
652657 </ div >
658+
659+ < div className = "space-y-2" >
660+ < Label htmlFor = "skipInterval" > Regelmäßige Aussetzer (optional)</ Label >
661+ < Input
662+ id = "skipInterval"
663+ type = "number"
664+ min = "0"
665+ value = { formData . skipInterval }
666+ onChange = { ( e ) =>
667+ setFormData ( {
668+ ...formData ,
669+ skipInterval : parseInt ( e . target . value ) || 0 ,
670+ } )
671+ }
672+ />
673+ < p className = "text-xs text-muted-foreground" >
674+ 0 = deaktiviert. Bei z.B. 3 wird jedes 3. Vorkommen übersprungen (nützlich für regelmäßige Pausen alle N Termine).
675+ </ p >
676+ </ div >
653677 </ CardContent >
654678 </ Card >
655679 </ TabsContent >
0 commit comments