forked from github/plane
01e09873e6
* fix: application sidebar project and favorite project reordering issue resolved * fix: enabled posthog * chore: project sort order in POST * chore: project member sort order * chore: project sorting order * fix: handle dragdrop functionality from store to helper function in project sidebar * fix: resolved build error --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com> Co-authored-by: Anmol Singh Bhatia <anmolsinghbhatia@plane.so>
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import { IProject } from "@plane/types";
|
|
|
|
/**
|
|
* Updates the sort order of the project.
|
|
* @param sortIndex
|
|
* @param destinationIndex
|
|
* @param projectId
|
|
* @returns number | undefined
|
|
*/
|
|
export const orderJoinedProjects = (
|
|
sourceIndex: number,
|
|
destinationIndex: number,
|
|
currentProjectId: string,
|
|
joinedProjects: IProject[]
|
|
): number | undefined => {
|
|
if (!currentProjectId || sourceIndex < 0 || destinationIndex < 0 || joinedProjects.length <= 0) return undefined;
|
|
|
|
let updatedSortOrder: number | undefined = undefined;
|
|
const sortOrderDefaultValue = 10000;
|
|
|
|
if (destinationIndex === 0) {
|
|
// updating project at the top of the project
|
|
const currentSortOrder = joinedProjects[destinationIndex].sort_order || 0;
|
|
updatedSortOrder = currentSortOrder - sortOrderDefaultValue;
|
|
} else if (destinationIndex === joinedProjects.length - 1) {
|
|
// updating project at the bottom of the project
|
|
const currentSortOrder = joinedProjects[destinationIndex - 1].sort_order || 0;
|
|
updatedSortOrder = currentSortOrder + sortOrderDefaultValue;
|
|
} else {
|
|
// updating project in the middle of the project
|
|
if (sourceIndex > destinationIndex) {
|
|
const destinationTopProjectSortOrder = joinedProjects[destinationIndex - 1].sort_order || 0;
|
|
const destinationBottomProjectSortOrder = joinedProjects[destinationIndex].sort_order || 0;
|
|
const updatedValue = (destinationTopProjectSortOrder + destinationBottomProjectSortOrder) / 2;
|
|
updatedSortOrder = updatedValue;
|
|
} else {
|
|
const destinationTopProjectSortOrder = joinedProjects[destinationIndex].sort_order || 0;
|
|
const destinationBottomProjectSortOrder = joinedProjects[destinationIndex + 1].sort_order || 0;
|
|
const updatedValue = (destinationTopProjectSortOrder + destinationBottomProjectSortOrder) / 2;
|
|
updatedSortOrder = updatedValue;
|
|
}
|
|
}
|
|
|
|
return updatedSortOrder;
|
|
};
|