Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Designer] Update data binding #8940

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

[Designer] Update data binding #8940

wants to merge 3 commits into from

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