60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { fetchJson } from '../../auth/api-client';
|
|
import type {
|
|
HydrogenKpi, HydrogenStationTop, HydrogenRegionShare, HydrogenMonthlyPoint, HydrogenDailyRow,
|
|
HydrogenCustomerRow, HydrogenStationFull,
|
|
ElectricKpi, ElectricDailyRow, ElectricMonthGroup,
|
|
CustomerType, DateQuickPick,
|
|
} from './types';
|
|
|
|
const BASE = '/api/energy';
|
|
|
|
export interface HydrogenOverviewResponse {
|
|
kpi: HydrogenKpi;
|
|
top5: HydrogenStationTop[];
|
|
regions: HydrogenRegionShare[];
|
|
monthly: HydrogenMonthlyPoint[];
|
|
customers: HydrogenCustomerRow[];
|
|
stations: HydrogenStationFull[];
|
|
availableYears: number[];
|
|
year: number;
|
|
}
|
|
|
|
export function fetchHydrogenOverview(year?: number, force = false): Promise<HydrogenOverviewResponse> {
|
|
const params = new URLSearchParams();
|
|
if (year) params.set('year', String(year));
|
|
if (force) params.set('force', '1');
|
|
const q = params.toString();
|
|
return fetchJson<HydrogenOverviewResponse>(`${BASE}/hydrogen/overview${q ? `?${q}` : ''}`);
|
|
}
|
|
|
|
export interface HydrogenDailyQuery {
|
|
range?: DateQuickPick;
|
|
startDate?: string;
|
|
endDate?: string;
|
|
}
|
|
|
|
export function fetchHydrogenDaily(query: HydrogenDailyQuery, customer: CustomerType): Promise<HydrogenDailyRow[]> {
|
|
const q = new URLSearchParams({ customer });
|
|
if (query.range) q.set('range', query.range);
|
|
if (query.startDate) q.set('startDate', query.startDate);
|
|
if (query.endDate) q.set('endDate', query.endDate);
|
|
return fetchJson<HydrogenDailyRow[]>(`${BASE}/hydrogen/daily?${q.toString()}`);
|
|
}
|
|
|
|
export interface ElectricOverviewResponse {
|
|
kpi: ElectricKpi;
|
|
trend: ElectricDailyRow[];
|
|
}
|
|
|
|
export function fetchElectricOverview(): Promise<ElectricOverviewResponse> {
|
|
return fetchJson<ElectricOverviewResponse>(`${BASE}/electric/overview`);
|
|
}
|
|
|
|
export function fetchElectricMonthly(customer: CustomerType, query: HydrogenDailyQuery = { range: 'last15' }): Promise<ElectricMonthGroup[]> {
|
|
const q = new URLSearchParams({ customer });
|
|
if (query.range) q.set('range', query.range);
|
|
if (query.startDate) q.set('startDate', query.startDate);
|
|
if (query.endDate) q.set('endDate', query.endDate);
|
|
return fetchJson<ElectricMonthGroup[]>(`${BASE}/electric/monthly?${q.toString()}`);
|
|
}
|