-
Notifications
You must be signed in to change notification settings - Fork 728
feat: overview page #3694
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: overview page #3694
Conversation
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
| <component | ||
| :is="integration.dropdownComponent" | ||
| v-if="status.key === 'done' && integration.dropdownComponent.dropdownComponent" | ||
| :integration="integration" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Dropdown component receives config instead of status data
The dropdownComponent receives :integration="integration" which passes the config object (from lfIntegrations()), but it should receive :integration="integrationStatus" to match both the actionComponent pattern at line 35 in the same file and the existing integration-list-item.vue pattern. The config object lacks runtime data like id, status, etc. that dropdown components likely need to function correctly.
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
Signed-off-by: Efren Lim <[email protected]>
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
| } = OVERVIEW_API_SERVICE.fetchGlobalIntegrations(params); | ||
| // @ts-expect-error - TanStack Query type inference issue with Vue | ||
| const totalCount = computed(() => data.value?.pages[0].count || 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Missing optional chaining may cause TypeError
The expression data.value?.pages[0].count uses optional chaining on data.value but not on pages[0]. If data.value exists but pages is an empty array, accessing pages[0] returns undefined, and then accessing .count on it throws a TypeError. The expression needs optional chaining: data.value?.pages?.[0]?.count.
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
1 similar comment
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
Signed-off-by: Efren Lim <[email protected]>
frontend/src/modules/admin/modules/overview/components/sections/integration-details.vue
Outdated
Show resolved
Hide resolved
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
frontend/src/modules/admin/modules/overview/services/overview.api.service.ts
Outdated
Show resolved
Hide resolved
| } else { | ||
| selectedProject.value = null; | ||
| } | ||
| }, { immediate: true }); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Project filter doesn't reset sub-project selection on change
When the project selection changes, the sub-project selection is not reset. The project-group-filter.vue correctly clears all child selections (selectedProjectId, selectedSubProjectId, selectedProject, selectedSubProject) when the group changes, but project-filter.vue only updates selectedProject and doesn't clear selectedSubProjectId or selectedSubProject. This causes stale sub-project state when switching between projects, potentially leading to incorrect data filtering since the old sub-project's segment ID remains in the store.
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
| return useQuery<IntegrationProgress[]>({ | ||
| queryKey, | ||
| queryFn, | ||
| enabled: !!params.value.segments, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Query enabled check fails to prevent empty array requests
The enabled: !!params.value.segments condition is intended to disable the query when there are no segments, but an empty array [] is truthy in JavaScript (!![] evaluates to true). When the integration data hasn't loaded yet, segments defaults to an empty array, causing the query to fire immediately with empty segments. The condition needs to also check array length to properly disable the query when there are no segments to query.
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
| COUNT(*) as "projectsTotal", | ||
| COUNT(CASE WHEN "createdAt" >= NOW() - INTERVAL '30 days' THEN 1 END) as "projectsLast30Days" | ||
| FROM segments | ||
| ` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Query counts deleted segments despite comment stating otherwise
The getProjectsCount function has a comment explicitly stating "Count all segments not deleted" but the SQL query lacks a WHERE "deletedAt" IS NULL clause. This inconsistency means deleted segments are included in the count, inflating metrics. The codebase consistently uses deletedAt IS NULL filters in other queries (activities, categories, repos) to exclude soft-deleted records.
Signed-off-by: Efren Lim <[email protected]>
|
Your PR title doesn't contain a Jira issue key. Consider adding it for better traceability. Example:
Projects:
Please add a Jira issue key to your PR title. |
In this PR
Ticket
CM-801
Note
Introduces a new Overview as the default landing page showing high‑level metrics and integration health, powered by a new /dashboard/metrics backend endpoint and shared UI components.
modules/admin/modules/overview/pages/overview.vuewith sections:fetchDashboardMetrics.overview.store.ts), types, and API service (overview.api.service.ts) using TanStack Query.localStorage.GET /dashboard/metrics(dashboardMetricsGet.ts) with permission check, returning metrics fromDashboardService.getMetrics.DashboardService.getMetricsuses data‑access layer; logs and error handling.dashboardsmodule withgetMetrics(reads snapshots, falls back to mock) andgetProjectsCount; export in package./overviewand update side menu to "Overview"; add routeoverviewin admin.xsand minor formatting.actionRequiredMessagemappings across integration configs; GitHub action supports preventAutoOpen.chipStatusicon/color used in chips.@sxzz/popperjs-esandlodash-es; lockfile updates.Written by Cursor Bugbot for commit 0ce34c9. This will update automatically on new commits. Configure here.