Page 1 of 1

Accessing Grids with JavaScript

Posted: Tue Aug 13, 2019 6:34 pm
by milagrosmaria16
Buenas tardes,
Una pregunta, he estado revisando que la función getGridField("grid-name", row-number, "field-name") en la versión 2.x ya no funciona en la versión 3.0 y demás, me podrían indicar cual sería la mejor para reemplazarlo, se los agradecería muchísimo.
Code: Select all
function valCases() {
  var totalRows = $("#subcasesGrid").getNumberRows();
  var completados='0';
  if ( $('#cboAceptarPS').getValue() == '1' ) {
    for (var i = 1; i <= totalRows; i++) {
      if(totalRows==1) {
        if(getGridField("subcasesGrid", i, "status").getValue == '') {
          completados='0'; break;
      } else if(getGridField("subcasesGrid", i, "status").getValue != 'Completed') {
          completados='1';  break;
    }
  } else {
        if(getGridField("subcasesGrid", i, "status").getValue != 'Completed') {
          completados='1';
           break;
        }
  }
}
if(completados=='1') {
      G.alert("Los RTP/SS aun no han sido completados", "Advertencia");  return false;
    }
  }
}
valCases();
//$('#btnEnviar').click(valCases);
Gracias!!!

Re: Accessing Grids with JavaScript

Posted: Tue Aug 13, 2019 7:54 pm
by amosbatto
En la versión 3, puedes usar $("#grid-id").getValue(fila, columna) en lugar de getGridField() y alert() en lugar de G.alert().

Re: Accessing Grids with JavaScript

Posted: Thu Aug 15, 2019 1:43 pm
by milagrosmaria16
Buen día,
He estado intentando obtener información de subprocesos en la siguiente grilla, la cual tiene los siguientes campos:
caseNo / status / currentUser / createDate / updateDate / dueDate / caseURL / index / caseLink
Image
La grilla se llama: subcasesGrid

Necesito que la grid me muestre, el número de caso, estado, usuario (creador/solicitante), etc. del subproceso(hijo) creado en el proceso padre.

Y tengo los siguientes códigos:
En Before:
Code: Select all
@@caseLink = "x";
@=subcasesGrid = array(); //empty array to hold grid data
$caseId = @@APPLICATION; //UID for current master process case
@@caseLink = "xx";
$subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT = '$caseId'");
@@caseLink = "xxx";
$subaplica = '';
if (is_array($subcases) and count($subcases) > 0)
   {     
      for($i = 1, $tot = count($subcases); $i <= $tot; $i++)
      {
       $subcase = new Cases();
       $subaplica = $subcases[$i]['APP_UID'];
       $aSubCase = $subcase->loadCase($subcases[$i]['APP_UID']);
       $aSubCase = $subcase->loadCase($aSubCase['APP_UID'], $aSubCase['APP_DATA']['INDEX']);
       $nameproceso = executeQuery("SELECT C.CON_VALUE FROM APPLICATION A, CONTENT C WHERE A.PRO_UID = C.CON_ID AND C.CON_CATEGORY = 'PRO_TITLE' AND C.CON_LANG='en' AND A.APP_UID = '$subaplica'");
       $nameProcess = $nameproceso[1]['CON_VALUE'];
       $nameProcess = substr($nameProcess, 0, strpos($nameProcess, "-"));

          @=subcasesGrid[$i] = array(
          'caseNo'      => $nameProcess . $aSubCase['APP_NUMBER'],
          'status'     => $aSubCase['STATUS'],
          'currentUser' => $aSubCase['CURRENT_USER'],
          'index'       => $aSubCase['DEL_INDEX'],
          'createDate'  => $aSubCase['CREATE_DATE'],
          'updateDate'  => $aSubCase['UPDATE_DATE'],
          'dueDate'     => $aSubCase['DEL_TASK_DUE_DATE'],
          'caseURL'     => '../cases/cases_Open?APP_UID=' . $aSubCase['APP_UID'] . '&DEL_INDEX=' . $aSubCase['DEL_INDEX'] . '&ACTION=VIEW');
 
        }
     }
En JavaScript:
Code: Select all
function selClase() {
  var totalRows = $("#subcasesGrid").getNumberRows();
  for (var i = 1; i <= totalRows; i++) {
    //where 2 is the column number of the caseURL field:
    var url = $("#subcasesGrid").getValue(i, 7);
    
    $("[id='form[subcasesGrid]["+i+"][caseLink]']").prop("href", url); 
    $("[id='form[subcasesGrid]["+i+"][caseLink]']").html("open");   
  }
}
selClase(); //execute when Dynaform loads 
Code: Select all
function valCases() {
  var totalRows = $("#subcasesGrid").getNumberRows();
  var completados ='0';
  if ( $('#cboAceptarPS').getValue() == '1' ) {
    for (var i = 1; i <= totalRows; i++) {
      if(totalRows==1) {
        if ($("#subcasesGrid").getValue(i, 2) == "") {
        //if(getGridField("subcasesGrid", i, "status").getValue == '') {
          completados = '0'; break;
        } else if ($("#subcasesGrid").getValue(i, 2) !== "Completed") {
        //else if(getGridField("subcasesGrid", i, "status").getValue != 'Completed') {
          completados = '1';  break;
    }
  } else {
          if ($("#subcasesGrid").getValue(i, 2) !== "Completed") {
    	  //if(getGridField("subcasesGrid", i, "status").getValue != 'Completed') {
          completados = '1';
           break;
        }
  }
}
if(completados=='1') {
      alert("Los SS/RTP aun no han sido completados", "Advertencia");  return false;
    }
  }
}
valCases();
//$('#btnEnviar').click(valCases);
Por favor espero me puedan apoyar porque no me esta mostrando nada y he estado intentando hace varios días. Se los agradeceré muchísimo.

Saludos!!!!

Re: Accessing Grids with JavaScript

Posted: Thu Aug 15, 2019 7:02 pm
by amosbatto
¿Qué versión de PM estás usando?
No puedo ubicar el problema en tu codigo. Necesito ejecutar el codigo en un proceso para encontrar el problema. ¿Puedes publicar los archivos .pmx de tu proceso padre y el subproceso?

Re: Accessing Grids with JavaScript

Posted: Tue Aug 20, 2019 1:25 pm
by milagrosmaria16
Buen día,

Adjunto el proceso padre e hijo. Estoy utilizando la versión 3 - community.

Gracias por su apoyo.

Saludos!!!

Re: Accessing Grids with JavaScript

Posted: Thu Aug 22, 2019 10:53 am
by milagrosmaria16
Buenos días

He estado intentando solucionar con otras funciones pero sigue sin funcionar, si alguien me puede apoyar con lo solicitado se lo agradeceré muchísimo.

Gracias de antemano.

Re: Accessing Grids with JavaScript

Posted: Fri Aug 23, 2019 12:53 am
by amosbatto
¿Qué es la versión exacta de PM que tienes? (Ver Admin > System Information)

No he intentado ejecutar tu proceso, porque es muy complicado, pero algunas versiones de PM 3 no pueden mostar enlaces relativos.

Debes crear enlaces completos así:
Code: Select all
if (is_array($subcases) and count($subcases) > 0) {
   $g = new G();
   $baseUrl = ($g->is_https() ? "https://" : "http://") . $_SERVER['HTTP_HOST'] .
        '/sys'.@@SYS_SYS.'/'.@@SYS_LANG.'/'.@@SYS_SKIN;
	
   for($i = 1, $tot = count($subcases); $i <= $tot; $i++) {
       $subcase = new Cases();
       $subaplica = $subcases[$i]['APP_UID'];
       $aSubCase = $subcase->loadCase($subcases[$i]['APP_UID']);
       $aSubCase = $subcase->loadCase($aSubCase['APP_UID'], $aSubCase['APP_DATA']['INDEX']);
	   
	   $sql = "SELECT C.CON_VALUE FROM APPLICATION A, CONTENT C WHERE A.PRO_UID = C.CON_ID AND 
	   		C.CON_CATEGORY = 'PRO_TITLE' AND A.APP_UID = '$subaplica'";
       $nameproceso = executeQuery($sql);
       $nameProcess = $nameproceso[1]['CON_VALUE'];
       $nameProcess = substr($nameProcess, 0, strpos($nameProcess, "-"));

       @=subcasesGrid[$i] = array(
          'caseNo'      => $nameProcess . $aSubCase['APP_NUMBER'],
          'status'      => $aSubCase['STATUS'],
          'currentUser' => $aSubCase['CURRENT_USER'],
          'index'       => $aSubCase['DEL_INDEX'],
          'createDate'  => $aSubCase['CREATE_DATE'],
          'updateDate'  => $aSubCase['UPDATE_DATE'],
          'dueDate'     => $aSubCase['DEL_TASK_DUE_DATE'],
          'caseURL'     => $baseUrl . '/cases/cases_Open?APP_UID=' . $aSubCase['APP_UID'] .
		                   '&DEL_INDEX=' . $aSubCase['DEL_INDEX'] . '&ACTION=VIEW'
	   ); 
    }
}
Si este cambio no resuelve el problema, puedes publicar el contenido de tu variable @=subcasesGrid que ves en Debug Mode. Necesito ver esto para saber si el problema es el trigger o el JavaScript.

Re: Accessing Grids with JavaScript

Posted: Mon Aug 26, 2019 1:16 pm
by milagrosmaria16
Buen día Amosbatto,

Con las actualizaciones comentadas, me aparece lo siguiente:
Image

Espero me puedas seguir apoyando por favor.

Muchas gracias!!

Re: Accessing Grids with JavaScript

Posted: Mon Aug 26, 2019 8:00 pm
by amosbatto
Entonces debes usar este codigo para chequear si la busqueda en la base de datos devuelve algo:
Code: Select all
$subcases = executeQuery("SELECT APP_UID FROM SUB_APPLICATION WHERE APP_PARENT = '$caseId'");
@=subcases = $subcases; 

Re: Accessing Grids with JavaScript

Posted: Tue Aug 27, 2019 4:46 pm
by milagrosmaria16
Buen día Amosbatto,

Puse lo que me comentaste y me sigue apareciendo lo siguiente:
Image

Lo cambié de la siguiente forma:
Code: Select all
$caseId = @@APPLICATION;
$subcases = executeQuery("SELECT APP_PARENT FROM SUB_APPLICATION WHERE APP_UID = '$caseId'");
@=subcases = $subcases;
Pero sigue sin funcionar :/

Tu apoyo por favor :/

Re: Accessing Grids with JavaScript

Posted: Tue Aug 27, 2019 8:24 pm
by amosbatto
Si quieres que yo depuro tu codigo, tienes que crear un proceso muy sencillo con sola la parte relevante que yo puedo ejecutar facilmente en mi maquina.

Re: Accessing Grids with JavaScript

Posted: Wed Aug 28, 2019 12:58 pm
by milagrosmaria16
Buen día Amosbatto,
De acuerdo, ya cree el nuevo proceso, espero tu apoyo por favor.
Muchas gracias!!!

Re: Accessing Grids with JavaScript

Posted: Mon Sep 02, 2019 11:24 am
by milagrosmaria16
Buen día,

Si alguien conoce alguna forma de obtener información de otros procesos en el formulario, les agradecería muchísimo que me la puedan compartir por favor.

Gracias de antemano.