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 3h. |
Prerequisites
3DEXPERIENCE dev env (TomEE 3dspace exploded web app)
âIssueâ data
Basic XML & 3DEXPERIENCE / MQL understanding
(OPTIONAL) IDE - VSCode, Eclipse or similar
Prerequisites
3DEXPERIENCE dev env (TomEE 3dspace exploded web app)
âIssueâ data
Basic XML & 3DEXPERIENCE / MQL understanding
(OPTIONAL) IDE - VSCode, Eclipse or similar
Exercise 1 - Install product
|
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.
Exercise 2 - Installation result and Setup
|
WEB-INF/classes/Helium.xml
<?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
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 |
Overview definition structure
Exercise 3 - Deploy a widget
|
Sample JSON (configuration file content)
{ "id": "training-issues", "title": "Training Issues", "path": "/goto/d/", "parameters": "tvc:dashboard:training:issue/IssuesDashboard.xml", "custom": "true" } |
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
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â |
Exercise 4 - Modify widget configuration It is recommended to TEST all below steps incrementally (refresh widget in dev mode)
Expected config result after exercise: |
Technical Assignee
<?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> |
Exclude Closed
<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> |
Drag & drop column settings
<Draggable>true</Draggable> <Setting name="template" value="helium/templates/table/object-link" /> |
Drag & drop data set - 3DDashboard require physicalid!
<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> |
Service command to create Issue (note current version require string escape of body content when macro is false)
<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" } </Setting> </ServiceCommand> |
Built in table features
<DataTable> ... <Toolbar> ... <DataGroup/> <ExportExcel /> <ExportPDF /> <Search /> <ToggleColumnVisibility /> <AdvanceSorting /> </Toolbar> </DataTable> |
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
Exercise 5 - Add issue create form
Expected config result after exercise: |
Add command to Toolbar
<DataTable> ... <Toolbar> ... <ServiceCommand ref="tvc:servicecommand:training:issue/CreateIssueByForm.xml" /> </Toolbar> </DataTable> |
Create Issue Form Command
<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
<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> |
Exercise 6 - Download, expand zip and reference a specific Launch Pad
|
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.
Exercise 7 - Configure Route Config
|
Route config in WEB-INF/classses/helium.xml
<?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> |
Log watcher (e.g. try referring column with spelling mistake)
XSD validation
Browser dev tools
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 |
Launch the app standalone in new tab
<BASE URL>/3dspace/goto/d/training/issue/IssuesDashboard |
DataHandler interface
void prepareEvaluation(Column column, EvaluationInput input); Cell createCell(Column column, EvaluatedData data); void populateCell(Cell cell, EvaluatedData data); |