BsStore
A built-in data store class for working with collection of entity objects and remote API.
Overview
Vue MDBootstrap provides built-in data store class for working with collection of entity objects and remote API. BsStore is used to store collection of entity objects locally and your application is reponsible to manage them. Components like BsCombobox and BsListbox are examples of components that use BsStore for their data binding.
Usage Example
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
}
});
CSRF Token
If the RESTful backend needs CSRF token within the POST,PATCH, PUT or DELETE request, we can accomplish it with:
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
},
csrfConfig: {
// do not change text: '{name}'
url: './api/token/{name}',
// 'token_name' is a keyword to identify the token.
// This keyword is used by the RESTful backend to create the CSRF token.
tokenName: 'token_name',
dataField: 'value',
// If 'suffix' is 'true' then the keyword will become: 'token_name-create', 'token_name-update', 'token_name-delete'
// when perfoming HTTP request to save, update or delete record.
suffix: false,
}
});
Filtering Data
Filter dataset at creation time
BsStore provides functionality to define filters at creation time. The filters we define here will be treated as default filters. See example below:
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
filters: [{ property: 'fullName', value: 'john', operator: 'contains' }],
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
}
});
// load the data
dsStore.load()
.then(() => {
console.info('datas: ', dsStore.dataItems);
})
.catch((error) => {
console.warn(error);
});
Filter dataset on demands
BsStore also provides functionality to filter dataset on demands. See example below:
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
}
});
// apply filter to the dataset
dsStore.filters = [{ property: 'fullName', value: 'john', operator: 'contains' }];
// load the dataset
dsStore.load()
.then(() => {
console.info('datas: ', dsStore.dataItems);
})
.catch((error) => {
console.warn(error);
});
Sorting Data
Sort dataset at creation time
BsStore provides functionality to define sort criterias at creation time. See example below:
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
sorts: [{ property: 'fullName', direction: 'asc' }],
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
}
});
// load the dataset
dsStore.load()
.then(() => {
console.info('datas: ', dsStore.dataItems);
})
.catch((error) => {
console.warn(error);
});
Sort dataset on demands
BsStore also provides functionality to sort dataset on demands. See example below:
import { BsStore } from "vue-mdbootstrap";
const dsStore = new BsStore({
idProperty: 'id',
dataProperty: 'data',
totalProperty: 'total',
pageSize: 15,
restProxy: {
browse: './api/users',
delete: { url: './api/users/{id}', method: 'delete' },
save: { url: './api/users', method: 'post' },
update: { url: './api/users', method: 'patch' }
}
});
// define sorters criteria then load the dataset
dsStore.setSorters([{ property: 'fullName', direction: 'asc' }])
.load()
.then(() => {
console.info('datas: ', dsStore.dataItems);
})
.catch((error) => {
console.warn(error);
});