Некоторые события отображаются, а некоторые нет в FullCalendar

У меня проблема с отображением событий в FullCalendar. Некоторые события отображаются, а некоторые нет.

Я заполняю FC через JSON и до сих пор работал хорошо даже с нумерацией страниц только получить события выбранного месяца.

...
events: {
    url: '/getEvents',
    method: 'GET',
    failure: function(error) {
        console.log(error);
        alerta("Error", "Ups...", "red");
    },
},
...

Но теперь я пытаюсь добавить больше событий из других материалов, хранящихся в БД, и, несмотря на то, что они построены таким же образом, они не отображаются в календаре.

Я создаю события следующим образом (я очистил код):

rows = connection.execute("SELECT...........")
events = []
for row in rows:
    event = {"id": row['id'], "title": row['title'], "start": row['start'], "end": row['end'], "allDay": row['allDay'], "url": row['url'], "color": row['color'], "extendedProps": {"company": row['company'], "state": fila['state']}}
    if row['groupId'] is not None:
        event['groupId'] = str(row['groupId'])
   events.append(event)

Теперь в другой части программы я создаю события аналогичным образом:

more_rows = connection.execute("SELECT....")
more_events = []
for row in more_rows:
    event = {"id": row['id'], "title": row['title'], "start": row['start'], "end": row['end'], "allDay": 1, "url": "", "color": row['color'], "extendedProps": {"company": row['company'], "description": row['description'], "type": row['type'], "tecnology": row['tecnology'], "state": row['state']}}
    more_events.append(event)

Они вместе отправляются в браузер:

...
events.extend(more_events)
return jsonify(events), 200
...

jsonify(events) отправляет в браузер этот JSON (я использую двойные кавычки в коде Python, но jsonify заменяет его на одинарные кавычки):

[{'allDay': 1, 'color': 'blue', 'end': '2019-10-24T00:00:00.000Z', 'extendedProps': {'company': 'Company test', 'state': 'Active'}, 'groupId': '48', 'id': 27, 'start': '2019-10-23T00:00:00.000Z', 'title': 'A title', 'url': ''}, 
{'allDay': 1, 'color': 'blue', 'end': '2019-10-11T00:00:00.00.000Z', 'extendedProps': {'company': 'Company test', 'description': 'oapisdvañklsjdhalksjdflaksjdf', 'state': 'Active', 'tecnology': 'javascript+html', 'type': 'Cool'}, 'id': 74, 'start': '2019-10-07T00:00:00.00.000Z', 'title': 'owqsakjdflh', 'url': ''}, 
{'allDay': 1, 'color': 'blue', 'end': '2019-10-23T00:00:00.00.000Z', 'extendedProps': {'company': 'Company test', 'description': 'sdgsdfgwertwertwg', 'state': 'Active', 'tecnology': 'c', 'type': 'Cool'}, 'id': 75, 'start': '2019-10-21T00:00:00.00.000Z', 'title': '1eqwrwqer', 'url': ''}, 
{'allDay': 1, 'color': 'blue', 'end': '2019-11-07T00:00:00.00.000Z', 'extendedProps': {'company': 'Company test', 'description': 'asdfafasdfasdfasdf', 'state': 'Active', 'tecnology': 'java', 'type': 'Cool'}, 'id': 76, 'start': '2019-11-04T00:00:00.00.000Z', 'title': 'Bla bla bla', 'url': ''}]

Дело в том, что... первый элемент печатается как событие, а остальные элементы в JSON не печатаются.

Я не вижу, где моя ошибка или что я делаю неправильно.

С Уважением.


person Aker666    schedule 03.10.2019    source источник
comment
Как содержимое events и more_events сериализуется в JSON и возвращается в браузер? Как два набора данных связаны с календарем? Возможно, они включены как отдельные источники событий? В вашем вопросе не хватает соответствующего кода и контекста, которые помогли бы нам понять, как и где данные могут пропадать.   -  person ADyson    schedule 03.10.2019
comment
P.S. это буквально ваши выходные строки? Потому что они недействительны JSON. Правильно написанный сериализатор JSON будет использовать двойные кавычки вокруг имен свойств и строковых значений, а не одинарные кавычки, как вы сделали. Кажется, это не является прямой причиной вашей проблемы (большинство браузеров на самом деле вполне терпимы к отклонениям от спецификации, если они понятны), но это просто стоит отметить. Если вы создаете JSON вручную, то... просто не надо. Используйте сериализатор. Я ожидаю, что Python будет иметь встроенный   -  person ADyson    schedule 03.10.2019
comment
Привет @ADyson, спасибо за ваши ответы. Я обновил вопрос, и даже я использую двойные кавычки, jsonify заменяет его на одинарные кавычки. Но даже с одинарными кавычками первое событие все равно печатается, а остальные нет.   -  person Aker666    schedule 04.10.2019


Ответы (1)


Я нашел проблему (ну, на самом деле коллега), и она здесь:

Первый элемент: 'end':'2019-10-24T00:00:00.000Z' || 'start':'2019-10-23T00:00:00.000Z'

Остальные элементы: 'end': '2019-10-23T00:00:00.00.000Z' || 'start': '2019-10-21T00:00:00.00.000Z'

Дело в следующем: 2019-10-24T00:00:00.000Z и 2019-10-23T00:00:00.00.000Z

Я использую этот SQL для сравнения дат (они не хранятся в ISO 8601):

SELECT id, ....., strftime('%Y-%m-%dT%H:%M:%fZ', start_date) AS start, strftime('%Y-%m-%dT%H:%M:%fZ', end_date) AS end, ...... 
FROM table 
WHERE state = 'Active' AND start > '....' AND end < '....'

Моя проблема заключалась в том, что SQlite strftime равно PYTHON strftime, но нет.

Я использовал это (Python): '%Y-%m-%dT%H:%M:%S.%fZ' вместо этого (SQlite): '%Y-%m -%dT%H:%M:%fZ'

Документация по Python

%S Second as a zero-padded decimal number.
%f Microsecond as a decimal number, zero-padded on the left.

документ Sqlite

%S seconds: 00-59
%f fractional seconds: SS.SSS

Так что будьте осторожны и не путайте формат python с форматом sqlite.

С Уважением!

person Aker666    schedule 04.10.2019
comment
хорошо подмечено, я этого не заметил! - person ADyson; 04.10.2019