OUT OF SERVICE - How to use a switch in a table - UI designer

After building a table and dragging a switch field, you need TODO:

Usado em listapage, listaenv, Transaccao

1. Give a name to the table with the switch. Example "isac":

2. In JS tab add:

  • isac - nome da class da tabela

  • p_status_page - tag do checkbox/switch

  • p_id_fk - if tag hidden add _fk of each line for action purpose in the change function (3. point)

  • p_id - name of the param that will be used in method changestatus()

  • webapps?r=[app]/[page]/[actionXXX()]

$('.isac').on('change','td input[name="p_status_page"]',function(){

        var isChecked = $(this).is(':checked'),
            id         = $(this).parents('tr').find('input[name="p_id_fk"]').val(),
            val        = isChecked ? 1 : 0;

        $.IGRP.request('webapps?r=igrp_studio/ListaPage/changeStatus',{
            params : {
                p_id : id,
                p_status_page : val
            },
            success:function(r){
                var type = r.status ? 'success' : 'danger',
                    msg  = r.status ? 'Estado alterado' : 'Estado não foi alterado';

             
                    $.IGRP.notify({
                        message : msg,
                        type    : type
                    });
            },
            fail:function(){

            }
        });

    });

OR

If the id tag is a column and not a hidden field, no need to add _fk. See name=code without _fk

$('.isac').on('change','td input[name="p_status"]',function(){
        var isChecked = $(this).is(':checked'),
            code = $(this).parents('tr').find("[item-name=codigo]").text(),
            val = isChecked ? 1 : 0;
      
        $.IGRP.request('webapps?r=igrp/transaccao/changeStatus',{
            params : {
                p_code : code,
        p_status : val
            },
            success:function(r){
                var type = r.status ? 'success' : 'danger',
                    msg = r.status ? 'Estado alterado!' : 'Estado não foi alterado!';

              
                    $.IGRP.notify({
                        message : msg,
                        type    : type
                    });
            },
            fail:function(){

            }
        });

    });

3. Add this lines to the controller.java

  • In the actionIndex()

actionIndex()
table1.setStatus(ac.getStatus());
table1.setStatus_check(ac.getStatus() == 1 ? ac.getStatus() : -1);
  • Import in the reserved import area:

import org.json.JSONException;
import org.json.JSONObject;
import com.google.gson.Gson;
  • In the START-PRESERVED-AREA(CUSTOM_ACTIONS)

Reading the params p_id and p_status of the javascript

public Response actionChangeStatus() throws IOException, IllegalArgumentException, IllegalAccessException, JSONException {

        this.format = Response.FORMAT_JSON;
        int id = Core.getParamInt("p_id");
        int status = Core.getParamInt("p_status");
        boolean response = false;

        if (id != 0)) {
            Action page = new Action().findOne(id);
            if (page != null) {
                page.setStatus(status);
                if (page.update() != null)
                    response = true;
            }
        }

        JSONObject json = new JSONObject();
        json.put("status", response);     
        return this.renderView(json.toString());
    }

Last updated