perf(projects): perf code

This commit is contained in:
Soybean 2024-01-16 02:07:31 +08:00
parent 87143172e8
commit 5c49d24504

View File

@ -48,20 +48,30 @@ function filterAuthRouteByRoles(route: ElegantConstRoute, roles: string[]) {
} }
/** /**
* Sort routes by order * sort route by order
* *
* @param routes An array of routes * @param route route
* @returns A new array of routes sorted by order
*
* This function sorts the routes by their order property, which is a number. If the order property is missing or
* invalid, it is treated as 0. The routes with lower order values are placed before the routes with higher order
* values. The function also sorts the children routes recursively, if any.
*/ */
export const sortRoutesByOrder = (routes: ElegantConstRoute[]): ElegantConstRoute[] => { function sortRouteByOrder(route: ElegantConstRoute) {
return routes if (route.children?.length) {
.sort((next, prev) => (Number(next.meta?.order) || 0) - (Number(prev.meta?.order) || 0)) route.children.sort((next, prev) => (Number(next.meta?.order) || 0) - (Number(prev.meta?.order) || 0));
.map(route => (route.children ? { ...route, children: sortRoutesByOrder(route.children) } : route)); route.children.forEach(sortRouteByOrder);
}; }
return route;
}
/**
* sort routes by order
*
* @param routes routes
*/
export function sortRoutesByOrder(routes: ElegantConstRoute[]) {
routes.sort((next, prev) => (Number(next.meta?.order) || 0) - (Number(prev.meta?.order) || 0));
routes.forEach(sortRouteByOrder);
return routes;
}
/** /**
* Get global menus by auth routes * Get global menus by auth routes