The VaDataIteratorServer component is used to display data that does not fit into the grid structure or needs to be customized and is similar in functionality to the v-data-table component. It includes features such as sorting, search, pagination, filtering and selection. The list layout in the default slot is fully customizable.
Mixins:
<template>
<va-list :filters="filters" :fields="fields" disable-create disable-positioning disable-visibility :items-per-page="2">
<va-data-iterator-server :pagination="{
density: 'default',
activeColor: 'primary',
top: false,
bottom: true,
rounded: 'pill',
}">
<template v-slot:default="{ items }">
<v-row no-gutters class="bordered pt-1 pb-1 justify-center" v-if="$store.state.api.loading">
<v-progress-circular color="primary" indeterminate></v-progress-circular>
</v-row>
<v-row no-gutters v-else>
<v-col v-for="(item, i) in items" :key="i" cols="12" sm="6" xl="3" class="mb-3">
<v-sheet border rounded :class="(isOdd(i)) ? '' : 'mr-5'">
<v-list-item :title="item.raw.username" :subtitle="item.raw.id" lines="two" density="comfortable">
<template v-slot:title>
<strong class="text-h6">
{{ item.raw.username }}
</strong>
</template>
</v-list-item>
<v-table density="compact" class="text-caption">
<tbody>
<tr align="right">
<th width="20%">{{ $t("resources.failedlogins.fields.attemptedAt") }}:</th>
<td>{{ item.raw.attemptedAt }}</td>
</tr>
<tr align="right">
<th>{{ $t("resources.failedlogins.fields.ip") }}:</th>
<td>{{ item.raw.ip }}</td>
</tr>
<tr align="right">
<th>{{ $t("resources.failedlogins.fields.userAgent") }}:</th>
<td>{{ item.raw.userAgent }}</td>
</tr>
</tbody>
</v-table>
</v-sheet>
</v-col>
</v-row>
</template>
<template v-slot:bottom.pagination.header="{ page, pageCount }">
<v-footer class="text-body-3 mt-6 mb-2" style="padding:0;">
<div>{{ $t("dataiterator.displaying_page", {page, pageCount}) }}</div>
</v-footer>
</template>
<template v-slot:no-data>
<v-row no-gutters class="bordered pt-1 pb-1 justify-center" v-if="$store.state.api.loading">
<v-progress-circular color="primary" indeterminate></v-progress-circular>
</v-row>
<v-row no-gutters class="bordered pt-2 pb-2 justify-center" v-else>
{{ $t("va.datatable.nodata")}}
</v-row>
</template>
</va-data-iterator-server>
</va-list>
</template>
<script>
export default {
props: ["resource", "title"],
data() {
return {
filters: [
{
source: "username",
type: "select",
attributes: {
reference: "failedloginusernames",
multiple: true,
}
},
{
source: "ip",
type: "select",
attributes: {
reference: "failedloginips",
multiple: true,
}
},
{
source: "attemptedAtStart",
type: "date",
},
{
source: "attemptedAtEnd",
type: "date",
}
],
fields: [
{
source: "username",
type: "text",
sortable: true,
width: "10%"
},
{
source: "attemptedAt",
type: "date",
sortable: true,
width: "10%"
},
{
source: "userAgent",
sortable: true,
width: "10%"
},
{
source: "ip",
sortable: true,
width: "10%"
},
],
};
},
methods: {
isOdd(number) {
return (number & 1) === 1;
}
}
};
</script>
Options
Property | Type | Description | Default |
---|---|---|---|
class | String |
It assigns a value to the HTML class attribute of the div element surrounding the data table. | va-data-table |
pagination | object |
Controls customizable variables of paging components. When the top and bottom options are true, pagination can be displayed both at the bottom and at the top. | { density: 'default', activeColor: 'primary', top: false, bottom: true, rounded: 'pill', } |
showExpand | boolean |
Enables row expansion mode for quick detailed view. | false |
expandOnClick | boolean |
Allows the row to be expanded when the table rows are clicked. | false |
groupBy | array |
Vuetify folders table data using the original groupBy function. It can take more than one value. | [] |
selectStrategy | boolean |
Defines the strategy for selecting items in the list. Possible values: single, page, all. | page |
returnObject | boolean |
Changes the selection behavior to directly return the object rather than the value specified by the element value. | false |
mustSort | boolean |
If true, sorting cannot be disabled, it will always switch between ascending and descending. | false |
multiSort | boolean |
Enables/disables the multisorting feature, which is enabled by default. | true |
Slots
Name | Description |
---|---|
top.pagination.header | Allows customization of the top of the parent pagination. |
top.pagination.footer | Allows customization of the bottom of the parent pagination. |
bottom.pagination.header | Allows customization of the top of the sub-pagination. |
bottom.pagination.footer | Allows customization of the bottom part of sub-pagination. |
no-data | Allows you to customize the section displayed when no data is found. |