Date format problem with FullCalendar for recurring events using rrule

29 Views Asked by At

I'm trying to create a logic that can handle this type of response from my API calls:

[
    {
        "name": "event3",
        "status": "{ok}",
        "type": "DateSchedule",
        "schedule": {
            "weekDay": -1,
            "day": 31,
            "month": 12,
            "year": 2024
        },
        "lk:assetType": "Other"
    },
    {
        "name": "Event",
        "status": "{ok}",
        "type": "DateSchedule",
        "schedule": {
            "weekDay": 1,
            "day": -1,
            "month": 6,
            "year": -1
        },
        "lk:assetType": "Other"
    },
    {
        "name": "Event1",
        "status": "{ok}",
        "type": "WeekAndDaySchedule",
        "schedule": "Week And Day: *",
        "lk:assetType": "Other"
    },
    {
        "name": "event4",
        "status": "{ok}",
        "type": "DateRangeSchedule",
        "schedule": {
            "start": {
                "day": -1,
                "month": -1,
                "year": 2023
            },
            "end": {
                "day": 31,
                "month": 3,
                "year": 3024
            }
        },
        "lk:assetType": "Other"
    }
]

Here's the main function I use to convert to ISO8601 format

function convertToRRule(response) {
  const rruleList = [];

  response.forEach((item) => {
    const title = item.name;
    let rrule = {};

    if (item.type === "DateSchedule") {
      rrule = createDateScheduleRRule(item.schedule);
    } else if (item.type === "WeekAndDaySchedule") {
      rrule = createWeekAndDayScheduleRRule(item.schedule);
    } else if (item.type === "DateRangeSchedule") {
      rrule = createDateRangeScheduleRRule(item.schedule);
    }

    rruleList.push({ title, rrule });
  });

  return rruleList;
}

Here is the expected result to use it in fullcalendar

{
  "name": "Event",
  "status": "{ok}",
  "type": "DateSchedule",
  "schedule": {
    "weekDay": 1,
    "day": -1, 
    "month": 6,
    "year": -1
  },
  "lk:assetType": "Other"
}

The - means that the event is repeated For example for "day": -1 means it repeats every day

Thank you in advance for your help, and please don't hesitate to suggest another logic, as I'm a beginner and I think there's surely a better way of solving this problem.

0

There are 0 best solutions below