Skip to content

Instantly share code, notes, and snippets.

@leo-bianchi
Created November 28, 2019 20:16
Show Gist options
  • Save leo-bianchi/7b20bc6a2013b02cc918d016ce5c2e4f to your computer and use it in GitHub Desktop.
Save leo-bianchi/7b20bc6a2013b02cc918d016ce5c2e4f to your computer and use it in GitHub Desktop.
Servicenow catalog item onChange client script to verify duplicates inside multi-row variable set
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '' || newValue == 'false') {
return;
}
var multiRowSysId = 'sys_id';
var checkBoxField = 'os_horarios_forao_totalmente_preenchidos';
// Mensagem de erro
var msg = 'Há mais de uma ocorrência para um mesmo dia, por favor, edite ou remova o registro.';
// Valores do multi-row
var multiRow = g_form.getValue(multiRowSysId);
if(multiRow) {
// multiRow: string -> multiRowObject: object
var multiRowObject = JSON.parse(multiRow);
// Array com os dias da semana
var days = multiRowObject.map(function(multiRowObject) {
return multiRowObject.dia_semana;
});
/**
* @param {Array} x - Dias da semana
* @returns {boolean} Retorna true se o tamanho do set for do mesmo tamanho do array informado
*/
var hasDuplicate = function(x) {
// Set (Array sem duplicatas)
return new Set(x).size !== x.length;
};
if(hasDuplicate(days)) {
g_form.setValue(checkBoxField, false);
g_form.addErrorMessage(msg);
g_form.showFieldMsg(checkBoxField, msg, 'error');
}
}
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment