ccolonna / odp-reactor

React UIs to render Linked Data, especially Ontology Design Patterns
0 stars 1 forks source link

Filters logic should be ridiscussed #139

Closed ccolonna closed 3 years ago

ccolonna commented 3 years ago

Time Filter

Il filtro Time Interval, quando attivato, fa sparire tutto. E' chiaramente implementato male. La logica deve essere "dalla data valore-minimo in poi", "prima della data valore-massimo". Vanno quindi confrontate le date. E anche in questo caso va secondo me diviso in due.

Il problema si pone quando un bene non ha starting time e/o ending time. In questi casi potrebbe significare che il bene è sempre stato lì oppure che non lo sappiamo. Nel primo caso dovremmo includere queste entry sempre, cioè considerare la mancanza di ending time come il fatto che il bene è ancora lì e la mancanza di starting time come "da sempre". Nel secondo caso dovrebbe essere l'utente a decidere che fare. Visto che non abbiamo modo di distinguere il primo caso dal secondo direi di mettere un flag "Includi elementi con starting/ending time mancanti", per default attivo, che l'utente può disattivare all'occorrenza.

Slider Range Filter

L'uso dei filtri con intervallo di valori lo trovo poco intuitivo. La logica implementata è quella dell'intervallo in termini matematici che è corretta da un punto di vista, appunto, matematico ma molto meno usabile secondo me dal punto di vista di un qualsiasi utente. Probabilmente la cosa migliore da fare è di permettere di muoversi all'interno del range soltanto con un cursore, non due. Cioè vado a indicare soltanto il valore minimo. Un'altra possibilità è che il filtro sia implementato visualizzando due volte lo stesso intervallo, e per ognuno avere un cursore. Un intervallo per selezionare il valore minimo, l'altro per selezionare il valore massimo. In questo modo ogni cursore avrà la sua semantica. Per il valore minimo sarà "almeno x", per il valore massimo sarà "max x". Inoltre se un'entità non ha valori per quell'attributo, secondo me va sempre visualizzata. Non sappiamo qual è il valore, quindi non possiamo escluderla. Eventualmente possiamo dare la possibilità all'utente di esprimere una preferenza per questa logica: un checkbox in cui può chiedere di visualizzare/non visualizzare le entità che non hanno valore per quell'attributo/property.