110 lines
2.0 KiB
TypeScript
110 lines
2.0 KiB
TypeScript
export interface Zone {
|
|
id: number;
|
|
name: string;
|
|
imagePath?: string;
|
|
lastMowedDate?: string;
|
|
intervalDays?: number;
|
|
nextMowDate?: string;
|
|
scheduleType: 'interval' | 'specific';
|
|
area: number;
|
|
createdAt: string;
|
|
daysSinceLastMow?: number;
|
|
daysUntilNext?: number;
|
|
status: 'ok' | 'due' | 'overdue' | 'new';
|
|
isOverdue: boolean;
|
|
isDueToday: boolean;
|
|
isNew: boolean;
|
|
}
|
|
|
|
export interface ZoneFormData {
|
|
name: string;
|
|
intervalDays?: number;
|
|
lastMowedDate?: string;
|
|
nextMowDate?: string;
|
|
scheduleType: 'interval' | 'specific';
|
|
area: number;
|
|
image?: File;
|
|
}
|
|
|
|
export interface Mower {
|
|
id: number;
|
|
name: string;
|
|
type: string;
|
|
brand?: string;
|
|
model?: string;
|
|
isActive: boolean;
|
|
createdAt: string;
|
|
}
|
|
|
|
export interface MowerFormData {
|
|
name: string;
|
|
type: string;
|
|
brand?: string;
|
|
model?: string;
|
|
}
|
|
|
|
export interface MowingHistory {
|
|
id: number;
|
|
zoneId: number;
|
|
zoneName: string;
|
|
zoneArea: number;
|
|
mowerId?: number;
|
|
mowerName?: string;
|
|
mowerType?: string;
|
|
mowedDate: string;
|
|
notes?: string;
|
|
sessionId?: string;
|
|
duration?: number; // in minutes
|
|
weather?: string;
|
|
createdAt: string;
|
|
}
|
|
|
|
export interface MowingHistoryResponse {
|
|
data: MowingHistory[];
|
|
pagination: {
|
|
total: number;
|
|
currentPage: number;
|
|
totalPages: number;
|
|
hasNextPage: boolean;
|
|
hasPrevPage: boolean;
|
|
limit: number;
|
|
offset: number;
|
|
};
|
|
}
|
|
|
|
export interface MowingStats {
|
|
period: number;
|
|
totalSessions: number;
|
|
totalMinutes: number;
|
|
totalArea: number;
|
|
mostActiveZone: {
|
|
name: string;
|
|
sessions: number;
|
|
} | null;
|
|
mostUsedMower: {
|
|
name: string;
|
|
type: string;
|
|
sessions: number;
|
|
} | null;
|
|
dailyActivity: {
|
|
date: string;
|
|
sessions: number;
|
|
duration: number;
|
|
area: number;
|
|
}[];
|
|
}
|
|
|
|
export interface MowingFormData {
|
|
notes?: string;
|
|
duration?: number;
|
|
weather?: string;
|
|
mowerId?: number;
|
|
}
|
|
|
|
export interface BulkMowingFormData {
|
|
selectedZoneIds: number[];
|
|
notes?: string;
|
|
totalDuration?: number;
|
|
weather?: string;
|
|
mowerId?: number;
|
|
} |