Backend

lgs-backend es un nuevo proyecto que vamos a comenzar para disponer de
herramientas alrededor de LGS para poder administrarlo y realizar tareas
automáticamente como exportar e importar información. Además queremos
que sea la herramienta para introducir datos de una manera amigable.

lgs-backend no pertener a lgs-server. lgs-backend es un proyecto a
parte, que estará desarrollado en GWT, y desde 1 misma instancia de este
proyecto se podrán controlar N lgs-server (uno a uno).

1 - Ideas para las funcionalidades del backend:

- Acceso anónimo/login.
- Selección de servidor con el que trabajar.
- Añadir/Eliminar/Editar Capas, Contenidos y Usuarios.
- Añadir contenido temporalmente.
- Interfaz amigable con mapas para subir contenido o visualizar los existentes.
- Procedimientos para importar/exportar desde/hacia un servidor LGS (en un formato especificado).
- Utilidad para generar capas de información sin necesidad de conectarse a un servidor.
- Mandar contenidos a correos electrónicos u otras fuentes.
- Realizar las mismas peticiones que el cliente: busqueda de nodos segun distancias, tipos, etc...
- Especificación de la localización ya sea para añadir contenidos desde nuestra posición, como para buscarlos.
- Acceso a todas las release?? (descargar los apk para instalarlos en un terminal o emulador).
- Cuando accedes con login, se carga una lista de los nodos actualizados, añadidos o borrados desde la última conexión (pudiendo especificar un radio).

2 - Estudio del diseño del sitio y busqueda de themes

Arbol del sitio:

Funcionalidades del sitio:

- En la pantalla de selección de servidor, se puede especificar "ninguno" y trabajar sobre el backend sin conexión a ninguna base de datos, para hacer pruebas, o simplemente para preparar algunos contenidos y pedir que sean exportados.

- El acceso al servidor requiere el nombre de este, el usuario, y el password. Por supueto habra una opcion para darse de alta en el servidor.

- Una vez dentro del servidor, si eres administrador, podrás acceder a todo sin tener en cuenta la privacidad. Si por el contrario eres usuario estandar, solo podrás acceder a las opciones teniendo en cuenta la privacidad del servidor.


| Usuarios >  | Añadir
|             | Lista > | Modificar
|                       | Borrar
|                       | Ver Perfil
|             
| Perfil      
|             
|             
| Layers   >  | Añadir
|             | Lista  | Modificar
|                      | Borrar
|                      | Exportar layer
|                      | Nodos > | Modificar 
|                                | Borrar
|                                | Añadir/importar
|                                | Exportar nodos
|             
| Search  ->  | By Location
|             | By Pattern
|             
| LastChanges |
|             
| Settings -> | Set Url Server
|             | Set Username & Password
|             
|- LGS-client | 
|             
|- Soporte >  | Demo del backend
              | Quienes somos 

Sin entrar en busquedas de themes, encontre una web de la que posiblemente saquemos lo que buscamos, la dejo aquí anotada para mas adelante:

Temas candidatos:

http://www.free-css.com/free-css-templates/page7/bright-side-of-life-1.0.php#bookmarks
http://www.free-css.com/free-css-templates/page7/greenpiece.php#bookmarks
http://www.free-css.com/free-css-templates/page9/genious-web.php#bookmarks
http://www.free-css.com/free-css-templates/page10/internet-broadcast.php#bookmarks
http://www.free-css.com/free-css-templates/page13/integral.php#bookmarks
http://www.free-css.com/free-css-templates/page19/internet-jobs.php#bookmarks

La idea es dos lineas de pestañas o menus y submenus, una para saber el menu en el que estamos, y luego dentro de el mas opciones en la segunda linea.

3 - Comienzo del desarrollo.

Histórico:

- Tras unas primeras pruebas de toma de contacto, nos damos cuenta que la parte más problematica va a ser las llamadas al servidor. Como el backend tiene código Ajax, al acceder a un servidor fuera de nuestro dominio, se dan problemas de SOAP. Esto será solucionado con JSONP y deberá ser posible pedir tal formato al servidor, con lo cual la fase de llamadas va a quedar en espera de los cambios en el servidor. Ahora nos pondremos a hacer un primer diseño del arbol html y a subir ese código.

(23-11-2010)
- Ya se ha creado un repositorio git para el desarrollo, el código se puede descargar aquí: http://git.libresoft.es/lgs-backend/ y actualmente esta en desarrollo, con lo cual no tiene ninguna funcionalidad.

- Localizados los cambios a realizar en el servidor para la devolución del JSONP, en breve se publicaran los cambios en el trunk del proyecto.

(30-11-2010)
- Primera fase de GWT, actualmente podemos controlar toda la web desde el código gwt, gracias a la clase uibinder, que nos permite diseñar un html desde una plantilla xml que hace de puente entre el código html y el de gwt. También podemos controlar los accesos a hipervínculos con las clases referentes al historial, con lo cual podemos tener un único html, para controlar toda la aplicación.

- Maqueta montada y que se actualiza cada día en: http://backend.libregeosocial.org/

(1-12-2010)
- Inserción de código gwt directo a los UI creados con UIBinder mediante la implementación de widgets, lo que nos permitirá añadir mapas directamente escritos con código gwt ( con los api ya existentes ) o simplemente añadir formularios creados con código gwt.
- Revisar que opción nos es más favorable, si hacer formularios desde gwt, o bien hacerlos con html ( uibinder ) y luego pasarle los parametros. A la larga es lo mismo, ya que gwt combierte su código.
- Estos cambios se subirán en brebe, junto con los menus laterales del ui.

(10-12-2010)
- La UI está preparada y subida. Se puede comprobar en la máqueta montada.
- Ahora vamos a pasar a comunicarnos con el servidor de lgs que modificamos, tenemos preparadas las llamadas GET, pero lo primero que nececitamos es logearnos y guardar las coockies. Con lo cual el primer paso es hacer un POST y comprobar si se guardan correctamente las coockies. A partir de ahi, es ir creando los formularios.

(25-01-2011)
- Comunicaciones con el sevirdor conseguidas. Actualmente tenemos que hacer algunas pruebas con los navegadores para ver que funciona con todos. En principio y según las terminologías, funciona en firefox, chrome y safary, pero según nuestras pruebas los dos últimos no van, tenemos que realizar pruebas de cabeceras como se muestra en los comentarios de la siguiente web: http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
- Comenzado el parséo de los datos en json recividos de el servidor, siguiendo como guía los parseos realizados por el cliente de lgs en android.

(10-02-2011)
- Los parseos finalizaron con exito, y en la maqueta se reflejan algunos datos sacados del servidor.
- Ahora se plantean algunas mejoras:
- El sistema de listado del que disponemos, no es lo suficientemente robusto, tendriamos que crear las listas mediante un widget, el problema es como crear un widget dinamico, y como acceder a sus variables para rellenar las tablas.
- Actualmente, cuando llegan los datos, la propia funcion en JSNI manda una llamada a una funcion en GWT para parsear y rellenar las tablas. Nos planteamos el caso de que el JSNI devuelva la informacion, y sea GWT quien espere por ellos, y luego mande su parseo. Hay que buscar una forma de hacer esperas de funciones asincronas.