Saltar al contenido principal
Version: v19 R8

Definir una primera acción

En este tutorial, vamos a trabajar en una aplicación Tasks iOS y veremos cómo lidiar con las acciones en esta aplicación.

Básicamente, lo que queremos hacer en una aplicación Task es cambiar el estado y el porcentaje de finalización de una tarea individualmente.

Más globalmente, queremos cambiar el estado de todas las tareas a pospuesto o en progreso, por ejemplo.

Descargue el proyect Starter y vaya directamente a la sección Actions.

Puede definir acciones para dos niveles:

  • Acciones de entidad
  • Acciones de tabla

Centrémonos primero en las acciones de entidad

Acciones de entidad

PASO 1. Acciones de entidad en la sección Actions

En esta sección Actions, podrá definir todas los nombres, los iconos, las etiquetas de sus acciones, así como también las tablas en las cuales desea que la acción esté disponible y el alcance de las acciones.

La sección Actions está bastante vacía cuando la abre por primera vez, así que haga clic en el botón Más "+" en la parte inferior izquierda para agregar su primera acción.

Create action

Primero definamos una acción que cambiará el estado de una tarea a "Completa" y pondrá el porcentaje de finalización en 100%.

Para definir esta acción:

  • Introduzca taskDone en el campo Nombres
  • Seleccione el icono "Done" de la librería de iconos
  • Introduzca Done en el campo Etiquetas cortas
  • Introduzca Task Done en el campo Etiquetas largas
  • Seleccione la tabla Tasks a partir de la lista propuesta en Tables
  • Seleccione Entidad actual en la lista Alcance

Done action definition

PASO 2. Crear y editar el método On Mobile App Action

Now that your action is defined in the Project Editor, you have to create the On Mobile App Action database method.

Para hacerlo, haga clic en el botón Crear en la parte inferior derecha de la tabla de acciones e ingrese el siguiente código en el método base On Mobile App Action:

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($o;$context;$request;$result)

$request:=$1 // Informations provided by mobile application

$context:=$request.context

Case of

: ($request.action="taskDone")

$o:=New object(\
"dataClass";$context.dataClass;\
"ID";$context.entity.primaryKey;\
"CompletePercentage";100)

$result:=modifyStatus ($o)

Else

// Unknown request
$result:=New object("success";False)

End case

$0:=$result // Informations returned to mobile application

PASO 3. Crear un método "modifyStatus"

Una vez que su método base ha sido editado, debe crear un método modifyStatus que hará el trabajo:

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($dataClass;$entity;$in;$out;$status;$selection)

$in:=$1

$selection:=ds[$in.dataClass].query("ID = :1";String($in.ID))

If ($selection.length=1)

$entity:=$selection[0]

$entity.CompletePercentage:=$in.CompletePercentage

$entity.Status:=3

$status:=$entity.save()

$out:=New object

If ($status.success)

$out.success:=True // notify App that action is successful
$out.dataSynchro:=True // notify App to refresh this entity

Else

$out:=$status // return status to the App

End if

Else

$out.success:=False // notify App that action failed

End if

$0:=$out

Build and Run you app, and there you go! Cree y ejecute su aplicación y ¡listo! Cree y ejecute su aplicación y ¡listo! Cree y ejecute su aplicación y ¡listo! Su acción Done está disponible cuando desliza hacia la izquierda una celda en el formulario Lista, así como cuando hace clic en el botón genérico Actions en la barra de navegación del formulario detallado.

Done action

Acciones de tabla

PASO 1. Acciones de tabla en la sección Actions

Ahora, imagine que se va de vacaciones y quiere cambiar el estado de todas sus tareas a "Pospuesto".

Definamos esta acción desde la sección Action:

  • Introduzca postponeAll en el campo Nombres
  • Seleccione el icono "Postponed" de la librería de iconos
  • Introduzca Postpone All en el campo Etiquetas cortas
  • Introduzca Postpone All en el campo Etiquetas largas
  • Seleccione la tabla Tasks a partir de la lista propuesta en Tables
  • Seleccione Table de la lista Alcance

Postponed action definition

PASO 2. Modificar el método Action

Haga clic el botón Editar en la parte inferior derecha de la tabla action para completar el método base On Mobile App Action:

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($o;$context;$request;$result)

$request:=$1 // Informations provided by mobile application

$context:=$request.context

Case of

: ($request.action="taskDone")

$o:=New object(\
"dataClass";$context.dataClass;\
"ID";$context.entity.primaryKey;\
"CompletePercentage";100)

$result:=modifyStatus ($o)

: ($request.action="postponeAll")

$o:=New object(\
"dataClass";$context.dataClass;\
"Status";4)

$result:= postponeAll ($o)
Else

// Unknown request
$result:=New object("success";False)

End case

$0:=$result // Informations returned to mobile application

PASO 3. Crear un método "postponeAll"

A medida que crea el método modifyStatus, siga el mismo proceso y cree un nuevo método postponeAll que modificará todo el estado del registro:

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($entity;$in;$out)

$in:=$1

$out:=New object("success";False)

If ($in.dataClass#Null)

For each ($entity;ds[$in.dataClass].all())

$entity.Status:=$in.Status
$entity.save()

End for each

$out.success:=True // notify App that action success
$out.dataSynchro:=True // notify App to refresh the selection

Else

$out.errors:=New collection("No Selection")

End if

$0:=$out

¡Cree y ejecute su aplicación! Encontrará un nuevo botón genérico en la barra de navegación de su formulario Lista. Haga clic en él para activar la acción Postpone All.

Final result Postponed Action

¿Qué hacer ahora?

¡Felicitaciones! ¡Felicitaciones! ¡Felicitaciones! Acaba de agregar 2 acciones a su aplicación iOS. ¡Felicitaciones! ¡Felicitaciones! Acaba de agregar 2 acciones a su aplicación iOS. ¡Ahora puede agregar todas las acciones que necesita a su aplicación Tasks!

Final result All Action

Descargue el proyecto terminado que incluye varias acciones: