Barista: Filterfield 2 - Pengumpulan persyaratan

Dibuat pada 6 Mei 2020  ·  21Komentar  ·  Sumber: dynatrace-oss/barista

Karena implementasi komponen bidang filter saat ini tidak memiliki beberapa fitur yang telah diminta di masa lalu, tetapi sangat sulit untuk ditambal ke keadaan saat ini, kami mempermainkan ide untuk membuat versi kedua dari bidang filter. Ketika kami memulai implementasi pertama bidang filter, banyak persyaratan ditambahkan setelah implementasi awal selesai, yang membuatnya sangat sulit untuk memenuhi semuanya.
Dengan versi ini kami ingin membuat daftar persyaratan lebih awal untuk lebih memenuhi harapan konsumen perpustakaan.
Silakan terlibat dan tambahkan ke diskusi ini karena kami ingin menjadi sangat teliti untuk mencegah skenario serupa lagi.


Sumber data

Kemungkinan untuk menambah/mengatur filter yang tersedia ke sumber data bidang filter

Seharusnya mudah untuk menentukan filter mana yang tersedia, menyatakan jenis filter, turunannya, dan validatornya. Dalam implementasi v1 ini dilakukan melalui objek konfigurasi dan sumber data .

Kemungkinan untuk menambahkan filter yang tersedia ke sumber data secara asinkron

Ini adalah fitur utama untuk memuat lebih banyak data berdasarkan input pengguna. Ini dapat berkisar dari kata khusus yang difilter dalam situasi pelengkapan otomatis, atau jalur yang diambil ke filter khusus. Seharusnya dimungkinkan untuk memperluas filter yang tersedia saat ini serta memuat langkah filter berikutnya. (Mengacu pada #868)

Filter yang dipilih (tag)

Filter yang dipilih terdiri dari kunci, nilai, dan kemungkinan beberapa metadata yang akan mencerminkan status tag.

Kunci tag dan tampilan nilai harus dapat disesuaikan

Sebagaimana diuraikan dalam #1113, ada persyaratan untuk menyesuaikan properti key yang ditampilkan dan kemungkinan value yang ditampilkan di dalam setiap tag individual.

Filter yang dipilih harus mudah diatur secara terprogram

Dalam implementasi v1 filter hanya dapat disetel dengan referensi elemen yang dilewatkan di atas sumber data, yang tampaknya cukup membosankan. (Mengacu pada #473)

https://github.com/dynatrace-oss/barista/blob/fa98ac150b6d324f5c3eaed990c6d6c5f155f318/libs/examples/src/filter-field/filter-field-programmatic-filters-example/filter-field-programmatic-filters-example.ts# L67 -L77

Seharusnya mudah untuk mengubah status tag secara terprogram

Seharusnya mudah untuk mengubah status filter yang saat ini disetel menjadi editable / disabled / read-only . Implementasi saat ini saat ini mengharuskan konsumen untuk mendapatkan filter yang ditetapkan saat ini dan menemukan instance yang ingin mereka manipulasi dan menambahkan perubahan di sana (lihat #848).

Tag dapat diedit

Seharusnya mungkin bagi pengguna untuk kembali ke filter yang sudah disetel dan mengedit nilainya.

Konektor logis antara tag

Permintaan berulang adalah menambahkan konektor logis, yaitu NOT , AND , dan OR ke daftar tag.
Terima kasih @subarroca telah menyebutkan ini.

Pengelompokan logis

Sebagai perpanjangan dari konektor logis antar tag, @petrabrunner juga menyebutkan bahwa tag yang terhubung secara logis harus dapat dikelompokkan dalam tanda kurung.

Keunikan

Beberapa filter harus dihapus dari daftar filter yang tersedia, jika filter sudah dipilih sekali oleh pengguna.

Jenis filter dan ekstensi

Sarang filter

Filter harus dapat disarangkan, untuk memberi pengguna jalur sederhana untuk memfilter ke pasangan nilai kunci yang sebenarnya. Hal ini tercermin dari perilaku v1 yang cukup baik.

Pilih dari kumpulan (pelengkapan otomatis)

Ini akan memungkinkan pengguna memilih satu nilai dari filter yang disediakan. Ini dapat disarangkan hingga filter terakhir dipilih, yaitu memilih kota memberi pengguna opsi filter berikut: Negara > Negara Bagian > Wilayah > Kota
Himpunan ini dapat memiliki opsi yang berbeda, artinya jika salah satu dari himpunan yang berbeda dipilih, tidak mungkin untuk memilih yang lain dari himpunan yang sama. Oleh karena itu, set seharusnya tidak lagi ditampilkan sebagai opsi.

Teks gratis dengan saran

Beberapa filter harus _just_ dapat menampung teks bebas, yang ditentukan oleh pengguna. Implementasi saat ini memberikan opsi untuk menyediakan teks. Tidak ada indikasi tentang apa yang terjadi bagaimana teks difilter. Mungkin ide untuk menambahkan beberapa mode ke jenis filter ini, yaitu startWith , contains , exactMatch . Ini bisa memberi konsumen sedikit lebih banyak kontrol atas penyaringan.

Jangkauan

Dalam implementasi v1 rentang memungkinkan pengguna memilih satu atau dua nilai dan salah satu dari operator berikut: greater than , less than , equals atau range (difilter nilai harus antara nilai yang diberikan pertama dan kedua).
Seharusnya dimungkinkan untuk memberikan nilai default untuk setiap bidang, yang diisi dalam rentang.
Sudah ada permintaan untuk memperluas jangkauan untuk memungkinkan operator yang lebih besar dari yang sama dan yang lebih kecil dari yang sama juga. Selain itu dalam mode operator Rentang, juga harus ada pilihan untuk setiap nilai untuk memiliki greater/less atau greater/less than .
Rentang dapat juga dianggap sebagai perpanjangan.

banyak pilihan

Seharusnya mungkin bagi konsumen untuk menambahkan multi-pilih (mirip dengan _select dari bagian tag_), tetapi tidak memiliki satu pilih, tetapi pengaturan multi-pilih. Seperti yang disebutkan @danielkaneider , ini adalah tiruan awal dari bidang filter dan terlihat seperti daftar kotak centang dalam hamparan. (Referensi edisi #1206)
Menurut pendapat saya ini akan menjadi sesuatu yang juga bisa dianggap sebagai perpanjangan.

Rentang dengan makna semantik khusus

Ini juga sangat dipertimbangkan untuk dibangun sebagai ekstensi. Beberapa kasus penggunaan mencakup pilihan rentang, yang tidak mengikuti logika rentang numerik (yaitu, rentang nomor versi yang dimunculkan di #78 oleh @bmrozinski)

Ekstensi ke filter

Seharusnya mungkin bagi konsumen untuk dengan mudah menyediakan versi filter mereka sendiri dan menyesuaikan overlay dengan kebutuhan mereka. Hal yang perlu diperhatikan adalah membuat antarmuka antara bidang filter dan ekstensi, sehingga komunikasi yang solid antara ekstensi dan bidang filter dapat terjadi.
Ini akan membuka banyak kemungkinan bagi konsumen untuk meningkatkan bidang filter dan menyesuaikannya dengan kebutuhan mereka.

Saat ini dianggap dilakukan melalui ekstensi (pihak pertama atau ketiga):

  • Jangkauan
  • Rentang dengan makna semantik
  • banyak pilihan
  • pemilih tanggal

Validasi

Setiap filter yang dikirimkan harus dapat divalidasi terhadap fungsi validator yang lulus. Dalam implementasi v1, ini hanya mungkin untuk tipe free-text .

Pemfilteran masukan

Ketika pengguna sedang dalam proses mengisi atau memilih filter, filter yang tersedia harus ditampilkan dan disaring berdasarkan input pengguna. Implementasi v1 sudah memiliki perilaku ini dan kami ingin mempertahankannya.

Dukungan untuk integrasi Bentuk Sudut

Berdasarkan https://github.com/dynatrace-oss/barista/issues/951#issuecomment -631519841 harus diselidiki apakah integrasi dengan Angular Forms dapat dilakukan (nilai bidang filter bisa sangat kompleks). Tapi ini pasti sesuatu untuk melihat ke dalam.

filter-field needs discussion

Komentar yang paling membantu

Halo!

Kami menerima beberapa umpan balik tentang aspek lain yang dapat ditingkatkan, yaitu bagaimana filter menangani input teks sedang/panjang.

Saat ini widget menyajikan "jendela" input sekitar 24-25 karakter yang membuatnya agak sulit untuk meninjau teks yang dimasukkan atau disalin.
Widget misalnya dapat memperluas dan memanfaatkan ruang kosong di sisi kanannya, terutama di layar besar.

Screenshot 2020-10-23 at 09 29 30

Kotak biru menyoroti ukuran kotak input, contoh teksnya adalah: _ini adalah teks yang cukup panjang_

Semua 21 komentar

tampak hebat. kami sudah memiliki beberapa persyaratan yang akan kami sampaikan kepada Anda. Saya melihat mereka sudah tercakup di sini

Kami telah diminta untuk memasukkan AND, OR dan NOT.
Juga status yang dinonaktifkan, yang sudah Anda pertimbangkan

Mengolok-olok awal memiliki multi-seleksi divisualisasikan. Alih-alih hanya mendapatkan daftar saran dan memilih satu, Anda akan mendapatkannya dengan kotak centang di depan; sehingga Anda bisa memilih beberapa dari mereka. Ini adalah versi filter AND yang lebih sederhana, dan lebih bagus daripada memasukkan filter yang sama (misalnya negara) beberapa kali

Kami telah diminta untuk memasukkan AND, OR dan NOT.

Terima kasih @subarroca telah mengemukakan ini, saya telah menambahkan ini ke daftar persyaratan asli.

Mengolok-olok awal memiliki multi-seleksi divisualisasikan. Alih-alih hanya mendapatkan daftar saran dan memilih satu, Anda akan mendapatkannya dengan kotak centang di depan;

Terima kasih @danielkaneider telah mengemukakan hal ini. Saya telah menambahkan ini ke daftar persyaratan asli.

Untuk beberapa filter mungkin ada sejumlah besar saran, misalnya tag. Akan lebih baik untuk membatasi mereka ke N saran dan menampilkan "Mulai mengetik untuk melihat lebih banyak" yang akan diambil secara tidak sinkron saat pengguna mengetik - semacam pencarian sisi server.

Mungkin ada baiknya menambahkan #78 ke persyaratan.

Saya juga mengandalkan implementasi #78 di Filterfield v2. Filter rentang akan sempurna untuk kasus penggunaan terkait pemfilteran nomor versi (mis. 1.194.0).

Saya juga mengandalkan implementasi #78 di Filterfield v2.

Sangat. Saya telah menambahkannya ke daftar. Meskipun saya menganggap banyak dari ini benar-benar dibangun sebagai ekstensi (artinya tidak disediakan oleh perpustakaan barista itu sendiri), ada baiknya untuk memiliki semua kasus penggunaan untuk ekstensi ini juga, bagi kita untuk mendefinisikan antarmuka antara filter- bidang v2 dan ekstensi khusus lebih baik.

Kami memiliki kasus penggunaan persis seperti yang dijelaskan @Argeath , dengan banyak tag untuk pemfilteran dalam tampilan masalah baru. Kami hanya ingin mengembalikan subset tag dari server, yang cocok dengan kueri yang dimasukkan pengguna di bidang filter. Dan kami bahkan mungkin harus membatasi hasil yang cocok karena mungkin terlalu banyak. Jadi cara untuk menunjukkan hasil "terpotong" juga bagus.

Hai, senang melihat Anda berencana untuk mengubah bidang filter;)

usecase yang kami miliki agak rumit, dan saya tidak tahu apakah saran di atas sudah mencakup sepenuhnya. Kami akan senang jika dapat menghubungkan filterterms dengan konektor logis (DAN, ATAU,...)

fe:
tampilkan semua untuk (pembuat = penggunax DAN tingkat keparahan = tinggi) ATAU (pembuat = pengguna DAN tingkat keparahan = rendah)

kami selalu menyebutnya sebagai "cara jira memungkinkan Anda memfilter masalah".
Saya telah melihat "pilihan ganda untuk satu jenis filter" dan pernyataan DAN/ATAU - tetapi apakah mungkin untuk mendefinisikan istilah filter dengan tanda kurung (atau cara lain) dan menggabungkannya dengan operator logika?

@petrabrunner Sayangnya saya tidak berpikir bahwa ini adalah usecase untuk bidang filter pada khususnya, karena ini semakin menyerupai pola bahasa kueri. Pasti ada kasus penggunaan untuk jenis kueri Anda juga, tetapi saya akan mencoba untuk tidak mencampur fungsionalitas bahasa kueri dengan bidang filter.
Contoh yang diberikan oleh Anda mungkin tampak berfungsi dalam konteks bidang filter, tetapi jika Anda merujuk ke _cara jira memungkinkan Anda memfilter masalah_, ini bisa menjadi lebih kompleks dengan sangat cepat.
TBH, bahkan operator logika di bidang filter mungkin terlalu berlebihan dalam hal ini. Saat ini saya sedang mencoba mencari tahu apa yang diharapkan orang dari bidang filter, apakah semuanya di sini akan dibangun atau bahkan layak mungkin menjadi diskusi untuk nanti.

Saya akan menambahkan pengelompokan logis ke daftar di atas, tetapi perlu diketahui bahwa ini mungkin jauh di bawah daftar prioritas.

@tomheller thx atas jawabannya - tbh. Saya sudah mengharapkan ini - karena logikanya akan cukup luas - tetapi saya pikir, jika saya tidak memberi tahu Anda tentang usecase kami, Anda tidak mengetahuinya;)

Kami juga memerlukan fitur memuat data untuk pelengkapan otomatis sebagai sebagian. Misalnya memuat 100 opsi pertama dan saat mencari opsi, muat opsi yang difilter dari server.

PR untuk implementasi saat ini dapat dilihat di sini: https://github.com/dynatrace-oss/barista/pull/1021

Halo semuanya, kami juga memiliki beberapa petisi, diurutkan dari yang kurang prioritas:

  • Kemampuan untuk menetapkan nilai numerik minimum dan maksimum default untuk jenis filter rentang.
  • Jenis filter baru: pemilih tanggal.

Terima kasih!

Akan sangat keren untuk mendukung bentuk sudut di bidang filter ;), jadi lebih mudah untuk mengelola dari sudut pandang konsumen. Mungkin mengekspos FilterFormControl untuk itu akan membantu

  interface FilterFormControl {
    field: string;
    value: FilterValue // any basically
    operator?: 'AND' | 'OR' | 'NOT'
    ...
  }  

```html
formControlName="filter"
label="Filter menurut"
aria-label="Filter Dengan kontrol formulir"
clearAllLabel="Hapus semua"

```ts
// comes from a saved config
initFilters = [{
  field: 'foo',
  value: 'bar'
}];
form: FormGroup({
  filter: new FormControl(initFilters)
});

Hai,
Akan menyenangkan untuk memiliki fitur ini juga:

Kategori default: ketika pengguna mulai memberi tip, kunci ini dipilih. Dengan demikian pengguna dapat melewati langkah harus memilih kunci. Pada gambar berikut Anda dapat melihat contohnya, menjadi 'Nama' kategori default untuk difilter berdasarkan:

  1. Filter tidak fokus:
    image
  2. Filter terfokus (pengguna mengkliknya):
    image
  3. Tip pengguna:
    image
  4. Pengguna selesai memberi tip:
    image
  5. Pengguna menekan tombol enter:
    image

Halo tim! Saya punya petisi lain juga, ini definisinya:

getTagsForFilterKey(kunci: string) | DtFilterFieldTag[] | Mengembalikan larik DtFilterFieldTag dengan semua kecocokan di mana kunci DtFilterFieldTag berisi parameter key
-- | -- | --

TL;DR: Versi baru dari fungsi getTagForFilter saat ini, untuk memenuhi kebutuhan kita dengan lebih baik.

Seperti yang didiskusikan dengan Markus Heimbach, ia mengusulkan untuk menambahkan kemungkinan bahwa jika Anda mengetik terlebih dahulu dan semua opsi difilter, Anda masih dapat mengirimkan teks ini sebagai input teks bebas.
Dengan kata lain, teks bebas selain pelengkapan otomatis untuk tingkat root.

Seperti yang didiskusikan dengan Markus Heimbach, ia mengusulkan untuk menambahkan kemungkinan bahwa jika Anda mengetik terlebih dahulu dan semua opsi difilter, Anda masih dapat mengirimkan teks ini sebagai input teks bebas.
Dengan kata lain, teks bebas selain pelengkapan otomatis untuk tingkat root.

Tapi saya pikir, pada dasarnya, apa yang sudah disebutkan oleh @SaraDavilaMendez dengan https://github.com/dynatrace-oss/barista/issues/951#issuecomment -686365435

Seperti yang didiskusikan dengan Markus Heimbach, ia mengusulkan untuk menambahkan kemungkinan bahwa jika Anda mengetik terlebih dahulu dan semua opsi difilter, Anda masih dapat mengirimkan teks ini sebagai input teks bebas.
Dengan kata lain, teks bebas selain pelengkapan otomatis untuk tingkat root.

Tapi saya pikir, pada dasarnya, apa yang sudah disebutkan @SaraDavilaMendez dengan #951 (komentar)

Terima kasih. Apakah melewatkan komentar ini.

Halo!

Kami menerima beberapa umpan balik tentang aspek lain yang dapat ditingkatkan, yaitu bagaimana filter menangani input teks sedang/panjang.

Saat ini widget menyajikan "jendela" input sekitar 24-25 karakter yang membuatnya agak sulit untuk meninjau teks yang dimasukkan atau disalin.
Widget misalnya dapat memperluas dan memanfaatkan ruang kosong di sisi kanannya, terutama di layar besar.

Screenshot 2020-10-23 at 09 29 30

Kotak biru menyoroti ukuran kotak input, contoh teksnya adalah: _ini adalah teks yang cukup panjang_

Pindah ke APM-266067

Apakah halaman ini membantu?
0 / 5 - 0 peringkat