2017-09-15 4 views
2

Gibt es eine Möglichkeit, Ereignisüberlappungen zu vermeiden; wie EventOverlap: False innerhalb der Vollkalender Config, aber andererseits Überlappung für Hintergrundereignisse zulassen?EventOverlap für Hintergrundereignisse nur im Vollkalender zulassen

Ich möchte einige Ereignisse als Hintergrundereignisse in meinem Kalender rendern, genauso wie Info (dass es bereits einige Ereignisse in anderen Kalendern gibt), aber ich kann mein neues Ereignis oben anlegen, verschieben oder die Größe ändern.

Alle anderen Ereignisse dürfen sich in diesem Kalender jedoch nicht überlappen.

Ich versuche nur dies, ohne Erfolg:

calendar:{ 
     editable: true, 
     contentHeight: 'auto', 
     theme: true, 
     firstDay: 1, 
     eventOverlap: false, 
     nowIndicator: true, 
     allDaySlot: false, 
     slotDuration: '01:00:00', 
     snapDuration: '00:00:01', 
     axisFormat: 'HH:mm', 
     timeFormat: 'HH:mm', 
     timezone: 'local', 
     views: { 
     listThreeDay: { 
      type: 'list', 
      duration: { days: 3 }, 
      buttonText: 'list 3 day' 
     }, 
     listOneWeek: { 
      type: 'list', 
      duration: { weeks: 1 }, 
      buttonText: 'list week' 
     } 
     }, 
     businessHours: { 
     start: '06:00',   // a start time (6am in this example) 
     end: '18:00',   // an end time (6pm in this example) 
     dow: [ 1, 2, 3, 4, 5 ] // days of week (here monday till friday) 
     }, 
     events: [ 
     { 
      start: '00:00:00+02:00', 
      end: '08:00:00+02:00', 
      color: 'red', 
      rendering: 'background', 
      dow: [1], 
      overlap: true, 
     } 
     ], 
    ... 

Die folgende Abbildung zeigt, was ich brauche:

  • Hintergrund Ereignisse (rote)
  • normale Ereignisse (blau) überlappende Hintergrund Ereignisse
  • normale Ereignisse (blau) überlappen sich nicht bei anderen normalen Ereignissen

enter image description here

+0

Was bedeutet ohne Erfolg genau? Was war das falsche senario, und was wäre das richtige Szenario? Sie haben damit aufgehört, das Hintergrundereignis zu überlappen? Oder hat es dir erlaubt, andere Ereignisse noch zu überlagern? Oder beides? Oder etwas anderes. Sorry, wenn ich den Punkt verpasst habe, aber für mich ist es nicht 100% klar, was das Problem ist. Vielleicht würde ein konkretes Beispiel helfen. – ADyson

+0

Das Problem ist, dass es auch Überlappungen für Hintergrundereignisse ignoriert; aber ich brauche Hintergrundereignisse nur als visuelle Blöcke (mit Ereignisüberlappung aktiviert) – Jorgen

+0

"ignoriert Ereignis überlappend". Sie meinen, es erlaubt Ereignisüberschneidungen für diese Hintergrundereignisse oder lässt es nicht zu? Und in diesem Fall, wie verhält sich der Rest des Kalenders? Das ist, was ich meine, wenn Ihre Beschreibung unklar ist. – ADyson

Antwort

2

können Sie ganz Funktion eine einfache benutzerdefinierte auf dem dieses Ziel zu erreichen eventOverlap Rückruf verwenden. Einfach testen, ob das Ereignis, das auf einem Hintergrund-Ereignis ist oder nicht überlappt wird:

eventOverlap: function(stillEvent, movingEvent) { 
    return stillEvent.rendering == "background"; 
} 

auch overlap: true auf Ihrem individuellen Hintergrundereignis zu spezifizieren Sie nicht brauchen. http://jsfiddle.net/sbxpv25p/18/

https://fullcalendar.io/docs/event_ui/eventOverlap/ erklärt über die für diesen Rückruf Verwendung einer benutzerdefinierten Funktion:

Ein Arbeitsbeispiel kann hier gesehen werden.

N.B. Das mag Ihnen schon klar sein, aber es lohnt sich, darauf hinzuweisen: Wenn Sie vorhaben, die neu gezogenen/in der Größe veränderten Ereignisse in Ihre Datenbank zu speichern, müssen Sie die Überlappungsregeln auf dem Server überprüfen, da alle Regeln geschrieben wurden JavaScript kann von jedem, der mit den Entwicklertools des Browsers vertraut ist, einfach deaktiviert oder umgangen werden. Diese Art von Front-End-Regeln sind nur für die Benutzerfreundlichkeit nützlich. Sie können nicht 100% ig darauf verlassen werden, dass Ihre Daten validiert werden.

+0

Danke für den netten Hinweis. Ich werde das ausprobieren und es scheint hier die beste Lösung zu sein. Das Überprüfen von Ereignissen im Backend vor dem Hinzufügen zur Datenbank ist bereits erfolgt - ist wirklich wichtig für dieses Projekt;) – Jorgen

+0

Kein Problem.Wenn die Antwort Ihnen hilft, denken Sie bitte daran, sie zu verbessern und/oder als akzeptierte Antwort zu markieren - danke :-) – ADyson

Verwandte Themen