import React from 'react';
import BootstrapTable from 'react-bootstrap-table-next';
import ToolkitProvider from 'react-bootstrap-table2-toolkit';
import moment from 'moment';
import _ from 'lodash';
import { faker } from '@faker-js/faker/locale/fr';
import {
Avatar,
Badge,
Button,
ButtonGroup,
Row,
Col
} from './../../../../components';
import { CustomExportCSV } from './CustomExportButton';
import { CustomSearch } from './CustomSearch';
import { randomArray, randomAvatar } from './../../../../utilities';
const generateRow = (id) => ({
id,
photo: randomAvatar(),
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
role: faker.name.jobType(),
status: randomArray([
'Active',
'Suspended',
'Waiting',
'Unknown'
]),
region: randomArray(['North', 'South', 'East', 'West']),
earnings: 500 + Math.random() * 1000,
earningsCurrencyIcon: randomArray([
,
]),
lastLoginDate: faker.date.recent(),
ipAddress: faker.internet.ip(),
browser: 'Safari 9.1.1(11601.6.17)',
os: 'OS X El Capitan',
planSelected: randomArray(['Basic', 'Premium', 'Enterprise']),
planEnd: faker.date.future()
});
const sortCaret = (order) => {
if (!order)
return ;
if (order)
return
};
export class AdvancedTableB extends React.Component {
constructor(props) {
super(props);
this.state = {
users: _.times(10, generateRow)
}
}
handleAddRow() {
const usersLength = this.state.users.length;
this.setState({
users: [
generateRow(usersLength + 1),
...this.state.users
]
})
}
createColumnDefinitions() {
return [
{
dataField: 'photo',
text: 'Photo',
formatter: (cell) => (
)
}, {
dataField: 'firstName',
text: 'First Name',
sort: true,
sortCaret
}, {
dataField: 'lastName',
text: 'Last Name',
sort: true,
sortCaret
}, {
dataField: 'role',
text: 'Role',
sort: true,
sortCaret
}, {
dataField: 'status',
text: 'Status',
sort: true,
sortCaret,
formatter: (cell) => {
const color = (status) => {
const map = {
'Active': 'success',
'Suspended': 'danger',
'Waiting': 'info',
'Unknown': 'secondary'
};
return map[status];
}
return (
{ cell }
);
}
}, {
dataField: 'region',
text: 'Region',
sort: true,
sortCaret
}, {
dataField: 'earnings',
text: 'Earnings',
sort: true,
sortCaret,
formatter: (cell, row) => (
{ row.earningsCurrencyIcon }
{ _.isNumber(cell) && cell.toFixed(2) }
)
}
];
}
render() {
const columnDefs = this.createColumnDefinitions();
const expandRow = {
renderer: row => (
- Last Login
- { moment(row.lastLoginDate).format('DD-MMM-YYYY') }
- IP Address
- { row.ipAddress }
- Browser
- { row.browser }
- Operating System
- { row.os }
- Selected Plan
- { row.planSelected }
- Plan Expiriation
- { moment(row.planEnd).format('DD-MMM-YYYY') }
),
showExpandColumn: true,
expandHeaderColumnRenderer: ({ isAnyExpands }) => isAnyExpands ? (
) : (
),
expandColumnRenderer: ({ expanded }) =>
expanded ? (
) : (
)
}
return (
{
props => (
AdvancedTable B
Export
)
}
);
}
}