Beta 1: 19/11/2015

NOTA:

Esta Beta parte de la versión PXTools (for XEv3) 1.0 Upgrade 1

Aquellos desarrollos que tuvieran KBs con versiones anteriores a esta Beta y con las Masterpages modificadas deberán realizar las modificaciones en según está indicado.

A partir de esta Beta el requerimiento mínimo de la versión de GeneXus X Evolution 3 es el Upgrade 3

Nuevas Funcionalidades

  • Soporte de Control Chosen en Transacciones, Selection y Section type Grid del PXWorkWith y en PXParameterRequest. Se automatizó toda la generación de Procedimientos y DataProvider tanto para la carga del Chosen como para la devolución de la colección resultante de elementos seleccionados a través del control. Se habilita como un control asociado a cualquier variable basada en un atributo o Dominio o Tipo de dato básico y con la propiedad Collection en "True" a través del nodo ControlInfo. Se habilitaron los métodos &Var.Repaint() (carga el Chosen a partir de la colección de la variable &Var) y el método &Var.GetData() (carga de la variable &Var a partir de los datos del Chosen) para realizar las invocaciones a los procedimientos y dataprovider creados para ese objetivo.

  • Propiedad Transaction in Section General in View en raíz de instancia de PXWorkWith. Esta propiedad automatiza la inclusión de la Transacción como componente y ser ubicada en el Section General del View. Esto genera cambios importantes ya que el WebPanel generado del View comenzará a recibir el Modo para poder trasladar ese valor a la Transacción. Esto es parte de el primero proceso de transformación de la instancia ya que esta funcionalidad no fue implementada a nivel del generador sino que se incorporó una capa adicional de transformación de la instancia al momento de aplicar el pattern.

  • Se adicionó también la propiedad del "View Sections Even If no Record Found" del View: Esa propiedad se agregó para permitir usar el View cuando no hay registro instanciado. En la versión previa llamar a un View pasándole por parámetro un id de registro inexistente deja la pantalla completamente en blanco ya que no era concebible esa situación.

  • Soporte de Control Accordeon en el View del PXWorkWith. Se agregaron algunas propiedades nuevas:

    • Display Sections: Tabs o Accordion.

    • Load Section: On Selection o On Startup. Determina el momento en que se cargan las secciones. En el caso del Accordeon las sessiones forsosamente se cargan "On Startup" en el caso de Tabs podrá ser opcional. Por el momento el soporte de Load "On startup" con el Display Sections con Tabs no está soportado pero se trabajará en esta funcionalidad en las siguientes Betas.

    • Tabs Behaviour: Define comportamientos cuando se selecciona el Accordion.

    • Tabs Height Style: Define comportamiento de las secciones con respecto a la altura a definir.

  • Nuevo Call Type en Acciones: Dynamic Link y Dynamic Call. Esta funcionalidad estaba soportada en versiones anteriores utilizando la funcionalidad de Call Type External Link. El problema es que a partir de la existencia de Módulos y de la posibilidad de hacer links dinámicos a objetos de la KB o a referencias externas fue necesario formalizar mejor la forma de representar este tipo de invocación. Relacionado estos valores se encuentran otras nuevas propiedades:

    • Call Method: Attribute o Variable

    • Attribute Reference: Permite la selección del atributo en caso de haber seleccionado el Call Method "Attribute".

    • Variable Reference: Permite la selección de la variable en caso de haber seleccionado el Call Method "Variable".

    • Destination Type:

      • GeneXus Object: que identifica que se va a invocar a un objeto de la KB no desarrollado por PXTools y por lo tanto no adicionará el &WindowType correspondiente por parámetro y adiciona adelante el Project Namespace soportado a nivel del LoadPXToolsParameters.

      • PXTools Object: que identifica que se va a invocar a un objeto de la KB creado por PXTools y por lo tanto se le pasa el parametro correspondiente al &WindowType y adiciona adelante el Project Namespace soportado a nivel del LoadPXToolsParameters.

      • External Reference: No va a llamar a ningun objeto de la KB por lo que no adiciona parámetros ni agrega el Project Namespace.

  • Nueva propiedad de MemoLines en nodo Templates de preferencia del PXWorkWith: Esto permite calcular de forma estandard la altura que van a calcularse cuando se coloquen campos memo en secciones tabulares y que deban ser calculadas las alturas de esas secciones tabulares para el correcto funcionamiento del template con la GXUI. La definción de la altura a aplicar en la clase MemoAttribute deberá ser coherente con este valor a definir.

  • Nueva estética en la representación de las ventanas Popups Modales. Se agregaron nuevas clases en el Theme de PXTools para lograr esta nueva estética visual.

  • Soporte del valor "rd" en los valores del Rows Style: Esta propiedad determina el valor por defecto a calcular en esa row dependiendo del control que se esté utilizando.

  • Esto es muy útil para poder customizar alguna altura específica de un Row del form sin tener que forzar el calculo de altura para el resto de las rows.

  • Para esto también se adicionaron nuevas propiedades en el nodo de cada Plataforma cuando se selecciona en la propiedad "Form Rows Style" con el valor "User Defined Height":

    • Attribute Row Height: Altura estimada cuando se despliega una variable o atributo.

    • Category Row Height: Altura estimada cuando se despliega un título asociado a un nodo Row.

    • Button Accion Row Height: Altura estimada cuando se despliega un Button Action.

    • Image Action Row Height: Altura estimada cuando se despliega un Image Action.

    • Label Row Height: Altura estimada cuando se despliega un Textblock.

En caso de que cualquiera de estos valores tenga el valor <default> se tomará el valor de la propiedad "Form Row Height" que es una propiedad existente de versiones previas.

  • Nueva propiedad "Compatibility Version en nodo "Prefixs": Esta propiedad genera de forma automática las letras de prefixos correspondientes a los tipos de objetos generados que en versiones de GeneXus 9 o previas eran agregadas por GeneXus.

  • Está previsto para cuando estamos realizando migraciones de versiones de GeneXus 9 con PXTools a la última versión de GeneXus.

  • Esta funcionalidad en versiones previas se solucionando indicado dicha letra en cada tipo de prefijo pero detectamos que en los SDTs las versiones de GeneXus 9 no generaban ninguna letra inicial. Si agregábamos la letra directamente en los prefijos del Selection o del Tabular el pattern generaba esa legra también en el SDT lo que generaba nuevos SDTs y no aprovechaba los SDT existentes de las versiones anteriores.

  • Esta nueva propiedad determina en forma automática las letras a generar para generar los objetos con los mismos nombres que se venían generado desde GeneXus 9.

  • Soporte de "Action Post Code" tanto con invocación de interfaces con "Target" "New" como "Modal".

  • Nueva propiedad "Target" en nodo Confirm. A partir de esta versión es posible invocar a los confirms tanto con ventana "New" como "Modal". Dicha propiedad quedó definida por defecto con el valor "Modal" por lo que esto generará un cambio de comportamiento de los confirms ya que el dialogo Modal bloquea de mejor manera la ventana inferior que las ventanas con "Target" "New".

  • Soporte de tipo de dato "Audio" en variables.

  • Nuevo valor de la propiedad "Type" de nodos "Code": "After Trn" soportado para transacciones.

  • Nuevo valor de la propiedad "Evaluate Link" en nodos "Action": "Event with Javascript". Esta propiedad ya existía en la versión de PXTools de GeneXus 9 y en el proceso de pasaje a la Evolution se dejó de soportar. Nuevamente quedó soportada y permite generar una acción type "Link" pero generando el link por javascript. Esto permite adicionar en el "Action Previous Code" códigos que impliquen adicionar códigos por javascript.

  • Nuevas propiedades para nodo ControlInfo:

    • Data Source From:

      • "Attributes": valor compatible con las versiones previas.

      • "Data Provider": nuevo valor que habilita otras propiedades para referenciar la Data Provider y parámetros.

    • Data Provider: referencia al Data Provider.

    • Parameters: Parámetros en el proceso de invocación al Data Provider.

    • Item Value: Campo del Data Provider que represetará los valores a desplegar en el control.

    • Item Description: Campo del Data Provider que representará la descripción a desplegar en el control.

  • Nuevas propiedades en nodo Link:

    • Call Type:

      • Link: Valor compatible con las versiones previas.

      • External Link: Para hacer referencias a links externos a la KB.

      • Dynamic Link: Compatible con nueva valor en Call Type en Acciones previamente descripto.

    • Target: Nuevos valores similares a Acciones.

    • Previous Code: Comportamiento similar en Acciones.

  • Disminución de restriccion del uso del valor "Forced on Control" de la propiedad "Call Type" de nodos Prompts. Se permite ahora utilizar parámetros que no necesariamente deban corresponder a atributos o variables que tengan que estar en pantalla.

  • Nueva propiedad "Picture Programming Style" en Variables: Definen el comportamiento del manejo de Picture en variables. A partir de la Evolution 3 se soporta esta nueva propiedad en GeneXus lo que puede en algún caso utilizarlo o en otros casos mantener el comportamiento que se tenía en versiones previas con PXTools.

  • Soporte de nueva propiedad "Invisible Mode" para variables o atributos que traslada la propiedad para los objetos generados de la plataforma Smart Devices.

  • Soporte de subnodo Attributes debajo de nodos "Layot Reference". Esto permite customizar principalmente la propiedad RowsStyle también en Layouts que son referencias a otros Layouts.

  • Nuevo utilitario para sincronización de KBs GeneXus. El objetivo por el cual se creó es la automatización de la replicación de objetos entre distintas KBs y la generación automática de XPZs.

  • Este utilitario se instala en la raíz de la instalación de GeneXus ya que necesita una grán cantidad de dlls de GeneXus. Es un ejecutable command Line que se llama PXToolsKBSynchronization.exe.

  • A modo de ejemplo mostramos aquí el código de el archivo .bat donde llama a este proceso para la generación automática de la gran mayoría de los xpz de PXTools:

  • CD "C:\\Archivos de programa\\Artech\\GeneXus\\GeneXusXEv3" PXToolsKBSynchronization.exe --response-yes-to-all "P:\\Patterns\\PuntoExe\\6.0\\for XEv3\\Scripts\\PXToolsKBSynchronization.xml"

  • El archivo xml referenciado contiene todas las indicaciones para que el proceso realice las tareas indicadas.

  • Dejamos en la carpeta Files del directorio de instalación de PXTools el archivo PXToolsKBSynchronization.xml a modo de ejemplo.

  • Las funcionalidades soportadas son:

    • Exportación de objetos:

      • Puede ser cualquier objeto GeneXus. En caso de ser Folder o Módulo el proceso incluirá todos los objetos de esa Folder o Módulo

      • Se soporta Exclusiones de objetos.

      • Se soporta Inclusiones posteriores sin dependencias.

    • Importación de xpz:

      • Se indica un xpz a importar.

      • Se soporta Exclusiones de objetos que se encuentren en el xpz seleccionado.

    • Creación de KBs

      • En caso de que se solicite abrir una KB y no se encuentre en el directorio seleccionado es posible solicitar que habilite la creación de la misma.

      • La indicación de los datos de conexión de la base de datos se definen en el nodo raíz del xml.

      • Es posible indicar proceso de Importación especiales para el caso en que la KB se esté creando en ese momento.

Errores Corregidos

  • No se trasladaba la propiedad DataSelector del nodo Selection, Section o Prompt del PXWorkWith al WebPanel o WebComponent generado.

  • Al aplicar una instancia PXWorkWith no se generaba en forma automática la instancia de PXAudit de las Transacciones que estaban delcaradas bajo los nodos Section.

  • Se mejoró el control de licencias para escalar a versiones superiores si la licencia por defecto de la version activa es la Trial.

  • Propiedad "Internal Scroll" del Section de un PXWorkWith no se visualizaba si estaba la propiedad "External Component" en True.

  • Compatibilidad con Chrome versión 39 o superior. A partir de esa versión se generaba un efecto que las áreas se desencajaban de su lugar.

  • El motivo de este problema es que Chrome cuando renderea el HTML dentro de un iFrame y se encuentra con dos divs "hermanos" peleando por altura, comenzó a darle importancia al segundo div y no al primero. Se generó un arreglo por javascript para resolver este problema que se presentaba con las regiones del gxui.Layout.

  • Otro de los cambios que hubo que realizar a nivel de las masterpages fueron:

    • Crear una nueva clase "InvisibleSection" debajo del nodo "Section" con la propiedad "display" en "none".

    • Tomar todos los elementos debajo del Layout principal y colocarlos dentro de un Section con las siguientes propiedades:

      • Name: MainComponents

      • With: 100%

      • Height: 1px

      • Class: InvisibleSection

Luego de asociar esa clase el Section desaparecerá y solo podrá ubicarse a través del "Document Outliner" de GeneXus.

En caso de ya estar personalizadas las masterpages habrá que hacer este cambio "a mano". De lo contrario los xpz de PXTools quedaron actualizados con dichos cambios.

  • Se logró mejorar el comportamiento de los Prompts. Ahora el comportamiento de las ventanas invocadas por Prompts o Acciones Type Modal se comportan de igual forma que las ventanas invocadas por acciones Type "New". Para lograr esta funcionalidad hubo cambios en el generador para comenzar a tomar en cuenta las preferencias de tamaños de popups del procedimiento "LoadPXToolsParameters".

  • También se dejó de usar la HMPWkW06 que se usaba para los prompts por lo que se puede borrar. Previamente deberán realizar estos cambios:

    • En las preferencias del PXWorkWith cambiar la referencia de la HMPWkW06 por la HMPWkW03.

    • En las preferencias del PXParameterRequest cambiar la referencia de la HMPWkW06 por la HMPWkW05

Por otro lado se quitaron de todas las masterpages líneas que ajustaban el tamaño de la ventana en forma forzada con alguna de estas dos formas:

    • gxui_LayoutTitle.Height = 600

    • gxui_LayoutTitle.Width = 800

    • MasterDataTable.Class = "master_prompt_table"

En caso de ya estar personalizadas las masterpages habrá que hacer este cambio "a mano". De lo contrario los xpz de PXTools quedaron actualizados con dichos cambios.

  • Se generaba código incorrecto si se habilitaba Orden por Columnas y se tenía la grilla con gxui.GridExtension y atributos y variables en la grilla, pero todos los atributos con visible = false.

  • Se deshabilitó la posibilidad de ordenamiento para columnas de grilla con gxui.GridExtension que son variables.

  • Se quitó la propiedad "Sortable" en Variables ya que no es posible ordenar la grilla por columnas que representen variables. Se deshabilitó en forma automática la posibilidad de ordenar en columnas de la grilla asociadas a variables.

  • Generación de Export a Excel en nodo Modes del pattern PXWorkWith generaba incorrectamente los parámetros del procedimiento correspondiente a esta funcionalidad.

  • El código relacionado al Evento After Trn del pattern PXWorkWith no estaba considerante entre los posibles llamadores a la transacción que sea desde el objeto View. Eso genera que en esos casos y luego de invocar a la Transacción desde un Tab de un View siempre volviera al View ignorando la configuración de comprtamiento de la instancia ni de las preferencias. Se presentaba la peor situación si se invocaba la eliminación del registro ya que volvía al View pese a que el registro se había borrado.

  • Modificación del código del controlador del PXWorkWith para considerar que cuando es llamado con el modo delete el Evento Load no se instanciará (ya que el registro fue borrado) por lo que parte del código (relacionado con el modo delete) pasó al Evento Start.

  • Se corrigió forma de generar código asociado a Prompts con "Type" "Rule Forced on Control". A partir de la Evo 3 la lógica implmentada para el forzado del Prompt dejó de funcionar debido a cambios en la forma en que GeneXus interpreta el código, generando en algunos casos que se vea duplicado el botón de Prompt. La nueva forma de realizar el forzado es definir la regla Prompt pero sin dejarlo asociado a un control de imagen dummy y asociando al atributo o variable correspondiente al prompt una clase nueva del thema que invisibiliza el Prompt generado por GeneXus. Para ello se crearon unas clases en el tema que deberán generar:

    • Dependiendo de la clase que tiene asociada el prompt forced se crea una clase hija con el prefijo "InvisiblePrompt" seguido del nombre de la clase superior. Para el caso tradicional de cualquier atributo o variable que no tenga asociada ninguna clase se creó la clase "InvisiblePromptAttribute".

    • Dada una clase creada "InvisblePrompt<sufijo de clase>" se crea en la sección de Custom nn nodo de tipo "Class" con el nombre "InvisblePrompt<sufijo de clase> + a" con la propiedad "Display" en "none".