исправить многократный запрос на полных ресурсах выборки календаря - PullRequest
1 голос
/ 14 октября 2019

У меня есть календарь с некоторыми пользовательскими функциями. Календарь строится один раз, но в некоторых случаях мне нужно обновить настройку минимального и максимального времени.

Чтобы получить точное минимальное / максимальное время, у меня есть функция ajax, возвращение которой показано ниже. {"start":"12:00:00","end":"21:30:00"}

И этот ответ сопровождается этим кодом для обновления календаря.

$('#calendar').fullCalendar('option', 'minTime', minTime);
$('#calendar').fullCalendar('option', 'maxTime', maxTime);

У меня есть данные календаря обновления, которые также вызывают функцию, которая извлекает минимальное / максимальное время.

function updateCalendarData() {

   getCalendarDateField();
   $('#calendar').fullCalendar('refetchResources');
   $('#calendar').fullCalendar('refetchEvents');      
   // min/maxtime function.
   setStudioHours(studioWorkingHours);
}

У меня есть кнопка, при нажатии которой календарь должен обновляться, как показано ниже.

$('#calendar_date').change(function(event , element) {
  updateCalendarData();
});

$('#filter_form_submited').click(function(event , element) {
  updateCalendarData();
});
jQuery('body').on('click','button.fc-prev-button, button.fc-next-button',function(event) {
  setStudioHours(studioWorkingHours);
});

$(document).on('keypress',function(event) {
  if(event.which == 13) {
    updateCalendarData();
  }
});

Я установил refetchResourcesOnNavigate как true, и вот мой ресурс ифункции обратного вызова событий.

resources: function(callback){

  timeInfo = $('#calendar').fullCalendar('getView');

  jQuery('input[name="start"], #calendar_date').val(timeInfo.start.format());
  jQuery('input[name="end"]').val(timeInfo.end.format());

  $.ajax({
    url: resourcesCallback,
    type: 'GET',
    dataType: "json",
    data: jQuery('.calendar_filter_form').serialize(),
    error: function() {
      console.log('Oops! Try again.');
    },
    success: function(response){
      $(".fc-widget-header th > div").popover('hide');
      callback(response);
    }
  });
},

events: {
  url: eventsCallback,
  method: 'GET',
  data: function() {
    var fields = jQuery('.calendar_filter_form').serializeArray();
    var datas = {};
    jQuery.each(fields, function(index, val) {
      /* iterate through array or object */
      datas[val.name] = val.value;
    });
    return datas;
  },
  failure: function() {
    alert('there was an error while fetching events!');
  },
},

Система работает нормально, без каких-либо ошибок, но проблема в том, что ресурс called 3 times.

И я уверен, что у меня просто есть ресурсы и путьили операции являются уникальными. Но в моем сетевом журнале это в 3 раза больше, чем связанный путь для ajax-запроса.

Так что не так, я пытался остановить многократный запрос с некоторым значением true / false, но не работал.

Просто я должен упомянуть, что у меня Drupal 8 и v3 полного календаря.

ОБНОВЛЕНО

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

function updateCalendarData() {
    getCalendarDateField();
    $('#calendar').fullCalendar('refetchEvents');
    setStudioHours(studioWorkingHours);
}

и только один раз установите время.

var newTimeConfig = {};
newTimeConfig['minTime'] = matchedDayHours.start;
newTimeConfig['maxTime'] = matchedDayHours.end;
$('#calendar').fullCalendar('option', newTimeConfig);

Но, тем не менее, у меня есть проблема с ресурсами обновления в навигации, что если я сделаюего конфигурация false, тогда я получу эту ошибку.

refetchResourcesOnNavigate: false,

jquery.min.js: 2 Uncaught TypeError: Невозможно прочитать свойство 'format' из неопределенного

Проверьте это демо https://codepen.io/nasser-ali-karimi/pen/gOOMMKN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...