Дипломная работа: Автоматизация учета рабочего времени сотрудников компании ООО "ВЕЛЕС"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
94
handleSubmit = () => {
this.props.onSubmit(this.state.user);
}
/**
* Рендерит футер модального окна.
*/
renderModalFooter = () => {
const {onClose} = this.props;
return (
eact.Fragment>
<SimpleButton label=" Создать" onClick={this.handleSubmit}
iconClass="fa-check"/>
<SimpleButton label=" Отмена"
btnStyle={EButtonStyle.WARNING} onClick={onClose} iconClass="fa-ban"/>
</React.Fragment>
)
}
render () {
const {onClose} = this.props;
return (
<ModalWindow
show
dialogClassN ame=""
header="Добавление нового пользователя"
body={this.renderModalBody()}
footer={this.renderModalFooter()}
onClose={onClose}
95
)
}
}
import * as React from 'react';
import {map, filter} from 'lodash';
import {ExpandingPanel} from '../../Core/ExpandingPanel';
import {EExpandingPanelType} from '../../Core/Enums';
import {LayoutHeader} from '../Header/LayoutHeader';
import {ITask, IUser, ETaskType, ERole} from '../../../models/Common';
import {ChairPie} from '../../../Components/Core/Chairs/ChairPie';
import {IChartData} from '../../../Components/Core/Chairs/ChairModels';
/**
* Параметры компонента.
*/
interface IProps {
tasks: ITask[];
users: IUser[];
}
/>
/**
* Отображает вопросы по выбранному типу.
*/
export class Statistics extends React.PureComponent<IProps> {
getProductivityTotal = (): IChartData[] => {
const {tasks, users} = this.props;
return map (users, (user: IUser) => {
const total = filter(tasks, (task: ITask) => {return task.userId ===
user._id});
const result: IChartData = {
96
label: user.name,
value: total ? total.length : 0
}
return result
})
}
/**
* Получение продуктивности
*/
getProductivityActivity = (): IChartData[] => {
const {tasks} = this.props;
const total = filter(tasks, (task: ITask) => {return task.type !==
ETaskType.FREE});
const activeTime = total ? total.length : 0;
return [
{
label: 'Активное время',
value: activeTime
},
{
label: 'Время простоя',
value: tasks.length - activeTime
}
]
}
/**
* Получение продуктивности
*/
97
getProductivityUser = (user: IUser): IChartData[] => {
const {tasks} = this.props;
const userTasks = filter(tasks, (task: ITask) => {return user._id ===
task.userId});
const free = filter(userTasks, (task: ITask) => {return task.type ===
ETaskType.FREE});
const calls = filter(userTasks, (task: ITask) => {return task.type ===
ETaskType. CALL});
const docs = filter(userTasks, (task: ITask) => {return task.type ===
ETaskType.DOC});
const freeTime = free ? free.length : 0;
const callsTime = calls ? calls.length : 0;
const docsTime = docs ? docs.length : 0;
return [
{
label: 'Звонки',
value: freeTime
},
{
label: 'Сделки',
value: callsTime
},
{
label: 'Не рабочее время',
value: docsTime
}
]
}
98
render () {
const {users} = this.props;
return (
<div className="tasks">
<LayoutHeader label={'CTaracraKa предприятия'}/>
andingPanel
collapsed
className="col-xs-12 question"
headerClassName="pb-0"
collapsedIconQassName="fa-plus"
expandedIconClassName-'fa-minus"
panelType={EExpandingPanelType.EXPANDING_BLOCK}
header="Продуктивность предприятия по активности"
>
irPie
data={this.getProductivityT otal()}
/>
</ExpandingPanel>
andingPanel
collapsed
className="col-xs-12 question"
headerClassName="pb-0"
collapsedIconQassName="fa-plus"
expandedIconClassName-'fa-minus"
panelType={EExpandingPanelType.EXPANDING_BLOCK}
header="Продуктивность предприятия по занятости"
>
irPie
data={this.getProductivityActivity()}
Источник: https://baza.diplomsite.ru/previewfile/2431