mirror of
https://github.com/makeplane/plane.git
synced 2026-07-13 14:01:45 +02:00
* chore: integrated time traking enabled/disabled feature on project settings and updated the pro icon as a component * chore: Showing the toggle and disabled to make any operations on project features * chore: default exports in constants * chore: seperated isEnabled and isPro * chore: updated time traking key * chore: issue worklog endpoint * chore: added work log issue * chore: csv worklog downloads * chore: acitvity listing * chore: added workspace in export issues * chore: initialised services, contants, and store * chore: integrated worklog hooks * chore: changed types in worklog type * chore: worklog response changes * chore: serializer changes * chore: corrected the import statement * chore: Worklog components and page updates * fix: download csv and excel * chore: implemented pagination for table and updated worklog downloads * chore: updated pagination and updated the api for worklog download filter param * chore: download response change * chore: import errors resolved in issue worklog * chore: handled loaders and empty states in worklog settings * chore: ui, typos and cleanup * chore: resolved merge conflicts * chore: updating the time tracking on issue detail page * chore: updated the ui worklog issue property button * chore: removed create from the worklog header * chore: updated default filters from constants * chore: resolved ce code updates * chore: ce cleanup * chore: worklogs in issue activity * ui: updated UI for peek overview and issue detail for worklog property * fix: exporter type * ui: handled the typos * ui: loader ui height changes * chore: resolved merge conflicts * chore: handled the project worklogs enabled/disabled in the issues * chore: handled empty screen for worklog * chore: typo --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
196 lines
5.3 KiB
TypeScript
196 lines
5.3 KiB
TypeScript
/* eslint-disable no-useless-catch */
|
|
// helpers
|
|
import { API_BASE_URL } from "@/helpers/common.helper";
|
|
// plane web types
|
|
import {
|
|
TWorklog,
|
|
TWorklogDownload,
|
|
TWorklogDownloadPaginatedInfo,
|
|
TWorklogIssueTotalCount,
|
|
TWorklogPaginatedInfo,
|
|
TWorklogQueryParams,
|
|
} from "@/plane-web/types";
|
|
// services
|
|
import { APIService } from "@/services/api.service";
|
|
|
|
export class WorklogService extends APIService {
|
|
constructor() {
|
|
super(API_BASE_URL);
|
|
}
|
|
|
|
/**
|
|
* @description fetching workspace worklogs
|
|
* @param { string } workspaceSlug
|
|
* @param { TWorklogQueryParams } params
|
|
* @returns { TWorklogPaginatedInfo | undefined }
|
|
*/
|
|
async fetchWorkspaceWorklogs(
|
|
workspaceSlug: string,
|
|
params: TWorklogQueryParams
|
|
): Promise<TWorklogPaginatedInfo | undefined> {
|
|
try {
|
|
const { data } = await this.get(`/api/workspaces/${workspaceSlug}/worklogs/`, { params });
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description fetching issue worklogs by issueId
|
|
* @param { string } workspaceSlug
|
|
* @param { string } projectId
|
|
* @param { string } issueId
|
|
* @returns { TWorklog[] | undefined }
|
|
*/
|
|
async fetchWorklogsByIssueId(
|
|
workspaceSlug: string,
|
|
projectId: string,
|
|
issueId: string
|
|
): Promise<TWorklog[] | undefined> {
|
|
try {
|
|
const { data } = await this.get(
|
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/`
|
|
);
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description fetching issue worklogs by issueId
|
|
* @param { string } workspaceSlug
|
|
* @param { string } projectId
|
|
* @param { string } issueId
|
|
* @returns { TWorklogIssueTotalCount | undefined }
|
|
*/
|
|
async fetchWorklogCountByIssueId(
|
|
workspaceSlug: string,
|
|
projectId: string,
|
|
issueId: string
|
|
): Promise<TWorklogIssueTotalCount | undefined> {
|
|
try {
|
|
const { data } = await this.get(
|
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/total-worklogs/`
|
|
);
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description create issue worklog
|
|
* @param { string } workspaceSlug
|
|
* @param { string } projectId
|
|
* @param { string } issueId
|
|
* @param { Partial<TWorklog> } payload
|
|
* @returns { TWorklog | undefined }
|
|
*/
|
|
async createWorklog(
|
|
workspaceSlug: string,
|
|
projectId: string,
|
|
issueId: string,
|
|
payload: Partial<TWorklog>
|
|
): Promise<TWorklog | undefined> {
|
|
try {
|
|
const { data } = await this.post(
|
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/`,
|
|
payload
|
|
);
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description update issue worklog
|
|
* @param { string } workspaceSlug
|
|
* @param { string } projectId
|
|
* @param { string } issueId
|
|
* @param { string } worklogId
|
|
* @param { Partial<TWorklog> } payload
|
|
* @returns { TWorklog | undefined }
|
|
*/
|
|
async updateWorklogById(
|
|
workspaceSlug: string,
|
|
projectId: string,
|
|
issueId: string,
|
|
worklogId: string,
|
|
payload: Partial<TWorklog>
|
|
): Promise<TWorklog | undefined> {
|
|
try {
|
|
const { data } = await this.patch(
|
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/${worklogId}/`,
|
|
payload
|
|
);
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description update issue worklog
|
|
* @param { string } workspaceSlug
|
|
* @param { string } projectId
|
|
* @param { string } issueId
|
|
* @param { string } worklogId
|
|
* @returns { void }
|
|
*/
|
|
async deleteWorklogById(workspaceSlug: string, projectId: string, issueId: string, worklogId: string): Promise<void> {
|
|
try {
|
|
const { data } = await this.delete(
|
|
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/${worklogId}/`
|
|
);
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description fetching workspace worklog downloads
|
|
* @param { string } workspaceSlug
|
|
* @param { string } params
|
|
* @returns { TWorklogDownloadPaginatedInfo | undefined }
|
|
*/
|
|
async fetchWorkspaceWorklogDownloads(
|
|
workspaceSlug: string,
|
|
params: TWorklogQueryParams
|
|
): Promise<TWorklogDownloadPaginatedInfo | undefined> {
|
|
try {
|
|
const { data } = await this.get(`/api/workspaces/${workspaceSlug}/export-worklogs/`, { params });
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description create worklog download
|
|
* @param { string } workspaceSlug
|
|
* @param { Partial<TWorklogDownload> } payload
|
|
* @param { TWorklogQueryParams } params
|
|
* @returns { TWorklogDownload | undefined }
|
|
*/
|
|
async createWorklogDownload(
|
|
workspaceSlug: string,
|
|
payload: Partial<TWorklogDownload>,
|
|
params: TWorklogQueryParams
|
|
): Promise<TWorklogDownload | undefined> {
|
|
try {
|
|
const { data } = await this.post(`/api/workspaces/${workspaceSlug}/export-worklogs/`, payload, { params });
|
|
return data || undefined;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
}
|
|
}
|
|
|
|
const worklogService = new WorklogService();
|
|
|
|
export default worklogService;
|