diff --git a/apiserver/plane/app/views/analytic/advance.py b/apiserver/plane/app/views/analytic/advance.py index a79ab98c5..8a2aea90b 100644 --- a/apiserver/plane/app/views/analytic/advance.py +++ b/apiserver/plane/app/views/analytic/advance.py @@ -16,6 +16,9 @@ from plane.db.models import ( IssueView, ProjectPage, Workspace, + CycleIssue, + ModuleIssue, + ProjectMember, ) from plane.utils.build_chart import build_analytics_chart from plane.utils.date_utils import ( @@ -69,32 +72,27 @@ class AdvanceAnalyticsEndpoint(AdvanceAnalyticsBaseView): } def get_overview_data(self) -> Dict[str, Dict[str, int]]: + members_query = WorkspaceMember.objects.filter( + workspace__slug=self._workspace_slug, is_active=True + ) + + if self.request.GET.get("project_ids", None): + project_ids = self.request.GET.get("project_ids", None) + project_ids = [str(project_id) for project_id in project_ids.split(",")] + members_query = ProjectMember.objects.filter( + project_id__in=project_ids, is_active=True + ) + return { - "total_users": self.get_filtered_counts( - WorkspaceMember.objects.filter( - workspace__slug=self._workspace_slug, is_active=True - ) - ), + "total_users": self.get_filtered_counts(members_query), "total_admins": self.get_filtered_counts( - WorkspaceMember.objects.filter( - workspace__slug=self._workspace_slug, - role=ROLE.ADMIN.value, - is_active=True, - ) + members_query.filter(role=ROLE.ADMIN.value) ), "total_members": self.get_filtered_counts( - WorkspaceMember.objects.filter( - workspace__slug=self._workspace_slug, - role=ROLE.MEMBER.value, - is_active=True, - ) + members_query.filter(role=ROLE.MEMBER.value) ), "total_guests": self.get_filtered_counts( - WorkspaceMember.objects.filter( - workspace__slug=self._workspace_slug, - role=ROLE.GUEST.value, - is_active=True, - ) + members_query.filter(role=ROLE.GUEST.value) ), "total_projects": self.get_filtered_counts( Project.objects.filter(**self.filters["project_filters"]) @@ -107,7 +105,7 @@ class AdvanceAnalyticsEndpoint(AdvanceAnalyticsBaseView): ), "total_intake": self.get_filtered_counts( Issue.objects.filter(**self.filters["base_filters"]).filter( - issue_intake__isnull=False + issue_intake__status__in=["-2", "0"] ) ), } diff --git a/web/core/components/analytics-v2/insight-table/root.tsx b/web/core/components/analytics-v2/insight-table/root.tsx index 8e6e8422e..1ee90c726 100644 --- a/web/core/components/analytics-v2/insight-table/root.tsx +++ b/web/core/components/analytics-v2/insight-table/root.tsx @@ -13,12 +13,13 @@ interface InsightTableProps> isLoading?: boolean; columns: ColumnDef[]; columnsLabels?: Record; + headerText: string; } export const InsightTable = >( props: InsightTableProps ): React.ReactElement => { - const { data, isLoading, columns, columnsLabels } = props; + const { data, isLoading, columns, columnsLabels, headerText } = props; const params = useParams(); const { t } = useTranslation(); const workspaceSlug = params.workspaceSlug.toString(); @@ -55,7 +56,7 @@ export const InsightTable = ) => (