Планировщик AlloyUI

Я поэкспериментировал с AlloyUI Scheduler, и мне кажется, что это лучший календарь из существующих. Пока ковырял, возникло несколько вопросов. У меня нет особого опыта работы с YUI, поэтому мои вопросы могут быть вызваны отсутствием опыта мышления, характерного для YUI. Тем не менее, вот проблемы, которые мне не удалось преодолеть:

  1. Сначала я попробовал загрузить в него 500+ событий, и в результате каждое действие (добавление событий, удаление событий, переключение между представлениями, переключение между неделями/месяцами) происходит с задержкой. Ожидается ли это? 500 событий — это немного, даже за относительно короткий период.

  2. Могу ли я ограничить часы, отображаемые в представлении «День» или «Месяц»? То есть вместо 00:00 - 23:59 я бы предпочел отображать только 08:00 - 17:59.

  3. Мне удалось перевести элементы пользовательского интерфейса, такие как «Сегодня», «День», «Неделя», «Месяц», «Повестка дня», «Удалить», «Сохранить», «Отменить», «например, Ужин в Брайана». Но как я могу перевести дни (например, «понедельник», «вторник» и т. д.)?

  4. Я нашел способ заменить кнопки по умолчанию на панели инструментов EventRecorder. Но есть ли способ сохранить исходные («Сохранить», «Отменить», «Удалить») и добавить несколько пользовательских?

    var eventRecorder = new Y.SchedulerEventRecorder({
      toolbar: {
        children: [
          [
            {
              label: 'Details',
              on: {
                click: function () {
                  alert("Yeah!");
                }
              }
            },
          ]
        ]
      }
    });
    
  5. Есть ли способ отключить некоторые периоды времени для создания события? Я полагаю, что этого можно было бы добиться, каким-то образом прервав создание события. Что-то в строчках

    scheduler.on({
      'scheduler-events:add': function (event) {
        return isEventAllowed();
      }
    });
    
  6. Каков правильный способ доступа к данным событий календаря в случае таких событий, как «событие-планировщик:изменить», «рекордер-события-планировщика:изменить» или подобных? В настоящее время я использую scheduler.getEvents()[event.index]._state.data и eventRecorder.getUpdatedSchedulerEvent()._state.data соответственно. Но пользоваться этими запахами смешно.

  7. Какой рекомендуемый способ добавления подробного представления редактирования для событий? В настоящее время я взломал его чем-то вроде строк

    scheduler.on({
      'scheduler-base:click': function(event) {
        var toolbar = $(".aui-scheduler-event-recorder-overlay .yui3-widget-ft .aui-toolbar-content .aui-btn-group");
        if (!toolbar.data("custom-processed")) {
          var button = $('<button class="aui-btn">Details</button>');
          toolbar.append(button);
          button.click(function (event) {
            event.preventDefault();
            var eventData = (eventRecorder.get("event") || eventRecorder.clone())._state.data;
            // Creating my detailed editing window here
            $(".aui-scheduler-event-recorder-overlay").addClass("yui3-overlay-hidden");
          });
          toolbar.data("custom-processed", true);
        }
      }
    });
    

Спасибо,


person Kaarel Nummert    schedule 26.06.2013    source источник
comment
У меня тоже такие же вопросы, не знаете как решить? Благодарю вас!   -  person Giovani    schedule 26.02.2014
comment
Нет, эта часть разработки была закрыта, но меня тоже интересуют решения.   -  person Kaarel Nummert    schedule 26.02.2014
comment
Вы должны разделить это на несколько вопросов.   -  person stiemannkj1    schedule 04.08.2014
comment
Я ответил на вопрос, связанный с # 4 здесь.   -  person stiemannkj1    schedule 27.10.2014
comment
Я объяснил, как полностью интернационализировать Scheduler (ответ #3) здесь.   -  person stiemannkj1    schedule 27.09.2017
comment
Для № 5 вы можете проверить, разрешено ли время, и отменить ScheduleEventRecorder save событие с Event.halt(), чтобы предотвратить сохранение событий в определенное время. Что-то вроде этого должно работать: eventRecorder: new Y.SchedulerEventRecorder({ on: { save: function(event) { if (!isEventAllowed()) { this.hidePopover(); alert('An event cannot be scheduled at that time.'); event.halt(); } } }   -  person stiemannkj1    schedule 27.09.2017
comment
Я ответил на вопрос, связанный с # 6 здесь .   -  person stiemannkj1    schedule 27.09.2017