2012-02-02 23 views
11

He estado trabajando con el complemento FullCalendar por un tiempo y he logrado que funcione en FF y Chrome, pero no puedo entender por qué los eventos no aparece en Safari.FullCalendar Eventos que no aparecen solo en Safari

Estoy usando un servidor de Rails para buscar los eventos como una matriz. Este es el objeto JSON para los eventos que muestra 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 

No tengo ningún error en la consola de safari. La fecha de finalización no válida aparece como null en FF y Chrome.

Aquí es cómo rellenar los eventos

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' 

Traté de convertir la fecha y hora en formato ISO8601 también y no funcionó. No tengo ni idea de cuál es el problema. Realmente agradecería algo de ayuda.

+0

mismo problema aquí. ¿Alguna vez lograste arreglar esto? – melat0nin

+2

He estado usando fullCalendar por un tiempo y hasta este momento todos los problemas que encontré con Safari fueron el hecho de que las fechas se están analizando de forma un poco diferente. Por ejemplo, (Safari 6.0 (7536.25) en Mac) - new Date ('01 -01-2000 ') no es válido cuando, como en otros navegadores, es perfectamente válido. En estos casos, debe reemplazar todos los guiones con barras inclinadas hacia adelante para que el resultado sea algo así como la nueva Fecha ('01/01/2000 '). Espero que esto sea útil. – woot

+1

@TomReznik En mi caso, fueron las cuerdas, y esta pregunta me llevó a buscar en el lugar correcto. Pero no fue cuestión de guiones vs. barras, funciona perfectamente bien con guiones en mi caso. En cambio, era el formato del día, estaba produciendo un solo dígito (2012-11-1) y el 0 que faltaba era lo que lo estaba tirando. Supongo que este error se encuentra más a menudo cerca de fin de año, estoy seguro de que el mes sufre el mismo error, pero pasó desapercibido en octubre y noviembre. – DigitalDesignDj

Respuesta

0

Su cadena no está en el formato correcto.

En lugar de utilizar

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? 

intenta utilizar

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

Según la documentación FullCalendar las propiedades de inicio y final requiere un objeto Date o una cadena en formato IETF, el formato ISO8601 o una marca de tiempo UNIX . Como strftime('%Y-%m-%d %H:%M:00') no es ninguno de esos, el código no funcionaría.

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

1

que tenía un problema similar. Lo que me ayudó estaba usando la función .iso8601 de 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 su salida es similar: 2017-01-25T16: 15: 49 + 01: 00

+0

Pregunta anterior, pero esta respuesta parece buena. Cambiar de rfc822 a iso8601 funcionó para mí. –

Cuestiones relacionadas