Полный календарь Повторяющиеся события Все Показать 12:00 по времени - PullRequest
1 голос
/ 14 мая 2019

Я храню даты своих событий в mySQL как datetime, а в полной версии календаря 4 они отображаются правильно.Сейчас я работаю над добавлением повторяющихся событий в календарь, но когда я это сделаю, все мои повторяющиеся события отображаются с 12-часовым временем начала, несмотря на то, каковы мои действительные даты / время событий.

Посмотрите, что происходитв коде пера.У меня есть оригинальный код также прилагается.

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

https://codepen.io/michels287/pen/eaBmxN?editors=0010

document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');

var calendar = new FullCalendar.Calendar(calendarEl, {
    selectMirror: true,
    plugins: ['interaction', 'resourceDayGrid', 'resourceTimeGrid'],
    header: {
        right: 'prevYear,prev,next,today,nextYear',
        center: 'title',
        left: 'resourceTimeGridDay,resourceTimeGridTwoDay,timeGridWeek,dayGridMonth'
    },
    views: {
        resourceTimeGridTwoDay: {
            type: 'resourceTimeGrid',
            duration: {
                days: 2
            },
            buttonText: '2 days',
        }
    },
    defaultView: 'resourceTimeGridDay',
    datesAboveResources: true,
    editable: true,
    nowIndicator: true,
    eventLimit: true,
    schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives',
    events: [ { 
      allDay: false,
      color: "#FFD700",
      company_id: "1",
      startTime: "2019-05-13 14:00:00",
      endTime: "2019-05-13 14:00:00",
      id: "22218",
      daysOfWeek: [0,1,2],
      resourceId: "1"  }],
         resources: [{
            id: '1',
            title: 'Room A'
        },
        {
            id: '2',
            title: 'Room B'
        }
    ]
});

calendar.render();
});

1 Ответ

1 голос
/ 14 мая 2019

Извините за путаницу.Я использовал форматы даты и времени для моих обычных событий начала / окончания, поэтому я предположил , что мог бы перенести эту логику в startTime и endTime.Вы правы, я неправильно прочитал документы.

Я изменил startTime и endTime на тип 'time' в моей БД и показываю время загрузки, как вы показываете.

Если кто-то еще сталкивается с этим и находит это полезным, поля startRecur и endRecur сохраняются в моей базе данных как 'date'.Я использую только такие даты, как «2019-05-13», например, чтобы заставить их работать.

Если эти поля (поля повторяющихся событий) заполняются в моей базе данных, я больше не храню ничего в обычных полях 'start' и 'end', которые используются для отображения обычных событий!С учетом сказанного я также извлекаю даты из моей базы данных, используя параметры даты «начало» и «конец» для загрузки по мере необходимости, когда пользователь перемещает календарь вперед-назад.

Чтобы выполнить эту работу с моими повторяющимися событиями, я выполняю такие запросы:

SELECT non_recurring_event_fields_here FROM appointments appts WHERE (appts.start BETWEEN '".$start."' AND '".$end."') 

    UNION ALL

SELECT recurring_event_fields_are_here FROM appointments appts WHERE appts.start IS NULL

После выполнения запроса UNION ALL он захватит все мои повторяющиеся события и будет отображаться нана стороне клиента (благодаря js от fullcalendar), однако они спроектированы в моей базе данных: с startRecur, endRecur, startTime, endTime, daysOfWeek и т. д.

ADyson, теперь я понимаю, как работают повторяющиеся события на основе ваших комментариев ипредложения.Я знаю, насколько вы мне помогли до сих пор в моем обновлении fullcalendar 4 из 3. Я заплачу за лицензию, когда она будет завершена, поэтому ваши усилия не пропадут даром.

Еще раз спасибо.

...