Enablefields em campos

Tenho um formulário que passa por alguns processos, de acordo com a etapa do processo as partes do formulário vão sendo habilitadas.

Porém meu enablefields que deveria fazer isso não está funcionando, poderiam me ajudar a verificar o desenvolver.

vou colocar meus códigos à baixo e um print do meu workflow.


<!-- Dados da Reunião -->
    <div class="panel panel-primary">
        <div class="panel-heading">
            <h3 class="panel-title">Dados da reunião</h3>
        </div>
        <div class="panel-body">
            <div class="row">
                <div class="form-group col-md-2">
                    <label for="dt_reuniao">Data da Reunião</label>
                    <input type="text" name="dt_reuniao" id="dt_reuniao" class="form-control">
                </div>
                <div class="form-group col-md-3">
                    <label for="hora_reuniao">Hora da Reunião</label>
                    <input type="text" name="hora_reuniao" id="hora_reuniao" class="form-control" mask="00:00">
                </div>
                    <div class="form-group col-md-4">
                    <label for="str_local">Local</label>
                    <input type="text" name="str_local" id="str_local" class="form-control">
                </div>
            </div>
            <div class="row">
                <div class="form-group col-md-4">
                    <label>Empresa</label>
                    <input type="zoom" id = "empresa" name="empresa"
                        data-zoom="{
                            'displayKey':'emp_nome',
                            'datasetId':'dsFormEmpresas',
                            'maximumSelectionLength':'1',
                            'placeholder':'Selecione a empresa',
                            'fields':[
                                {'field':'emp_nome', 'label':'Nome'},
                                {'field':'cnpj', 'label':'CNPJ', 'standard':'true'}
                            ]
                        }"
                     />
                </div>
                <div class="form-group col-md-2">
                    <label>Nova Empresa</label>
                    <button type="button" id="novaEmpresa" class="btn btn-primary" onclick="window.open('http://controlecontabilidad2259.fluig.cloudtotvs.com.br/portal/p/1/ecmnavigation?app_ecm_navigation_doc=72')"">Cadastrar empresa</button>
                </div>
            </div>
        </div>
    </div>
<!--  Responsáveis -->
    <div class="panel panel-primary" id="FormatacaoResponsaveis">
        <div class="panel-heading">
            <h3 class="panel-title">Responsáveis</h3>
        </div>
        <div class="panel-body">
            <table tablename="responsaveistabela" id="responsaveistabela" class="table table-hover" addbuttonclass="button_responsavel" >
                <thead>
                    <tr>
                        <td>Colaboradores Responsáveis</td>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>
                            <input type="zoom" id = "responsaveis" name="responsaveis"
                                data-zoom="{
                                    'displayKey':'colleagueName',
                                    'datasetId':'colleague',
                                    'placeholder':'Escolha o usuário',
                                    'fields':[
                                        {'field':'colleagueId', 'label':'ID'},
                                        {'field':'colleagueName', 'label':'Nome', 'standard':'true'},
                                        { 'field':'login', 'label':'Login'}
                                    ]
                                }"
                             />
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
<!--  Participantes -->
    <div class="panel panel-primary" id="FormatacaoParticipantes">
        <div class="panel-heading">
            <h3 class="panel-title">Participantes</h3>
        </div>
        <div class="panel-body">
            <table tablename="participantestabela" id="participantestabela" class="table table-hover" addbuttonid="button_participante">
                <thead>
                    <tr>
                        <th>Participantes na Reunião</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>
                            <input type="zoom" id = "participante" name="participante" 
                                data-zoom="{
                                    'displayKey':'nome',
                                    'datasetId':'dsFormContatos',
                                    'placeholder':'Selecione o participante',
                                    'fields':[
                                        {'field':'nome', 'label':'Nome'},
                                        {'field':'empresa', 'label':'Empresa'}
                                    ]
                                }"
                             />
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
<!--  Pauta da Reunião -->
    <div class="panel panel-primary" id="FormatacaoPauta">
        <div class="panel-heading">
            <h3 class="panel-title">Pauta</h3>
        </div>
        <div class="form-group">
            <table tablename="tabelapautas" id="tabelapautas" class="table" noaddbutton="true">
                <thead>
                    <tr class="tableHeadRow"><th class="tableColumn">Número</th><th class="tableColumn">Descrição</th></tr>
                </thead>
                <tbody>
                    <tr class="tableBodyRow">
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form">
                                <label value="1" id="Num_Paut">1</label>
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-9">
                            <div class="form-input">
                                <input type="text" name="desc_pauta" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="button" class="btn btn-primary" name="anexo_Pauta"
                                 id="anexo_Pauta" value="Anexar" onclick="showCamera(this);" >
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <button type="button" class="btn btn-primary" name="mostrararquivo" 
                                        id="mostrararquivo">mostrar arquivo</button>
                            </div>
                        </td>        
                    </tr>            
                </tbody>
            </table>
            <button type="button" class="btn btn-primary" id="button_pauta" onclick="adiciona()">Nova Pauta</button>
        </div>
    </div>
<!--  Assuntos Discutidos -->
    <div class="panel panel-primary" id="FormatacaoAssuntos">
        <div class="panel-heading">
            <h3 class="panel-title">Assuntos Discutidos</h3>
        </div>
        <div class="form-group">
                <table tablename="tabelaassuntos" id="tabelaassuntos" class="table" noaddbutton="true">
                    <thead>
                        <tr class="tableHeadRow"><th class="tableColumn">Número</th><th class="tableColumn">Assunto</th></tr>
                    </thead>
                    <tbody>
                        <tr class="tableBodyRow">
                            <td class="fs-v-align-middle col-md-1">
                                <div class="form">
                                    <label value="1" id="Num_Assunt">1</label>
                                </div>
                            </td>
                            <td class="fs-v-align-middle col-md-10">
                                <div class="form-input">
                                    <input type="text" name="desc_assunto" class="form-control">
                                </div>
                            </td>
                            <td class="fs-v-align-middle col-md-1">
                                <div class="form-input">
                                    <input type="button" class="btn btn-primary" name="anexo_Assunto"
                                     id="anexo_acao" value="Anexar" onclick="showCamera1(this);" >
                                </div>
                            </td>
                        </tr>
                    </tbody>
                </table>
            <button type="button" class="btn btn-primary" id="button_assunto"  onclick="adiciona1()">Novo Assunto</button>
        </div>
    </div>
<!--  Plano de Ação -->
    <div class="panel panel-primary" id="FormatacaoAcao">
        <div class="panel-heading">
            <h3 class="panel-title">Plano de Ação</h3>
        </div>
        <div class="form-group">
            <table tablename="tabelaacao" id="tabelaacao" class="table" noaddbutton="true">
                <thead>
                    <tr class="tableHeadRow">
                        <th class="tableColumn">Número</th>
                        <th class="tableColumn">Ação</th>
                        <th class="tableColumn">Responsável</th>
                        <th class="tableColumn">Dead Line</th>
                        <th class="tableColumn">Tempo previsto</th>
                        <th class="tableColumn">Tempo realizado</th>
                        <th class="tableColumn">Data de entrega</th>
                    </tr>
                </thead>
                <tbody>
                    <tr class="tableBodyRow">
                        <td class="fs-v-align-middle col-md-1">
                                <div class="form">
                                    <label value="1" id="Num_Acao">1</label>
                                </div>
                            </td>
                        <td class="fs-v-align-middle col-md-4">
                            <div class="form-input">
                                <input type="text" name="desc_acao" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-2">
                            <div class="form-input">
                                    <input type="zoom" id = "resp_acao" name="resp_acao"
                                data-zoom="{
                                    'displayKey':'colleagueName',
                                    'datasetId':'colleague',
                                    'placeholder':'Escolha o usuário',
                                    'fields':[
                                        {'field':'colleagueName', 'label':'Nome', 'standard':'true'},
                                        { 'field':'login', 'label':'Login'}
                                    ]
                                }"
                             />
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="date" name="dead_line" id="dead_line" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="text" name="tempo_previsto" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="text" name="tempo_executado" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="text" name="dt_entrega" class="form-control">
                            </div>
                        </td>
                        <td class="fs-v-align-middle col-md-1">
                            <div class="form-input">
                                <input type="button" class="btn btn-primary" name="anexo_acao"
                                 id="anexo_Pauta" value="Anexar" onclick="showCamera2(this);" >
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
            <button type="button" class="btn btn-primary" id="button_acao" onclick="adiciona2()">Nova Ação</button>
        </div>
    </div>


function enableFields(form) {
    var activity = getValue('WKNumState');
    var pautas = form.getChildrenIndexes("tabelapautas");
    var participante = form.getChildrenIndexes("participantestabela");
    var responsavel = form.getChildrenIndexes("responsaveistabela");
    var assuntos = form.getChildrenIndexes("tabelaassuntos");
    var acao = form.getChildrenIndexes("tabelaacao");

    if (activity != 0 && activity != 17 && activity != 27) {
        form.setEnabled('dt_reuniao', false);
        form.setEnabled('hora_reuniao', false);
        form.setEnabled('str_local', false);
        form.setEnabled('empresa', false);
        form.setEnabled('novaEmpresa', false);
    }
        form.setEnabled('button_responsavel', false);
        for(i = 0; i < responsavel.length; i++){
            form.setEnabled('responsaveis___'+responsavel[i], false);
    }

        form.setEnabled('button_participante', false);
        for(i = 0; i < participante.length; i++){
            form.setEnabled('participante___'+pautas[i], false);
    }
    if (activity != 27) {

        for(i = 0; i < pautas.length; i++){
            form.setEnabled('desc_pauta___'+pautas[i], false);
        }
        for(i = 0; i < pautas.length; i++){
            form.setEnabled('Num_Paut'+pautas[i], false);
        }
        form.setEnabled('#button_pauta', false);
        for(i = 0; i < responsavel.length; i++){
            form.setEnabled('responsaveis___'+responsavel[i], false);
        }
}
    if (activity != 29) {

        for(i = 0; i < assuntos.length; i++){
            form.setEnabled('Num_Assunt___'+assuntos[i], false);
            form.setEnabled('desc_assuntos___'+assuntos[i], false);
        }
    }
    if (activity != 31) {
        for(i = 0; i < acao.length; i++){
            form.setEnabled('Num_Acao___'+acao[i], false);
            form.setEnabled('desc_acao___'+acao[i], false);
            form.setEnabled('resp_acao___'+acao[i], false);
            form.setEnabled('prazo_acao___'+acao[i], false);
        }
    }
}

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Bom dia Henrique, tente usar o name das tabelas sem o # no getChildrenIndexes: form.getChildrenIndexes(“tabelapautas”);

Bom dia Diogo, tentei porém não funcionou…

sabe me dizer o que possa estar ocorrendo para não estar isolando meus campos

O que está acontecendo? Não desabilita nada?

exatamente, dou inicio do meu formulário e todos os campos estão habilitados

Um detalhe é que quando você vai iniciar um processo o seu WKNumState vai ser 0 então pelo seu script ele não vai desabilitar nada pois não entra no if (activity != 0 && activity != 17 && activity != 27) {. Outro ponto que senão me engano o form.setEnabled não desabilita botões.

Henrique, não tem nenhum erro no seu log?

Cara, eu utilizo a lógica um pouco diferente. Eu deixo todos os campos do formulário desabilitados e protegidos e habilito somente os que quero na atividade.

Para isso uso o enableFields em conjunto com o setEnable.

O enableFields sempre será somente isso.


function enableFields(form) {
    var activity = parseInt(getValue('WKNumState'));
    setEnable(activity, form);
    form.setEnabled("responsavel", false, true);
    var mapForm = new java.util.HashMap();
    mapForm = form.getCardData();
    var it = mapForm.keySet().iterator();
    while (it.hasNext()) {
        var key = it.next();
        var isEnabled = form.getEnabled(key);
        if (isEnabled == true) {
            form.setEnabled(key, false, true);
        } else {
            form.setEnabled(key, true);
        }
    }
}

Já no setEnable eu utilizo assim:


function setEnable(activity, form) {
    form.setEnabled("obsHistorico", false);
    form.setEnabled("ultimaAtualizacao", false);
    form.setEnabled("historico", false);
    if (activity == 80) {
        form.setEnabled("qtdAuditores", false);
    }
}

Ou seja, primeiro é chamado o setEnable antes de executar o enbleFields. Como não posso remover a proteção do campo, desabilito os campos para saber os campos que irei habilitar no enableFields, logo os campos que não foram desabilitados no setEnable serão desabilitados e protegidos.

Para tabelas paixfilho utilizo dessa forma


function enableTableMedia(form, activity) {
    var index = form.getChildrenIndexes("table2");
    var i = activity == 28 ? -1 : 0;
    var compName = null;
    for (i; i < index.length; i++) {
        compName = i == -1 ? "" : "___" + index[i];
        form.setEnabled("requiLin" + compName, false);
        form.setEnabled("nota1Lin" + compName, false);
        form.setEnabled("nota2Lin" + compName, false);
        form.setEnabled("nota3Lin" + compName, false);
    }
}

Jogo essa função fora do setEnable e chamo ela nas atividades que quero a tabela com os campos liberados para edição, porém tem duas possibilidades aí:

Tabelas com possibilidade de editar e inserir novas linhas, é onde verifico o -1 do i do for;

e Tabelas só para edição do que já foi colocado, então não ativo a primeira linha da tabela (a linha que serve como matriz)

Tenho situações onde trato parte no displayfields e parte no enablefields. Os campos de tabelas pai x filho tive esse comportamento.


var indexes = form.getChildrenIndexes("tbRelacao");
         for (var i = 0; i < indexes.length; i++) {

            customHTML.append("$('#cMat___"+indexes[i]+"').attr('readonly', 'readonly'); ");
            customHTML.append("$('#cNome___"+indexes[i]+"').attr('readonly', 'readonly'); ");
            customHTML.append("$('#cFil___"+indexes[i]+"').attr('readonly', 'readonly'); ");
            customHTML.append("$('#cFunc___"+indexes[i]+"').attr('readonly', 'readonly'); ");
        }

Os botoes, como citou o Diogo precisa ser disabled e tambem tratei no displayfields


customHTML.append("$('#bt_cBusca').attr('disabled', 'disabled'); ");

Aqui funcionou assim.