Potrzebuję dodać identyfikator do każdego pojedynczego wydarzenia z Fullcalendar, znalazłem to http://arshaw.com/fullcalendar/docs/event_data/Event_Object/, ale nie wiem jak, ten identyfikator jest
unikalny dla każdego pojedynczego zdarzenia, ponieważ wtedy zapisuję zdarzenia w bazie danych Mysql. DziękiID wydarzenia (Fullcalendar)
Odpowiedz
Identyfikator obiektu zdarzenia jest polem opcjonalnym. Możesz powrócić i użyć tego, co chcesz, aby powrócić ze skryptu po stronie serwera. Możesz utworzyć identyfikator złożony z kombinacji pól ... "calendarName_eventID" lub po prostu użyć identyfikatora zdarzenia z bazy danych. Nie jesteś pewien, że chcesz ujawnić swój klucz podstawowy, ale (jest to kolejna kwestia sama w sobie). Krótko mówiąc ... możesz stworzyć własną wartość identyfikatora.
Możesz chcieć rzucić okiem tutaj: https://code.google.com/p/fullcalendar/issues/detail?id=713
zajmuje wątek z usunięciem wydarzenia w kalendarzu, ale pokazuje, jak oryginalny plakat zachodziło identyfikator na oddzwonienia z jego/jej uratować imprezy.
Mam nadzieję, że to pomocne.
Dziękuję człowiekowi, ale myślę, że ten post jest za stary i może to jest powód, dla którego to nie działa dla mnie –
OK, oto mój sposób rozwiązania. najpierw pojawia się ostatni Identyfikator zdarzenia z mojego DB i ja plus 1 do ostatniego id
<?php
$sql = mysql_query("SELECT id FROM calendar ORDER BY id DESC LIMIT 1");
$resul = mysql_fetch_row($sql);
$idActual = $resul[0];
$idActual = $idActual + 1;
?>
Potem wysłać identyfikator do JS
var idActual = "<?php echo $idActual ?>";
i to wszystko.
Czy dzwonisz do niego osobno, kiedy zaczynasz tworzyć nowe wydarzenie? Czy użytkownik może utworzyć więcej niż jedno zdarzenie przed zapisaniem w bazie danych? – fletch
Tak, użytkownik może utworzyć więcej niż jedno zdarzenie, zanim zostanie zapisany w bazie danych. –
Bez odświeżania strony, w jaki sposób wypełniasz każdy nowy "$ idActual", którego potrzebujesz? Sądzę, że w większości przypadków chciałbyś wykonać wywołanie AJAX, aby uzyskać niezbędny identyfikator. – fletch
Znalazłem rozwiązanie! Podczas tworzenia każdym razie umieścić swoją unikatową id tutaj:
var shift = calendar.fullCalendar('renderEvent',
{
id: shift_id,
title: current_name,
start: new Date(y, m, d + current_day, current_start_time_h, current_start_time_m),
end: new Date(y, m, d + current_day, current_end_time_h, current_end_time_m),
allDay: false
}, true // make the event "stick"
);
Po tym ID to słuchacz dołączy w strukturze DOM:
eventAfterRender:function(event, element, view) {
$(element).attr("id","event_id_"+event._id);
},
dostać wszystkie wydarzenia na polu:
console.log(calendar.fullCalendar('clientEvents'));
Teraz masz szereg zdarzeń, a wszystkie zdarzenia są ponumerowane w strukturze DOM!
polecam ustawienie identyfikatora param w prameters podobny do tego:
$('#calendar').fullCalendar({
id: 'calendar',
eventReceive: function(event) {
alert(this.calendar.options.id);
},
eventDrop: function(event) {
alert(this.calendar.options.id);
},
eventClick: function(event) {
alert(this.calendar.options.id);
},
eventRender: function(event) {
alert(this.calendar.options.id);
}
});
klarowny roztwór
Podczas pobierania zdarzeń z Ajax również przypisać "id" pochodzące z DB
id: entry.id
$.ajax({
url: '/eventsJson',
type: 'GET',
data: { },
error: function() {
alert('there was an error while fetching events!');
}
}).done(function (doc) {
var event = Array();
$.each(doc, function(i, entry) {
event.push({id:entry.id, title: entry.title, start: entry.start});
});
Event Kliknij
eventClick: function(event, jsEvent, view) {
var title = prompt('Event Title:', event.title, { buttons: { Ok: true, Cancel: false} });
if (title){
event.title = title;
var data = {
'title':title
};
$.ajax({
url: '/events/'+event.id,
data: data,
type: 'POST',
dataType: 'json',
success: function(response){
if(response.status == 'success')
$('#calendar').fullCalendar('updateEvent',event);
},
error: function(e){
alert('Error processing your request: '+e.responseText);
}
});
}
}
jako Fletch wspomina, trzeba wygenerować identyfikator dla każdego nowego zdarzenia w DB lub z kodem połączenia DB w celu aby umożliwić współbieżność.Bryan Villafañe stosuje podobne podejście, ale oto moje rozwiązanie.
dla FC javascript:
select: function(start) { //executed when clicked on a day
var title = prompt('Event title:');
if (title) {
$.ajax({
url: '/events.php',
data: 'title='+title+'&start='+moment(start).format('YYYY-MM-DD'),
type: "POST",
success: function(id) {
console.log(id); //used for debug
if (!isNaN(id)){ //on success checks the result
event = { //and adds the event locally with the returned DB id.
title: title,
start: start,
team: team,
id: id
}//then renders the new event
$('#calendar').fullCalendar('renderEvent', event, true);
}
},
error: function(error){
console.log(error);
}
});
} //unselects the clicked day
$('#calendar').fullCalendar('unselect');
}
Ten wysyła datę jako formacie YYYY-MM-DD
ponieważ używam tylko wydarzenia ALLDAY, ale można zaktualizować odpowiednio. Wysłanie tylko start
spowoduje czas epoki z milisekundami.
Baza danych zwraca identyfikator wiersza, jeśli wstawienie zakończyło się pomyślnie, a następnie jest przypisane do zdarzenia utworzonego lokalnie i jest renderowane. Oto funkcja DB:
$result = "Wrong parameter combination!";
if ($_POST[title]&&$_POST[start]) {
$result = $db->exec("INSERT INTO events (title, start) VALUES ('$_POST[title]','$_POST[start]')");
if($result==1){
$result = $db->lastInsertRowID();
}
}
echo $result;
Tutaj sprawdzam dwa parametry POST i wstawiam. Jeśli insert się powiódł, otrzymam ostatni identyfikator wiersza wstawienia i zwrócę go do JS. W przeciwnym razie zwracany jest komunikat o błędzie.
Używam SQLite3 dla mojego DB, ale ostatni wstawiony wiersz dla MySQL można sprawdzić, jak pokazano here. Istnieje niewielka szansa, aby ktoś wstawił inne zdarzenie między sprawdzaniem identyfikatora wkładki i ostatniego rzędu, ale jeśli nie masz dużego ruchu, wszystko będzie w porządku.
Każde zdarzenie ma już swój własny, unikalny ID:
eventClick: function(event){
alert(event._id);
}
- 1. fullCalendar - Nazwa i szczegóły wydarzenia
- 2. FullCalendar zapobiega utracie wydarzenia poza godzinami pracy
- 3. Jak edytować szerokość wydarzenia w FullCalendar?
- 4. Dodawanie hvertekstu wydarzenia w formacie fullcalendar
- 5. Wydarzenia FullCalendar nie wyświetlają się tylko w Safari
- 6. Jak zdobyć wydarzenie według identyfikatora wydarzenia w fullcalendar?
- 7. Fullcalendar imprezy brakuje
- 8. j. Kalendarza jQuery - wydarzenia
- 9. Meteor js i fullcalendar
- 10. Dodawaj wydarzenia w FullCalender na kliknięcia
- 11. Wiążące Wydarzenia Jquery na elementach generowanych przez inne wydarzenia
- 12. Powtarzające się wydarzenia w kalendarzu - Railsy
- 13. Pełny kalendarz pokazujący wydarzenia całodniowe
- 14. Pełny tytuł nagłówka FullCalendar
- 15. format czasu fullcalendar
- 16. fullcalendar stała wysokość rzędu
- 17. Testy integracyjne dla fullCalendar
- 18. jupiter fullcalendar na perski
- 19. Browserify FullCalendar z jQuery zewnętrznego
- 20. jQuery: Elementy Clone i wydarzenia
- 21. Strefa czasowa nie działa poprawnie dla FullCalendar
- 22. Dostosowywanie przedziałów czasowych w Fullcalendar
- 23. Ustawienie koloru tła komórki Fullcalendar
- 24. fullcalendar zmień kolumny na wiersze
- 25. fullCalendar V2 event background title
- 26. Angular2 i jQuery „zmiany” wydarzenia
- 27. Fullcalendar: obiekt, który można przeciągnąć, odrzuca pełno-kalendarza jako droppable, mimo że fullcalendar przyjmuje kroplę
- 28. wydarzenia i gwintowania
- 29. Jak uzyskać subskrybentów wydarzenia?
- 30. NodeJS - Singleton + Wydarzenia
ten identyfikator nie będzie wyjątkowy, ponieważ, jak stwierdzono w dokumentacji powtarzanie wydarzenia powinny mieć ten sam identyfikator zdarzenia. Za każdym razem, gdy zapełniasz wydarzenia w pełnym kalendarzu, możesz nadać identyfikator każdemu wydarzeniu, jednak nie jest to obowiązkowe. –
Ale potrzebuję unikalnego identyfikatora, ponieważ później usuwam o edycji wybranego wydarzenia i potrzebuję identyfikatora do zrobienia tego, jak mogę to zrobić, podać identyfikator, gdy zapełniam kalendarz? –