03 febrero 2016

Paso de parámetros por URL a una "Remote Task" (Antes y después de la 6.1)

Desde la versión 6.1 Omnis puede capturar para nosotros los parámetros adicionales incluidos en la URL de llamada a la página web, donde indicamos la carga del "remote form". Éstos parámetros se hacen disponibles directamente desde la variable de parámetro "row" del método $construct, ya conocido por todos nosotros. Su funcionamiento es el siguiente:

Suponiendo la siguiente URL: http://127.0.0.1:5988/jschtml/rfSetCurField.htm?x=y&a=b

La tecnología jsClient agregará los parámetros indicados en una columna adicional de la variable parámetro "row" denominada "URLparams". Los datos de la "URLparams" se encuentran codificados en formato JSON, en nuestro ejemplo, x = y & a = b, la cadena JSON resultante sería: {"x": "y", "a": "b"}. Pero no nos preocupemos, pues podemos hacer uso de la nueva función "OJSON" para convertir esto a formato "row", del siguiente modo:

Do OJSON.$jsontolistorrow(pRow.URLparams) Returns lRow

...donde "lRow" es una variable "row", tendremos que lRow.x='y' y lRow.a='b'.

Pero... y antes de la versión 6.1, ¿Cómo podríamos capturar los parámetros de la URL? ¿Sería posible hacerlo con JavaScrip? Pues la respuesta es, si.

Tan sólo deberemos incluir en la sección "head" de nuestra página web, la siguiente función:

<script>
     function gup( name ){
          var regexS = "[\\?&]"+name+"=([^&#]*)";
          var regex = new RegExp ( regexS );
          var tmpURL = window.location.href;
          var results = regex.exec( tmpURL );
               if( results == null )
                    return"";
               else
                   return results[1];
       }
<script>

Con esta función podemos obtener cualquiera de los parámetros incluidos en la URL, simplemente pasándole en su llamada a al misma, el nombre del parámetro a obtener, por ejemplo:

<script>
     var x=document.getElementById("omnisobject1");
     x.dataset.param1=gup('x');
     x.dataset.param2=gup('a’);
<script>

El ejemplo anterior, pasaría el valor 'y' a la columna "param1" y el valor 'b' a la columna "param2" de la variable parámetro "row", tan sólo deberemos tener en cuanta colocar éste ultimo script, detrás del div donde invocamos al "remote form".

NOTA: Si trabajamos con versiones de Onnis Studio anteriores a la 6, deberemos usar la notación x.attributes.param1.value=gup('x') en lugar de x.dataset.param1=gup('x').

No hay comentarios: