Skip to main content

Day 1 Community Design Challenges

How do I get started?

Pick out a challenge from below and start building! All the challenges require that Ignition is installed, so download and install Ignition 8.3.6 or newer. There's also a gateway backup that you can download here that will be required for many of the challenges. It contains Tags and other resources that you'll find necessary to complete some of the prompts. It's best to load this backup before you start any challenges since a Gateway Restore will wipe out any work you already have.

The login credentials for this Gateway are:

  • username: admin
  • password: password

If you already have Ignition installed, make a backup of your Gateway before starting.

DOWNLOAD

Easy Challenges - 5 XP each


Create an Input Form

Create a display to accept user input to update a database.

Prompt:
Create a view that uses the Form component to allow users to add a new gizmo to the gizmos database table.

  • This form should be able to accept all possible fields in the gizmos table, except for gizmo_id.
  • For this challenge, you may hard code category_id of 0.
  • The form should successfully add a new record to the database.

Use Tags as Color Constants in Vision

Use Ignition tags to synchronize dynamic color schemes across Vision clients.

Prompt:
In the Tag Browser, create a folder with at least 3 different string type Memory tags to use as color constants. Name the tags either by their color or how the color is used (red, light-blue, background, etc.).

Create a Vision window, and apply these color constants to various property bindings (backgrounds, text color, borders, etc.).

HINT

You can find official IA and Ignition brand colors and guidelines on the IA website.


Create a Simple UDT Definition

Design a data template based on a connected device.

Prompt:
Define a UDT based on the Motor devices found in the Overview folder in the Dairy Sim device.

  • The UDT may not have more than 1 parameter.
  • Each instance of the UDT should dynamically point to the corresponding motor's Amps and HOA tags.
    • OPC Tags on the UDT instances must have no overrides.

Add a string data type Expression tag.

  • The value should read LOW if the Amps tag is lower than 100; otherwise it should read HIGH.

Create a folder called Motors in the default Tag Provider.

  • Create one UDT instance for each motor in the Dairy Sim device into this folder.

Create Style Classes Based on a Style Guide

Translate design guidelines into reusable sets of style rules.

Prompt:
Using the provided style guide, create and apply the necessary style classes to make any of the included views match the requirements of the guide.

You may use Roboto as the only font.


Medium Challenges - 10 XP each


Update a Database from a Table

Implement features to update your data on the fly.

Prompt:
On the Double-Click Table view, add functionality so that when a user double-clicks a cell on the table they can update the underlying database data for that cell.


Filter Alarm Associated Data

Filter a display on alarm event metadata.

Prompt:
In the Machines folder in the default Tag Provider, there are 5 Machine UDT instances. Each machine belongs to a specific "group", denoted by its Group Name memory tag.

Each machine's Speed tag has an alarm configured. The Machine Alarms view has an Alarm Status Table showing alarms for all machines.

Configure the Dropdown component on this view to filter machine alarms on the alarm table by group: Group A, Group B, and Group C.

HINT

If you need help, ask the User Manual's AI bot.


Error-Checking Popup

Make sure you validate the data you send to your database

Prompt:
In Vision or Perspective, create a simple display where a user can input information about their dog.

Include all of the fields listed below, with the matching data type. Each input value should be labeled.

  • Name (string)
  • Breed (string)
  • Age (integer)
  • Good Dog? (boolean)

When the data is submitted a popup with a descriptive error message should be displayed if any of the following conditions are true, otherwise do nothing:

  • Any of the input fields are left blank
  • Age is less than zero or higher than 31
  • Name is longer than 16 characters.

Add a button to the docked Header view or window.

  • This button should open the new dog data input display as a popup.
  • All of the input fields should be blank when the popup opens.

Hard Challenges - 15 XP each


Highlight an Updated Row on a Perspective Table

Leave a bright visual indicator on a table if the data is updated.

Prompt:
Open the Highlight Table view.

All of the columns on the table should be editable and any edits from the user should update the correct field in the database.

When the database is updated, the table should refresh to display the new data.

When the table refreshes, the entire row on the table that was just updated should be highlighted orange.

The highlighting should disappear or fade away after 5 seconds.


Send Messages Between Sessions

Implement an inter-session DM feature.

Prompt:
In the docked view there is a button that says New Message.

Pressing the New Message button should open the Send Message view in the Popups folder as a popup.

The Send Message view contains an input field and a button that says Send Message.

Pressing the Send Message button should use system.perspective.sendMessage() to send the text input from this popup as a payload to all open sessions, except for this session and any designer sessions.

All open sessions that receive this message should open the Show Message view in the Popups folder as a popup.

  • The text value sent in the message payload should display in the popup.
  • The popup should open on the upper right hand corner of the session.

Create a Production Line UDT

Design an even more complex, multi-layered data template.

Prompt:
In the Dairy Sim device connection, there are 5 different production lines. Each production line contains some tags as well as a LineMotor and LinePump. Each pump and motor contain their own sets of tags.

Define a UDT to represent one of the LineMotors.

  • This UDT must have exactly 1 parameter.

Define a UDT to represent one of the LinePumps.

  • This UDT must have exactly 1 parameter.

Define a UDT that will represent an entire production line.

  • This UDT must have exactly 1 parameter.
  • This UDT must have nested UDTs inside it to represent the LineMotor and LinePump.
    • LineMotor and LinePump UDTs must have at least 1 parameter each.

Create 5 instances of this production line UDT in a folder called Dairy Production Lines in the default Tag Provider.