DevOps Azure Как программно создать запрос в коде виджета сводной панели - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть виджет информационной панели Azure Devops, используемый для сбора данных о прогрессе команды и их отображения.Моя текущая реализация зависит от жестко закодированных данных для конкретного проекта.Я использую уже созданный общий запрос, который возвращает список эпик для конфигурации (пользователи могут выбирать разные эпики внутри проекта).Однако это означает, что я не могу масштабировать это приложение для других проектов, поскольку полагаюсь на queryid уже созданного запроса.

Я пытаюсь настроить виджет панели мониторинга DevOps Azure для работы с любым проектом в моей организации. В частности, я хотел бы создать программный запрос, который запрашивает проект по Work Item Type, который содержит значение Epic.

Это все в моем файле config.js изапускается, когда пользователь пытается настроить виджет.Вот что у меня так далеко.Я не знаю, какая переменная postedQuery должна быть установлена ​​в ...

VSS.require(["VSS/Service", "TFS/Dashboards/WidgetHelpers", "TFS/WorkItemTracking/RestClient"],
    function (VSS_Service, WidgetHelpers, TFS_Wit_WebApi) {
        VSS.register("GanttChart.Configuration", function () {
            var projectId = VSS.getWebContext().project.id;
            var witClient = VSS_Service.getCollectionClient(TFS_Wit_WebApi.WorkItemTrackingHttpClient);
            return {
                load: function (widgetSettings, widgetConfigurationContext) {
                    var settings = JSON.parse(widgetSettings.customSettings.data);
                    if (!settings.epicQuery) {
                        var postedQuery = []; // Construct a query where Workitems contain Epic
                        witClient.createQuery(postedQuery, projectId, "Shared Queries/Feedback").then(
                            function(query) {
                                queryBacklogs(query.id);
                                const customSettings = {
                                    data: JSON.stringify({
                                            epicQuery: query.id
                                        })
                                };
                                 var eventName = WidgetHelpers.WidgetEvent.ConfigurationChange;
                                 var eventArgs = WidgetHelpers.WidgetEvent.Args(customSettings);
                                 widgetConfigurationContext.notify(eventName, eventArgs);
                            }
                        );
                    } else {
                        queryBacklogs(settings.epicQuery);
                    }

Виджет должен проверять WebContext, чтобы получить projectId.Затем создайте запрос, используя projectid, если он еще не существует.Наконец, он будет использовать этот запрос id, чтобы запросить журналы и заполнить раскрывающийся список, чтобы пользователь мог выбрать, для какого Epic должен собирать данные виджет.

Я пытался ссылаться на документы Azure DevOps, но этоне предоставил пример использования метода createQuery в коде: https://docs.microsoft.com/en-us/azure/devops/extend/reference/client/api/tfs/workitemtracking/restclient/workitemtrackinghttpclient2_2?view=azure-devops#createquery()

...