it-swarm-eu.dev

Buoni modi per creare una GUI dinamica?

Ho un'applicazione che sto progettando ed è attualmente in uno stato abbastanza funzionale. Ma il database che sto usando ha migliaia di articoli ed è in continua evoluzione e crescita. L'applicazione di determinati elementi di dati può variare anche in base ai vincoli dell'utente (interfacciamento del prodotto, livelli utente, ecc.). Ho cercato di rendere questo layout il più flessibile possibile al punto in cui il database controlla sostanzialmente i layout della GUI.

Vorrei rendere questa GUI il più pulita e facile da usare possibile senza dover ripetere tutto quando qualcosa cambia. Quindi in poche parole....

Quali sono alcuni buoni approcci per creare una GUI dinamica/scalabile? Se una cosa del genere è possibile.

EDIT- Finora roba buona, dato che voi ragazzi volete vedere di cosa sto parlando, ecco un'idea. Ho un database SQLite che contiene campi per raggruppamenti e formati di visualizzazione e molte altre cose che vengono analizzate in un albero di configurazione dinamico sulla sinistra, e le schede e le caselle di gruppo sono tutte generate in modo dinamico da alcuni SQL creativi. Ci sono molti dati, quindi qualcosa di generico non è esattamente una cosa negativa, poiché le cose complicate saranno comunque nascoste agli utenti meno avanzati. Se il database è configurato correttamente, questo potrebbe funzionare molto bene, penso.
Ho anche un mago che ha bisogno di un po 'di lavoro, ma lo renderà molto più facile da gestire poiché non viene toccato molto spesso. Ma tutto ciò deve essere accessibile senza passare attraverso una procedura guidata in modo che qualcuno possa impostare una configurazione personalizzata.

10
radix07

So cosa stai pensando quando dici "il più flessibile possibile al punto in cui il database controlla sostanzialmente i layout della GUI", ma questo è un segnale di avvertimento: finirai con un'app generica al costo di usabilità. Lo vedo molto con "UI programmatore", in cui gli sviluppatori hanno esteso il loro database e l'architettura orientata agli oggetti nell'interfaccia utente. Sfortunatamente, si finisce spesso con un'interfaccia utente progettata per il programmatore anziché per l'utente finale.

Il mio consiglio sarebbe di dimenticare di cercare la GUI super flessibile, dinamica e scalabile e iniziare invece a identificare i modelli di utilizzo su cui puoi progettare. Sarò in grado di aiutarti di più in questo settore se fornisci ulteriori dettagli (come il dominio per il quale stai progettando, esempi, modelli, ecc.).


Modifica: Quindi, andando dallo screenshot che hai aggiunto, sembra che la complessità del database si stia riversando nell'interfaccia utente. Quello che vedo qui è letteralmente un enorme cruscotto pieno di scelte: mi sento come se fossi in Star Trek con i pannelli pieni di pulsanti luminosi! Lascia che ti dia una prima impressione veloce di me stesso come estraneo:

Sembra che stiamo configurando qualcosa. Scegliendo un elemento da configurare a sinistra, l'area destra si aggiorna con i campi di input corrispondenti ai parametri che possono essere modificati? Ma quei campi di input si trovano anch'essi all'interno di una scheda e ci sono così tante schede che scorrono dallo screenshot verso destra. Inoltre, l'etichetta per ogni campo è al massimo criptica: "Mx Ld Fct". È bello che quando passi con il mouse, vedi un'etichetta che spiega di più, ma voglio davvero passare il mouse sopra diversi elementi solo per scoprire che non sono quello che sto cercando? È come una caccia alle uova di Pasqua. Inoltre, non mi è chiaro cosa fanno gli "strumenti" in basso a sinistra. Entrambi i riquadri a sinistra sembrano essere massimizzabili, anche se non sono sicuro di quale effetto.

Posso vedere dove stai andando con questo, ma devo sconsigliarlo. È difficile spiegare perché se non hai già seguito questo processo. Il miglior consiglio che posso dare è di afferrare alcune persone che lo useranno subito e far loro usare l'app. Siediti con loro e chiedi loro di svolgere alcune attività comuni. Senza commentare, guarda cosa fanno e scrivi su un blocco note quali sono i tuoi pensieri. Imparerai molto. Prova a farlo ogni settimana, con l'intero team di sviluppo.

13
Rahul

Ho alcuni punti da considerare:

  • Assicurarsi che le stringhe lunghe non rompano il layout. Naturalmente sto parlando dei dati stessi, ma anche l'interfaccia utente circostante potrebbe risentirne. Ad esempio, considera una barra dei comandi con pulsanti. Quando il testo sui pulsanti viene tradotto, potrebbero ingrandirsi e traboccare la barra.
  • Rendi l'interfaccia utente "lazy load" alcune delle informazioni e considera l'utilizzo della paginazione. Ad esempio, potrebbe richiedere troppo tempo per caricare contemporaneamente migliaia di elementi: assicurati che l'interfaccia utente non appaia congelata o rotta durante il caricamento o che carichi una pagina, quindi carica il resto mentre l'utente può anche iniziare a interagire con l'interfaccia utente.

Altrimenti concordo con Rahul che abbiamo bisogno di ulteriori dettagli per essere specifici.

4
Dan Barak