| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Chapter goals & duration In this chapter you will learn the basics on how to install and setup widget box pro (configurable widget framework), deploy a widget and make some basic modifications to it. You will also learn where to find documentation, examples, installers & license. Expected duration 2-4h. |
| Table of Contents | ||
|---|---|---|
|
1. Prerequisites
3DEXPERIENCE dev env (tomee 3dspace exploded web app)
Basic xml understanding
(OPTIONAL) IDE - VSCode, Eclipse or similar
2. Installation
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 1 - Install product
|
3. Installation result and basic Setup
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 2 - Installation result and Setup
|
WEB-INF/classes/Helium.xml
| Code Block |
|---|
<?xml version="1.0" encoding="UTF-8"?>
<Application xmlns="http://technia.com/helium/Application">
</Application> |
WEB-INF/classes/tvc.properties
| Code Block |
|---|
tvc.core.logLevel=DEBUG
tvc.core.productionMode=false
tvc.core.user=User Agent
tvc.core.password=secret123 |
4. Deploy a widget
<update with correct url and json?
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Chapter goals & duration In this chapter you will learn the basics on how to install and configure Helium widgets. You will also learn where to find documentation, examples, installers & license. Expected duration 4h. |
Prerequisites
3DEXPERIENCE dev env (TomEE 3dspace exploded web app)
“Issue” data
Basic XML & 3DEXPERIENCE / MQL understanding
(OPTIONAL) IDE - VSCode, Eclipse or similar
| Table of Contents | ||
|---|---|---|
|
1. Installation
The installers adds web resources to 3dspace (schema is optional but required for live UI configuration etc). The web resources includes jar files, js, html, css etc. A servlet is registered with the web.xml.
| Info |
|---|
Gradle TECHNIA best practice project setups uses Gradle and Maven artifacts to build 3dspace web archive including TVC Helium. Gradle makes upgrades as easy as changing version in a property file and manual installation steps are avoided. Gradle setup is not included in this training. |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 1 - Install product
|
2. Installation result and basic Setup
By now the web resources should be installed into your target 3dspace server folder. Value Component basic behaviour is controlled by global properties (e.g production mode for performance or development efficiency) . Let’s have a look at the result in 3dspace.
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 2 - Installation result and Setup
|
WEB-INF/classes/Helium.xml
Minimum setup
| Code Block | ||
|---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?>
<Application xmlns="http://technia.com/helium/Application">
<DateFormat>YYYY-MM-DD</DateFormat>
<DateTimeFormat>YYYY-MM-DD hh:mm</DateTimeFormat>
</Application> |
WEB-INF/classes/tvc.properties
Remove conflicts with web.xml
| Code Block |
|---|
tvc.core.logLevel=DEBUG
tvc.core.productionMode=false
tvc.core.user=User Agent
tvc.core.password=secret123
tvc.3ddashboard.showEndUserConfigObjects=false
tvc.3ddashboard.searchanddrop.enable=true
tvc.helium.theme.3ddashboard=3dd
tvc.helium.resources.directory.path = /webapps/HETrueWidget/helium
tvc.3ddashboard.heTrueWidget.custom.resources = /webapps/HETrueWidget/helium/custom |
3. Deploy a widget
Widget definition is done in discrete separate XML files under '3dspace/WEB-INF/tvc'. The separation enable reuse, e.g. a description column could be defined once and referred by hundreds of widgets, templating is also possible, ensuring the same hight quality cross the full application. Read more in the Helium Page docs.
| Gliffy | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Overview definition structure
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 3 - Deploy a widget
|
Sample JSON (configuration file content)
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
{
"id": "training-issues",
"title": "Training Issues",
"path": "/goto/d/",
"parameters": "tvc:dashboard:training:issue/IssuesDashboard.xml",
"custom": "true"
} |
4. Basic Configuration
The framework holds a wide range of configurable features. Let’s take a look at some standard basic configurations done in most implementations.
Table configuration, Chart configuration
| Note |
|---|
Folder structure notice Note that there is a difference between the structure of configuration xml references and the folder structure. Config reference: 'tvc:<CONF_TYPE>:<DOMAIN>:<SUB_1>:<SUB_N>:<FILE>.xml’ Folder structure: ‘tvc/<DOMAIN>/<SUB_1>/<SUB_N>/<CONF_TYPE>/<FILE>.xml’ |
| Info |
|---|
It is recommended to TEST all below steps incrementally (refresh widget in dev mode) |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.1 - IDE & XSD Open 'WEB-INF/tvc' with an IDE, setup to use .xsd schema support, validate and autocomplete |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.2 - Columns
|
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.3 - Related data Add related data column e.g. 'from[Technical Assignee].to.name' (copy column type from owner), and/or Affected Item, Resolved By multiple properties |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?>
<Column xmlns="http://technia.com/TVC/Table" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://technia.com/TVC/Table http://products.technia.com/tvc/schema/latest/TableColumn.xsd">
<Name>assignee</Name>
<Label>Technical Assignee</Label>
<Expression>from[Technical Assignee].to.name</Expression>
<HeaderNoWrap>true</HeaderNoWrap>
<Editable>false</Editable>
<ColumnType>helium-user</ColumnType>
</Column> |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.4 - Data set Modify Data set to exclude closed issues (see docs link and elaborate, maybe past year only..). |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<DataSet
xsi:schemaLocation="http://technia.com/TVC/DataSet http://products.technia.com/tvc/schema/latest/DataSet.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://technia.com/TVC/DataSet">
<Query>
<TypePattern>
<Type>type_Issue</Type>
</TypePattern>
<Where>current!=Closed</Where>
</Query>
</DataSet> |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.5 - Charts Chart configuration (copy paste state chart)
|
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.6 - Layout Position the new widgets in a good layout (client reset might be needed) |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.7 - Drag & drop Drag drop to OOTB widget
|
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<Draggable>true</Draggable>
<Setting name="template" value="helium/templates/table/object-link" /> |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<DataSet
xsi:schemaLocation="http://technia.com/TVC/DataSet http://products.technia.com/tvc/schema/latest/DataSet.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://technia.com/TVC/DataSet">
<Query>
<TypePattern>
<Type>type_Issue</Type>
</TypePattern>
<Where>current!=Closed</Where>
<Select>physicalid</Select>
</Query>
</DataSet> |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.8 - Public API
|
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<ServiceCommand>
<Label>Create</Label>
<FontIcon>ti-c ti-add</FontIcon>
<Setting name="OnClick" value="App.dataTable.invokeServiceCall" />
<Setting name="OnClickParams">
{
"url": "resources/v1/modeler/dsiss/issue",
"header": {"content-type": "application/json"},
"addSecurityContext": "true",
"addCsrfToken": "true",
"method": "POST",
"selectionCriteria": "none",
"body": "{\"type\": \"Issue\",\"title\": \"A new Issue\",\"priority\": \"Low\"}",
"macro": false,
"addJson": false
}
</Setting>
</ServiceCommand> |
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 4.9 - Built in Enable built in table settings (se below boiler plate inc data group, export, sort, filter….)
|
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<DataTable>
...
<Toolbar>
...
<DataGroup/>
<ExportExcel />
<ExportPDF />
<Search />
<ToggleColumnVisibility />
<AdvanceSorting />
</Toolbar>
</DataTable> |
Expected config result after exercise:
| View file | ||
|---|---|---|
|
5. Create Issue form configuration
There is a configurable form component that could be used to view, edit and create objects. You can either configure with full control or call standard documented ‘OOTB’ services.
Create form
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 5 - Add issue create form
Expected config result after exercise:
|
Add command to Toolbar
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<DataTable>
...
<Toolbar>
...
<ServiceCommand ref="tvc:servicecommand:training:issue/CreateIssueByForm.xml" />
</Toolbar>
</DataTable> |
Create Issue Form Command
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<ServiceCommand>
<Label>Create Issue Form</Label>
<FontIcon>ti-c ti-plus</FontIcon>
<Setting name="OnClick" value="App.dataTable.invokeServiceCall" />
<Setting name="OnClickParams">{
"macro":"false",
"macroElements":"",
"selectionCriteria": "none",
"form":{
"options":{
"formConfigName": "tvc:form:training:issue/CreateIssueForm.xml",
"fullscreen":true,
"modal":{
"position":{"top":"30%","bottom":"20%","left":"40%","right":"10%"},
"controls":{"dock":true,"expand":true,"close":true}
}
},
"url": "resources/v1/modeler/dsiss/issue",
"body":{"type": "Issue", "description":"{{description.values[0].value}}","priority": "{{priority.values[0].value}}"},
"method":"POST",
"addSecurityContext": true,
"addCsrfToken": "true",
"bodyResolver": "description.values[0].value,priority.values[0].value"
}
}</Setting>
</ServiceCommand> |
Create form
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<Form>
<Title>Create Issue</Title>
<Layout>
<Columns>1</Columns>
</Layout>
<Section>
<Field id="description">
<Label>Description</Label>
<Editable>true</Editable>
<FieldType>textarea</FieldType>
</Field>
<Field id="priority">
<Label>Priority</Label>
<Editable>true</Editable>
<FieldType>select</FieldType>
<Defaults>
<Value value="Low" selected="true">
<Label>Low</Label>
</Value>
<Value value="Medium">
<Label>Medium</Label>
</Value>
<Value value="High">
<Label>High</Label>
</Value>
</Defaults>
</Field>
</Section>
</Form> |
6. Launch Pads
| Info |
|---|
Widget templates & examples Launch Pads - With the framework comes several configurations for real OOTB solutions (included). These configurations are good to use for:
Confluence: Launch Pads HEX - A rich example configuration package is included.
|
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise |
Download and deploy Issues widget. <issue-widget.zip>
view, consider and understand all file content, issue vs common domain
Expand zip to ‘3dspace/WEB-INF/tvc’
json widget spec < 3dspace PATH>
Go to 3ddashboard → platform management → add app (use below sample url)
Find app in compass, add to a dashboard and test it
json sample, widget url
| Code Block |
|---|
<TODO/> |
5. Basic Configuration
<SCREENSHOT RESULT>6 - Download, expand zip and reference a specific Launch Pad & HEX example
|
7. Issue page routing
Page routing is done globally. You map a configuration by type. When clicking links the routing mapping is used to define where to navigate to. When navigating a breadcrumb is added to enable navigate back easily.
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise |
It is recommended to TEST all below steps incrementally (refresh widget in dev mode)
Add Priority column (consider domain common or issues) <docs link>
Using xsd schema and IDE validation support? <xsd link>
Add related data (Assignee and Change Request) <docs link>
Add built in template for fancy Priority rendering <docs link>
Modify data set to exclude closed issues (or elaborate) <docs link>
Add command using calling ootb service <docs link>
Add Priority pie chart <docs link>
Drag drop to OOTB widget
(Optional) Misconfigure xml and use log watcher to find details
Attribute
| Code Block |
|---|
<boilerPlate/> |
XSD validation with IDE
| Code Block |
|---|
<boilerPlate/> |
Related Assignee and CR inc group header
| Code Block |
|---|
<boilerPlate/> |
Style cell using built-in handlebar template
| Code Block |
|---|
<boilerPlate/> |
Modify Data set to exclude closed issues
| Code Block |
|---|
<boilerPlate/> |
Toolbar command to add CR using service invoke
| Code Block |
|---|
<boilerPlate/> |
Add priority pie
| Code Block |
|---|
<boilerPlate/> |
6. Create Issue Configuration
<SCREENSHOT create form and highlighted new row>
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 5 - Add issue create form
|
Toolbar sample
| Code Block |
|---|
<boilerPlate/> |
Create form sample
| Code Block |
|---|
<boilerPlate/> |
7. HEX / Launch Pads
<SCREENSHOT MY DOCUMENTS PAD or HEX?>
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
Exercise 6 - Download, expand zip and reference a specific HEX / Launch Pad
|
| Code Block |
|---|
<boilerPlate/> or json |
8. Standalone?
<SCREENSHOT>
9. Studio Live widget7 - Configure Route Config
|
Route config in WEB-INF/classses/helium.xml
| Code Block | ||
|---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?>
<Application xmlns="http://technia.com/helium/Application">
<PageMapping>
<Page namespace="helium:launchpad:issue" name="IssuePage.xml">
<Type is="type_Issue" />
</Page>
</PageMapping>
</Application> |
8. Debug and troubleshoot
Log watcher (e.g. try referring column with spelling mistake)
XSD validation
Browser dev tools
9. History
| Panel | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
A rich set of configurable UI components for 3DSPACE, 3DDASHBOARD and standalone applications, developed on demand from more than 130 customers in 20 years. Value Components allows you to optimize 3DEXPERIENCE UI to perfectly match your business processes, this without carrying the added weight of custom code |
10. Standalone app
| Info |
|---|
Standalone & mobile It is possible to run the same configuration in standalone streamlined applications. Fully without the complexity of the 3DEXPERIENCE it could be useful for specific use cases such ass introducing hard to adopt user groups to contribute to platform data. Standalone is not included in this training and requires a full helium install (widget mode unchecked). |
Launch the app standalone in new tab
<BASE URL>/3dspace/goto/d/training/issue/IssuesDashboard
11. Widget Studio - Live configuration using UI (In-app designer)
<SCREENSHOT studio>
1012. Advanced / Dev
| Info |
|---|
Advanced There could be requirements outside what is possible by standard configuration. E.g. cells using custom calculation logic. The product supports a wide range of controlled extension plugins using well defined and upgrade safe interfaces. Development of advanced use cases is not covered in this training. |
<DATA HANDLER example?>
<SCREENSHOT complex column>
| Code Block |
|---|
void prepareEvaluation(Column column, EvaluationInput input);
Cell createCell(Column column, EvaluatedData data);
void populateCell(Cell cell, EvaluatedData data); |
