Una domanda sull'interfaccia utente: esiste un consenso sul migliore (definito come "quello che gli utenti finali preferiscono") o meno peggio per implementare l'immissione dei dati in una griglia?Immissione di dati in una griglia
Ho una griglia, con molte righe. Le colonne della griglia contengono vari tipi di proprietà, che l'utente può inserire/modificare. I "tipi" di proprietà includono:
- Testo libero
- Numbers (cifre numeriche)
- valore Enum (ad esempio, uno dei 'High', 'media' e 'Low')
- Altri (es. data, durata)
Il tipo di 'testo libero' non è difficile da progettare (quindi non lo chiederò a riguardo), ma per quanto riguarda i due tipi successivi?
cifre numeriche
- Quando si utilizza una tastiera per immettere un numero, vero consentire l'ingresso di testo libero, e quindi eseguire un metodo validate sulla sfocatura? Oppure, monitorare ogni pressione di un tasto per limitare l'immissione dei dati alle sole cifre?
- Come si comunica all'utente (su una griglia, non in un modulo) che la sintassi dei dati in alcune colonne è limitata a solo valori numerici? Cosa fai se l'utente preme un tasto sbagliato (non numerico)?
- Un controllo "spin" o "spinner" è un controllo standard di Windows; è appropriato provare a utilizzarne uno anche su una griglia basata su HTML?
Enum Valori
Per entrare o la modifica di un valore di enumerazione utilizzando il mouse, immagino che popping un piccolo menu contestuale su un clic del mouse è la cosa da fare.
- Un'alternativa è utilizzare il controllo di input (ad esempio una casella combinata). Immagino però che avere un'intera colonna di caselle combinate non sia facile da leggere quanto avere una colonna di valori di testo (perché le caselle combinate aggiungono inchiostro extra non di testo)? Cosa ne pensi di solito mostrando testo semplice, ma sostituendo quel testo con una casella combinata quando il campo ottiene il focus di input (e quindi rimuovendo la casella combinata in sfocatura)?
- Vuoi mettere a fuoco anche quello stesso menu, quando il focus cambia come risultato della tastiera (cioè il tasto [Tab]) invece del risultato del mouse (ad esempio un clic)? In altre parole, il tabging di un campo dovrebbe risultare in un menu a comparsa? Per inciso, i menu a comparsa basati su CSS che ho visto rispondono al mouse ma non alla tastiera (per esempio ai tasti freccia [Su] e [Giù]). Conoscete un'implementazione di inserimento dati simile a Intellisense che può essere eseguita in un browser?
Ad esempio?
Sarei anche interessato a vedere qualsiasi cosa tu pensi sia un esempio esemplare. Sono interessato all'interfaccia utente desktop e/o alle risposte del browser.
Edit: dopo un'altra domanda con il tag [data-entry] ("Has anyone used Sigma Grid (Javascript-based editable data grid)?"), sto guardando l'esempio Sigma Grid.Fa un sacco di cose bene IMO (buon supporto per la tastiera e le caselle di selezione just-in-time); ma il suo supporto per i campi numerici può essere imperfetto, ad esempio se premo 'a' in una cella numerica, poi a volte si apre una finestra di avviso per dirmi che ho torto (dove forse un suggerimento sarebbe meno invadente), e/o a volte lascia la cella vuota (vuota), cancellando la 'a' e non lasciando nulla al suo posto.
Modifica in risposta a una delle risposte seguenti.
Ancora una volta, tuttavia, determinare quale sarà l'uso principale del modulo e ottimizzare per quello. La visualizzazione o l'analisi dei dati ha esigenze diverse rispetto all'ingresso di massa e soddisfare gli utenti della tastiera è completamente diverso rispetto agli utenti di tastiera e mouse.
Desidero che lo stesso display (ad esempio una tabella/griglia) funzioni bene per visualizzare le proprietà esistenti, creare nuove proprietà e modificare le proprietà esistenti. Mi aspetto dozzine di elementi (ad esempio dozzine di righe di dati), ciascuno con solo poche colonne (ad esempio una colonna di testo/descrizione articolo, più 1 o più colonne per 1 o più proprietà dell'elemento associate).
Alcuni dei dati/proprietà possono essere soggettivi e relativi (ad esempio, due proprietà per ogni articolo sono la "priorità" o la "difficoltà" di ciascun elemento, che è particolarmente significativa solo se confrontato con altri articoli), che è un motivo per cui voglio visualizzare tutti i dati insieme su un'unica schermata: in modo che l'utente finale possa confrontarli.
La mia applicazione è per gli utenti di computer relativamente esperti (non per i principianti), ma non per gli specialisti di immissione dei dati: ad es. gli utenti sono sviluppatori software, project manager, product manager, persone QA, ecc., ma anche in una certa misura i loro clienti; è in esecuzione su una rete intranet (non su Internet pubblica), tuttavia è facile e piacevole da usare e facile e/o intuitivo da imparare sono entrambi importanti.
Inoltre, non vedo perché soddisfare gli utenti della tastiera sia completamente diverso rispetto agli utenti di tastiera e mouse: ho pensato che una singola soluzione potesse/dovrebbe supportare uno o entrambi.
Ho modificato il mio OP per aggiungere alcune informazioni aggiuntive alla fine, per rispondere alla tua domanda, sull'applicazione, i dati e gli utenti. – ChrisW
La cosa buona di uno spinner credo sia che supporta l'immissione o la modifica di un numero usando il mouse (per gli utenti del mouse); e, è un annuncio implicito che la sintassi del campo è numerica. – ChrisW
"è meglio mostrare l'errore in linea e immediatamente" Consentire l'inserimento e visualizzare un errore; o impedire l'inserimento e visualizzare un errore? Cosa vuoi dire mostrandolo "in linea" quando è una griglia (una cella, da qualche parte all'interno di un tavolo)? – ChrisW