-
Notifications
You must be signed in to change notification settings - Fork 1
##Dali.API# Este objeto expone tres métodos que se encargan de lanzar y gestionar los eventos usados en la comunicación entre los plugins y el núcleo. Estos son:
-
addMenuButton: es llamado al inicializar los plugins, lanza un evento de tipo "addMenuButton" que es escuchado en el componente
PlugginRibbon
y añade un botón al mismo con la configuración proporcionada como parámetro en formato JSON (texto, icono, etc.) para que pueda ser usado posteriormente. -
openConfig: es llamado cuando se quiere tener acceso al modal de configuración de los plugins más complejos. Funciona de manera asíncrona, ya que devuelve la referencia al
div
sobre el que se desea pintar. Recibe dos parámetros, el nombre del plugin a cuyo modal se desea acceder y un booleano indicando si es la primera vez que se accede (necesario para el métodorender
del plugin). Lanza un evento de tipo "openConfig" que es escuchado en el componentePluginConfigModal
y que provoca que este se despligue. Una vez hecho, responde al evento proporcionando la referencia aldiv
antes mencionada. Normalmente, este método es llamado desde el componentePluginToolbar
al pulsar en el botón de "abrir configuración" o al crear un plugin. Para implementar esto, se han usado promises. -
renderPlugin: es el método más utilizado y se usa para renderizar los plugins. Lanza un evento de tipo "render" que se escucha en
DaliApp
y en función del parámetro "isUpdating", lanza una acción u otra para crear o actualizarunDaliBox
en el estado de la aplicación. Además, recibe como parámetros un JSON indicando el HTML que debe renderizar, la barra de herramientas del plugin, la configuración, su estado, un conjunto de identificadores (el que hace referencia al propioDaliBox
, a su padre y a su contenedor) y una serie de parámetros iniciales que se desee que tenga elDaliBox
(como posición o tamaño).
##Dali.API.Private# Este objeto expone un diccionario con todos los tipos de eventos usados además de cinco métodos, que son los encargados de lanzar y escuchar los eventos de una manera genérica.
Un evento tiene siempre una propiedad llamada emit
que es una cadena de texto que lo identifica de manera unívoca con respecto al resto. Además, si se quiere poder contestar a ese evento, deberá tener una propiedad llamada answer
que también es una cadena de texto que sirva para identificarlo de manera unívoca (es recomendable usar la misma que para emit
añadiendo el sufijo "_back").
Los métodos expuestos en este objeto son:
-
emit: recibe dos parámetros, el nombre del evento que quiere lanzarse y un objeto que será añadido al mismo como payload. Con estos valores, crea el evento como un
CustomEvent
y lo lanza. -
listenEmission: recibe dos parámetros, el nombre del evento y una función que se ejecutará cuando este sea escuchado. Su función es añadir al objeto
window
el escuchador del evento. -
answer: hace la misma función que emit pero usa la propiedad
answer
del evento indicado en vez deemit
para crear el evento. -
listenAnswer: hace lo mismo que listenEmission con la particularidad de que la función recibida como parámetro para ser ejecutada al ser escuchado el evento no se ejecutará aquí, sino que se pasará como parámetro a cleanUpAndResolve y será esta la ejecutada. Además, se guarda la referencia a cleanUpAndResolve después de haberle pasado sus parámetros correspondientes para poder eliminar el escuchador del evento, como se verá a continuación.
-
cleanUpAndResolve: se encarga de quitar del objeto
window
el escuchador del evento de respuesta, ya que si no, podría ser añadido varias veces y esto podría llevar a fallos al lanzar la función asignada al evento varias veces. Para poder eliminarse, se ha de guardar la referencia exacta a la función asignada al evento, y esto hemos visto que se ha hecho ya en listenAnswer. Recibe tres parámetros, que son el nombre del evento inicialmente lanzado en answer, la función que se quiere que se ejecute al recibirse este evento y la propia instancia delCustomEvent
lanzado en answer con el payload proporcionado en ese método.
##Mejoras futuras# Hacer inaccesible la parte privada de la API