Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 91 additions & 10 deletions app/components/campo_autocomplete.php
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,12 @@
<?php if ($this->modo_form != "listagem")
{
?>
<div class="mb-3" id="div_adicionar_restantes_<?php print $vs_nome_campo_lookup ?>" style="margin-top:10px; display:none">
<div class="input-group mb-3">
<button class="btn btn-primary px-4" type="button" id="btn_adicionar_restantes_<?php print $vs_nome_campo_lookup ?>">Adicionar termos restantes</button>
</div>
</div>

<div class="mb-3" id="div_adicionar_todos_<?php print $vs_nome_campo_lookup ?>" style="margin-top:10px; display:none">
<div class="input-group mb-3">
<button class="btn btn-primary px-4" type="button" id="btn_adicionar_todos_<?php print $vs_nome_campo_lookup ?>">Adicionar todos</button>
Expand Down Expand Up @@ -694,6 +700,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
$("#<?php print $vs_nome_campo_lookup ?>").val('');
$("#div_sugestoes_<?php print $vs_nome_campo_lookup ?>").empty();
$("#lista_<?php print $vs_nome_campo_lookup ?>").focus();

}
else if (event.keyCode == 38)
{
Expand All @@ -709,14 +716,15 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps

$(document).on('keyup', "#<?php print $vs_nome_campo_lookup ?>", function(event)
{
if (event.key == "Escape")
console.log("teste")
if (event.key == "Escape")
{
// Se a tecla é ESC, apaga o conteúdo do campo

$("#<?php print $vs_nome_campo_lookup ?>").val('');
$("#div_sugestoes_<?php print $vs_nome_campo_lookup ?>").empty();
}
else if (event.keyCode == 40)
else if (event.keyCode == 40)
{
// Se a tecla é arrow down, seleciona move para o segundo item da lista de sugestão

Expand All @@ -726,13 +734,13 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
$("#lista_<?php print $vs_nome_campo_lookup ?>").focus();
}
}
else if (event.keyCode == 38)
else if (event.keyCode == 38)
{
// Se a tecla é arrow down, seleciona move para o segundo item da lista de sugestão
if ($("#lista_<?php print $vs_nome_campo_lookup ?>").prop('selectedIndex') == 0)
$("#<?php print $vs_nome_campo_lookup ?>").focus();
}
else if (event.key == "Enter")
else if (event.key == "Enter")
{
$("#lista_<?php print $vs_nome_campo_lookup ?>").trigger("click");
}
Expand All @@ -745,7 +753,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
timeout_campo_<?php print $vs_nome_campo_lookup ?> = setTimeout(function()
{
vb_valor_no_input = false;

<?php
if ($vb_valor_no_input)
{
Expand Down Expand Up @@ -786,7 +794,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps

foreach($va_dependencias as $v_campo_conexao)
{
if (isset($v_campo_conexao["campo"]))
if (isset($v_campo_conexao["campo"]))
{
?>
vs_filtro += '&<?php print $v_campo_conexao["atributo"]; ?>='+$("#<?php print ($v_campo_conexao["campo"] . $vs_sufixo_nome_campo); ?>").val();
Expand All @@ -805,7 +813,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
{
?>
vs_url_valores_proibidos = "functions/ler_valores_proibidos.php?campo=<?php print $vs_id_campo_codigos; ?>&obj=<?php print $vs_objeto_campo; ?>";

// Vamos adicionar aqui o código do próprio registro, se existir (é atualização)
////////////////////////////////////////////////////////////////////////////////

Expand All @@ -830,7 +838,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
vs_url_valores_proibidos = vs_url_valores_proibidos + "&<?php print $pa_parametros_campo["prevenir_circularidade"]["atributo_pai"]; ?>="+$("#<?php print $pa_parametros_campo["prevenir_circularidade"]["atributo_pai"]; ?>").val();
}

$.get(vs_url_valores_proibidos, function(data, status)
$.get(vs_url_valores_proibidos, function(data, status)
{
vs_valores_proibidos = data;
});
Expand All @@ -854,7 +862,7 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
?>

vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php print $vs_tela ?>&campo=<?php print $vs_nome_campo_lookup ?>&campo_codigos=<?php print $pa_parametros_campo["nome"][1]; ?>&termo="+encodeURIComponent(vs_termo)+"&obj=<?php print $vs_objeto_campo ?>"+"&procurar_por=<?php print $vs_procurar_por ?>&permitir_cadastro=<?php print $vb_permitir_cadastro ?>&campo_codigo=<?php print $vs_campo_codigo; ?>&campo_valor=<?php print $vs_campo_valor; ?>&operador=<?php print $vs_operador; ?>&configuracao_padrao=<?php print $vb_configuracao_padrao; ?>"+vs_filtro;

<?php if (isset($pa_parametros_campo["excluir"]))
{
?>
Expand All @@ -875,6 +883,63 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps
}
});


$(document).on('click', "#div_adicionar_restantes_<?php print $vs_nome_campo_lookup; ?>", function()
{
vs_termos = $("#<?php print $vs_nome_campo_lookup ?>").val();
va_termos = vs_termos.split(";");
var va_termos_inexistentes = [];

//Para chamar corretamente o load mais de uma vez
jQuery.ajaxSetup({async:false});

for (var i = 0; i < va_termos.length; i++)
{
vs_termo = va_termos[i].trim();

if (vs_termo != "")
{
vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php print $vs_tela ?>&campo=<?php print $vs_nome_campo_lookup ?>&termo="+encodeURIComponent(vs_termo)+"&obj=<?php print $vs_objeto_campo ?>"+"&procurar_por=<?php print $vs_procurar_por ?>&permitir_cadastro=1&campo_codigo=<?php print $vs_campo_codigo; ?>&campo_valor=<?php print $vs_campo_valor; ?>";

//vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php //print $vs_tela ?>//&campo=<?php //print $vs_nome_campo_lookup ?>//&termo="+encodeURIComponent(vs_termo)+"&obj=<?php //print $vs_objeto_campo ?>//"+"&procurar_por=<?php //print $vs_procurar_por ?>//&_permitir_cadastro_=<?php //print $vb_permitir_cadastro ?>//&campo_codigo=<?php //print $vs_campo_codigo; ?>//&campo_valor=<?php //print $vs_campo_valor; ?>//";

<?php if (isset($pa_parametros_campo["excluir"]))
{
?>
vs_url_lista_sugestoes = vs_url_lista_sugestoes + "&excluir=<?php print $pa_parametros_campo["excluir"]; ?>";
<?php
}
?>

$("#div_sugestoes_<?php print $vs_nome_campo_lookup ?>").load(vs_url_lista_sugestoes);

if ($("#lista_<?php print $vs_nome_campo_lookup ?>").length == 0)
{
va_termos_inexistentes.push(vs_termo);
}
else
{
$("#lista_<?php print $vs_nome_campo_lookup ?>").trigger('click');
}

}
}
//if (va_termos_inexistentes.length > 0) {
// console.log("abc")
// $("#btn_adicionar_restantes_<?php //print $vs_nome_campo_lookup ?>//")
// .text("Cadastrar termos inexistentes (" + va_termos_inexistentes.length + ")");
// $("#div_adicionar_restantes_<?php //print $vs_nome_campo_lookup ?>//").show();
//
//
// // botao adicionar termos inexistentes
//}

//$("#<?php //print $vs_nome_campo_lookup ?>//").val("Não encontrados: " + va_termos_inexistentes.join(';'));

$("#div_adicionar_restantes_<?php print $vs_nome_campo_lookup ?>").hide();
});


$(document).on('click', "#btn_adicionar_todos_<?php print $vs_nome_campo_lookup; ?>", function()
{
vs_termos = $("#<?php print $vs_nome_campo_lookup ?>").val();
Expand All @@ -890,7 +955,10 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps

if (vs_termo != "")
{
vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php print $vs_tela ?>&campo=<?php print $vs_nome_campo_lookup ?>&termo="+encodeURIComponent(vs_termo)+"&obj=<?php print $vs_objeto_campo ?>"+"&procurar_por=<?php print $vs_procurar_por ?>&_permitir_cadastro_=<?php print $vb_permitir_cadastro ?>&campo_codigo=<?php print $vs_campo_codigo; ?>&campo_valor=<?php print $vs_campo_valor; ?>";
//vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php //print $vs_tela ?>//&campo=<?php //print $vs_nome_campo_lookup ?>//&termo="+encodeURIComponent(vs_termo)+"&obj=<?php //print $vs_objeto_campo ?>//"+"&procurar_por=<?php //print $vs_procurar_por ?>//&permitir_cadastro=1&campo_codigo=<?php //print $vs_campo_codigo; ?>//&campo_valor=<?php //print $vs_campo_valor; ?>//";
//vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php //print $vs_tela ?>//&campo=<?php //print $vs_nome_campo_lookup ?>//&termo="+encodeURIComponent(vs_termo)+"&obj=<?php //print $vs_objeto_campo ?>//"+"&procurar_por=<?php //print $vs_procurar_por ?>//&_permitir_cadastro_=<?php //print $vb_permitir_cadastro ?>//&campo_codigo=<?php //print $vs_campo_codigo; ?>//&campo_valor=<?php //print $vs_campo_valor; ?>//&lote=1";

vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php print $vs_tela ?>&campo=<?php print $vs_nome_campo_lookup ?>&termo="+encodeURIComponent(vs_termo)+"&obj=<?php print $vs_objeto_campo ?>"+"&procurar_por=<?php print $vs_procurar_por ?>&permitir_cadastro=<?php print $vb_permitir_cadastro ?>&campo_codigo=<?php print $vs_campo_codigo; ?>&campo_valor=<?php print $vs_campo_valor; ?>";

<?php if (isset($pa_parametros_campo["excluir"]))
{
Expand All @@ -913,6 +981,19 @@ function alterar_valor_filtro_<?php print $vs_id_campo_codigos ?>(pb_checked, ps

}
}
if (va_termos_inexistentes.length > 0) {
//console.log("abc")
//$("#btn_adicionar_restantes_<?php //print $vs_nome_campo_lookup ?>//")
// .text("Cadastrar termos inexistentes (" + va_termos_inexistentes.length + ")");
//$("#div_adicionar_restantes_<?php //print $vs_nome_campo_lookup ?>//").show();

vs_url_lista_sugestoes = "functions/autocomplete.php?tela=<?php print $vs_tela ?>&campo=<?php print $vs_nome_campo_lookup ?>&termo="+encodeURIComponent(va_termos_inexistentes.join(`;`))+"&obj=<?php print $vs_objeto_campo ?>"+"&procurar_por=<?php print $vs_procurar_por ?>&permitir_cadastro=<?php print $vb_permitir_cadastro ?>&campo_codigo=<?php print $vs_campo_codigo; ?>&campo_valor=<?php print $vs_campo_valor; ?>&lote=1&campo_codigos=<?php print $pa_parametros_campo["nome"][1];?>";
$("#div_sugestoes_<?php print $vs_nome_campo_lookup ?>").load(vs_url_lista_sugestoes);


// botao adicionar termos inexistentes
}

$("#<?php print $vs_nome_campo_lookup ?>").val("Não encontrados: " + va_termos_inexistentes.join(';'));

$("#div_adicionar_todos_<?php print $vs_nome_campo_lookup ?>").hide();
Expand Down
2 changes: 1 addition & 1 deletion app/components/link_cadastrar.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<div class="row mb-3">
<div class="col-2 mb-3">
<button class="btn btn-primary px-4" type="button" id="lnk_cadastrar_<?php print $vs_nome_campo ?>">Cadastrar</button>
<button class="btn btn-primary px-4" type="button" id="lnk_cadastrar_<?php print $vs_nome_campo ?>_<?= $vn_iteracao ?>">Cadastrar</button>
</div>

<div class="mb-3 col-8">
Expand Down
44 changes: 36 additions & 8 deletions app/functions/autocomplete.php
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@
$vs_campo = "";
if (isset($_GET['campo']))
$vs_campo = $_GET['campo'];

if (isset($_GET['lote']))
$vb_lote = $_GET['lote'];

if (!$vs_campo)
{
Expand Down Expand Up @@ -349,7 +352,14 @@

$vs_termo = "";
if (isset($_GET['termo']))
{
$vs_termo = trim($_GET['termo']);
if(strpos($vs_termo, '>'))
{
$va_termos = explode('>', $vs_termo);
$vs_termo = trim($va_termos[array_key_last($va_termos)]);
}
}

$vs_operador = $_GET['operador'] ?? "LIKE";

Expand Down Expand Up @@ -440,21 +450,39 @@
}
//elseif (isset($va_termo_busca[$va_parametros_campo["nome"]]))
//$va_termo_busca[$va_parametros_campo["atributo"]] = $va_objeto[$va_parametros_campo["nome"]];



function load_link_cadastro ($vs_id_objeto_campo, $vs_campo, $vs_termo, $campo_salvar, $i = 0) {
$vo_html_link_cadastrar = new html_link_cadastrar($vs_id_objeto_campo, $vs_campo, $i);
$vo_html_link_cadastrar->set_termo_busca($vs_termo);
$vo_html_link_cadastrar->build($campo_salvar ?? null, $i);
return true;
}
$vo_html_selection_list_input = new html_combo_input(null, $vs_campo, "autocomplete");
$vo_html_selection_list_input->build($va_termo_busca, $va_parametros_campo);

if ($vb_permitir_cadastro && $vb_pode_inserir)
{
$vo_objeto_tela = new $vs_id_objeto_tela('');
$va_campos_edicao_objeto_tela = $vo_objeto_tela->get_campos_edicao();

$vo_html_link_cadastrar = new html_link_cadastrar($vs_id_objeto_campo, $vs_campo);

$vo_html_link_cadastrar->set_termo_busca($vs_termo);

$vo_html_link_cadastrar->build($va_campos_edicao_objeto_tela[$vs_campo_codigos]["campo_salvar"] ?? null);
if (isset($vb_lote) && $vb_lote) {
$vo_objeto_tela = new $vs_id_objeto_tela('');
$va_campos_edicao_objeto_tela = $vo_objeto_tela->get_campos_edicao();
$va_items_lote = explode(";", $vs_termo);
foreach ($va_items_lote as $vn_item_index => $va_item_lote) {
load_link_cadastro($vs_id_objeto_campo, $vs_campo, $va_item_lote, $va_campos_edicao_objeto_tela[$vs_campo_codigos]["campo_salvar"], $vn_item_index);
}

} else {
$vo_objeto_tela = new $vs_id_objeto_tela('');
$va_campos_edicao_objeto_tela = $vo_objeto_tela->get_campos_edicao();
load_link_cadastro($vs_id_objeto_campo, $vs_campo, $vs_termo, $va_campos_edicao_objeto_tela[$vs_campo_codigos]["campo_salvar"]);
}

// $vo_html_link_cadastrar = new html_link_cadastrar($vs_id_objeto_campo, $vs_campo);
//
// $vo_html_link_cadastrar->set_termo_busca($vs_termo);
//
// $vo_html_link_cadastrar->build($va_campos_edicao_objeto_tela[$vs_campo_codigos]["campo_salvar"] ?? null);
}
?>
29 changes: 29 additions & 0 deletions src/lib/html/html_combo_input.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ public function preencher($pa_filtro_listagem, $pa_parametros_campo)
{
$va_itens = array();
$va_filtro = array();
if(isset($pa_filtro_listagem['termo']) && strpos($pa_filtro_listagem['termo'], '>'))
{
$vo_transliterator = Transliterator::createFromRules(':: Lower; :: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD);
}

if (isset($pa_parametros_campo["dependencia"]))
{
Expand Down Expand Up @@ -168,6 +172,31 @@ public function preencher($pa_filtro_listagem, $pa_parametros_campo)

$vs_item_lista_value = join(" > ", $va_item_lista_value);
// Temos que generalizar essa montagem numa função

if(isset($pa_filtro_listagem['termo']) && strpos($pa_filtro_listagem['termo'], '>'))
{
$vb_todos_termos_encontrados = true;

$va_termos_procurados_normalizado = $vo_transliterator->transliterate($pa_filtro_listagem['termo']); // Remove acentos para a comparação
$va_termos_procurados_normalizado = preg_replace('/\s+/', '', $va_termos_procurados_normalizado); // Remove whitespaces para a comparação
$va_termos_procurados_normalizado = explode('>', $va_termos_procurados_normalizado);

$vs_item_lista_value_normalizado = $vo_transliterator->transliterate($vs_item_lista_value); // Remove acentos para a comparação
$vs_item_lista_value_normalizado = preg_replace('/\s+/', '', $vs_item_lista_value_normalizado); // Remove whitespaces para a comparação

foreach($va_termos_procurados_normalizado as $vs_termo_procurado)
{
if(!str_contains($vs_item_lista_value_normalizado, $vs_termo_procurado))
{
$vb_todos_termos_encontrados = false;
break;
}
}
if(!$vb_todos_termos_encontrados)
{
continue;
}
}
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion src/lib/html/html_link_cadastrar.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
class html_link_cadastrar extends html_input
{

public function build($pa_campos_salvar)
public function build($pa_campos_salvar, $vn_iteracao = 0)
{
$vs_id_objeto_tela = $this->get_tela();
$vs_nome_campo = $this->get_nome();
Expand Down
2 changes: 1 addition & 1 deletion src/lib/system/visualizacao.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public function inicializar_atributos()

$va_atributos['visualizacao_habilitado'] = [
'visualizacao_habilitado',
'coluna_tabela' => 'habilitado',
'coluna_tabela' => 'habilitada',
'tipo_dado' => 'b'
];

Expand Down