Dodawanie kontrolki niestandardowej do formularza elementu roboczego
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Kontrolki niestandardowe umożliwiają zmianę sposobu wyświetlania i interakcji użytkowników z polem w formularzu elementu roboczego. W poniższym artykule przedstawiono sposób tworzenia tej przykładowej kontrolki niestandardowej. W tym artykule pokazano, jak utworzyć własną kontrolkę niestandardową.
Napiwek
Zapoznaj się z naszą najnowszą dokumentacją dotyczącą programowania rozszerzeń przy użyciu zestawu SDK rozszerzenia usługi Azure DevOps.
Wymagania wstępne
Uwzględnij zestaw azure-devops-extension-sdk w projekcie:
Zainstaluj zestaw SDK za pomocą narzędzia npm:
npm install azure-devops-extension-sdk
.Zainicjuj go w kodzie JavaScript:
import * as SDK from "azure-devops-extension-sdk"; SDK.init();
Dodawanie kontrolki niestandardowej
Aby dodać kontrolkę do strony głównej, dodaj współtworzenie manifestu rozszerzenia. Typ udziału powinien być ms.vss-work-web.work-item-form-control
i powinien być ukierunkowany na ms.vss-work-web.work-item-form
wkład.
"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"
]
Formularz elementu roboczego dodaje element IFrame do hostowania kontrolki niestandardowej.
Właściwości
Właściwości | opis |
---|---|
name |
Tekst wyświetlany w grupie. |
uri |
Identyfikator URI do strony, która hostuje kod HTML ładowany przez element IFrame. |
height |
(Opcjonalnie) Definiuje wysokość elementu IFrame. Po pominięciu jest to 50 pikseli. |
inputs |
Wartości, które użytkownik podaje w formularzu. |
Jeśli chcesz dynamicznie zmieniać rozmiar elementu IFrame, możesz użyć resize method
elementu dostępnego w zestawie SDK klienta.
Niestandardowa kontrolka w formularzu elementu roboczego to inny typ współtworzenia, taki jak współtworzenie grupy i strony. Główną różnicą jest to, że udział kontrolki może przyjąć zestaw danych wejściowych użytkownika, podczas gdy udział grup i stron nie może.
Kontrolowanie danych wejściowych współtworzenia
Aby zdefiniować dane wejściowe dla udziału kontrolki, użyj inputs
właściwości w obiekcie contribution w manifeście.
W poniższym przykładzie są widoczne dwa dane wejściowe: FieldName
i Colors
. FieldName
określa, z którym polem kojarzy się kontrolka. Colors
Konfiguruje kolory mapowania wartości w kontrolce.
Wartości danych wejściowych są dostarczane przez użytkowników podczas dodawania ich do formularza elementu roboczego. Te wartości są przekazywane do udziału kontrolki po załadowaniu go do formularza.
"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
}
}
]
Następujące właściwości definiują dane wejściowe użytkownika, których może używać współtworzenie:
- id — unikatowy identyfikator danych wejściowych.
- description — kilka zdań opisujących dane wejściowe.
- type (opcjonalnie) — typ danych wejściowych.
- Prawidłowe wartości:
WorkItemField
— Wskazuje, że dane wejściowe są polem Element roboczy. Wartość podana przez użytkownika dla tych danych wejściowych powinna być nazwą odwołania dla prawidłowego pola elementu roboczego.
- Prawidłowe wartości:
- properties (opcjonalnie) — właściwości niestandardowe dla danych wejściowych.
- Prawidłowe klucze:
workItemFieldTypes
— Definiuje tablicę typów pól, które obsługują te dane wejściowe. Prawidłowe wartości:String
Integer
DateTime
PlainText
HTML
TreePath
History
Double
Guid
Boolean
Identity
PicklistString
PicklistInteger
PicklistDouble
- Prawidłowe klucze:
- validation — zestaw właściwości definiujących, które wartości są uznawane za prawidłowe dla danych wejściowych.
- Prawidłowe klucze:
dataType
- Definiuje typ danych wartości wejściowej. Prawidłowe wartości dla tej właściwości:String
Number
Boolean
Field
isRequired
- Wartość logiczna, która wskazuje, czy dane wejściowe są wymagane do posiadania wartości.
- Prawidłowe klucze:
Przykład języka JavaScript
Rozszerzenie kontrolki działa jak rozszerzenie grupy lub strony z jedną różnicą, że może przyjmować pewne dane wejściowe użytkownika. Aby odczytać wartości wejściowe użytkownika, użyj polecenia VSS.getConfiguration().witInputs
. W poniższym przykładzie pokazano, jak zarejestrować obiekt wywoływany w przypadku wystąpienia zdarzeń w formularzu elementu roboczego, który może mieć wpływ na twoją kontrolkę. Pokazano również, jak odczytywać wartości wejściowe udostępniane przez użytkownika dla tej kontrolki.
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);
});
Poniższy zrzut ekranu przedstawia przykładową niestandardową kontrolkę elementu roboczego dla pola Priorytet .