Integrations

Manage flows used as integration templates and instances.

Configuration

Set up a new instance with config parameters and set/get methods:

const integrations = appmixer.ui.Integrations(config)

integrations.set(key, value)
integrations.get(key)

config.el ...

Learn about widget config here.

config.options

Type: Object | Default: {}

config.options.customFilter

Type: Object | Default: {}

Filter the integrations with additional parameters:

appmixer.ui.Integrations({
  /* ... */
  options: {
    customFilter: {
      // displaying Integrations with a certain customField
      'customFields.category': 'healthcare',
      // that are shared with someone
      'sharedWith': '![]'
      // and in this example, that are shared throught the 'domain'
      // options with a 'testdomain.com'
      'sharedWith.domain': 'testdomain.com'
      // or we could filter only Integrations that are shared with
      // scope 'user'
      // 'sharedWith.scope': 'user',
    }
  }
}

Instance

Learn about widget instance here.

State

integrations.state(name, value)

loader

Type: Boolean | Default: null

Toggle a custom loading state.

error

Type: String | Default: null

Toggle a custom error message.

Events

integrations.on(event, handler)

integration:create

integrations.on('integration:create', integrationId => {/* ... */})

Click a button to to create a new integration from template.

integration:edit

integrations.on('integration:edit', integrationId => {/* ... */})

Click a button to edit integration.

integration:remove

integrations.on('integration:remove', integrationId => {/* ... */})

Click a button to remove integration.

integration:start

integrations.on('integration:start', integrationId => {/* ... */})

Click a button to start integration.

integration:stop

integrations.on('integration:stop', integrationId => {/* ... */})

Click a button to stop integration.

Example

const integrations = appmixer.ui.Integrations({
    el: '#integrations'
})

integrations.open()

integrations.on('integration:create', async templateId => {
    // Create integration flow as a clone of the template. Disconnect
    // accounts because they might not be shared with the end user.
    const integrationId = await appmixer.api.cloneFlow(templateId, { connectAccounts: false })
    await appmixer.api.updateFlow(integrationId, { templateId })

    const wizard = appmixer.ui.Wizard({
        el: '#your-wizard-div',
        flowId: integrationId,
    });

    wizard.open()
    integrations.reload()
})

integrations.on('integration:edit', function(integrationId) {
    var wizard = appmixer.ui.Wizard({
        el: '#wizard',
        flowId: integrationId
    });
    wizard.open()
});

integrations.open()

Last updated