Forum: Italian Ruby user group [Newbie] Consigli per layout treeview

Posted by Jonathan Lecchi (zzjona)
on 2012-08-28 16:22
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 :)

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
Posted by Matteo Latini (Guest)
on 2012-08-28 16:45
(Received via mailing list)
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://emberjs.com
http://sproutcore.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 https://github.com/nesquena/rabl). 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 
https://github.com/meleyal/backbone-on-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 Latini
http://nebulab.it/

Il giorno 28/ago/2012, alle ore 16:22, Jonathan Lecchi 
<jonathan@zzjona.it> ha scritto:
Posted by Jonathan Lecchi (zzjona)
on 2012-08-30 11:10
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
Posted by Matteo Latini (Guest)
on 2012-08-30 11:42
(Received via mailing list)
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: http://jsfiddle.net/ntMdB/119/
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 :D


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 Latini
http://nebulab.it/
Posted by Jonathan Lecchi (zzjona)
on 2012-08-30 12:19
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 :)

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
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.