External Widget Development #25789903/HEAD / v20 |
External Widget DevelopmentThis page describes external widget development in codebeamer. Table of Contents
IntroductionExternal widgets are external web applications registered into codebeamer to provide information and functionality in a context sensitive and configurable way. Currently, external widgets can be used to provide:
CB example Application Configuration
Places where external widgets can be displayedThere are 3 places where you can place external widgets in codebeamer:
There are 3 places where are Dashboards in codebeamer:
Show/hide external widgets with enabled propertydashboardWidgets@enabledThis is a boolean field that can be expressed with JSP expression language (JSP EL). If this field evaluates true to the current dashboard, the widget will be available on the Add Widget pop-up. The expression will be evaluated against the current project. On user dashboards, the current project is null. Any ProjectDto attributes (e.g., id, name, etc.) can be used. Since the project's name is unique and the id can change when using Project Configuration Deployment from a source system to a target, writing an expression to the name could be a good candidate to filter external dashboard widgets.
Valid expressions for the Add Widget pop-up:
itemDetailsWidgets@enabledThis is a boolean field that can be expressed with JSP expression language (JSP EL). If this field evaluates true to the current external widget, it will be displayed on the item details view among the "Details" section's tabs. The expression will be evaluated against the current item's tracker. Any TrackerDto attributes (e.g., id, name, type, etc.) can be used.
Tracker types"Area", "Bug", "Change Request", "Component", "Configuration Item", "Contact", "Epic", "Issue", "Platform", "Release", "Requirement", "Risk", "RPE Report", "Task", "Team", "Testcase", "Testconf", "Testrun", "Testset", "Work Log" (aka.: Time Recording), "User Story"
documentViewWidgets@enabledSame as itemDetailsWidgets@enabled.
Widget IDs Need to Be UniqueexternalWidgetConfig@id needs to be unique (even across multiple extension JSON files), otherwise, the configuration will be overwritten from another config with the same id.
Categories of Dashboard WidgetsSeveral categories are listed on the Add Widget pop-up.
The valid config values for them are:
Supported External Dashboard Widget Attributes
The values of the attributes are getting passed to the 3rd party widget app in JSON format.
The keys come from the extension configuration json, except for the projectIds that are linked to the tracker attributes.
Dashboard Icon for Add Widget Pop-upThe dimensions of the dashboard widget icon are 42x42px. This will be shown on the Add Widget pop-up.
Word ExportThe exported dashboard does not contain the External Dashboard widgets.
An example configuration (extension.json){ "documentViewWidgets": [ { "enabled": "${id == 1337 and name == 'Test' and type == 'Task'}", "externalWidgetConfig": { "id": "test-widget-1", "name": "Test Widget", "viewUrl": "http://localhost:4200/", "iconUrl": "http://localhost:4200/assets/cog.png" } }, { "enabled": "false", "externalWidgetConfig": { "id": "test-widget-2", "name": "Test Widget", "viewUrl": "http://localhost:4200/", "iconUrl": "http://localhost:4200/assets/cog.png" } } ], "itemDetailsWidgets": [ { "enabled": "true", "externalWidgetConfig": { "id": "test-widget-3", "name": "Test Widget", "viewUrl": "/", "iconUrl": "/assets/cog.png" } } ], "dashboardWidgets": [ { "enabled": true, "externalWidgetConfig": { "id": "test-dashboard-widget", "name": "Test Dashboard Widget", "shortDescription" : "test external dashboard widget", "category" : "other", "knowledgeBaseUrl" : "http://localhost:4200/knowledgeBase", "viewUrl": "/", "iconUrl": "/assets/cog.png", "attributes": { "someText": { "typeName": "string", "fieldLabel": "Some Text", "required": true, "value": "aaa" }, "trackerId": { "typeName": "tracker", "fieldLabel": "Tracker Custom Label", "required": true, "value": [] }, "trackerIdList": { "typeName": "trackerList", "fieldLabel": "Tracker List Custom Label", "required": true, "value": [] }, "projectId": { "typeName": "project", "fieldLabel": "Project Custom Label", "required": true, "value": [] }, "projectIdList": { "typeName": "projectList", "fieldLabel": "Project List Custom Label", "required": true, "value": [] } } } } ] } DiagramsSimplified IntegrationFor simple operations when there is no need for external backend:
Advanced Integration
Sequence DiagramsThe sequences below are demonstrating general (recommended) sequence of operations. In certain cases, the real implementation can deviate from this workflow.General Workflow
Details:
Selected Item Has Been Changed on codebeamerPre-condition: The user is on the Document View page of a tracker item.Use Case: The user changes the selected item, for example, on the Trackers Dashboard, thus the External Widget content shall be updated.
Details:
Reload an item in CBUse Case: The user modifies some property of an item on the External Widget UI. This modification shall be updated in CB.
Details:
External Widget Deployment
Demo applicationsAngular applicationhttps://github.com/intland/external-widget-angular-example
Typescript applicationhttps://github.com/intland/external-widget-typescript-example
Javascript application |
Fast Links
codebeamer Overview codebeamer Knowledge Base Services by Intland Software |
This website stores cookies on your computer. These cookies are used to improve your browsing experience, constantly optimize the functionality and content of our website, furthermore helps us to understand your interests and provide more personalized services to you, both on this website and through other media. With your permission we and our partners may use precise geolocation data and identification through device scanning. You may click accept to consent to our and our partners’ processing as described above. Please be aware that some processing of your personal data may not require your consent, but you have a right to object to such processing. By using our website, you acknowledge this notice of our cookie practices. By accepting and continuing to browse this site, you agree to this use. For more information about the cookies we use, please visit our Privacy Policy.Your preferences will apply to this website only.