@actschurch/ccms-sdk 0.0.26 → 0.0.27
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/models/accounselling/ModelView/CareSessionModelView.d.ts +7 -0
- package/dist/models/accounselling/ModelView/CareSessionModelView.d.ts.map +1 -1
- package/dist/models/analytics/KnowledgeSearch.d.ts +10 -0
- package/dist/models/analytics/KnowledgeSearch.d.ts.map +1 -1
- package/dist/models/dashboard/index.d.ts +282 -3
- package/dist/models/dashboard/index.d.ts.map +1 -1
- package/dist/models/dashboard/index.js +315 -3
- package/dist/models/dashboard/index.js.map +1 -1
- package/dist/models/resources/ModelView/CourseModelView.d.ts +17 -0
- package/dist/models/resources/ModelView/CourseModelView.d.ts.map +1 -1
- package/dist/models/resources/ResourceSettings.d.ts +31 -0
- package/dist/models/resources/ResourceSettings.d.ts.map +1 -0
- package/dist/models/resources/ResourceSettings.js +2 -0
- package/dist/models/resources/ResourceSettings.js.map +1 -0
- package/dist/models/resources/SessionNote.d.ts +30 -0
- package/dist/models/resources/SessionNote.d.ts.map +1 -0
- package/dist/models/resources/SessionNote.js +2 -0
- package/dist/models/resources/SessionNote.js.map +1 -0
- package/dist/models/resources/index.d.ts +2 -0
- package/dist/models/resources/index.d.ts.map +1 -1
- package/dist/models/resources/index.js +3 -0
- package/dist/models/resources/index.js.map +1 -1
- package/dist/react/hooks/services/useResourcesServices.d.ts +5 -1
- package/dist/react/hooks/services/useResourcesServices.d.ts.map +1 -1
- package/dist/react/hooks/services/useResourcesServices.js +6 -0
- package/dist/react/hooks/services/useResourcesServices.js.map +1 -1
- package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts +48 -0
- package/dist/realtime/dashboards/DashboardAggregatorClient.d.ts.map +1 -0
- package/dist/realtime/dashboards/DashboardAggregatorClient.js +65 -0
- package/dist/realtime/dashboards/DashboardAggregatorClient.js.map +1 -0
- package/dist/realtime/dashboards/index.d.ts +1 -0
- package/dist/realtime/dashboards/index.d.ts.map +1 -1
- package/dist/realtime/dashboards/index.js +3 -0
- package/dist/realtime/dashboards/index.js.map +1 -1
- package/dist/services/accounselling/CareCaseService.d.ts +45 -1
- package/dist/services/accounselling/CareCaseService.d.ts.map +1 -1
- package/dist/services/accounselling/CareCaseService.js +65 -0
- package/dist/services/accounselling/CareCaseService.js.map +1 -1
- package/dist/services/dashboard/DashboardAggregatorService.d.ts +73 -0
- package/dist/services/dashboard/DashboardAggregatorService.d.ts.map +1 -0
- package/dist/services/dashboard/DashboardAggregatorService.js +145 -0
- package/dist/services/dashboard/DashboardAggregatorService.js.map +1 -0
- package/dist/services/dashboard/DashboardLayoutService.d.ts +46 -0
- package/dist/services/dashboard/DashboardLayoutService.d.ts.map +1 -0
- package/dist/services/dashboard/DashboardLayoutService.js +75 -0
- package/dist/services/dashboard/DashboardLayoutService.js.map +1 -0
- package/dist/services/dashboard/DashboardServices.d.ts +38 -0
- package/dist/services/dashboard/DashboardServices.d.ts.map +1 -0
- package/dist/services/dashboard/DashboardServices.js +28 -0
- package/dist/services/dashboard/DashboardServices.js.map +1 -0
- package/dist/services/dashboard/index.d.ts +11 -0
- package/dist/services/dashboard/index.d.ts.map +1 -0
- package/dist/services/dashboard/index.js +10 -0
- package/dist/services/dashboard/index.js.map +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts +7 -1
- package/dist/services/knowledgebase/KnowledgeBaseQAService.d.ts.map +1 -1
- package/dist/services/knowledgebase/KnowledgeBaseQAService.js +11 -0
- package/dist/services/knowledgebase/KnowledgeBaseQAService.js.map +1 -1
- package/dist/services/members/MemberService.d.ts +17 -0
- package/dist/services/members/MemberService.d.ts.map +1 -1
- package/dist/services/members/MemberService.js +27 -0
- package/dist/services/members/MemberService.js.map +1 -1
- package/dist/services/resources/PublicCoursesService.d.ts +7 -0
- package/dist/services/resources/PublicCoursesService.d.ts.map +1 -1
- package/dist/services/resources/PublicCoursesService.js +12 -0
- package/dist/services/resources/PublicCoursesService.js.map +1 -1
- package/dist/services/resources/ResourceSettingsService.d.ts +26 -0
- package/dist/services/resources/ResourceSettingsService.d.ts.map +1 -0
- package/dist/services/resources/ResourceSettingsService.js +43 -0
- package/dist/services/resources/ResourceSettingsService.js.map +1 -0
- package/dist/services/resources/SessionNoteService.d.ts +27 -0
- package/dist/services/resources/SessionNoteService.d.ts.map +1 -0
- package/dist/services/resources/SessionNoteService.js +44 -0
- package/dist/services/resources/SessionNoteService.js.map +1 -0
- package/dist/services/resources/UserCourseProgressService.d.ts +9 -0
- package/dist/services/resources/UserCourseProgressService.d.ts.map +1 -1
- package/dist/services/resources/UserCourseProgressService.js +13 -0
- package/dist/services/resources/UserCourseProgressService.js.map +1 -1
- package/dist/services/resources/index.d.ts +6 -0
- package/dist/services/resources/index.d.ts.map +1 -1
- package/dist/services/resources/index.js +6 -0
- package/dist/services/resources/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,320 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Dashboard models
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* TypeScript-SDK mirror of the cross-domain "my day at CCMS" dashboard
|
|
5
|
+
* contract — kept byte-for-byte in step with the iOS (`CCMSSDK`) and Android
|
|
6
|
+
* (`com.ccms.sdk`) SDKs and the backend
|
|
7
|
+
* `CCMS.Api.DashboardAggregator` / `CCMSLib.Dashboard` types.
|
|
8
|
+
*
|
|
9
|
+
* The Hub renders a dashboard widget purely from its JSON payload — it never
|
|
10
|
+
* links the owning domain's binary — so these shapes are the locked
|
|
11
|
+
* cross-platform contract (`05_DASHBOARD_EXPERIENCE.md`). Unknown renderer /
|
|
12
|
+
* container kinds (a newer server talking to an older client) must degrade
|
|
13
|
+
* gracefully rather than blank-out or crash.
|
|
14
|
+
*
|
|
15
|
+
* Wire form is camelCase, matching Swift/Kotlin exactly.
|
|
16
|
+
*/
|
|
17
|
+
/** Every known renderer kind, in declaration order. */
|
|
18
|
+
export const WIDGET_RENDERER_KINDS = [
|
|
19
|
+
'stat',
|
|
20
|
+
'list',
|
|
21
|
+
'progress',
|
|
22
|
+
'calendar-strip',
|
|
23
|
+
'custom',
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Parse a wire value to a {@link WidgetRendererKind}. Unknown / undefined
|
|
27
|
+
* values fall back to `'custom'` — the graceful-degradation contract (a widget
|
|
28
|
+
* always renders something, never blank, never a crash).
|
|
29
|
+
*/
|
|
30
|
+
export function parseWidgetRendererKind(value) {
|
|
31
|
+
switch (value?.trim().toLowerCase()) {
|
|
32
|
+
case 'stat':
|
|
33
|
+
return 'stat';
|
|
34
|
+
case 'list':
|
|
35
|
+
return 'list';
|
|
36
|
+
case 'progress':
|
|
37
|
+
return 'progress';
|
|
38
|
+
case 'calendar-strip':
|
|
39
|
+
return 'calendar-strip';
|
|
40
|
+
case 'custom':
|
|
41
|
+
return 'custom';
|
|
42
|
+
default:
|
|
43
|
+
return 'custom';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Every known container type, in declaration order. */
|
|
47
|
+
export const WIDGET_CONTAINER_TYPES = [
|
|
48
|
+
'kpi-grid',
|
|
49
|
+
'kpi-two-col',
|
|
50
|
+
'kpi-single',
|
|
51
|
+
'horizontal-cards',
|
|
52
|
+
'stack',
|
|
53
|
+
];
|
|
54
|
+
/**
|
|
55
|
+
* Parse a wire value to a {@link WidgetContainerType}. Unknown / undefined
|
|
56
|
+
* values fall back to `'stack'`.
|
|
57
|
+
*/
|
|
58
|
+
export function parseWidgetContainerType(value) {
|
|
59
|
+
switch (value?.trim().toLowerCase()) {
|
|
60
|
+
case 'kpi-grid':
|
|
61
|
+
return 'kpi-grid';
|
|
62
|
+
case 'kpi-two-col':
|
|
63
|
+
return 'kpi-two-col';
|
|
64
|
+
case 'kpi-single':
|
|
65
|
+
return 'kpi-single';
|
|
66
|
+
case 'horizontal-cards':
|
|
67
|
+
return 'horizontal-cards';
|
|
68
|
+
case 'stack':
|
|
69
|
+
return 'stack';
|
|
70
|
+
default:
|
|
71
|
+
return 'stack';
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The widgets the user has switched on, in their chosen `order`.
|
|
76
|
+
*/
|
|
77
|
+
export function enabledWidgetsInOrder(layout) {
|
|
78
|
+
return (layout.widgets ?? [])
|
|
79
|
+
.filter((w) => w.enabled)
|
|
80
|
+
.slice()
|
|
81
|
+
.sort((a, b) => a.order - b.order);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The sections to render: the saved {@link DashboardLayout.sections} (enabled,
|
|
85
|
+
* ordered, each trimmed to its enabled widgets and dropped when empty) when
|
|
86
|
+
* present, else a single synthesized `stack` section over
|
|
87
|
+
* {@link enabledWidgetsInOrder} — back-compat with pre-container layouts.
|
|
88
|
+
*
|
|
89
|
+
* Mirrors the Swift `resolvedSections` / Kotlin `resolvedSections()` logic.
|
|
90
|
+
*/
|
|
91
|
+
export function resolvedSections(layout) {
|
|
92
|
+
const ordered = enabledWidgetsInOrder(layout);
|
|
93
|
+
const enabledIds = new Set(ordered.map((w) => w.widgetId));
|
|
94
|
+
const saved = layout.sections;
|
|
95
|
+
if (saved && saved.length > 0) {
|
|
96
|
+
return saved
|
|
97
|
+
.filter((s) => s.enabled)
|
|
98
|
+
.slice()
|
|
99
|
+
.sort((a, b) => a.order - b.order)
|
|
100
|
+
.map((s) => ({
|
|
101
|
+
...s,
|
|
102
|
+
widgetIds: s.widgetIds.filter((id) => enabledIds.has(id)),
|
|
103
|
+
}))
|
|
104
|
+
.filter((s) => s.widgetIds.length > 0);
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
id: 'all',
|
|
109
|
+
title: undefined,
|
|
110
|
+
containerType: 'stack',
|
|
111
|
+
order: 0,
|
|
112
|
+
enabled: true,
|
|
113
|
+
widgetIds: ordered.map((w) => w.widgetId),
|
|
114
|
+
},
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The pages to render: the saved {@link DashboardLayout.pages} (sorted by
|
|
119
|
+
* order, each page's sections filtered to enabled and trimmed to the layout's
|
|
120
|
+
* enabled widget ids, then dropped when empty) when present, else a single
|
|
121
|
+
* `home` page wrapping {@link resolvedSections} — back-compat with pre-page
|
|
122
|
+
* layouts.
|
|
123
|
+
*
|
|
124
|
+
* Mirrors the Swift `resolvedPages` / Kotlin `resolvedPages()` logic.
|
|
125
|
+
*/
|
|
126
|
+
export function resolvedPages(layout) {
|
|
127
|
+
const enabledIds = new Set(enabledWidgetsInOrder(layout).map((w) => w.widgetId));
|
|
128
|
+
const saved = layout.pages;
|
|
129
|
+
if (saved && saved.length > 0) {
|
|
130
|
+
return saved
|
|
131
|
+
.slice()
|
|
132
|
+
.sort((a, b) => a.order - b.order)
|
|
133
|
+
.map((page) => ({
|
|
134
|
+
...page,
|
|
135
|
+
sections: page.sections
|
|
136
|
+
.filter((s) => s.enabled)
|
|
137
|
+
.slice()
|
|
138
|
+
.sort((a, b) => a.order - b.order)
|
|
139
|
+
.map((s) => ({
|
|
140
|
+
...s,
|
|
141
|
+
widgetIds: s.widgetIds.filter((id) => enabledIds.has(id)),
|
|
142
|
+
}))
|
|
143
|
+
.filter((s) => s.widgetIds.length > 0),
|
|
144
|
+
}))
|
|
145
|
+
.filter((page) => page.sections.length > 0);
|
|
146
|
+
}
|
|
147
|
+
return [
|
|
148
|
+
{
|
|
149
|
+
id: 'home',
|
|
150
|
+
title: undefined,
|
|
151
|
+
order: 0,
|
|
152
|
+
sections: resolvedSections(layout),
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
157
|
+
// Bundled catalog fallback
|
|
158
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
159
|
+
/**
|
|
160
|
+
* A **bundled, client-side mirror** of the backend `WidgetCatalogMeta` — the
|
|
161
|
+
* fallback the Hub uses when `GET /api/dashboard/widgets` is unavailable (e.g. an
|
|
162
|
+
* aggregator deployment that predates the catalog endpoint). It keeps the
|
|
163
|
+
* Add-Widget picker, type badges and per-widget settings working before the
|
|
164
|
+
* server catalog ships.
|
|
165
|
+
*
|
|
166
|
+
* Kept byte-identical to the backend `WidgetCatalogMeta` and the iOS
|
|
167
|
+
* `WidgetCatalogItem.bundled` / Kotlin `BUNDLED_WIDGET_CATALOG` (ids, kinds,
|
|
168
|
+
* categories, descriptions, accent hexes, settings schema).
|
|
169
|
+
*/
|
|
170
|
+
// ---- categories (domain-based, mirroring the backend) ----
|
|
171
|
+
const CAT_TASKS = 'Tasks';
|
|
172
|
+
const CAT_HR = 'HR & People';
|
|
173
|
+
const CAT_BOOKINGS = 'Bookings';
|
|
174
|
+
const CAT_PROCUREMENT = 'Procurement';
|
|
175
|
+
const CAT_LEARNING = 'Learning';
|
|
176
|
+
const CAT_ANNOUNCEMENTS = 'Announcements';
|
|
177
|
+
const CAT_MEETINGS = 'Meetings';
|
|
178
|
+
const CAT_MESSAGES = 'Messages';
|
|
179
|
+
const CAT_APPS = 'My Apps';
|
|
180
|
+
const STAT_CONTAINERS = ['kpi-grid', 'kpi-two-col', 'kpi-single', 'stack'];
|
|
181
|
+
const LIST_CONTAINERS = ['stack', 'horizontal-cards'];
|
|
182
|
+
const STACK_ONLY = ['stack'];
|
|
183
|
+
const customTitleSetting = () => ({
|
|
184
|
+
key: 'customTitle',
|
|
185
|
+
type: 'string',
|
|
186
|
+
label: 'Custom title',
|
|
187
|
+
});
|
|
188
|
+
const countSetting = (max = 20, def = 5) => ({
|
|
189
|
+
key: 'count',
|
|
190
|
+
type: 'int',
|
|
191
|
+
label: 'How many to show',
|
|
192
|
+
default: def,
|
|
193
|
+
min: 1,
|
|
194
|
+
max,
|
|
195
|
+
});
|
|
196
|
+
const accentColorSetting = () => ({
|
|
197
|
+
key: 'color',
|
|
198
|
+
type: 'enum',
|
|
199
|
+
label: 'Accent colour',
|
|
200
|
+
default: 'default',
|
|
201
|
+
options: ['default', 'blue', 'green', 'amber', 'purple', 'pink', 'teal', 'red', 'cyan'],
|
|
202
|
+
});
|
|
203
|
+
const statItem = (id, title, description, category, accent) => ({
|
|
204
|
+
id,
|
|
205
|
+
title,
|
|
206
|
+
description,
|
|
207
|
+
kind: 'stat',
|
|
208
|
+
category,
|
|
209
|
+
defaultContainer: 'kpi-grid',
|
|
210
|
+
supportedContainers: STAT_CONTAINERS,
|
|
211
|
+
defaultAccentColor: accent,
|
|
212
|
+
settings: [customTitleSetting(), accentColorSetting()],
|
|
213
|
+
});
|
|
214
|
+
const listItem = (id, title, description, category) => ({
|
|
215
|
+
id,
|
|
216
|
+
title,
|
|
217
|
+
description,
|
|
218
|
+
kind: 'list',
|
|
219
|
+
category,
|
|
220
|
+
defaultContainer: 'stack',
|
|
221
|
+
supportedContainers: LIST_CONTAINERS,
|
|
222
|
+
settings: [customTitleSetting(), countSetting()],
|
|
223
|
+
});
|
|
224
|
+
const progressItem = (id, title, description, category) => ({
|
|
225
|
+
id,
|
|
226
|
+
title,
|
|
227
|
+
description,
|
|
228
|
+
kind: 'progress',
|
|
229
|
+
category,
|
|
230
|
+
defaultContainer: 'stack',
|
|
231
|
+
supportedContainers: STACK_ONLY,
|
|
232
|
+
settings: [customTitleSetting()],
|
|
233
|
+
});
|
|
234
|
+
const calendarItem = (id, title, description, category) => ({
|
|
235
|
+
id,
|
|
236
|
+
title,
|
|
237
|
+
description,
|
|
238
|
+
kind: 'calendar-strip',
|
|
239
|
+
category,
|
|
240
|
+
defaultContainer: 'stack',
|
|
241
|
+
supportedContainers: STACK_ONLY,
|
|
242
|
+
settings: [customTitleSetting()],
|
|
243
|
+
});
|
|
244
|
+
const customItem = (id, title, description, category) => ({
|
|
245
|
+
id,
|
|
246
|
+
title,
|
|
247
|
+
description,
|
|
248
|
+
kind: 'custom',
|
|
249
|
+
category,
|
|
250
|
+
defaultContainer: 'stack',
|
|
251
|
+
supportedContainers: STACK_ONLY,
|
|
252
|
+
settings: [],
|
|
253
|
+
});
|
|
254
|
+
/**
|
|
255
|
+
* The bundled catalog — same set + order as the backend `WidgetCatalogMeta.All`,
|
|
256
|
+
* the iOS `WidgetCatalogItem.bundled`, and the Kotlin `BUNDLED_WIDGET_CATALOG`.
|
|
6
257
|
*/
|
|
7
|
-
export
|
|
258
|
+
export const BUNDLED_WIDGET_CATALOG = [
|
|
259
|
+
// My Apps (special client-rendered launcher)
|
|
260
|
+
customItem('hub.my-apps', 'My apps', 'Quick-launch the CCMS apps you use.', CAT_APPS),
|
|
261
|
+
// Tasks
|
|
262
|
+
statItem('task.my-open-count', 'Open tasks', 'How many tasks you have open right now.', CAT_TASKS, '#3B82F6'),
|
|
263
|
+
listItem('task.due-today', 'Due today', 'Tasks due today, by priority.', CAT_TASKS),
|
|
264
|
+
listItem('task.overdue', 'Overdue tasks', 'Tasks past their due date.', CAT_TASKS),
|
|
265
|
+
listItem('task.recently-assigned', 'Recently assigned', 'The latest tasks assigned to you.', CAT_TASKS),
|
|
266
|
+
listItem('task.high-priority', 'High priority', 'Your open high-priority tasks.', CAT_TASKS),
|
|
267
|
+
listItem('task.due-this-week', 'Due this week', 'Tasks due in the next seven days.', CAT_TASKS),
|
|
268
|
+
progressItem('task.completion-rate', 'Completion rate', 'Your task completion this week.', CAT_TASKS),
|
|
269
|
+
// HR & People
|
|
270
|
+
calendarItem('hr.next-leave', 'My next leave', 'Your next upcoming approved or pending leave.', CAT_HR),
|
|
271
|
+
listItem('hr.upcoming-birthdays', 'Upcoming birthdays', "Celebrate the team's upcoming birthdays.", CAT_HR),
|
|
272
|
+
listItem('hr.team-leave', 'Team leave', 'Colleagues currently on or about to start leave.', CAT_HR),
|
|
273
|
+
listItem('hr.pending-leave', 'My pending leave', 'Your leave requests awaiting approval.', CAT_HR),
|
|
274
|
+
statItem('hr.headcount', 'Headcount', 'Total active employees.', CAT_HR, '#16A34A'),
|
|
275
|
+
listItem('hr.birthdays-this-month', 'Birthdays this month', 'Everyone celebrating this month.', CAT_HR),
|
|
276
|
+
// Procurement
|
|
277
|
+
listItem('proc.pending-approvals', 'Pending approvals', 'Purchase requests waiting on you to approve.', CAT_PROCUREMENT),
|
|
278
|
+
listItem('proc.my-requests', 'My requests', 'Purchase requests you submitted and their status.', CAT_PROCUREMENT),
|
|
279
|
+
listItem('proc.high-value-pending', 'High-value pending', 'Pending approvals over a value threshold.', CAT_PROCUREMENT),
|
|
280
|
+
// Bookings
|
|
281
|
+
{
|
|
282
|
+
id: 'booking.my-upcoming',
|
|
283
|
+
title: 'My bookings',
|
|
284
|
+
description: 'Your upcoming bookings; filterable by resource type.',
|
|
285
|
+
kind: 'list',
|
|
286
|
+
category: CAT_BOOKINGS,
|
|
287
|
+
defaultContainer: 'stack',
|
|
288
|
+
supportedContainers: LIST_CONTAINERS,
|
|
289
|
+
settings: [
|
|
290
|
+
customTitleSetting(),
|
|
291
|
+
countSetting(),
|
|
292
|
+
{
|
|
293
|
+
key: 'resourceTypeId',
|
|
294
|
+
type: 'int',
|
|
295
|
+
label: 'Resource type id (0 = all)',
|
|
296
|
+
default: 0,
|
|
297
|
+
min: 0,
|
|
298
|
+
max: 9999,
|
|
299
|
+
},
|
|
300
|
+
],
|
|
301
|
+
},
|
|
302
|
+
listItem('booking.today', "Today's bookings", 'Bookings happening today.', CAT_BOOKINGS),
|
|
303
|
+
listItem('booking.pending-approval', 'Pending bookings', 'Bookings awaiting approval.', CAT_BOOKINGS),
|
|
304
|
+
// Learning
|
|
305
|
+
progressItem('resource.in-progress-course', 'Course in progress', 'Pick up your most recent course.', CAT_LEARNING),
|
|
306
|
+
statItem('resource.completed-courses', 'Completed courses', "Courses you've finished.", CAT_LEARNING, '#8B5CF6'),
|
|
307
|
+
listItem('resource.recommended', 'Recommended for you', "Courses suggested from what you've started.", CAT_LEARNING),
|
|
308
|
+
// Announcements
|
|
309
|
+
statItem('announcement.unread', 'Unread announcements', "How many announcements you haven't read.", CAT_ANNOUNCEMENTS, '#F97316'),
|
|
310
|
+
listItem('announcement.latest-feed', 'Latest announcements', 'The newest announcements, pinned first.', CAT_ANNOUNCEMENTS),
|
|
311
|
+
listItem('announcement.pinned', 'Pinned announcements', 'Important pinned announcements.', CAT_ANNOUNCEMENTS),
|
|
312
|
+
listItem('announcement.high-priority', 'High-priority notices', 'Urgent and high-priority announcements.', CAT_ANNOUNCEMENTS),
|
|
313
|
+
// Meetings
|
|
314
|
+
statItem('meeting.next-meeting', 'Next meeting', 'Your next upcoming meeting.', CAT_MEETINGS, '#EC4899'),
|
|
315
|
+
listItem('meeting.today', "Today's meetings", 'Meetings on your calendar today.', CAT_MEETINGS),
|
|
316
|
+
statItem('meeting.invites-pending', 'Pending invites', 'Meeting invites awaiting your reply.', CAT_MEETINGS, '#EC4899'),
|
|
317
|
+
// Messages
|
|
318
|
+
statItem('chat.unread', 'Unread messages', 'Unread conversations across your chats.', CAT_MESSAGES, '#2563EB'),
|
|
319
|
+
];
|
|
8
320
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/dashboard/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/dashboard/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { CoursePrerequisiteModelView } from './CoursePrerequisiteModelView';
|
|
2
|
+
import { SessionModelView } from './SessionModelView';
|
|
1
3
|
/**
|
|
2
4
|
* Course Model View
|
|
3
5
|
*/
|
|
@@ -30,6 +32,21 @@ export interface CourseModelView {
|
|
|
30
32
|
visibilityIcon?: string | null;
|
|
31
33
|
slug?: string | null;
|
|
32
34
|
publishedDateTime?: number | null;
|
|
35
|
+
sessions?: SessionModelView[] | null;
|
|
36
|
+
viewerStatusID?: number | null;
|
|
37
|
+
viewerStatusName?: string | null;
|
|
38
|
+
viewerStatusColor?: string | null;
|
|
39
|
+
viewerStatusIcon?: string | null;
|
|
40
|
+
viewerPercentComplete?: number | null;
|
|
41
|
+
viewerCompletedSessionCount?: number | null;
|
|
42
|
+
viewerLastSessionID?: number | null;
|
|
43
|
+
viewerStartedAt?: number | null;
|
|
44
|
+
viewerLastAccessedAt?: number | null;
|
|
45
|
+
viewerCompletedAt?: number | null;
|
|
46
|
+
canStart?: boolean | null;
|
|
47
|
+
requiredPrerequisites?: CoursePrerequisiteModelView[] | null;
|
|
48
|
+
unmetPrerequisites?: CoursePrerequisiteModelView[] | null;
|
|
49
|
+
recommendedPrerequisites?: CoursePrerequisiteModelView[] | null;
|
|
33
50
|
}
|
|
34
51
|
/**
|
|
35
52
|
* Course Filter Model
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CourseModelView.d.ts","sourceRoot":"","sources":["../../../../src/models/resources/ModelView/CourseModelView.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"CourseModelView.d.ts","sourceRoot":"","sources":["../../../../src/models/resources/ModelView/CourseModelView.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource Settings Entity
|
|
3
|
+
*
|
|
4
|
+
* Single-row settings entity holding the admin-managed Resource Centre feature
|
|
5
|
+
* toggles enforced inside the ResourceManagement service.
|
|
6
|
+
*
|
|
7
|
+
* Note: the AI Search / AI Chat (RAG) toggles are NOT here — they live in AI
|
|
8
|
+
* Management as AIFeatureFlag rows (see {@link AiFeatureFlag}). Mirror of the
|
|
9
|
+
* backend `CCMSLib.Models.Resources.ResourceSettings`.
|
|
10
|
+
*/
|
|
11
|
+
export interface ResourceSettings {
|
|
12
|
+
/** Primary key (single-row table) */
|
|
13
|
+
settingsID: number;
|
|
14
|
+
/** When false, the public course/KB catalogue endpoints return nothing. */
|
|
15
|
+
enablePublicCatalogue: boolean;
|
|
16
|
+
/** Default CourseVisibility lookup id applied to newly created courses/articles. */
|
|
17
|
+
defaultCourseVisibilityID: number;
|
|
18
|
+
/** When true, newly created courses/articles publish immediately (no Draft). */
|
|
19
|
+
autoPublishNewResources: boolean;
|
|
20
|
+
/** Optional support/contact email surfaced in the public Resource Centre. */
|
|
21
|
+
adminContactEmail?: string | null;
|
|
22
|
+
/** yyyyMMddHHmmss numeric timestamps. */
|
|
23
|
+
modifiedDateTime: number;
|
|
24
|
+
createdDateTime: number;
|
|
25
|
+
}
|
|
26
|
+
/** Anonymous-safe subset returned by GET api/resource-settings/public. */
|
|
27
|
+
export interface PublicResourceSettings {
|
|
28
|
+
enablePublicCatalogue: boolean;
|
|
29
|
+
adminContactEmail?: string | null;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ResourceSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceSettings.d.ts","sourceRoot":"","sources":["../../../src/models/resources/ResourceSettings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB,2EAA2E;IAC3E,qBAAqB,EAAE,OAAO,CAAC;IAE/B,oFAAoF;IACpF,yBAAyB,EAAE,MAAM,CAAC;IAElC,gFAAgF;IAChF,uBAAuB,EAAE,OAAO,CAAC;IAEjC,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceSettings.js","sourceRoot":"","sources":["../../../src/models/resources/ResourceSettings.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Note
|
|
3
|
+
* A server-synced free-text study note a viewer keeps against a single
|
|
4
|
+
* CourseSession. One active note per (sessionID, viewer) — the viewer is the
|
|
5
|
+
* signed-in user (userID) or, for anonymous visitors, the client-supplied
|
|
6
|
+
* anonymousID. Content travels as plain text; the backend persists it
|
|
7
|
+
* Base64-encoded at rest. Timestamps are numeric yyyyMMddHHmmss.
|
|
8
|
+
*/
|
|
9
|
+
export interface SessionNote {
|
|
10
|
+
sessionNoteID: number;
|
|
11
|
+
sessionID: number;
|
|
12
|
+
courseID?: number | null;
|
|
13
|
+
userID?: string | null;
|
|
14
|
+
anonymousID?: string | null;
|
|
15
|
+
content: string;
|
|
16
|
+
createdDateTime: number;
|
|
17
|
+
modifiedDateTime: number;
|
|
18
|
+
isActive: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Request body for upserting the caller's session note.
|
|
22
|
+
* Matches POST api/session-notes.
|
|
23
|
+
*/
|
|
24
|
+
export interface SessionNoteUpsertRequest {
|
|
25
|
+
sessionID: number;
|
|
26
|
+
courseID?: number | null;
|
|
27
|
+
content: string;
|
|
28
|
+
anonymousID?: string | null;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=SessionNote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionNote.d.ts","sourceRoot":"","sources":["../../../src/models/resources/SessionNote.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionNote.js","sourceRoot":"","sources":["../../../src/models/resources/SessionNote.ts"],"names":[],"mappings":""}
|
|
@@ -16,8 +16,10 @@ export * from './ResourceUsageAction';
|
|
|
16
16
|
export * from './UserCourseProgress';
|
|
17
17
|
export * from './UserProgressStatus';
|
|
18
18
|
export * from './UserSessionProgress';
|
|
19
|
+
export * from './SessionNote';
|
|
19
20
|
export * from './UpdateCourseRequest';
|
|
20
21
|
export * from './UpdateCourseCategoryRequest';
|
|
22
|
+
export * from './ResourceSettings';
|
|
21
23
|
export * from './ModelView';
|
|
22
24
|
export * from './CacheKeys';
|
|
23
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAG9C,cAAc,oBAAoB,CAAC;AAGnC,cAAc,aAAa,CAAC;AAG5B,cAAc,aAAa,CAAC"}
|
|
@@ -17,9 +17,12 @@ export * from './ResourceUsageAction';
|
|
|
17
17
|
export * from './UserCourseProgress';
|
|
18
18
|
export * from './UserProgressStatus';
|
|
19
19
|
export * from './UserSessionProgress';
|
|
20
|
+
export * from './SessionNote';
|
|
20
21
|
// Partial-update request DTOs
|
|
21
22
|
export * from './UpdateCourseRequest';
|
|
22
23
|
export * from './UpdateCourseCategoryRequest';
|
|
24
|
+
// Settings
|
|
25
|
+
export * from './ResourceSettings';
|
|
23
26
|
// Model Views
|
|
24
27
|
export * from './ModelView';
|
|
25
28
|
// Cache Keys
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gBAAgB;AAChB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAE9B,8BAA8B;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAE9C,WAAW;AACX,cAAc,oBAAoB,CAAC;AAEnC,cAAc;AACd,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,aAAa,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Resources Service Hooks
|
|
3
3
|
* React hooks for accessing resource management services
|
|
4
4
|
*/
|
|
5
|
-
import { ResourcesServices, CourseService, CourseCategoryService, CourseSessionService, UsageLogService, CourseStatusService, CourseCategoryStatusService, CourseSessionStatusService, CourseSessionTypeService, PublicCoursesService, PublicCategoriesService, PublicCategoriesEnrichedService, UserCourseProgressService, UserSessionProgressService, UserProgressStatusService, CourseVisibilityService, CoursePrerequisiteService, ResourceUsageActionService } from '../../../services/resources';
|
|
5
|
+
import { ResourcesServices, CourseService, CourseCategoryService, CourseSessionService, UsageLogService, CourseStatusService, CourseCategoryStatusService, CourseSessionStatusService, CourseSessionTypeService, PublicCoursesService, PublicCategoriesService, PublicCategoriesEnrichedService, UserCourseProgressService, UserSessionProgressService, UserProgressStatusService, CourseVisibilityService, CoursePrerequisiteService, ResourceUsageActionService, ResourceSettingsService } from '../../../services/resources';
|
|
6
6
|
/**
|
|
7
7
|
* Hook to access all resources-related services
|
|
8
8
|
* @returns ResourcesServices object containing all resources service instances
|
|
@@ -84,4 +84,8 @@ export declare function useCoursePrerequisiteService(): CoursePrerequisiteServic
|
|
|
84
84
|
* Hook to access ResourceUsageActionService
|
|
85
85
|
*/
|
|
86
86
|
export declare function useResourceUsageActionService(): ResourceUsageActionService;
|
|
87
|
+
/**
|
|
88
|
+
* Hook to access ResourceSettingsService (Resource Centre platform settings)
|
|
89
|
+
*/
|
|
90
|
+
export declare function useResourceSettingsService(): ResourceSettingsService;
|
|
87
91
|
//# sourceMappingURL=useResourcesServices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResourcesServices.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"useResourcesServices.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAMxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,2BAA2B,CAE5E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,wBAAwB,CAEtE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAE9D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,+BAA+B,CAEpF;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,yBAAyB,CAExE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,CAE1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE"}
|
|
@@ -124,4 +124,10 @@ export function useCoursePrerequisiteService() {
|
|
|
124
124
|
export function useResourceUsageActionService() {
|
|
125
125
|
return useResourcesServices().resourceUsageAction;
|
|
126
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Hook to access ResourceSettingsService (Resource Centre platform settings)
|
|
129
|
+
*/
|
|
130
|
+
export function useResourceSettingsService() {
|
|
131
|
+
return useResourcesServices().resourceSettings;
|
|
132
|
+
}
|
|
127
133
|
//# sourceMappingURL=useResourcesServices.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResourcesServices.js","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"useResourcesServices.js","sourceRoot":"","sources":["../../../../src/react/hooks/services/useResourcesServices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAuBrC;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,oBAAoB,EAAE,CAAC,MAAM,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,oBAAoB,EAAE,CAAC,cAAc,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,EAAE,CAAC,QAAQ,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC,YAAY,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO,oBAAoB,EAAE,CAAC,oBAAoB,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,oBAAoB,EAAE,CAAC,iBAAiB,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,EAAE,CAAC,aAAa,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO,oBAAoB,EAAE,CAAC,wBAAwB,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,oBAAoB,EAAE,CAAC,kBAAkB,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DashboardAggregatorClient
|
|
3
|
+
* SignalR client for the Dashboard-Aggregator realtime hub (`/hubs/dashboard`).
|
|
4
|
+
*
|
|
5
|
+
* The aggregator exposes ONE hub the Hub app connects to instead of N per-domain
|
|
6
|
+
* connections. Server → client messages:
|
|
7
|
+
* - `WidgetDelta` — a single refreshed {@link DashboardWidget}; merge by `widgetId`.
|
|
8
|
+
* - `WidgetInvalidated` — `{ widgetIds: string[] }`; re-fetch just those widgets.
|
|
9
|
+
*
|
|
10
|
+
* Mirrors the iOS `DashboardRealtimeClient` and the Kotlin
|
|
11
|
+
* `DashboardAggregatorHubClient`. Distinct from {@link DomainDashboardClient}
|
|
12
|
+
* (the admin per-domain `/hubs/dashboard/{domain}` client) — kept separate.
|
|
13
|
+
*
|
|
14
|
+
* Local events emitted (subscribe via {@link BaseSignalRClient.on}):
|
|
15
|
+
* - `'widgetDelta'` → {@link DashboardWidget}
|
|
16
|
+
* - `'widgetInvalidated'` → `string[]` (the invalidated widget ids)
|
|
17
|
+
*/
|
|
18
|
+
import { BaseSignalRClient } from '../shared/BaseSignalRClient';
|
|
19
|
+
import { SignalRClientOptions } from '../shared/types';
|
|
20
|
+
import type { DashboardWidget } from '../../models/dashboard';
|
|
21
|
+
/** Payload shape of the server's `WidgetInvalidated` message. */
|
|
22
|
+
export interface WidgetInvalidatedPayload {
|
|
23
|
+
widgetIds: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Client for the cross-domain dashboard aggregator hub.
|
|
27
|
+
* Connects to `/hubs/dashboard` on the aggregator WebSocket service.
|
|
28
|
+
*/
|
|
29
|
+
export declare class DashboardAggregatorClient extends BaseSignalRClient {
|
|
30
|
+
constructor(baseUrl: string, getToken: () => Promise<string | null>, options?: SignalRClientOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Register server-to-client event handlers.
|
|
33
|
+
*/
|
|
34
|
+
protected setupServerMethods(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Subscribe to refreshed widgets pushed by the hub.
|
|
37
|
+
* @param handler - Invoked with each refreshed {@link DashboardWidget}.
|
|
38
|
+
* @returns An unsubscribe handle.
|
|
39
|
+
*/
|
|
40
|
+
onWidgetDelta(handler: (widget: DashboardWidget) => void): import("../shared/types").SubscriptionHandle;
|
|
41
|
+
/**
|
|
42
|
+
* Subscribe to widget-invalidation notifications pushed by the hub.
|
|
43
|
+
* @param handler - Invoked with the list of invalidated widget ids.
|
|
44
|
+
* @returns An unsubscribe handle.
|
|
45
|
+
*/
|
|
46
|
+
onWidgetInvalidated(handler: (widgetIds: string[]) => void): import("../shared/types").SubscriptionHandle;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=DashboardAggregatorClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardAggregatorClient.d.ts","sourceRoot":"","sources":["../../../src/realtime/dashboards/DashboardAggregatorClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,iBAAiB;gBAE5D,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EACtC,OAAO,GAAE,oBAAyB;IAQpC;;OAEG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAiBpC;;;;OAIG;IACI,aAAa,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI;IAI/D;;;;OAIG;IACI,mBAAmB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI;CAGlE"}
|