Темпус Доминус не отображает момент defaultDate - PullRequest
0 голосов
/ 07 февраля 2020

"dayGridMonth" Ср 15 января 2020 года 15:46:23 GMT-0600 (центральное стандартное время) пт 07 февраля 2020 года 10:15:40 GMT-0600 (центральное стандартное время)

Привет

Я использую последние версии jquery, FullCalendar, moment. js и tempusdominus, доступные через npm / yarn.

Я смотрю на представление "dayGridMonth" на февраль 2020 года. Существует многодневное событие, которое начинается до просмотра границ. Если я нажму на это событие, событие eventClick сработает, как я ожидал. event info, переданный в событие, показывает

info.event.start: Wed Jan 15 2020 15:46:23 GMT-0600 (Central Standard Time)
info.event.end: Fri Feb 07 2020 10:15:40 GMT-0600 (Central Standard Time)

. Я преобразую их в moments и передаю их «всплывающему» виджету на основе popper.js для отображения сведений о событии. Во всплывающем окне я делаю некоторую проверку даты, а затем создаю виджеты для выбора даты / времени в tempusdominus.

    ////////////////////////////////////////////////////////////////
    //
    let start = moment(options.start);
    let end = moment(options.end);

    ////////////////////////////////////////////////////////////////
    // START DATETIME
    $("<div>").attr("id", "formRowStart")
        .addClass("form-group row m-1")
        .appendTo("#popupReservationBody");
    $("<label>").attr("for", "popupReservationStart")
        .text("Start")
        .addClass("col-form-label font-weight-bold mt-0 pt-0")
        .appendTo("#formRowStart");
    $("<input>").attr("id", "popupReservationStart")
        .attr("placeholder", "YYYY/MM/DD HH:mm")
        .attr("name", "start")
        .attr("type", "text")
        .attr("required", true)
        .attr("readonly", true)
        .addClass("form-control-plaintext form-control-sm")
        .addClass("datetimepicker-input")
        .attr("data-toggle", "datetimepicker")
        .attr("data-target", "#popupReservationStart")
        .appendTo("#formRowStart");

    $("#popupReservationStart").datetimepicker({
        sideBySide: true,
        stepping: 15,
        format: "Y-MM-DD HH:mm",
        defaultDate: moment(start)
    });

    ////////////////////////////////////////////////////////////////
    // END DATETIME
    $("<div>").attr("id", "formRowEnd")
        .addClass("form-group row m-1")
        .appendTo("#popupReservationBody");
    $("<label>").attr("for", "popupReservationEnd")
        .text("End")
        .addClass("col-form-label font-weight-bold mt-0 pt-0")
        .appendTo("#formRowEnd");
    $("<input>").attr("id", "popupReservationEnd")
        .attr("placeholder", "YYYY/MM/DD HH:mm")
        .attr("name", "end")
        .attr("type", "text")
        .attr("required", true)
        .attr("readonly", true)
        .addClass("form-control-plaintext form-control-sm")
        .addClass("datetimepicker-input")
        .attr("data-toggle", "datetimepicker")
        .attr("data-target", "#popupReservationEnd")
        .appendTo("#formRowEnd");

    $("#popupReservationEnd").datetimepicker({
        sideBySide: true,
        stepping: 15,
        format: "Y-MM-DD HH:mm",
        defaultDate: moment(end)
    });

Моя проблема заключается в том, что виджет даты "окончания" отображает только строку placeholder. Значение end в то время, когда оно установлено как defaultDate, насколько я знаю, является действительным moment. Виджет «Пуск» отображается просто отлично.

Я поместил try catch вокруг определения виджета popupReservationEnd, и ничего не происходит. Чего мне не хватает?

Редактировать

Если я превращу «конец» moment в строку, то, похоже, это сработает: defaultDate: moment(end).format("YYYY-MM-DD HH:mm:ss"). Это не ответ, поскольку момент «запуска» отображается просто как есть.

...