Skip to content

Commit dd047d2

Browse files
authored
Merge pull request #438 from aldabil21/position-manager-sorting-#410
Position manager sorting
2 parents 61a9479 + adae0d5 commit dd047d2

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/lib/positionManger/provider.tsx

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,13 @@ import { useEffect, useState } from "react";
22
import { PositionManagerState, PositionContext } from "./context";
33
import useStore from "../hooks/useStore";
44
import { DefaultResource, FieldProps, ProcessedEvent, ResourceFields } from "../types";
5-
import { getResourcedEvents, sortEventsByTheEarliest } from "../helpers/generals";
5+
import {
6+
getResourcedEvents,
7+
sortEventsByTheEarliest,
8+
sortEventsByTheLengthest,
9+
} from "../helpers/generals";
610
import { eachDayOfInterval, format } from "date-fns";
11+
import { View } from "../components/nav/Navigation";
712

813
type Props = {
914
children: React.ReactNode;
@@ -39,10 +44,13 @@ const setEventPositionsWithResources = (
3944
events: ProcessedEvent[],
4045
resources: DefaultResource[],
4146
rFields: ResourceFields,
42-
fields: FieldProps[]
47+
fields: FieldProps[],
48+
view: View
4349
) => {
44-
const sorted = sortEventsByTheEarliest(events);
50+
const sorted =
51+
view === "month" ? sortEventsByTheLengthest(events) : sortEventsByTheEarliest(events);
4552
const slots: PositionManagerState["renderedSlots"] = {};
53+
4654
if (resources.length) {
4755
for (const resource of resources) {
4856
const resourcedEvents = getResourcedEvents(sorted, resource, rFields, fields);
@@ -52,22 +60,27 @@ const setEventPositionsWithResources = (
5260
} else {
5361
slots.all = setEventPositions(sorted);
5462
}
55-
5663
return slots;
5764
};
5865

5966
export const PositionProvider = ({ children }: Props) => {
60-
const { events, resources, resourceFields, fields } = useStore();
67+
const { events, resources, resourceFields, fields, view } = useStore();
6168
const [state, set] = useState<PositionManagerState>({
62-
renderedSlots: setEventPositionsWithResources(events, resources, resourceFields, fields),
69+
renderedSlots: setEventPositionsWithResources(events, resources, resourceFields, fields, view),
6370
});
6471

6572
useEffect(() => {
6673
set((prev) => ({
6774
...prev,
68-
renderedSlots: setEventPositionsWithResources(events, resources, resourceFields, fields),
75+
renderedSlots: setEventPositionsWithResources(
76+
events,
77+
resources,
78+
resourceFields,
79+
fields,
80+
view
81+
),
6982
}));
70-
}, [events, fields, resourceFields, resources]);
83+
}, [events, fields, resourceFields, resources, view]);
7184

7285
const setRenderedSlot = (day: string, eventId: string, position: number, resourceId?: string) => {
7386
set((prev) => ({

0 commit comments

Comments
 (0)