Type PH-FOTO


Propiedad de tipo FOTO

     <prop name="FOTO" type="PH" labelwidth="0" width="70%" height="50%"/>



Se han definido algunos atributos para personalizar la apariencia de los iconos al definir un type=“IMG” con readonly=“false”. (Firma vieja, para mayor personalización utilizar el type=“DR”)

Atributos:

Atributo Descripción
img-camera Icono de la foto.
img-camera-sel Icono cuando pulsamos sobre el icono de la foto.
img-delete Icono para descartar la foto.
img-delete-sel Icono para cuando pulsamos en descartar la foto.
Apariencia de un campo type=“PH”


Para que una foto se replique, lo único que se necesita es rellenar un campo con el nombre de la foto que se ha tomado y que este campo esté definido en la tabla MASTER_REPLICA_FIELDS.

A través de script, podemos invocar a la cámara y rellenar de valor un campo type=“T” (ui.startCamera(NOMBRE_CAMPO,“photo”)), pudiendo hacer el diseño de pantalla que queramos y llamando a la función con algún botón.

En el código siguiente, combinamos el uso de un campo type=“T” que contendrá el nombre del fichero a transmitir con un campo de type=“IMG” para tener una previsualización del fichero, para ello hacemos uso de un botón que instancia a la cámara y deja el resultado de la foto en el campo FOTO1 (type=“T) y cuando cambia éste (evento onchange), asociamos a su vez dicha foto a un campo type=“IMG” para previsualizarla.

Apariencia visual del código desarrollado a continuación

Ejemplo de código:

<prop name="FOTO1" title="Foto 1" width="74%" labelwidth="6" text-border="true" locked="true" type="T" tmargin="20p" />
<prop type="B" name="MAP_BTNFOTO1" img="camera.png" width="64p" height="64p" method="ExecuteNode(camera('FOTO1'))" newline="false" tmargin="10p" title=" " />
<prop type="B" name="MAP_BTNDELFOTO1" img="deshacer.png" width="64p" height="64p" method="ExecuteNode(delcamera('FOTO1'))" newline="false" tmargin="10p" title=" " />
 
<prop name="FOTO2" title="Foto 2" width="74%" labelwidth="6" text-border="true" locked="true" type="T" tmargin="20p" />
<prop type="B" name="MAP_BTNFOTO2" img="camera.png" width="64p" height="64p" method="ExecuteNode(camera('FOTO2'))" newline="false" tmargin="10p" title=" " />
<prop type="B" name="MAP_BTNDELFOTO2" img="deshacer.png" width="64p" height="64p" method="ExecuteNode(delcamera('FOTO2'))" newline="false" tmargin="10p" title=" " />
 
<prop name="FOTO3" title="Foto 3" width="74%" labelwidth="6" text-border="true" locked="true" type="T" tmargin="20p" />
<prop type="B" name="MAP_BTNFOTO3" img="camera.png" width="64p" height="64p" method="ExecuteNode(camera('FOTO3'))" newline="false" tmargin="10p" title=" " />
<prop type="B" name="MAP_BTNDELFOTO3" img="deshacer.png" width="64p" height="64p" method="ExecuteNode(delcamera('FOTO3'))" newline="false" tmargin="10p" title=" " />
 
<prop name="MAP_FOTO1" type="IMG" tmargin="1%" readonly="true" locked="true" width="30%" height="20%" file-maxwidth="800" file-maxheight="600" />
<prop name="MAP_FOTO2" type="IMG" tmargin="1%" readonly="true" locked="true" width="30%" height="20%" file-maxwidth="800" file-maxheight="600" newline="false" />
<prop name="MAP_FOTO3" type="IMG" tmargin="1%" readonly="true" locked="true" width="30%" height="20%" file-maxwidth="800" file-maxheight="600" newline="false" />
 
<onchange>
	<field name="FOTO1">
		<action name="runscript">
			<script language="javascript">
				self.MAP_FOTO1 = self.FOTO1;
				ui.refresh("MAP_FOTO1");
			</script>
		</action>
	</field>
	<field name="FOTO2">
		<action name="runscript">
			<script language="javascript">
				self.MAP_FOTO2 = self.FOTO2;
				ui.refresh("MAP_FOTO2");
			</script>
		</action>
	</field>
	<field name="FOTO3">
		<action name="runscript">
			<script language="javascript">
				self.MAP_FOTO3 = self.FOTO3;
				ui.refresh("MAP_FOTO3");
			</script>
		</action>
	</field>
</onchange>
 
<camera show-wait-dialog="false">
	<action name="runscript">
	<param name="CAMPO" />
		<script language="javascript">
			ui.startCamera(CAMPO,"photo");
		</script>
	</action>
</camera>
 
<delcamera show-wait-dialog="false">
	<action name="runscript">
	<param name="CAMPO" />
		<script language="javascript">
			self[CAMPO] = "";
		</script>
	</action>
</delcamera>


Se han incorporado ciertos atributos para “limitar” la subida de ficheros en los type “AT” (Adjuntar fichero), “IMG” (Firma), “VD” (Vídeo) y “PH” (Foto).

Atributos:

Atributo Descripción
file-maxsize=“XXX” Tamaño en bytes, tamaño máximo del fichero a subir.
file-msgfail=“Mensaje Error” Personalizamos el error si se intenta subir un fichero muy grande.
file-maxwidth=“800” Ancho máximo de la foto que se tome.
file-maxheight=“600” Alto máximo de la foto que se tome.

Se debe implementar file-maxwidth y file-maxheight para los campos de tipo foto y firma para que los distintos dispositivos repliquen todos las fotos y firmas siempre con la misma resolución. Esto hará que el tamaño de las fotos sea más predecible y de pequeño tamaño, y evitará problemas de memoria en dispositivos de gama baja.