क्या टीएफएस2017 के तहत सूची में रिलीज के तहत टास्क वर्क आइटम के लिए पैरेंट पीबीआई को दिखाने का कोई तरीका है?

नीचे दिया गया स्क्रीनशॉट रिलीज -3 से जुड़े दो कार्यों को दिखाता है। यहां मैं उनमें से प्रत्येक के लिए मूल पीबीआई प्रदर्शित करने में सक्षम होना चाहता हूं। या तो उनका विस्तार करके या केवल मूल पीबीआई के लिंक के साथ एक अतिरिक्त कॉलम प्रदर्शित करके यहां छवि विवरण दर्ज करें

तुम्हारी सहायता सराहनीय है

संपादित करें: मुझे पता है कि टीएफएस पर एक प्रश्न बनाने की संभावना है। समस्या यह है कि मुझे एक विशिष्ट रिलीज से संबंधित मूल कार्य आइटम पर जानकारी प्रदर्शित करने की आवश्यकता है ताकि उपयोगकर्ता रिपोर्टिंग के लिए उनका उपयोग कर सके। मैंने इस उद्देश्य के लिए एक क्वेरी बनाने की कोशिश की लेकिन मुझे रिलीज के आधार पर फ़िल्टरिंग विकल्प नहीं मिला, इसलिए मैंने सोचा कि कुछ अतिरिक्त कॉलम सक्षम करना संभव हो सकता है या उसके लिए एक एक्सटेंशन हो सकता है लेकिन मैं यह नहीं समझ सका कि कैसे इसे करने के लिए..

0
Sam00 30 जिंदा 2017, 14:10
ऐसा लगता है कि यहां पेरेंट पीबीआई को प्रदर्शित करने का कोई तरीका नहीं है, लेकिन आप संबंधित चाइल्ड वर्क आइटम आईडी द्वारा उनसे पूछताछ कर सकते हैं।
 – 
Tingting0929
31 जिंदा 2017, 12:18
हाँ यह सच है लेकिन उपयोगकर्ता रिपोर्टिंग करने के लिए चयनित रिलीज़ के आधार पर कार्यों और उनके मूल PBI को क्वेरी करने में सक्षम होना चाहता है। क्या आपके पास यह कैसे करना है इसका कोई विचार है? मैंने इसके लिए विशेष रूप से एक और पोस्ट यहां पोस्ट की है: stackoverflow.com/questions/41934425/…
 – 
Sam00
1 फरवरी 2017, 23:32
आप इसे विस्तार के माध्यम से प्राप्त करने का प्रयास कर सकते हैं। चरण: 1. निर्दिष्ट रिलीज़ प्राप्त करें ( Visualstudio.com/en-us/docs/integrate/api/rm/…) बिल्ड आईडी प्राप्त करने के लिए 2. उस बिल्ड के कार्य आइटम प्रति बिल्ड आईडी प्राप्त करें (visualstudio.com/en-us/docs/integrate/api/build/…) . एक्सटेंशन बनाने के तरीके के बारे में, आप visualstudio.com/en-us/docs/integrate/extensions/develop/…
 – 
starian chen-MSFT
2 फरवरी 2017, 13:40

1 उत्तर

सबसे बढ़िया उत्तर

विस्तार के साथ इसे प्राप्त करने के लिए कदम:

  1. बिल्ड आईडी प्राप्त करने के लिए निर्दिष्ट रिलीज प्राप्त करें
  2. उस बिल्ड प्रति बिल्ड आईडी के कार्य आइटम प्राप्त करें
  3. संबंधित कार्य आइटम प्राप्त करें

विशिष्ट रिलीज़ के कार्य आइटम प्राप्त करने के लिए एक्सटेंशन का सरल कोड है जिसका आप उल्लेख कर सकते हैं:

एचटीएमएल:

<!DOCTYPE html>
<html>
<head>
    <title>Custom widget</title>
    <meta charset="utf-8" />
    <script src="node_modules/vss-web-extension-sdk/lib/VSS.SDK.js"></script>
    <script type="text/javascript">
        VSS.init({
            explicitNotifyLoaded: true,
            usePlatformStyles:true
        });
        VSS.require(["TFS/Dashboards/WidgetHelpers", "TFS/TestManagement/RestClient", "TFS/WorkItemTracking/RestClient", "TFS/Build/RestClient", "VSS/Service", "VSS/Identities/Contracts", "VSS/Identities/RestClient", "VSS/Authentication/Services"], function (WidgetHelpers, TFS_Test_WebApi, TFS_Work_WebApi, TFS_Build_Client, VSS_Service, idContracts, idRest, VSS_Auth_Service) {
            WidgetHelpers.IncludeWidgetStyles();
            VSS.register("WidgetStarain", function () {

                 var authHeader = "none";
                var vstsAccount = "none";
                var projectName = "none";
                var releaseRestAPIPrex = "none"
                var getReleaseWorkItems= function (widgetSettings) {
                    var c = VSS.getWebContext();
                    vstsAccount = c.account.name;
                    projectName = c.project.name;
                    releaseRestAPIPrex="https://" + vstsAccount + ".vsrm.visualstudio.com/DefaultCollection/" + projectName + "/_apis/release"
                    VSS.getAccessToken().then(function (token) {

                        authHeader = VSS_Auth_Service.authTokenManager.getAuthorizationHeader(token);

                        $.ajax({
                            type: 'GET',
                            url: releaseRestAPIPrex+'/definitions?api-version=3.0-preview.1',
                            cache: false,
                            dataType: 'json',
                            beforeSend: function (xhr) {
                                xhr.setRequestHeader("Authorization", authHeader);
                            },
                        }).done(function (data) {
                            var v = data.value;
                            $("#releaseDefList").empty();
                            $("#releaseDefList").append('<option value="select">select</option>');
                            $.each(v, function (index, value) {
                                $("#releaseDefList").append('<option value="' + value.id + '">' + value.name + '</option>');
                            });
                        }).error(function (e) {
                            var s = "ss";
                        });

                    });

                };
                $("#releaseDefList").change(function () {
                    var str = "";
                    $("#releaseList").empty();
                    $("#releaseList").append('<option value="select">select</option>');
                    $("#releaseDefList option:selected").each(function () {

                        var releaseDefId = $(this).val();
                        if (releaseDefId != "select") {
                            $.ajax({
                                type: 'GET',
                                url: releaseRestAPIPrex+'/releases?definitionId=' + releaseDefId + '&api-version=3.0-preview.2',
                                cache: false,
                                dataType: 'json',
                                beforeSend: function (xhr) {
                                    xhr.setRequestHeader("Authorization", authHeader);
                                },
                            }).done(function (data) {
                                var v = data.value;

                                $.each(v, function (index, value) {
                                    $("#releaseList").append('<option value="' + value.id + '">' + value.name + '</option>');
                                });
                            }).error(function (e) {
                                var s = "ss";
                            });
                        }

                    });


                });
                $("#releaseList").change(function () {
                    var str = "";

                    $("#releaseList option:selected").each(function () {

                        var releaseId = $(this).val();
                        if (releaseId != "select") {
                            $.ajax({
                                type: 'GET',
                                url: releaseRestAPIPrex+'/release/releases/' + releaseId + '?api-version=3.0-preview.2',                                
                               cache: false,
                                dataType: 'json',
                                beforeSend: function (xhr) {
                                    xhr.setRequestHeader("Authorization", authHeader);
                                },
                            }).done(function (data) {
                                var artifacts = data.artifacts;
                                $.each(artifacts, function (index, value) {
                                    var buildId = value.definitionReference.version.id;

                                    TFS_Build_Client.getClient().getBuildWorkItemsRefs(projectName, buildId).then(function (workitemRefs) {
                                        var workItemIds = new Array();
                                        $.each(workitemRefs, function (index, value) {
                                            workItemIds.push(value.id);
                                        });
                                        var workitemString = "";
                                        TFS_Work_WebApi.getClient().getWorkItems(workItemIds,null,null,"All").then(function (workitems) {
                                            $.each(workitems, function (index, value) {
                                                workitemString += "ID: " + value.id + "; Title: " + value.fields["System.Title"];
                                            });
                                            $("#workitems").text(workitemString);
                                        });

                                    });
                                });

                            }).error(function (e) {
                                var s = "ss";
                            });
                        }

                    });


                });
                 return {
                    load: function (widgetSettings) {
                       getReleaseWorkItems(widgetSettings);
                        return WidgetHelpers.WidgetStatusHelper.Success();
                    }
                }
            });
            VSS.notifyLoadSucceeded();
        });
    </script>
</head>
<body>
    <div class="widget">
        <h2 class="title">widgets starain</h2>  
        <div class="token">none</div>

        <select id="releaseDefList">
            <option id="select">select</option>
        </select>
        <select id="releaseList">
            <option id="select">select</option>
        </select>
        <div id="workitems">
            none workitem
        </div>


    </div>
</body>
</html>

बनाम-एक्सटेंशन.जेसन:

{
  "manifestVersion": 1,
  "id": "sample-extension",
  "version": "0.5.34",
  "name": "My test extension",
  "description": "my test extension description",
  "publisher": "Starain",
  "targets": [
    {
      "id": "Microsoft.VisualStudio.Services"
    }
  ],
  "icons": {
    "default": "Images/logo.png"
  },
  "scopes": [
    "vso.work",
    "vso.build",
    "vso.build_execute",
    "vso.test",
    "vso.test_write",
    "vso.release"
  ],
  "contributions": [
        {
      "id": "WidgetStarain",
      "type": "ms.vss-dashboards-web.widget",
      "targets": [ "ms.vss-dashboards-web.widget-catalog", "Starain.sample-extension.WidgetStarainConfiguration" ],
      "properties": {
        "name": "widget starain",
        "description": "custom widget",
        "catelogIconUrl": "Images/iconProperty.png",
        "previewImageUrl": "Images/iconProperty.png",
        "uri": "WidgetStarain.html",
        "supportedSizes": [
          {
            "rowSpan": 1,
            "columnSpan": 2
          }
        ],
        "supportedScopes": [ "project_team" ]
      }
    } 
  ],
  "files": [
    {
      "path": "node_modules/vss-web-extension-sdk/lib",
      "addressable": true
    },
    {
      "path": "Images",
      "addressable": true
    },
    {
      "path": "Scripts",
      "addressable": true
    },
    {
      "path": "WidgetStarain.html",
      "addressable": true

    }
   ]
}
1
starian chen-MSFT 3 फरवरी 2017, 14:19
नमस्ते, क्या यह कोड अभी भी मान्य है? मैं रिलीज परिभाषाओं और बाद में रिलीज की एक सूची प्रदर्शित करने के लिए प्राप्त कर सकता हूं, लेकिन विशेष रिलीज का चयन करते समय मुझे पता है कि इसमें काम के आइटम जुड़े हुए हैं, मैं केवल देख रहा हूं: "कोई भी काम नहीं"। मुझे यकीन नहीं है कि बिल्ड/वर्क आइटम एपीआई अभी भी मान्य है या नहीं। सहायता के लिए धन्यवाद
 – 
Soccerjoshj07
31 अक्टूबर 2017, 20:51
ढ़ूँढ निकाला :)। "यूआरएल: रिलीजरेस्टएपिप्रेक्स+'/रिलीज/रिलीज/'" "यूआरएल होना चाहिए: रिलीजरेस्टएपिप्रेक्स+'/रिलीज/'"; हमारे पास उपसर्ग में URL का "/release" भाग पहले से है।
 – 
Soccerjoshj07
31 अक्टूबर 2017, 21:17