# Javascript on show

**URL:** <https://foros.velneo.com/t/javascript-on-show/6907>\
**Category:** Velneo\
**Created:** [17 Marzo, 2014 06:46 UTC](https://foros.velneo.com/t/javascript-on-show/6907 "2014-03-17T06:46:15Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [17 Marzo, 2014 06:46 UTC](https://foros.velneo.com/t/javascript-on-show/6907/1 "2014-03-17T06:46:15Z")

</div>

Hola, el clásico evento on show para aplicar a las pestañas de los separadores de formularios lo escribí en Javascript y mi sensación es que la presentación de la información es más rápida.  
¿Tiene fundamento esta apreciación mia? Yo no se la encuentro porque JS es siempre en 1º plano ¿no?  
Gracias

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [17 Marzo, 2014 23:44 UTC](https://foros.velneo.com/t/javascript-on-show/6907/2 "2014-03-17T23:44:43Z")

</div>

Hola Benito.

¿A qué código te refieres del evento On Show? ¿Qué código JS has utilizado en su lugar?

Lo de ¿JS siempre en 1º plano?, creo que no es cierto, dependerá del plano en que esté el proceso que llame al subproceso con el código JS.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [18 Marzo, 2014 07:26 UTC](https://foros.velneo.com/t/javascript-on-show/6907/3 "2014-03-18T07:26:06Z")

</div>

var ficha=theRegisterIn;  
var tablainfo=ficha.tableInfo();

var pluralid=tablainfo.pluralId(0)  
var plural=ficha.loadPlurals(pluralid);  
var formulario=theRoot.dataView();  
rejilla=formulario.control(“LIST”);  
rejilla.clear();  
rejilla.append(plural);

* * *

Este es código del evento que aplico a la conexion ON SHOW de la pestaña de un separador de formularios.  
Sustituye al “clásico de v7”  
Crear cesta local  
carga lista  
Añadir a la cesta  
Interfaz procesar rejilla  
cortar lista(0)  
cesta agregar a la lista en curso.

Mi sensación es que carga más rápido, pero no veo el por qué, de ahí mi hilo.

También convertido en una función y con dos parámetros, el número de indice y el nombre de la lista parece que resulta más comodo de aplicar.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [18 Marzo, 2014 08:32 UTC](https://foros.velneo.com/t/javascript-on-show/6907/4 "2014-03-18T08:32:44Z")

</div>

Hola Benito.

El código de JS está más optimizado porque tiene un paso menos.

- En JS la Lista “plural” carga los plurales y los añade directamente a la “rejilla”.
- Sin embargo, en Velneo necesitamos una Cesta intermedia entre la Lista devuelta por “Cargar lista” y la Rejilla de destino.  
El uso de la Cesta es lo que puede ralentizar Velneo respecto al API.

Te propongo otra forma de optimizar la carga de los plurales:

- Los plurales se cargarán normalmente desde el proceso PRO\_CARGAR\_PLURALES\_JS en la Vista de datos CTR\_PLURALES.
- En el evento ON\_SHOW del subformulario ejecutamos:  
If (CONDICION\_REFRESCO)  
Interfaz: Recalcular(CTR\_PLURALES)  
Set (CONDICION\_REFRESCO,0)
- Para optimizar la carga usamos la variable INICIALIZADO en el formulario principal. Esta variable se pone a 1 en el evento Post-Inicializado.
- El proceso PRO\_CARGAR\_PLURALES\_JS tendrá el siguiente código JS:  
`
// Se obtiene la vista en curso
var oVista = theMainWindow.currentView();
if (oVista)
{	// Cogemos el objeto “root” de la vista
var oRoot = oVista.root();
// La Vista de datos se carga sin Datos antes de inicializar el formulario
if (oRoot.varToBool(“INICIALIZADO”))
{	// alert(“Obtiene los plurales”)
if (oRoot)
{	// Formulario principal
var oForm = oRoot.dataView();
var lineas = theRegisterIn.loadPlurals(“LINEAS_ID”);
theRegisterListOut.append(lineas)
}
}
}
`

Con esto conseguimos encapsular el código de obtención de plurales en la Vista de Datos y usar la función Recalcular() para refrescar los datos.

Por otro lado, todo esto se evitaría si Velneo optimizara los controles “Vista de datos” de forma nativa, es decir, que no cargara datos de forma descontrolada como hace ahora. Por ejemplo, que la propiedad “Condicion de activo” puesta a 0 en el Pre\_Inicializado del formulario evitara la carga de datos. Ya está propuesto como Idea.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [18 Marzo, 2014 09:38 UTC](https://foros.velneo.com/t/javascript-on-show/6907/5 "2014-03-18T09:38:02Z")

</div>

Bueno primero gracias porque esto para mí ya es una leccion avanzada.

Pero por favor porque empiezas con theMainwindow si estamos en un formulario?  
Aún no me aclaro con el empleo y cuando de theMainwindow  
No me encaja lo de  
lineas=theRegisterIn.loadPlurals(“LINEAS\_ID”);  
theRegisterIn? de quien? ¿habra que posicionarse en un formulario?

Voy a probarlo.

Seguro que muchos foreros agradecen esta charla.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [18 Marzo, 2014 10:47 UTC](https://foros.velneo.com/t/javascript-on-show/6907/6 "2014-03-18T10:47:55Z")

</div>

Hola Benito.

Perdona, pero entre la porquería de editor que tenemos para el foro, que no se puedan incrustar imágenes desde el portapapeles y mi improvisación, a veces “resulta dificil comunicar fácilmente”.

Me explico:  
Nuestro objetivo es controlar “cuándo el Control Vista de datos debe obtener los datos del vServer” para entre otras cosas optimizar el flujo entre el vClient y el vServer.  
El problema es que el **Control Vista de datos** ejecuta la amalgama de objetos inmediatamente después de instanciarse en el formulario, es decir, tenemos poco control.

En nuestro ejemplo nos fijamos en 4 objetos:

- Formulario principal **FRM\_PPAL**
- El proceso que carga los plurales **PRO\_CARGAR\_PLURALES\_JS**
- El control Vista de datos **CTR\_PLURALES** que amalgama los objetos PRO\_CARGAR\_PLURALES\_JS y la rejilla con los plurales
- El subformulario **FRM\_SUB** que contiene la Vista de datos CTR\_PLURALES

Para controlar que CTR\_PLURALES no cargue datos hasta que el formulario FRM\_PPAL esté inicializado usamos la variable INICIALIZADO. Esta variable estará a 0 cuando CTR\_PLURALES se instancie por primera vez en el subformulario.  
Por esta razón desde el proceso PRO\_CARGAR\_PLURALES\_JS obtenemos la referencia theMainWindow.currentView(), para leer el valor de INICIALIZADO.  
Ten en cuenta que el proceso PRO\_CARGAR\_PLURALES\_JS no sabe nada del exterior y menos que está dentro de un formulario. Solo sabe que tiene origen de tipo Ficha y que puede acceder a él a través de theRegisterIn, por eso la línea theRegisterIn.loadPlurals(“LINEAS\_ID”).

La variable INICIALIZADO se pone a 1 en el evento Post\_Inicializado del formualrio FRM\_PPAL.

Será en el evento On\_Show del subformulario FRM\_SUB donde ya podemos decidir si recalculamos o no la Vista de datos y generar o no tráfico desde vServer.  
Lógicamente en el primer On\_Show la CONDICION\_REFRESCO = 1.

Por supuesto, hay miles de maneras de hacer lo mismo, ésta es una más.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [18 Marzo, 2014 12:47 UTC](https://foros.velneo.com/t/javascript-on-show/6907/7 "2014-03-18T12:47:59Z")

</div>

Paco, gracias que más te voy a decir

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [18 Marzo, 2014 21:54 UTC](https://foros.velneo.com/t/javascript-on-show/6907/8 "2014-03-18T21:54:39Z")

</div>

Bueno no quiero molestarte, solo comentarte que a mí siempre me carga lista al iniciar el formulario principal y eso es porque v7 carga las listas en el post iniciado con lo cual la variable iniciado está siempre a 1.

Por eso en v7 en la vista de datos al proceso de cargar lista no le escribimos el codigo.

Con el codigo que escribí yo, evidentemente sólo se activa con el show porque al iniciarse LIST está sin codigo de carga, por lo tanto vacia

De nuevo gracias por abrirme al codigo JS

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [18 Marzo, 2014 23:41 UTC](https://foros.velneo.com/t/javascript-on-show/6907/9 "2014-03-18T23:41:31Z")

</div>

Hola Benito.

La variable INICIALIZADO pertenece al formulario principal FRM\_PPAL.  
La secuencia de eventos es:

1. Pre-Inicalizado de FRM\_PPAL -\> INICIALIZADO vale 0
2. Se instancia el control Vista de datos CTR\_PLURALES y como INICIALIZADO = 0 no se cargan registros en la rejilla
3. Post-inicializado de FRM\_PPAL -\> INICIALIZADO se pone a 1
4. On-Show del Subformulario -\> se ejecuta Interfaz: Recalcular(CTR\_PLURALES) y como INICIALIZADO = 1 pues ya se cargan los registros en la rejilla.

En tu caso el proceso de carga está vacío, em mi caso es la variable INICIALIZADO la que determina la ejecución del código de carga de registros.

Si quieres te preparo un vin, aunque creo que ya está claro.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [19 Marzo, 2014 07:00 UTC](https://foros.velneo.com/t/javascript-on-show/6907/10 "2014-03-19T07:00:50Z")

</div>

Gracias.  
Ya me funciona, PERO al script tuve que ponerle un else  
Si inicializado==1  
carga la lista  
else  
{  
oRoot.setVar(“INICIALIZADO”, 1);  
//alert(oRoot.varToInt(“INICIALIZADO”));  
};

Al poner en post ini, INICIALIZADO=1, me carga la lista  
sin embargo si viene INICIALIZADO=0 no carga la lista,pasa por el else y pone INICIALIZADO=1 y después el show de la pestaña si Carga la lista porque ya se encuentra con INICIALIZADO=1.

El PRE INI y el POST INI no están muy claros que digamos, probar, probar y probar

* * *

Bueno mi gozo en un pozo, funciona bien la primera vez que abro el formulario pero claro INICIALIZADO se queda a 1 con lo cual si vuelvo abrir el formulario pasa por el proceso de carga, aver como desde el evento de la pestaña pongo INICIALIZADO=0

Seguiré jugando.

No te preocupes en seguir mis incidencias, sólo a efectos de comentarios.  
Gracias

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [19 Marzo, 2014 07:00 UTC](https://foros.velneo.com/t/javascript-on-show/6907/11 "2014-03-19T07:00:50Z")

</div>

Gracias.  
Ya me funciona, PERO al script tuve que ponerle un else  
Si inicializado==1  
carga la lista  
else  
{  
oRoot.setVar(“INICIALIZADO”, 1);  
//alert(oRoot.varToInt(“INICIALIZADO”));  
};

Al poner en post ini, INICIALIZADO=1, me carga la lista  
sin embargo si viene INICIALIZADO=0 no carga la lista,pasa por el else y pone INICIALIZADO=1 y después el show de la pestaña si Carga la lista porque ya se encuentra con INICIALIZADO=1.

El PRE INI y el POST INI no están muy claros que digamos, probar, probar y probar

* * *

Bueno mi gozo en un pozo, funciona bien la primera vez que abro el formulario pero claro INICIALIZADO se queda a 1 con lo cual si vuelvo abrir el formulario pasa por el proceso de carga, aver como desde el evento de la pestaña pongo INICIALIZADO=0

Seguiré jugando.

No te preocupes en seguir mis incidencias, sólo a efectos de comentarios.  
Gracias

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [19 Marzo, 2014 07:29 UTC](https://foros.velneo.com/t/javascript-on-show/6907/12 "2014-03-19T07:29:01Z")

</div>

Logrado, desde el evento on show llamo a un proceso JS que pone la variable INCIALIZADO a 0

Yo es que estoy jugando con un formulario MEN que desde su rejilla lanza un formulario con una pila de formularios y uno de estos tiene separadores en donde estoy aplicando los script.  
Me vino bien porque me estoy dando cuenta como funciona la apertura de formulario, al abrir el formulario se activan todas las cargas de listas de las pilas del formulario esten o no visibles.

Gracias

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [19 Marzo, 2014 08:15 UTC](https://foros.velneo.com/t/javascript-on-show/6907/13 "2014-03-19T08:15:42Z")

</div>

Hola Benito.

Si hubiera muchos más foreros como tú participando no tendríamos un FORO TAN SOSO como éste. Vamos a ver si la comunidad del otro lado del océano se anima porque seguro que hay muchas dudas y comentarios.

Intuyo que habrá mucha gente leyendo el foro, incluido Velneo, pero no se animan. ¡¡ Menos twitter y más foro !!

Gracias Benito por tu estusiasmo.  
Paco Satué

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [19 Marzo, 2014 08:33 UTC](https://foros.velneo.com/t/javascript-on-show/6907/14 "2014-03-19T08:33:03Z")

</div>

Como ya he comunicado en otros hilos estas prácticas se verán reflejadas en el .vin apoyo javascript de [APOYOVELNEO.COM](http://APOYOVELNEO.COM).

De velneo con la documentación javascript… ya me leen en soporte pero ni…

---

<div class="post-metadata">

**Author:** ![ofsantana](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/ofsantana/32/5313_2.png) [@ofsantana](https://foros.velneo.com/u/ofsantana)\
**Post date:** [19 Marzo, 2014 13:46 UTC](https://foros.velneo.com/t/javascript-on-show/6907/15 "2014-03-19T13:46:33Z")

</div>

Hola.  
Ante todo agradecerles enormemente esta aportación.  
En lo que a mi respecta, yo participo en el foro cuando el tiempo me lo permite y cuando veo que puedo aportar algo de valor.

En todo este tema de JS he ido poco a poco, trato de reusar el JS que propone velneo en sus openApps oficiales, en otras ocasiones he intentado hacer pequeñas cosas o me baso en el trabajo que otros programadores muy amablemente publican.

Así que bueno, de nuevo agradecerles y por lo menos de mi parte, siempre que pueda participar y dar una respuesta de valor con mucho gusto lo haré de lo contrario no me gustaría confundir al que esté dudando de algo.

Saludos.

---

<div class="post-metadata">

**Author:** ![benito.lavandeira](https://avatars.discourse-cdn.com/v4/letter/b/439d5e/32.png) [@benito.lavandeira](https://foros.velneo.com/u/benito.lavandeira)\
**Post date:** [19 Marzo, 2014 14:15 UTC](https://foros.velneo.com/t/javascript-on-show/6907/16 "2014-03-19T14:15:30Z")

</div>

Agradezco tu comentario, en foros como dice Paco casi siempre sosos y escribes para animar el cotarro y no hay respuestas parece que aburre un poco.  
A mi tambien me pasa que a veces no me apetece ni preguntar, pero es un error porque aunque sea solo una respuesta, esta seguro que es útil para mucho velneador
