bpms-reused-codes
Version:
Projeto com diversas funcoes em jquery e javascript genericas e reaproveitaveis para desenvolvimento de novos projetos no Orquestra BPM V3 e Zeev.
918 lines (747 loc) • 34 kB
JavaScript
window.addEventListener("load", function () {
//Utilizado para pegar o apelido da tarefa atual.
var task = document.getElementById('inpDsFlowElementAlias').value;
sml_RulesOfPageLoadByTask(task);
});
/*
* Desenvolvedor: Igor Becker
Realiza as Regras da P�gina apos carregamento do formulario
@PARAM: @task = Apelido da tarefa.
Ex de chamada: sml_RulesOfPageLoadByTask(document.getElementById('inpDsFlowElementAlias').value);
*/
function sml_RulesOfPageLoadByTask(task) {
var tablesToHide;
var fieldsToHide;
switch (task.toUpperCase()) {
case "START":
tablesToHide = `tblColaboradores,
Endere�o`;
fieldsToHide = `comprovanteDeResidencia`;
sml_HideTables(tablesToHide);
sml_Hide(fieldsToHide);
break;
default:
break;
}
}
/*
* Desenvolvedor: Igor Becker
Esconde uma tabela/agrupamento inteiro, desobriga seus campos e limpa o valor se necess�rio.
Guarda se os campos da tabela s�o obrigat�rios em um novo atributo "data-isrequired";
@PARAM: @ids = identificador da tabela/tabelas.
@PARAM: @clean = true/false.
Ex de chamada: sml_HideTables('tblRepresentante,Dados da Solicitacao', false);
*/
function sml_HideTables(tableIds, clean) {
clean = clean || false;
function hideTablesProcess(id, clean) {
var i = 0;
var tbl = document.getElementById(id);
if (tbl) {
tbl.style.display = "none";
if (clean) {
if (tbl.getAttribute("mult") == "S") {
//Apaga as linhas da tabela exceto a primeira.
Array.from(tbl.tBodies[0].rows).forEach(row => {
if (i > 1)
DeleteRow(row.querySelector('button'));
i++;
});
}
//Apaga os valores dos campos dentro da tabela.
Array.from(tbl.tBodies[0].rows).forEach(row => {
var inputs = row.querySelectorAll('input');
var selects = row.querySelectorAll('select');
var textareas = row.querySelectorAll('textarea');
//Apaga os valores dos inputs
if (inputs.length > 0) {
Array.from(inputs).forEach(obj => {
var type = obj.getAttribute("type");
var xtype = obj.getAttribute("xtype");
//Se o elemento for diferente de bot�o ou hidden
if (type && type.toUpperCase() != "BUTTON" && type.toUpperCase() != "HIDDEN") {
if (type.toUpperCase() == "TEXT")
obj.value = '';
if (type.toUpperCase() == "RADIO" || type.toUpperCase() == "CHECKBOX")
obj.checked = false;
if (xtype && xtype.toUpperCase() == "FILE") {
var btnDelFile = row.querySelector(".btn-danger");
var id = obj.getAttribute("xname").replace('inp', '');
if (btnDelFile)
delFileFormField(id, btnDelFile);
}
}
});
}
//Faz as regras para os selects
if (selects.length > 0) {
Array.from(selects).forEach(obj => {
obj.value = '';
});
}
//Faz as regras para os textareas
if (textareas.length > 0) {
Array.from(textareas).forEach(obj => {
obj.value = '';
});
}
});
}
//Remove obrigatoriedade dos campos
Array.from(tbl.tBodies[0].rows).forEach(row => {
var inputs = row.querySelectorAll('input');
var selects = row.querySelectorAll('select');
var textareas = row.querySelectorAll('textarea');
var isrequired = '';
//Faz as regras para os inputs
if (inputs.length > 0) {
Array.from(inputs).forEach(obj => {
var type = obj.getAttribute("type");
isrequired =
(
(obj.getAttribute("data-isrequired") != null && obj.getAttribute("data-isrequired") == "true") ||
(obj.getAttribute("required") != null && obj.getAttribute("required") == "S")
) ? true : false;
//Se o elemento for diferente de bot�o ou hidden
if (type && type.toUpperCase() != "BUTTON" && type.toUpperCase() != "HIDDEN") {
obj.setAttribute("data-isrequired", isrequired);
obj.setAttribute("required", "N");
}
});
}
//Faz as regras para os selects
if (selects.length > 0) {
Array.from(selects).forEach(obj => {
isrequired =
(
(obj.getAttribute("data-isrequired") != null && obj.getAttribute("data-isrequired") == "true") ||
(obj.getAttribute("required") != null && obj.getAttribute("required") == "S")
) ? true : false;
obj.setAttribute("data-isrequired", isrequired);
obj.setAttribute("required", "N");
});
}
//Faz as regras para os textareas
if (textareas.length > 0) {
Array.from(textareas).forEach(obj => {
isrequired =
(
(obj.getAttribute("data-isrequired") != null && obj.getAttribute("data-isrequired") == "true") ||
(obj.getAttribute("required") != null && obj.getAttribute("required") == "S")
) ? true : false;
obj.setAttribute("data-isrequired", isrequired);
obj.setAttribute("required", "N");
});
}
//Faz as regras para as linhas
if (row.getAttribute("class") != "group" && tbl.getAttribute("mult") != "S")
row.setAttribute("class", "nObrigatorio");
});
}
}
if (tableIds != "") {
if (tableIds.indexOf(',') >= 0) {
var arrayIds = tableIds.split(',');
Array.from(arrayIds).forEach(id => {
hideTablesProcess(id.trim(), clean);
});
} else {
hideTablesProcess(tableIds.trim(), clean);
}
}
}
/*
* Desenvolvedor: Igor Becker
Mostra uma tabela/agrupamento inteiro e obriga seus campos se eles forem obrigat�rios.
Resgata se os campos da tabela s�o obrigat�rios em um novo atributo "data-isrequired";
@PARAM: @ids = identificador da tabela/tabelas.
@PARAM: @clean = true/false.
Ex de chamada: sml_ShowTables('tblRepresentante,Dados da Solicitacao');
*/
function sml_ShowTables(tableIds) {
function showTablesProcess(id) {
var i = 0;
var tbl = document.getElementById(id);
if (tbl) {
tbl.style.display = "";
//Faz as regras de obrigatoriedade para cada campo da tabela
Array.from(tbl.tBodies[0].rows).forEach(row => {
var inputs = row.querySelectorAll('input');
var selects = row.querySelectorAll('select');
var textareas = row.querySelectorAll('textarea');
var wasrequired = '';
//Faz as regras para os inputs
if (inputs.length > 0) {
Array.from(inputs).forEach(obj => {
var type = obj.getAttribute("type");
wasrequired = obj.getAttribute("data-isrequired");
//Se o elemento for diferente de bot�o ou hidden
if (type && type.toUpperCase() != "BUTTON" && type.toUpperCase() != "HIDDEN") {
if (wasrequired != null && wasrequired == "true")
obj.setAttribute("required", "S");
}
});
}
//Faz as regras para os selects
if (selects.length > 0) {
Array.from(selects).forEach(obj => {
wasrequired = obj.getAttribute("data-isrequired");
if (wasrequired != null && wasrequired == "true")
obj.setAttribute("required", "S");
});
}
//Faz as regras para os selects
if (textareas.length > 0) {
Array.from(textareas).forEach(obj => {
wasrequired = obj.getAttribute("data-isrequired");
if (wasrequired != null && wasrequired == "true")
obj.setAttribute("required", "S");
});
}
//Adiciona a classe obrigatorio na linha caso necessario
if (row.getAttribute("class") != "group" && tbl.getAttribute("mult") != "S" && wasrequired == "true")
row.setAttribute("class", "Obrigatorio");
});
}
}
if (tableIds != "") {
if (tableIds.indexOf(',') >= 0) {
var arrayIds = tableIds.split(',');
Array.from(arrayIds).forEach(id => {
showTablesProcess(id.trim());
});
} else {
showTablesProcess(tableIds.trim());
}
}
}
/*
* Desenvolvedor: Igor Becker
Fun��o respons�vel por esconder e desobrigar um campo.
Guarda se o campo � obrigat�rio em um atributo novo "xrequired".
@PARAM: @fieldID = identificador do campo/campos.
Ex de chamada: sml_Hide('nome,cpf');
*/
function sml_Hide(fieldID) {
if (fieldID != "" && fieldID != null && fieldID != undefined) {
var field;
var radioOrCheckFields;
var fieldType;
var fieldXType;
var tr;
var isrequired;
//Verifica se existe mais de 1 id
if (fieldID.indexOf(",") >= 0) {
var Ids = fieldID.replace(' ', '');
var arrayIds = Ids.split(',');
Array.from(arrayIds).forEach(id => {
field = document.querySelector('[xname="inp' + id.trim() + '"]');
fieldType = field.getAttribute("type") != null ? field.getAttribute("type") : field.type;
fieldXType = field.getAttribute("xtype");
tr = sml_Closest(field, "tr");
isrequired =
(
(field.getAttribute("data-isrequired") != null && field.getAttribute("data-isrequired") == "true") ||
(field.getAttribute("required") != null && field.getAttribute("required") == "S")
) ? true : false;
//Guarda a obrigatoriedade no novo atributo.
if (field.getAttribute('data-isrequired') == undefined)
field.setAttribute('data-isrequired', isrequired);
if (fieldType != "hidden")
field.setAttribute('required', 'N');
//Se o elemento for diferente de bot�o ou hidden
if (fieldType && fieldType.toUpperCase() != "BUTTON" && fieldType.toUpperCase() != "HIDDEN") {
if (fieldType.toUpperCase() == "TEXT")
field.value = '';
if (fieldType.toUpperCase() == "SELECT")
field.value = '';
if (fieldType.toUpperCase() == "RADIO" || fieldType.toUpperCase() == "CHECKBOX") {
radioOrCheckFields = document.querySelectorAll('[xname="inp' + id.trim() + '"]');
Array.from(radioOrCheckFields).forEach(f => {
f.checked = false;
});
}
if (fieldType.toUpperCase() == "TEXTAREA")
field.value = '';
if (fieldXType && fieldXType.toUpperCase() == "FILE") {
var btnDelFile = tr.querySelector(".btn-danger");
if (btnDelFile)
delFileFormField(id, btnDelFile);
}
}
if (tr && fieldType != "hidden")
tr.style.display = "none";
if (tr && tr.getAttribute('class') != "group" && fieldType != "hidden")
tr.setAttribute('class', 'NObrigatorio');
});
} else {
field = document.querySelector('[xname="inp' + fieldID + '"]');
fieldType = field.getAttribute("type") != null ? field.getAttribute("type") : field.type;
fieldXType = field.getAttribute("xtype");
tr = sml_Closest(field, "tr");
isrequired =
(
(field.getAttribute("data-isrequired") != null && field.getAttribute("data-isrequired") == "true") ||
(field.getAttribute("required") != null && field.getAttribute("required") == "S")
) ? true : false;
//Guarda a obrigatoriedade no novo atributo.
if (field.getAttribute('data-isrequired') == undefined)
field.setAttribute('data-isrequired', isrequired);
//Remove a obrigatoriedade do campo
if (fieldType != "hidden")
field.setAttribute('required', 'N');
//Se o elemento for diferente de bot�o ou hidden
if (fieldType && fieldType.toUpperCase() != "BUTTON" && fieldType.toUpperCase() != "HIDDEN") {
if (fieldType.toUpperCase() == "TEXT")
field.value = '';
if (fieldType.toUpperCase() == "SELECT" || fieldType.toUpperCase() == "SELECT-ONE")
field.value = '';
if (fieldType.toUpperCase() == "RADIO" || fieldType.toUpperCase() == "CHECKBOX") {
radioOrCheckFields = document.querySelectorAll('[xname="inp' + id.trim() + '"]');
Array.from(radioOrCheckFields).forEach(f => {
f.checked = false;
});
}
if (fieldType.toUpperCase() == "TEXTAREA")
field.value = '';
if (fieldXType && fieldXType.toUpperCase() == "FILE") {
var btnDelFile = tr.querySelector(".btn-danger");
if (btnDelFile)
delFileFormField(fieldID, btnDelFile);
}
}
if (tr && fieldType != "hidden")
tr.style.display = "none";
if (tr && tr.getAttribute('class') != "group" && fieldType != "hidden")
tr.setAttribute('class', 'NObrigatorio');
}
}
}
/*
* Desenvolvedor: Igor Becker
Fun��o respons�vel por mostrar e obrigar o campo se ele for obrigat�rio.
Resgata se o campo � obrigat�rio atraves do atributo novo "xrequired".
@PARAM: @fieldID = identificador do campo/campos.
Ex de chamada: sml_Show('nome,cpf');
*/
function sml_Show(fieldID) {
if (fieldID != "" && fieldID != null && fieldID != undefined) {
var field;
var fieldType;
var tr;
var isrequired;
//Verifica se existe mais de 1 id
if (fieldID.indexOf(",") >= 0) {
var Ids = fieldID.replace(' ', '');
var arrayIds = Ids.split(',');
Array.from(arrayIds).forEach(id => {
field = document.querySelector('[xname="inp' + id.trim() + '"]');
fieldType = field.getAttribute("type") != null ? field.getAttribute("type") : field.type;
tr = sml_Closest(field, "tr");
isrequired = field.getAttribute("data-isrequired");
if (isrequired == "true" && fieldType.toUpperCase() != "HIDDEN")
field.setAttribute('required', 'S');
if(tr)
tr.style.display = "";
if (tr) {
if (isrequired == "true" && tr.getAttribute('class') != "group")
tr.setAttribute('class', 'Obrigatorio');
}
});
} else {
field = document.querySelector('[xname="inp' + fieldID + '"]');
fieldType = field.getAttribute("type") != null ? field.getAttribute("type") : field.type;
tr = sml_Closest(field, "tr");
isrequired = field.getAttribute("data-isrequired");
//Remove a obrigatoriedade do campo
if (isrequired == "true" && fieldType.toUpperCase() != "HIDDEN")
field.setAttribute('required', 'S');
if (tr)
tr.style.display = "";
if (tr) {
if (isrequired == "true" && tr.getAttribute('class') != "group")
tr.setAttribute('class', 'Obrigatorio');
}
}
}
}
/*
* Desenvolvedor: Igor Becker
Fun��o para retornar o elemento mais proximo de um objeto.
@PARAM: @obj = objeto.
@PARAM: @el = elemento a retornar.
Ex de chamada: sml_Closest(this, "tr");
*/
function sml_Closest(obj, el) {
if (obj) {
if (obj.nodeName == el.toUpperCase())
return obj;
else
return sml_Closest(obj.parentElement, el);
} else {
return null;
}
}
/*
Faz o append da mensagem no parent do campo (Fun��o geralmente utilizada por fun��es que validam campos).
@PARAM: @Obj = OBJ DO CAMPO.
@PARAM: @message = MENSAGEM.
@PARAM: @idMessage = ID DA MENSAGEM.
@PARAM: @isValid = true/false.
Ex de chamada Cpf inv�lido: sml_appendMessageField(this, "CPF inv�lido!", "spanCpfMessage", false);
Ex de chamada Cpf v�lido: sml_appendMessageField(this, "", "spanCpfMessage", true);
*/
function sml_appendMessageField(Obj, message, idMessage, isValid) {
var objOldMsg = document.getElementById(idMessage);
var objNewMsg = document.createElement("span");
objNewMsg.setAttribute("id", idMessage);
//Verifica se existe mensagem de erro.
if (message && idMessage) {
objNewMsg.innerText = message;
objNewMsg.style.fontWeight = "bold";
objNewMsg.style.color = "red";
}
if (Obj.value == "") {
Obj.style.border = "";
if (objOldMsg)
objOldMsg.remove();
} else {
if (isValid) {
if (objOldMsg)
objOldMsg.remove();
Obj.style.border = "1px solid green";
} else {
if (objOldMsg)
objOldMsg.remove();
Obj.style.border = "1px solid red";
Obj.parentElement.appendChild(objNewMsg);
}
}
}
/*
Valida o CPF digitado utilizando a fun��o "sml_appendMessageField" para apresentar uma mensagem ao lado do campo se o CPF � v�lido ou n�o.
@PARAM: @Objcpf = OBJ DO CAMPO CPF.
Ex de chamada: onchange="sml_checkCPF(this);"
*/
function sml_checkCPF(Objcpf) {
var cpf = Objcpf.value;
cpf = cpf.replace(/[^\d]+/g, '');
if (cpf == '') {
sml_appendMessageField(Objcpf, "CPF inv�lido!", "spanCpfMessage", false);
Objcpf.value = '';
}
// Elimina CPFs invalidos conhecidos
if (cpf.length != 11 ||
cpf == "00000000000" ||
cpf == "11111111111" ||
cpf == "22222222222" ||
cpf == "33333333333" ||
cpf == "44444444444" ||
cpf == "55555555555" ||
cpf == "66666666666" ||
cpf == "77777777777" ||
cpf == "88888888888" ||
cpf == "99999999999") {
sml_appendMessageField(Objcpf, "CPF inv�lido!", "spanCpfMessage", false);
Objcpf.value = '';
} else {
// Valida 1o digito
add = 0;
for (i = 0; i < 9; i++) {
add += parseInt(cpf.charAt(i)) * (10 - i);
}
rev = 11 - (add % 11);
if (rev == 10 || rev == 11)
rev = 0;
if (rev != parseInt(cpf.charAt(9))) {
sml_appendMessageField(Objcpf, "CPF inv�lido!", "spanCpfMessage", false);
Objcpf.value = '';
} else {
// Valida 2o digito
add = 0;
for (i = 0; i < 10; i++) {
add += parseInt(cpf.charAt(i)) * (11 - i);
}
rev = 11 - (add % 11);
if (rev == 10 || rev == 11)
rev = 0;
if (rev != parseInt(cpf.charAt(10))) {
sml_appendMessageField(Objcpf, "CPF inv�lido!", "spanCpfMessage", false);
Objcpf.value = '';
} else {
sml_appendMessageField(Objcpf, "", "spanCpfMessage", true);
}
}
}
}
/*
Valida o CNPJ digitado utilizando a fun��o "sml_appendMessageField" para apresentar uma mensagem ao lado do campo se o CNPJ � v�lido ou n�o.
@PARAM: @Obj = OBJ DO CAMPO.
Ex de chamada: onchange="sml_checkCNPJ(this);"
*/
function sml_checkCNPJ(Obj) {
cnpj = Obj.value.replace(/\./gi, "").replace(/\//gi, "").replace(/-/gi, "");
console.log(cnpj);
if (!cnpj || cnpj.length != 14
|| cnpj == "00000000000000"
|| cnpj == "11111111111111"
|| cnpj == "22222222222222"
|| cnpj == "33333333333333"
|| cnpj == "44444444444444"
|| cnpj == "55555555555555"
|| cnpj == "66666666666666"
|| cnpj == "77777777777777"
|| cnpj == "88888888888888"
|| cnpj == "99999999999999") {
sml_appendMessageField(Obj, "CNPJ inv�lido!", "spanCnpjMessage", false);
Obj.value = '';
return false;
}
var tamanho = cnpj.length - 2;
var numeros = cnpj.substring(0, tamanho);
var digitos = cnpj.substring(tamanho);
var soma = 0;
var pos = tamanho - 7;
for (var i = tamanho; i >= 1; i--) {
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2)
pos = 9;
}
var resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(0)) {
sml_appendMessageField(Obj, "CNPJ inv�lido!", "spanCnpjMessage", false);
Obj.value = '';
return false;
}
tamanho = tamanho + 1;
numeros = cnpj.substring(0, tamanho);
soma = 0;
pos = tamanho - 7;
for (var i = tamanho; i >= 1; i--) {
soma += numeros.charAt(tamanho - i) * pos--;
if (pos < 2)
pos = 9;
}
resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
if (resultado != digitos.charAt(1)) {
sml_appendMessageField(Obj, "CNPJ inv�lido!", "spanCnpjMessage", false);
Obj.value = '';
return false;
} else {
sml_appendMessageField(Obj, "", "spanCnpjMessage", true);
return true;
}
}
/*
Formata a data recebida em dateString pt-BR.
@PARAM: @strDate = Data.
@PARAM: @str = Caracter separador da data, ex: "/" ou "-".
Ex de chamada: sml_makeDate('2020.12.05', '.');
Resultado: 05/12/2020
*/
function sml_makeDate(strDate, str) {
var pieces = strDate.split(str);
var newDate = pieces[2] + "/" + pieces[1] + "/" + pieces[0];
return newDate;
}
/*
Adiciona ou remove obrigatoriedade no campo.
@PARAM: @fieldId = Identificador.
@PARAM: @isRequired = true or false.
Ex de chamada para obrigar: sml_IsRequired('identificadorDoCampo', true);
Ex de chamada para desobrigar: sml_IsRequired('identificadorDoCampo', false);
*/
function sml_IsRequired(fieldId, isRequired) {
var obj = document.querySelector("[xname='inp" + fieldId + "']");
var tr = sml_Closest(obj, "tr");
if (isRequired) {
obj.setAttribute('required', 'S');
tr.setAttribute("class", "Obrigatorio");
} else {
obj.setAttribute('required', 'N');
tr.setAttribute("class", "nObrigatorio");
}
}
/*
Fun��o respons�vel por esconder/mostrar op��es de uma caixa de sele��o localizado ou n�o em uma tabela multi-valorada.
@PARAM: @selectId = Identificador da Caixa de sele��o.
@PARAM: @selectValues = Op��es da caixa de sele��o.
@PARAM: @op = opera��o. Valores: SHOW ou HIDE.
@PARAM: @hasMultiple = Se a caixa de sele��o estiver dentro de uma tabela multi-valorada. Valores do par�metro: true ou false.
@PARAM: @tableId = identificador da tabela multi-valorada.
Ex de chamada com tabela multi-valorada: sml_ShowOrHideSelectOptions("identificador", "Op��o 1, Op��o 2, Op��o 5", "HIDE", true, "tblAlteracoesNoDocumento");
Ex de chamada com tabela multi-valorada: sml_ShowOrHideSelectOptions("identificador", "Op��o 1, Op��o 2, Op��o 5", "SHOW", true, "tblAlteracoesNoDocumento");
Ex de chamada sem tabela multi-valorada: sml_ShowOrHideSelectOptions("identificador", "Op��o 1, Op��o 2, Op��o 5", "HIDE", false, "");
Ex de chamada sem tabela multi-valorada: sml_ShowOrHideSelectOptions("identificador", "Op��o 1, Op��o 2, Op��o 5", "SHOW", false, "");
*/
function sml_ShowOrHideSelectOptions(selectId, selectValues, op, hasMultiple, tableId) {
var tbl;
var select;
var arrayOptValues;
if (hasMultiple) {
tbl = document.getElementById(tableId);
Array.from(tbl.tBodies[0].rows).forEach(row => {
select = row.querySelector('[xname="inp' + selectId + '"]');
if (select && select.length > 0) {
//Loop para cada op��o do meu select.
Array.from(select).forEach(option => {
//Verifica se existe mais de uma op��o para ocultar ou mostrar.
if (selectValues.indexOf(",") >= 0) {
arrayOptValues = selectValues.split(",");
//Loop para cada op��o que desejo esconder.
Array.from(arrayOptValues).forEach(arrayOpt => {
if (arrayOpt.toUpperCase() == option.text.toUpperCase()) {
if (op.toUpperCase() == "HIDE") {
option.disabled = true;
option.style.display = 'none';
} else {
option.disabled = false;
option.style.display = 'block';
}
}
});
} else {
if (option.text.toUpperCase() == selectValues.toUpperCase()) {
if (op.toUpperCase() == "HIDE") {
option.disabled = true;
option.style.display = 'none';
} else {
option.disabled = false;
option.style.display = 'block';
}
}
}
});
}
});
} else {
select = document.querySelector('[xname="inp' + selectId + '"]');
if (select.length > 0) {
//Loop para cada op��o do meu select.
Array.from(select).forEach(option => {
//Verifica se existe mais de uma op��o para ocultar ou mostrar.
if (selectValues.indexOf(",") >= 0) {
arrayOptValues = selectValues.split(",");
//Loop para cada op��o que desejo esconder.
Array.from(arrayOptValues).forEach(arrayOpt => {
if (arrayOpt.toUpperCase() == option.text.toUpperCase()) {
if (op.toUpperCase() == "HIDE") {
option.disabled = true;
option.style.display = 'none';
} else {
option.disabled = false;
option.style.display = 'block';
}
}
});
} else {
if (option.text.toUpperCase() == selectValues.toUpperCase()) {
if (op.toUpperCase() == "HIDE") {
option.disabled = true;
option.style.display = 'none';
} else {
option.disabled = false;
option.style.display = 'block';
}
}
}
});
}
}
}
/*
Fun��o respons�vel por formatar o campo em telefone.
@PARAM: @obj = objeto.
Ex de chamada: onkeyup="sml_PhoneMask(this);"
Ex de chamada: onblur="sml_PhoneMask(this);"
Ex de chamada: onchange="sml_PhoneMask(this);"
*/
function sml_PhoneMask(obj) {
var phoneNumber = obj.value.replace(/[^\d]+/g, ''); //Somente Numeros.
var ddd;
var firstPhoneDigits;
var lastPhoneDigits;
if (phoneNumber != "" && phoneNumber != null && phoneNumber != undefined) {
//Celular
if (phoneNumber.length > 10) {
ddd = phoneNumber.substr(0, 2); //Pega os 2 primeiros d�gitos
firstPhoneDigits = phoneNumber.substr(2, 5); //Pega os 5 primeiros d�gitos ap�s o ddd
lastPhoneDigits = phoneNumber.substr(-4); //Pega os 4 �ltimos d�gitos
phoneNumber = `(${ddd}) ${firstPhoneDigits}-${lastPhoneDigits}`;
//Fixo
} else if (phoneNumber.length === 10) {
ddd = phoneNumber.substr(0, 2); //Pega os 2 primeiros d�gitos
firstPhoneDigits = phoneNumber.substr(2, 4); //Pega os 4 primeiros d�gitos ap�s o ddd
lastPhoneDigits = phoneNumber.substr(-4); //Pega os 4 �ltimos d�gitos
phoneNumber = `(${ddd}) ${firstPhoneDigits}-${lastPhoneDigits}`;
}
obj.value = phoneNumber;
}
}
/*
EXEMPLO DE FUN��O PARA CONTROLAR TABELA MULTI-VALORADA AO INSERIR OU REMOVER LINHAS
Ao adicionar/remover uma linha na tabela multi-valorada, adiciona fun��o de controle nos bot�es.
@PARAM: @tblId = Id tabela.
Ex de chamada: sml_addFunctionOnInsertAndDeleteTableValue($("table[id='tblRepresentantesLegais']"));
*/
function sml_addFunctionOnInsertAndDeleteTableValue(tblId) {
//n�mero de linhas permitidas
//EX: numberLinesAllowed = 0; = 1 linha permitida.
//EX: numberLinesAllowed = 1; = 2 linhas permitidas.
//EX: numberLinesAllowed = 2; = 3 linhas permitidas.
//EX: numberLinesAllowed = 3; = 4 linhas permitidas.
var numberLinesAllowed = 3;
var tbl = document.getElementById(tblId);
if (tbl && tbl.rows.length > 0) {
var btnInsertRow = tbl.querySelector('[id="BtnInsertNewRow"]');
btnInsertRow.addEventListener("click", function () {
sml_CheckTableLines(tbl);
sml_DeleteTableLine(tbl);
});
}
/*
Ap�s inserir a linha da tabela multi-valorada verifica a quantidade de linhas adicionadas e faz as regras.
@PARAM: @tbl = Objeto tabela.
*/
function sml_CheckTableLines(tbl) {
var btnInsertRow;
if (tbl && tbl.rows.length > 0) {
var tableLines = tbl.rows.length - 1;
btnInsertRow = tbl.querySelector('[id="BtnInsertNewRow"]');
if (tableLines > numberLinesAllowed)
btnInsertRow.style.display = "none";
else
btnInsertRow.style.display = "";
}
}
/*
Para cada bot�o de Excluir linha da tabela, adiciona a fun��o de verificar a quantidade de linhas para mostrar o bot�o de inserir linhas.
@PARAM: @tbl = Objeto tabela.
*/
function sml_DeleteTableLine(tbl) {
var btnDelete;
btnDelete = tbl.querySelectorAll('[id="btnDeletewRow"]');
if (btnDelete && btnDelete.length > 0) {
Array.from(btnDelete).forEach(button => {
button.addEventListener("click", function () {
sml_CheckTableLines(tbl);
});
});
}
}
}
/*
* Desenvolvedor: Igor Becker
Fun��o para realizar a cria��o de uma senha aleat�ria.
@PARAM: @obj = objeto que ficar� salvo o resultado.
Ex de chamada: sml_GeneratePassword(this);
*/
function sml_GeneratePassword(obj) {
var length = 12,
charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
retVal = "";
for (var i = 0, n = charset.length; i < length; ++i) {
retVal += charset.charAt(Math.floor(Math.random() * n));
}
obj.value = retVal;
}