Skip to content

Conversation

anna-dingler
Copy link
Contributor

@anna-dingler anna-dingler commented Jun 21, 2024

Related Issue

Fixes #8013

Description

When generating the templating variable from the Bind... button in the designer, we have an edge case for data variables that contain special characters. In this scenario, we typically want to use index syntax and wrap the var in braces.

However, this does not work for arrays. For arrays, we index into the first element by appending [0] to the name. This forces the index syntax incorrectly because the name now includes special characters.

I updated the logic to remove [0] from the end of array type names before checking for special characters.

Sample Card

{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.5",
    "body": [
        {
            "type": "TextBlock",
            "wrap": true,
            // Add text property manually in the designer and Bind to `name`
        }
    ],
    "data": {
        "employees": [
            {
                "name": "Gabriela Leticia"
            },
            {
                "name": "Natalia Tercera"
            },
            {
                "name": "Waleska Cristobal"
            }
        ]
    }
}

How Verified

Verified on the CI site.

@jwoo-msft
Copy link
Member

Hi Anna,
This looks odd:

['employees[0]']

I don't think this is valid syntax to access into an array.

@anna-dingler
Copy link
Contributor Author

anna-dingler commented Jun 26, 2024

Hi Anna, This looks odd:

['employees[0]']

I don't think this is valid syntax to access into an array.

Hey @jwoo-msft! That sample is confusing - sorry! That is the previous behavior that the PR fixes. If you try to use the Bind... feature right now, that is the result. The issue occurs because we use the indexer syntax (wrap in []) if the json key contains special characters. However, for arrays, we asses the key after we add [0] and it is incorrectly wrapped.

If you want to see the new behavior, I can kick off another ci build for this branch.

@jwoo-msft
Copy link
Member

Hi @anna-dingler ,

[$root.employees[0]] works, but 'employee[0]' is just a string in AEL expression.

let modifiedName = qualifiedName;

// If we include `[0]` in the qualified name while determining if we should use indexer syntax,
// We could incorrectly wrap the name in []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you add example string?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Designer] Data binding button produces invalid binding for arrays

2 participants