specs/routes/R_APPE

App Editor

Overview

The App Editor allows you to create, view, and edit app versions. These app versions can be created in real-time by multiple Tulip users.

An app version is a series of steps, or screens of content, that can be used by an operator running the Tulip Player on a desktop, tablet or mobile phone.

After an app version is published, it is immediately available to all devices that are allowed to run the “latest published version” of an app.

Model/Page Connections

Color Palette

View

  • When a user attempts to edit a Color variable or any widget with color options, they will see all colors from the Color Palette

Navigation Options

View

  • A collection of options allowing for easier viewing of the App Editor.

App Version

Edit

  • The App Editor’s primary purpose is editing an app’s “development” version. Almost every button on the screen will allow you to change the app version by modifying the Models within that app version.

View

  • You can view the entire app version by clicking each step on the left side of the screen

Create

  • A new version of the app can be “published”, or created, by pressing the “Publish” button in the top right corner of the screen.

Analysis

View

  • A user can view the live version of an Analysis by looking at an Analysis that is embedded in a Step
  • A user can view all Analyses across all apps from the Embedded Analysis Widget

Step Group

Create

  • A user can create a new Step Group by clicking the “Add” button in the top left of the screen and choosing Step Group

Edit

  • A user can edit a step group by dragging new steps underneath it in the list on the left side of the screen
  • A user can edit the name of the step group by double clicking the name on the left side of the screen

View

  • A user can view all step groups within the app version by scrolling through the list of steps and step groups on the left side of the screen

Delete

  • A step group can be deleted by selecting the Step Group from the left side panel, then pressing the “Trash’ icon in the right context pane.

Asset Library

The asset library is a library of static shapes that can be added to an app as an aid to the operator.

View

  • You can view the Asset Library by clicking the “Assets” button at the top of the screen in the Widget Bar.

Regular Step

Create

  • A user can create a new Regular Step by clicking the Step in the list on the left side of the screen and then pressing "cmd/ctrl + Enter".
  • A user can create a new Regular Step by clicking the "Add" button in the top left of the screen and selecting 'Step'.
  • A user can duplicate a Regular Step by:
    • Clicking Step from the list in the left side panel and then pressing the “gear” icon within the right Context Pane and then choosing "Duplicate Step"
    • Right clicking a step and selecting 'Duplicate'
    • Selecting a step and pressing 'cmd/ctrl + D'

Edit

  • A step contains a series of Widgets. A user can edit the widgets on the step by selecting the Step from the list on the left side of the screen.
  • A user can edit the details of the step in the panel on the right side of the screen after selecting the step. It can also change its relationship to the content on the "Base Layout" template within the app.

View

  • A user can view all Regular Steps within the app version by scrolling through the list of steps and step groups in the left side panel of the editor.

Delete

  • A Regular Step can be deleted by:
    • Selecting the step in the left side panel, then pressing the “gear’ icon in the right context pane and choosing "Delete Step"
    • Right clicking on the Step and choosing 'Delete'
    • Selecting the Step and pressing 'cmd/ctrl + Delete' on the keyboard.

Form Step

Create

  • A user can create a new Form Step by clicking the “Add” button in the top right of the screen and choosing Form Step
  • A user can create a new Form Step by clicking the Form Step in the list on the left side of the screen and then pressing the “Duplicate” icon on the right side of the screen

Edit

  • A step contains a series of Widgets. A user can edit the widgets on the step after selecting the Step from the list in the left side panel.
  • A user can edit the details of the step in right context pane after selecting the step.

View

  • A user can view all Form Steps within the app version by scrolling through the list of steps and step groups on the left side of the screen

Delete

  • A Form Step can be deleted by selecting the step on the left side of the screen, then pressing the “Trash’ icon on the right side of the screen

Approval Step

Create

  • Approval Steps are only available on “Enterprise” plans
  • A user can create a new Approval Step by clicking the “Add” button in the top right of the screen and choosing Signature Form
  • A user can create a new Approval Step by clicking the Signature Form in the list on the left side of the screen and then pressing the “Duplicate” icon on the right side of the screen

Edit

  • A step contains a series of Widgets. A user can edit the widgets on the step after selecting the Step from the list on the left side of the screen.
  • A user can edit the details of the step in the panel on the right side of the screen after selecting the step.

View

  • A user can view all Approval Steps within the app version by scrolling through the list of steps and step groups on the left side of the screen

Delete

  • An Approval Step can be deleted by selecting the step on the left side of the screen, then pressing the “Trash’ icon on the right side of the screen

Widget

Create

  • A widget can be created by selecting any icon from the “Widget Bar” at the top of the screen, and then clicking a widget from the menu that appears. This will automatically add the widget to the step.
  • A widget can be duplicated by:
    • Selecting the widget in the left side panel and pressing 'cmd/ctrl + D' on the keyboard.
    • Select one or multiple widgets in the app editor and hold 'alt/option' while dragging.
    • Right clicking on the widget in the left side panel and choosing 'Duplicate'.

Edit

  • After adding a widget to a step, a user can click the widget. A series of customization options will appear on the right side of the screen.
  • A widget can be resized by dragging any of the corners after it is embedded on the step.
  • A widget can be rotated by dragging after hovering on any of the corners until a rotate icon is visible.
  • A widget can be constrained to up/down/left/right directions by holding 'shift' while dragging.

View

  • When a user is viewing a specific step, all widgets on that step will be displayed.

Delete

  • A widget can be deleted by:
    • Clicking the widget and then pressing “Delete” on the keyboard.
    • Clicking the widget and then pressing the “Trash” icon that appears on the right side of the screen.
    • Right clicking on the widget in the left side panel and choosing 'Delete'

Variable

Create

  • A variable can be created via the “Variable” dropdown on the right side of the screen, which appears in a variety of widgets
  • A variable can be created by clicking the “App” menu on the right side of the screen, then choosing the “Variables” option from the resulting options. This will open a modal where new variables can be created.
  • A variable can be created by duplicating another trigger. This can be done by clicking 'Duplicate' within the '...' menu for a trigger.

Edit

  • A variable can be edited by clicking the “App” menu on the right side of the screen, then choosing the “Variables” option from the resulting options. After that, a list of variables in the app version will be shown. A user can click any name of a variable to edit the name.
  • A user can edit the “default value” using the “Default Value” column in the screen above.

View

  • A list of all variables in the app version can be viewed by clicking the “App” menu on the right side of the screen, then choosing the “Variables” option from the resulting options.

Delete

  • A variable can be deleted when it is not included in any triggers by clicking 'Delete' within the '...' menu for a trigger.

Record Placeholder

Create

  • A user can create a Record Placeholder by selecting the “Records” tab on the left side of the screen and then choosing a specific table. Then, they can click the "+" button next to the “Record Placeholder” title.

Edit

  • After a Record Placeholder has been created, a user can edit the name by clicking the name of the Record Placeholder from the list of Record Placeholders in the “Records” tab on the left side of the screen.

View

  • A user can view all Record Placeholders under the “Records” tab on the left side of the screen.

Delete

  • A Record Placeholder can be deleted after it is not referenced in any triggers. To delete the Record Placeholder, click its name and then choose the “Delete” button from the resulting menu.

Table Query Placeholder

Create

  • A user can create a Table Query Placeholder by selecting the “Records” tab on the left side of the screen and then choosing a specific table. Then, they can click the "+" button next to the “Query” title.

Edit

  • After a Table Query Placeholder has been created, a user can edit the name by clicking the name of the Query Placeholder from the list of Query Placeholders in the “Records” tab on the left side of the screen.

View

  • A user can view all Query Placeholders under the “Records” tab on the left side of the screen.

Delete

  • A Query Placeholder can be deleted after it is not referenced in any triggers. To delete the Query Placeholder, click its name and then choose the “Delete” button from the resulting menu.

Table Aggregation Instance

Create

  • A user can create a Table Aggregation Instance by selecting the “Records” tab on the left side of the screen and then choosing a specific table. Then, they must add a preexisting Table Query as a Table Query Placeholder. Then, they can click the "+Add Aggregation" button to add an aggregation to that Query Placeholder.

Edit

  • After a Table Aggregation Instance has been created, a user can edit the name by clicking the name of the Aggregation Instance in the “Records” tab on the left side of the screen.

View

  • A user can view all Aggregation Instances related to each Table Query Placeholder under the “Records” tab on the left side of the screen.

Delete

  • An Aggregation Instance can be deleted after it is not referenced in any triggers. To delete the Aggregation Instance, click its name and then choose the “Delete” button from the resulting menu.

Table Record

View

  • A Table Record can be viewed by selecting the “Embedded Table” widget under the “Embed” option in the “Widget Bar”. Then, after choosing a Table and the relevant Table Fields from the menu on the right side of the screen, a user can see all records from the Table.

Table Fields

View

  • Table Fields can be viewed by selecting the “Embedded Tulip Table” widget under the “Embed” option in the “Widget Bar”. Then, after choosing a Table, a user can see all Table Fields for that Table in the dropdown under the “Columns” label.

Triggers

Create

  • A trigger can be created by clicking on a Widget that is already available on a step, and then pressing the “+ (plus)” button next to the “Triggers” label on the right side of the screen.
  • A trigger can be created by clicking on a “Step” item on the left side of the screen, and then clicking “Add” next to any of the trigger types listed.
  • A trigger can be copied to the clipboard by clicking the "copy" icon next to the trigger name. Typing Ctrl/Cmd+V while selecting a similar item (e.g. button or step) will paste the copy to that item.

Edit

  • A trigger can be edited by clicking on an existing trigger listed in either the “Widget” or “Step” tab on the right side of the screen.
  • A trigger can be “cut" by pressing the “scissors” icon next to the trigger name. This will remove the trigger from the step or widget and add it to the clipboard.
  • A trigger can be enabled or disabled by toggling the slider next to the name. A trigger will not run when disabled.

View

  • Triggers are attached to either steps or individual widgets. You can see a list of all attached triggers by clicking the step or button, and then viewing the list of triggers that appears on the right side of the screen.

Pages

The following Pages are related to managing apps:

The following pages can be accessed at the top of the page for the purpose of testing apps:

App Translations

The app editor allows to manually translate text within Tulip apps into multiple languages. Translated apps will be shown in each operator’s selected profile language, if the app is available in that language. Otherwise they are shown the "original language" of the app.

Translations can be added within the app editor for each widget/element (“in situ”). This specifically includes:

  • Widgets
    • Text widgets
    • Button widgets
  • Labels of table fields and object properties in interactive table widgets, variable widgets and table record widgets.

Apps that have translations enabled can be edited (e.g. moving a widget) in any of the languages. Changes will reflect across translations.

Additionally, the following "App Info" variables are available in apps with translations:

  • App’s displayed language
  • Operator’s preferred language

Enable

  • Translations can be enabled for an app in the App Editor by clicking on the "Enable Translation" button at the top right of the page.
  • The "Original Lanugage", i.e. the language the app was built in and the current language of all text, as well as any additional lanugages that should be used for the app need to be selected. The available languages are the same as available for the Tulip platform:
    • English
    • German
    • Spanish
    • French
    • Italian
    • Japanese
    • Chinese
    • Polish
  • By clicking "Save", translations are enabled for the app.
  • The "Enable Translation" button changes to a dropdown menu allowing to switch to any of the languages selected in the modal.

Create

  • To create/add a translations for a widget, the following steps are required:
    • Use the language dropdown to switch to the desired language
    • Select the to-be-translated widget/element (see above for supported widgets/elements)
    • Enter the translated text into the relevant input field for the widget/element (e.g. the label input for a button)
  • The original language text is always shown next to the input field for reference
  • Widgets/elements that are missing a translation in the currently selected language are highlighted by an orange (i) icon in the top right corner of the widget
  • If a new widget is added while viewing a language different to the "original lanugage", a modal prompts the user to first enter the original language text to keep the original language complete at all times.

Edit:

  • Languages can be edited by clicking on the "Edit Languages" option in the language dropdown. This allows to:
    • Add additional lanugages by clicking on "Select a language" and selecting the respective lanugage
    • Change to another original language by selecting it in the dropdown menu for "Original Lanugage".
      • If the newly selected original language is missing translated text for one/multiple widgets, a warning is shown. The user can still decide to use that language as the new original lanugage.
  • Individual translations for widgets/elements can be edited the same way they are created, by selecting the widget and editing the text in the relevant input field.

Delete:

  • Languages can be deactivated by clicking on the "Edit Languages" option in the language dropdown. This allows to:
    • Deactivate additional lanugages by clicking on the "x" next to a language. This will not delete any of the translations for that language, but only make them unavailable for use in that version of the app. Re-adding the language later will show the already entered tranlsations again.
    • Deactivate translations for the app by clicking on "Deactivate Translations". Two options are available for deactivation:
      • Archive translations: This persists any translated content for this app. It will be available in case translations are re-activated for this app in the future.
      • Delete all translations: This permanently deletes all translated content and resets any translation-related settings to before translations were initially activated for this app.
  • Individual translations for widgets/elements can be deleted by deleting any input from the relevant input field. If this is done, the original language text will be shown again for the widget/element.

User Permissions

App editing permissions may be restricted by the app creator, the user who originally created the app. The rules around restricting app editing are described in App Permissions.

Tests

IDName
QA-T56Variable Widget : 01 - Simple variables in canvas can be changed to compound variables
QA-T57Variable Widget : 02 - Record View: Compound variables can be used with triggers
QA-T58Variable Widget : 03 - Simple variables can have their size, color, and style options modified.
QA-T59Variable widget : 04 - Compound variables can reorder, delete and restore fields
QA-T60Variable widget : 05 - Compound variables can have their size, color, and style options modified.
QA-T61Variable widget : 06 - Magic variables can have their size, color, and style options modified.
QA-T62Variable widget : 07 - Testing variables and compound variables in app
QA-T98Record Placeholders : 04 - Load Table Records Trigger, and Table Record Widget
QA-T99Record Placeholders : 05 - Create and Load Table Record Trigger
QA-T100Record Placeholders : 06 - Table Data Tab
QA-T102Record Placeholders : 01 - Add a record placeholder to an app
QA-T103Record Placeholders : 02 - Edit a record placeholder in an app
QA-T104Record Placeholders : 03 - View the table for a record placeholder
QA-T106Signature Step : 01 - A signature form can be created
QA-T107Signature Step : 02 - Signature widgets cannot be deleted from a signature form step and additional ones cannot be created
QA-T108Signature Step : 03 - Signature form should allow any user to submit it when configured so
QA-T109Signature Step : 04 - Signature form should allow only the current user to submit it when configured so
QA-T110Signature Step : 05 - Signature forms should only be submittable a single time per process run
QA-T116Machine Monitoring : 06 - Machine Outputs
QA-T134Record Placeholders : 08 - Delete Record Placeholder
QA-T153Form Widgets : 06 - Photo Widget
QA-T157Input Widgets : 01 - Boolean widget
QA-T160App Editor Misc - Verify Keyboard Shortcuts Work
QA-T183Triggers - Print Using System Dialog Trigger
QA-T208Analytics - Analytics Widget
QA-T234Variable Widget : 08 - Table Records Can be Styled
QA-T241Embedded Tables : 01 - Embed a Tulip Table in an app
QA-T243Embedded Tables : 03 - Connect an embedded Tulip Table to a Table record
QA-T244Embedded Tables : 04 - Filter an embedded table
QA-T245Embedded Tables : 05 - Handle deleted fields in embedded tables
QA-T246Embedded Tables : 06 - Handle a Tulip Table change in an embedded table
QA-T257Machine Monitoring : 07 - Machine Widgets
QA-T258Machine Monitoring : 08 - App Triggers For Machines
QA-T267User Roles : 08 - Viewers should be unable to modify data in Tulip
QA-T280Analytics - Analytics Widget Filtering
QA-T281Analytics - Analytics Widget Filtering (Machine-based)
QA-T30507: Apps can use Vision Cameras and Regions
QA-T338Widgets - Shapes Widget (and aesthetic changes)
QA-T339Widgets - Text Widget
QA-T340Widgets - Button Widget
QA-T343Widgets - Document Widget
QA-T344Widgets - Webpage Widget
QA-T346Form Step - Create Form Step
QA-T347Form Step - Running the Form Step
QA-T348Master Layout - Master Layout
QA-T350App Editor Misc - Comments
QA-T351App Editor Misc - Step Overload
QA-T396Widgets - Digital History Record Widget
QA-T399Table Links : 03 - Linking Records via App Triggers
QA-T40414: Test Jig Enter/Exit region and Appear/Disappear events
QA-T411App Editor Misc - Apps can be worked on in Parallel
QA-T458Variable modal : 01 - Create and modify a variable
QA-T459Variable modal : 02 - Variables need to have unique names
QA-T460Variable modal : 03 - Managing variables created within the app
QA-T461Variable modal : 04 - Variable's parameters
QA-T462Variable modal : 05 - Managing variables on the modal
QA-T463Variable modal : 06 - Deleting variables
QA-T469Schedules and Shifts : 02 - Applying shifts in apps
QA-T477Input Widgets : 02 - Text widget
QA-T478Input Widgets : 03 - Number widget
QA-T479Input Widgets : 04 - Single Select widget
QA-T480Input Widgets : 05 - Multiselect widget
QA-T481Input Widgets : 06 - Date picker widget
QA-T482Input Widgets : 07 - Image widget
QA-T483Form Widgets : 01 - Boolean widget
QA-T485Form Widgets : 02 - Dropdown widget
QA-T486Form Widgets : 03 - Multiselect widget
QA-T487Form Widgets : 04 - Text widget
QA-T488Form Widgets : 05 - Number widget
QA-T491Barcode Widget: 01 - Create a barcode via variable
QA-T492Barcode Widget: 02 - Create a barcode via app info
QA-T494Barcode Widget: 03 - Create a barcode via Tulip table record
QA-T495Barcode Widget: 04 - Create a barcode via static value
QA-T497Expression Editor : 01 - Create an expression in an app trigger
QA-T501Copying Triggers : 01 - Copying and pasting triggers between buttons
QA-T502Copying Triggers : 02 - Copying and pasting triggers between image widgets
QA-T504Copying Triggers : 03 - Copying and pasting triggers between Interactive Tables
QA-T505Copying Triggers : 04 - Copying and pasting Step Triggers
QA-T506Copying Triggers : 05 - Copying and pasting App Triggers between apps
QA-T510Color Palette - Set Default Options
QA-T512Timer Widget : 01 - Default Configuration
QA-T513Timer Widget : 02 - Target Time Configuration
QA-T514Timer Widget : 03 - Target Time with Table Records and Static Values
QA-T515Master Layout - Widget triggers
QA-T516Master Layout - Step and App Triggers
QA-T517Input Widgets : 08 - Linking Tulip Table Records
QA-T518Widgets - Grid Widget
QA-T519Widgets - Gauge Widget
QA-T521Expression Editor : 02 - Running the "Expressions" app
QA-T567Dev Mode - Environment and Player Settings
QA-T568Dev Mode - Variables and Table Records
QA-T569Dev Mode - Completions are not Saved
QA-T574Table Queries : 05 - Queries in Apps
QA-T583Step Tab - Step and Step Group Configuration
QA-T586Barcode Widget: 05 - QR Code Configuration
QA-T679Triggers - Sleep Trigger
QA-T709Record Placeholders : 01 / Record Placeholder Validation works
QA-T710Record Placeholders : 02 / Record Placeholders' names must be unique and can't be left blank
QA-T712Embedded Tables : 07 - Pagination in an embedded table
QA-T763Signature Widget : 01 - Signature widget configuration
QA-T813Step Tab - Widget Manipulation
QA-T827Signature Widget : 02 - Signee options and variables
QA-T828Signature Widget : 02 / Signee options and mandatory features
QA-T829Signature Widget : 03 - Signing in LDAP, SAML
QA-T830Signature Widget : 03 / Denied signing in LDAP, SAML
QA-T839Input Widgets : 09 - Input Widget Labels
QA-T841Embedded Tables : 08 - Displaying variable data source

Requirements

IDRequirement
PLAT-8730 (259)Ability to scan and read auto-id codes generated or used by other other systems and capture their data into the material history record.
PLAT-8738 (291)Provide sequence management of process steps so that Apps can get required information for execution of a specific process step
PLAT-8747 (302)Ability to re-execute process step with override of constraints of the process step configuration in the Master Recipe or material workflow. In such a case an extra e-signature can be required.
PLAT-8748 (301)Ability to re-execute process step respecting any constraints of the process step configuration in the process flow.
PLAT-8761 (290)Provide managed process execution that guides the user through the production process as defined in a Production Model including the workflow, process logic, validation requirements, process parameters, material inputs and material outputs.
PLAT-8806 (148)Ability to provide multi-media work instructions
PLAT-8808 (147)Ability to provide formatted textual work instructions
PLAT-8819 (27)Provide a managed way to define label templates and formats with process and operation specific parameters. Ie. parameters are replaced with specific values when labels are processed for printing during process execution
PLAT-8894 (103)Ability to guide operator in execution of sampling plan. Ie extract materials from batches/lots and disposition of sample material
PLAT-8931 (19)Provide the ability to configure an e-signature requirement for any master data definition or model's status transition in the approval workflow
PLAT-8977 (81)Ability to display rich media including Photo (JPG, BMP, PNG format), Video (MP4, MOV format)