Descrizione
Si deve realizzare un front end interamente basato su Javascrit, possibilmente utilizzando angularJS.
PREMESSA : abbiamo già realizzato un framework per lo sviluppo di applicazioni "Line of Business" che a partire da un repository di regole di business è in grado di istanziare un applicativo perfettamente funzionante in ambiente .NET winform.
Adesso abbiamo la necessità di realizzare un player, che a partire dallo stesso repository (o da una sua versione specializzata) sia in grado di generare applicazioni che girino all'interno del browser.
La parte back-end è stata già implementata e vengono esposti dei web services (formato JSON) che forniscono i descrittori delle form e delle logiche di business (metadati) oltre a fornire i dati al palyer web. Non ci si deve preoccupare dello strato di accesso al dato, e neanche dello strato di esposizione di dati e metadati.
Tieni presente che il back-end è stato realizzato interamente in .NET e che supporta quasi tutti i motori di database.
Ci piacerebbe che la parte di template grafico fosse risolta utilizzando Bootstrap, ma questo è un requisito opzionale.
In particolare il player dovrebbe comporre a runtime la pagina web con a bordo tutta la logica di presentazione affidata a javascript.
Nel dettaglio il player dovrebbe essere in grado di effettuare il render di quanto segue:
- pagina di tipo griglia : con filtri, paginazione, ordinamento per colonne, posizionamento e ridimensionamento delle colonne, export su excel, (non è previsto almeno per il momento l'editing del record direttamente in griglia, che avviene solo in modalità "single record").
- pagina di tipo single record, dove viene mostrato un solo record in forma scalare. In questo caso nei metadati viene indicato solo l'ordine dei campi e il tipo campo la form si può comporre al volo. Sul single record si possono eseguire le operazioni di insert, update e delete.
- Pagina di tipo Master/Detail che combina la testata in modalità single record e i figli (anche più di uno ma a un solo livello - fratelli tra loro), in modalità griglia.
Si tenga presente che i dati vanno presentati/editati con un editor opportuno ad esempio per le date deve esserci il datetimepicker.
In generale per ogni singolo campo della tabella le informazioni che abbiamo a disposizione nel metadato sono:
- Etichetta
- Obbligatorietà
- Tipo dato (editor)
- Regola di validazione (scritta in javascript)
- Se fa parte della primary key (in questo caso ha un comportamento particolare)
- Se è una chiave esterna; in questo caso viene presentato come una combox (o popup griglia) che effettua la ricerca su un’altra tabella. Questo tipo di editor è definito "look-up" La look-up potrebbe essere anche non basata su un'altra ma semplicemente su una lista di valori predefinita
- Formato (numerico e di data)
In ogni pagina inoltre devono essere risolti gli aspetti di navigazione tra una pagina e l'altra, il menù e l'autenticazione. Per ognuno di questi aspetti è già esposto un web service, bisogna implementare solo il front-end.
Questo progetto fa parte di un progetto molto più ampio che coinvolge altre software house in Italia e che, tra l'altro, prevede player di questo tipo anche su altre piattaforme e dispositivi.
In ogni caso il player web ha una grande importanza per noi, e la timeline di sviluppo è di ampio respiro. Quello che si chiede oggi rappresenta solo la prima parte del progetto.