analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
196 lines • 5.12 kB
TypeScript
/**
* Activities History Type Definitions
* Types and interfaces for activities history and models functionality
* Based on /activities/history and /activity-drafts endpoints
*/
import { GenericApiStatus, GenericDisplayStatus, BadgeActionType } from './common';
/**
* Activity status from backend API /activities/history
* Re-exported from common for backward compatibility
*/
export { GenericApiStatus as ActivityApiStatus } from './common';
/**
* Activity status for display in UI (Badge component)
* Re-exported from common for backward compatibility
*/
export { GenericDisplayStatus as ActivityDisplayStatus } from './common';
/**
* Badge action types for activity status visualization
* Re-exported from common for backward compatibility
*/
export { BadgeActionType as ActivityBadgeActionType } from './common';
/**
* Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE)
*/
export declare enum ActivityDraftType {
MODELO = "MODELO",
RASCUNHO = "RASCUNHO"
}
/**
* Activity history response from backend API /activities/history
*/
export interface ActivityHistoryResponse {
id: string;
title: string;
startDate: string | null;
finalDate: string | null;
status: GenericApiStatus;
completionPercentage: number;
subjectId?: string | null;
schoolId?: string;
schoolName?: string;
year?: string;
className?: string;
subjectName?: string;
}
/**
* Activity table item interface for activities list table
*/
export interface ActivityTableItem extends Record<string, unknown> {
id: string;
startDate: string | null;
deadline: string | null;
title: string;
school: string;
year: string;
subject: string;
class: string;
status: GenericDisplayStatus;
completionPercentage: number;
}
/**
* Pagination info from API
*/
export interface ActivityPagination {
total: number;
page: number;
limit: number;
totalPages: number;
}
/**
* Activities history API complete response
*/
export interface ActivitiesHistoryApiResponse {
message: string;
data: {
activities: ActivityHistoryResponse[];
pagination: ActivityPagination;
};
}
/**
* Activity history filters for API query parameters
*/
export interface ActivityHistoryFilters {
page?: number;
limit?: number;
status?: GenericApiStatus;
search?: string;
startDate?: string;
finalDate?: string;
subjectId?: string;
schoolId?: string;
sortBy?: 'finalDate' | 'title' | 'completionPercentage';
sortOrder?: 'asc' | 'desc';
}
/**
* Activity draft filters object from backend
*/
export interface ActivityDraftFilters {
questionTypes?: string[];
questionBanks?: string[];
subjects?: string[];
topics?: string[];
subtopics?: string[];
contents?: string[];
}
/**
* Activity model response from backend API (/activity-drafts)
*/
export interface ActivityModelResponse {
id: string;
type: ActivityDraftType;
title: string | null;
creatorUserInstitutionId: string | null;
subjectId: string | null;
filters: ActivityDraftFilters | null;
createdAt: string;
updatedAt: string;
}
/**
* Activity model table item for display
*/
export interface ActivityModelTableItem extends Record<string, unknown> {
id: string;
title: string;
savedAt: string;
subject: string;
subjectId: string | null;
}
/**
* Activity models API response
*/
export interface ActivityModelsApiResponse {
message: string;
data: {
activityDrafts: ActivityModelResponse[];
total: number;
};
}
/**
* Activity model filters for API query
*/
export interface ActivityModelFilters {
page?: number;
limit?: number;
search?: string;
subjectId?: string;
type?: ActivityDraftType;
}
/**
* Filter option for dropdowns
* Extends with index signature to be compatible with CheckBoxGroup Item type
*/
export interface ActivityFilterOption {
id: string;
name: string;
[key: string]: unknown;
}
/**
* User data for filter options (schools, classes, subjects)
*/
export interface ActivityUserFilterData {
schools?: Array<{
id: string;
name: string;
}>;
classes?: Array<{
id: string;
name: string;
schoolId?: string;
}>;
subjects?: Array<{
id: string;
name: string;
}>;
schoolYears?: Array<{
id: string;
name: string;
}>;
}
/**
* Get status badge action based on activity display status
* @param status - Activity display status
* @returns Badge action type for styling
*/
export declare const getActivityStatusBadgeAction: (status: GenericDisplayStatus) => BadgeActionType;
/**
* Activity status options for filter
*/
export declare const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[];
/**
* Map API status to display status
* @param apiStatus - Status from backend API
* @returns Formatted status for UI display
*/
export declare const mapActivityStatusToDisplay: (apiStatus: GenericApiStatus) => GenericDisplayStatus;
//# sourceMappingURL=activitiesHistory.d.ts.map