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 the url of a square SVG image (recommended), or the url of a square png/jpg image. Recommended size is 32x32.

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

  • The value of title is a string

  • The value of icon is the url of a square SVG image (recommended), or the url of a square png/jpg image. Recommended size is 32x32.

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));
    },

Last updated