Agregar un gráfico
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Obtenga información sobre cómo puede agregar gráficos a las extensiones. Los gráficos se pueden agregar a cualquier extensión Azure DevOps Services.
Sugerencia
Consulte nuestra documentación más reciente sobre el desarrollo de extensiones mediante el SDK de extensión de Azure DevOps.
Los gráficos son fáciles de crear, cambiar de tamaño, interactivos y coherentes con el aspecto y la apariencia Azure DevOps Services. Se admiten los siguientes tipos de gráfico:
- Línea
- Barra
- Columna
- Área
- Barra apilada
- Columna apilada
- Área apilada
- Pie
- Tabla dinámica
- Histograma
Si tiene prisa y quiere poner las manos en el código inmediatamente, puede descargar los ejemplos completos.
Una vez descargado, vaya a la charts
carpeta y siga las instrucciones de empaquetado y publicación para publicar la extensión de ejemplo.
La extensión contiene widgets de gráfico de ejemplo.
Cómo organizar el código
Para este tutorial, se crea un widget y se agrega un gráfico.
Para ello, en la home
carpeta del proyecto, cree un chart.html
archivo con el siguiente contenido:
Archivo 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>
Use el comando npm install para recuperar el SDK:
npm install vss-web-extension-sdk
. Para más información sobre el SDK, visite la página de GitHub del SDK de cliente.
Asegúrese de que el VSS.SDK.js
archivo está dentro de la sdk/scripts
carpeta para que la ruta de acceso sea home/sdk/scripts/VSS.SDK.js
.
Imágenes
Agregue imágenes a una img
carpeta en el directorio del proyecto para que la ruta de acceso sea home/img/logo.png
y home/img/CatalogIcon.png
.
Consulte nuestra documentación más reciente, el SDK de ejemplo del sistema de diseño de fórmulas y la extensión de Azure DevOps.
Archivo de manifiesto de extensión
En la carpeta del proyecto, cree el home
archivo de manifiesto de extensión. Cree un archivo vss-extension.json
con el siguiente contenido:
{
"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": [
]
}
Antes de cargar esta extensión, debe actualizar a publisher
la suya.
Coloque los siguientes fragmentos de código en un chart.js
archivo de una scripts
carpeta para que la ruta de acceso sea home/scripts/chart.js
.
A continuación, siga las instrucciones de empaquetado y publicación para publicar la extensión.
Gráficos
Gráfico
En este ejemplo se representa un gráfico. y data
labelValues
se han codificado de forma dura aquí, y tendría que cambiarse a los datos que desea visualizar.
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();
});
Aquí, el tamaño del gráfico se define en hostOptions
. La propiedad series es una matriz y contiene un único objeto con datos en ella. El xAxis
objeto contiene labelValues
, que corresponde a data
.
En el caso de los gráficos circulares, también tenemos algunas opciones especiales definidas por la specializedOptions
propiedad . Aquí se habilitan explícitamente las etiquetas de datos para el gráfico circular.
También es necesario establecer el tamaño del gráfico circular especificando su diámetro exterior.
El gráfico requiere un contenedor, las opciones del gráfico y una llamada al Servicio de gráficos para inicializar y representar. Para obtener más información sobre las opciones de gráfico, consulte vss-web-extension-sdk/typings/charts.
Gráfico de áreas apiladas
En el ejemplo siguiente se representa un gráfico de áreas apiladas. Este tipo de gráfico es ideal para comparar una relación de partes con un conjunto y resaltar tendencias generales entre categorías. Normalmente se usa para comparar tendencias a lo largo del tiempo. En este ejemplo también se especifica un color personalizado para una de las series que se representan.
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();
});
Tabla dinámica
En este ejemplo se representa una tabla dinámica. Este tipo de gráfico ayuda a organizar y resumir datos complejos en un formulario tabular.
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();
});