@ever-gauzy/plugin-integration-plane-api 0.1.0 → 0.1.1
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/README.md +1 -1
- package/dist/config/serializers/analytics/analytics.serializer.d.ts +4 -0
- package/dist/config/serializers/analytics/analytics.serializer.js +1 -0
- package/dist/config/serializers/analytics/analytics.serializer.js.map +1 -1
- package/dist/config/serializers/cycles/cycle.serializer.d.ts +9 -0
- package/dist/config/serializers/cycles/cycle.serializer.js +32 -2
- package/dist/config/serializers/cycles/cycle.serializer.js.map +1 -1
- package/dist/config/serializers/index.d.ts +1 -0
- package/dist/config/serializers/index.js +1 -0
- package/dist/config/serializers/index.js.map +1 -1
- package/dist/config/serializers/issue-link/issue-link.serializer.js +6 -3
- package/dist/config/serializers/issue-link/issue-link.serializer.js.map +1 -1
- package/dist/config/serializers/modules/module.serializer.js +6 -10
- package/dist/config/serializers/modules/module.serializer.js.map +1 -1
- package/dist/config/serializers/notification/notification.serializer.js +3 -2
- package/dist/config/serializers/notification/notification.serializer.js.map +1 -1
- package/dist/config/serializers/recent-visits/recent-visits.serializer.js +2 -2
- package/dist/config/serializers/recent-visits/recent-visits.serializer.js.map +1 -1
- package/dist/config/serializers/stickies/index.d.ts +1 -0
- package/dist/config/serializers/stickies/index.js +18 -0
- package/dist/config/serializers/stickies/index.js.map +1 -0
- package/dist/config/serializers/stickies/sticky.serializer.d.ts +14 -0
- package/dist/config/serializers/stickies/sticky.serializer.js +100 -0
- package/dist/config/serializers/stickies/sticky.serializer.js.map +1 -0
- package/dist/config/serializers/tasks/tasks.serializer.d.ts +19 -16
- package/dist/config/serializers/tasks/tasks.serializer.js +147 -132
- package/dist/config/serializers/tasks/tasks.serializer.js.map +1 -1
- package/dist/config/serializers/user/actor-details.helper.d.ts +1 -1
- package/dist/config/serializers/user/actor-details.helper.js.map +1 -1
- package/dist/config/serializers/user/user.serializer.d.ts +37 -0
- package/dist/config/serializers/user/user.serializer.js +48 -0
- package/dist/config/serializers/user/user.serializer.js.map +1 -1
- package/dist/main.js +12 -0
- package/dist/main.js.map +1 -1
- package/dist/modules/activity/activity.service.js +1 -1
- package/dist/modules/activity/activity.service.js.map +1 -1
- package/dist/modules/advance-analytics/advance-analytics.controller.d.ts +10 -14
- package/dist/modules/advance-analytics/advance-analytics.controller.js +32 -71
- package/dist/modules/advance-analytics/advance-analytics.controller.js.map +1 -1
- package/dist/modules/advance-analytics/advance-analytics.module.d.ts +3 -11
- package/dist/modules/advance-analytics/advance-analytics.module.js +4 -30
- package/dist/modules/advance-analytics/advance-analytics.module.js.map +1 -1
- package/dist/modules/advance-analytics/advance-analytics.service.d.ts +59 -4
- package/dist/modules/advance-analytics/advance-analytics.service.js +274 -8
- package/dist/modules/advance-analytics/advance-analytics.service.js.map +1 -1
- package/dist/modules/advance-analytics/index.d.ts +2 -0
- package/dist/modules/advance-analytics/index.js +2 -0
- package/dist/modules/advance-analytics/index.js.map +1 -1
- package/dist/modules/advance-analytics/workspace-advance-analytics.controller.d.ts +37 -0
- package/dist/modules/advance-analytics/workspace-advance-analytics.controller.js +98 -0
- package/dist/modules/advance-analytics/workspace-advance-analytics.controller.js.map +1 -0
- package/dist/modules/advance-analytics/workspace-advance-analytics.module.d.ts +7 -0
- package/dist/modules/advance-analytics/workspace-advance-analytics.module.js +30 -0
- package/dist/modules/advance-analytics/workspace-advance-analytics.module.js.map +1 -0
- package/dist/modules/api-fetch/api-fetch.service.d.ts +26 -4
- package/dist/modules/api-fetch/api-fetch.service.js +70 -7
- package/dist/modules/api-fetch/api-fetch.service.js.map +1 -1
- package/dist/modules/auth/auth.guard.js +9 -4
- package/dist/modules/auth/auth.guard.js.map +1 -1
- package/dist/modules/auth/auth.service.js +17 -12
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/comments/comments.service.js +7 -7
- package/dist/modules/comments/comments.service.js.map +1 -1
- package/dist/modules/cycles/archived-cycles.controller.d.ts +19 -0
- package/dist/modules/cycles/archived-cycles.controller.js +65 -0
- package/dist/modules/cycles/archived-cycles.controller.js.map +1 -0
- package/dist/modules/cycles/archived-cycles.module.d.ts +2 -0
- package/dist/modules/cycles/archived-cycles.module.js +22 -0
- package/dist/modules/cycles/archived-cycles.module.js.map +1 -0
- package/dist/modules/cycles/cycles.controller.d.ts +29 -1
- package/dist/modules/cycles/cycles.controller.js +66 -0
- package/dist/modules/cycles/cycles.controller.js.map +1 -1
- package/dist/modules/cycles/cycles.service.d.ts +56 -0
- package/dist/modules/cycles/cycles.service.js +209 -11
- package/dist/modules/cycles/cycles.service.js.map +1 -1
- package/dist/modules/dashboard/dashboard.service.js +3 -4
- package/dist/modules/dashboard/dashboard.service.js.map +1 -1
- package/dist/modules/dashboard/widget.service.js +2 -2
- package/dist/modules/dashboard/widget.service.js.map +1 -1
- package/dist/modules/employee-properties/employee-properties.service.js +3 -3
- package/dist/modules/employee-properties/employee-properties.service.js.map +1 -1
- package/dist/modules/invitation/invitation.service.js +23 -13
- package/dist/modules/invitation/invitation.service.js.map +1 -1
- package/dist/modules/issue-links/issue-links.service.js +5 -5
- package/dist/modules/issue-links/issue-links.service.js.map +1 -1
- package/dist/modules/issue-relations/issue-relations.service.js +3 -3
- package/dist/modules/issue-relations/issue-relations.service.js.map +1 -1
- package/dist/modules/issues/draft-issues/draft-issues.service.js +4 -4
- package/dist/modules/issues/draft-issues/draft-issues.service.js.map +1 -1
- package/dist/modules/issues/intake-issues/intake-issues.service.js +4 -4
- package/dist/modules/issues/intake-issues/intake-issues.service.js.map +1 -1
- package/dist/modules/issues/issue-labels/issue-labels.service.js +4 -4
- package/dist/modules/issues/issue-labels/issue-labels.service.js.map +1 -1
- package/dist/modules/issues/issues.service.js +34 -28
- package/dist/modules/issues/issues.service.js.map +1 -1
- package/dist/modules/mention/mention.service.js +1 -1
- package/dist/modules/mention/mention.service.js.map +1 -1
- package/dist/modules/notification/notification.service.js +4 -4
- package/dist/modules/notification/notification.service.js.map +1 -1
- package/dist/modules/pages/pages.controller.d.ts +7 -0
- package/dist/modules/pages/pages.controller.js +8 -7
- package/dist/modules/pages/pages.controller.js.map +1 -1
- package/dist/modules/pages/pages.service.d.ts +4 -4
- package/dist/modules/pages/pages.service.js +42 -68
- package/dist/modules/pages/pages.service.js.map +1 -1
- package/dist/modules/project/project-deploy-boards/project-deploy-boards.service.js +3 -3
- package/dist/modules/project/project-deploy-boards/project-deploy-boards.service.js.map +1 -1
- package/dist/modules/project/project-identifiers/project-identifiers.service.js +1 -1
- package/dist/modules/project/project-identifiers/project-identifiers.service.js.map +1 -1
- package/dist/modules/project/project.module.js +11 -9
- package/dist/modules/project/project.module.js.map +1 -1
- package/dist/modules/project/project.service.js +10 -10
- package/dist/modules/project/project.service.js.map +1 -1
- package/dist/modules/project-module/archived-modules.controller.d.ts +19 -0
- package/dist/modules/project-module/archived-modules.controller.js +65 -0
- package/dist/modules/project-module/archived-modules.controller.js.map +1 -0
- package/dist/modules/project-module/archived-modules.module.d.ts +2 -0
- package/dist/modules/project-module/archived-modules.module.js +22 -0
- package/dist/modules/project-module/archived-modules.module.js.map +1 -0
- package/dist/modules/project-module/project-module.controller.d.ts +62 -2
- package/dist/modules/project-module/project-module.controller.js +161 -2
- package/dist/modules/project-module/project-module.controller.js.map +1 -1
- package/dist/modules/project-module/project-module.module.js +2 -1
- package/dist/modules/project-module/project-module.module.js.map +1 -1
- package/dist/modules/project-module/project-module.service.d.ts +33 -0
- package/dist/modules/project-module/project-module.service.js +115 -7
- package/dist/modules/project-module/project-module.service.js.map +1 -1
- package/dist/modules/reactions/reactions.service.js +3 -3
- package/dist/modules/reactions/reactions.service.js.map +1 -1
- package/dist/modules/recent-visits/recent-visits.service.js +1 -1
- package/dist/modules/recent-visits/recent-visits.service.js.map +1 -1
- package/dist/modules/states/states.service.js +3 -5
- package/dist/modules/states/states.service.js.map +1 -1
- package/dist/modules/stickies/stickies.controller.d.ts +41 -0
- package/dist/modules/stickies/stickies.controller.js +116 -0
- package/dist/modules/stickies/stickies.controller.js.map +1 -0
- package/dist/modules/stickies/stickies.module.d.ts +2 -0
- package/dist/modules/stickies/stickies.module.js +23 -0
- package/dist/modules/stickies/stickies.module.js.map +1 -0
- package/dist/modules/stickies/stickies.service.d.ts +47 -0
- package/dist/modules/stickies/stickies.service.js +162 -0
- package/dist/modules/stickies/stickies.service.js.map +1 -0
- package/dist/modules/subscription/subscription.service.js +3 -3
- package/dist/modules/subscription/subscription.service.js.map +1 -1
- package/dist/modules/user/user.service.d.ts +9 -1
- package/dist/modules/user/user.service.js +94 -7
- package/dist/modules/user/user.service.js.map +1 -1
- package/dist/modules/user-favorites/user-favorites.service.js +3 -3
- package/dist/modules/user-favorites/user-favorites.service.js.map +1 -1
- package/dist/modules/views/view.service.js +4 -4
- package/dist/modules/views/view.service.js.map +1 -1
- package/dist/modules/work-items/work-items.controller.d.ts +11 -1
- package/dist/modules/work-items/work-items.controller.js +14 -3
- package/dist/modules/work-items/work-items.controller.js.map +1 -1
- package/dist/modules/work-items/work-items.module.js +3 -0
- package/dist/modules/work-items/work-items.module.js.map +1 -1
- package/dist/modules/work-items/work-items.service.d.ts +20 -4
- package/dist/modules/work-items/work-items.service.js +76 -9
- package/dist/modules/work-items/work-items.service.js.map +1 -1
- package/dist/modules/workspace/workspace-context.service.d.ts +18 -0
- package/dist/modules/workspace/workspace-context.service.js +29 -3
- package/dist/modules/workspace/workspace-context.service.js.map +1 -1
- package/dist/modules/workspace/workspace.controller.d.ts +9 -0
- package/dist/modules/workspace/workspace.controller.js +26 -0
- package/dist/modules/workspace/workspace.controller.js.map +1 -1
- package/dist/modules/workspace/workspace.middleware.d.ts +14 -1
- package/dist/modules/workspace/workspace.middleware.js +57 -4
- package/dist/modules/workspace/workspace.middleware.js.map +1 -1
- package/dist/modules/workspace/workspace.module.js +20 -2
- package/dist/modules/workspace/workspace.module.js.map +1 -1
- package/dist/modules/workspace/workspace.service.d.ts +13 -2
- package/dist/modules/workspace/workspace.service.js +106 -27
- package/dist/modules/workspace/workspace.service.js.map +1 -1
- package/dist/mount.js +8 -3
- package/dist/mount.js.map +1 -1
- package/dist/plane-proxy.module.js +5 -3
- package/dist/plane-proxy.module.js.map +1 -1
- package/dist/request-context.d.ts +53 -0
- package/dist/request-context.js +67 -0
- package/dist/request-context.js.map +1 -0
- package/package.json +109 -109
|
@@ -30,8 +30,32 @@ let AdvanceAnalyticsService = class AdvanceAnalyticsService extends api_fetch_se
|
|
|
30
30
|
this._serverFetchService = _serverFetchService;
|
|
31
31
|
this.path = '/tasks';
|
|
32
32
|
}
|
|
33
|
+
/*
|
|
34
|
+
|--------------------------------------------------------------------------
|
|
35
|
+
| PRIVATE: Task fetching helpers
|
|
36
|
+
|--------------------------------------------------------------------------
|
|
37
|
+
*/
|
|
33
38
|
/**
|
|
34
|
-
* Get tasks from external API
|
|
39
|
+
* Get ALL tasks from external API (workspace-level, no project filter)
|
|
40
|
+
*/
|
|
41
|
+
async getAllTasks() {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
try {
|
|
44
|
+
const query = qs_1.default.stringify((0, config_1.getTaskQuery)(undefined, {}, ['members.user', 'tags', 'taskStatus', 'organizationSprint', 'modules'], undefined, false));
|
|
45
|
+
const tasks = (await this.apiFetch({
|
|
46
|
+
method: 'GET',
|
|
47
|
+
path: this.path,
|
|
48
|
+
query
|
|
49
|
+
})).data;
|
|
50
|
+
return tasks.items || [];
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
this.logger.error(`Failed to fetch all tasks: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
54
|
+
this.handleApiError(error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get tasks from external API with optional project/cycle/module filters
|
|
35
59
|
*/
|
|
36
60
|
async getTasks(projectId, cycleId, moduleId) {
|
|
37
61
|
var _a, _b;
|
|
@@ -55,12 +79,17 @@ let AdvanceAnalyticsService = class AdvanceAnalyticsService extends api_fetch_se
|
|
|
55
79
|
}
|
|
56
80
|
catch (error) {
|
|
57
81
|
this.logger.error(`Failed to fetch tasks: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
58
|
-
|
|
82
|
+
this.handleApiError(error);
|
|
59
83
|
}
|
|
60
84
|
}
|
|
85
|
+
/*
|
|
86
|
+
|--------------------------------------------------------------------------
|
|
87
|
+
| PROJECT-LEVEL analytics (with projectId)
|
|
88
|
+
|--------------------------------------------------------------------------
|
|
89
|
+
*/
|
|
61
90
|
/**
|
|
62
91
|
* Get advance analytics stats (total/started/backlog/unstarted/completed counts)
|
|
63
|
-
* Endpoint: GET /:projectId/advance-analytics
|
|
92
|
+
* Endpoint: GET /projects/:projectId/advance-analytics
|
|
64
93
|
*/
|
|
65
94
|
async getAdvanceAnalytics(projectId, query) {
|
|
66
95
|
var _a, _b;
|
|
@@ -70,12 +99,12 @@ let AdvanceAnalyticsService = class AdvanceAnalyticsService extends api_fetch_se
|
|
|
70
99
|
}
|
|
71
100
|
catch (error) {
|
|
72
101
|
this.logger.error(`Failed to get advance analytics: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
73
|
-
|
|
102
|
+
this.handleApiError(error);
|
|
74
103
|
}
|
|
75
104
|
}
|
|
76
105
|
/**
|
|
77
106
|
* Get advance analytics stats per assignee (for table view)
|
|
78
|
-
* Endpoint: GET /:projectId/advance-analytics-stats/
|
|
107
|
+
* Endpoint: GET /projects/:projectId/advance-analytics-stats/
|
|
79
108
|
*/
|
|
80
109
|
async getAdvanceAnalyticsStats(projectId, query) {
|
|
81
110
|
var _a, _b;
|
|
@@ -88,12 +117,12 @@ let AdvanceAnalyticsService = class AdvanceAnalyticsService extends api_fetch_se
|
|
|
88
117
|
}
|
|
89
118
|
catch (error) {
|
|
90
119
|
this.logger.error(`Failed to get advance analytics stats: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
91
|
-
|
|
120
|
+
this.handleApiError(error);
|
|
92
121
|
}
|
|
93
122
|
}
|
|
94
123
|
/**
|
|
95
124
|
* Get advance analytics charts data
|
|
96
|
-
* Endpoint: GET /:projectId/advance-analytics-charts/
|
|
125
|
+
* Endpoint: GET /projects/:projectId/advance-analytics-charts/
|
|
97
126
|
*/
|
|
98
127
|
async getAdvanceAnalyticsCharts(projectId, query) {
|
|
99
128
|
var _a, _b;
|
|
@@ -129,9 +158,246 @@ let AdvanceAnalyticsService = class AdvanceAnalyticsService extends api_fetch_se
|
|
|
129
158
|
}
|
|
130
159
|
catch (error) {
|
|
131
160
|
this.logger.error(`Failed to get advance analytics charts: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
132
|
-
|
|
161
|
+
this.handleApiError(error);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/*
|
|
165
|
+
|--------------------------------------------------------------------------
|
|
166
|
+
| WORKSPACE-LEVEL analytics (no projectId)
|
|
167
|
+
|--------------------------------------------------------------------------
|
|
168
|
+
*/
|
|
169
|
+
/**
|
|
170
|
+
* Get workspace-level advance analytics.
|
|
171
|
+
*
|
|
172
|
+
* Matches Plane's AdvanceAnalyticsEndpoint.get() which dispatches by tab:
|
|
173
|
+
*
|
|
174
|
+
* - tab=overview → { total_users, total_admins, total_members, total_guests,
|
|
175
|
+
* total_projects, total_work_items, total_cycles, total_intake }
|
|
176
|
+
* Each field is { count: number }.
|
|
177
|
+
*
|
|
178
|
+
* - tab=work-items → { total_work_items, started_work_items, backlog_work_items,
|
|
179
|
+
* un_started_work_items, completed_work_items }
|
|
180
|
+
* Each field is { count: number }.
|
|
181
|
+
*/
|
|
182
|
+
async getWorkspaceAdvanceAnalytics(tab, query) {
|
|
183
|
+
var _a, _b;
|
|
184
|
+
try {
|
|
185
|
+
const resolvedTab = tab || 'overview';
|
|
186
|
+
if (resolvedTab === 'overview') {
|
|
187
|
+
return this.getOverviewData();
|
|
188
|
+
}
|
|
189
|
+
else if (resolvedTab === 'work-items') {
|
|
190
|
+
const tasks = await this.getAllTasks();
|
|
191
|
+
return (0, analytics_1.transformToAdvanceAnalytics)(tasks);
|
|
192
|
+
}
|
|
193
|
+
throw new common_1.BadRequestException('Invalid tab');
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
this.logger.error(`Failed to get workspace advance analytics: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
197
|
+
this.handleApiError(error);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get workspace-level advance analytics charts data.
|
|
202
|
+
*
|
|
203
|
+
* Matches Plane's AdvanceAnalyticsChartEndpoint.get() which dispatches by type:
|
|
204
|
+
*
|
|
205
|
+
* - type=projects → Returns a flat array [{key, name, count}]
|
|
206
|
+
* (work_items, cycles, modules, intake, members, pages, views)
|
|
207
|
+
*
|
|
208
|
+
* - type=work-items → Returns {data, schema} with created vs completed over time
|
|
209
|
+
*
|
|
210
|
+
* - type=custom-work-items → Returns {data, schema} with x_axis/group_by charting
|
|
211
|
+
*/
|
|
212
|
+
async getWorkspaceAdvanceAnalyticsCharts(query) {
|
|
213
|
+
var _a, _b;
|
|
214
|
+
try {
|
|
215
|
+
if (query.type === plugin_integration_plane_models_1.AnalyticsType.PROJECTS || !query.type) {
|
|
216
|
+
return this.getProjectChart();
|
|
217
|
+
}
|
|
218
|
+
const tasks = await this.getAllTasks();
|
|
219
|
+
if (query.type === plugin_integration_plane_models_1.AnalyticsType.CUSTOM_WORK_ITEMS) {
|
|
220
|
+
const xAxis = query.x_axis || plugin_integration_plane_models_1.ChartXAxisProperty.PRIORITY;
|
|
221
|
+
const groupBy = query.group_by;
|
|
222
|
+
return (0, analytics_1.buildChartData)(tasks, xAxis, groupBy);
|
|
223
|
+
}
|
|
224
|
+
else if (query.type === plugin_integration_plane_models_1.AnalyticsType.WORK_ITEMS) {
|
|
225
|
+
// Work item completion chart (created vs completed over time)
|
|
226
|
+
const startDate = new Date();
|
|
227
|
+
startDate.setMonth(startDate.getMonth() - 6);
|
|
228
|
+
startDate.setDate(1);
|
|
229
|
+
const endDate = new Date();
|
|
230
|
+
return (0, analytics_1.buildWorkItemCompletionChart)(tasks, startDate, endDate, 'month');
|
|
231
|
+
}
|
|
232
|
+
throw new common_1.BadRequestException('Invalid type');
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
this.logger.error(`Failed to get workspace advance analytics charts: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
236
|
+
this.handleApiError(error);
|
|
133
237
|
}
|
|
134
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Get workspace-level advance analytics stats (table view).
|
|
241
|
+
*
|
|
242
|
+
* Matches Plane's AdvanceAnalyticsStatsEndpoint.get_work_items_stats():
|
|
243
|
+
* returns per-project work item counts grouped by state group.
|
|
244
|
+
* [{project_id, project__name, cancelled_work_items, completed_work_items,
|
|
245
|
+
* backlog_work_items, un_started_work_items, started_work_items}]
|
|
246
|
+
*/
|
|
247
|
+
async getWorkspaceAdvanceAnalyticsStats(query) {
|
|
248
|
+
var _a, _b;
|
|
249
|
+
try {
|
|
250
|
+
if (query.type !== plugin_integration_plane_models_1.AnalyticsType.WORK_ITEMS) {
|
|
251
|
+
throw new common_1.BadRequestException('Invalid type. Expected: work-items');
|
|
252
|
+
}
|
|
253
|
+
const tasks = await this.getAllTasks();
|
|
254
|
+
// Group tasks by projectId and compute per-project counts
|
|
255
|
+
const projectMap = new Map();
|
|
256
|
+
for (const task of tasks) {
|
|
257
|
+
const projectId = task.projectId || 'none';
|
|
258
|
+
if (!projectMap.has(projectId)) {
|
|
259
|
+
projectMap.set(projectId, { name: projectId, tasks: [] });
|
|
260
|
+
}
|
|
261
|
+
projectMap.get(projectId).tasks.push(task);
|
|
262
|
+
}
|
|
263
|
+
// Fetch project names
|
|
264
|
+
const projects = await this._projectService.getExternalProjects([]);
|
|
265
|
+
const projectNameMap = new Map();
|
|
266
|
+
for (const project of projects) {
|
|
267
|
+
if (project.id) {
|
|
268
|
+
projectNameMap.set(project.id, project.name || project.id);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
const result = [];
|
|
272
|
+
projectMap.forEach((data, projectId) => {
|
|
273
|
+
const counts = {
|
|
274
|
+
cancelled: 0,
|
|
275
|
+
completed: 0,
|
|
276
|
+
backlog: 0,
|
|
277
|
+
unstarted: 0,
|
|
278
|
+
started: 0
|
|
279
|
+
};
|
|
280
|
+
for (const task of data.tasks) {
|
|
281
|
+
const group = (0, analytics_1.getStateGroup)(task);
|
|
282
|
+
switch (group) {
|
|
283
|
+
case 'completed':
|
|
284
|
+
counts.completed++;
|
|
285
|
+
break;
|
|
286
|
+
case 'started':
|
|
287
|
+
counts.started++;
|
|
288
|
+
break;
|
|
289
|
+
case 'backlog':
|
|
290
|
+
counts.backlog++;
|
|
291
|
+
break;
|
|
292
|
+
case 'cancelled':
|
|
293
|
+
counts.cancelled++;
|
|
294
|
+
break;
|
|
295
|
+
default:
|
|
296
|
+
counts.unstarted++;
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
result.push({
|
|
301
|
+
project_id: projectId,
|
|
302
|
+
project__name: projectNameMap.get(projectId) || projectId,
|
|
303
|
+
cancelled_work_items: counts.cancelled,
|
|
304
|
+
completed_work_items: counts.completed,
|
|
305
|
+
backlog_work_items: counts.backlog,
|
|
306
|
+
un_started_work_items: counts.unstarted,
|
|
307
|
+
started_work_items: counts.started
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
return result.sort((a, b) => (a.project__name || '').localeCompare(b.project__name || ''));
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
this.logger.error(`Failed to get workspace advance analytics stats: ${((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) || error.message}`, error.stack);
|
|
314
|
+
this.handleApiError(error);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/*
|
|
318
|
+
|--------------------------------------------------------------------------
|
|
319
|
+
| PRIVATE: Workspace overview data builders
|
|
320
|
+
|--------------------------------------------------------------------------
|
|
321
|
+
*/
|
|
322
|
+
/**
|
|
323
|
+
* Build overview data matching Plane's AdvanceAnalyticsEndpoint.get_overview_data().
|
|
324
|
+
*
|
|
325
|
+
* Returns counts for: total_users, total_admins, total_members, total_guests,
|
|
326
|
+
* total_projects, total_work_items, total_cycles, total_intake.
|
|
327
|
+
* Each field is { count: number }.
|
|
328
|
+
*/
|
|
329
|
+
async getOverviewData() {
|
|
330
|
+
const [projects, tasks] = await Promise.all([
|
|
331
|
+
this._projectService.getExternalProjects([
|
|
332
|
+
'members.employee.user.role',
|
|
333
|
+
'organizationSprints'
|
|
334
|
+
]),
|
|
335
|
+
this.getAllTasks()
|
|
336
|
+
]);
|
|
337
|
+
// Collect unique member IDs across all projects
|
|
338
|
+
const memberSet = new Set();
|
|
339
|
+
projects.forEach((p) => {
|
|
340
|
+
var _a;
|
|
341
|
+
(_a = p.members) === null || _a === void 0 ? void 0 : _a.forEach((m) => {
|
|
342
|
+
if (typeof m !== 'string' && m.employeeId) {
|
|
343
|
+
memberSet.add(m.employeeId);
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
});
|
|
347
|
+
const totalMembers = memberSet.size;
|
|
348
|
+
// Count total cycles across all projects
|
|
349
|
+
const totalCycles = projects.reduce((sum, p) => { var _a; return sum + (((_a = p.organizationSprints) === null || _a === void 0 ? void 0 : _a.length) || 0); }, 0);
|
|
350
|
+
return {
|
|
351
|
+
total_users: { count: totalMembers },
|
|
352
|
+
total_admins: { count: 0 },
|
|
353
|
+
total_members: { count: totalMembers },
|
|
354
|
+
total_guests: { count: 0 },
|
|
355
|
+
total_projects: { count: projects.length },
|
|
356
|
+
total_work_items: { count: tasks.length },
|
|
357
|
+
total_cycles: { count: totalCycles },
|
|
358
|
+
total_intake: { count: 0 }
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Build project chart matching Plane's AdvanceAnalyticsChartEndpoint.project_chart().
|
|
363
|
+
*
|
|
364
|
+
* Returns a flat array (NOT wrapped in {data, schema}) of:
|
|
365
|
+
* [{key, name, count}] for work_items, cycles, modules, intake, members, pages, views.
|
|
366
|
+
*/
|
|
367
|
+
async getProjectChart() {
|
|
368
|
+
const projects = await this._projectService.getExternalProjects([
|
|
369
|
+
'members',
|
|
370
|
+
'organizationSprints',
|
|
371
|
+
'modules'
|
|
372
|
+
]);
|
|
373
|
+
const tasks = await this.getAllTasks();
|
|
374
|
+
// Count unique members across all projects
|
|
375
|
+
const memberSet = new Set();
|
|
376
|
+
projects.forEach((p) => {
|
|
377
|
+
var _a;
|
|
378
|
+
(_a = p.members) === null || _a === void 0 ? void 0 : _a.forEach((m) => {
|
|
379
|
+
if (typeof m !== 'string' && m.employeeId) {
|
|
380
|
+
memberSet.add(m.employeeId);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
const totalCycles = projects.reduce((sum, p) => { var _a; return sum + (((_a = p.organizationSprints) === null || _a === void 0 ? void 0 : _a.length) || 0); }, 0);
|
|
385
|
+
const totalModules = projects.reduce((sum, p) => { var _a; return sum + (((_a = p.modules) === null || _a === void 0 ? void 0 : _a.length) || 0); }, 0);
|
|
386
|
+
const data = {
|
|
387
|
+
work_items: tasks.length,
|
|
388
|
+
cycles: totalCycles,
|
|
389
|
+
modules: totalModules,
|
|
390
|
+
intake: 0,
|
|
391
|
+
members: memberSet.size,
|
|
392
|
+
pages: 0,
|
|
393
|
+
views: 0
|
|
394
|
+
};
|
|
395
|
+
return Object.entries(data).map(([key, value]) => ({
|
|
396
|
+
key,
|
|
397
|
+
name: key.replace(/_/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase()),
|
|
398
|
+
count: value || 0
|
|
399
|
+
}));
|
|
400
|
+
}
|
|
135
401
|
};
|
|
136
402
|
exports.AdvanceAnalyticsService = AdvanceAnalyticsService;
|
|
137
403
|
exports.AdvanceAnalyticsService = AdvanceAnalyticsService = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-analytics.service.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/advance-analytics.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"advance-analytics.service.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/advance-analytics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAqF;AACrF,4CAAoB;AACpB,iGAUqD;AACrD,sEAAiE;AACjE,gEAA4D;AAM5D,kEAM4C;AAC5C,yCAA4C;AAGrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,mCAAe;IAC3D,YAEC,eAAgD,EAC/B,mBAAoC;QAErD,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;QAH1B,oBAAe,GAAf,eAAe,CAAgB;QAC/B,wBAAmB,GAAnB,mBAAmB,CAAiB;QAKrC,SAAI,GAAG,QAAQ,CAAC;IAFjC,CAAC;IAID;;;;MAIE;IAEF;;OAEG;IACK,KAAK,CAAC,WAAW;;QACxB,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,YAAE,CAAC,SAAS,CACzB,IAAA,qBAAY,EAAC,SAAS,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CACtH,CAAC;YAEF,MAAM,KAAK,GAAuB,CACjC,MAAM,IAAI,CAAC,QAAQ,CAAC;gBACnB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK;aACL,CAAC,CACF,CAAC,IAAI,CAAC;YAEP,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,8BAA8B,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EAC/E,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,QAAQ,CACrB,SAAa,EACb,OAAY,EACZ,QAAa;;QAEb,IAAI,CAAC;YACJ,MAAM,OAAO,GAAwB;gBACpC,SAAS;aACT,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;YACzB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC3B,CAAC;YAED,MAAM,KAAK,GAAG,YAAE,CAAC,SAAS,CACzB,IAAA,qBAAY,EAAC,SAAS,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAC3H,CAAC;YAEF,MAAM,KAAK,GAAuB,CACjC,MAAM,IAAI,CAAC,QAAQ,CAAC;gBACnB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK;aACL,CAAC,CACF,CAAC,IAAI,CAAC;YAEP,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,0BAA0B,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EAC3E,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;;MAIE;IAEF;;;OAGG;IACH,KAAK,CAAC,mBAAmB,CACxB,SAAa,EACb,KAA+B;;QAE/B,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,OAAO,IAAA,uCAA2B,EAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,oCAAoC,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EACrF,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,wBAAwB,CAC7B,SAAa,EACb,KAAoC;;QAEpC,IAAI,CAAC;YACJ,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,OAAO,IAAA,oCAAwB,EAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,0CAA0C,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EAC3F,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,yBAAyB,CAC9B,SAAa,EACb,KAAqC;;QAErC,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,iBAAiB,EAAE,CAAC;gBACpD,2CAA2C;gBAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,oDAAkB,CAAC,QAAQ,CAAC;gBAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAE/B,OAAO,IAAA,0BAAc,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,UAAU,EAAE,CAAC;gBACpD,8DAA8D;gBAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;gBAEzE,IAAI,SAAe,CAAC;gBACpB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAC;oBACxB,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACxC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;gBAC5C,CAAC;qBAAM,CAAC;oBACP,0BAA0B;oBAC1B,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC7C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;gBAE3B,8CAA8C;gBAC9C,MAAM,WAAW,GAChB,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;gBAErD,OAAO,IAAA,wCAA4B,EAClC,KAAK,EACL,SAAS,EACT,OAAO,EACP,WAAW,CACX,CAAC;YACH,CAAC;YAED,4DAA4D;YAC5D,OAAO,IAAA,0BAAc,EAAC,KAAK,EAAE,oDAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,2CAA2C,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EAC5F,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;;MAIE;IAEF;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,4BAA4B,CACjC,GAAuB,EACvB,KAA+B;;QAE/B,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,GAAG,IAAI,UAAU,CAAC;YAEtC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,CAAC;iBAAM,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,OAAO,IAAA,uCAA2B,EAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,IAAI,4BAAmB,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,8CAA8C,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EAC/F,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,kCAAkC,CACvC,KAAqC;;QAErC,IAAI,CAAC;YACJ,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1D,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/B,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,iBAAiB,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,oDAAkB,CAAC,QAAQ,CAAC;gBAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC/B,OAAO,IAAA,0BAAc,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,UAAU,EAAE,CAAC;gBACpD,8DAA8D;gBAC9D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC7B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7C,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAErB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;gBAE3B,OAAO,IAAA,wCAA4B,EAClC,KAAK,EACL,SAAS,EACT,OAAO,EACP,OAAO,CACP,CAAC;YACH,CAAC;YAED,MAAM,IAAI,4BAAmB,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,qDAAqD,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EACtG,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,iCAAiC,CACtC,KAAoC;;QAEpC,IAAI,CAAC;YACJ,IAAI,KAAK,CAAC,IAAI,KAAK,+CAAa,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,IAAI,4BAAmB,CAAC,oCAAoC,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAEvC,0DAA0D;YAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;YAEJ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;gBAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YAED,sBAAsB;YACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;YACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAChC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBAChB,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACF,CAAC;YAED,MAAM,MAAM,GAA0B,EAAE,CAAC;YAEzC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG;oBACd,SAAS,EAAE,CAAC;oBACZ,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;oBACV,SAAS,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;iBACV,CAAC;gBAEF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC/B,MAAM,KAAK,GAAG,IAAA,yBAAa,EAAC,IAAI,CAAC,CAAC;oBAClC,QAAQ,KAAK,EAAE,CAAC;wBACf,KAAK,WAAW;4BAAE,MAAM,CAAC,SAAS,EAAE,CAAC;4BAAC,MAAM;wBAC5C,KAAK,SAAS;4BAAE,MAAM,CAAC,OAAO,EAAE,CAAC;4BAAC,MAAM;wBACxC,KAAK,SAAS;4BAAE,MAAM,CAAC,OAAO,EAAE,CAAC;4BAAC,MAAM;wBACxC,KAAK,WAAW;4BAAE,MAAM,CAAC,SAAS,EAAE,CAAC;4BAAC,MAAM;wBAC5C;4BAAS,MAAM,CAAC,SAAS,EAAE,CAAC;4BAAC,MAAM;oBACpC,CAAC;gBACF,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,SAAS;oBACrB,aAAa,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;oBACzD,oBAAoB,EAAE,MAAM,CAAC,SAAS;oBACtC,oBAAoB,EAAE,MAAM,CAAC,SAAS;oBACtC,kBAAkB,EAAE,MAAM,CAAC,OAAO;oBAClC,qBAAqB,EAAE,MAAM,CAAC,SAAS;oBACvC,kBAAkB,EAAE,MAAM,CAAC,OAAO;iBAClC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3B,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAC5D,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,oDAAoD,CAAA,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,EACrG,KAAK,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED;;;;MAIE;IAEF;;;;;;OAMG;IACK,KAAK,CAAC,eAAe;QAC5B,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;gBACxC,4BAA4B;gBAC5B,qBAAqB;aACrB,CAAC;YACF,IAAI,CAAC,WAAW,EAAE;SAClB,CAAC,CAAC;QAEH,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;YACtB,MAAA,CAAC,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC3C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC;QAEpC,yCAAyC;QACzC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,GAAG,CAAC,CAAA,MAAA,CAAC,CAAC,mBAAmB,0CAAE,MAAM,KAAI,CAAC,CAAC,CAAA,EAAA,EACtD,CAAC,CACD,CAAC;QAEF,OAAO;YACN,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YACpC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YAC1B,aAAa,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YACtC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YAC1B,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE;YAC1C,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;YACzC,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;YACpC,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC;YAC/D,SAAS;YACT,qBAAqB;YACrB,SAAS;SACT,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEvC,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;YACtB,MAAA,CAAC,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAC3C,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,GAAG,CAAC,CAAA,MAAA,CAAC,CAAC,mBAAmB,0CAAE,MAAM,KAAI,CAAC,CAAC,CAAA,EAAA,EACtD,CAAC,CACD,CAAC;QACF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,WAAC,OAAA,GAAG,GAAG,CAAC,CAAA,MAAA,CAAC,CAAC,OAAO,0CAAE,MAAM,KAAI,CAAC,CAAC,CAAA,EAAA,EAC1C,CAAC,CACD,CAAC;QAEF,MAAM,IAAI,GAA2B;YACpC,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,SAAS,CAAC,IAAI;YACvB,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,CAAC;SACR,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAClD,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACrE,KAAK,EAAE,KAAK,IAAI,CAAC;SACjB,CAAC,CAAC,CAAC;IACL,CAAC;CACD,CAAA;AA3eY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;IAGV,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC,CAAC,CAAA;qCACP,gCAAc;QACV,mCAAe;GAJ1C,uBAAuB,CA2enC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './advance-analytics.module';
|
|
2
|
+
export * from './workspace-advance-analytics.module';
|
|
2
3
|
export * from './advance-analytics.service';
|
|
3
4
|
export * from './advance-analytics.controller';
|
|
5
|
+
export * from './workspace-advance-analytics.controller';
|
|
4
6
|
export * from './dto';
|
|
@@ -15,7 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./advance-analytics.module"), exports);
|
|
18
|
+
__exportStar(require("./workspace-advance-analytics.module"), exports);
|
|
18
19
|
__exportStar(require("./advance-analytics.service"), exports);
|
|
19
20
|
__exportStar(require("./advance-analytics.controller"), exports);
|
|
21
|
+
__exportStar(require("./workspace-advance-analytics.controller"), exports);
|
|
20
22
|
__exportStar(require("./dto"), exports);
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,8DAA4C;AAC5C,iEAA+C;AAC/C,wCAAsB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,uEAAqD;AACrD,8DAA4C;AAC5C,iEAA+C;AAC/C,2EAAyD;AACzD,wCAAsB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IWorkItemInsightRow } from '@ever-gauzy/plugin-integration-plane-models';
|
|
2
|
+
import { AdvanceAnalyticsService } from './advance-analytics.service';
|
|
3
|
+
import { AdvanceAnalyticsChartsQueryDto, AdvanceAnalyticsQueryDto, AdvanceAnalyticsStatsQueryDto } from './dto';
|
|
4
|
+
/**
|
|
5
|
+
* Controller for workspace-level advance analytics routes.
|
|
6
|
+
* Mounted under /workspaces/:workspace_name/ via RouterModule in WorkspaceModule.
|
|
7
|
+
*/
|
|
8
|
+
export declare class WorkspaceAdvanceAnalyticsController {
|
|
9
|
+
private readonly _advanceAnalyticsService;
|
|
10
|
+
constructor(_advanceAnalyticsService: AdvanceAnalyticsService);
|
|
11
|
+
/**
|
|
12
|
+
* Get workspace-level advance analytics.
|
|
13
|
+
*
|
|
14
|
+
* Matches Plane's AdvanceAnalyticsEndpoint.get() — dispatches by ?tab= param:
|
|
15
|
+
* - tab=overview → { total_users, total_admins, total_members, total_guests,
|
|
16
|
+
* total_projects, total_work_items, total_cycles, total_intake }
|
|
17
|
+
* - tab=work-items → { total_work_items, started_work_items, backlog_work_items,
|
|
18
|
+
* un_started_work_items, completed_work_items }
|
|
19
|
+
*/
|
|
20
|
+
getWorkspaceAdvanceAnalytics(tab: string, query: AdvanceAnalyticsQueryDto): Promise<any>;
|
|
21
|
+
/**
|
|
22
|
+
* Get workspace-level advance analytics stats (table view).
|
|
23
|
+
*
|
|
24
|
+
* Matches Plane's AdvanceAnalyticsStatsEndpoint.get() — returns per-project
|
|
25
|
+
* work item counts grouped by state group.
|
|
26
|
+
*/
|
|
27
|
+
getWorkspaceAdvanceAnalyticsStats(query: AdvanceAnalyticsStatsQueryDto): Promise<IWorkItemInsightRow[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Get workspace-level advance analytics charts.
|
|
30
|
+
*
|
|
31
|
+
* Matches Plane's AdvanceAnalyticsChartEndpoint.get() — dispatches by ?type= param:
|
|
32
|
+
* - type=projects → flat array [{key, name, count}]
|
|
33
|
+
* - type=work-items → {data, schema} with created vs completed over time
|
|
34
|
+
* - type=custom-work-items → {data, schema} with x_axis/group_by charting
|
|
35
|
+
*/
|
|
36
|
+
getWorkspaceAdvanceAnalyticsCharts(query: AdvanceAnalyticsChartsQueryDto): Promise<any>;
|
|
37
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.WorkspaceAdvanceAnalyticsController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const advance_analytics_service_1 = require("./advance-analytics.service");
|
|
19
|
+
const dto_1 = require("./dto");
|
|
20
|
+
/**
|
|
21
|
+
* Controller for workspace-level advance analytics routes.
|
|
22
|
+
* Mounted under /workspaces/:workspace_name/ via RouterModule in WorkspaceModule.
|
|
23
|
+
*/
|
|
24
|
+
let WorkspaceAdvanceAnalyticsController = class WorkspaceAdvanceAnalyticsController {
|
|
25
|
+
constructor(_advanceAnalyticsService) {
|
|
26
|
+
this._advanceAnalyticsService = _advanceAnalyticsService;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get workspace-level advance analytics.
|
|
30
|
+
*
|
|
31
|
+
* Matches Plane's AdvanceAnalyticsEndpoint.get() — dispatches by ?tab= param:
|
|
32
|
+
* - tab=overview → { total_users, total_admins, total_members, total_guests,
|
|
33
|
+
* total_projects, total_work_items, total_cycles, total_intake }
|
|
34
|
+
* - tab=work-items → { total_work_items, started_work_items, backlog_work_items,
|
|
35
|
+
* un_started_work_items, completed_work_items }
|
|
36
|
+
*/
|
|
37
|
+
async getWorkspaceAdvanceAnalytics(tab, query) {
|
|
38
|
+
return this._advanceAnalyticsService.getWorkspaceAdvanceAnalytics(tab, query);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get workspace-level advance analytics stats (table view).
|
|
42
|
+
*
|
|
43
|
+
* Matches Plane's AdvanceAnalyticsStatsEndpoint.get() — returns per-project
|
|
44
|
+
* work item counts grouped by state group.
|
|
45
|
+
*/
|
|
46
|
+
async getWorkspaceAdvanceAnalyticsStats(query) {
|
|
47
|
+
return this._advanceAnalyticsService.getWorkspaceAdvanceAnalyticsStats(query);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get workspace-level advance analytics charts.
|
|
51
|
+
*
|
|
52
|
+
* Matches Plane's AdvanceAnalyticsChartEndpoint.get() — dispatches by ?type= param:
|
|
53
|
+
* - type=projects → flat array [{key, name, count}]
|
|
54
|
+
* - type=work-items → {data, schema} with created vs completed over time
|
|
55
|
+
* - type=custom-work-items → {data, schema} with x_axis/group_by charting
|
|
56
|
+
*/
|
|
57
|
+
async getWorkspaceAdvanceAnalyticsCharts(query) {
|
|
58
|
+
return this._advanceAnalyticsService.getWorkspaceAdvanceAnalyticsCharts(query);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.WorkspaceAdvanceAnalyticsController = WorkspaceAdvanceAnalyticsController;
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
64
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get workspace advance analytics' }),
|
|
65
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Successfully retrieved workspace advance analytics' }),
|
|
66
|
+
(0, common_1.Get)('advance-analytics'),
|
|
67
|
+
__param(0, (0, common_1.Query)('tab')),
|
|
68
|
+
__param(1, (0, common_1.Query)()),
|
|
69
|
+
__metadata("design:type", Function),
|
|
70
|
+
__metadata("design:paramtypes", [String, dto_1.AdvanceAnalyticsQueryDto]),
|
|
71
|
+
__metadata("design:returntype", Promise)
|
|
72
|
+
], WorkspaceAdvanceAnalyticsController.prototype, "getWorkspaceAdvanceAnalytics", null);
|
|
73
|
+
__decorate([
|
|
74
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
75
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get workspace advance analytics stats' }),
|
|
76
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Successfully retrieved workspace advance analytics stats' }),
|
|
77
|
+
(0, common_1.Get)('advance-analytics-stats'),
|
|
78
|
+
__param(0, (0, common_1.Query)()),
|
|
79
|
+
__metadata("design:type", Function),
|
|
80
|
+
__metadata("design:paramtypes", [dto_1.AdvanceAnalyticsStatsQueryDto]),
|
|
81
|
+
__metadata("design:returntype", Promise)
|
|
82
|
+
], WorkspaceAdvanceAnalyticsController.prototype, "getWorkspaceAdvanceAnalyticsStats", null);
|
|
83
|
+
__decorate([
|
|
84
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
85
|
+
(0, swagger_1.ApiOperation)({ summary: 'Get workspace advance analytics charts' }),
|
|
86
|
+
(0, swagger_1.ApiResponse)({ status: 200, description: 'Successfully retrieved workspace advance analytics charts' }),
|
|
87
|
+
(0, common_1.Get)('advance-analytics-charts'),
|
|
88
|
+
__param(0, (0, common_1.Query)()),
|
|
89
|
+
__metadata("design:type", Function),
|
|
90
|
+
__metadata("design:paramtypes", [dto_1.AdvanceAnalyticsChartsQueryDto]),
|
|
91
|
+
__metadata("design:returntype", Promise)
|
|
92
|
+
], WorkspaceAdvanceAnalyticsController.prototype, "getWorkspaceAdvanceAnalyticsCharts", null);
|
|
93
|
+
exports.WorkspaceAdvanceAnalyticsController = WorkspaceAdvanceAnalyticsController = __decorate([
|
|
94
|
+
(0, swagger_1.ApiTags)('Workspace Advance Analytics'),
|
|
95
|
+
(0, common_1.Controller)(),
|
|
96
|
+
__metadata("design:paramtypes", [advance_analytics_service_1.AdvanceAnalyticsService])
|
|
97
|
+
], WorkspaceAdvanceAnalyticsController);
|
|
98
|
+
//# sourceMappingURL=workspace-advance-analytics.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-advance-analytics.controller.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/workspace-advance-analytics.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8E;AAC9E,6CAAqE;AAErE,2EAAsE;AACtE,+BAIe;AAEf;;;GAGG;AAGI,IAAM,mCAAmC,GAAzC,MAAM,mCAAmC;IAC/C,YACkB,wBAAiD;QAAjD,6BAAwB,GAAxB,wBAAwB,CAAyB;IAChE,CAAC;IAEJ;;;;;;;;OAQG;IAKG,AAAN,KAAK,CAAC,4BAA4B,CACnB,GAAW,EAChB,KAA+B;QAExC,OAAO,IAAI,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;OAKG;IAKG,AAAN,KAAK,CAAC,iCAAiC,CAC7B,KAAoC;QAE7C,OAAO,IAAI,CAAC,wBAAwB,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;OAOG;IAKG,AAAN,KAAK,CAAC,kCAAkC,CAC9B,KAAqC;QAE9C,OAAO,IAAI,CAAC,wBAAwB,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;CACD,CAAA;AA1DY,kFAAmC;AAkBzC;IAJL,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAC5D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;IAC/F,IAAA,YAAG,EAAC,mBAAmB,CAAC;IAEvB,WAAA,IAAA,cAAK,EAAC,KAAK,CAAC,CAAA;IACZ,WAAA,IAAA,cAAK,GAAE,CAAA;;6CAAQ,8BAAwB;;uFAGxC;AAYK;IAJL,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;IAClE,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,0DAA0D,EAAE,CAAC;IACrG,IAAA,YAAG,EAAC,yBAAyB,CAAC;IAE7B,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAQ,mCAA6B;;4FAG7C;AAcK;IAJL,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IACnE,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,2DAA2D,EAAE,CAAC;IACtG,IAAA,YAAG,EAAC,0BAA0B,CAAC;IAE9B,WAAA,IAAA,cAAK,GAAE,CAAA;;qCAAQ,oCAA8B;;6FAG9C;8CAzDW,mCAAmC;IAF/C,IAAA,iBAAO,EAAC,6BAA6B,CAAC;IACtC,IAAA,mBAAU,GAAE;qCAGgC,mDAAuB;GAFvD,mCAAmC,CA0D/C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module for workspace-level advance analytics routes.
|
|
3
|
+
* Provides advance-analytics, advance-analytics-stats, and advance-analytics-charts
|
|
4
|
+
* endpoints at the workspace scope (without projectId).
|
|
5
|
+
*/
|
|
6
|
+
export declare class WorkspaceAdvanceAnalyticsModule {
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.WorkspaceAdvanceAnalyticsModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const project_module_1 = require("../project/project.module");
|
|
12
|
+
const advance_analytics_service_1 = require("./advance-analytics.service");
|
|
13
|
+
const workspace_advance_analytics_controller_1 = require("./workspace-advance-analytics.controller");
|
|
14
|
+
/**
|
|
15
|
+
* Module for workspace-level advance analytics routes.
|
|
16
|
+
* Provides advance-analytics, advance-analytics-stats, and advance-analytics-charts
|
|
17
|
+
* endpoints at the workspace scope (without projectId).
|
|
18
|
+
*/
|
|
19
|
+
let WorkspaceAdvanceAnalyticsModule = class WorkspaceAdvanceAnalyticsModule {
|
|
20
|
+
};
|
|
21
|
+
exports.WorkspaceAdvanceAnalyticsModule = WorkspaceAdvanceAnalyticsModule;
|
|
22
|
+
exports.WorkspaceAdvanceAnalyticsModule = WorkspaceAdvanceAnalyticsModule = __decorate([
|
|
23
|
+
(0, common_1.Module)({
|
|
24
|
+
imports: [(0, common_1.forwardRef)(() => project_module_1.ProjectModule)],
|
|
25
|
+
providers: [advance_analytics_service_1.AdvanceAnalyticsService],
|
|
26
|
+
controllers: [workspace_advance_analytics_controller_1.WorkspaceAdvanceAnalyticsController],
|
|
27
|
+
exports: [advance_analytics_service_1.AdvanceAnalyticsService]
|
|
28
|
+
})
|
|
29
|
+
], WorkspaceAdvanceAnalyticsModule);
|
|
30
|
+
//# sourceMappingURL=workspace-advance-analytics.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-advance-analytics.module.js","sourceRoot":"","sources":["../../../../../../packages/plugin-plane/src/modules/advance-analytics/workspace-advance-analytics.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,8DAA0D;AAC1D,2EAAsE;AACtE,qGAA+F;AAE/F;;;;GAIG;AAOI,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;CAAG,CAAA;AAAlC,0EAA+B;0CAA/B,+BAA+B;IAN3C,IAAA,eAAM,EAAC;QACP,OAAO,EAAE,CAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC,CAAC;QAC1C,SAAS,EAAE,CAAC,mDAAuB,CAAC;QACpC,WAAW,EAAE,CAAC,4EAAmC,CAAC;QAClD,OAAO,EAAE,CAAC,mDAAuB,CAAC;KAClC,CAAC;GACW,+BAA+B,CAAG"}
|
|
@@ -3,6 +3,7 @@ import { Logger } from '@nestjs/common';
|
|
|
3
3
|
import { IServerFetchInputs } from '@ever-gauzy/plugin-integration-plane-models';
|
|
4
4
|
export declare class ApiFetchService {
|
|
5
5
|
private readonly _httpService;
|
|
6
|
+
/** Fallback token for non-request contexts (tests, scripts). */
|
|
6
7
|
private static token;
|
|
7
8
|
private _logger;
|
|
8
9
|
constructor(_httpService: HttpService);
|
|
@@ -13,15 +14,36 @@ export declare class ApiFetchService {
|
|
|
13
14
|
*/
|
|
14
15
|
protected get logger(): Logger;
|
|
15
16
|
/**
|
|
16
|
-
* Set the token for the API fetch service
|
|
17
|
-
*
|
|
17
|
+
* Set the token for the API fetch service.
|
|
18
|
+
* Writes to the per-request AsyncLocalStorage context when available,
|
|
19
|
+
* and always updates the static fallback for non-request callers.
|
|
20
|
+
* @param token - The JWT token to set
|
|
18
21
|
*/
|
|
19
22
|
setToken(token: string): void;
|
|
20
23
|
/**
|
|
21
|
-
* Get the token for the API fetch service
|
|
22
|
-
*
|
|
24
|
+
* Get the token for the API fetch service.
|
|
25
|
+
*
|
|
26
|
+
* When inside a request context (ALS store active), returns the
|
|
27
|
+
* request-scoped token — even if empty — to avoid leaking another
|
|
28
|
+
* user's token via the static fallback.
|
|
29
|
+
*
|
|
30
|
+
* Falls back to the static token only when called outside a request
|
|
31
|
+
* (tests, scripts, background jobs).
|
|
32
|
+
*
|
|
33
|
+
* @returns The JWT token
|
|
23
34
|
*/
|
|
24
35
|
static getToken(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Extracts the real HTTP status and message from an upstream API error
|
|
38
|
+
* and throws the corresponding NestJS HttpException.
|
|
39
|
+
*
|
|
40
|
+
* This preserves the original status code (401, 403, 404, 500 …)
|
|
41
|
+
* instead of always returning 400 Bad Request.
|
|
42
|
+
*
|
|
43
|
+
* @param error - The caught error (AxiosError, HttpException, or unknown)
|
|
44
|
+
* @throws {HttpException} Always — this method never returns.
|
|
45
|
+
*/
|
|
46
|
+
protected handleApiError(error: unknown): never;
|
|
25
47
|
/**
|
|
26
48
|
* Fetch data from the API
|
|
27
49
|
* @param configs - The configurations for the API fetch
|