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

Sarika S Nair1
Kilo Sage

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

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

Sarika S Nair1
Kilo Sage

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);
}
        }
    }

 

 

Hi @Sai18 , 

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

Thanks

Thank you, its working fine now