Пользовательское представление года DHTMLX Sceduler с фильтром

Я добавил 4 пользовательских метки (вкладки) в планировщик, например:

<div class="dhx_cal_tab a-tab" name="A_tab" style="right:50px;"></div>
<div class="dhx_cal_tab b-tab" name="B_tab" style="right:50px;"></div>
<div class="dhx_cal_tab c-tab" name="C_tab" style="right:50px;"></div>
<div class="dhx_cal_tab d-tab" name="D_tab" style="right:50px;"></div>

И подключил их так:

 scheduler.locale.labels.A_tab = "A"
 scheduler.locale.labels.B_tab = "B"
 scheduler.locale.labels.C_tab = "C"
 scheduler.locale.labels.D_tab = "D"

В шапке они выглядят так:

расписание

Что я хочу сделать, так это иметь возможность щелкнуть каждую из этих кнопок, и это покажет представление года только с событиями со свойством, скажем, type из A, B, C или D - в зависимости от того, какое представление выбрано в представлении года .

Ниже приведена моя первая попытка:

scheduler.attachEvent("onTemplatesReady",function(){
            scheduler.date.A_start = scheduler.date.B_start = scheduler.date.C_start = scheduler.date.D_start  = function(e){return e.setMonth(0),this.month_start(e)};
      scheduler.date.get_A_end = scheduler.date.add_B = scheduler.date.add_C = scheduler.date.add_D = function(date,inc){
        return scheduler.date.add(date,inc*1,"year");
      }
            scheduler.date.add_A = scheduler.date.add_B = scheduler.date.add_C = scheduler.date.add_D = function(start_date){
          return scheduler.date.add(start_date,1,"year");
      }
      scheduler.templates.A_date = scheduler.templates.B_date = scheduler.templates.C_date = scheduler.templates.D_date = scheduler.templates.year_date;
      scheduler.templates.A_scale_date = scheduler.templates.B_scale_date = scheduler.templates.C_scale_date = scheduler.templates.D_scale_date = scheduler.templates.year_scale_date;

            scheduler.filter_year = function(id, event) {
                // display event only if its type is set to the mode of the
                if (event.type=== scheduler.getState().mode) {
                    return true;
                }
                // default, do not display event
                return false;
            };
        });

Однако, когда я запускаю, нажимаю на одну из вкладок, я получаю следующее: пользовательский вид

Здесь есть 3 проблемы:

  1. Представление выглядит как клон представления месяца, а не представления года.
  2. Фильтр явно не работает, так как отображаются все события (мне нужны только события типа B (того же цвета, что и Tab)
  3. Вкладка A показывает вид, отличный от остальных:

Вкладка с другим видом

Я просто забываю? Любая помощь в получении этого представления при любом запуске приветствуется!

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


person Martin O Leary    schedule 20.06.2017    source источник


Ответы (1)


Представление года не имеет метода конструктора, поэтому для каждого планировщика может быть только одно представление года. Это также не может быть реализовано через функции даты, они определяют только ежедневные просмотры https://docs.dhtmlx.com/scheduler/custom_views.html#stepbystepexample

Что вы можете сделать, это

  • добавить табы в шапку, как вы это уже делали
  • изменить поведение вкладки — вместо переключения на пользовательский вид вы можете установить filter_year и переключить планировщик в режим «год», что должно делать то, что вам нужно — у вас будут отфильтрованные задачи в виде года.

Вот рабочая демонстрация: http://snippet.dhtmlx.com/aa08a8249

person Alex Klimenkov    schedule 21.06.2017