analytica-frontend-lib 1.5.21 → 1.5.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ActivitiesHistory/index.js +7 -7
- package/dist/ActivitiesHistory/index.mjs +6 -6
- package/dist/ActivityCardQuestionBanks/index.js +7 -7
- package/dist/ActivityCardQuestionBanks/index.mjs +6 -6
- package/dist/ActivityCardQuestionPreview/index.js +7 -7
- package/dist/ActivityCardQuestionPreview/index.mjs +6 -6
- package/dist/ActivityCreate/index.js +7 -7
- package/dist/ActivityCreate/index.mjs +6 -6
- package/dist/ActivityDetails/index.js +7 -7
- package/dist/ActivityDetails/index.mjs +6 -6
- package/dist/ActivityFilters/index.js +7 -7
- package/dist/ActivityFilters/index.mjs +6 -6
- package/dist/ActivityPageLayout/index.js +7 -7
- package/dist/ActivityPageLayout/index.mjs +6 -6
- package/dist/ActivityPreview/index.js +7 -7
- package/dist/ActivityPreview/index.mjs +6 -6
- package/dist/AlertManager/index.js +7 -7
- package/dist/AlertManager/index.mjs +6 -6
- package/dist/CheckBoxGroup/index.js +7 -7
- package/dist/CheckBoxGroup/index.mjs +6 -6
- package/dist/ExamDetailsLayout/ExamDetailsPage/index.js +7 -7
- package/dist/ExamDetailsLayout/ExamDetailsPage/index.mjs +6 -6
- package/dist/ExamPageLayout/index.js +7 -7
- package/dist/ExamPageLayout/index.mjs +6 -6
- package/dist/PrintableUsersTable/index.js +7 -7
- package/dist/PrintableUsersTable/index.mjs +6 -6
- package/dist/RecommendedLessonCreate/index.js +7 -7
- package/dist/RecommendedLessonCreate/index.mjs +6 -6
- package/dist/RecommendedLessonsHistory/index.js +7 -7
- package/dist/RecommendedLessonsHistory/index.mjs +6 -6
- package/dist/SendActivityModal/SendActivityModal.js +7 -7
- package/dist/SendActivityModal/SendActivityModal.mjs +6 -6
- package/dist/SendActivityModal/index.js +7 -7
- package/dist/SendActivityModal/index.mjs +6 -6
- package/dist/SendLessonModal/index.js +7 -7
- package/dist/SendLessonModal/index.mjs +6 -6
- package/dist/SimulatedPerformance/SimulatedPerformanceView/index.js +7 -7
- package/dist/SimulatedPerformance/SimulatedPerformanceView/index.mjs +6 -6
- package/dist/SimulationsPage/index.js +7 -7
- package/dist/SimulationsPage/index.mjs +6 -6
- package/dist/TableProvider/index.d.ts.map +1 -1
- package/dist/TableProvider/index.js +7 -7
- package/dist/TableProvider/index.mjs +6 -6
- package/dist/TimeReport/index.d.ts +6 -0
- package/dist/TimeReport/index.d.ts.map +1 -1
- package/dist/TimeReport/index.js +2 -2
- package/dist/TimeReport/index.mjs +1 -1
- package/dist/TypeSelector/TypeSelector.types/index.js +3 -3
- package/dist/TypeSelector/TypeSelector.types/index.mjs +2 -2
- package/dist/TypeSelector/index.js +4 -4
- package/dist/TypeSelector/index.mjs +3 -3
- package/dist/UnifiedDraftModelPage/index.js +7 -7
- package/dist/UnifiedDraftModelPage/index.mjs +6 -6
- package/dist/UnifiedHistoryPage/index.js +7 -7
- package/dist/UnifiedHistoryPage/index.mjs +6 -6
- package/dist/{chunk-CTRJ2BZP.mjs → chunk-3SHJQQCA.mjs} +2 -2
- package/dist/{chunk-ZSLJ6ZRR.mjs → chunk-BMJTQFRE.mjs} +59 -11
- package/dist/chunk-BMJTQFRE.mjs.map +1 -0
- package/dist/{chunk-ZHMW7GGL.js → chunk-CG7GWF5E.js} +60 -12
- package/dist/chunk-CG7GWF5E.js.map +1 -0
- package/dist/{chunk-CJ7XFBTY.mjs → chunk-DJG7DLCI.mjs} +1 -1
- package/dist/chunk-DJG7DLCI.mjs.map +1 -0
- package/dist/{chunk-ACKFNDCN.js → chunk-E4AWPRUB.js} +11 -2
- package/dist/chunk-E4AWPRUB.js.map +1 -0
- package/dist/{chunk-64NVMQCE.js → chunk-HLCT4MJA.js} +3 -3
- package/dist/{chunk-64NVMQCE.js.map → chunk-HLCT4MJA.js.map} +1 -1
- package/dist/{chunk-RDQN3TL4.js → chunk-KYHVFLN4.js} +3 -3
- package/dist/{chunk-RDQN3TL4.js.map → chunk-KYHVFLN4.js.map} +1 -1
- package/dist/{chunk-FF664NEZ.mjs → chunk-N26JL24O.mjs} +2 -2
- package/dist/{chunk-WUMJ2OIE.mjs → chunk-NTEW5ZW4.mjs} +23 -6
- package/dist/chunk-NTEW5ZW4.mjs.map +1 -0
- package/dist/{chunk-5H627GRH.mjs → chunk-QD6QSDVH.mjs} +11 -2
- package/dist/chunk-QD6QSDVH.mjs.map +1 -0
- package/dist/{chunk-CQ6FNWAU.js → chunk-TTSTAOIZ.js} +1 -1
- package/dist/chunk-TTSTAOIZ.js.map +1 -0
- package/dist/{chunk-4TROUHWW.js → chunk-YFNVFELP.js} +192 -175
- package/dist/chunk-YFNVFELP.js.map +1 -0
- package/dist/hooks/useActivitiesHistory/index.d.ts +12 -0
- package/dist/hooks/useActivitiesHistory/index.d.ts.map +1 -1
- package/dist/hooks/useActivitiesHistory/index.js +4 -2
- package/dist/hooks/useActivitiesHistory/index.js.map +1 -1
- package/dist/hooks/useActivitiesHistory/index.mjs +3 -1
- package/dist/hooks/useActivitiesHistory.d.ts +12 -0
- package/dist/hooks/useActivitiesHistory.d.ts.map +1 -1
- package/dist/hooks/useActivityDrafts/index.js +1 -1
- package/dist/hooks/useActivityDrafts/index.mjs +1 -1
- package/dist/hooks/useActivityModels/index.js +1 -1
- package/dist/hooks/useActivityModels/index.mjs +1 -1
- package/dist/hooks/useAppContent/index.js +7 -7
- package/dist/hooks/useAppContent/index.mjs +6 -6
- package/dist/index.js +7 -7
- package/dist/index.mjs +6 -6
- package/dist/types/activitiesHistory/index.d.ts +8 -3
- package/dist/types/activitiesHistory/index.d.ts.map +1 -1
- package/dist/types/activitiesHistory/index.js +2 -2
- package/dist/types/activitiesHistory/index.mjs +1 -1
- package/dist/types/activitiesHistory.d.ts +8 -3
- package/dist/types/activitiesHistory.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-4TROUHWW.js.map +0 -1
- package/dist/chunk-5H627GRH.mjs.map +0 -1
- package/dist/chunk-ACKFNDCN.js.map +0 -1
- package/dist/chunk-CJ7XFBTY.mjs.map +0 -1
- package/dist/chunk-CQ6FNWAU.js.map +0 -1
- package/dist/chunk-WUMJ2OIE.mjs.map +0 -1
- package/dist/chunk-ZHMW7GGL.js.map +0 -1
- package/dist/chunk-ZSLJ6ZRR.mjs.map +0 -1
- /package/dist/{chunk-CTRJ2BZP.mjs.map → chunk-3SHJQQCA.mjs.map} +0 -0
- /package/dist/{chunk-FF664NEZ.mjs.map → chunk-N26JL24O.mjs.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-ZHMW7GGL.js","../src/hooks/useActivitiesHistory.ts"],"names":[],"mappings":"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","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-ZHMW7GGL.js","sourcesContent":[null,"import { useState, useCallback } from 'react';\nimport dayjs from 'dayjs';\nimport type { BaseApiClient } from '../types/api';\nimport { mapApiStatusToDisplay } from '../types/common';\nimport type {\n ActivityHistoryResponse,\n ActivityTableItem,\n ActivitiesHistoryApiResponse,\n ActivityHistoryFilters,\n ActivityPagination,\n ActivityFilterOption,\n} from '../types/activitiesHistory';\nimport {\n mergeFilterOptions,\n extractBreakdownFilterOptions,\n} from '../utils/filterHelpers';\n\n/**\n * Options for configuring the useActivitiesHistory hook\n */\nexport interface UseActivitiesHistoryOptions {\n /** Filter by activity category (PROVA, ATIVIDADE, etc.) */\n activityCategory?: 'PROVA' | 'ATIVIDADE';\n}\n\n/**\n * API filter options extracted from response\n */\nexport interface ActivityApiFilterOptions {\n schools: ActivityFilterOption[];\n classes: ActivityFilterOption[];\n subjects: ActivityFilterOption[];\n schoolYears: ActivityFilterOption[];\n}\n\n/**\n * Hook state interface\n */\nexport interface UseActivitiesHistoryState {\n activities: ActivityTableItem[];\n loading: boolean;\n error: string | null;\n pagination: ActivityPagination;\n apiFilterOptions: ActivityApiFilterOptions;\n}\n\n/**\n * Hook return type\n */\nexport interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {\n fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;\n}\n\n/**\n * Default pagination values\n */\nexport const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination = {\n total: 0,\n page: 1,\n limit: 10,\n totalPages: 0,\n};\n\n/**\n * Default API filter options\n */\nexport const DEFAULT_ACTIVITY_FILTER_OPTIONS: ActivityApiFilterOptions = {\n schools: [],\n classes: [],\n subjects: [],\n schoolYears: [],\n};\n\n/**\n * Transform API response to table item format\n * @param activity - Activity from API response\n * @returns Formatted activity for table display\n */\nexport const transformActivityToTableItem = (\n activity: ActivityHistoryResponse\n): ActivityTableItem => {\n const firstBreakdown = activity.breakdown?.[0];\n return {\n id: activity.id,\n startDate: activity.startDate\n ? dayjs(activity.startDate).format('DD/MM')\n : '-',\n deadline: activity.finalDate\n ? dayjs(activity.finalDate).format('DD/MM')\n : '-',\n creator: activity.creator?.name?.trim() ? activity.creator.name : '-',\n creatorId: activity.creator?.id ?? null,\n title: activity.title,\n school: firstBreakdown?.school?.name ?? '-',\n year: firstBreakdown?.schoolYear?.name ?? '-',\n subject: activity.subject?.name ?? '-',\n class: firstBreakdown?.class?.name ?? '-',\n status: mapApiStatusToDisplay(activity.status),\n completionPercentage: activity.completionPercentage,\n };\n};\n\n/**\n * Extract unique filter options from activities API response.\n * Delegates to the shared extractBreakdownFilterOptions helper.\n */\nexport const extractActivityFilterOptions = (\n activities: ActivityHistoryResponse[]\n): ActivityApiFilterOptions => extractBreakdownFilterOptions(activities);\n\n/**\n * Build query params from filters\n * @param filters - User filters\n * @param activityCategory - Optional activity category filter\n * @returns Query params object\n */\nconst buildQueryParams = (\n filters?: ActivityHistoryFilters,\n activityCategory?: string\n): Record<string, unknown> => {\n const params: Record<string, unknown> = {};\n\n // Add activityCategory filter (type param for /activities/history)\n if (activityCategory) {\n params.type = activityCategory;\n }\n\n if (filters) {\n for (const key in filters) {\n const value = filters[key as keyof ActivityHistoryFilters];\n if (value !== undefined && value !== null) {\n params[key] = value;\n }\n }\n }\n\n return params;\n};\n\n/**\n * Hook implementation\n */\nconst useActivitiesHistoryImpl = (\n apiClient: BaseApiClient,\n options?: UseActivitiesHistoryOptions\n): UseActivitiesHistoryReturn => {\n const [state, setState] = useState<UseActivitiesHistoryState>({\n activities: [],\n loading: false,\n error: null,\n pagination: DEFAULT_ACTIVITIES_PAGINATION,\n apiFilterOptions: DEFAULT_ACTIVITY_FILTER_OPTIONS,\n });\n\n const fetchActivities = useCallback(\n async (filters?: ActivityHistoryFilters) => {\n setState((prev) => ({ ...prev, loading: true, error: null }));\n\n try {\n const params = buildQueryParams(filters, options?.activityCategory);\n const response = await apiClient.get<ActivitiesHistoryApiResponse>(\n '/activities/history',\n { params }\n );\n\n const { data } = response.data;\n\n const tableItems = data.activities.map(transformActivityToTableItem);\n const extracted = extractActivityFilterOptions(data.activities);\n\n setState((prev) => ({\n activities: tableItems,\n loading: false,\n error: null,\n pagination: data.pagination,\n apiFilterOptions: {\n schools: mergeFilterOptions(\n prev.apiFilterOptions.schools,\n extracted.schools\n ),\n classes: mergeFilterOptions(\n prev.apiFilterOptions.classes,\n extracted.classes\n ),\n subjects: mergeFilterOptions(\n prev.apiFilterOptions.subjects,\n extracted.subjects\n ),\n schoolYears: mergeFilterOptions(\n prev.apiFilterOptions.schoolYears,\n extracted.schoolYears\n ),\n },\n }));\n } catch (error) {\n console.error('Erro ao carregar histórico:', error);\n setState((prev) => ({\n ...prev,\n loading: false,\n error: 'Erro ao carregar histórico de atividades',\n }));\n }\n },\n [apiClient, options?.activityCategory]\n );\n\n return { ...state, fetchActivities };\n};\n\n/**\n * Factory function to create useActivitiesHistory hook\n *\n * @param apiClient - API client instance (axios, fetch wrapper, etc.)\n * @param options - Hook configuration options\n * @returns Hook for managing activities history\n *\n * @example\n * ```tsx\n * import { createUseActivitiesHistory } from 'analytica-frontend-lib';\n * import api from '@/services/apiService';\n *\n * const useActivitiesHistory = createUseActivitiesHistory(api, { activityCategory: 'ATIVIDADE' });\n *\n * // In your component\n * const { activities, loading, fetchActivities, apiFilterOptions } = useActivitiesHistory();\n * ```\n */\nexport const createUseActivitiesHistory = (\n apiClient: BaseApiClient,\n options?: UseActivitiesHistoryOptions\n) => {\n return (): UseActivitiesHistoryReturn =>\n useActivitiesHistoryImpl(apiClient, options);\n};\n\n/**\n * Alias for createUseActivitiesHistory\n */\nexport const createActivitiesHistoryHook = createUseActivitiesHistory;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/useActivitiesHistory.ts"],"sourcesContent":["import { useState, useCallback } from 'react';\nimport dayjs from 'dayjs';\nimport type { BaseApiClient } from '../types/api';\nimport { mapApiStatusToDisplay } from '../types/common';\nimport type {\n ActivityHistoryResponse,\n ActivityTableItem,\n ActivitiesHistoryApiResponse,\n ActivityHistoryFilters,\n ActivityPagination,\n ActivityFilterOption,\n} from '../types/activitiesHistory';\nimport {\n mergeFilterOptions,\n extractBreakdownFilterOptions,\n} from '../utils/filterHelpers';\n\n/**\n * Options for configuring the useActivitiesHistory hook\n */\nexport interface UseActivitiesHistoryOptions {\n /** Filter by activity category (PROVA, ATIVIDADE, etc.) */\n activityCategory?: 'PROVA' | 'ATIVIDADE';\n}\n\n/**\n * API filter options extracted from response\n */\nexport interface ActivityApiFilterOptions {\n schools: ActivityFilterOption[];\n classes: ActivityFilterOption[];\n subjects: ActivityFilterOption[];\n schoolYears: ActivityFilterOption[];\n}\n\n/**\n * Hook state interface\n */\nexport interface UseActivitiesHistoryState {\n activities: ActivityTableItem[];\n loading: boolean;\n error: string | null;\n pagination: ActivityPagination;\n apiFilterOptions: ActivityApiFilterOptions;\n}\n\n/**\n * Hook return type\n */\nexport interface UseActivitiesHistoryReturn extends UseActivitiesHistoryState {\n fetchActivities: (filters?: ActivityHistoryFilters) => Promise<void>;\n}\n\n/**\n * Default pagination values\n */\nexport const DEFAULT_ACTIVITIES_PAGINATION: ActivityPagination = {\n total: 0,\n page: 1,\n limit: 10,\n totalPages: 0,\n};\n\n/**\n * Default API filter options\n */\nexport const DEFAULT_ACTIVITY_FILTER_OPTIONS: ActivityApiFilterOptions = {\n schools: [],\n classes: [],\n subjects: [],\n schoolYears: [],\n};\n\n/**\n * Transform API response to table item format\n * @param activity - Activity from API response\n * @returns Formatted activity for table display\n */\nexport const transformActivityToTableItem = (\n activity: ActivityHistoryResponse\n): ActivityTableItem => {\n const firstBreakdown = activity.breakdown?.[0];\n return {\n id: activity.id,\n startDate: activity.startDate\n ? dayjs(activity.startDate).format('DD/MM')\n : '-',\n deadline: activity.finalDate\n ? dayjs(activity.finalDate).format('DD/MM')\n : '-',\n creator: activity.creator?.name?.trim() ? activity.creator.name : '-',\n creatorId: activity.creator?.id ?? null,\n title: activity.title,\n school: firstBreakdown?.school?.name ?? '-',\n year: firstBreakdown?.schoolYear?.name ?? '-',\n subject: activity.subject?.name ?? '-',\n class: firstBreakdown?.class?.name ?? '-',\n status: mapApiStatusToDisplay(activity.status),\n completionPercentage: activity.completionPercentage,\n };\n};\n\n/**\n * Extract unique filter options from activities API response.\n * Delegates to the shared extractBreakdownFilterOptions helper.\n */\nexport const extractActivityFilterOptions = (\n activities: ActivityHistoryResponse[]\n): ActivityApiFilterOptions => extractBreakdownFilterOptions(activities);\n\n/**\n * Build query params from filters\n * @param filters - User filters\n * @param activityCategory - Optional activity category filter\n * @returns Query params object\n */\nconst buildQueryParams = (\n filters?: ActivityHistoryFilters,\n activityCategory?: string\n): Record<string, unknown> => {\n const params: Record<string, unknown> = {};\n\n // Add activityCategory filter (type param for /activities/history)\n if (activityCategory) {\n params.type = activityCategory;\n }\n\n if (filters) {\n for (const key in filters) {\n const value = filters[key as keyof ActivityHistoryFilters];\n if (value !== undefined && value !== null) {\n params[key] = value;\n }\n }\n }\n\n return params;\n};\n\n/**\n * Hook implementation\n */\nconst useActivitiesHistoryImpl = (\n apiClient: BaseApiClient,\n options?: UseActivitiesHistoryOptions\n): UseActivitiesHistoryReturn => {\n const [state, setState] = useState<UseActivitiesHistoryState>({\n activities: [],\n loading: false,\n error: null,\n pagination: DEFAULT_ACTIVITIES_PAGINATION,\n apiFilterOptions: DEFAULT_ACTIVITY_FILTER_OPTIONS,\n });\n\n const fetchActivities = useCallback(\n async (filters?: ActivityHistoryFilters) => {\n setState((prev) => ({ ...prev, loading: true, error: null }));\n\n try {\n const params = buildQueryParams(filters, options?.activityCategory);\n const response = await apiClient.get<ActivitiesHistoryApiResponse>(\n '/activities/history',\n { params }\n );\n\n const { data } = response.data;\n\n const tableItems = data.activities.map(transformActivityToTableItem);\n const extracted = extractActivityFilterOptions(data.activities);\n\n setState((prev) => ({\n activities: tableItems,\n loading: false,\n error: null,\n pagination: data.pagination,\n apiFilterOptions: {\n schools: mergeFilterOptions(\n prev.apiFilterOptions.schools,\n extracted.schools\n ),\n classes: mergeFilterOptions(\n prev.apiFilterOptions.classes,\n extracted.classes\n ),\n subjects: mergeFilterOptions(\n prev.apiFilterOptions.subjects,\n extracted.subjects\n ),\n schoolYears: mergeFilterOptions(\n prev.apiFilterOptions.schoolYears,\n extracted.schoolYears\n ),\n },\n }));\n } catch (error) {\n console.error('Erro ao carregar histórico:', error);\n setState((prev) => ({\n ...prev,\n loading: false,\n error: 'Erro ao carregar histórico de atividades',\n }));\n }\n },\n [apiClient, options?.activityCategory]\n );\n\n return { ...state, fetchActivities };\n};\n\n/**\n * Factory function to create useActivitiesHistory hook\n *\n * @param apiClient - API client instance (axios, fetch wrapper, etc.)\n * @param options - Hook configuration options\n * @returns Hook for managing activities history\n *\n * @example\n * ```tsx\n * import { createUseActivitiesHistory } from 'analytica-frontend-lib';\n * import api from '@/services/apiService';\n *\n * const useActivitiesHistory = createUseActivitiesHistory(api, { activityCategory: 'ATIVIDADE' });\n *\n * // In your component\n * const { activities, loading, fetchActivities, apiFilterOptions } = useActivitiesHistory();\n * ```\n */\nexport const createUseActivitiesHistory = (\n apiClient: BaseApiClient,\n options?: UseActivitiesHistoryOptions\n) => {\n return (): UseActivitiesHistoryReturn =>\n useActivitiesHistoryImpl(apiClient, options);\n};\n\n/**\n * Alias for createUseActivitiesHistory\n */\nexport const createActivitiesHistoryHook = createUseActivitiesHistory;\n"],"mappings":"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","names":[]}
|
|
File without changes
|
|
File without changes
|