Service Apps - H1.2016 - Release Notes
Current Version : 2023.3.103.0.05See the Previous VersionSee the Next Version
- What's new in the core
- Developments in the studio
- Developments on the link with ev|ITSM
- Developments in REST
- Developments related to widgets
- Miscellaneous modifications
WarningReleaseNotes
What's new in the core
Configuring widget properties in the URL
General principle
Now, you can modify certain parts of an app by defining its content using the URL.
In order to display a given incident form directly when an app is opened, you can pass its number as a parameter in the URL
This system is based on the exposed properties of widgets that are accessible via the URL. You can access any of the properties using a dedicated parameter in the URL.
Note: Although this functionality is currently limited to certain properties, it will progressively be extended in future versions.
Use case
The app below is used to display employee forms. By default, the system displays the first record.
To display any employee form via the URL, you should:
- Go to the Employee List data source and configure the properties of the new Search section. Indicate the Search Field and the Search Value.
- Open the Application properties window and click the new button [ Exposed Properties ] to configure the URL.
- The window displays exposed properties. By default, no property is displayed.
- Click [ Add properties ] to add properties filtered via the URL. All properties defined as accessible via the URL will be displayed for all widgets and data sources in the app.
- Tick the SearchValue property in the Employee List data source. Click [ Ok ]. The property will become an exposed property and can be passed as a parameter in the URL.
Note: The checkboxes are used to expose several properties in one go.
- You can modify the existing value in the Content/Value column. To do so, double-click the column value and specify the value you want to display.
- Click [ Generate URL ].
- The corresponding URL will appear.
- Click Execute URL application to check that the record is correctly displayed.
Note:
- In the URL, you can select:
- The name of the parameter in the URL parameter alias column. By default, it is the name of the property. For security reasons, you should specify anonymous parameter aliases such as Param1, Param2, etc.
- The content (variable in the URL) in the Content/Value column. You can then modify the content of the parameter via the program to display any employee form.
- To ensure that the app can be run without a parameter, exposed properties should contain default values.
- If a value is defined in the Search Value property for the widget or data source, it will be displayed by default in the exposed properties window.
Modification in the Share application URL window
A new button [ Exposed Properties ] added to this window enables you to access exposed properties.
Note: The URL displayed does not take parameters into account because the QR code must always be valid. As such, default values will be used.
Shortcuts
The behavior of shortcuts remains identical. You can add different parameters to shortcuts so that they automatically point to the app you want.
Version information on the login page
You can now see the version on the login page.
Six languages supported for system messages
System messages can now be displayed in the six standard languages. As in earlier versions, users can select their language in the user information zone.
Developments in the studio
Duplicating elements
A duplication functionality has been added to pages, widgets and data sources. Note: Duplication is not authorized for composite data sources.
- You can run it:
- Using the dedicated icon
found next to each object that can be duplicated.
- Using the contextual menu of a widget placed in the Design pane.
- Using the dedicated icon
- Duplicated objects will be displayed in the list with the word (Copy).
- The duplicated object will open directly in edit mode.
- If you copy a widget, the duplicate widget will appear below the source widget in the Design pane. You can then move it just like other widgets.
Search
A search functionality has been added. It is available:
- When you create new widgets or data sources, to enable you to access the type of object you want to add quickly. Note: The search is also run on custom widgets.
- In the list of widgets and data sources, to enable you to access an existing object quickly.
Information on evSM connectors in the About window
You can now see information on evSM connectors in the About window, namely the version and the API.
Direct access to a page in container widgets
In page container widgets such as Tab and Sliding Page, a new icon is used to indicate the page to be displayed in edit mode.
New WYSIWYG editor
This new editor manages constraints related to questionnaires and facilitates tag management.
New way of inserting tags
You can now manage tags using a dedicated pane in the HTML editor. To do so, click the icon. Tags are grouped in four categories available depending on the context.
- Page category: Used to insert and configure a hyperlink.
- Page Link: Used to replace the current page by opening the link in a new page.
- Page Popup: Used to open the link in a popup window.
In both cases, you can define the configuration using the configuration pane.
- Select the page you want from the Select page drop-down list.
- Specify the text of the link in the Link title field.
- Specify the title of the popup window in the Modal title field.
- Indicate how the link should be displayed: Link for underlined text or Button for a button.
to insert a new link.
- Data Picker category: Used to select tags previously managed using the Data Picker.
- Previous version
- New version:
- Two panes are displayed consecutively. The first pane is used to select the field and the second to define the display settings.
- The number of parameters displayed will depend on the type of field. Note: This is currently available only for EasyVista data sources. The Cell Value option is used to select a value in the Result table.
- Two panes are displayed consecutively. The first pane is used to select the field and the second to define the display settings.
- Previous version
Text field | Date field | Numeric field |
---|---|---|
![]() |
![]() |
![]() |
- EasyVista category: Used to insert business tags from
using
found next to each element.
- Document upload: Functionality described in the section on document uploads and downloads
- New Request: When the data source points to the SD_CATALOG table, this is used to display a popup window containing the elements required for creating new service requests from a catalog entry (including questionnaires).
- Embed Questionnaire: Similar to New Request, information is integrated in a drop-down pane.
- Status Notification: The green notification banner indicates the status of the created request.
- Star Rating: Used to display rating stars for knowledge base articles.
Importing and exporting custom widgets and themes
You can now import and export custom widgets and themes using a new functionality.
- You perform an export using the contextual menu available in the list of custom widgets and themes in .tar.gz format, in the same way as you would export apps.
- You perform an import using the [ Import ] button in the main toolbar of the App Gallery.
- To avoid the import of malicious files, the security mechanism here is identical to the one applied when you import apps.
- Caution:
- Existing custom widgets or themes with the same name will be replaced by the imported ones.
- Apps using custom widgets that have been replaced by imported ones will not be affected as their custom widgets were copied to the app.
Managing app favicons
The Application properties window has been modified. It now contains three tabs.
- Apps Icon: Icon of the app.
- Apps Header: Text displayed in the title bar of the app in execute mode.
- Favicon: Icon displayed in the browser's tab bar and shortcut icon of the app on mobile devices.
You can provide each favicon in one or more resolutions to ensure its display is adapted to different devices.
- You can also provide just one version of the favicon. The result will automatically be displayed in the Application properties window.
- To modify the image in one of the resolutions, place your cursor on it to access the download functionality.
Editing application properties in the App Gallery
You can now access application properties directly in the App Gallery using a simplified window. This enables you to correct the connector when it prevents the opening of the app.
Note: The dedicated icon will be visible only to users with the same access rights as those required for viewing the icon for editing apps.
Developments on the link with ev|ITSM
Update Incident wizard
General overview
A new wizard can now be used to update incidents using a custom widget. It relies on new mechanisms for creating forms. These are currently reserved for EasyVista but in a future version, they will be integrated in the studio so as to enable users to customize native wizards or to create new ones.
- The wizard must be associated with a button placed in a record belonging to the SD_REQUEST table.
- Its behavior is identical to the one in
:
- If the selected incident is closed, an error message will appear.
- If this is not the case, then the contents of the Description field will be added to the end of the existing incident description.
- Creation of a User Update action.
- Update of the history of changes.
Use case
A list of incidents is displayed using a Data Viewer widget.
- Click [ Update Incident Record ] found in the form.
- This runs the update wizard.
- Enter the description and click [ Send ]. The incident will be updated.
Setting up the wizard
- Create a new app called Incident Management.
- Add an EasyVista data source based on the list of incidents.
- Add a Data Viewer widget for the list of incidents and a Secured HTML widget for the description of the current incident (Form display mode).
- Create a new page dedicated to the update wizard. Note: The box found to the left of the page name has not been checked. This ensures that the page remains invisible in the app menu.
- Insert the custom wizard, Update Incident Wizard. Note: Specify the maximum width of the window to restrict its size.
- The custom widget contains a Memo widget for entering the description and two Button widgets, [ Cancel ] and [ Send ]. Note: These three widgets are not available in the list of custom widgets because they belong to a specific forms category that will only be available in a future version. This category will be used for creating all types of data entry forms.
- Check that the [ Send ] button is correctly configured as shown below.
- Add the button for calling the list of incidents to the Data Viewer widget displayed on the main page of the app:
- In the new tag insertion window, configure the button for opening a popup window and click
.
- The HTML editor will be updated and the button will be aligned to the right of the window.
- In the new tag insertion window, configure the button for opening a popup window and click
Managing document uploads and downloads
Document upload
You can access the document upload functionality in the dedicated pane for managing tags in the HTML editor. Its availability will depend on the context.
Via a form in a Data Viewer widget (Form section)
Use case
- Open the HTML editor in an object that allows the uploading of documents.
- Click
to open the dedicated pane for managing tags.
- Open the EasyVista category and click
next to the Document upload option. The instruction corresponding to the functionality will automatically be added to the editor.
- In execute mode, an upload button is displayed. Note: The name of the button is identical to the one in
.
Document download
Caution:
- This functionality requires the presence of two EXP files in
to set up the views for managing document downloads: one EXP for the link with the SD_REQUEST and AM_ACTION tables and a second EXP for the link with other tables.
- We recommend that you do not modify the filters and views shipped in the two files.
- You can however rename the files.
Download the
Download the
Case use
- Add an EasyVista data source.
- If both EXP files have been integrated, the Query drop-down list will contain two APPS - download document parent queries linked to the
Operation > Reports > Reports menu option.
- Select the query linked to the SD_REQUEST table.
- Select the filter to be applied to the query. Note: The three filters are similar to the ones available in
.
- My Attachments: Used to display only personal documents belonging to the logged-in user.
- Public: Used to display only public documents.
- Using a (1,1) master-detail relationship, associate the data source with the main data source in SD_REQUEST for incidents.
- Add a Data Viewer widget in Grid mode to display the list of documents available.
- Switch to execute mode. In the list of documents:
- When you click the name of a document, this will download it.
- The Public column differentiates public documents from personal ones.
- When you click
, this will delete a document. Note: If you do not want to display this functionality, remove the Delete column using the Data Transformer.
Selecting a service using elements in the New Request menu
In a Menu widget with a New Request subject, you can now select the service catalog subject directly based on the catalog instead of the table_path table.
This enables any new service added to to become immediately available, unlike the table_path table that is usually refreshed once daily.
Managing variables and constraints in questionnaires
Questionnaires can now support the new functions added in the previous version, namely, dynamic variables and constraints.
Constraints appear differently as regards . When a constraint has not been respected, its error message will be displayed in red below the field.
New properties for the EasyVista data source
The EasyVista data source now integrates a Search section containing two new properties. These are used to filter the results for a given field (Search Field) and for a given value (Search Value).
Note: These properties are required when using the new URL configuration functionality, e.g. for direct access to a specific form in the app.
Developments in REST
Client REST interfaces have been modified considerably, to simplify and standardize them.
General principle of REST datasource creation
Note: There are new developments in the REST features of this new version of . However, applications using the features from previous versions will continue to work.
- Datasources should be based on one of two templates, both available in the Online category:
- REST: existing datasource type. For direct creation of datasources used to create applications quickly.
- REST (Connector): new datasource type. For creation of datasources based on a predefined connector, to take advantage of previously configured resources, and to use OAuth authentication.
- Three types of REST authentication are now available, resulting in three types of datasources with corresponding configurations. The table below summarizes the options available according to the type of connector selected.
Datasource Type | Authentication Type | |||
---|---|---|---|---|
None | Basic | OAuth | ||
REST | Datasource Creation | ![]() |
![]() |
![]() |
Resources | 1 | 1 | ![]() |
|
Selector | 1 | 1 | ![]() |
|
REST (Connector) | Datasource Creation | ![]() |
![]() |
![]() |
Resources | n | n | n | |
Selector | 1 per resource | 1 per resource | 1 per resource |
- The diagram below summarizes the legacy REST services, connectors and datasources.
Developments in configuration interfaces
The configuration interfaces have been standardized and simplified. Cross-functionalities are also available (in particular in resource management, now extended to REST APIs with no authentication or Basic authentication).
Implementing REST datasources via connectors
REST interfaces are now fully supported by the system of connectors, enabling use of aliases and execution contexts. For example, this lets you develop REST applications on development accounts before passing them to production accounts, with no need to make any changes in the applications.
- Click
and open the Add Connector dialog.
- Select the REST connector type.
- Select the type of authentication.
Common functionality in different types of authentication
1. Choosing a service:
- From the URL drop-down box, choose from the list of registered services.
- If you select a REST API with no authentication or Basic authentication and the service is not registered, you can set it up for quick reference in the future.
- Click
.
- Enter the service name, URL and a shortcut icon.
- Click
- To change or delete an existing service, click it to display the shortcut menu. Note: Services provided as standard cannot be changed or deleted.
2. Resource management: This has been extended to include a default selector for a given resource.
- In the Default Resource list, select the resource you want.
- Click
next to the field to open the resource management dialog. A list of the existing resources is displayed.
- Click on a resource to change its properties. Note: The full URL, including resources, appears clearly under the URI field.
3. Selector management: A default selector can be set for each resource. Note: This is highly recommended.
- Click
next to the Default Property OK field. The dialog box to choose a selector will be displayed.
4. URL variable management: The URL of the service must sometimes be customized to include information such as account or API_KEY.
- URLs can be customized by adding dedicated tags to the URL:
- either in the form {tag_name} in the main part of the URL;
- or using parameters beginning with ? or &.
- The system automatically reorganizes the URL to make it permanently valid (the parameters are always located at the end of the URL).
- Each tag changes into an input field in the dialog box, to be completed when creating the connector.
For the easyvista REST connector, the URL includes two parameters: hostname and account, which must be completed to validate the URL
https://{hostname}/api/v1/{account}/
- It is also possible to add tags to the Resource field.
- As the resulting URL can often become complex, you can preview it by clicking on > to the right of the Preview field.
https://xxxxxx.easyvista.eu/api/v1/80000/requests?max_rows=100
REST connector with no authentication
In the dialog box, enter the URL of the service and any resources.
REST connector with Basic authentication
When connection information is entered, any datasource based on the connector also inherits that information.
Notes:
- Information may be modified.
- If you do not want the information to be retrieved in the datasource, you must delete it.
REST connector with OAuth authentication
Authentication is delegated to the service selected.
Click next to the Authentication parameters field to populate the corresponding information into the host application.
Creating datasources based on a REST connector
- Select the connector you want.
- The Properties Inspector will be displayed.
- Fields marked
can be populated automatically after selecting the connector (provided the fields have been completed for the connector).
- Additional parameters (&) not available via the connector can be entered into the Additional Query String field.
- Fields marked
Direct creation of REST datasources
No authentication
Functionality is unchanged. Simply enter the URI and set the correct selector to access the data.
Basic authentication
List of new REST connectors supplied as standard
Basic authentication
OAuth authentication
Developments related to widgets
YouTube widget
This widget now offers a Loop property used to play the video in a continuous loop. The video will be replayed automatically once it reaches the end.
Accessing data in the data source via JavaScript
List of added functions
Two functions have been added to make information on widgets accessible to the public.
- This returns null if there are no results.
- Otherwise, it returns a JSON object containing information on the widget.
EVServicesApps.getWidgetsByName(‘string WIDGET_NAME’) ;
- This returns null if there are no results.
- Otherwise, it returns a JSON object containing JSON objects indexed as shown below. You can see information on widgets found by name in the same JSON format as for the first function.
For data source widgets, two other functions can be used in the JSON widget object found:
This returns all widget data (starting with start, whose size corresponds to length) in the callback function parameter.
This returns all columns with widget data (including relevant information) in the callback function parameter.
Use case
You want to display a bubble chart in a HTML widget
Extract from the d3js.org website, accessible by clicking http://bl.ocks.org/mbostock/4063269
- Retrieve the data in JSON format from the d3js.org website. Copy and paste the content in a text file named flare.json.
- Open your
app and add a JSON data source. Download the flare.json file.
![]() |
Rename the data source to identify it easily.
|
- Add a HTML Script widget. Open the HTML editor and click
to switch to source mode. Insert the script available on d3js.org.
See the script available on d3js.org
<style>
text {
font: 10px sans-serif;
}
</style>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var diameter = 960,
format = d3.format(",d"),
color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.size([diameter, diameter])
.padding(1.5);
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "bubble");
d3.json("flare.json", function(error, root) {
if (error) throw error;
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
.filter(function(d) { return !d.children; }))
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("title")
.text(function(d) { return d.className + ": " + format(d.value); });
node.append("circle")
.attr("r", function(d) { return d.r; })
.style("fill", function(d) { return color(d.packageName); });
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.className.substring(0, d.r / 3); });
});
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: name, className: node.name, value: node.size});
}
recurse(null, root);
return {children: classes};
}
d3.select(self.frameElement).style("height", diameter + "px");
</script>
- Delete the lines below.
if (error) throw error;
- Add the lines below to the top of the script. Notes:
- window.parent enables you to access the function.
- Indicate the name of the data source in the instruction getWidgetsByName, between ' ' characters.
getWidgetsByName('flare')
function(data)
{
root = data[0];
See the full corrected script
text {
font: 10px sans-serif;
}
</style>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
window.parent.EVServiceApps.getWidgetsByName('flare')[0].getData(0, -1,
function (data) {
root = data[0];
var diameter = 960,
format = d3.format(",d"),
color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.size([diameter, diameter])
.padding(1.5);
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "bubble");
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
.filter(function(d) { return !d.children; }))
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("title")
.text(function(d) { return d.className + ": " + format(d.value); });
node.append("circle")
.attr("r", function(d) { return d.r; })
.style("fill", function(d) { return color(d.packageName); });
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function(d) { return d.className.substring(0, d.r / 3); });
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: name, className: node.name, value: node.size});
}
recurse(null, root);
return {children: classes};
}
d3.select(self.frameElement).style("height", diameter + "px");
}
);
</script>
- Switch to execute mode to display the bubble chart.
Search Filter widget
You can now run a search in multiple columns using the Search Filter widget. You can specify values in five search fields and use the operator OR.
Note: The widget remains completely compatible with previous versions where only one search field is available.
Miscellaneous modifications
Running apps directly in the App Gallery
If users are authorized to access only one app in the App Gallery in execute mode, then this app will run directly without first displaying the App Gallery.
Management of the <Back> key on mobiles
Now, when an app is used on mobile browsers (Chrome with Android mobiles, Safari with iOS mobiles, or Internet Explorer with Windows Phone), the <Back> key enables users to return to the previous page. Previously, this key was used to exit the app.