import React from 'react';
import { Tabs, Tab, Row, Col, Button, Badge, Alert } from 'react-bootstrap';
import { Card, ReactTable, WaitIcon, Profile } from '../../../components/index';
import DayPicker, { DateUtils } from 'react-day-picker';
import { server } from '../../../commons/server';
import Form from '../../../forms/form';
import moment from 'moment';
const fschema = {
controls: [
{
property: 'iniDate',
required: true,
type: 'date',
label: __('Period.iniDate'),
size: { sm: 4 }
},
{
property: 'endDate',
required: false,
type: 'date',
label: __('Period.endDate'),
size: { sm: 4 }
},
{
property: 'userId',
required: false,
type: 'select',
label: __('User'),
options: 'users',
size: { sm: 4 }
}
]
};
/**
* The page controller of the public module
*/
export default class UserSessions extends React.Component {
constructor(props) {
super(props);
this.onDayClickCalendar = this.onDayClickCalendar.bind(this);
this.refreshTableAllFilters = this.refreshTableAllFilters.bind(this);
this.onChangeDoc = this.onChangeDoc.bind(this);
this.state = { iniDate: new Date(), doc: {} };
}
componentWillMount() {
this.refreshTableByDay(this.state.iniDate);
}
onChangeDoc() {
this.forceUpdate();
}
/**
* Called when the report wants to update its content
* @return {[type]} [description]
*/
refreshTableByDay(day) {
const self = this;
const query = {
iniDate: day.getTime()
};
return server.post('/api/admin/rep/dailyusersession', query)
.then(res => {
// generate new result
const result = { count: res.count, list: res.list };
// set state
self.setState({ values: result, iniDate: day });
// return to the promise
return result;
});
}
refreshTableAllFilters() {
const self = this;
const errors = this.refs.form.validate();
this.setState({ errors: errors });
if (errors) {
return;
}
const query = {
iniDate: this.state.doc.iniDate,
endDate: this.state.doc.endDate,
userId: this.state.doc.userId
};
server.post('/api/admin/rep/usersession', query)
.then(res => {
// generate new result
const result = { count: res.count, list: res.list };
// set state
self.setState({ values: result });
});
}
onDayClickCalendar(e, day) {
this.refreshTableByDay(day);
}
headerRender(count) {
const countHTML = {__('admin.reports.usersession')} {count === 0 ? '' : countHTML}