J'utilise FullCalendar V1.5.3 pour un remplacement MS SharePoint.
J'essaie de reporter la source du calendrier. Par exemple, lorsque la page se charge par défaut, ceci est l'appel AJAX P>
/ Calendrier / Événements / FeedTasks? Start = 1338094800 & End = 1341118800 & _ = 1339103302326 P> blockQuote>
Nous utilisons une boîte de sélection pour modifier la source d'événements uniquement pour afficher uniquement les tâches (tirées de différentes tables), donc après une sélection, l'appel Ajax passe à: P>
/ Calendrier / Événements / FeedVents? Start = 1338094800 & End = 1341118800 & _ = 1339103302326 P> blockQuote>
cela fonctionne. Toutefois, plutôt que de simplement modifier la source d'événement du calendrier actuel, il crée une table de calendrier en double (crée une nouvelle classe
div mas = "Contenu FC" div code> sur le dessus de l'actuel). P>
C'est ce que j'ai jusqu'à présent: p>
xxx pré> Qu'est-ce que je manque? p> p>
4 Réponses :
Il existe des méthodes appelées reformulezeventsource () code> et
addevessource () code> qui vous permettent de modifier la liste des sources. J'avais une situation similaire où j'avais besoin de cacher l'une des sources de la vue Mois, mais montrez-la dans d'autres contextes, et j'ai trouvé de la suppression et de la ré-ajout d'éléments dans les événements Source Tableaux le moyen le plus propre pour y parvenir.
var fcSources = {
courses: {
url: base+'accessfm/calendar/courses',
type: 'GET',
cache: true,
error: function() { alert('something broke with courses...'); },
color: 'purple',
textColor: 'white',
className: 'course'
},
requests: {
url: base+'accessfm/calendar/requests',
type: 'GET',
cache: true,
error: function() { alert('something broke with requests...'); },
textColor: 'white',
className: 'requests'
},
loads: {
url: base+'accessfm/calendar/loads',
type: 'GET',
cache: true,
error: function() { alert('something broke with loads...'); },
color: 'blue',
textColor: 'white',
className: 'loads'
}
};
<snip>
$('#fullcalendar').fullCalendar({
header: {
left: 'title',
center: 'agendaDay,agendaWeek,month',
right: 'today prev,next'
},
defaultView: 'agendaWeek',
firstDay: 1,
theme: true,
eventSources: [ fcSources.courses, fcSources.requests, fcSources.loads ],
viewDisplay: function(view) {
if (lastView != view.name){ // view has been changed, tweak settings
if (view.name == 'month'){
$('#fullcalendar').fullCalendar( 'removeEventSource', fcSources.loads )
.fullCalendar( 'refetchEvents' );;
}
if (view.name != 'month' && lastView == 'month'){
$('#fullcalendar').fullCalendar( 'addEventSource', fcSources.loads );
}
}
lastView = view.name;
}
});
Merci pour la réponse. Avec votre code, j'ai pu proposer ce qui suit: $ ("# tasseSelector"). Changement (OnSelectChange); fonction onSelectChanger () {$ ('# calendrier'). Fullcalendar ('Reforceventsource', root + '/ Evénements /' + Defaultfeed) .Fulcalendar ('Refetchervents'); filefeed = $ ('# tasseSelector'). Val (); $ ('# calendrier'). FullCalendar ('Addeventsource', root + '/ Events / Events /' + Defaultfeed) .fulcalendar ('Refetchervents'); }}); Cela fonctionne bien, mais pourriez-vous voir des problèmes? J'ai défini par défautFeed en haut du code, et jusqu'ici si bon. Merci pour votre réponse!
@Ret Stackoverflow.com/questions/37204410/... Pouvez-vous vérifier cette question?
Merci pour cet exemple :)
Je n'ai pas été capable de faire cela (dans le code ci-dessus Le tableau des événements) pour moi, mais je pense qu'un autre moyen d'ajouter des sources d'événements en utilisant une partie du code que vous avez fourni. P>
C'est ma logique: P>
Ma principale source d'événements est-ce (ceci est la source d'événements des exemples par défaut de FullCalendar): P>
eventSources: [ othersources.anothersource ], viewDisplay: function(view) { if (view.name == 'month'){ // alert(view.name); //calendar.fullCalendar( 'addEventSource', othersources.folgas ); calendar.fullCalendar( 'addEventSource', othersources.anothersource ); //calendar.fullCalendar('refetchEvents'); //Notice i'm not doing the refetch events. And its working for me. but i'm calling thi elsewhere, every time i make an action. So you must figure it out ;) }
Ceci est une vieille question, mais j'ai eu un problème similaire et la réponse de RET a vraiment aidé, en fonction de cela que je l'ai correctement corrigé avec un compteur qui réinitialisé pour vous assurer qu'il ne permettrait pas d'ajouter des sources d'événement en double
count = 0; fcSources = [wholePlan, allActivities]; //calendar initialization { viewRender: function(view) { if (view.name == 'agendaWeek' || view.name == 'month') { $('#fullcal').fullCalendar('removeEventSource', fcSources.allActivities); if (count > 0) { $('#fullcal').fullCalendar('addEventSource', fcSources.wholePlan); } count = 0; } if (view.name == 'agendaDay' && count == 0) { $('#fullcal').fullCalendar( 'addEventSource', fcSources.allActivities ); $('#fullcal').fullCalendar('removeEventSource', fcSources.wholePlan); count += 1; } }
Après deux jours, je l'ai eu, c'est mon code:
$("#search").on("keypress", function(evt){ if(evt.keyCode == 13) { var term = $(this).val(); $.post(route_search, { term: term, async: false }, function(data) { var parsed = $.parseJSON(data); $('#calendar').fullCalendar('removeEvents'); $('#calendar').fullCalendar( 'addEventSource', parsed ); } ); } });