Pessoal, boa tarde!
Tenho dois campos ZOOM, um é a matrícula e o outro é o nome do usuário do fluig.
Para o código da matrícula ou o nome, funcionou certinho o DataSet já existente.
Mas eu gostaria de fazer a busca da matrícula e preencher automaticamente o campo de nome do usuário.
Segue o trecho:
<div class="form-field" data-type="textbox" data-show-properties="" data-field-name="tnumcracha" style="position: relative; left: 0px; top: 0px;">
<div class="form-input">
<div class="form-group">
<label>MATRÍCULA:</label>
<span class="required text-danger"><strong>*</strong></span>
<input type="zoom" class="form-control" name="tnumcracha" style="width: 25%;" dataset="colleague"
data-zoom=" {
'displayKey':'colleagueId',
'datasetId':'colleague',
'fields':[{
'field':'colleagueId',
'label':'CRACHÁ/MATRÍCULA',
'standard':true
}]
}"
zoomvalue="colleagueId" datasetvalue="colleagueId">
</div>
</div>
</div>
<div class="form-field" data-type="textbox" data-show-properties="" data-field-name="tnomsolic">
<div class="form-input">
<div class="form-group">
<label>NOME DO OPERADOR:</label>
<span class="required text-danger"><strong>*</strong></span>
<input type="text" class="form-control" name="tnomsolic" value="" placeholder="" data-size="medium" required="required" style="width: 50%;">
</div>
</div>
</div>
No seu JS do formulário você pode declarar as funções setSelectedZoomItem(selectedItem)
e removedZoomItem(removedItem)
para isso. Elas são executadas quando algo é selecionado num Zoom e removido do Zoom. Na documentação tem a orientação.
aí faria algo como:
function setSelectedZoomItem(selectedItem) {
if (selectedItem.inputName == "tnumcracha") {
// executa a reloadZoomFilterValues no zoom para filtrar o resultado
// ou pode usar a window["nome_do_zoom"].setValue("valor a colocar no zoom")
}
}
Mas se o nome sempre depende do crachá você pode fazer o Zoom do crachá, que já é o colleague, trazer também o nome e simplesmente usar o nome pra preencher o outro campo que ficaria somente leitura.
Aí na setSelectedZoomItem
seria só um elementoDoNome.value = selectedItem.nome
, por exemplo.
1 curtida
Bruno, mudei apenas o dado, mas continuo tentando fazer funcionar.
No HTML ficou assim:
<td class="form-input" data-size="small" style="width: 20%;">
<input class="form-control"
type="zoom"
id="column_cod"
name="column_cod"
dataset="CBC_CAD_PROD_DSS"
zoomvalue="B1_COD"
datasetvalue="B1_COD"
data-zoom=" {
'displayKey':'B1_COD',
'datasetId':'CBC_CAD_PROD_DSS',
'maximumSelectionLength':'1',
'placeholder':'',
'fields': [{
'field':'B1_COD',
'label':'CODIGO',
'standard':true
},{
'field':'B1_DESC',
'label':'DESCRIÇÃO',
'standard':true
}]
} " >
</td>
<td class="form-input" data-size="big" style="width: 50%;">
<input class="form-control"
type="zoom"
id="column_desc"
name="column_desc"
dataset="CBC_CAD_PROD_DSS"
zoomvalue="B1_DESC"
datasetvalue="B1_DESC"
data-zoom=" {
'displayKey':'B1_DESC',
'datasetId':'CBC_CAD_PROD_DSS',
'maximumSelectionLength':'1',
'placeholder':'Digite a descrição do produto',
'fields': [{
'field':'B1_DESC',
'label':'DESCRIÇÃO',
'standard':true
},{
'field':'B1_COD',
'label':'CODIGO',
'standard':true
}]
} " >
</td>
No evento JS que criei, ficou assim:
function setSelectedZoomItem(selectedItem) {
var DESCP = "column_desc";
var CODP = "column_cod"
var FIELD = selectedItem.inputId;
if (FIELD == DESCP) {
setZoomData("column_cod", selectedItem["CODP"]);
} else if (FIELD == CODP) {
setZoomData("column_desc", selectedItem["DESCP"]);
}
}
function setZoomData(instance, value) {
window[instance].setValue(value);
}
function removedZoomItem(removedItem) {
var DESCP = "column_DESC";
var CODP = "column_cod"
if (removedItem.inputId === DESCP) {
console.log("Retornando resultado removedZoomItem");
console.log(removedItem);
window[CODP].clear();
} else if (removedItem.inputId === CODP) {
console.log("Retornando resultado removedZoomItem");
console.log(removedItem);
window[DESCP].clear();
}
}
Mesmo assim não funcionou… Não estou encontrando…
Se puder me ajudar, agradeço. Vou continuar procurando!
Em teoria isso aqui funcionaria, mas estou sem o ambiente Fluig pra testar e não consegui entrar no academy.
Confesso que todas as vezes que manipulei outro zoom foi só pra recarregar o filtro, não para já dar um valor para ele.
<td class="form-input" data-size="small" style="width: 20%;">
<input
class="form-control"
type="zoom"
id="column_cod"
name="column_cod"
data-zoom="{
'displayKey':'B1_COD',
'datasetId':'CBC_CAD_PROD_DSS',
'maximumSelectionLength':'1',
'placeholder':'',
'fields':[
{
'field':'B1_COD',
'label':'CODIGO',
'standard':'true'
},
{
'field':'B1_DESC',
'label':'DESCRIÇÃO'
}]
}"
>
</td>
<td class="form-input" data-size="big" style="width: 50%;">
<input
class="form-control"
type="zoom"
id="column_desc"
name="column_desc"
data-zoom="{
'displayKey':'B1_DESC',
'datasetId':'CBC_CAD_PROD_DSS',
'maximumSelectionLength':'1',
'placeholder':'Digite a descrição do produto',
'fields':[
{
'field':'B1_DESC',
'label':'DESCRIÇÃO',
'standard':'true'
},
{
'field':'B1_COD',
'label':'CODIGO'
}]
}"
>
</td>
<script>
function setSelectedZoomItem(selectedItem) {
if (selectedItem.inputId == "column_cod") {
window["column_desc"].setValue(selectedItem["B1_DESC"]);
} else if (selectedItem.inputId == "column_desc") {
window["column_cod"].setValue(selectedItem["B1_COD"]);
}
}
function removedZoomItem(removedItem) {
if (removedItem.inputId == "column_cod") {
window["column_desc"].clear();
} else if (removedItem.inputId == "column_desc") {
window["column_cod"].clear();
}
}
</script>
Mas do ponto de vista prático não tem sentido ter 2 Zoom buscando a mesma informação.
Você pode deixar somente 1 zoom e, caso seja realmente necessário salvar a descrição também, criar um input text somente leitura e popular ele.
<td class="form-input" data-size="small" style="width: 20%;">
<input
class="form-control"
type="zoom"
id="column_cod"
name="column_cod"
data-zoom="{
'displayKey':'B1_COD',
'datasetId':'CBC_CAD_PROD_DSS',
'maximumSelectionLength':'1',
'placeholder':'',
'fields':[
{
'field':'B1_COD',
'label':'CODIGO',
'standard':'true'
},
{
'field':'B1_DESC',
'label':'DESCRIÇÃO'
}]
}"
>
</td>
<td class="form-input" data-size="big" style="width: 50%;">
<input
class="form-control"
type="text"
id="column_desc"
name="column_desc"
readonly
>
</td>
<script>
function setSelectedZoomItem(selectedItem) {
if (selectedItem.inputId == "column_cod") {
$("#column_desc").val(selectedItem["B1_DESC"]);
}
}
function removedZoomItem(removedItem) {
if (removedItem.inputId == "column_cod") {
$("#column_desc").val("");
}
}
</script>