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

Дело:

У меня есть 3 модели данных:

  • Задачи
  • Подзадачи
  • Статус

Модели связаны следующим образом: задачи имеют много-к-одному со статусами, то же самое относится и к подстатусам. Например, статусы: «Делать», «Делать», «Готово» и т. Д.

Я могу отфильтровать все Задачи, используя раскрывающийся список с заданным значением: «@ datasource.query.filters». так что я выбираю опцию, отображаются только те записи, которые имеют конкретное значение.

Я не могу использовать запрос к связанным источникам данных. Например, если я хочу применить запрос к «Задачи: подзадачи (отношение)», чтобы отфильтровать подзадачи по их статусу (Подзадачи: состояние (отношение), запрос отсутствует как опция.

Как этого добиться? Как применить фильтр к связанным с выбранным в данный момент элементам записи на основе определенного для них атрибута?

Случай 2

Как настроить список, основанный на нескольких отношениях?

3 источника данных:

  • Этапы
  • Статусы
  • Задачи

Задачи проходят через этапы, с изменением их состояния по пути. Например, задача может находиться на стадии планирования со статусом «делать», «делать» или «выполнено».

Пожалуйста, обратитесь к добавленному скриншоту дляпример интерфейса.

enter image description here

1 Ответ

0 голосов
/ 03 октября 2019

Это только одно из возможных решений. Но я бы предложил следующее:

  1. Создание 3 источников данных в рамках модели задач, SubTasksToDo, SubTasksDoing и SubTasksDone.
  2. В каждом источнике данных установите тип «Сценарий запроса» и добавьтепараметр (введите строку или число в зависимости от типа первичного ключа вашей задачи), назовите его MainTaskKey, и для каждого источника данных снимите флажок автозагрузки.
  3. Для каждого источника данных введите сценарий запроса:

    query.filters.YourMainTaskRelationEndName.id._equals = query.parameters.MainTaskKey;query.filters.Status._equals = 'To Do';// замените на «Делать» или «Готово» в зависимости от того, с каким источником данных вы работаете

  4. Перейдите к источнику данных «Основные задачи» и прокрутите вниз, найдя клиентский скрипт onItemChange, и введите следующеев блоке кода:

    var itemKey = datasource.item.id;var todo = app.datasources.SubTasksToDo;var working = app.datasources.SubTasksDoing;var done = app.datasources.SubTasksDone;todo.properties.MainTaskKey = itemKey;working.properties.MainTaskKey = itemKey;done.properties.MainTaskKey = itemKey;todo.load ();doing.load ();done.load ();

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

...