How Can We Help?

Features / Widgets

You are here:
< Back


Widgets are used to make up the UI of edit screens for entities, and include combo boxes, text areas, radio buttons and many more UI components.

Widgets are returned from the Widgets API Resource end point or by using the “Widgets” expand when retrieving an entity or project.

All widgets share the following value/options:

DescriptionstringDescription of the field (descriptions can be captured on the custom field configure screen for each custom field). Descriptions are not currently used within the Enterprise Tester UI, but are available for 3rd party tool developers.
FormNamestringGenerally retained for internal use by Enterprise Tester, if present, this will be the key used for the key/value pair of this widget when submitted back to the server.
HandlerTypestringThe key of the handler being used to render this widget, this information can be used to provide additional customisation to a widget based on what information it represents.
HiddenBooleanIf the value is present, determines if the field is current hidden or not – if not present, the field is assumed to be visible.
ImplementationTypestringThe handler (class) in code which is used to represent this widget, this information can be used to provide additional customisation to a widget based on what information it represents.
ItemIdstringA unique ID assigned to some inbuilt widgets so they can be handled in special ways within the UI – for example “remote links” for a requirement will not be shown if the requirement is being created, or if it has yet to be synchronized with any remote entities, and that remote links widget is identified by it’s ItemId.
LabelstringThe label for the widget
NamestringName of the inbuilt or custom widget
ReadOnlyBooleanIf present, this widget is in a read-only state.
RequiredBooleanIf present, this determines if the widget is required or not. If the value is not present, the default behaviour of not-required is assumed.
TabIndexintegerRepresents the tab-order of fields on screen – normally widgets are returned in-order anyway, but this can be used for explicit tab-order assignment which does not conform to field order.
ValueTypestringThe JSON Schema type of the value for this widget, these should be consistent with the swagger for the API.
WidgetCategorystringEither “intrinsic” or “custom”, for in-built and custom widgets
WidgetTypestringA type-descriminator, used for determining how the widget should be rendered

In addition each widget may have more options configured specific to that type of field.

Note: intrinsic fields do not currently include their current value in their representation, the value is instead retrieved from the model, using the ‘Name’ or ‘FormName’ as the key.


Assign User

The assign user field is used to pick an assignee – it makes use of the Users Search API resource to retrieve users for the picker.

Widget Type: AssignUserPicker

{“FieldCategory”: “intrinsic”,”Name”: “AssignedTo”,”Label”: “Assigned To”,”WidgetType”: “AssignUserPicker”,”ImplementationType”: “EnterpriseTester.Core.CustomFields.IntrinsicFields.AssignededTo”,”HandlerType”: “AssignedTo”,”ItemId”: “assigned-to”,”Required”: false,”TabIndex”: 106,”FormName”: “requirement.AssignedTo”}

Cascading Select

Widget Type: CascadingSelect

The cascading select is a series of 2 or more combo boxes, where selections and the first level determine what child options can be selected in the second combo etc. The number of combo-boxes requires is determined by the “Levels” property (2 in this case for the example below).

Selections are represented as an array, with the first element being the first-level section, second element being the second-level selection and so on, the field must support optional selection of second/third etc. level options.

{"Levels": 2,"Value": [{"Identifier": "10005","Text": "Level A"},{"Identifier": "10007","Text": "Level 1"}],"Options": [{"Identifier": "10005","Text": "Level A","Children": [{"Identifier": "10007","Text": "Level 1","Children": []},{"Identifier": "10010","Text": "Level 2","Children": []}]},{"Identifier": "10006","Text": "Level B","Children": [{"Identifier": "10008","Text": "Level 2","Children": []},{"Identifier": "10009","Text": "Level 1","Children": []}]}],"FieldCategory": "custom","Name": "Cascading","Label": "Cascading`","WidgetType": "CascadingSelect","ImplementationType": "EnterpriseTester.Plugins.DefectTracking.Fields.DefectTrackerCascadingSelectCustomField","HandlerType": "Defect Tracker Cascading Select","ValueType": "IValue[]","Required": false,"TabIndex": 117,"FormName": "requirement.Cascading","Description": ""}


Widget Type: Checkbox

{"Value": true,"FieldCategory": "custom","Name": "CustomCheckBox","Label": "CustomCheckBox","WidgetType": "CheckBox","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.CheckboxFieldType","HandlerType": "Checkbox","ValueType": "Boolean","Required": false,"TabIndex": 108,"FormName": "requirement.CustomCheckBox","Description": ""}

Date Picker

The date picker field expects the date to submitted as a string, conforming to the FormatString (.Net Date/Time format string). In addition the .Net date/time format string, we also include a FormatCode which is a PHP and ExtJS compatible parsing/format syntax (see the Ext.Date documentation for more details).

{"FormatCode": "j/i/Y","FormatString": "d/mm/yyyy","FieldCategory": "custom","Name": "CustomDate","Label": "CustomDate","WidgetType": "Date","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.DateField","HandlerType": "Date","ValueType": "Date","Required": false,"TabIndex": 109,"FormName": "requirement.CustomDate","Description": ""}

Widget Type: Date

External Comments

{"FieldCategory": "intrinsic","Name": "ExternalComments","Label": "External Comments","WidgetType": "RequirementExternalComments","ImplementationType": "EnterpriseTester.Core.CustomFields.IntrinsicFields.RequirementExternalComments","HandlerType": "RequirementExternalComments","ItemId": "requirementcommentsgrid","Required": false,"ReadOnly": true,"TabIndex": 109}

Widget Type: RequirementExternalComments

Widget Type: ExternalLinks

{"FieldCategory": "intrinsic","Name": "ExternalLinks","Label": "External Links","WidgetType": "ExternalLinks","ImplementationType": "EnterpriseTester.Core.CustomFields.IntrinsicFields.ExternalLinksGrid","HandlerType": "ExternalLinksGrid","ItemId": "externallinksgrid","Required": false,"ReadOnly": true,"TabIndex": 110}

Html Editor

Widget Type: HtmlEditor

{"Value": "<b><font color=\"#ff0000\">​Hello world</font></b>","FieldCategory": "custom","Name": "CustomRichText","Label": "CustomRichText","WidgetType": "HtmlEditor","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.RichTextField","HandlerType": "RichText","ValueType": "String","Required": false,"TabIndex": 114,"FormName": "requirement.CustomRichText","Description": ""}


Widget Type: Label

This component is used for rendering a read-only text widget.

{"FieldCategory": "intrinsic","Name": "CreatedBy","Label": "Raised By","WidgetType": "Label","ImplementationType": "EnterpriseTester.Core.CustomFields.IntrinsicFields.Label","HandlerType": "Label","ValueType": "String","Required": false,"TabIndex": 102,"FormName": "incident.CreatedBy","Value": "Joe Blogs (joeb)"}

Multi Select

Widget Type(s): CheckBoxGroup, MultiSelect

{"Values": ["911d5b79-cdf2-477e-ae36-2fb4a0afa2b9","cb3459de-f3a2-4ce5-bb54-25cb20778d5d"],"Options": [{"Identifier": "911d5b79-cdf2-477e-ae36-2fb4a0afa2b9","Text": "A"},{"Identifier": "ad0b2fc6-be31-4be8-83b4-c32ff12e50b6","Text": "B"},{"Identifier": "cb3459de-f3a2-4ce5-bb54-25cb20778d5d","Text": "C"}],"FieldCategory": "custom","Name": "CustomMultiSelect","Label": "CustomMultiSelect","WidgetType": "MultiSelect","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.MultiSelectField","HandlerType": "MultiSelect","ValueType": "String[]","Required": false,"TabIndex": 107,"FormName": "requirement.CustomMultiSelect","Description": ""}

Multi-line Text Area

Widget Type: TextArea

{"Value": "This is line 1\nThis is line 2","FieldCategory": "custom","Name": "CustomTextArea","Label": "CustomTextArea","WidgetType": "TextArea","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.TextAreaField","HandlerType": "TextArea","ValueType": "String","Required": false,"TabIndex": 105,"FormName": "requirement.CustomTextArea","Description": ""}

Single Select

Widget Type(s): ComboBox, RadioGroup

{"Value": "9bf6adcd-d3de-4e0f-b794-1fc898cf0fa4","Options": [{"Identifier": "9bf6adcd-d3de-4e0f-b794-1fc898cf0fa4","Text": "A"},{"Identifier": "536e8f83-6c4a-4bbd-bd1d-e9c81071f190","Text": "B"},{"Identifier": "bcf55fd1-3f85-4f21-b316-afc5bd085e0f","Text": "C"}],"FieldCategory": "custom","Name": "CustomComboBox","Label": "CustomComboBox","WidgetType": "ComboBox","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.ComboBoxField","HandlerType": "ComboBox","ValueType": "String","Required": false,"TabIndex": 106,"FormName": "requirement.CustomComboBox","Description": ""}

Single-line Text widget

Widget Type: Text

{"Value": "Hello world","MinLength": 1,"MaxLength": 1024,"MaxLengthText": "Field must be between 1 and 1024 characters long","MinLengthText": "Field must be between 1 and 1024 characters long","FieldCategory": "custom","Name": "CustomText","Label": "CustomText","WidgetType": "Text","ImplementationType": "EnterpriseTester.Plugins.CustomFields.Handlers.TextField","HandlerType": "Text","ValueType": "String","Required": false,"TabIndex": 104,"FormName": "requirement.CustomText","Description": "","EmptyText": "Please enter some text"}

Time Span

Time span fields are rendered using the text widget – to provide an alternative representation of this field in your own tool, use the HandlerType or ImplementationType to detect the presence of the estimated or actual duration fields:

Widget Type: Text

{"EmptyText": "eg. 4d, 5h 30m","FieldCategory": "intrinsic","Name": "EstimatedDuration","Label": "Est. Duration","WidgetType": "Text","ImplementationType": "EnterpriseTester.Core.CustomFields.IntrinsicFields.EstimatedDuration","HandlerType": "EstimatedDuration","ValueType": "String","Required": false,"TabIndex": 105,"FormName": "requirement.EstimatedDurationString"}
Table of Contents