2012-02-02 10 views
11

Ho lavorato con il plug-in FullCalendar per un po 'ora e sono riuscito a farlo funzionare in FF e Chrome ma non riesco a capire perché gli eventi non presentarsi su Safari.Eventi FullCalendar non visualizzati solo su Safari

Sto utilizzando un back-end Rails per recuperare gli eventi come una matrice. Questo è l'oggetto JSON per gli eventi visualizzati da FireBug.

_end: Invalid Date  
_id: "1953" 
_start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST) 
allDay: false 
backgroundColor: "#F60 !important" 
className: Array[0] 
color: "#FFFFFF !important" 
description: "" 
end: Invalid Date 
start: Fri Feb 10 2012 00:00:00 GMT+0530 (IST) 
textColor: "#FFFFFF !important" 
__proto__: Object 

Non ho errori sulla console di safari. La data di fine non valida si presenta come null su FF e Chrome.

Ecco come io popolo gli eventi

event[:id]      = each_event.id  
event[:title]    = each_event.event_title  
event[:allDay]    = each_event.all_day? 
event[:start]    = each_event.start_time.strftime('%Y-%m-%d %H:%M:00')  
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present?   
event[:color]    = '#FFFFFF !important'  
event[:backgroundColor]  = (each_event.user == current_user) ? '#F60 !important' : '#090 !important'   
event[:backgroundColor]  = '#090 !important' unless each_event.private?  
event[:textColor]   = '#FFFFFF !important' 

ho provato a convertire il datetime in formato ISO8601 troppo e non ha funzionato. Sono completamente all'oscuro di quale sia il problema. Gradirei davvero un aiuto.

+0

Stesso problema qui. Sei mai riuscito a risolvere questo problema? – melat0nin

+2

Ho usato fullCalendar per un po 'di tempo e fino a questo punto tutti i problemi che ho riscontrato con Safari erano il fatto che le date vengono analizzate in modo un po' diverso. Ad esempio, (Safari 6.0 (7536.25) su Mac) - la nuova data ('01 -01-2000 ') non è valida dove, come negli altri browser, è perfettamente valida. In questi casi è necessario sostituire tutti i trattini con barre di avanzamento in modo che il risultato sia qualcosa di simile alla nuova data ('01/01/2000 '). Spero che questo sia utile. – woot

+1

@TomReznik Nel mio caso, sono state le corde e questa domanda mi ha portato a cercare nel posto giusto. Ma non è stato il problema dei trattini contro le barre, funziona perfettamente con i trattini nel mio caso. Invece era il formato del giorno, stavo emettendo una singola cifra (2012-11-1) e lo zero iniziale mancante è quello che è stato buttato via. Immagino che questo errore si verifichi più spesso verso la fine dell'anno, sono sicuro che il mese soffre dello stesso errore, ma è passato inosservato in ottobre e novembre. – DigitalDesignDj

risposta

0

La stringa non è nel formato corretto.

Invece di usare

event[:start] = each_event.start_time.strftime('%Y-%m-%d %H:%M:00') 
event[:end] = each_event.end_date.to_time.strftime('%Y-%m-%d %H:%M:00') if each_event.end_date.present? 

tenta di utilizzare

event[:start] = each_event.start_time.to_json 
event[:end] = each_event.end_date.to_time.to_json if each_event.end_date.present? 

Secondo la documentazione FullCalendar le proprietà di inizio e fine richiede un oggetto data o una stringa in formato IETF, formato ISO8601 o un timestamp di UNIX . Perché strftime('%Y-%m-%d %H:%M:00') non è nessuno di quelli, il codice non funzionerebbe.

http://arshaw.com/fullcalendar/docs/event_data/Event_Object/

1

Ho avuto un problema simile. Quello che mi ha aiutato è stato utilizzando la funzione .iso8601 di DateTime:

event[:start] = each_event.start_time.iso8601 
event[:end] = each_event.end_date.to_time.iso8601 if each_event.end_date.present? 

formato ISO8601 un output come: 2017-01-25T16: 15: 49 + 01: 00

+0

Vecchia domanda, ma questa risposta sembra buona. Il passaggio da rfc822 a iso8601 ha funzionato per me. –

Problemi correlati