@illuminateeducation/dna-atd-frontend 1.0.1-DNAATD-2189.0 → 1.0.2-DNAATD-3045-v3-POC.0

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.
Files changed (95) hide show
  1. package/README.md +21 -21
  2. package/dist/assets/dna-atd-frontend.css +1 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/index.es.js +47350 -0
  5. package/dist/index.es.js.map +1 -0
  6. package/dist/src/App.vue.d.ts +2 -0
  7. package/dist/src/components/common/BaseButton.vue.d.ts +16 -0
  8. package/dist/src/components/common/BaseInput.vue.d.ts +8 -0
  9. package/dist/src/components/common/BaseModal.vue.d.ts +19 -0
  10. package/dist/src/components/common/ErrorBoundary.vue.d.ts +37 -0
  11. package/dist/src/composables/useAsync.d.ts +24 -0
  12. package/dist/src/composables/useClickOutside.d.ts +7 -0
  13. package/dist/src/composables/useForm.d.ts +38 -0
  14. package/dist/src/composables/useLocalStorage.d.ts +24 -0
  15. package/dist/src/composables/useWindowSize.d.ts +20 -0
  16. package/dist/src/config/app.config.d.ts +67 -0
  17. package/dist/src/context/backendContext.d.ts +9 -0
  18. package/dist/src/features/admin/customization/composables/useCustomization.d.ts +19 -0
  19. package/dist/src/features/admin/customization/store/customizationStore.d.ts +30 -0
  20. package/dist/src/features/admin/customization/views/CustomizationView.vue.d.ts +2 -0
  21. package/dist/src/features/admin/validation/composables/useValidation.d.ts +18 -0
  22. package/dist/src/features/admin/validation/store/validationStore.d.ts +27 -0
  23. package/dist/src/features/admin/validation/views/ValidationView.vue.d.ts +2 -0
  24. package/dist/src/features/reports/codeBasedJasper/components/AssessmentFinder.vue.d.ts +618 -0
  25. package/dist/src/features/reports/codeBasedJasper/components/DownloadButtons.vue.d.ts +13 -0
  26. package/dist/src/features/reports/codeBasedJasper/components/FavoritesWidget.vue.d.ts +10 -0
  27. package/dist/src/features/reports/codeBasedJasper/components/MultipleAssessmentIdsField.vue.d.ts +18 -0
  28. package/dist/src/features/reports/codeBasedJasper/components/ReportFilters.vue.d.ts +18 -0
  29. package/dist/src/features/reports/codeBasedJasper/components/ReportPagination.vue.d.ts +11 -0
  30. package/dist/src/features/reports/codeBasedJasper/components/ReportViewer.vue.d.ts +16 -0
  31. package/dist/src/features/reports/codeBasedJasper/composables/useCodeBasedJasper.d.ts +184 -0
  32. package/dist/src/features/reports/codeBasedJasper/mount.d.ts +1 -0
  33. package/dist/src/features/reports/codeBasedJasper/services/codeBasedJasperApi.d.ts +190 -0
  34. package/dist/src/features/reports/codeBasedJasper/store/codeBasedJasperStore.d.ts +503 -0
  35. package/dist/src/features/reports/codeBasedJasper/types/index.d.ts +54 -0
  36. package/dist/src/features/reports/codeBasedJasper/views/CodeBasedJasperReportView.vue.d.ts +32 -0
  37. package/dist/src/index.d.ts +51 -0
  38. package/dist/src/layouts/AdminLayout.vue.d.ts +2 -0
  39. package/dist/src/plugins/globalErrorHandling.d.ts +36 -0
  40. package/dist/src/plugins/vuetify.d.ts +86 -0
  41. package/dist/src/router/index.d.ts +16 -0
  42. package/dist/src/services/apiService.d.ts +33 -0
  43. package/dist/src/services/integration.d.ts +54 -0
  44. package/dist/src/types/api.d.ts +27 -0
  45. package/dist/src/types/backend.d.ts +27 -0
  46. package/dist/src/utils/helpers.d.ts +50 -0
  47. package/dist/src/utils/safeJson.d.ts +17 -0
  48. package/dist/src/views/HomeView.vue.d.ts +2 -0
  49. package/dist/src/views/NotFoundView.vue.d.ts +2 -0
  50. package/package.json +33 -22
  51. package/dist/.vite/manifest.json +0 -87
  52. package/dist/assets/AdminLayout.css +0 -1
  53. package/dist/assets/AdminLayout.js +0 -1
  54. package/dist/assets/CustomizationView.css +0 -1
  55. package/dist/assets/CustomizationView.js +0 -1
  56. package/dist/assets/HomeView.css +0 -1
  57. package/dist/assets/HomeView.js +0 -1
  58. package/dist/assets/NotFoundView.css +0 -1
  59. package/dist/assets/NotFoundView.js +0 -1
  60. package/dist/assets/ValidationView.css +0 -1
  61. package/dist/assets/ValidationView.js +0 -1
  62. package/dist/assets/_plugin-vue_export-helper.js +0 -1
  63. package/dist/assets/index.css +0 -1
  64. package/dist/assets/index.js +0 -2
  65. package/dist/index.html +0 -14
  66. package/index.js +0 -1
  67. package/src/App.vue +0 -68
  68. package/src/__tests__/App.spec.js +0 -26
  69. package/src/components/common/BaseButton.vue +0 -20
  70. package/src/components/common/BaseInput.vue +0 -27
  71. package/src/components/common/BaseModal.vue +0 -37
  72. package/src/composables/useAsync.js +0 -34
  73. package/src/composables/useClickOutside.js +0 -29
  74. package/src/composables/useForm.js +0 -89
  75. package/src/composables/useLocalStorage.js +0 -51
  76. package/src/composables/useWindowSize.js +0 -30
  77. package/src/config/app.config.js +0 -79
  78. package/src/features/admin/customization/composables/useCustomization.js +0 -19
  79. package/src/features/admin/customization/store/customizationStore.js +0 -30
  80. package/src/features/admin/customization/views/CustomizationView.vue +0 -17
  81. package/src/features/admin/validation/composables/useValidation.js +0 -18
  82. package/src/features/admin/validation/store/validationStore.js +0 -25
  83. package/src/features/admin/validation/views/ValidationView.vue +0 -17
  84. package/src/index.js +0 -53
  85. package/src/layouts/AdminLayout.vue +0 -146
  86. package/src/main.js +0 -41
  87. package/src/router/index.js +0 -57
  88. package/src/services/apiService.js +0 -72
  89. package/src/services/integration.js +0 -59
  90. package/src/services/phpIntegration.js +0 -1
  91. package/src/stores/counter.js +0 -12
  92. package/src/utils/helpers.js +0 -119
  93. package/src/utils/validators.js +0 -131
  94. package/src/views/HomeView.vue +0 -121
  95. package/src/views/NotFoundView.vue +0 -56
@@ -0,0 +1,18 @@
1
+ import { ReportData } from '../services/codeBasedJasperApi';
2
+ type __VLS_Props = {
3
+ formData?: ReportData;
4
+ extraHtml?: string;
5
+ };
6
+ declare function getFormData(): Record<string, unknown>;
7
+ declare function submitForm(): void;
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {
9
+ getFormData: typeof getFormData;
10
+ submitForm: typeof submitForm;
11
+ }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
+ "form-submitted": (data: Record<string, unknown>) => any;
13
+ "field-changed": (fieldName: string, value: unknown) => any;
14
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ "onForm-submitted"?: ((data: Record<string, unknown>) => any) | undefined;
16
+ "onField-changed"?: ((fieldName: string, value: unknown) => any) | undefined;
17
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { PaginationData } from '../services/codeBasedJasperApi';
2
+ type __VLS_Props = {
3
+ pagination: PaginationData;
4
+ loading?: boolean;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "page-changed": (page: number) => any;
8
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ "onPage-changed"?: ((page: number) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import { PaginationData } from '../services/codeBasedJasperApi';
2
+ type __VLS_Props = {
3
+ html: string;
4
+ iframeSrc?: string | null;
5
+ usesVisualizeJs?: boolean;
6
+ usesItemPreviewJs?: boolean;
7
+ pagination?: PaginationData;
8
+ };
9
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
10
+ "page-changed": (page: number) => any;
11
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ "onPage-changed"?: ((page: number) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
14
+ iframeRef: HTMLIFrameElement;
15
+ }, HTMLDivElement>;
16
+ export default _default;
@@ -0,0 +1,184 @@
1
+ /**
2
+ * @file useCodeBasedJasper.ts
3
+ * @description Vue composable for Code Based Jasper Report functionality
4
+ * @author Illuminate Education
5
+ * @lastUpdated 2025-01-03
6
+ *
7
+ * @responsibilities
8
+ * - Provides reactive access to Code Based Jasper store
9
+ * - Exposes report data and loading states
10
+ * - Wraps API calls with error handling
11
+ * - Simplifies component integration
12
+ */
13
+ export declare function useCodeBasedJasper(): {
14
+ reportData: import('vue').Ref<{
15
+ form_html?: string | undefined;
16
+ form_fields?: Record<string, {
17
+ label?: string;
18
+ default?: unknown;
19
+ options?: Record<string, string>;
20
+ required?: boolean;
21
+ disabled?: boolean;
22
+ }> | undefined;
23
+ demographic_fields?: Record<string, {
24
+ label?: string;
25
+ default?: unknown;
26
+ options?: Record<string, string>;
27
+ required?: boolean;
28
+ disabled?: boolean;
29
+ }> | undefined;
30
+ form_action?: string | undefined;
31
+ form_method?: string | undefined;
32
+ hidden_fields?: Record<string, unknown> | undefined;
33
+ form_data?: Record<string, unknown> | undefined;
34
+ selected_filter_options?: Record<string, unknown> | undefined;
35
+ additional_field_names?: string[] | undefined;
36
+ additional_fields?: Record<string, {
37
+ label?: string;
38
+ default?: unknown;
39
+ options?: Record<string, string>;
40
+ required?: boolean;
41
+ disabled?: boolean;
42
+ control?: "select" | "checkbox" | "text";
43
+ }> | undefined;
44
+ additional_fields_html?: Record<string, string> | undefined;
45
+ extra_html?: string | undefined;
46
+ report_html?: string | undefined;
47
+ pagination?: {
48
+ currentPage: number;
49
+ totalPages: number;
50
+ hasNext: boolean;
51
+ hasPrev: boolean;
52
+ } | undefined;
53
+ has_assessment_finder?: boolean | undefined;
54
+ cascading_field_names?: string[] | undefined;
55
+ multiple_assessment_ids_data?: {
56
+ label?: string | undefined;
57
+ value?: string | undefined;
58
+ selected?: {
59
+ [x: string]: unknown;
60
+ type_id: number;
61
+ title: string;
62
+ date_administered?: string | undefined;
63
+ author?: string | undefined;
64
+ }[] | undefined;
65
+ } | undefined;
66
+ assessment_finder_form_html?: string | undefined;
67
+ assessment_finder_data?: {
68
+ filters: {
69
+ year: Record<string, string>;
70
+ grade: Record<string, string>;
71
+ subject: Record<string, string>;
72
+ sub_type: Record<string, string>;
73
+ type_id: Record<string, string>;
74
+ date_taken: Record<string, string>;
75
+ };
76
+ defaults: Record<string, unknown>;
77
+ placeholders: Record<string, string>;
78
+ selected_assessments?: unknown[] | undefined;
79
+ } | undefined;
80
+ assessment_finder_extra_html?: string | undefined;
81
+ favorites?: unknown;
82
+ drilldown_fields?: string[] | undefined;
83
+ debug_report?: string | undefined;
84
+ } | null, import('../services/codeBasedJasperApi').ReportData | {
85
+ form_html?: string | undefined;
86
+ form_fields?: Record<string, {
87
+ label?: string;
88
+ default?: unknown;
89
+ options?: Record<string, string>;
90
+ required?: boolean;
91
+ disabled?: boolean;
92
+ }> | undefined;
93
+ demographic_fields?: Record<string, {
94
+ label?: string;
95
+ default?: unknown;
96
+ options?: Record<string, string>;
97
+ required?: boolean;
98
+ disabled?: boolean;
99
+ }> | undefined;
100
+ form_action?: string | undefined;
101
+ form_method?: string | undefined;
102
+ hidden_fields?: Record<string, unknown> | undefined;
103
+ form_data?: Record<string, unknown> | undefined;
104
+ selected_filter_options?: Record<string, unknown> | undefined;
105
+ additional_field_names?: string[] | undefined;
106
+ additional_fields?: Record<string, {
107
+ label?: string;
108
+ default?: unknown;
109
+ options?: Record<string, string>;
110
+ required?: boolean;
111
+ disabled?: boolean;
112
+ control?: "select" | "checkbox" | "text";
113
+ }> | undefined;
114
+ additional_fields_html?: Record<string, string> | undefined;
115
+ extra_html?: string | undefined;
116
+ report_html?: string | undefined;
117
+ pagination?: {
118
+ currentPage: number;
119
+ totalPages: number;
120
+ hasNext: boolean;
121
+ hasPrev: boolean;
122
+ } | undefined;
123
+ has_assessment_finder?: boolean | undefined;
124
+ cascading_field_names?: string[] | undefined;
125
+ multiple_assessment_ids_data?: {
126
+ label?: string | undefined;
127
+ value?: string | undefined;
128
+ selected?: {
129
+ [x: string]: unknown;
130
+ type_id: number;
131
+ title: string;
132
+ date_administered?: string | undefined;
133
+ author?: string | undefined;
134
+ }[] | undefined;
135
+ } | undefined;
136
+ assessment_finder_form_html?: string | undefined;
137
+ assessment_finder_data?: {
138
+ filters: {
139
+ year: Record<string, string>;
140
+ grade: Record<string, string>;
141
+ subject: Record<string, string>;
142
+ sub_type: Record<string, string>;
143
+ type_id: Record<string, string>;
144
+ date_taken: Record<string, string>;
145
+ };
146
+ defaults: Record<string, unknown>;
147
+ placeholders: Record<string, string>;
148
+ selected_assessments?: unknown[] | undefined;
149
+ } | undefined;
150
+ assessment_finder_extra_html?: string | undefined;
151
+ favorites?: unknown;
152
+ drilldown_fields?: string[] | undefined;
153
+ debug_report?: string | undefined;
154
+ } | null>;
155
+ reportHtml: import('vue').Ref<string | null, string | null>;
156
+ pagination: import('vue').Ref<{
157
+ currentPage: number;
158
+ totalPages: number;
159
+ hasNext: boolean;
160
+ hasPrev: boolean;
161
+ }, import('../services/codeBasedJasperApi').PaginationData | {
162
+ currentPage: number;
163
+ totalPages: number;
164
+ hasNext: boolean;
165
+ hasPrev: boolean;
166
+ }>;
167
+ isLoading: import('vue').Ref<boolean, boolean>;
168
+ isGeneratingDownload: import('vue').Ref<boolean, boolean>;
169
+ isFavorite: import('vue').Ref<boolean, boolean>;
170
+ debugReport: import('vue').Ref<string | null, string | null>;
171
+ hasReport: import('vue').ComputedRef<boolean>;
172
+ canShowFavorites: import('vue').ComputedRef<boolean>;
173
+ loadReportData: (params?: Record<string, unknown>) => Promise<import('../services/codeBasedJasperApi').ReportData>;
174
+ changeScope: (params: Record<string, unknown>) => Promise<import('../services/codeBasedJasperApi').ScopeChangeResponse>;
175
+ generateReport: (data: Record<string, unknown>) => Promise<import('../services/codeBasedJasperApi').GenerateReportResponse>;
176
+ loadReportHtml: (params?: Record<string, unknown>) => Promise<{
177
+ report_html: string;
178
+ pagination?: import('../services/codeBasedJasperApi').PaginationData;
179
+ }>;
180
+ downloadReport: (data: Record<string, unknown>) => Promise<import('../services/codeBasedJasperApi').DownloadReportResponse>;
181
+ loadFavorites: (jasperPrebuiltId: number | string) => Promise<import('../services/codeBasedJasperApi').FavoritesResponse>;
182
+ toggleFavorite: (jasperPrebuiltId: number | string) => Promise<import('../services/codeBasedJasperApi').ToggleFavoriteResponse>;
183
+ reset: () => void;
184
+ };
@@ -0,0 +1 @@
1
+ export declare function mountCodeBasedJasperReport(elementId?: string): import('vue').App<Element> | null;
@@ -0,0 +1,190 @@
1
+ /**
2
+ * @file codeBasedJasperApi.ts
3
+ * @description API service for Code Based Jasper Report endpoints
4
+ * @author Illuminate Education
5
+ * @lastUpdated 2025-01-03
6
+ *
7
+ * @responsibilities
8
+ * - Provides typed API methods for Code Based Jasper Report operations
9
+ * - Handles request/response formatting following bulk assessment pattern
10
+ * - Response format: { payload: {...}, status: 'OK' | 'Bad Request', error: '...' }
11
+ */
12
+ export type { FormFieldData, FormDataWithFields, InitialData } from '../types';
13
+ export type CodeBasedJasperResponse<T = unknown> = {
14
+ payload: T;
15
+ status: 'OK' | 'Bad Request';
16
+ error?: string;
17
+ debug_message?: string;
18
+ debug_data?: unknown;
19
+ };
20
+ export type ReportData = {
21
+ form_html?: string;
22
+ form_fields?: Record<string, {
23
+ label?: string;
24
+ default?: unknown;
25
+ options?: Record<string, string>;
26
+ required?: boolean;
27
+ disabled?: boolean;
28
+ }>;
29
+ demographic_fields?: ReportData['form_fields'];
30
+ form_action?: string;
31
+ form_method?: string;
32
+ hidden_fields?: Record<string, unknown>;
33
+ form_data?: Record<string, unknown>;
34
+ selected_filter_options?: Record<string, unknown>;
35
+ additional_field_names?: string[];
36
+ additional_fields?: Record<string, {
37
+ label?: string;
38
+ default?: unknown;
39
+ options?: Record<string, string>;
40
+ required?: boolean;
41
+ disabled?: boolean;
42
+ control?: 'select' | 'checkbox' | 'text';
43
+ }>;
44
+ additional_fields_html?: Record<string, string>;
45
+ extra_html?: string;
46
+ report_html?: string;
47
+ pagination?: PaginationData;
48
+ has_assessment_finder?: boolean;
49
+ cascading_field_names?: string[];
50
+ multiple_assessment_ids_data?: {
51
+ label?: string;
52
+ value?: string;
53
+ selected?: Array<{
54
+ type_id: number;
55
+ title: string;
56
+ date_administered?: string;
57
+ author?: string;
58
+ [key: string]: unknown;
59
+ }>;
60
+ };
61
+ assessment_finder_form_html?: string;
62
+ assessment_finder_data?: {
63
+ filters: {
64
+ year: Record<string, string>;
65
+ grade: Record<string, string>;
66
+ subject: Record<string, string>;
67
+ sub_type: Record<string, string>;
68
+ type_id: Record<string, string>;
69
+ date_taken: Record<string, string>;
70
+ };
71
+ defaults: Record<string, unknown>;
72
+ placeholders: Record<string, string>;
73
+ selected_assessments?: unknown[];
74
+ };
75
+ assessment_finder_extra_html?: string;
76
+ favorites?: unknown;
77
+ drilldown_fields?: string[];
78
+ debug_report?: string;
79
+ };
80
+ export type PaginationData = {
81
+ currentPage: number;
82
+ totalPages: number;
83
+ hasNext: boolean;
84
+ hasPrev: boolean;
85
+ };
86
+ export type ScopeChangeResponse = {
87
+ form_fields?: ReportData['form_fields'];
88
+ demographic_fields?: ReportData['demographic_fields'];
89
+ };
90
+ export type GenerateReportResponse = {
91
+ uses_visualize_js?: boolean;
92
+ visualize_js_url?: string;
93
+ background_process_id?: string;
94
+ };
95
+ export type DownloadReportResponse = {
96
+ download_url?: string;
97
+ blob?: Blob;
98
+ content_type?: string;
99
+ filename?: string;
100
+ };
101
+ export type BackgroundJobStatus = {
102
+ status: string;
103
+ background_process?: {
104
+ id: number | string;
105
+ status: string;
106
+ name?: string;
107
+ start_time?: string;
108
+ end_time?: string;
109
+ user_notice?: string;
110
+ };
111
+ };
112
+ export type FavoritesResponse = {
113
+ favorites: Array<{
114
+ jasper_prebuilt_id: number | string;
115
+ }>;
116
+ };
117
+ export type ToggleFavoriteResponse = {
118
+ is_favorite: boolean;
119
+ };
120
+ declare class CodeBasedJasperApiService {
121
+ private getBaseRequestParams;
122
+ private request;
123
+ /**
124
+ * List courses for the Courses autocomplete (remote search)
125
+ */
126
+ listCourses(params: Record<string, unknown>): Promise<{
127
+ courses: Array<{
128
+ value: string;
129
+ title: string;
130
+ }>;
131
+ count: number;
132
+ }>;
133
+ /**
134
+ * Get initial report data including form fields and current filters
135
+ */
136
+ getReportData(params?: Record<string, unknown>): Promise<ReportData>;
137
+ /**
138
+ * Handle scope changes (AJAX)
139
+ */
140
+ changeScope(params: Record<string, unknown>): Promise<ScopeChangeResponse>;
141
+ /**
142
+ * List assessments based on search criteria
143
+ */
144
+ listAssessments(searchParams: Record<string, unknown>): Promise<{
145
+ assessments: Array<{
146
+ type_id: number;
147
+ title: string;
148
+ date_administered: string;
149
+ author?: string;
150
+ [key: string]: unknown;
151
+ }>;
152
+ headers?: Record<string, string>;
153
+ count?: number;
154
+ error_message?: string;
155
+ }>;
156
+ /**
157
+ * Generate report with parameters
158
+ */
159
+ generateReport(data: Record<string, unknown>): Promise<GenerateReportResponse>;
160
+ /**
161
+ * Get report HTML
162
+ */
163
+ getReportHtml(params?: Record<string, unknown>): Promise<{
164
+ report_html: string;
165
+ pagination?: PaginationData;
166
+ }>;
167
+ /**
168
+ * Download report (PDF, Excel, Word)
169
+ */
170
+ downloadReport(data: Record<string, unknown>): Promise<DownloadReportResponse>;
171
+ /**
172
+ * Poll background job status (legacy endpoint used by BackgroundProcessStatusChecker)
173
+ */
174
+ getBackgroundJobStatus(background_process_id: number | string): Promise<BackgroundJobStatus>;
175
+ /**
176
+ * Generate drilldown report
177
+ */
178
+ drilldown(data: Record<string, unknown>): Promise<unknown>;
179
+ /**
180
+ * Get favorites data
181
+ */
182
+ getFavorites(): Promise<FavoritesResponse>;
183
+ /**
184
+ * Toggle favorite (add/remove)
185
+ */
186
+ toggleFavorite(data: {
187
+ jasper_prebuilt_id: number | string;
188
+ }): Promise<ToggleFavoriteResponse>;
189
+ }
190
+ export declare const codeBasedJasperApi: CodeBasedJasperApiService;