/* @flow */ import React, { Component } from 'react'; import { translate } from '../../base/i18n'; import TimeElapsed from './TimeElapsed'; /** * The type of the React {@code Component} props of {@link SpeakerStatsItem}. */ type Props = { /** * The name of the participant. */ displayName: string, /** * The total milliseconds the participant has been dominant speaker. */ dominantSpeakerTime: number, /** * The object that has as keys the facial expressions of the * participant and as values a number that represents the count . */ facialExpressions: Object, /** * True if the participant is no longer in the meeting. */ hasLeft: boolean, /** * True if the participant is currently the dominant speaker. */ isDominantSpeaker: boolean, /** * True if the client width is les than 750. */ reduceExpressions: boolean, /** * True if the facial recognition is not disabled. */ showFacialExpressions: boolean, /** * Invoked to obtain translated strings. */ t: Function }; /** * React component for display an individual user's speaker stats. * * @augments Component */ class SpeakerStatsItem extends Component { /** * Implements React's {@link Component#render()}. * * @inheritdoc * @returns {ReactElement} */ render() { const hasLeftClass = this.props.hasLeft ? 'status-user-left' : ''; const rowDisplayClass = `speaker-stats-item ${hasLeftClass}`; const dotClass = this.props.isDominantSpeaker ? 'status-active' : 'status-inactive'; const speakerStatusClass = `speaker-stats-item__status-dot ${dotClass}`; return (
{ this.props.displayName }
{ this.props.showFacialExpressions && ( <>
{ this.props.facialExpressions.happy }
{ this.props.facialExpressions.neutral }
{ this.props.facialExpressions.sad }
{ this.props.facialExpressions.surprised }
{!this.props.reduceExpressions && ( <>
{ this.props.facialExpressions.angry }
{ this.props.facialExpressions.fearful }
{ this.props.facialExpressions.disgusted }
)} ) }
); } } export default translate(SpeakerStatsItem);