Update the PANDIUM.yaml

This is where you will start to set up the functionality that allows a user to choose which type of Pokémon they will learn about and who will receive the daily Slack message.

One of the PANDIUM.yaml's key purposes is to populate the Connections Settings page. That page allows users to customize how their tenant will run.

At the moment the PANDIUM.yaml in your Pokémon of the Day integration does not have any configurations, but the Academy has asked for these dynamic configs to be added: pokemon_type and slack_user

  1. Add configs with its schema and uischema to your PANDIUM.yaml, so it looks like this:

version: 0.4
base: node:20.9.0
build: npm install --production && npm i --save-dev @types/node && npm run build
run: node .
configs:
  schema:
    required:
    definitions:
    properties:
  uischema:
    elements:
  1. Under schema properties add the following:

      pokemon_type:
        type: string
        $ref: '#/definitions/pokemon_types'
      slack_user:
        type: string
        $ref: '#/definitions/slack_users'

The values in the $ref for each of these properties determine the options for that config. E.g. the pokemon_type config will have a dropdown menu on the Connections Settings page, and it will be filled with whatever is in #/definitions/pokemon_types.

So let's add the definitions for pokemon_types and slack_users!

  1. Make the schema definitions look like this:

    definitions:
      slack_users:
        type: number
        oneOf:
          - title: Placeholder
            const: placeholder
      pokemon_types:
        enum:
            - placeholder  

When you built the first iteration of the integration you saw that Pandium saves the standard out of a successful normal sync and passes it to the next run through context. Pandium also stores the standard out of a successful init sync.

When you add the init sync flow you will end it by printing a standard out which will look something like this:

{
   "pokemon_types":[
      {"const":"1","title":"normal"},
      {"const":"2","title":"fighting"},
      ... other pokemon types fetched from the PokéAPI
   ],
   "slack_users":[
      {"const":"UCEGPFQRX","title":"Jeff"},
      {"const":"UCEMD4QCQ","title":"Juanita"},
      ... other Slack users fetched from your Slack workspace.
   ]
}

Pandium will save that init sync's standard out and read it when displaying the Connections Settings page. It will replace each placeholder with the content of the lists from your init sync's standard out.

You can read more about dynamic configs here.

  1. Under schema required add pokemon_type and slack_user.

  2. Add this Section element to the uischema elements:


    - type: Section
      label: Configure Pokémon of the Day
      hintText: Select which type of Pokémon you would like to learn about, and the Slack User who will receive the Pokémon of the day message.
      elements:

      - label: Pokémon Type
        scope: '#/properties/pokemon_type'
        type: Control

      - label: Slack User
        scope: '#/properties/slack_user'
        type: Control

Your PANDIUM.yaml should now look like the one here.

Let's take a look at how the connection settings page looks with this updated PANDIUM.yaml!

Last updated