Vollkalender begrenzen die Anzeige der verfügbaren Monate?

8

Ich möchte herausfinden, wie ich den Vollkalender auf einen Zeitraum von drei Monaten begrenzen kann und für den Rest der Monate wie für einen Datumsauswahlpunkt deaktiviert werden kann.

z. Der aktuelle Monat ist Mai 2010, ich möchte nur, dass der Kalender Mai und April (beim Klicken auf den vorherigen Monat) und Jun (beim Klicken auf den nächsten Monat) anzeigt, der Rest der Monate wird von der Benutzerauswahl abgewählt.

Ich bin mir nicht sicher, ob ich es verpasst habe, einen Teil der Vollkalenderdokumentation zu lesen. Freundlicher Hinweis. Danke.

    
jl. 28.05.2010, 09:03
quelle

9 Antworten

14

Für FullCalendar in Version 2 ändern Sie viewDisplay : function(view) { in viewRender: function(view,element) { (gemischte Lösung aus Beispielen auf dieser Seite):

%Vor%     
Foton 21.08.2014 15:22
quelle
9

Dies basiert auf tauren answer , enthält aber die erforderlichen Datums-Mathe- und Vollkalender-Selektoren, um sie zu entfernen (dieser Code verwendet einen Bereich von 12 Monaten):

%Vor%     
lewsid 12.03.2012 17:22
quelle
4

Ich habe das nicht getan, also bin ich mir nicht sicher, ob das funktioniert. Aber Sie könnten zumindest versuchen und sehen.

Ich würde wahrscheinlich auf die Anpassung des viewDisplay Callbacks achten. Es erhält ein Objekt anzeigen , das unter anderem die Eigenschaft start enthält. Sie können die Eigenschaften des View-Objekts verwenden, um zu testen, welche Ansicht und welches Datum der Benutzer betrachtet, und dann Aktionen ausführen, die darauf basieren.

Ich bin nicht sicher, ob Fullcalendar auf diese Weise funktioniert, aber einige Plugins werden eine Aktion abbrechen, wenn Sie return false von einem Callback verwenden. Sie können also das start -Datum überprüfen, und wenn es außerhalb Ihrer akzeptablen Monate liegt, dann return false , um die Aktion abzubrechen.

Wenn das nicht funktioniert, können Sie innerhalb von viewDisplay erneut das start date überprüfen. Wenn der nächste Monat oder der vorherige Monat außerhalb des zulässigen Bereichs liegt, können Sie die jQuery-Selektoren verwenden, um die Schaltflächen für die vorherigen / nächsten Schaltflächen zu übernehmen und sie zu deaktivieren. Auf diese Weise kann der Benutzer nicht in einen Out of Range-Monat wechseln.

Wenn sich der Benutzer in einem Monat außerhalb des gültigen Bereichs befindet, können Sie auch sofort den Befehl gotoDate eingeben, um zu einem gültigen Monat zu wechseln.

%Vor%

Es gibt viele Möglichkeiten, die Logik zu machen und die Mathematik zu datieren, aber ich denke, Sie könnten etwas auf diese Weise erhalten.

    
Tauren 28.05.2010 10:21
quelle
2
%Vor%     
Prasad19sara 23.10.2013 07:02
quelle
1
%Vor%     
Joel Correa 25.07.2013 13:18
quelle
1

Sie können die Option

verwenden %Vor%     
Binary 01.05.2017 15:14
quelle
0

Ich war in einer ähnlichen Situation: Ich habe ein Programm von Ereignissen und wollte den Vollkalender auf den Datumsbereich für die Ereignisse (z. B. 12 Wochen) begrenzen. Wenn also heute in Woche 6 ist, zeigt der Kalender nur die Daten von Woche 1 bis 12 an, wenn der Benutzer auf "Weiter" oder "Zurück" klickt. Ich schaute auf die Änderung von fullcalendar.js, aber ich habe keine Zeit, um von meiner Projekt-Timeline zu umleiten, um dies zu tun. Um dies zu umgehen, habe ich Folgendes gemacht:

  1. Fügen Sie einen Datumsauswahlpunkt in einem div auf der linken Seite der Seite hinzu, wobei sich der fullCalendar rechts befindet.
  2. Legen Sie startDate und endDate für Ihren Programmzeitraum fest.
  3. Legen Sie die minDate- und maxDate-Variablen in datepicker mit startDate und endDate für den Datumsbereich des Programms in datepicker fest, um alle anderen Daten außerhalb des Bereichs auszugrauen. Der Zweck davon ist, dem Benutzer zu zeigen, dass er in dem Bereich bleibt. Außerdem habe ich Code hinzugefügt, so dass der Tag in FullCalendar angezeigt wird, wenn ein Benutzer auf das Datum in Datepicker klickt.
  4. Fügen Sie in Ihrer benutzerdefinierten jQuery-Datei .js die fullCalendar-Methode für dayClick hinzu, die das Datum als Variable akzeptiert:

    if (+ Datum & lt; + jQuery.startDate || + Datum & gt; jQuery.endDate) {

    var $ date_out_of_range_dialog = jQuery ('') .html ('

    Leider liegt das ausgewählte Datum außerhalb des Datumsbereichs für das aktuelle Programm.

    Startdatum: '+ (jQuery.startDate.getMonth () + 1) +' / '+ jQuery.startDate.getDate () +' / '+ jQuery.startDate.getFullYear () + '

    Enddatum: '+ (jQuery.endDate.getMonth () + 1) +' / '+ jQuery.endDate.getDate () +' / '+ jQuery.endDate.getFullYear () + '

    ') .Dialog({   autoOpen: falsch,   modal: stimmt,   Titel: "Datum außerhalb der Reichweite",   Breite: 600,   Tasten: {      "Ok": Funktion () {          jQuery (this) .dialog ("close");          }     } })

    $ date_out_of_range_dialog.dialog ('open');

    } else {

    // Machen Sie etwas anderes wie das Ereignis view / add / delete für diesen Tag im Bereich.

    }

  5. Die .dialog-Methode zum Öffnen des Dialogfelds stammt von mootools, aber in jQuery kann ähnliches verwendet werden. Ich habe jQuery vorangestellt. um startDate und endDate zu starten, damit die vars über meine .js-Datei verfügbar sind.

  6. Hier ist der Code für den Datepicker, um das Datum auszuwählen und auf FullCalendar auszuwählen:

    jQuery ('# datepicker_for_calendar'). datepicker ({               Standarddatum: jQuery.startDate,               minDatum: jQuery.startDatum,               maxDate: jQuery.endDate,               Inline: stimmt,               showButtonPanel: stimmt,               onSelect: function (dateText, inst) {                   var d = neues Datum (dateText);                   jQuery ('# Kalender'). fullCalendar ('gotoDate', d);                   selectedDate = d;               }           });

netefficacy 26.01.2011 22:25
quelle
0

Ich bin dran, eine Verbesserung hinzuzufügen. Dies basiert jedoch auf lewsid answer , das die notwendigen Datums-Mathe- und Vollkalender-Selektoren enthält, um es abzusetzen, aber mit einer Wendung.

Ich habe gerade zwei if's hinzugefügt, bei denen Sie wählen können, ob Sie eine oder beide oder keine verwenden möchten. Der Zweck von ihnen ist es, tagespezifisch zu sein, nur weil du zum Beispiel "2 Monate" vor und zurück erlaubst, wenn du auf einer Woche bist, kann das "Heute" + 2 Monate deaktiviert sein, und auch, nachdem du dich vorwärts bewegt hast könnte blockiert sein, zu "Today" zurückzukehren.

%Vor%     
André Catita 21.01.2014 21:32
quelle
0

Ich mochte die Antwort von lewsid sehr, aber es hat einige Probleme. Zunächst einmal ist der view.start ein Moment, kein Datum, also existiert getMonth() nicht. Zweitens ist das start einer Ansicht nur der erste sichtbare Tag in diesem Monat, was bedeutet, dass das Datum vom vorherigen Monat sein kann. Um dies zu umgehen, verwenden Sie die Eigenschaft intervalStart .

Hier ist meine Implementierung, um den Kalender das aktuelle Jahr aufzulisten.

%Vor%     
Mildan 10.05.2017 13:10
quelle

Tags und Links