wiki:UI

Version 2 (modified by fero, 3 years ago) (diff)

Struttura dell'URL

La logica dell'interfaccia web è presa da SANET http://sanet.sourceforge.net by Laboratori Guglielmo Marconi.

L'interfaccia si basa su una struttura a schede e a blocchi. È versatile e personalizzabile per utente.

La struttura di default è definita nel parametro RESOURCE_PAGE_BLOCKS

Visione generale

Dall'URL alla vista

Passi principali:

  • si accede ad un URL che è _sempre_ riferito ad una risorsa. Le risorse principali le trovate nel dizionario types_model_d in des/models.py
  • la risorsa si identifica facilmente dato che nell'url sono sempre presenti i parametri <resource_type> e <resource_id>
  • interviene il Middleware (file middleware.py) https://docs.djangoproject.com/en/dev/topics/http/middleware/ che SETTA un attributo request.resource all'istanza cui la pagina si riferisce. L'oggetto request è quello che arriva alle viste https://docs.djangoproject.com/en/1.3/topics/http/views/ (v. parametro request)
  • Poi viene chiamata la vista opportuna a seconda degli url specificati praticamente in urls.py , rest/urls.py, rest/views/urls.py

Come si crea la pagina

  • Di base prima si scarica tutto l'html
  • Poi viene richiesta via AJAX la configurazione (default_settings.RESOURCE_PAGE_BLOCKS)
  • Poi vengono prodotte le varie sezioni ed eventuali blocchi
  • Ogni blocco richiama il proprio contenuto e dispone di una parte python (vista), una rappresentazione xml (template) e una parte javascript (logica client). La parte javascript ancora non l'ho vista ma per la parte python c'è una API rappresentata dalla classe AbstractBlock che è in rest/views/blocks/__init__.py
  • Bisognerebbe creare una API per BlockWithList un blocco che include una lista di elementi. Intanto vi ho lasciato per esercizio di provare ad implementare i blocchi gas_list e supplier_list

NOTA: nella API dei blocchi secondo me tutte le funzioni che si basano su resource_type e resource_id dovrebbero essere sostituite dal parametro resource

NOTA2: per ora la classe URN in lib/urns.py non è da usare che aggiunge confusione. Vedremo poi se reintegrarla

Specifiche

Struttura dell'URL

È fondamentale definire un pattern coerente per la struttura dell'URL.

Ogni pagina e ogni parte di pagina è riferita ad una risorsa. Tenere presente che, qualora necessario, si potrebbero creare anche risorse fittizie per soddisfare questo requisito. Pertanto, se ogni pagina è riferita ad una risorsa, sembra coerente che ogni URL sia formato a partire da <tipo di risorsa>/<id della risorsa> successivamente si potrebbe mettere il nome dell'applicazione e successivamente il nome della vista. Questo conferma quanto già ipotizzato nel file middleware.py da chi ha evoluto l'interfaccia grafica di SANET sviluppata inizialmente da Luca Ferroni.

Quindi un buon pattern per l'URL potrebbe essere /<tipo di risorsa>/<id della risorsa>/<nome applicazione>/<vista>

Implementare un nuovo blocco