Dela via


Lägg till ett diagram

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Lär dig hur du kan lägga till diagram i dina tillägg. Diagram kan läggas till i valfritt Azure DevOps Services-tillägg.

Diagram är enkla att skapa, ändra storlek på, interaktiva och konsekventa med utseendet och känslan i Azure DevOps Services. Följande diagramtyper stöds:

  • Linje
  • Stapel
  • Kolumn
  • Område
  • Staplad stapel
  • Staplad kolumn
  • Staplad yta
  • Cirkel
  • Pivottabell
  • Histogram

Om du har bråttom och vill lägga händerna på koden direkt kan du ladda ned de fullständiga exemplen. När du har laddat ned går du till charts mappen och följer sedan instruktionerna för paketering och publicering för att publicera exempeltillägget. Tillägget innehåller exempeldiagramwidgetar.

Så här organiserar du din kod

I den här självstudien skapar vi en widget och lägger till ett diagram i den. Det gör du genom att skapa en chart.html fil med följande innehåll i home mappen för projektet:

HTML-fil

<!DOCTYPE html>
<html>
<head>
    <script src="sdk/scripts/VSS.SDK.js"></script>
    <script src="scripts/pie-chart.js"></script>
</head>
<body>
    <div class="widget">
        <h2 class="title">Chart Widget</h2>
        <div id="Chart-Container"></div>
    </div>
</body>
</html>

Använd kommandot npm install för att hämta SDK:n: npm install vss-web-extension-sdk. Mer information om SDK finns på GitHub-sidan för klient-SDK.

Kontrollera att VSS.SDK.js filen finns i sdk/scripts mappen så att sökvägen är home/sdk/scripts/VSS.SDK.js.

Avbildningar

Lägg till bilder i en img mapp i projektkatalogen så att sökvägen är home/img/logo.png och home/img/CatalogIcon.png. Se vår senaste dokumentation, Formula Design System och Azure DevOps-tilläggets exempel-SDK.

Tilläggsmanifestfil

home Skapa tilläggsmanifestfilen i mappen för projektet. Skapa en vss-extension.json fil med följande innehåll:

{
    "manifestVersion": 1,
    "id": "samples-charts",
    "version": "1.0.0",
    "name": "Interactive Charts in Azure DevOps Services",
    "description": "Samples of interactive charts from the Chart SDK.",
    "publisher": "Fabrikam",
    "targets": [
        {
            "id": "Microsoft.VisualStudio.Services"
        }
    ],
    "icons": {
        "default": "img/logo.png"
    },
    "demands": ["contribution/ms.vss-dashboards-web.widget-sdk-version-2", "contribution/ms.vss-web.charts-service"],
    "contributions": [
        {
            "id": "chart",
            "type": "ms.vss-dashboards-web.widget",
            "targets": [
                "ms.vss-dashboards-web.widget-catalog"
            ],
            "properties": {
                "name": "Sample Chart",
                "description": "A simple chart widget with no configuration and hard-coded data.",
                "catalogIconUrl": "img/CatalogIcon.png",
                "uri": "chart.html",
                "supportedSizes": [
                    {
                        "rowSpan": 2,
                        "columnSpan": 2
                    }
                ],
                "supportedScopes": [
                    "project_team"
                ]
            }
        }
    ],
    "files": [
        {
            "path": "chart.html",
            "addressable": true
        },
        {
            "path": "sdk/scripts/VSS.SDK.js",
            "addressable": true
        },
        {
            "path": "img",
            "addressable": true
        },
        {
            "path": "scripts",
            "addressable": true
        }
    ],
    "scopes": [
    ]
}

Innan du laddar upp det här tillägget måste du uppdatera publisher till ditt.

Placera följande kodfragment i en chart.js fil i en scripts mapp, så att sökvägen är home/scripts/chart.js. Följ sedan instruktionerna för paketering och publicering för att publicera tillägget.

Diagram

Diagram

Det här exemplet renderar ett diagram. data och labelValues har hårdkodats här, och skulle behöva ändras till de data som du vill visualisera.

VSS.init({
        explicitNotifyLoaded: true,
        usePlatformStyles: true 
    });

VSS.require([
        "TFS/Dashboards/WidgetHelpers", 
        "Charts/Services"
        ],
        function (WidgetHelpers, Services) {
        WidgetHelpers.IncludeWidgetStyles();
        VSS.register("chart", function () { 
             return {
             load:function() {
                return Services.ChartsService.getService().then(function(chartService){
                    var $container = $('#Chart-Container');
                    var chartOptions = { 
                        "hostOptions": { 
                            "height": "290", 
                            "width": "300"
                        },
                        "chartType": "pie",
                        "series": [{
                            "data": [11, 4, 3, 1]
                        }],
                        "xAxis": { 
                            "labelValues": ["Design", "On Deck", "Completed", "Development"] 
                        }, 
                        "specializedOptions": {
                            "showLabels": "true",
                            "size": 200
                        } 
                    };

                    chartService.createChart($container, chartOptions);
                    return WidgetHelpers.WidgetStatusHelper.Success();
                });
                }
             }
            });
    VSS.notifyLoadSucceeded();
});

Här definieras diagrammets storlek i hostOptions. Series-egenskapen är en matris och innehåller ett enda objekt med data i den. Objektet xAxis innehåller labelValues, som motsvarar data. För cirkeldiagram har vi också några särskilda alternativ som definieras av specializedOptions egenskapen . Här aktiverar vi explicit dataetiketter för cirkeldiagrammet. Vi måste också ange storleken på cirkeldiagrammet genom att ange dess yttre diameter.

Diagrammet kräver en container, diagramalternativen och ett anrop till diagramtjänsten för att initiera och återge. Mer information om diagramalternativ finns i vss-web-extension-sdk/typings/charts.

Staplat ytdiagram

Följande exempel återger ett staplat ytdiagram. Den här diagramtypen är perfekt för att jämföra en relation mellan delar med en helhet och markera allmänna trender mellan kategorier. Det används ofta för att jämföra trender över tid. Det här exemplet anger också en anpassad färg för en av de serier som återges.

VSS.init({
        explicitNotifyLoaded: true,
        usePlatformStyles: true 
    });

VSS.require([
        "TFS/Dashboards/WidgetHelpers", 
        "Charts/Services"
        ],
        function (WidgetHelpers, Services) {
        WidgetHelpers.IncludeWidgetStyles();
        VSS.register("StackedAreaChart", function () { 
             return {
             load:function() {
                return Services.ChartsService.getService().then(function(chartService){
                    var $container = $('#Chart-Container');
                    var chartOptions = { 
                        "hostOptions": { 
                            "height": "290", 
                            "width": "300"
                        },
                        "chartType": "stackedArea",
                        "series": [
                            {
                                "name": "Completed",
                                "data": [1,3,4,3,6,1,9,0,8,11]
                            },
                            {
                                "name": "Development",
                                "data": [1,1,0,3,0,2,8,9,2,8]
                            },
                            {
                                "name": "Design",
                                "data": [0,0,0,6,1,1,9,9,1,9], 
                                "color": "#207752"
                            },
                            {
                                "name": "On Deck",
                                "data": [1,2,4,5,4,2,1,7,0,6]
                            }
                        ],
                        "xAxis": {
                            "labelFormatMode": "dateTime_DayInMonth",
                            "labelValues": [
                                "1/1/2016",
                                "1/2/2016",
                                "1/3/2016",
                                "1/4/2016",
                                "1/5/2016",
                                "1/6/2016",
                                "1/7/2016",
                                "1/8/2016",
                                "1/9/2016",
                                "1/10/2016"
                            ]
                        }
                    }
                    chartService.createChart($container, chartOptions);
                    return WidgetHelpers.WidgetStatusHelper.Success();
                });
                }
             }
            });
    VSS.notifyLoadSucceeded();
});

Pivottabell

Det här exemplet renderar en pivottabell. Den här diagramtypen hjälper till att ordna och sammanfatta komplexa data i tabellformat.

VSS.init({
        explicitNotifyLoaded: true,
        usePlatformStyles: true 
    });

VSS.require([
        "TFS/Dashboards/WidgetHelpers", 
        "Charts/Services"
        ],
        function (WidgetHelpers, Services) {
        WidgetHelpers.IncludeWidgetStyles();
        VSS.register("PivotTable", function () { 
             return {
             load:function() {
                return Services.ChartsService.getService().then(function(chartService){
                    var $container = $('#Chart-Container');
                    var chartOptions = { 
                        "hostOptions": { 
                            "height": "290", 
                            "width": "300"
                        },
                        "chartType": "table",
                        "xAxis": {
                            "labelValues": ["Design","In Progress","Resolved","Total"]
                        },
                        "yAxis": {
                            "labelValues": ["P1","P2","P3","Total"]
                        },
                        "series": [
                            {
                                "name": "Design",
                                "data": [
                                    [0,0,1],
                                    [0,1,2],
                                    [0,2,3]
                                ]
                            },
                            {
                                "name": "In Progress",
                                "data": [
                                    [1,0,4],
                                    [1,1,5],
                                    [1,2,6]
                                ]
                            },
                            {
                                "name": "Resolved",
                                "data": [
                                    [2,0,7],
                                    [2,1,8],
                                    [2,2,9]
                                ]
                            },
                            {
                                "name": "Total",
                                "data": [
                                    [3,0,12],
                                    [3,1,15],
                                    [3,2,18],
                                    [0,3,6],
                                    [1,3,15],
                                    [2,3,24],
                                    [3,3,10]
                                ],
                                "color": "rgba(255,255,255,0)"
                            }
                        ]
                    }

                    chartService.createChart($container, chartOptions);
                    return WidgetHelpers.WidgetStatusHelper.Success();
                });
                }
             }
            });
    VSS.notifyLoadSucceeded();
});