Links

Modules Service

A module is a new window inside the Symphony client workspace, such as a chatroom or an instant message. Use the modules service to create application-specific modules.
// To use the modules service, you must subscribe to it from your application
var modulesService = SYMPHONY.services.subscribe("modules");
The following methods are available on the modules service:

show()

Show a new application module:
function show(id, title, serviceName, iframe, options)
Parameter
Type
Description
id
String
A unique id for this module (must be unique across all modules of a given application)
Either title or {title, icon}
String or Object
Either the title of the module as a string or an object with the keys title and icon
  • The value of title is a string
  • The value of icon is either the url of a square SVG image (recommended), or the url of a 32x16 pixel sprite sheet: the first 16x16 pixels will be used in a dark theme, and second will be used in the light theme.
serviceName
String
The name of a local service implemented by your application that will be invoked when a user action is performed relating to this module
iframe
String
The URL for the content of the module (must be an HTTPS URL)
options
Object
An object, which can contain:
  • canFloat: if set to true, a menu item will be added to the More menu (found under the (…) on the module frame) that, when clicked, will pop the module out into its own browser window
  • parentModuleId: if set to the ID of a module opened by an application, the specified module will not be closed when this module is shown
modulesService.show(
"hello",
{title: "Hello World App"},
"hello:controller",
"https://localhost:4000/app.html",
{
"canFloat": true
}
);

hide()

Hide an existing application module:
function hide(id)
Parameter
Type
Description
id
String
The id of the module that should be hidden.
modulesService.hide("hello");

setTitle()

Change the title of an existing application module:
Note that this only changes the title of a specific module, not all titles of all modules created by the application.
function setTitle(id, title)
Parameters
Type
Description
id
String
The id of the module for which the title should be changed
Either title or {title, icon}
String or Object
Either the title of the module as a string or an object with the keys title and icon :
  • title module name as a string
  • icon is either the url of a square SVG image (recommended), or the url of a 32x16 pixel sprite sheet: the first 16x16 pixels will be used in a dark theme, and second will be used in the light theme.
modulesService.setTitle("hello", "New Module Title");

focus()

Focus an existing application module:
function focus(id)
Parameter
Type
Description
id
String
The id of the module to focus
modulesService.focus("hello");
Opens a link from your application in a new tab in the user's default browser. This method should be used to open links, rather than <a href="..." target="_blank">...</a>.
function openLink(url)
Parameter
Type
Description
url
String
The URL to be opened
// This code will live in your application view.
// Assume there is a button element with id "link" on the application module
// If that button is clicked, open a Google link.
var linkButton = document.getElementById("link");
linkButton.addEventListener("click", function(){
modulesService.openLink("https://www.google.com");
});

redirect()

Reloads the content of the module at the new URL.
The Client Extensions API is designed for single-page applications. Use this method with multi-page applications to load new content when users navigate to another page:
function redirect(id, url)
Parameter
Type
Description
id
String
The unique identifier for the module. A module with this id must already exist.
url
String
The URL of the new iframe to load in the module.
onSelect : function(symbol) {
this.modulesService.redirect(this.moduleId, MODULE.baseUrl + 'details?symbol=' + encodeURIComponent(symbol));
},