Přidání grafu
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Zjistěte, jak můžete do rozšíření přidávat grafy. Grafy je možné přidat do libovolného rozšíření Azure DevOps Services.
Tip
Podívejte se na naši nejnovější dokumentaci k vývoji rozšíření pomocí sady Azure DevOps Extension SDK.
Grafy se snadno vytvářejí, dají se měnit velikost, jsou interaktivní a odpovídají Azure DevOps Services vzhledu a chování. Podporují se následující typy grafů:
- Čára
- Pruhový
- Sloupec
- Plošný
- Skládaný pruhový
- Skládaný sloupec
- Skládaná oblast
- Výsečový
- Kontingenční tabulka
- Histogram
Pokud spěcháte a chcete si kód hned projít, můžete si stáhnout kompletní ukázky.
Po stažení přejděte do charts
složky a pak podle pokynů k balení a publikování publikujte ukázkové rozšíření.
Rozšíření obsahuje ukázkové widgety grafu.
Jak uspořádat kód
Pro účely tohoto kurzu vytvoříme widget a přidáme do něj graf.
Uděláte to tak, že home
ve složce projektu vytvoříte chart.html
soubor s následujícím obsahem:
Soubor HTML
<!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>
K načtení sady SDK použijte příkaz npm install :
npm install vss-web-extension-sdk
. Další informace o sadě SDK najdete na stránce GitHubu klientské sady SDK.
Ujistěte se VSS.SDK.js
, že se soubor nachází ve sdk/scripts
složce, aby cesta byla home/sdk/scripts/VSS.SDK.js
.
Obrázky
Přidejte obrázky do img
složky v adresáři projektu tak, aby cesta byla home/img/logo.png
a home/img/CatalogIcon.png
.
Podívejte se na naši nejnovější dokumentaci, systém návrhu vzorců a ukázkovou sadu SDK rozšíření Azure DevOps.
Soubor manifestu přípony
home
Ve složce projektu vytvořte soubor manifestu rozšíření. Vytvořte vss-extension.json
soubor s následujícím obsahem:
{
"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": [
]
}
Před nahráním tohoto rozšíření musíte aktualizovat publisher
na vaše.
Vložte následující fragmenty kódu do chart.js
souboru ve scripts
složce, aby cesta byla home/scripts/chart.js
.
Pak postupujte podle pokynů k balení a publikování a publikujte rozšíření.
Grafy
Graf
Tato ukázka vykresluje graf. Kódy data
a labelValues
jsou tady pevně zakódované a je potřeba je změnit na data, která chcete vizualizovat.
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();
});
Tady je velikost grafu definovaná v hostOptions
souboru . Vlastnost series je pole a obsahuje jeden objekt s daty. Objekt xAxis
obsahuje labelValues
, který odpovídá objektu data
.
Pro výsečové grafy máme také některé speciální možnosti, které jsou definovány specializedOptions
vlastností. Tady explicitně povolujeme popisky dat pro výsečový graf.
Musíme také nastavit velikost výsečového grafu zadáním jeho vnějšího průměru.
Graf vyžaduje kontejner, možnosti grafu a volání služby Chart Service pro inicializaci a vykreslení. Další informace o možnostech grafu najdete v tématu vss-web-extension-sdk/psaní/grafy.
Skládaný plošný graf
Následující ukázka vykreslí skládaný plošný graf. Tento typ grafu je ideální k porovnání vztahu částí k celku a ke zvýraznění obecných trendů napříč kategoriemi. Běžně se používá k porovnání trendů v průběhu času. Tato ukázka také určuje vlastní barvu pro jednu z vykreslovaných řad.
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();
});
Kontingenční tabulka
Tato ukázka vykreslí kontingenční tabulku. Tento typ grafu pomáhá uspořádat a sumarizovat složitá data v tabulkové podobě.
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();
});