Пользовательский интерфейс расширения Azure DevOps

Мне было поручено разработать расширение для Azure DevOps для автоматизации процесса сборки - настраиваемую задачу сборки. Предостережение заключается в том, что на самом деле я разрабатываю серию задач сборки, каждая из которых содержит регулярные входные данные. Но по историческим причинам все эти задачи сборки должны быть сгруппированы, и пользователь сможет выбрать правильную из раскрывающегося списка на странице задач в настройках конвейера.

Проблема в том, что изменение в раскрывающемся списке должно скрывать НЕКОТОРЫЕ входные данные, а также отображать некоторые другие входные данные, т.е. я хотел бы обработать событие CHANGE раскрывающегося списка и контролировать видимость элементов пользовательского интерфейса.

Это вообще возможно?

Я ошибаюсь? Как я могу подойти к этому?


person Bozhidar Stoyneff    schedule 10.11.2018    source источник
comment
Вы пытались, возможно, использовать группу задач для создания связанной задачи сборки. Вы также можете связать выборки с переменными сборки?   -  person Panu Oksala    schedule 12.11.2018


Ответы (1)


Решение простое, но пока неочевидное.

У каждого входа есть свойство visibleRule, которое делает именно то, что нужно: контролирует видимость входа, к которому он прикреплен. Итак, в файле task.json в массиве inputs можно было сделать следующее:

Определите раскрывающийся список:

{
  "name": "selectedOption",
  "type": "pickList",
  "label": "Options",
  "options": {
    "o1": "Option 1",
    "o2": "Option 2",
    "o3": "Option 3"
  }
},

Затем определите такие поля:

{
  "name": "test1",
  "type": "string",
  "label": "Option 1 test",
  "visibleRule": "selectedOption = o1"
},
{
  "name": "test2",
  "type": "string",
  "label": "Option 2 test",
  "visibleRule": "selectedOption = o2"
},

Теперь ввод test1 отображается ТОЛЬКО, если o1 (Вариант 1) выбран в раскрывающемся списке selectedOption. То же самое касается test2 и o2. Ни test1, ни test2 не отображаются, если selectedOption = o3.

person Bozhidar Stoyneff    schedule 12.11.2018
comment
Я обнаружил, что мне нужно было сгруппировать некоторые элементы управления вместе, прежде чем это было видно с помощью этого фрагмента ДО раздела входов. "groups":[ { "name": "SomeGroupName", "displayName" : "Group Title Goes Here", "isExpanded": true } Затем в каждый элемент управления я добавил свойство: "groupName": "SomeGroupName". И это наконец сработало! - person Antebios; 05.12.2018