web-gelistirme-sc.com

Toplu işlemler: tüm öğeler bir işlemi desteklemediğinde ne yapmalı

Aşağıdaki senaryoyu hayal edin: kullanıcı bir grup öğeyi seçer ve 'toplu işlemler' kutusu görünür; kullanıcı, tüm öğelerin desteklemediği bir işlemi seçer (bir nedenden ötürü).

Bu durumda ne yaparsınız: eylemi, onu destekleyen öğelere uygulayın? eylemi hiç uygulama ve bir hata mesajı gösterme?

Şu anki fikirlerim:

  • Eylemi destekleyen öğelere uygulayın; öğelerin kaybolmasına neden olan eylemler için ('öğeyi sil' gibi), rahatsız edici öğeleri bir hata mesajıyla hala seçili olarak bırakırım: "bazı öğeler silinemedi".
  • tümü öğeleri tarafından desteklenmeyen eylemleri devre dışı bırakın ve işlem için rahatsız edici öğelerin seçimini kaldıran bir 'bunu düzelt' bağlantısı sağlayın.

Ayrıca, beni ilgili gerçek dünyadaki örneklere yönlendirebilir misiniz?

13
Dan Burzo

Sizden daha fazla bilgi olmadan (örneğin, bir masaüstü veya web uygulaması mı?), Bir fikir:

alt text

Kullanıcı hangi eylemi gerçekleştirmek istediğini seçtiğinde, eylem tümü seçilen öğelere uygulanabiliyorsa, liste öğelerine hiçbir şey yapmayın. Yapamazsa, öğenin uygulandıklarını kalın (veya farklı bir renkte), sağdaki açıklayıcı bir metinle birlikte gösterin;

alt text

Liste oldukça uzun olabileceğinden, taşınabilecek toplam öğe sayısını kesinlikle göstermelisiniz.

Tabii ki, bu birkaç olası varyasyondan sadece bir tanesidir.

6
Hisham

Basit cevap ilk başta kullanıcının hatayı yapmasına izin vermeyin. Seçilen tüm öğeler üzerinde bir eylem gerçekleştirilemiyorsa, eylemi devre dışı bırakmalısınız, kullanıcıya eylemin neden gerçekleştirilemediğini açıklayın ve bir çözüm önerin.

5
Antony Quinn

Çoğu UI çözümünün bağlama bağlı olduğunu düşünüyorum: "delete" için çalışan bir çözüm "move" için işe yaramayabilir ve bir e-ticarette çalışan bir çözüm endüstriyel bir araçta çalışmayabilir.

Bununla birlikte, özet olarak, alıntıladığınız "görünen kutuya" sayısal bir gösterge eklerim, kullanıcıya şöyle bir şey söylerdim: "29 öğe hedeflendi, 5 kilitli", böylece isterse sorunsuz devam edebilir veya "5 kilitli" kısmına tıklayarak "uyarı öğeleri" neler olduğunu kontrol edin.

Herhangi bir şekilde, herhangi bir "hata mesajı" önlemek istiyorum: bu sizin sorunun değil, kullanıcının sorunu. ;)

5
Folletto

Aşağıdaki karşı örneğe dayanarak - Yalnızca belirli öğelerin (adlı) eylemin uygulanacağını (ve listede farklı işaretlenmiş olanları) belirten tüm öğelerin açıldığı bir liste görmek ve bir "Tabii, git önde "ve" İptal "işlemi.

Benzer bir listeyi yeniden görüntülemek rahat hissettirmiyor, ancak ileriye gitmek için bu benim ilk çekimim olacağını düşünüyorum.

En azından Microsoft Exchange 2010 Konsolu'nun yaptığı gibi yapmayın - eylemin desteklenmediği tüm öğeler için bir hata atar (yeniden boyutlandırılamayan küçük bir açılır pencere penceresinde uzun bir liste) ve ayrıca onu destekleyen öğeler. Fikri tamamen iptal etmek ve Powershell'i kazmak ya da arkasındaki rahatsız edici öğeleri tek tek seçmek için küçük modal hata iletişim kutusunu çapraz referanslamak dışında durumdan çıkmanın bir yolu yoktur ... ^^

3
Oskar Duveborn

Bu durumla başa çıkmak için birkaç yaklaşım gördüm, ikisi de özellikle tatmin edici:

  • Çoklu seçimi sessizce reddet. Örneğin CorelDraw, kullanıcıların salt okunur bilgileri görüntülemek için bile düzenlenebilir ve düzenlenemez (“kilitli”) nesnelerin bir karışımını çoklu seçmesine izin vermeyerek sorunu önler. Benzer şekilde, IronCAD belirli sınıflardan nesneleri (örneğin, bir kamera ve bir parça) çoklu seçmenize izin vermez. Bu benim için gereksiz bir kısıtlama gibi görünüyor.

  • Sessizce komutu reddet. Windows XP, farklı sınıfların birden çok öğesi için (örneğin, Bilgisayarım ve bir pdf dosyası) bir özellikler penceresi açmaya çalışırsanız sizi göz ardı eder.

Bana öyle geliyor ki, herhangi bir şeyin çoklu seçimine izin vererek ve seçilen her şey için mümkün olduğunca çok şey yaparak kullanıcıya en büyük esnekliği sağlamak istiyorsunuz. Aynı zamanda, bu sayfada Oskar Duveborn tarafından açıklanan mesaj kutuları ile kullanıcınızı değiştirmek istemezsiniz.

Kullanıcılar bir hata yapıyorsa tartışmalıdır: Belki de Komut X'un uygulandığı pencereye dağılmış tüm nesneler üzerinde Komut X'u belirli nesneler için geçerli olmadığını tam olarak bilerek yapmak istediler. Bu yüzden Ctrl-A yazıp Komut X'u seçtiler. Bu “hile” yi desteklemek çok uygun olurdu. Ya da belki Komut X'u ve ardından Komut Y'yi uygulamak için bir grup şeyi çoktan seçtiler. geçerli değil.

İşte bazı fikirler:

  • İlk olarak, kullanıcının bazı işlemlerin seçilen belirli nesneleri etkilemeyeceğini tahmin edebilmesi için ana/üst pencerede ilgili bilgileri belirtmeye çalışın. Örneğin, salt okunur nesnelere belki sadece seçimde farklı bir görünüm verin (CAD tipi bir uygulama için tutamaçlar için küçük asma kilitler hayal ediyorum). Her nesne sınıfı, belki de her birini belirli bir simgeyle etiketleyerek farklı bir görünüme sahip olmalıdır. Bu şekilde, kullanıcılar çoktan seçmeli olarak, komutların ne yaptığını tahmin edebilir ve mantıklı gelmezler (örneğin, bu öğe bir kameradır, bu nedenle taşınabilir, ancak açıkça yeniden boyutlandırılamaz).

  • Uygulama, iletişim kutusu açılana kadar neyin geçerli olduğunu söyleyemiyorsa, işlemin uygulanmadığı nesnelerin seçiminin görünümünü değiştirebilirsiniz. Örneğin, kullanıcı bir özellik değerini değiştirdiğinde, bu özelliği olmayan tüm nesneler üst pencerede "ikincil" bir seçim görünümü alır.

  • Eylem uygulama ölçütleri belli değilse, bazı metin ipuçlarına ihtiyacınız olabilir. Eylemi çağıran düğmenin menü öğesi, başlığında kaç öğeyi etkilediğini veya neyi etkilediğini içerebilir (örneğin, “Yalnızca sac”). Özellikler kutusuna, her özelliğin uygulanabileceği veya değiştirilebileceği birçok öğe için özellik sütununun yanına bir sütun ekleyebilirsiniz.

  • Bu çok fazla yer kaplayabilir, ancak yalnızca bazı nesnelerin etkilendiğini belirtmeniz yeterlidir (tam sayı, kimlik veya oran değil). Bu durumda, iletişim kutusunda bir dipnot kullanabilirsiniz. “Kısmi” anlamına gelen bir sembol oluşturun, belki yarı dolu bir daire? (Yıldız işareti kullanmayın - bu genellikle “zorunlu” anlamına gelir). Bu simgeyi, seçimin bir alt kümesini etkileyen herhangi bir denetim tarafından yerleştirin. İletişim kutusunun altında, “= yalnızca seçilen bazı öğelere uygulanır” metnini içeren sembolü gösterin. İletişim kutusu kullanmayan eylemler için, ne anlama geldiğini açıklayan bir araç ipucu da dahil olmak üzere menü öğesinde veya komut düğmesi altyazısında aynı sembolü kullanın.

  • İdeal olarak, eylemin kullanıcı işlemi gerçekleştirmeden önce yalnızca kısmen uygulandığını belirtmeniz gerekir, ancak bir geri dönüş olarak işlemden sonra bazı geri bildirimler sağlayabilirsiniz. Genel olarak, üst penceredeki nesnelerinizde görsel olarak görünen herhangi bir eylemin etkisini yapmak istersiniz ve bu yeterli olabilir. Bununla birlikte, kullanıcıların kafası karıştığından hala endişe duyuyorsanız (örneğin, daha sonra değiştirmediklerini fark ettikleri görünmeyen nesneler tarafından), o zaman belki de “ [m] seçilen öğeden [eylemli] [n] "işlem tamamlandığında. Belki de kullanıcının nedenini anlamaması durumunda bir Yardım bağlantısı sağlayın.

Bunlardan herhangi birinin gerçekte nasıl çalışacağını bilmiyorum, bu nedenle kullanıcılara karar verdiğiniz her şeyi test etmek iyi bir fikir olacaktır.

1
Michael Zuschlag

Basit cevap ilk başta kullanıcının hatayı yapmasına izin vermeyin. Seçilen tüm öğeler üzerinde bir eylem gerçekleştirilemiyorsa, eylemi devre dışı bırakmalısınız, kullanıcıya eylemin neden gerçekleştirilemediğini açıklayın ve bir çözüm önerin.

1
Antony Quinn

Gerçek bir dünya örneğine gelince, Jira akla geliyor. Ve gizleme eylemlerinin en az bir olası dezavantajını gösterir: insanlar belirli bir eylemin mevcut olmadığını fark etmediğinde oldukça sinir bozucu olabilir. Kapatılan sorunları taşıyamazsınız, ama ilk başta bunu bilmiyordum. Sorunları daha önce bu şekilde taşımış olduğumdan emin olduğumda neden birden fazla hareket eylemi olmadığını anlamaya başlamadan önce uzun ve zor araştırdım.

Bu nedenle battaniye örtmenin en iyi yol olmadığını düşünüyorum. Herkes tarafından kullanılamayan eylemleri, tercihen neden işaretlendiklerine ilişkin bir açıklama ile işaretleyebilirsiniz. İnsanların ne olursa olsun seçmelerine ve 'mevcut olanlara' başvurmalarına izin verirseniz çok iyi çalışabileceğini düşünüyorum. Değilse, öğeleri devre dışı bırakmanın gizlemekten daha iyi olduğunu düşünüyorum. (Öte yandan, sonsuza kadar uzun olan eylemlerin bir listesi ile sonuçlanmamaya dikkat edilmelidir.)

1
Inca

Neden birçok Entegre Geliştirme Ortamının özellik/nesne denetçilerinin yaptıklarını yapmıyorsunuz: yalnızca bir formda seçilen tüm nesneler için ortak olan özellikleri görüntüleme?

Senaryonuzda: yalnızca seçilen tüm öğeler tarafından desteklenen toplu işlemleri sunun. Ve seçilen/seçimi kaldırılan her bir öğeyle birlikte tüm toplu işlemlerin kullanılabilirliğini (etkin görünüm) ve kullanılabilirliğini (devre dışı görünümü) güncelleyin. Bu şekilde kullanıcı geri bildirim alacak ve hangi öğelerde hangi toplu işlemlerin (ve hangi öğelerin ortak toplu işlemlere sahip olduğunu) hızlı bir şekilde öğrenecektir.

1
Marjan Venema

Sorunun kendisinde sunulan ikinci çözüm en iyi sonucu verir:

Eylemi yalnızca seçilen tüm öğeler desteklediğinde etkinleştir.

Yanında veya bir araç ipucunda, kullanıcıya bu eylemin neden devre dışı bırakıldığını bildirmek için devre dışı bırakılmış olarak gösterebilirsiniz.

Kullanıcının seçiminin yalnızca bir bölümünü etkileyen bir işlem yapmasına izin vermenin çok kafa karıştırıcı olabileceğine inanıyorum, hatta gerçeğin işe yaramayabileceğinden önce veya sonra bildirmek kullanıcılar metin okumuyor.

Bu nedenle, herhangi bir uyarı veya açıklamanın kullanıcının düğmeye tıklamasını ve ardından bildirim iletişim kutusunu hemen kapatmasını engellememesi olasıdır.

Bunu söyledikten sonra, eylem ve uygulamaya bağlıdır - eylem bir nesnenin yaşam döngüsünü değiştirmesini tetikler, durumunu etkiler, vb. "Yalnızca seçili tüm öğeler desteklediğinde eyleme izin ver" i zorlarım. Kritik olmayan şeyler için doğruluktan daha iyi akışı tercih edebilirsiniz.

1
Dan Barak

Eylemi kabul eden öğelere uygulamak için giderdim ve geri kalanını bırakın. Bence kullanıcı yeterince akıllıdır eylemin diğer öğelere uygulanamayacağını bilmek.

Arayüzün geri kalanını kullanıcı bunu doğrudan anlayacak şekilde yaparsanız, herhangi bir sorun olmamalı ve diğer öğeleri özel bir mesaj olmadan bırakabilirsiniz.

Bu aynı zamanda örneğin Gmail'de yapılış şeklidir. Biri okunmamış ve biri okunmuş iki mesaj alın, her ikisini de seçin ve okundu olarak işaretle'yi seçin. Okunmamış mesaj okundu olarak işaretlenir ve zaten okunan mesaj değişmez. Arayüzün geri kalanı (kalın metin ve diğer arka plan rengi), okunan mesajın zaten okunduğunu açıkça gösterir.

(Gmail, 2 iletinin okundu olarak işaretlendiğini bile söyler, bu biraz garip görünüyor, ancak tamam.)

1
Lode

Benim yaklaşımım:

Kullanıcıların istedikleri öğeleri seçmesine izin verin, en az bir öğe eylemden etkilenebiliyorsa kullanıcıların istedikleri eylemi seçmelerine izin verin ve işlem yapıldıktan sonra bir bilgi iletisi gönderin: "x, y, z öğeleri desteklenmiyor * çünkü * motif. "

Seçilen en az bir öğeye uygulanabilecek eylemleri filtrelemek biraz zor olabilir.

0
Bobby Tables

Şöyle bir şey yapardım: tüm öğelerin silme/düzenleme/taşıma/vb. ve daha sonra varlıklarını alan değerlerini tanımlayan bir listeye sahip olun. Ya da pek çoğuna değil bir temp varsa. Listenin üstündeki n/a öğeleri vurgulanarak yeniden sıralanıyor.

0
Billy