Inserting Choice Controls in Edit Table Cells

Revision as of 20:15, 28 April 2016 by Bbecane (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Choice controls in edit table cells

Analytica 4.0 introduced the ability to present pulldown controls in the cells of an edit table. Using pulldowns in this fashion provides a convenience to the users of your model, and ensures that they select only valid values for cell values. The following screenshot demonstrates the use of pulldowns in an edit table:

Power plant table with pulldowns.JPG

This short mini-tutorial takes you step-by-step through a simple example to produce the table shown.

How it is done

The edit table displayed above actually contains the following cell contents:

Edit table with choice in edit mode.JPG

When the edit table is viewed from edit mode (i.e., by a model builder), we see this. When the same table is viewed from browse mode (i.e., by the user of the model), the controls display. For the table to be changeable when viewed in browse mode, the table must have an input node. So, the basic steps are to create the indexes containing the list of valid choices for each pulldown, create the edit table, make an input node for the table, and finally populate the edit table with calls to the choice function, where appropriate. Later in the tutorial, we'll also learn how to configure the table so that if new rows are added, the default cell contents for the new row (with choice controls) are automatically inserted.

Identifying Possible Selections

1. Start Analytica and fill in the Object window:

ECTut object window.JPG

2. Close the object window

3. We'll begin by defining the possible Plant types. Drag an index to the diagram and title it Plant Type

4. Press Expr.jpg to edit the definition, and in the definition type pulldown, select "List of labels".

5. Fill in the possible plant types as shown (pressing down-arrow from the last cell to append a new cell each time):

Plant types.JPG

6. Repeat steps 3-5 to define an index County:


7. Next, create an index named Boolean having the values [False, True]. In this case, instead of using a list-of-labels, we are going to use a "List". This means that cells in the list contains the identifiers False and True, rather than the string "False" and "True". These evaluate to 0 and 1 respectively. This will allow the text "False" and "True" to display in the pulldown, but when the Choice expression is evaluated, it will evaluate to the numeric values of 0 or 1. If we were to define as a list of labels, they would evaluate to the text "False" or "True". Drag an index node to the diagram, title it "Boolean", and select "List" for the definition type. Enter False, press downarrow, and enter True.

Boolean index.JPG

At this point, we have specified the possible values for each choice control.

Understanding the Choice function

You may have previously used the Choice function to create pulldowns. Here, we'll review this briefly before we actually insert these into the edit table cells.

8. Drag a variable node to the diagram, name it "Select Plant Type". In the definition type pulldown, select "Choice".

9. Fill in the parameters as shown:

Choice function finder.JPG

For the «I» parameter, we've specified the Plant_type index that we defined in Steps 3-5. These are the possible choices. We've tentatively set n = 1 to select the first item in the list (which is valid until the user actually selects something different in the control). And finally we've set «inclAll» to false. This third parameter turns off the "All" option so the user does not have the option of selecting every plant type. When placing pull-down controls inside edit tables, you will probably not want "All" to be an option.

10. Press OK. In the attribute dialog, a choice pulldown appears.

11. Click on the pop-up (which currently displays "Natural Gas") and select "Nuclear". Then, change the definition-type pulldown to expr (Expression). Notice that the following definition appears:

Choice(Plant_type, 4, False)

Notice that the second parameter has changed from 1 to 4 as a result of selecting "Nuclear". Analytica automatically re-writes the definition of a Choice function when the user selects a new option.

12. Click on the "Select Plant Type" and press Delete. Answer yes, that this is what you intend. We won't be needing this variable any more.

Creating the Edit Table

13. Create another index and title it "Plant ID". Make it a list-of-labels, and fill in the IDs for our power plants as follows:

Plant ID.JPG

14. Create an index titled Plant Fields, which will serve as the columns of our edit table, another list-of-labels, and fill in as follows:

Plant fields.JPG

15. Create a variable node, name it Power Plant Data. Use the definition type pulldown to select "Table":

Power plant data.JPG

16. The index chooser appears. In the left-hand column, find Plant ID and Plant Fields and move these to the right to select.

Power plant indexes.JPG

17. Press OK, and then close the edit table window.

18. With Power Plant Data selected, select "Make Input Node" from the Object menu.

Power plant data input node.JPG

What we have done with this step is to create an input node for our edit table. The input node means that our table can be edited from browse mode. Whenever you are using choice controls in an edit table, you will want this to be possible, since the controls actually appear when the table is edited from browse mode, so this is a critical step.

Define Choice Cells

19. Bring up the edit table for Power Plant Data.

20. In the top cell in the Plant Type column, type:

Choice(Plant_Type, 1, false)

and press Enter to accept typing.

21. With the cell just typed selected, select Edit → Copy

22. Click on the Plant Type column header to select the entire row and select Edit → Paste. Now every cell in that column is defined as a choice.

Pasted plant type.JPG

23. Repeat steps 20-22 to set the definition of the cells in the County row to:

Choice(County, 1, false)

and the cells of Cogen to

Choice(Boolean, 1, false)

The table now should be as follows:

Plant choice cells defined.JPG

24. Press the BrowseTool.jpg button to enter browse mode. Your edit table is now configured and ready for data entry.

25. Enter the table data for the power plants, taking advantage of the pulldown controls you've defined, using the following data. Press the green check when done.

Power plant table with pulldowns.JPG

Adding Rows

At this point, the user of your model does not have the ability to add additional power plants to the table (i.e., from browse mode). Try it yourself to see:

26. Ensure that you are still in browse mode (BrowseTool.jpg is depressed on the toolbar). Click on the last row header (T0008). Press the down arrow to append a row. (Nothing happens) Try to select Insert Rows from the Edit menu. (You can't -- it is disabled).

Users cannot add a power plant to the list because the index Plant_ID cannot currently be edited from browse mode. To allow Plant_ID to be edited, you must create an input node for it.

27. Close the edit table window. Enter Edit mode (click Edit Mode Toolbar Button.jpg), and select the Plant ID node. From the menu, select Edit → Make Input Node. Position the newly created input node appropriately. Press BrowseTool.jpg to re-enter browse mode.

Plant ID input node.JPG

28. Press the Edit Table button for Power Plant Data.

At this point, we can insert rows (you can verify that the menu item is now enabled) or append to the end. However, we have not specified the default values for those new cells. Analytica's internal default is to define any new cells as 0 (zero). We'll try inserting a row to see the problem.

29. Click on the last row header, T0008, and press the down arrow button.

Plant data zero row.JPG

Notice that zeroes have been inserted, even for the columns that should contain choice controls. The way to get choice pulldowns to show up in newly inserted rows is to specify what the default cell value is for the table. Since the default changes for each column, the default value provided must be indexed by Plant_fields. In other words, the default cell value will be specifies using a 1-D table indexed by Plant_fields. Let's set this up now.

30. First, let's get rid of that zero row, so we can insert it again later. Click on the row header for the newly inserted row, then select Edit → Delete Rows. The table should now be back into the state it was in before we added the row of zeros. Close the edit table window.

31. Enter edit mode (Edit Mode Toolbar Button.jpg) and create a new constant node entitled "Default Plant Data". (We could use a variable node, etc., but I like to use a constant here, since I think of this as being an unchangeable part of the model). Define the constant as a Table, using the index Plant fields.

32. Enter the cell defaults for each column. In the screenshot here, I have pivoted the edit table so the index appears along the column headers, and I have also entered (two single quotes with nothing between them), signifying an empty string, as the default plant name.

Default plant data.JPG

33. Close the edit table window for Default Plant Data.

34. Now, we need to tell Analytica that Default_plant_data contains the cell defaults for Power_Plant_Data. There is currently not a graphical UI option for this, so we must do this from the typescript window. Open the typescript window by pressing Ctrl+' (or Ctrl+F12 on a non-English keyboard).

35. At the typescript prompt, type:

TableCellDefault Power_plant_data: Default_plant_Data

Notice that identifiers (with underscores) are used, not titles. This typescript command sets the TableCellDefault attribute of Power_plant_data to be Default_plant_data.

36. Close the typescript window. Change again to browse mode (BrowseTool.jpg), and press the Edit Table button for Power Plant Data.

37. Click on the last row header, T0008, and press the down arrow button.

Plant new row.JPG

Now the row inserts with the default values, including three pulldowns. Try entering data for this power plant:

 Plant ID: H0027
 Name: Big Creek 1
 Type: Hydroelectric
 County: Fresno
 Cogen: No
 Capacity: 90.2 MW

Download the final model

The model created during this example can be downloaded: media:California_Power_Plants.ANA

See Also


You are not allowed to post comments.