Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Gebruik extensies om het werkitemformulier aan te passen door groepen, pagina's, menuacties, waarnemers of aangepaste besturingselementen toe te voegen.
Aanbeveling
Als u een nieuwe Azure DevOps-extensie start, kunt u deze onderhouden voorbeeldverzamelingen eerst proberen. Ze werken met de huidige productversies en behandelen moderne scenario's (bijvoorbeeld tabbladen toevoegen op pull-aanvraagpagina's).
- Azure DevOps-extensievoorbeeld (GitHub): een compact startersvoorbeeld dat algemene uitbreidingspatronen demonstreert: https://github.com/microsoft/azure-devops-extension-sample
- Voorbeelden van Azure DevOps-extensies (verouderde handleiding voor verzamelingen en bijdragen): installeren om UI-doelen te inspecteren of de bron te bekijken: https://marketplace.visualstudio.com/items/ms-samples.samples-contributions-guidehttps://github.com/Microsoft/vso-extension-samples/tree/master/contributions-guide
- Microsoft Learn-voorbeelden (bladeren door Azure DevOps-voorbeelden): gecureerde, up-to-datum voorbeelden in Microsoft-documenten: /samples/browse/?terms=azure%20devops%20extension
Als een voorbeeld niet werkt in uw organisatie, installeert u het in een persoonlijke organisatie of testorganisatie en vergelijkt u de doel-id's en API-versies van het extensiemanifest met de huidige documenten. Zie voor naslaginformatie en API's:
- Een groep toevoegen
- Een pagina (tabblad) toevoegen
- Een menuactie toevoegen
- Een aangepaste controle toevoegen
- Luisteren naar gebeurtenissen
- Bijdragen configureren
Zie het voorbeeld van de gebruikersinterface in de voorbeelden van Azure DevOps-extensies op GitHub voor de volledige broncode.
Aanbeveling
Voor de nieuwste richtlijnen voor uitbreidingsontwikkeling, inclusief thema's en migratie van VSS. SDK raadpleegt u de ontwikkelaarsportal van de Azure DevOps Extension SDK.
Een groep toevoegen
Als u een groep wilt toevoegen aan de hoofdpagina, voegt u een bijdrage toe aan uw uitbreidingsmanifest met het type ms.vss-work-web.work-item-form-group targeting ms.vss-work-web.work-item-form:
"contributions": [
{
"id": "sample-work-item-form-group",
"type": "ms.vss-work-web.work-item-form-group",
"description": "Custom work item form group",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "My Group",
"uri": "workItemGroup.html",
"height": 600
}
}
]
Eigenschappen
| Vastgoed | Beschrijving |
|---|---|
name |
Tekst die wordt weergegeven in de groep. |
uri |
URI naar de HTML-pagina die in het IFrame is geladen. |
height |
(Optioneel) Hoogte van de groep. De standaardwaarde is 100%. |
JavaScript-voorbeeld
In dit voorbeeld wordt een provider geregistreerd die reageert op formulierevenementen van werkitems. Het gebruikt WorkItemFormService om veldwaarden te lezen wanneer het werkitem wordt geladen.
import { IWorkItemFormService, WorkItemTrackingServiceIds } from "azure-devops-extension-api/WorkItemTracking";
import * as SDK from "azure-devops-extension-sdk";
async function getWorkItemFormService(): Promise<IWorkItemFormService> {
return await SDK.getService<IWorkItemFormService>(WorkItemTrackingServiceIds.WorkItemFormService);
}
SDK.init();
SDK.ready().then(() => {
SDK.register(SDK.getContributionId(), () => {
return {
// Called when the active work item is modified
onFieldChanged: (args) => {
console.log("onFieldChanged", JSON.stringify(args));
},
// Called when a new work item is being loaded in the UI
onLoaded: async (args) => {
const service = await getWorkItemFormService();
const values = await service.getFieldValues([
"System.Id", "System.Title", "System.State", "System.CreatedDate"
]);
console.log("onLoaded", JSON.stringify(values));
},
// Called when the active work item is being unloaded in the UI
onUnloaded: (args) => {
console.log("onUnloaded", JSON.stringify(args));
},
// Called after the work item has been saved
onSaved: (args) => {
console.log("onSaved", JSON.stringify(args));
},
// Called when the work item is reset to its unmodified state (undo)
onReset: (args) => {
console.log("onReset", JSON.stringify(args));
},
// Called when the work item has been refreshed from the server
onRefreshed: (args) => {
console.log("onRefreshed", JSON.stringify(args));
}
};
});
});
Evenementen
| Gebeurtenis | Gebeurtenisbeschrijving | Argumentatie | Beschrijving van het argument |
|---|---|---|---|
onFieldChanged |
Afgevuurd nadat een veld is veranderd. Als de veldwijziging regels heeft uitgevoerd waarmee andere velden zijn bijgewerkt, maken al deze wijzigingen deel uit van één gebeurtenis. | ID-kaart | De ID van het werkitem |
changedFields |
Matrix met de referentienaam van alle gewijzigde velden. | ID-kaart | De ID van het werkitem |
onLoaded |
Geactiveerd nadat de gegevens zijn geladen in het werkitemformulier, wanneer de gebruiker een werkitem opent of wanneer de gebruiker naar een ander werkitem navigeert in de triageweergave. | ID-kaart | De ID van het werkitem |
onReset |
Uitgelokt nadat de gebruiker de wijzigingen in het werkitem ongedaan heeft gemaakt. | ID-kaart | De ID van het werkitem |
onRefreshed |
Geactiveerd nadat de gebruiker het werkitem handmatig heeft vernieuwd. | ID-kaart | De ID van het werkitem |
onSaved |
Afgevuurd nadat een werkitem is opgeslagen. Voor werkitems in een dialoogvenster moet u zich richten op het ms.vss-work-web.work-item-notifications type om ervoor te zorgen dat de gebeurtenis wordt geactiveerd, aangezien dit bijdragetype wordt ontladen zodra het dialoogvenster wordt gesloten. Zie Luisteren naar gebeurtenissen voor meer informatie. |
ID-kaart | De ID van het werkitem |
onUnloaded |
Geactiveerd voordat de gebruiker het dialoogvenster sluit of voordat de gebruiker naar een ander werkitem in de triageweergave gaat. | ID-kaart | De ID van het werkitem |
Een pagina toevoegen
Een nieuwe pagina wordt weergegeven als een tabblad op het werkitemformulier. Nieuwe pagina's worden weergegeven naast het tabblad Details .
Als u een pagina wilt toevoegen aan het werkitemformulier, voegt u een bijdrage toe aan uw uitbreidingsmanifest met het type ms.vss-work-web.work-item-form-page targeting ms.vss-work-web.work-item-form:
"contributions": [
{
"id": "sample-work-item-form-page",
"type": "ms.vss-work-web.work-item-form-page",
"description": "Custom work item form page",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "My Page",
"uri": "workItemPage.html"
}
}
]
Eigenschappen
| Vastgoed | Beschrijving |
|---|---|
name |
Tekst die op het tabblad wordt weergegeven. |
uri |
URI naar de HTML-pagina die in het IFrame is geladen. |
JavaScript-voorbeeld
Zie het JavaScript-voorbeeld in de sectie formuliergroep. De naam van het geregistreerde object moet overeenkomen met die id van de inzending.
Evenementen
| Gebeurtenis | Gebeurtenisbeschrijving | Argumentatie | Beschrijving van het argument |
|---|---|---|---|
onFieldChanged |
Afgevuurd nadat een veld is veranderd. Als de veldwijziging regels heeft uitgevoerd waarmee andere velden zijn bijgewerkt, maken al deze wijzigingen deel uit van één gebeurtenis. | ID-kaart | De ID van het werkitem |
changedFields |
Matrix met de referentienaam van alle gewijzigde velden. | ID-kaart | De ID van het werkitem |
onLoaded |
Geactiveerd nadat de gegevens zijn geladen in het werkitemformulier, wanneer de gebruiker een werkitem opent of wanneer de gebruiker naar een ander werkitem navigeert in de triageweergave. | ID-kaart | De ID van het werkitem |
onReset |
Uitgelokt nadat de gebruiker de wijzigingen in het werkitem ongedaan heeft gemaakt. | ID-kaart | De ID van het werkitem |
onRefreshed |
Geactiveerd nadat de gebruiker het werkitem handmatig heeft vernieuwd. | ID-kaart | De ID van het werkitem |
onSaved |
Afgevuurd nadat een werkitem is opgeslagen. Voor werkitems in een dialoogvenster moet u zich richten op het ms.vss-work-web.work-item-notifications type om ervoor te zorgen dat de gebeurtenis wordt geactiveerd, aangezien dit bijdragetype wordt ontladen zodra het dialoogvenster wordt gesloten. Zie Luisteren naar gebeurtenissen voor meer informatie. |
ID-kaart | De ID van het werkitem |
onUnloaded |
Geactiveerd voordat de gebruiker het dialoogvenster sluit of voordat de gebruiker naar een ander werkitem in de triageweergave gaat. | ID-kaart | De ID van het werkitem |
Bijdragen configureren
In Azure DevOps Services worden groepsextensies standaard aan het einde van de tweede kolom weergegeven en paginabijdragen worden weergegeven als het laatste tabblad. Bijdragen van besturingselementen worden niet standaard weergegeven. Gebruikers moeten ze handmatig toevoegen aan het formulier. Zie Formulierextensies voor werkitems configureren in Azure DevOps Server om bijdragen weer te geven, te verbergen of te verplaatsen.
Menuactie toevoegen
Als u een item wilt toevoegen aan de werkbalk werkitem, voegt u deze bijdrage-element toe aan uw extensie-manifest. Het item wordt weergegeven in het uitklapmenu met verticale weglatingstekens (...).
"contributions": [
{
"id": "sample-work-item-menu",
"type": "ms.vss-web.action",
"description": "Sample toolbar item which updates the title of a work item",
"targets": [
"ms.vss-work-web.work-item-context-menu"
],
"properties": {
"text": "Try me!",
"title": "Updates the title of the work item from the extension",
"toolbarText": "Try me!",
"icon": "images/show-properties.png",
"uri": "menu-workItemToolbarButton.html"
}
}
]
Eigenschappen
| Vastgoed | Beschrijving |
|---|---|
text |
Tekst die wordt weergegeven op het item op de werkbalk. |
title |
Knopinfotekst die wordt weergegeven in het menu-item. |
toolbarText |
Tekst die wordt weergegeven wanneer de muisaanwijzer op het item wordt geplaatst. |
uri |
URI naar een pagina die de actie-handler op de werkbalk registreert. |
icon |
URL naar een pictogram dat wordt weergegeven in het menu-item. Relatieve URL's worden omgezet met behulp van baseUri. |
group |
Bepaalt waar het menu-item wordt weergegeven, gerelateerd aan andere. Werkbalkitems met dezelfde groepsnaam worden gegroepeerd en gescheiden door een scheidingsteken van de rest van de items. |
registeredObjectId |
(Optioneel) Naam van de geregistreerde menuactiehandler. Standaard wordt de bijdrage-ID gebruikt. |
Luister naar gebeurtenissen
Waarnemers luisteren naar werkitem-gebeurtenissen zonder gebruikersinterface op het formulier. Gebruik waarnemers om naar de onSaved gebeurtenis te luisteren, omdat waarnemers zich buiten het formulier bevinden en niet worden vernietigd wanneer het formulierdialoogvenster wordt gesloten.
"contributions": [
{
"id": "sample-work-item-form-observer",
"type": "ms.vss-work-web.work-item-notifications",
"description": "Gets events about the current work item form for the 'Try Me!' toolbar button",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"uri": "myformobserver.html"
}
}
]
Eigenschappen
| Vastgoed | Beschrijving |
|---|---|
uri |
URI naar een pagina die de scripts host die naar gebeurtenissen luisteren. |
Evenementen
| Gebeurtenis | Gebeurtenisbeschrijving | Argumentatie | Beschrijving van het argument |
|---|---|---|---|
onFieldChanged |
Afgevuurd nadat een veld is veranderd. Als de veldwijziging regels heeft uitgevoerd waarmee andere velden zijn bijgewerkt, maken al deze wijzigingen deel uit van één gebeurtenis. | ID-kaart | De ID van het werkitem |
changedFields |
Matrix met de referentienaam van alle gewijzigde velden. | ID-kaart | De ID van het werkitem |
onLoaded |
Geactiveerd nadat de gegevens zijn geladen in het werkitemformulier, wanneer de gebruiker een werkitem opent of wanneer de gebruiker naar een ander werkitem navigeert in de triageweergave. | ID-kaart | De ID van het werkitem |
onReset |
Uitgelokt nadat de gebruiker de wijzigingen in het werkitem ongedaan heeft gemaakt. | ID-kaart | De ID van het werkitem |
onRefreshed |
Geactiveerd nadat de gebruiker het werkitem handmatig heeft vernieuwd. | ID-kaart | De ID van het werkitem |
onSaved |
Afgevuurd nadat een werkitem is opgeslagen. Voor werkitems in een dialoogvenster moet u zich richten op het ms.vss-work-web.work-item-notifications type om ervoor te zorgen dat de gebeurtenis wordt geactiveerd, aangezien dit bijdragetype wordt ontladen zodra het dialoogvenster wordt gesloten. Zie Luisteren naar gebeurtenissen voor meer informatie. |
ID-kaart | De ID van het werkitem |
onUnloaded |
Geactiveerd voordat de gebruiker het dialoogvenster sluit of voordat de gebruiker naar een ander werkitem in de triageweergave gaat. | ID-kaart | De ID van het werkitem |
JavaScript-voorbeeld
In het volgende voorbeeld wordt een waarnemer geregistreerd met behulp van de moderne SDK:
import * as SDK from "azure-devops-extension-sdk";
SDK.init();
SDK.ready().then(() => {
SDK.register(SDK.getContributionId(), () => {
return {
onFieldChanged: (args) => {
// Handle field changes
},
onLoaded: (args) => {
// Handle work item loaded
},
onUnloaded: (args) => {
// Handle work item unloaded
},
onSaved: (args) => {
// Handle work item saved
},
onReset: (args) => {
// Handle work item reset (undo)
},
onRefreshed: (args) => {
// Handle work item refreshed
}
};
});
});
Compatibiliteitsnotities
Actie versus actie-aanbieder
Gebruik ms.vss-web.action-provider wanneer u menu-items dynamisch laadt met getMenuItems op de menuhandler. Gebruik ms.vss-web.action deze optie wanneer uw menu-items statisch zijn en zijn gedefinieerd in het manifest.
Verouderde patronen
De volgende patronen worden niet meer ondersteund:
-
require("VSS/Events/Document")- niet ondersteund met New Boards Hub -
SDK.jsscripttag metusePlatformScripts: true- gebruik in plaats daarvan het npm-pakketazure-devops-extension-sdk