feat(frontend): Suche und Filter (Modul 14)
/search-Seite über Bienenstände, Völker, Königinnen, Aufgaben und Honigchargen. Filterleisten (Status/Standort) in den Listen-Views für Bienenstände, Völker, Königinnen und Honigchargen.
This commit is contained in:
1 parent
146b56d683
commit
166979ff3c
21 files changed
+314
-28
No files matched your search
@@ -1,8 +1,17 @@
|
||||
import { apiFetch } from "@/lib/auth/api-client";
|
||||
import { Apiary, ApiaryInput } from "./types";
|
||||
import { Apiary, ApiaryInput, ApiaryStatus } from "./types";
|
||||
|
||||
export function fetchApiaries(): Promise<Apiary[]> {
|
||||
return apiFetch<Apiary[]>("/apiaries");
|
||||
export interface ApiaryFilter {
|
||||
status?: ApiaryStatus;
|
||||
location?: string;
|
||||
}
|
||||
|
||||
export function fetchApiaries(filter: ApiaryFilter = {}): Promise<Apiary[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (filter.status) params.set("status", filter.status);
|
||||
if (filter.location) params.set("location", filter.location);
|
||||
const query = params.toString();
|
||||
return apiFetch<Apiary[]>(`/apiaries${query ? `?${query}` : ""}`);
|
||||
}
|
||||
|
||||
export function fetchApiary(id: string): Promise<Apiary> {
|
||||
|
||||
@@ -2,6 +2,7 @@ import { apiFetch } from "@/lib/auth/api-client";
|
||||
import {
|
||||
Colony,
|
||||
ColonyHistory,
|
||||
ColonyStatus,
|
||||
CreateColonyInput,
|
||||
MergeColonyInput,
|
||||
MoveColonyInput,
|
||||
@@ -9,8 +10,17 @@ import {
|
||||
UpdateColonyInput,
|
||||
} from "./types";
|
||||
|
||||
export function fetchColonies(): Promise<Colony[]> {
|
||||
return apiFetch<Colony[]>("/colonies");
|
||||
export interface ColonyFilter {
|
||||
status?: ColonyStatus;
|
||||
apiaryId?: string;
|
||||
}
|
||||
|
||||
export function fetchColonies(filter: ColonyFilter = {}): Promise<Colony[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (filter.status) params.set("status", filter.status);
|
||||
if (filter.apiaryId) params.set("apiaryId", filter.apiaryId);
|
||||
const query = params.toString();
|
||||
return apiFetch<Colony[]>(`/colonies${query ? `?${query}` : ""}`);
|
||||
}
|
||||
|
||||
export function fetchColony(id: string): Promise<Colony> {
|
||||
|
||||
@@ -3,11 +3,19 @@ import {
|
||||
CreateHoneyBatchInput,
|
||||
CreateHoneyMeasurementInput,
|
||||
HoneyBatch,
|
||||
HoneyBatchStatus,
|
||||
Traceability,
|
||||
} from "./types";
|
||||
|
||||
export function fetchHoneyBatches(): Promise<HoneyBatch[]> {
|
||||
return apiFetch<HoneyBatch[]>("/honey-batches");
|
||||
export interface HoneyBatchFilter {
|
||||
status?: HoneyBatchStatus;
|
||||
}
|
||||
|
||||
export function fetchHoneyBatches(filter: HoneyBatchFilter = {}): Promise<HoneyBatch[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (filter.status) params.set("status", filter.status);
|
||||
const query = params.toString();
|
||||
return apiFetch<HoneyBatch[]>(`/honey-batches${query ? `?${query}` : ""}`);
|
||||
}
|
||||
|
||||
export function fetchHoneyBatch(id: string): Promise<HoneyBatch> {
|
||||
|
||||
@@ -4,11 +4,19 @@ import {
|
||||
CreateQueenInput,
|
||||
Queen,
|
||||
QueenColonyHistoryEntry,
|
||||
QueenStatus,
|
||||
UpdateQueenInput,
|
||||
} from "./types";
|
||||
|
||||
export function fetchQueens(): Promise<Queen[]> {
|
||||
return apiFetch<Queen[]>("/queens");
|
||||
export interface QueenFilter {
|
||||
status?: QueenStatus;
|
||||
}
|
||||
|
||||
export function fetchQueens(filter: QueenFilter = {}): Promise<Queen[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (filter.status) params.set("status", filter.status);
|
||||
const query = params.toString();
|
||||
return apiFetch<Queen[]>(`/queens${query ? `?${query}` : ""}`);
|
||||
}
|
||||
|
||||
export function fetchQueen(id: string): Promise<Queen> {
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
import { apiFetch } from "@/lib/auth/api-client";
|
||||
import { SearchResult } from "./types";
|
||||
|
||||
export function search(q: string): Promise<SearchResult[]> {
|
||||
return apiFetch<SearchResult[]>(`/search?q=${encodeURIComponent(q)}`);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
export type SearchResultType = "Apiary" | "Colony" | "Queen" | "Task" | "HoneyBatch";
|
||||
|
||||
export interface SearchResult {
|
||||
type: SearchResultType;
|
||||
id: string;
|
||||
label: string;
|
||||
}
|
||||
Reference in new issue
Block a user