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 );
}
);
}
});