@ministryofjustice/hmpps-digital-prison-reporting-frontend
Version:
The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.
95 lines (91 loc) • 3.01 kB
TypeScript
import { ChildReportExecutionData } from './ExecutionData.d.js';
import { QuerySummaryItem } from '../components/_async/request-details/types.d.js';
import Dict = NodeJS.Dict;
interface StoredReportData {
reportId: string;
variantId?: string | undefined;
id: string;
executionId?: string | undefined;
tableId?: string | undefined;
reportName: string;
variantName?: string | undefined;
name: string;
description: string;
schedule?: string | undefined;
status?: RequestStatus | undefined;
timestamp: AsyncReportsTimestamp;
dataProductDefinitionsPath?: string | undefined;
dpdPathFromQuery?: boolean | undefined;
query?: AsyncReportQueryData | undefined;
interactiveQuery?: AsyncReportQueryData | undefined;
url?: AsyncReportUrlData | undefined;
type: ReportType;
loadType?: LoadType | undefined;
childExecutionData?: Array<ChildReportExecutionData> | undefined;
}
interface RequestedReport extends StoredReportData {
errorMessage?: string | undefined;
filters?: ParamsConfig | undefined;
sortBy?: ParamsConfig | undefined;
}
interface RequestedDashboard extends StoredReportData {
metrics: {
name: string;
}[];
}
type RecentlyViewedReport = StoredReportData;
type SubscribedReport = StoredReportData;
type UserReportData = RequestedReport | RecentlyViewedReport | StoredReportData | RequestedDashboard | SubscribedReport;
interface AsyncReportUrlData {
origin: string;
request?: AsyncReportUrlItemData | undefined;
report?: AsyncReportUrlItemData | undefined;
polling?: AsyncReportUrlItemData | undefined;
}
interface AsyncReportUrlItemData {
pathname?: string | undefined;
fullUrl?: string | undefined;
search?: string | undefined;
default?: string | undefined;
}
interface AsyncReportQueryData {
data: Dict<string | string[]>;
summary: QuerySummaryItem[];
}
interface ParamsConfig {
data: Dict<string>;
queryString: string;
}
declare enum RequestStatus {
SUBMITTED = "SUBMITTED",
STARTED = "STARTED",
PICKED = "PICKED",
FINISHED = "FINISHED",
FAILED = "FAILED",
ABORTED = "ABORTED",
EXPIRED = "EXPIRED",
READY = "READY",
ALL = "ALL"
}
declare enum ReportType {
REPORT = "report",
DASHBOARD = "dashboard",
UNAVAILABLE = "unavailable"
}
interface AsyncReportsTimestamp {
lastViewed?: Date | undefined;
requested?: Date | undefined;
completed?: Date | undefined;
expired?: Date | undefined;
failed?: Date | undefined;
retried?: Date | undefined;
aborted?: Date | undefined;
refresh?: Date | undefined;
}
declare enum LoadType {
SYNC = "sync",
ASYNC = "async",
SCHEDULED = "scheduled"
}
export { LoadType, ReportType, RequestStatus };
export type { AsyncReportQueryData, AsyncReportUrlData, AsyncReportUrlItemData, AsyncReportsTimestamp, ParamsConfig, RecentlyViewedReport, RequestedDashboard, RequestedReport, StoredReportData, SubscribedReport, UserReportData };