Datamängdsorterare
- Komponent
- Status
-
Produktionsklar
Datamängdsorterare används vid sortering av datamängd och/eller för sökning i en datamängd i komponenterna lista eller tabell.
Användning
Sätt data till lista som ska sorteras och filtreras samt sortableAttributes till en beskrivning av de fält som är sorterbara.
<f-sort-filter-dataset
:data="items"
:sortable-attributes="{ givenname: 'Förnamn', surname: 'Efternamn' }"
>
<template #header="{ slotClass }">
<h3 :class="slotClass">Rubrik</h3>
</template>
<template #default="{ sortFilterResult }">
<!-- sortFilterResult is array with filtered items -->
</template>
</f-sort-filter-dataset>
Förvald sortering
Sätt defaultSortAttribute till namnet på fältet som ska sorteras samt defaultSortAscending till true (default) eller false för att välja om sorteringen ska ske i stigande (true) eller fallande (false) ordning.
<f-sort-filter-dataset
:data="items"
:sortable-attributes="{ givenname: 'Förnamn', surname: 'Efternamn' }"
+ default-sort-attribute="name"
+ :default-sort-ascending="true"
>
<template #header="{ slotClass }">
<h3 :class="slotClass">Rubrik</h3>
</template>
<template #default="{ sortFilterResult }">
<!-- sortFilterResult is array with filtered items -->
</template>
</f-sort-filter-dataset>
Filtrering
Sätt filterAttributes till en lista med vilka attribut som ska inkluderas i filtreringen.
Om filterAttributes inte anges inkluderas alla attribut i filtreringen.
<f-sort-filter-dataset
:data="items"
:sortable-attributes="{ givenname: 'Förnamn', surname: 'Efternamn' }"
+ :filter-attributes="['surname']"
>
<template #header="{ slotClass }">
<h3 :class="slotClass">Rubrik</h3>
</template>
<template #default="{ sortFilterResult }">
<!-- sortFilterResult is array with filtered items -->
</template>
</f-sort-filter-dataset>
Lista med datamängdsorterare
Visar hur FSortFilterDataset kan användas med FList.
Tabell med datamängdsorterare
När tabell (FInteractiveTable eller FDataTable) används med datamängdsorterare måste varje tabellkolumn använda name prop med ett unikt värde.
För objektet som du skickar till datamängdsorterarens sortableAttributes behöver egenskapernas namn även matcha kolumnernas namn för att kunna sortera dem.
-<f-table-column title="Datum">
+<f-table-column name="date" title="Datum">
const mySortableAttributes = {
// Property name must match column name.
date: "Datum",
};
Tabell med förvald sortering
Visar hur FSortFilterDataset kan användas med FInteractiveTable.
Tabell med åtgärder
Åtgärder som till exempel batch-funktioner som rör hela datamängden kan placeras i sloten Header för att gruppera med sortering och filtering.
Datamängdsorterare och egen presentation
Ändra rubriknivå
Du kan variera storleken genom att inte använda den tillgängliga slotClass (som sätter den standardiserade storleken för rubriken).
<f-sort-filter-dataset
:data="items"
:sortable-attributes="{ givenname: 'Förnamn', surname: 'Efternamn' }"
>
- <template #header="{ slotClass }">
- <h3 :class="slotClass">Rubrik</h3>
+ <template #header>
+ <h1>Rubrik</h1>
</template>
<template #default="{ sortFilterResult }">
<!-- sortFilterResult is array with filtered items -->
</template>
</f-sort-filter-dataset>
Visa antalet rader
För att visa antalet rader som presenteras använder man sig av de två listornas längd.
- Om längden av de ursprungliga raderna är
0finns inga rader att visa oavsett filtrering. - Om längden av de filtrerade raderna är
0(men ursprungliga är större än0) visas inga rader på grund av filter. - Om längden mellan de två skiljer sig åt har sökningen gett ett resultat.
Vi använder begreppet "träffar" för att presentera resultat. Om det går att specificera träffar så är det bättre att göra det, till exempel "Det finns inga frukter att visa" istället för "Det finns inga träffar att visa".
<f-sort-filter-dataset :data="items">
<template #default="{ sortFilterResult }">
+ Visar {{ sortFilterResult.length }} av {{ items.length }} frukter.
<f-data-table :rows="sortFilterResult">
<!-- [...] --->
</f-data-table>
</template>
</f-sort-filter-dataset>
Detta går också utnyttja i tabell för att presentera om tabellen är tom pga filtrering eller att inga rader fanns från första början:
<f-sort-filter-dataset :data="items">
<template #default="{ sortFilterResult }">
<f-data-table :rows="sortFilterResult">
<template #empty>
+ <template v-if="items.length === 0">
+ Det finns inga frukter att visa.
+ </template>
+ <template v-else>
+ Sökningen gav inga träffar.
+ </template>
</template>
</f-data-table>
</template>
</f-sort-filter-dataset>
API
Props
-
data: TArray -
The data that you wish to sort or filter.
-
sortableAttributes: Record -
All the attributes you want to enable sorting for and the corresponding name to display in the dropdown. Structured as
{attributeName: "Name for dropdown", secondAttributeName: "Name for dropdown"} -
defaultSortAttribute: PropertyKeyOptional -
If set the data will be sorted by this attribute by default.
-
showSort: booleanOptional -
Show/hides the sort dropdown.
-
showFilter: booleanOptional -
Show/hides the filter input.
-
filterLabel: stringOptional -
Label text for filter input field.
-
placeholderFilter: stringOptional Deprecated -
Previously set placeholder text in filter input field.
Default is textkey "fkui.sort-filter-dataset.placeholder.filter"
Deprecated: Use
filterLabelinstead. Deprecated since v6.40.0. -
defaultSortAscending: booleanOptional -
The order the data will be sorted by if defaultSortAttribute has been set.
-
filterAttributes: PropertyKey[]Optional -
Attributes that should be included in search when filtering by input. Default includes all attributes.
Events
-
datasetSorted -
Emitted when the data is sorted.
Arguments:
items: TInfered— The sorted data.
-
usedSortAttributes -
Emits the used sorting attributes.
Arguments:
sortAttribute: SortOrder— The attributes used when sorting the data.
Slots
-
header -
Slot for header to the left of the filter dropdown. Slot content is available through
v-slot="{ <propertyName> }", e.g.v-slot="{ slotClass }".Bindings:
slotClass: string[]— CSS classes to use for the SortFilter header element. Use with:class="slotClass".
-
default -
Slot for displaying the data. The data is available through
v-slot="{ <propertyName> }", e.g.v-slot="{ sortFilterResult }".Bindings:
sortFilterResult: T[]— The sorted or filtered data.