Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Vlastní ovládací prvky umožňují změnit způsob zobrazení uživatelů a interakci s polem ve formuláři pracovní položky. Následující článek vás provede postupem vytvoření tohoto ukázkového vlastního ovládacího prvku. V tomto článku se dozvíte, jak vytvořit vlastní ovládací prvek.
Tip
Nejnovější pokyny k vývoji rozšíření, včetně motivů a migrace z VSS.SDK, najdete na portálu pro vývojáře sady Azure DevOps Extension SDK.
Požadavky
Do projektu zahrňte sadu azure-devops-extension-sdk:
Nainstalujte sadu SDK prostřednictvím npm:
npm install azure-devops-extension-sdk.Inicializujete ho v kódu JavaScriptu:
import * as SDK from "azure-devops-extension-sdk"; SDK.init();
Přidat příspěvek k ovládání
Přidejte příspěvek do manifestu rozšíření s typem ms.vss-work-web.work-item-form-control zaměřeným na ms.vss-work-web.work-item-form:
"contributions": [
{
"id": "sample-work-item-form-control",
"type": "ms.vss-work-web.work-item-form-control",
"description": "Custom work item form control",
"targets": [
"ms.vss-work-web.work-item-form"
],
"properties": {
"name": "My Control",
"uri": "workItemControl.html",
"height": 600
}
}
],
"manifestVersion": 1.0,
"scopes": [
"vso.work"
]
Formulář pracovní položky načte vlastní ovládací prvek do prvku IFrame.
Vlastnosti ovládacího prvku
| Vlastnost | Popis |
|---|---|
name |
Text, který se zobrazí ve skupině |
uri |
Identifikátor URI stránky HTML načtené do elementu IFrame. |
height |
(Volitelné) Výška prvku IFrame v pixelech Výchozí hodnota je 50. |
inputs |
Hodnoty, které uživatelé zadají při přidávání ovládacího prvku do formuláře. |
Pokud chcete dynamicky změnit velikost prvku IFrame, použijte metodu resize v sadě SDK.
Vlastní ovládací prvek je typ příspěvku podobného příspěvkům skupin a stránek. Klíčovým rozdílem je, že řízení příspěvků přijímá vstupy uživatelů, zatímco příspěvky skupin a stránek ne.
Řízení vstupů příspěvků
inputs Pomocí vlastnosti v objektu příspěvku můžete definovat konfigurovatelné vstupy pro váš ovládací prvek.
Následující příklad definuje dva vstupy: FieldName určuje pole pracovní položky, ke kterému je ovládací prvek přidružen, a Colors nakonfiguruje, které barvy se mapují na hodnoty pole. Uživatelé tyto hodnoty zadají při přidání ovládacího prvku do formuláře a hodnoty se předají ovládacímu prvku v době načtení.
"inputs": [
{
"id": "FieldName",
"description": "The field associated with the control.",
"type": "WorkItemField",
"properties": {
"workItemFieldTypes": ["String"]
},
"validation": {
"dataType": "String",
"isRequired": true
}
},
{
"id": "Colors",
"description": "The colors that match the values in the control.",
"type": "string",
"validation": {
"dataType": "String",
"isRequired": false
}
}
]
Vstupní vlastnosti
Následující vlastnosti definují vstup uživatele:
| Vlastnost | Popis |
|---|---|
| id | Jedinečné ID pro vstup. |
| popis | Stručný popis vstupu. |
| type | (Volitelné) Typ vstupu. Použijte WorkItemField, pokud má být hodnota označena jako název odkazu pole pracovní položky. |
| vlastnosti | (Volitelné) Vlastní vlastnosti. Slouží workItemFieldTypes k omezení platných typů polí (například String, Integer, DateTime, ). Boolean |
| Ověření | Ověřovací pravidla. Nastavení dataType (String, Number, Booleannebo Field) a isRequired (true nebo false). |
Podporované workItemFieldTypes hodnoty: String, Integer, DateTime, , PlainTextHTML, TreePathHistory, DoubleGuidBooleanIdentityPicklistString, PicklistInteger, . PicklistDouble
Ukázka JavaScriptu
Rozšíření vlastního ovládacího prvku funguje jako skupina nebo rozšíření stránky s přidáním, které čte vstupní hodnoty uživatele prostřednictvím SDK.getConfiguration().witInputs. Následující ukázka zaregistruje zprostředkovatele, který reaguje na události formuláře pracovní položky:
import { Control } from "control";
import * as SDK from "azure-devops-extension-sdk";
import * as ExtensionContracts from "azure-devops-extension-api/WorkItemTracking/WorkItemTracking";
let control;
const provider = () => {
return {
onLoaded: (workItemLoadedArgs) => {
// create the control
const config = SDK.getConfiguration();
const fieldName = config.witInputs["FieldName"];
const colors = config.witInputs["Colors"];
control = new Control(fieldName, colors);
},
onFieldChanged: (fieldChangedArgs) => {
const changedValue = fieldChangedArgs.changedFields[control.getFieldName()];
if (changedValue !== undefined) {
control.updateExternal(changedValue);
}
}
};
};
SDK.init();
SDK.ready().then(() => {
SDK.register(SDK.getContributionId(), provider);
});
Následující snímek obrazovky ukazuje ukázkový ovládací prvek pro vlastní pracovní položku v poli Priorita.