Appfarm Documentation
Getting startedDocumentationCommunityAppfarm Create
  • Overview
  • Getting Started
    • What is Appfarm?
    • Key concepts
    • Quickstart
      • Speed intro
      • Step-by-step guide
    • Appfarm Showroom
    • FAQ
  • Appcademy
    • Learning paths
    • Appfarm Fundamentals
      • Intro Course
        • 1. Intro to No-Code and Appfarm
        • 2. Navigation in Appfarm Create
        • 3. What is Apps?
        • 4. Intro to UI Editor
        • 5. Data Model
        • 6. App Data
        • 7. Actions
        • 8. Tips and Tricks
        • 9. Intro to practical walkthrough
        • 10. Create a details view of a Project
        • 11. Create a Custom List
        • 12. Swipe and Delete
        • 13. Functionality for simple Create of Data
        • 14. Upload and Download Photos
        • 15. Input Dialog with Validation and Save
        • 16. Dashboard
        • 17. Summary
        • Quiz
      • User Interface Fundamentals
        • Container - Sectioning, Styling and Repeating
        • Conditional Styles
        • Motions
        • Responsive Design
        • Step-by-step workflow
        • Featured UI Components
        • Quiz
      • App Data Fundamentals
        • Data Source Filtering
        • App Variables and Runtime Properties
        • URL Parameters
        • Quiz
      • Actions & Logic Fundamentals
        • Event Handlers
        • Featured Action Nodes
        • Context Parameters
        • Quiz
      • Services Fundamentals
        • Introduction to Services
        • Setting up a Service
        • Scheduling a Service
      • Integration Fundamentals
        • The web request action node
        • Fetch data from an endpoint
        • Map data to a data source
        • Modify the response
        • Nested data mapping
        • Path parameters
        • Authentication
        • Send data to an endpoint
        • Quiz
      • User handling and permissions
        • Users and roles
        • Permissions
        • Creating users
        • Extending the User object class
        • Updating and deleting users
        • Unauthenticated access
        • Quiz
    • Appfarm Professional
      • User Interfaces
        • Featured UI Components
        • Concepts and Use Cases
      • Data Structures & Data Handling
        • Data Features
        • Search & Filters
        • Featured Action Nodes
        • GraphQL
      • Logic & Flow
        • Logical Concepts
        • Date and Time Handling
        • Featured Action Nodes
        • Exception Handling
      • Login & Configuration
        • Login and Authentication
        • Settings, Configuration and Languages
      • Security & Operations
        • Security and Permissions
        • Deployment
        • Schedules and Logs
        • Debugging and App Health
      • Performance & Optimization
        • Optimizing Performance
        • Enhancing Functionality
    • Appfarm Sales Representative
    • Appfarm Developer Forum
      • Session 1: Data Modeling in Appfarm Create
      • Session 2: App Data in Appfarm Create
      • Session 3: Services in Appfarm Create
      • Session 4: Optimizing Performance
    • Background
      • Databases
        • Data modeling 101
        • Database normalization
  • Library
    • UI components
      • Advanced bar chart
      • Advanced bubble chart
      • Advanced combined chart
      • Advanced gantt chart
      • Advanced heatmap chart
      • Advanced line/area chart
      • Advanced pie chart
      • Advanced scatter plot chart
      • Advanced solid gauge chart
      • Animated component
      • Avatar
      • Avatar group
      • Basic bar chart
      • Basic gauge chart
      • Basic line chart
      • Basic pie chart
      • Bottom navigation
      • Button
      • Checkbox
      • Chip group
      • Circular progress
      • Coded component
      • Container
      • Date & time picker
      • Drawable canvas
      • Floating action button
      • Icon
      • Icon button
      • Iframe
      • Image
      • Linear progress
      • List
      • Map
      • Menu list
      • Multi select
      • PDF reader
      • Popover
      • Radio buttons
      • Rich text editor
      • Rich text
      • Select
      • Slider
      • Speed dial
      • Switch
      • Table
      • Tabs
      • Text
      • Text edit
      • View container
      • Visibility group
    • Action nodes
      • Aggregate data
      • Advanced search
      • Auth operations
      • Block
      • Catch exception
      • Copy to clipboard
      • Create file archive
      • Create file object
      • Create object
      • Create user account
      • Delete objects
      • Delete user account
      • Duplicate objects
      • End execution
      • Exit block
      • Exit loop
      • Export data
      • Foreach
      • Generate document
      • If
      • Import data
      • Invalidate cache
      • Log in
      • Log to console
      • Log out
      • Next iteration
      • Navigate
      • Open/close popover
      • Open confirm dialog
      • Open print dialog
      • Open snackbar
      • Open Unsplash dialog
      • Open URL
      • Persist objects
      • Push notifications
      • Read objects
      • Request permissions
      • Run code
      • Run other action
      • Run service
      • Scan barcode/QR code
      • Send email
      • Send SMS
      • Set client language
      • Set data source attributes
      • Set selection
      • Set theme
      • Set user account image
      • Show install app prompt
      • Sleep
      • Sort objects
      • Throw exception
      • Toggle drawer
      • Update object
      • Update secret
      • Update user account
      • Web request
      • While
  • Reference
    • Appfarm Create
      • Appfarm Commander
      • Blue dots
      • Copy & Paste
      • Farmer's Market
      • Find references
      • Find usage
      • Keyboard shortcuts
      • Undo/Redo
      • User preferences
    • Platform concepts
      • Conditions
      • Data bindings
      • Date and time
      • Event handlers
      • Filters
      • Functions
      • Markdown
      • Objects
      • Operators
      • Value processor
    • Dashboard
    • Apps
      • UI
        • Views
          • Dialog
          • Drawer
        • Layout designer
        • Component properties
        • Shareable UI components
      • Data
        • App variables
        • Data sources
        • Calendar data sources
      • Actions
      • App settings
      • App size
      • App health
    • Services
      • Service Endpoints
      • Service settings
      • Service health
      • API explorer
    • Data model
      • Object classes
      • Object class properties
      • Enumerated types
      • GraphQL
        • Queries
        • Mutations
      • Data Extract API
      • Time series data
    • Operations
      • Deploy
      • Schedules
      • Logs
    • Resources
      • Themes
      • Files
      • Fonts
      • Internationalization
    • Configuration
      • Environments
      • Login
        • Custom auth providers
    • Security
      • Users
      • Service accounts
      • Roles
      • Secrets
      • Permissions
        • Conditional Permissions
    • Appfarm Client
      • Developer tools for Apps
      • Developer tools for Services
      • Warnings and errors
  • How to
    • Data modeling
      • Many-to-many relationships
      • Use naming conventions
      • Offline data handling
      • Data silos and White labelling
    • User interface
      • Manage a many-to-many relationship with a Chip group
      • Configure drag and drop
      • Build a drag-and-drop calendar
      • Design a responsive layout
      • Work with flexbox
      • Use Mapbox as a map layer
      • Understand charts
    • Logic and flow
      • Event Log Design
      • Configure advanced search
    • Themes and styling
      • Change the active theme
      • Add custom email templates
    • Enhance your app
      • Add deep links
      • Add keyboard shortcuts
      • Add link previews for social media
      • Apply SEO best practices
      • Change the active language
      • Generate a PDF from a Container
    • Integrations
      • Integrate with external systems
      • Integrate with OpenAI
      • Integrate with Google Analytics (GA4)
      • Configure a custom email account
      • Integrate with a payment provider
      • Integrate with Signicat
      • Integrate directly with an external database
      • Retrieve a Bearer token from Google Cloud
      • Fetch data from BigQuery
      • Retrieve access token from Microsoft Entra ID
    • Workflow automation
      • Update an OAuth 2.0 access token from a service
    • Authentication and access control
      • Add users and assign roles
      • Configure unauthenticated access
      • Implement third-party authentication
    • Security, testing and deployment
      • Add a custom domain
      • Install an app on a device
      • Get ready for Production
      • Optimize performance
      • Security checklist
      • Test and debug
    • Example apps
      • Create an Instagram clone
        • The end result
        • Designing the feed
        • Create new post
        • Add a like-button
        • Add comment-functionality
  • Solution administration
    • Subscription and billing
    • Dedicated tier benefits
    • Guide to GDPR
      • Key principles
      • How Appfarm protects personal data
      • How you can protect your clients’ data
      • Glossary
    • Appfarm and the EU AI Act
  • Policies
    • Appfarm Policies
    • Data Processors
    • Privacy Policy
Powered by GitBook
On this page
  • Object in context
  • Object selection

Was this helpful?

Export as PDF
  1. Reference
  2. Platform concepts

Objects

PreviousMarkdownNextOperators

Last updated 1 year ago

Was this helpful?

When you use an app or service, data is stored and manipulated using objects. An object is an instance of an , containing data that adheres to a defined structure. An object typically represents a single real world object like a customer, order, or order line. If you're familiar with databases, an object can be thought of as a row in a database table.

Objects are accessed via and , , , and using dedicated action nodes. The individual values stored in objects are accessed and updated by binding them to properties in action nodes and UI components.

When developing there are cases where you need to be able to identify a single object, or a selection of objects, within a data source. To achieve that there are two concepts which are used individually and together: and . These two concepts enable you to explicitly state which object(s) to reference to when switching between UI and logic.

Example: Navigating from a list to details view

You have a view in your user interface with a List component bound to a data source called Events. To display the events, the list iterates through each object in the data source and can then for example display the name of that event. You'd like to be able to click on an item in the list and navigate to a new view displaying the details of that event. To do this, you'll need to use both the object in context and a selected object.

In an action connected to the On Item Click event handler of the list, you need to add a with the Selection Type property set to Object in context. When the action is triggered by clicking on a list item, it's in the context of that single item, and the action automatically knows which object was clicked on – this is the object in context. The Set selection action node then sets the Is Selected property of that object to true.

Next, you can add a to show the details view.

The details view can be configured with Text components that are bound to properties in the events data source. If a single object is selected when the view is loaded, that data in that object will be shown in the view

Example: When object in context and object selection clash

You have a List component bound to a data source called Projects. For each item, you have a Copy project button that triggers an action to create a new project and set it as selected.

Clicking Copy project on Project 1 will create Project 2 in the same data source. There is one object in context (Project 1) and one selected object (Project 2)

If you then try to create a Task object with Task.Project set to Projects (context/selected) the object in context, Project 1, will be assigned.

To have Project 2 assigned, you could use a and add the Projects data source as a function parameter with Selection set to Selected object(s).

Good to know

  • If object in context and object selection ever , the object in context will be used.

  • If you add an enum data source, object in context and object selection will also apply to those enums.

Object in context

The object in context is the current object being processed in an iteration. This allows you to loop through a many-cardinality data source and reference the properties as though it contained a single object to display or modify the data inside. The following elements run iterations and produce an object in context.

  • List and Table components These components have built-in iterators that loop through the data source they are bound to. The object in each list item or table row is the object in context.

  • Iterating containers in the UI A container can be configured to iterate over a multi-cardinality data source. The contents of the container will be repeated for each object in the data source (subject to any filters). The object in each iteration is the object in context. For example, you have an iterating container bound to a data source called Events, and a child Text component bound to Events.Title to list the name of every event.

  • Foreach action node When the foreach loops through the objects in a data source, the action nodes placed inside the foreach will be run for each object, with each object taking a turn being the object in context. For example, you have a foreach iterating over a data source called Event Attendees and inside the foreach a Send email action node with the recipient bound to the Event Attendees.Email property, to send a ticket by email to each attendee.

Object selection

An object in a many-cardinality data source can be selected. All objects in many-cardinality data sources have the built-in property Is Selected to track this flag. Any number of objects in a data source can be selected at the same time.

Object selection can be used to create a dynamic subset of objects in a data source or to select a single object. For example, you have a data source called Events and you create a view with Text components bound to the properties Events.Title and Events.Date. If you select a single object before navigating to the view, that object (event) will be used to populate the Text components.

This property, and its opposite Is Not Selected, can be referenced in a number of situations:

Using the to select, unselect, or toggle the selection of one or more objects.

By choosing Selected object(s) as a value for the Selection property in the , , and action nodes, among others.

Using the Select, , List, or Table components to select one or more objects in and app.

When constructing and , and in .

Data sources with selected objects are highlighted in the of the developer tools with a green tag. When a data source is selected, the number of selected objects is displayed above the table of objects and each selected object is marked with a check in the first column.

Set selection action node
Read
Update
Delete
Multi Select
conditions
filters
functions
object class
data sources
created
read
updated
deleted
Set selection action node
Navigate action node
function
Object in context
Object selection
come into conflict
App data panel