[Newbie] Consigli per layout treeview

Buongiorno a tutti,
scrivo perché avrei bisogno dei vostri consigli ed esperienze.
Perdonate eventuali inesattezze o ingenuità ma sono da poco su RoR per
cui chiedo venia :slight_smile:

Arrivo al dunque: vorrei realizzare un’app per approfondire i miei studi
e “sporcarmi un pò le mani” anche per quanto riguarda il layout, il mio
obiettivo è quello di arrivare ad un’app per la gestione di commesse di
lavoro in cui sulla sinistra della schermata ho una sidebar di
navigazione treeview con elementi padre-figlio (drag&drop per
modificarne l’ordinamento) e, cliccando sulle singole voci, nel riquadro
di destra avere il dettaglio del record.

In buona sostanza vorrei ottenere un risultato simile a quello proposto
in questa demo: demo.netzke.org

Per quanto riguarda il core RoR non penso avrò problemi, l’integrazione
con javascript/jquery invece mi è più criptica

Avete già realizzato soluzioni simili? Con che tools?
Consigli per implementazione della parte js?

Ringrazio tutti in anticipo

Jonathan

Ciao,
in realt credo dipenda molto dal livello di complessit che vuoi
raggiungere.

Sicuramente se vuoi costruire un’app identica alla demo che hai linkato,
la cosa migliore al momento usare un framework js tipo:

http://backbonejs.org
http://spinejs.com

http://cappuccino.org

I primi tre tendono ad essere leggeri, gli ultimi sono pesanti ma
dovresti avere a disposizione tutti i widget necessari a realizzare
un’app
come quella che hai linkato.

Per quanto riguarda l’integrazione, se scegli la via del framework
client side, avviene al 100% via API (che dovrai implementare lato Rails
con
librerie tipo GitHub - nesquena/rabl: General ruby templating with json, bson, xml, plist and msgpack support). La tendenza quella di
usare json.

Per il resto il codice lo puoi tenere sia completamente separato
(consigliato in caso l’app javascript diventi molto grossa) sia
conservarlo dentro
una delle directory assets di rails.
Generalmente se usi backbone o spine il secondo tipo di integrazione la
puoi fare facilmente tramite diverse gem (tipo
GitHub - meleyal/backbone-on-rails: A simple gem for using Backbone.js with Rails.)
altrimenti se usi sproutcore o cappuccino, dato che sono pi complessi e
strutturati, ti consiglio da subito il primo approccio.

Per precisare, cappuccino non esattamente un framework js ma
sicuramente ti pu aiutare a costruire un’interfaccia simile a quella che
vuoi realizzare.


Matteo L.

Il giorno 28/ago/2012, alle ore 16:22, Jonathan L.
[email protected] ha scritto:

Ciao Matteo,
grazie per la tua dettagliata risposta!
Ho iniziato a dare un’occhiata alle soluzioni da te proposte
e credo che mi orienterò verso sproutcore o emberjs,
ma la scelta merita un approfondimento da parte mia.

Perdona la domanda ma quando scrivi “Per il resto il codice lo puoi
tenere sia completamente separato (consigliato in caso l’app javascript
diventi molto grossa) sia conservarlo dentro una delle directory assets
di rails”
ho capito la gestione nelle assets ma non l’integrazione in una dir
separata. Puoi farmi gentilmente un esempio?

Ti ringrazio in anticipo

Jonathan

Ciao Matteo,
grazie per la risposta e per i tuoi consigli,
anche per quanto riguarda la scelta del framework.

La spiegazione che mi hai dato circa la gestione delle app js
che dialogano in RESTful con l’app server-side, a livello
teorico la conoscevo già, ma praticamente non ho mai sviluppato
soluzioni simili, per cui hai dedotto bene e da qui le mie lacune…
anche elementari!

In ogni caso sono aperto a consigli e critiche,
nonchè grato di ricevere suggerimenti per approfondire le mie
conoscenze,
come il libro che mi hai segnalato su Amazon :slight_smile:

Sei hai altre indicazioni da darmi, consigli su manualistica o risorse
online, anche per quanto riguarda RoR, sono “tutto orecchi”!

Grazie ancora per la tua disponibilità

Jonathan

Intanto ci tengo a precisare, visto che ti sei orientato verso
sproutcore/emberjs che la struttura e la comunit di questi due
framework (emberjs e’ derivato da sproutcore) da considerare
sicuramente pi “acerba” rispetto a quella di backbone.

Ci non necessariamente un male (sproutcore il framework alla base di
icloud.com), diciamo solo che troverai
sicuramente maggiori intoppi nella documentazione.

Inoltre, una delle feature pi interessanti di sproutcore/ember anche il
suo pi grande punto debole.
Il model/view binding gestito dal framework stesso al contrario di
backbone/spine dove devi fare tutto a manella.
Puoi vederne una demo qui: Backbone Events vs. Ember Bindings: A Benchmark - JSFiddle - Code Playground
A mio avviso il model/view binding di sproutcore indica anche, da parte
degli sviluppatori, la volont di creare un
framework pi simile a rails rispetto a backbone che ha optato per un
approccio completamente nuovo.

Ogni cosa ha pro e contro, volevo solo avvertirti per scaricare la mia
responsabilit :smiley:

Per quanto riguarda l’integrazione, non ho esempi particolari da farti.
Probabilmente se non ti chiaro vuol dire
che devi capire meglio come funzionano le applicazioni scritte
completamente in js.
Mentre in un app rails “classica” il lavoro sporco lo fa sempre il
server e hai un certo numero di script js che ti aiutano a presentare
i dati sul frontend, con un app js il lavoro sporco lo fa quasi
esclusivamente il browser dell’utente tramite il framework
che usi. L’unica cosa a cui il server prende parte e’ immagazzinare e
rendere disponibili i dati. I dati vengono gestiti
solitamente tramite un’interfaccia RESTful in formato xml o json.
A questo punto da una parte avrai un server rails (o altro framework di
sorta) che comunica con un’applicazione javascript
tramite chiamate RESTful che ritornano json o xml (quindi senza diretta
interazione con l’utente finale).
Una volta che hai queste due componenti, non ha pi senso tenerle
insieme. Potresti avere due repository distinti con un’app
rails ed un app sproutcore e decidere tu come debbano interagire queste
due entit.

A sto punto ti consiglio un bel libro:
http://www.amazon.it/dp/144930351X
E’ dell’autore di spine.js e spiega proprio tutti questi concetti. C’e’
anche un capitolo sull’interazione con rails.


Matteo L.