Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

Need to push the unique value in client script

Sai18
Tera Expert

I have two fields (Both are list collectors)

Epic Account Type

Domain

 

Based on epic account type and domain we need to push the value to citrix icons

Sai18_0-1708629022268.png

 

I have used 2 client scripts upon onchange of Epic account type and Domain, If we choose multiple domains US & DEVAD. it is pushing both values so I am getting duplicates

Onchange of Epic Account Type

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading) {
        return;
    }
    var domain = g_form.getDisplayValue('domain').split(',');

    if (newValue == '' || domain == '') {
        g_form.clearValue('citrix_icons');
        return;
    }

    var data_map = {
        "US": {
            "Epic Hyperspace Admins": "TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive": "TS-Epic Hyperdrive",
            "Epic Text Access": "TS- Reflection ICON",
            "Epic Hyperspace TST Admins": ""
        },
        "DEVAD": {
            "Epic Hyperspace Admins": "TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive": "",
            "Epic Text Access": "TS- Reflection ICON",
            "Epic Hyperspace TST Admins": "TS- EPIC Hyperspace NonPRD"
        }

    };

    var out_value = [];
    var acc_type = g_form.getDisplayValue('epic_account_type').split(',');

    for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if (t_value) out_value.push(t_value);
        }
    }
    g_form.setValue('citrix_icons', out_value.join(', '));
    // if(out_value.length == 2) out_value.push('TS-Epic Hyperspace Admins');
   
    //g_form.setValue('citrix_icons', out_value.join(', '));

}
Onchange of Domain
 
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading) {
        return;
    }
    var acc_type = g_form.getDisplayValue('epic_account_type').split(',');


    if (newValue == '' || acc_type == '') {
        g_form.clearValue('citrix_icons');
        return;
    }

    var data_map = {
        "US": {
            "Epic Hyperspace Admins""TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive""TS-Epic Hyperdrive",
            "Epic Text Access""TS- Reflection ICON",
            "Epic Hyperspace TST Admins"""
        },
        "DEVAD": {
            "Epic Hyperspace Admins""TS- EPIC Hyperspace Admins",
            "Epic Hyperdrive""",
            "Epic Text Access""TS- Reflection ICON",
            "Epic Hyperspace TST Admins""TS- EPIC Hyperspace NonPRD"
        }

    };

    var out_value = [];
    var domain = g_form.getDisplayValue('domain').split(',');

    for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if (t_value) out_value.push(t_value);
        }
    }
    g_form.setValue('citrix_icons', out_value.join(', '));
    //if(out_value.length == 2) out_value.push(t_value);

    g_form.setValue('citrix_icons', out_value.join(', '));

}
I am getting output as like this
Sai18_1-1708629022285.png

 

 



I need to push the unique values no duplicates. Please provide your assistance

2 ACCEPTED SOLUTIONS

Not applicable

Hi @Sai18 

Make below changes in the for loop line in  script 

 

 

 for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if ((t_value)&&(out_value.indexOf(t_value)==-1)){
out_value.push(t_value);
}
        }
    }

 

 

View solution in original post

Not applicable

Hi @Sai18 , 

If my response resolved your issue, please mark it as helpful and accept the solution

Thanks

View solution in original post

3 REPLIES 3

Not applicable

Hi @Sai18 

Make below changes in the for loop line in  script 

 

 

 for (var i = 0; i < domain.length; i++) {
        for (var j = 0; j < acc_type.length; j++) {
            var t_value = data_map[domain[i].trim()][acc_type[j].trim()];
            if ((t_value)&&(out_value.indexOf(t_value)==-1)){
out_value.push(t_value);
}
        }
    }

 

 

Not applicable

Hi @Sai18 , 

If my response resolved your issue, please mark it as helpful and accept the solution

Thanks

Thank you, its working fine now