FullCalendar limita el número de eventos y tiene un enlace MÁS

He visto que ha habido una solicitud para agregar un enlace MÁS al calendario y limitar el número de eventos. ¿Ya está hecho? ¿O alguien ha implementado su propio trabajo, que pueden compartir? Si es así, por favor publique su código.

Con la nueva versión v2.1.0-beta2 Lanzamiento hace 17 días Arshaw hizo lo siguiente

PROBLEMAS RESUELTOS:

  • Máximo de eventos con enlace “más …” (304)
  • No active eventMouseover / eventMouseout mientras arrastra / cambia de tamaño (1297)

NUEVAS OPCIONES:

  • eventLimit
  • eventLimitClick
  • eventLimitText
  • dayPopoverFormat

Fuente

Entonces, puedes hacer lo siguiente:

$('#calendar').fullCalendar({ lang: 'en', eventLimit: true, // If you set a number it will hide the itens eventLimitText: "Something" // Default is `more` (or "more" in the lang you pick in the option) }); 

Recientemente escribí un complemento que hace exactamente lo que estás pidiendo. Con suerte, Adam Shaw, el desarrollador de fullcalendar se vinculará o incluirá este complemento de mejora con el núcleo de todo el calendario.

Compruébalo y déjame saber lo que piensas. Por favor, informe de cualquier error. https://github.com/lyconic/fullcalendar.viewmore

Gracias

Yo manejo esto en eventRender. El código es algo así, con maxEvents siendo lo que quiera configurar max y BuildMoreLink(currentMoreNum) construye su enlace. Devolver falso evita que el elemento se agregue a su calendario.

  eventRender: function (event, element) { var eventDateString = GetDateInCalFormat(event.start); var $calDay = $('td.fc-day[data-date="' + eventDateString + '"]'); var dayEventCount = $calDay.attr('dayEventCount') ? parseInt($calDay.attr('dayEventCount')) : 0; dayEventCount = dayEventCount + 1; $calDay.attr('dayEventCount', dayEventCount); if (dayEventCount <= maxEvents) { //[any custom formatting] } else { var missingEvents = dayEventCount - maxEvents; $('.moreLink', $calDay).remove(); $moreLink = $('') $moreLink.html(BuildMoreLink(missingEvents)); $calDay.append($moreLink); return false; } } 

Ah, sí, y aquí está mi formateador para obtener el valor de fecha correcto para encontrar el día:

 function GetDateInCalFormat(dateToFormat) { dd = dateToFormat.getDate(); mm = dateToFormat.getMonth() + 1; yyyy = dateToFormat.getFullYear(); if (dd < 10) { dd = '0' + dd } if (mm < 10) { mm = '0' + mm } results = yyyy + '-' + mm + '-' + dd; return results; } 

Parece que hay un ticket de “mejora” abierto para esta funcionalidad en la página de códigos de google de todo el calendario . Si ‘inicia’ ese problema, se le notificará cualquier actualización de la funcionalidad.

Además, en ese hilo alguien publicó un bash de solución. No lo he probado, pero podría valer la pena echarle un vistazo. Ver ese comentario específico aquí .

Si alguien más tiene el mismo problema lee esto:

Si se usa PHP / MySQL para obtener eventos de la base de datos:

acaba de obtener el sello de fecha de inicio y la fecha de finalización del mes.

A continuación, utilice simple para bucle

  $allEvents = array(); for ($i = $start; $i <= $end; $i = strtotime("+ 1 day", $i)) { //need to have start and end dates to be the same day but end day must be at 23:59:59 $newStart = $i; $newEnd = strtotime("+ 23 hours 59 minutes 59 seconds", $newStart); $limit = 10; //load all events with limit whatever limit you wish and merge with all events $loadedEvents = loadEvents($newStart, $newEnd, $limit, $otheroptions); $allEvents = array_merge($allEvents, $loadedEvents); } 

y luego puede usar $allEvents array para mostrar eventos. Funcionó para mí y cada día muestra 10 eventos al máximo.