Как мне отфильтровать диаграмму Ганта JavaScript, используя условия, и обработать пустые входные данные? - PullRequest
0 голосов
/ 20 марта 2019

Я недавно начал использовать диаграмму Ганта DHTMLX на основе JavaScript .У меня есть некоторые проблемы с фильтрами, которые я не чувствую, они связаны исключительно с самой диаграммой, но связаны с javascript.

Итак, диаграмма Ганта может быть отфильтрована с помощьюпередача в некоторых условиях через оператор if и возврат true, когда эти условия выполнены.Все значения моих условий поступают из выбора входов, эти входы представляют собой диапазоны.

<input type="text" class="k-textbox" id="bedsStart" />
<input type="text" class="k-textbox" id="bedsEnd" />

<input type="text" class="k-textbox" id="deckStart" />
<input type="text" class="k-textbox" id="deckEnd" />

<button type="button" id="filterSort">Set Filters</button>

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

$("#filterSort").on("click", function (e) {        
    let bedsStart = $('#bedsStart').val();
    let bedsEnd = $('#bedsEnd').val();
    let deckStart = $('#deckStart').val();
    let deckEnd = $('#deckEnd').val();

Эти значения затем передаются в качестве условий для фильтра в соответствии с документацией DHTMLX:

    gantt.attachEvent("onBeforeTaskDisplay", function (id, task) {
        if (task.crane >= craneStart && task.crane <= craneEnd) {
            return true
        }        
        return false;
    });
    gantt.init("ganttReport");
}

Проблема заключается в том, что если какой-либо из текстовых вводов пуст / пуст, тогда фильтр не работаети ничего не возвращает.Есть ли способ, которым я могу обработать эти значения NULL, не включая их или динамически указав, какие фильтры использовать?

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

if(condition1)
{
    return true
}
if(condition2)
{
    return true
}
return false

Приведенный выше код не будет работать, и будет использоваться только условие2, поскольку условие1 будет перезаписано,Поэтому я не могу просто изложить свои условия таким образом или использовать if else.

Может ли кто-нибудь предложить решение, как я могу передать все эти условия этому единственному утверждению, но обрабатывать нули?

1 Ответ

1 голос
/ 20 марта 2019

Это рабочий пример, вы можете попробовать использовать только startDate / endDate или оба: https://codesandbox.io/s/7qz1kw9vq

...