cypress javascript function for sorting based on event priority then event date and time

I need to validate sorting of an Event column with this value:
Event Name
Event date
Event time
your text
Order of column when sorted is based on priority of event name ( I > U > P)
then date and time should be sorted correctly based on ascending/descending.

I need a javascript code to run in Cypress to validate if sorting is correct based on event priority then date/time.
Chatgpt gave me some but it did not work

function validateEvents(events, priorityOrder, sortOrder = 'desc') {
const getDate = (dateStr) => new Date(dateStr);

// Compare function for date and time sorting
const compareDates = (a, b) => {
const dateA = getDate(a.date);
const dateB = getDate(b.date);
if (dateA.getTime() === dateB.getTime()) {
  return sortOrder === 'asc' ? a.time.localeCompare(b.time) : b.time.localeCompare(a.time);
}
return sortOrder === 'asc' ? dateA - dateB : dateB - dateA;
};

let previousPriorityIndex = -1;

// Group by event name and check priority and sorting
for (const event of events) {
const currentPriorityIndex = priorityOrder.indexOf(event.name);

// Ensure event names follow the priority order
if (currentPriorityIndex < previousPriorityIndex) {
  return false;
}

previousPriorityIndex = currentPriorityIndex;

// Sort events within the same name group
const groupedEvents = events.filter(e => e.name === event.name).sort(compareDates);

// Ensure events are in correct date/time order
if (!groupedEvents.every((e, i) => e === event)) {
  return false;
}
}
return true;
}

// Usage in Cypress test
cy.get('selector-for-events').then(($elements) => {
const events = [...$elements].map(el => ({
name: el.querySelector('.event-name').innerText.trim(),
date: el.querySelector('.event-date').innerText.trim(),
time: el.querySelector('.event-time').innerText.trim()
 }));

 const priorityOrder = ['I', 'U', 'P']; // Define the priority order
 const sortOrder = 'desc'; // or 'asc'

  expect(validateEvents(events, priorityOrder, sortOrder)).to.be.true;
});`