Bom dia, existe alguma maneira de duplicar uma linha da tabela pai x filho? No caso, o usuario vai ter uma linha com vários dados preenchidos e precisa duplicar a linha mantendo esses dados, pois ele vai alterar apenas alguns campos. Tem como fazer isso?
Eu tinha feito uma funçãozinha no JQuery pra isso e estava funcionando certinho.
Mas agora o fluig começou a adicionar novas linhas da tabela pai x filho com um _ na frente do nome do campo, isso quebra a lógica da função.
A função que eu uso pra duplicar é esta, e só não está funcionando direito por causa desse _ na frente do nome do campo.
$(document).ready(function(){
$("#tableRequisicao").on("click", ".duplicar", function(){
console.log("clicou no duplicar");
// adiciona uma nova linhha na tabela pai x filho e guarda o próximo índice
var proximoIndice = wdkAddChild('tableRequisicao');
var contador = 0;
// cria o array com os dados temporários durante a clonagem da linha
var campos = new Array(5);
var objeto = new Array();
var camposNaoCopiarValor = [ "compValorUnitario", "compValorUnitarioRaw", "compIpi", "compValorIpi", "compValorIpiRaw", "compValorTotal", "compValorTotalRaw", "compFornecedor", "compCodFornecedor", "compDtEntrega"];
console.log("CAMPOS QUE NAO SERAO COPIADOS" + camposNaoCopiarValor);
// percorre a linha inteira e faz a coleta dos dados dos inputs e selects
$(this).closest("tr").find("td input:text,td select").each(function() {
console.log("CAMPO ENCONTRADO ====> " + $(this).attr("id"));
campos[contador] = new Array();
campos[contador]['idOriginal'] = $(this).attr("id");
campos[contador]['valorOriginal'] = this.value;
campos[contador]['tipo'] = $(this).attr("type");
var nomeCampoCru = campos[contador]['idOriginal'].substring(0, campos[contador]['idOriginal'].indexOf('_'));
console.warn("NOME original CAMPO TESTES ----> " + nomeCampoCru + "\r\n");
var nomeNovoCampo = nomeCampoCru + '___' + proximoIndice;
console.error("NOVO INDICE ==========> " + proximoIndice + "\r\n");
console.warn("NOME original CAMPO TESTES ----> " + nomeNovoCampo + "\r\n");
// verifica se o campo está na lista de campos a serem copiados o valor
if( jQuery.inArray( nomeCampoCru, camposNaoCopiarValor ) !== -1 ){
// se o tipo de campo for numerico, preenche com zero
if ( campos[contador]['tipo'] == "number" ){
campos[contador]['novoValor'] = 0;
}else{
campos[contador]['novoValor'] = "";
}
}else{
campos[contador]['novoValor'] = campos[contador]['valorOriginal'];
}
campos[contador]['novoCampo'] = nomeNovoCampo;
console.log("NOVO CAMPO => " + campos[contador]['novoCampo'] + " NOVO VALOR ==> " + campos[contador]['novoValor']);
$("#" + campos[contador]['novoCampo']).val(campos[contador]['novoValor']);
if ( contador == 0 ){
var btnConfirma = '<span><img src="img/icons/approved.png" class="confirmaEdicao" height="25" width="25" title="Confirmar edição de linha duplicada"></span>';
$("#" + campos[contador]['novoCampo']).closest("tr").addClass("bg-warning");
$("#" + campos[contador]['novoCampo']).closest("tr").find(".acoes").append(btnConfirma);
$("#" + campos[contador]['novoCampo']).closest("tr").find(".tipoLinha").val("copia");
}
contador++;
});
console.log("==================== campos tratados ====================");
console.log(campos);
console.log("==================== /campos tratados ====================");
contador = 0;
});
$("#tableRequisicao").on("click", ".confirmaEdicao", function(){
$(this).closest("tr").removeClass("bg-warning");
$(this).closest("tr").removeClass("bg-success");
$(this).closest("tr").addClass("bg-success");
$(this).hide();
});
});