Swiss Magic Data Editor: Difference between revisions

From IHRIS Wiki
Line 38: Line 38:
*renameInputs()  Es necesario llamarlo para renombrar todos los elementos del formulario html input/select/textarea del DOMNode dado que estan asociados a ese nodo swiss.
*renameInputs()  Es necesario llamarlo para renombrar todos los elementos del formulario html input/select/textarea del DOMNode dado que estan asociados a ese nodo swiss.
*addAjaxLink() Agrega un vincula a un nodo swiss secundario. Si el navegador es compatible con AJAX, lo hará de manera AJAX. De lo contrario sera solamente un vinculo
*addAjaxLink() Agrega un vincula a un nodo swiss secundario. Si el navegador es compatible con AJAX, lo hará de manera AJAX. De lo contrario sera solamente un vinculo
*get/set/hasField()  Métodos de conveniencia para tener acceso al nodo secundario de datos magic (escalar) nombradp.
*get/set/hasField()  Métodos de conveniencia para tener acceso al nodo secundario de datos magic (escalar) nombrado.


==The Swiss Factories==
==The Swiss Factories==

Revision as of 14:11, 28 September 2013

La mayor parte de la configuración del software iHRIS se maneja definiendo los datos magic . Para manejar la edición estructurada y como se muestran estos datos magic de configuración y evitar la corrupción de los datos, se desarrolló un conjunto de clases de php, los editores de datos Swiss Magic. Estos se utilizan, por ejemplo en la definición de las relaciones entre formularios e informes.

Los editores Swiss Magic editan y ven jerárquicamente los datos de configuración. este artículo describe la estructura de las clases Swiss Magic PHP.

Características

  • Proporciona diferentes maneras de atravesar la jerarquía de la configuración de los datos magic por medio de diferentes fábricas
  • Mucho de las buenas características de AJAX se han incluído para mostrar sub-menús dentro del menú actual
  • Utilizado en la herramienta de construcción de "Relaciones de Formularios" y de "Informes Personalizados"
  • Utilizado en la herramienta de "Configuración de Módulos
  • El procesamiento y muestra de los datos ya está localizado. Solamente necesita llamar "renameInputs()" para renombrar cualquiera de sus elementos de formularios html.

Ejemplos

El Nodo Swiss

Un nodo swiss es una sub-clase de I2CE_Swiss. Puede pensar en las clases I2Ce_Swiss como definidores de un GUI widget para la interacción con los magic data. Asociados a un nodo swiss esta:

  • un nodo de magic data

Un nodo swiss tiene las siguientes funciones:

  • valores de visualización guardados en este nodo de magic data
  • crear una interfaz de usuario para editar los valores en este nodo de magic data
  • procesar un arreglo asociativo de valores para actualizar el nodo de magic data
  • determiner los tipos de sus nodos swiss secundarios. Un nodo de tipo $type es un nodo de clase I2CE_Swiss_$type.

Métodos a implementar

Al crear un Nuevo tipo Swiss solamente debe implementar estos métodos:

  • displayValues() El método utilizado para mostrar los datos asociados con el swiss node. Pueden definirse con diferentes acciones. Hay dos acciones principales:
    • view: La acción de mostrar una vista de solo lectura de los datos magic en ese nodo.
    • edit: La acción de mostrar una vista de edición de los datos magic en ese nodo.
  • processValues() El método utilizado par procesar un arreglo asociaso de valores y actualizar los datos magic. Debe ser definida
  • getChildType() Obtiene el tipo de secundario swiss con el nombre dado.

Métodos Utiles

Se deben utilizar los siguientes métodos

  • getStorage() Obtiene el nodo de magic data asociado al nodo swiss.
  • getChild() Obtiene el nodo swiss secundario con el nombre dado.
  • renameInputs() Es necesario llamarlo para renombrar todos los elementos del formulario html input/select/textarea del DOMNode dado que estan asociados a ese nodo swiss.
  • addAjaxLink() Agrega un vincula a un nodo swiss secundario. Si el navegador es compatible con AJAX, lo hará de manera AJAX. De lo contrario sera solamente un vinculo
  • get/set/hasField() Métodos de conveniencia para tener acceso al nodo secundario de datos magic (escalar) nombrado.

The Swiss Factories

The Swiss Factory handles:

  • provides the appropriate magic data node associated to a swiss node
  • creates the appropriate child swiss nodes
  • traverses the swiss nodes when given a path
  • pre-process GET/POST variables and passes them to the appropriate swiss node.
  • handles errors in updating values based on GET/POST values.
  • implements the Iterator and Count Interface

The Swiss Factory is determined by:

  • the root magic data node
  • the root swiss node class

There are two factories available Swiss Magic and Swiss Config. These have corresponding I2CE_Page sub-classes to access the web interface.

Swiss Magic Factory

This is is the swiss factory do create dynamic content in I2CE. This includes:

  • Custom Form Relationships
  • Custom Reports
  • Custom Report Views

Parent and Children

Any (non-scalar) magic data node can serve as the root swiss node.

The children of a swiss node are in one to one correspondence with the child nodes of the corresponding magic data node. The names of the child swiss nodes are the same as the names of the child magic data nodes.

Page Access

This factory can be accessed in the web interface as in instance of the I2CE_Page_SwissMagic class. This is done for:

  • Form Relationships
  • Custom Reports
  • Custom Report Views

Swiss Config Factory

This is the Swiss Factory designed for the configure modules tool.

Parent And Children

In this factory the child swiss nodes of a given swiss class are defined by a module configuration XML#Defining Magic Data in Configuration Files file. The root parent swiss node is the main <configurationGroup> in the configuration XML file.

The child swiss nodes associated to a given <configurationGroup> are exactly the child <configuration>s and <configurationGroup>s on that node. The names of the child swiss nodes are the names of the child <configuration> and <configurationGroup> nodes.

The magic data node associated to a swiss node is the exactly the magic data node associated to the given <configuration> or <configurationGroup> node as defined by the path and name attributes.

Page Access

For the "Configure Modules" page, each module instantiates the a swiss factory by the an instance of the I2CE_Page_SwissConfig class.