Skip to content
Jorge Bellon edited this page Jun 22, 2016 · 6 revisions

##Dali.Plugins# Este objeto contiene los métodos necesarios para cargar los plugins y obtener las definiciones y las instancias de los mismos, además de una serie de propiedades y funciones internas.

  • pluginInstancesList: este objeto contiene las instancias de los plugins.
  • plugins: este array contiene los nombres de todos los plugins que se quieren cargar en la aplicación.
  • loadPluginFile: dado el nombre de un plugin, esta función hace una llamada AJAX para cargar el fichero del plugin, tanto el del modo "editor" como el del modo "visor" (si lo tuviera). Por el formato que tienen los plugins, al ser cargados se añaden automáticamente a los objetos Dali.Plugins y Dali.Visor.Plugins. Esto se hace dentro de un Promise, para que al finalizar la llamada AJAX se puedan resolver y ejecutar el código que se desee (en este caso, instanciar los plugins). Hasta aquí eran propiedades privadas. Las siguientes están accesibles.
  • get: dado el nombre de un plugin, devuelve su instancia.
  • getAll: devuelve las instancias de todos los plugins.
  • getPluginsInView: dado el identificador de una vista y un parámetro booleano, este método hace una llamada a la API para obtener los plugins añadidos a la vista indicada. Si el booleano es positivo, entonces sólo se devolverán aquellos que hayan especificado un alias. Funciona de manera asíncrona.
  • getPluginsInCurrentView: esta función hace una llamada al método getPluginsInView sin especificar de qué vista se quieren obtener los plugins.
  • loadAllAsync: esta función crea un Promise por cada uno de los plugins declarados en el array plugins mencionado más arriba, llama a loadPluginFile y al finalizar añade a la lista pluginInstancesList la instancia del plugin. Debido a la interrelación existente entre BasePlugin y la definición del plugin (se hacen llamadas a los métodos del otro desde ambas partes) el procedimiento es instanciar un Dali.Plugin, instanciar la definición del plugin seleccionado pasando como parámetro el Dali.Plugin anterior, asignar la nueva instancia al Dali.Plugin original usando el método create y finalmente, asignarla a la lista de instancias pluginInstancesList. Se puede ver el código a continuación:
var plugin = new Dali.Plugin();
plugin.create(Dali.Plugins[name](plugin));
pluginInstancesList[name] = plugin;

Esta función devuelve una nueva Promise que con la lista de Promises creadas anteriormente, lo que hace que todo el método sea asíncrono.

##Dali.Visor.Plugins# Este objeto expone los métodos para trabajar con la lista de instancias de los plugins adecuadas al formato requerido por el visor y por el exportador (definición "modo visor"). Estos son:

  • get: devuelve la instancia del plugin cuyo nombre es pasado como parámetro.

  • getAll: devuelve las instancias de todos los plugins.

  • add: crea una instancia de nueva de un plugin y la añade a la lista. En todo momento sólo va a haber una instancia de un plugin; si por alguna razón este método fuera llamado dos veces para el mismo plugin, la anterior instancia es sobreescrita. Recibe como parámetro el nombre del plugin. Si encuentra la definición del plugin específica para el "modo visor", usa esta para instanciar el plugin, en caso contrario, usa la definición del "modo editor". Esto se hace del mismo modo que los Dali.Plugin.

Además, al cargar los plugins, sus definiciones se van guardando en este objeto.

##Mejoras futuras# Compilar todos los archivos de plugins en uno solo para evitar tener que hacer una petición por plugin al servidor