Everything in SmartIQ has a "repeat context", which is either a repeating page/section/data question that has sections/rows/records, or non-repeating page/section/data question which has just one section/row/record and does not have the repeating option selected.
Pages and sections can be configured to repeat the set of questions within the page as many times as the end user needs to enter all the required information. These pages and sections that repeat are called 'repeaters'.
This is useful when designers need to collect multiple items of data from the user, but have more questions or complex requirements than can be met using a single set of questions, such as an unknown number of responses.
When a page or section is configured as repeating, Add and Remove buttons allow the user to add new repeats as required. Each page repeat added creates a new page represented on the left of the screen below the previous pages. Section repeats simply add new rows, below the previous section, within the page.
The related content in the generated document grows with the number of records added by the user in Produce. Each record could be used to populate a single table row, paragraphs, entire pages, or documents.
Enable the repeating option in the inspector panel for selected pages and sections, all the content contained in these repeaters (questions and placeholders, columns, and sections) will repeat, as many times as the end user adds, up to the designer specified max and min rows.
As questions are contained within a respective repeat, their tags can't reference to questions outside of whats contained within their repeat. The exception to this is a repeat specific previous question tag. Similarly if a question outside the repeat references a question answer within a repeat, the outside question will be given all the answers that repeated question has been given, separated by pipe characters '|'.
The SmartIQ formula engine is capable of carrying out logic using the available functions within repeaters.
The use of logic inside repeating rows can have a large performance impact.
Logic may need be recalculated anytime a row is added or updated, or anytime a value with a dependency related to one of those rows is changed. For example recalculation can be triggered by earlier form data, causing a cascade of recalculations that have a large performance impact, especially when multiplied exponentially by repeat rows.
The use of fragments is for convenience of design and not for performance.
If a repeater contains 50 questions, the performance impact will be the same whether the questions are in a fragment or not. Adding an additional row will be just as slow as adding that number of additional questions outside a repeater or fragment.
Adding a repeat copies all of the questions in a section.
If there are a lot of questions, this may impact poorly on performance, as it has the effect of duplicating all the questions.
Repeated Actions can cause extended runtime.
Long running actions, ones that have a long timeout, or a large number of retries will significantly increase the runtime of the form.
|Allow Sorting||allow users to re-order the repeaters|
|Show Numbering||show or hide the page numbers in produce|
|Data Driven||Drives the number of repeats to match that of another source. This can be data or another repeating section or page.|
|Min and Max Repeats/Allow Add and Remove||Allows users to add and remove repeaters. A minimum and maximum number of repeats can be defined. It is possible to use question reference tags to define property values such as the minimum and maximum repeats. Question references that resolve to a value that isn't a number will be treated as if there is no minimum/maximum.|
|Show duplicate button||shows or hides the duplicate button from the user (Only visible when not data driven)|
"Show minimum rows on startup" only works at STARTUP. The repeater will load its rows when it is created (usually when the wizard is launched).
This means if a question reference tag is linked to maximum or minimum, and the question is updated, rows will not be created/deleted from the repeater.
SmartIQ allows the dynamic upload of data from a CSV file into a repeating section. When enabled, end users may also import, and export, the repeating data from, and to, a CSV file for editing outside SmartIQ. SmartIQ will recalculate all questions contained in the repeating section, including any dependencies on the repeating section and its questions.
If a project is designed to use nested or side-by-side repeating sections, with dependencies relating to the uploaded data, csv uploads can result in a non-linear increased time to load.
A CSV that loads easily with 10 rows may be very slow with 25 rows and not load at all with 100 rows. Best practice is to start designing with an initial set of test data that exceeds the projected maximum row count, so any performance issues are identified early in the project design process.
Repeating sections and pages can be driven by a Data question or a File Selection question when the question is set to return multiple rows or files. If there are 10 rows in the data connection then repeating section will show 10 rows.
Data Driven by Data Question
Designers can have questions under a repeat that reference a data question answer and they will get the appropriate value for that row. For example, a text field default value references the data source answer. For each row in the repeat, the default value becomes the value from the same row in the data source. Set the selection type as Multiple Rows and configure the question appropriately (Only enabled for multiple row Data Source question)
When child questions, in the repeat, reference the data question, they will only get a single data value from the same row number that the child question is in. The single value mode is enabled for question references in text and defaults, conditions, filters, and rules.
Data in repeating sections and pages can be reused in later areas of the project by making it available through a special data source. The data question's columns are the question names available in that section/page and the column values are the values of those questions in each row of the repeat.
When Data source initially starts with zero rows, the data-driven repeating page might show a blank page.
If a data source changes the number of rows it has, those rows will be added or deleted from the end of the repeat. If a data row is deselected the same row in the repeat will be removed preserving all other rows. Repeating section set to Data-Driven will not display the Add, Delete, Fill Down or Import buttons by default. Data-Driven repeating Sections with Allow Add and Remove selected will display Add, Delete, Fill Down and import buttons. For repeat pages the Add and Delete buttons will also display. When Allow Add and Remove is selected, Data-driven sections and pages can have their rows modified.
When designers add a manual row using Add button, the question references to the data source question will return a blank string for manually added rows. It is common for questions under the repeat to have data references to show the user what is in the database. When designers add a section row manually it is not tied to a data source row and so those references cannot be resolved for manually added rows. Modifying the data source's selection will bring back previously deleted section rows. This is essentially a resync of the section rows to the data sources selections. Manually added rows will be untouched.
A data source inside a repeating section will be its own data source each time.
If the data source is slow or accesses a large amount of data, this performance impact will be multiplied by the number of repeats. In addition, the practices relating to complex logic in repeat rows also apply to the use of data sources in repeat rows.
Data Driven by File Selection question
When a File Selection question is set to "Multiple" the end user will be able to upload multiple documents to answer the question. If a Designer wants to ask additional questions for each uploaded document then they would use a Data-driven repeating section which specifies the source as the source File Selection question to get the corresponding rows and data.
As the user uploads attachments to the File Selection question, corresponding rows will be added to the section. If the files uploaded to the question changes the number of rows it has, those rows will be added or deleted. When child questions (those within the section created) of the repeat reference the File Selection question, they will get a single data value from the same row that the child question is in.
The single value mode is enabled for question references in text and defaults, conditions, filters, and rules for questions within the created section.
If designers have a range placeholder available within the project, the property 'Repeat Content' will appear within pages and section properties. This option allows the desired repeat range placeholder to be mapped to the desired section or page.
Using reference tags and formulas, any display text from the properties panel can be made dynamic. This is especially useful for repeating sections of which also have reference tags specific to repeaters.
For example if a repeating page is to collect information about students, the page name could include the Student’s name so designers can quickly navigate to a particular student in Produce. To achieve this, use a formula in the repeating page title like the one below that concatenates the word ‘StudentData’ with the response to question 1 (note: formulas must start with an ‘=’ symbol).
=concat("Student Data (",[q1],")")
The above formula may look incomplete until the Q1 has a value this can be overcome by using an iif formula:
=iif(isequal([q1],""),"(Awaiting Response)",concat("Student Data (",[q1],")"))
Repeating sections can contain other repeating sections nested within them, useful for drilling down to small sub-lists in a tree like structure. However, for large lists of data gathering it is suggested to instead use conditions to display and hide relevant information where possible instead of just using nested questions for this task.
Use nested repeating sections with caution. Do not layer nesting too deeply.
Having multiple nested repeaters, each containing even a small amount of data, can exponentially grow data to levels that can drastically affect performance performance.
Correct placeholder setup in templates for repeaters can be extra challenging if a designer is not familiar with range placeholder behaviors, but this set up is important for template documents to fill out correctly with the repeating data.
Documents and content library items that are repeated on the basis of a repeating section or page will be generated and stored individually for each row. Therefore, if it is a complex or large document or complex and large, this will have performance and space implications.
Updated about 2 months ago