Bird
Raised Fist0
SCADA systemsdevops~30 mins

Navigation and screen hierarchy in SCADA systems - Mini Project: Build & Apply

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Navigation and Screen Hierarchy in SCADA Systems
📖 Scenario: You are working on a SCADA system interface. The system has multiple screens showing different parts of a factory. You need to organize these screens in a hierarchy so operators can navigate easily.
🎯 Goal: Build a simple screen hierarchy using a dictionary where each screen points to its child screens. Then create a function to navigate from one screen to its child screens.
📋 What You'll Learn
Create a dictionary called screen_hierarchy with exact screen names and their child screens
Add a variable called current_screen to hold the starting screen
Write a function called get_child_screens that takes a screen name and returns its child screens
Print the child screens of the current_screen
💡 Why This Matters
🌍 Real World
SCADA systems use screen hierarchies to organize complex factory data so operators can find information quickly and safely.
💼 Career
Understanding navigation and screen hierarchy is essential for SCADA developers and operators to build and use efficient control interfaces.
Progress0 / 4 steps
1
Create the screen hierarchy dictionary
Create a dictionary called screen_hierarchy with these exact entries: 'Main': ['Overview', 'Settings'], 'Overview': ['Temperature', 'Pressure'], 'Settings': ['Network', 'Display'], 'Temperature': [], 'Pressure': [], 'Network': [], 'Display': []
SCADA systems
Hint

Use a dictionary with keys as screen names and values as lists of child screens.

2
Set the current screen variable
Create a variable called current_screen and set it to the string 'Main'
SCADA systems
Hint

Set current_screen exactly to 'Main'.

3
Write a function to get child screens
Write a function called get_child_screens that takes a parameter screen and returns the list of child screens from screen_hierarchy for that screen
SCADA systems
Hint

Use the dictionary get method to return child screens or an empty list if none.

4
Print the child screens of the current screen
Write a print statement that prints the result of calling get_child_screens with current_screen
SCADA systems
Hint

Call get_child_screens(current_screen) inside print().

Practice

(1/5)
1. What is the main purpose of navigation and screen hierarchy in SCADA systems?
easy
A. To organize screens in a clear tree structure for easy access
B. To increase the number of screens in the system
C. To make screens load slower for security
D. To hide all screens from the user

Solution

  1. Step 1: Understand navigation purpose

    Navigation helps users find screens quickly by organizing them logically.
  2. Step 2: Understand screen hierarchy role

    Hierarchy arranges screens as parents and children, creating a clear structure.
  3. Final Answer:

    To organize screens in a clear tree structure for easy access -> Option A
  4. Quick Check:

    Navigation = Organize screens clearly [OK]
Hint: Think of folders organizing files for easy finding [OK]
Common Mistakes:
  • Confusing more screens with better navigation
  • Thinking navigation slows system
  • Believing screens should be hidden
2. Which of the following is the correct way to define a parent-child relationship between screens in a SCADA configuration file?
easy
A. "ScreenA": { "children": ["ScreenB", "ScreenC"] }
B. "ScreenA": { "parent": ["ScreenB", "ScreenC"] }
C. "ScreenA": { "siblings": ["ScreenB", "ScreenC"] }
D. "ScreenA": { "children": "ScreenB", "ScreenC" }

Solution

  1. Step 1: Identify correct syntax for children

    Children are listed as an array under the key "children" for a parent screen.
  2. Step 2: Check options for correct JSON structure

    "ScreenA": { "children": ["ScreenB", "ScreenC"] } uses an array correctly; others misuse keys or syntax.
  3. Final Answer:

    "ScreenA": { "children": ["ScreenB", "ScreenC"] } -> Option A
  4. Quick Check:

    Children = array under "children" key [OK]
Hint: Children screens go inside a list under "children" [OK]
Common Mistakes:
  • Using "parent" key to list children
  • Listing children without brackets
  • Using "siblings" key incorrectly
3. Given this screen hierarchy configuration snippet:
{
  "MainScreen": { "children": ["AlarmScreen"] },
  "AlarmScreen": { "children": ["DetailScreen"] },
  "DetailScreen": {}
}

What is the correct navigation path to reach DetailScreen starting from MainScreen?
medium
A. MainScreen > DetailScreen > AlarmScreen
B. DetailScreen > AlarmScreen > MainScreen
C. AlarmScreen > MainScreen > DetailScreen
D. MainScreen > AlarmScreen > DetailScreen

Solution

  1. Step 1: Read the hierarchy from the configuration

    MainScreen has AlarmScreen as child; AlarmScreen has DetailScreen as child.
  2. Step 2: Trace the path from MainScreen to DetailScreen

    Navigate MainScreen to AlarmScreen, then AlarmScreen to DetailScreen.
  3. Final Answer:

    MainScreen > AlarmScreen > DetailScreen -> Option D
  4. Quick Check:

    Parent to child order = MainScreen > AlarmScreen > DetailScreen [OK]
Hint: Follow children arrays step-by-step [OK]
Common Mistakes:
  • Reading hierarchy backwards
  • Skipping intermediate screens
  • Mixing order of screens
4. You have this incorrect screen hierarchy configuration:
{
  "MainScreen": { "children": "AlarmScreen" },
  "AlarmScreen": { "children": ["DetailScreen"] }
}

What is the main error and how to fix it?
medium
A. DetailScreen should be a child of MainScreen directly
B. Children key should be "parent" instead
C. Children must be a list; change "children": "AlarmScreen" to "children": ["AlarmScreen"]
D. Remove the children key from AlarmScreen

Solution

  1. Step 1: Identify data type error in children key

    Children must be a list (array), but "AlarmScreen" is a string here.
  2. Step 2: Correct the children value to a list

    Wrap "AlarmScreen" in brackets to make it a list: ["AlarmScreen"].
  3. Final Answer:

    Children must be a list; change "children": "AlarmScreen" to "children": ["AlarmScreen"] -> Option C
  4. Quick Check:

    Children = list, not string [OK]
Hint: Children always use square brackets [] [OK]
Common Mistakes:
  • Using string instead of list for children
  • Confusing children with parent key
  • Changing unrelated keys
5. You want to design a SCADA screen hierarchy where MainScreen has two children: AlarmScreen and StatusScreen. AlarmScreen further has a child DetailScreen. Which JSON configuration correctly represents this hierarchy?
hard
A. { "MainScreen": { "children": ["DetailScreen"] }, "AlarmScreen": { "children": ["StatusScreen"] }, "StatusScreen": {}, "DetailScreen": {} }
B. { "MainScreen": { "children": ["AlarmScreen", "StatusScreen"] }, "AlarmScreen": { "children": ["DetailScreen"] }, "StatusScreen": {}, "DetailScreen": {} }
C. { "MainScreen": { "children": ["AlarmScreen"] }, "AlarmScreen": { "children": ["StatusScreen", "DetailScreen"] }, "StatusScreen": {} }
D. { "MainScreen": { "children": ["StatusScreen"] }, "AlarmScreen": { "children": ["DetailScreen"] }, "StatusScreen": {}, "DetailScreen": {} }

Solution

  1. Step 1: Check MainScreen children

    MainScreen must have AlarmScreen and StatusScreen as children; only { "MainScreen": { "children": ["AlarmScreen", "StatusScreen"] }, "AlarmScreen": { "children": ["DetailScreen"] }, "StatusScreen": {}, "DetailScreen": {} } matches this.
  2. Step 2: Check AlarmScreen children

    AlarmScreen must have DetailScreen as child; { "MainScreen": { "children": ["AlarmScreen", "StatusScreen"] }, "AlarmScreen": { "children": ["DetailScreen"] }, "StatusScreen": {}, "DetailScreen": {} } correctly shows this.
  3. Step 3: Verify other screens

    StatusScreen and DetailScreen have empty children, which is correct.
  4. Final Answer:

    { "MainScreen": { "children": ["AlarmScreen", "StatusScreen"] }, "AlarmScreen": { "children": ["DetailScreen"] }, "StatusScreen": {}, "DetailScreen": {} } -> Option B
  5. Quick Check:

    MainScreen children = AlarmScreen, StatusScreen; AlarmScreen child = DetailScreen [OK]
Hint: Match parent children exactly as arrays in JSON [OK]
Common Mistakes:
  • Mixing children between screens
  • Omitting children arrays
  • Assigning wrong children to parents