Preciso desativar a table paixfilho do fluig em todas as atividades

Pessoal, preciso criar uma tabela onde o solicitante consiga cadastrar as pessoas e os dados (atividade 0 e 4)e nas atividades seguintes esta tabela seja "readOnly" (atividade 6). Só que a table da totvs não estou conseguindo.


<table class="table" tablename="tab" addbuttonclass="btn btn-primary" addbuttonlabel="Adicionar Colaborador" cellspacing="0" width="100%" id="tabcol" customFnDelete="fnCustomDelete(this)">
        <thead>
            <tr class="tableHeadRow"> 
                <td class="tableColumn"><b>Chapa</b></td>
                <td class="tableColumn"><b>Nome</b></td>
                <td class="tableColumn"><b>Data da Ocorrência</b></td>
                <td class="tableColumn"><b>Motivo</b></td>
                <td class="tableColumn"><b>Setor</b></td>
                <td class="tableColumn"><b>Abono Parcial</b></td>
                <td class="tableColumn"><b>Horas Abonar</b></td>
            </tr>
            </thead>
            <tbody id="tblinha">
            <tr class="tableBodyRow" id="linha">
                <td><input class="form-control" type="number" name="chapaa" id="chapa"></td>
                <td><input class="form-control" type="text" name="nomee" value="Nome Completo" id="nome"></td>
                <td><input class="form-control" type="date" name="dataoco" id="data" ></td>
                <td><input class="form-control" type="text" name="motivoo" id="descricao"></td>
                <td><input class="form-control" type="text" name="setorr"  id="setor"></td>
                <td><input class="checkbox-inline" type="checkbox" name="abonoo" id="parcial">Sim</td>
                <td><input class="form-control" type="time" name="horaa" id="horaa"></td>
            </tr>
               </tbody>
        </table>

Segue abaixo o displayfields


function displayFields(form, customHTML) 
{        
    var activity = getValue('WKNumState');

    if (activity == 0 || activity == 4) 
    {     

        form.setEnabled('devolve', false);
    }

    if (activity == 6)
    {
        form.setHideDeleteButton(true);
        form.setEnabled('nomee', false);
        form.setEnabled('dataoco', false);
        form.setEnabled('motivoo', false);
        form.setEnabled('setorr', false);
        form.setEnabled('chapaa', false);
        form.setEnabled('horaa', false);
        form.setEnabled('abonoo', false);
    }

1 curtida

@Arnaldo,

Para habilitar e desabilitar campos você tem que fazer no evento do formulário enableFields, segue exemplo:


function enableFields(form){
    var activity = getValue('WKNumState');

    if (activity == 0 || activity == 4) {     
        form.setEnabled('devolve', false);
    }

    if (activity == 6) {
        // Aqui é o tratamento para campos Pai x Filho
        var indexes = form.getChildrenIndexes("tab");
        for (var i = 0; i < indexes.length; i++) {
            form.setEnabled('nomee___' + indexes[i], false);
            form.setEnabled('dataoco___' + indexes[i], false);
            form.setEnabled('motivoo___' + indexes[i], false);
            form.setEnabled('setorr___' + indexes[i], false);
            form.setEnabled('chapaa___' + indexes[i], false);
            form.setEnabled('horaa___' + indexes[i], false);
            form.setEnabled('abonoo___' + indexes[i], false);
            form.setEnabled('tipo_abono___' + indexes[i], false);
        }
    }
}

Evento do formulário validateForm:


function validateForm(form){

    if(form.getValue('nome') == null || form.getValue('nome') == '') {
        throw "Campo nome não está preenchido";
    }

    var indexes = form.getChildrenIndexes("tab");
    if (indexes.length <= 0) {
        throw "Adicione 1 filho pelo menos para continuar o processo!";
    } else {
        for (var i = 0; i < indexes.length; i++) {
            if(form.getValue('nomee___' + indexes[i]) == null || form.getValue('nomee___' + indexes[i]) == '') {
                throw "Campo nome não está preenchido";
            }
        }
    }

}

Deu certo… como posso bloquear o envio para proxima atividade caso um campo esteja vazio e retorne uma mensagem??

obrigado

Ai você utiliza o evento do formulário validateForm, vou adicionar o exemplo na resposta.

Obrigado amigo… essa função preciso criar o script dela ou vai na enabledfields

Precisa criar o script dela, é padrão do Fluig.

perdão achei aqui… obrigado novamente

O evento “validateForm” está na opção “Script Evento da Definição de Formulário”. Esse evento “validateAvailableStates” está na opção “Script Evento Workflow”

Gabriel, queria barrar o envio mais a tabela não esta criando a primeira linha inicial e por isso não esta barrando… como posso adicionar a linha 1 inicialmente?

Atualizei o código na minha resposta.

Gabriel, note que efetuei algumas alterações e ficou perfeito o evento de salvar!! obrigado


function validateForm(form){
    var indexes = form.getChildrenIndexes("tab");
    if (indexes.length <= 0) {
        throw "Adicione um colaborador pelo menos para continuar o processo!";
    } else {
        for (var i = 0; i < indexes.length; i++) {
            if(form.getValue('nomee___' + indexes[i]) == null || form.getValue('nomee___' + indexes[i]) == '') {
                throw "Informe uma descrição no Nome";
            }
            if(form.getValue('motivoo___' + indexes[i]) == null || form.getValue('motivoo___' + indexes[i]) == '') {
                throw "Informe uma descrição no campo MOTIVO";
            }
        }
    }

}

1 curtida