[WEB-4230] refactor: Analytics code refacor, Removal of nivo charts dependencies and translations (#7131)

* chore: added code split for the analytics store

* chore: done some refactor

* refactor: update entity keys in analytics and translations

* chore: updated the translations

* refactor: simplify AnalyticsStoreV2 class by removing unnecessary constructor

* feat: add AnalyticsStoreV2 class and interface for enhanced analytics functionality

* feat: enhance WorkItemsModal and analytics store with isEpic functionality

* feat: integrate isEpic state into TotalInsights and WorkItemsModal components

* refactor: remove isEpic state from WorkItemsModalMainContent component

* refactor: removed old  analytics components and related services

* refactor: new analytics

* refactor: removed all nivo chart dependencies

* chore: resolved coderabbit comments

* fix: update processUrl to handle custom-work-items in peek view

* feat: implement CSV export functionality in InsightTable component

* feat: enhance analytics service with filter parameters and improve data handling in InsightTable

* feat: add new translation keys for various statuses across multiple languages

* [WEB-4246] fix: enhance analytics components to include 'isEpic' parameter for improved data fetching

* chore: update yarn.lock to remove deprecated @nivo packages and clean up unused dependencies
This commit is contained in:
JayashTripathy 2025-06-06 01:53:38 +05:30 committed by GitHub
parent 570a9e319e
commit 14d2d69120
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
151 changed files with 1144 additions and 4800 deletions

View file

@ -1,93 +0,0 @@
// constants
import { API_BASE_URL } from "@plane/constants";
// types
import {
IAnalyticsParams,
IAnalyticsResponse,
IDefaultAnalyticsResponse,
IExportAnalyticsFormData,
ISaveAnalyticsFormData,
} from "@plane/types";
// services
import { APIService } from "../api.service";
export class AnalyticsService extends APIService {
constructor(BASE_URL?: string) {
super(BASE_URL || API_BASE_URL);
}
/**
* Retrieves analytics data for a specific workspace
* @param {string} workspaceSlug - The unique identifier for the workspace
* @param {IAnalyticsParams} params - Parameters for filtering analytics data
* @param {string|number} [params.project] - Optional project identifier that will be converted to string
* @returns {Promise<IAnalyticsResponse>} The analytics data for the workspace
* @throws {Error} Throws response data if the request fails
*/
async getAnalytics(workspaceSlug: string, params: IAnalyticsParams): Promise<IAnalyticsResponse> {
return this.get(`/api/workspaces/${workspaceSlug}/analytics/`, {
params: {
...params,
project: params?.project ? params.project.toString() : null,
},
})
.then((response) => response?.data)
.catch((error) => {
throw error?.response?.data;
});
}
/**
* Retrieves default analytics data for a workspace
* @param {string} workspaceSlug - The unique identifier for the workspace
* @param {Partial<IAnalyticsParams>} [params] - Optional parameters for filtering default analytics
* @param {string|number} [params.project] - Optional project identifier that will be converted to string
* @returns {Promise<IDefaultAnalyticsResponse>} The default analytics data
* @throws {Error} Throws response data if the request fails
*/
async getDefaultAnalytics(
workspaceSlug: string,
params?: Partial<IAnalyticsParams>
): Promise<IDefaultAnalyticsResponse> {
return this.get(`/api/workspaces/${workspaceSlug}/default-analytics/`, {
params: {
...params,
project: params?.project ? params.project.toString() : null,
},
})
.then((response) => response?.data)
.catch((error) => {
throw error?.response?.data;
});
}
/**
* Saves analytics view configuration for a workspace
* @param {string} workspaceSlug - The unique identifier for the workspace
* @param {ISaveAnalyticsFormData} data - The analytics configuration data to save
* @returns {Promise<any>} The response from saving the analytics view
* @throws {Error} Throws response data if the request fails
*/
async save(workspaceSlug: string, data: ISaveAnalyticsFormData): Promise<any> {
return this.post(`/api/workspaces/${workspaceSlug}/analytic-view/`, data)
.then((response) => response?.data)
.catch((error) => {
throw error?.response?.data;
});
}
/**
* Exports analytics data for a workspace
* @param {string} workspaceSlug - The unique identifier for the workspace
* @param {IExportAnalyticsFormData} data - Configuration for the analytics export
* @returns {Promise<any>} The exported analytics data
* @throws {Error} Throws response data if the request fails
*/
async export(workspaceSlug: string, data: IExportAnalyticsFormData): Promise<any> {
return this.post(`/api/workspaces/${workspaceSlug}/export-analytics/`, data)
.then((response) => response?.data)
.catch((error) => {
throw error?.response?.data;
});
}
}

View file

@ -1 +0,0 @@
export * from "./analytics.service";

View file

@ -1,5 +1,4 @@
export * from "./ai";
export * from "./analytics";
export * from "./developer";
export * from "./auth";
export * from "./cycle";