Skip to content

Redirect Handling in a Dynamic Form Component #832

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

Open
amrutadotorg opened this issue Feb 27, 2025 · 4 comments
Open

Redirect Handling in a Dynamic Form Component #832

amrutadotorg opened this issue Feb 27, 2025 · 4 comments
Labels
bug Something isn't working

Comments

@amrutadotorg
Copy link
Contributor

Screen.Recording.2025-02-27.at.10.31.59.mov

Hi, I would like to know if my redirect implementation in the form component with dynamic options is correct. In the attached video, you can see that when I abort the form submission, I get redirected to handle_redirect.sql. Is this expected behavior, or could this be a bug?

thank you

see live https://coolbreeze.org/

select 'form' as component,
    TRUE as auto_submit;
    'handle_redirect.sql' as action;  -- This is where the form submits

select 
    'selected_country' as name,
    'select' as type,
    (
        SELECT COALESCE(
            (SELECT translation_value FROM language 
             WHERE language_code = $lang 
             AND translation_key = 'country.form_label'),
            (SELECT translation_value FROM language 
             WHERE language_code = 'en' 
             AND translation_key = 'country.form_label')
        )
    ) as label,
    'options_source.sql' as options_source,
    TRUE as searchable;


-- handle_redirect.sql
select 'redirect' as component,
    -- Use the selected URL from the form submission
    COALESCE(:selected_country, 'index.sql') as link;

-- options_source.sql
select 'json' as component;
set sahaj_links = sqlpage.fetch('https://amrutasahajmaterials.amruta.org/map_json/sahaj_links.json');
select 
    json_extract(value, '$.url') as value,
    CASE
        WHEN json_extract(value, '$.native_country_name') = json_extract(value, '$.country_name')
        THEN json_extract(value, '$.country_name') || ' ⤿ ' || json_extract(value, '$.clean_url')
        ELSE json_extract(value, '$.native_country_name') || ' (' || json_extract(value, '$.country_name') || ')' || ' ⤿ ' || json_extract(value, '$.clean_url')
    END as label
from json_each($sahaj_links->'links')
where lower(json_extract(value, '$.country_name')) like '%' || lower($search) || '%'
   or lower(json_extract(value, '$.native_country_name')) like '%' || lower($search) || '%';
@amrutadotorg amrutadotorg added the bug Something isn't working label Feb 27, 2025
@lovasoa
Copy link
Collaborator

lovasoa commented Feb 27, 2025

Hello ! I think your implementation is fine. When you manually abort the loading just at the right time, then you end up on the intermediate handle_redirect page, but I don't think this is an issue for your users, is it ?

@lovasoa lovasoa closed this as completed Feb 27, 2025
@amrutadotorg
Copy link
Contributor Author

It’s hard to say how many users will not click the link. The timing does not matter; the redirection to handle_redirect.sql happens whenever a user does not select an option from the dropdown menu. I think in such a case, COALESCE(:selected_country, 'index.sql') should be triggered to index,sql, but it isn’t.

@lovasoa
Copy link
Collaborator

lovasoa commented Feb 27, 2025

Oh, I see, sorry ! Indeed, the change is triggered even when the value did not actually change.

@lovasoa lovasoa reopened this Feb 27, 2025
@lovasoa
Copy link
Collaborator

lovasoa commented Feb 27, 2025

In the meantime, you can redirect back to the home page from handle_redirect.sql when no value was submitted.

select 'redirect' as component, '/' as link where COALESCE(:selected_country, '') = '';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants