it-swarm.it

Azioni in blocco: cosa fare quando non tutti gli elementi supportano un'azione

Immagina il seguente scenario: l'utente seleziona un gruppo di elementi e viene visualizzata la casella "azioni in blocco"; l'utente seleziona un'azione che non tutti gli elementi supportano (per un motivo o per un altro).

Cosa fai in questo caso: applica l'azione agli elementi che la supportano? non applicare affatto l'azione e mostrare un messaggio di errore?

Le mie idee attuali sono:

  • Applica l'azione agli elementi che la supportano; per le azioni che causano la scomparsa degli elementi (come "elimina elemento"), lascerei indietro gli elementi offensivi, ancora selezionati, con un messaggio di errore: "alcuni elementi non possono essere eliminati".
  • Disabilita le azioni che non sono supportate da tutte gli elementi e fornisci un link 'correggi questo' che deseleziona gli elementi offensivi per l'azione.

Inoltre, puoi indicarmi alcuni esempi pertinenti del mondo reale?

13
Dan Burzo

Senza ulteriori informazioni da te (ad es. Si tratta di un'applicazione desktop o web?), Ecco un'idea:

alt text

Quando l'utente seleziona l'azione che desidera eseguire, non eseguire alcuna azione sugli elementi dell'elenco se l'azione può essere applicata a tutti elementi selezionati. In caso contrario, mostra in grassetto (o in un colore diverso) quelli a cui si applica l'elemento, insieme a un testo esplicativo sulla destra, ad es .:

alt text

Dovresti assolutamente mostrare il numero totale di elementi che possono essere trasferiti in quanto l'elenco potrebbe essere piuttosto lungo.

Naturalmente, questa è solo una delle numerose possibili varianti.

6
Hisham

La semplice risposta è non lasciare che l'utente commetta l'errore in primo luogo. Se non è possibile eseguire un'azione su tutti gli elementi selezionati, è necessario disabilitarla, spiegare all'utente perché l'azione non può essere eseguita e suggerire una soluzione.

5
Antony Quinn

Penso che la maggior parte delle soluzioni di interfaccia utente dipenda dal contesto: una soluzione che funziona per "elimina" forse non funziona per "spostare" e una soluzione che funziona in un e-commerce forse non funziona in uno strumento industriale.

Detto questo, in astratto aggiungerei probabilmente un indicatore numerico nella "casella visualizzata" che hai citato, dicendo all'utente qualcosa del tipo: "29 elementi targetizzati, 5 bloccati" in modo che possa procedere senza problemi se lo desidera, oppure controlla quali sono gli "elementi di avviso" facendo clic sulla parte "5 bloccati".

In ogni caso, eviterei qualsiasi "messaggio di errore": è un tuo problema, non un problema dell'utente. ;)

5
Folletto

Basandoci sul contro-esempio di seguito - Vorrei vedere un elenco con tutti gli elementi pop-up che affermano che solo gli oggetti specifici avranno l'azione (nominata) applicata (e quelli contrassegnati in modo diverso nell'elenco) - e offrire un "Certo, vai avanti "e un'azione" Annulla ".

Non è comodo visualizzare nuovamente un elenco simile, ma nell'interesse di andare avanti penso che sarebbe la mia prima interpretazione.

Atleast non lo fa come la console di Microsoft Exchange 2010: genera un errore per tutti gli elementi su cui l'azione non è supportata (un lungo elenco in una piccola finestra popup modale non ridimensionabile) e inoltre non lo applica gli articoli che lo supportano (sic). Non c'è modo di uscire dalla situazione se non cancellare completamente l'idea e scavare Powershell o provare a fare un riferimento incrociato alla piccola finestra di dialogo di errore modale per deselezionare manualmente gli elementi offensivi uno alla volta dietro di esso ... ^^

3
Oskar Duveborn

Ho visto un paio di approcci per affrontare questa situazione, nessuno dei due particolarmente soddisfacente:

  • Nega silenziosamente la selezione multipla. CorelDraw, ad esempio, evita il problema non consentendo agli utenti di selezionare più elementi da un mix di oggetti modificabili e non modificabili ("bloccati") anche solo per visualizzare informazioni di sola lettura. Allo stesso modo, IronCAD non ti consente di selezionare più oggetti di determinate classi diverse (ad es. Una macchina fotografica e una parte). Mi sembra una restrizione inutile.

  • Nega silenziosamente il comando. Windows XP ti ignora semplicemente se provi ad aprire una finestra delle proprietà per più elementi di classi diverse (ad esempio, Risorse del computer e un file pdf). Potrebbe essere fonte di confusione e frustrante.

Mi sembra che tu voglia consentire all'utente la massima flessibilità consentendo la multi-selezione di qualsiasi cosa e fare il più possibile su qualunque cosa sia selezionata. Allo stesso tempo, non vuoi inondare il tuo utente con finestre di messaggio come descritto da Oskar Duveborn in questa pagina.

È discutibile se gli utenti commettono un errore: forse hanno voluto commettere il comando X su tutti gli oggetti sparsi nella finestra a cui si applica il comando X, sapendo benissimo che non si applica a determinati oggetti. Quindi digitano Ctrl-A e selezionano Comando X. Supportare quel “trucco” sarebbe molto conveniente. O forse hanno multi-selezionato un sacco di cose per applicare il Comando X e poi il Comando Y. Sarebbe utile se non dovessero ri-selezionare più o regolare la selezione multipla tra i comandi per escludere oggetti che non non applicare.

Ecco alcune idee:

  • Innanzitutto, prova a indicare le informazioni pertinenti nella finestra principale/principale in modo che l'utente possa indovinare che alcune azioni non influenzeranno determinati oggetti selezionati. Ad esempio, dai agli oggetti di sola lettura un aspetto distinto, forse solo sulla selezione (sto immaginando piccoli lucchetti per maniglie per un'app di tipo CAD). Ogni classe di oggetto dovrebbe avere un aspetto distinto, forse taggando ognuna con una particolare icona. In questo modo, poiché gli utenti possono selezionare più utenti, possono anticipare ciò che i comandi fanno e non hanno senso (ad esempio, questo elemento è una videocamera, quindi può essere spostato ma ovviamente non può essere ridimensionato).

  • Se l'app non è in grado di dire cosa si applica a cosa fino a quando non viene aperta la finestra di dialogo, allora forse cambia l'aspetto della selezione di oggetti per i quali l'azione non si applica. Ad esempio, quando l'utente modifica un valore di proprietà, tutti gli oggetti privi di tale proprietà assumono un aspetto di selezione "secondario" nella finestra principale.

  • Se i criteri per applicare un'azione non sono ovvi, potresti aver bisogno di alcuni spunti di testo. La voce di menu del pulsante che richiama l'azione può includere nella sua didascalia il numero di elementi che influisce o ciò che influenza (ad esempio, "Solo lamiera"). In una casella Proprietà, è possibile includere una colonna accanto alla colonna delle proprietà che indica per molti elementi a cui si applica o che è possibile modificare per ciascuna proprietà.

  • Potrebbe essere troppo dispendioso in termini di spazio, ma forse devi solo indicare che sono interessati solo alcuni oggetti (non il numero esatto, l'identità o la proporzione). In tal caso, forse puoi usare una nota a piè di pagina nella finestra di dialogo. Crea un simbolo che significa "parziale", forse un cerchio pieno a metà? (Non utilizzare un asterisco, che troppo spesso significa "obbligatorio"). Inserisci questo simbolo con qualsiasi controllo che influenza un sottoinsieme della selezione. Nella parte inferiore della finestra di dialogo, mostra il simbolo con il testo "= si applica solo ad alcuni elementi selezionati." Per le azioni che non utilizzano una finestra di dialogo, utilizzare lo stesso simbolo nella voce di menu o nei sottotitoli dei pulsanti di comando, inclusa una descrizione comandi per spiegare cosa significa.

  • Idealmente, dovresti indicare che l'azione si applica solo parzialmente prima che l'utente commetta quell'azione, ma come fallback, potresti fornire un feedback dopo l'azione. In generale, si desidera rendere l'effetto di qualsiasi azione visivamente evidente nei propri oggetti nella finestra principale e ciò può essere sufficiente. Tuttavia, se sei ancora preoccupato che gli utenti vengano confusi (ad esempio, da oggetti che sono scappati fuori dalla vista e che in seguito hanno notato che non sono stati modificati), allora forse puoi fornire una notifica di testo non modale (auto-licenziamento) che dice " [azione] [n] di [m] elementi selezionati "al termine dell'azione. Forse fornire un link di aiuto nel caso in cui l'utente non capisca il perché.

Non so come funzionerà nessuno di questi, quindi sarà una buona idea testare qualunque cosa tu decida sugli utenti.

1
Michael Zuschlag

La semplice risposta è non lasciare che l'utente commetta l'errore in primo luogo. Se non è possibile eseguire un'azione su tutti gli elementi selezionati, è necessario disabilitarla, spiegare all'utente perché l'azione non può essere eseguita e suggerire una soluzione.

1
Antony Quinn

Per quanto riguarda un esempio del mondo reale, mi viene in mente Jira. E mostra almeno un possibile aspetto negativo delle azioni nascoste: quando le persone non si rendono conto che una determinata azione non è disponibile, può essere abbastanza frustrante. Non puoi spostare i problemi chiusi, ma all'inizio non lo sapevo. Ho cercato a lungo prima di scoprire perché all'improvviso non ci fosse alcuna azione di movimento quando ero molto sicuro di aver spostato i problemi in quel modo prima.

Penso per questo motivo che nascondere le coperte non sia il modo migliore. È possibile contrassegnare le azioni che non sono disponibili a tutti, preferibilmente con una spiegazione del motivo per cui sono contrassegnate. Penso che potrebbe funzionare molto bene se permetti alle persone di selezionarlo a prescindere e permetti che si applichino a "quelli disponibili". In caso contrario, penso che disabilitare gli oggetti sia meglio che nascondersi. (D'altra parte, bisogna fare attenzione a non finire con un elenco di azioni che è infinitamente lungo.)

1
Inca

Perché non fare ciò che fanno gli ispettori di proprietà/oggetti di molti ambienti di sviluppo integrato: visualizzare solo le proprietà comuni a tutti gli oggetti selezionati in un modulo?

Nel tuo scenario: offri solo le azioni collettive supportate da tutti gli elementi selezionati. E aggiorna la disponibilità (aspetto abilitato) rispetto alla non disponibilità (aspetto disabilitato) di tutte le azioni in blocco con ciascun elemento selezionato/deselezionato. In questo modo l'utente riceverà feedback e raccoglierà rapidamente quali azioni in blocco sono disponibili su quali elementi (e quali elementi hanno in comune azioni in blocco).

1
Marjan Venema

Sembra che la seconda soluzione offerta nella domanda stessa funzioni meglio:

Abilita l'azione solo quando tutti gli elementi selezionati la supportano.

Puoi mostrarlo disabilitato, con una spiegazione accanto o in una descrizione comandi per far sapere all'utente perché questa azione è disabilitata.

Credo che possa essere molto confuso consentire all'utente di compiere un'azione che influisce solo su parte della sua selezione, anche avvisandolo dopo o prima che il fatto potrebbe non funzionare poiché gli utenti non leggono il testo.

Quindi è probabile che eventuali avvisi o spiegazioni non impediranno all'utente di fare semplicemente clic sul pulsante E quindi chiudere immediatamente la finestra di dialogo delle notifiche.

Detto questo, dipende dall'azione e dall'applicazione - se l'azione innesca un cambiamento del ciclo di vita di un oggetto, influendo sul suo stato, ecc., Imporrei "consenti l'azione solo quando tutti gli elementi selezionati lo supportano". Per cose non mission-critical, potresti preferire un flusso migliore rispetto alla precisione.

1
Dan Barak

Vorrei applicare l'azione agli elementi che la accettano e lasciare il resto. Penso l'utente è abbastanza intelligente per sapere che l'azione non può essere applicata agli altri elementi.

Se esegui il resto dell'interfaccia in modo che l'utente lo capisca direttamente, non dovrebbe esserci alcun problema e puoi lasciare gli altri elementi senza un messaggio speciale.

Questo è anche il modo in cui viene fatto in Gmail, ad esempio. Prendi due messaggi, uno non letto e uno letto, seleziona entrambi e scegli contrassegna come letto. Il messaggio non letto viene contrassegnato come letto e quello già letto non cambia. Il resto dell'interfaccia (testo in grassetto e altro colore di sfondo) chiarisce che il messaggio letto è già stato letto.

(Gmail dice anche che 2 messaggi sono stati contrassegnati come letti, il che sembra un po 'strano, ma ok.)

1
Lode

Il mio approccio:

Consenti agli utenti di selezionare gli elementi desiderati, consenti agli utenti di selezionare l'azione desiderata se almeno un elemento può essere influenzato dall'azione e dopo che l'azione è stata eseguita restituisce un messaggio informativo: "gli elementi x, y, z non supportano * azione perché * motivo ".

Filtrare le azioni che possono essere applicate ad almeno un elemento selezionato può essere un po 'complicato.

0
Bobby Tables

Farei qualcosa del tipo: pubblica un messaggio che non tutti gli elementi hanno la possibilità di eliminare/modificare/spostare/ecc. e hanno un elenco con la loro entità che definisce i valori dei campi in seguito. O se il loro non per molti ha una temperatura. riordinando con le voci n/a in cima all'elenco, evidenziate.

0
Billy