| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 | 
							- import React, { Component } from 'react';
 - 
 - import { translate } from '../../base/i18n';
 - 
 - declare var AJS: Object;
 - 
 - /**
 -  * Implements a React Component for the reload timer. Starts counter from
 -  * props.start, adds props.step to the current value on every props.interval
 -  * seconds until the current value reaches props.end. Also displays progress
 -  * bar.
 -  */
 - class ReloadTimer extends Component {
 -     /**
 -      * ReloadTimer component's property types.
 -      *
 -      * @static
 -      */
 -     static propTypes = {
 -         /**
 -          * The end of the timer. When this.state.current reaches this value the
 -          * timer will stop and call onFinish function.
 -          *
 -          * @public
 -          * @type {number}
 -          */
 -         end: React.PropTypes.number,
 - 
 -         /**
 -          * The interval in sec for adding this.state.step to this.state.current.
 -          *
 -          * @public
 -          * @type {number}
 -          */
 -         interval: React.PropTypes.number,
 - 
 -         /**
 -          * The function that will be executed when timer finish (when
 -          * this.state.current === this.props.end)
 -          */
 -         onFinish: React.PropTypes.func,
 - 
 -         /**
 -          * The start of the timer. The initial value for this.state.current.
 -          *
 -          * @public
 -          * @type {number}
 -          */
 -         start: React.PropTypes.number,
 - 
 -         /**
 -          * The value which will be added to this.state.current on every step.
 -          *
 -          * @public
 -          * @type {number}
 -          */
 -         step: React.PropTypes.number,
 - 
 -         /**
 -          * The function to translate human-readable text.
 -          *
 -          * @public
 -          * @type {Function}
 -          */
 -         t: React.PropTypes.func
 -     }
 - 
 -     /**
 -      * Initializes a new ReloadTimer instance.
 -      *
 -      * @param {Object} props - The read-only properties with which the new
 -      * instance is to be initialized.
 -      * @public
 -      */
 -     constructor(props) {
 -         super(props);
 - 
 -         this.state = {
 -             /**
 -              * Current value(time) of the timer.
 -              *
 -              * @type {number}
 -              */
 -             current: this.props.start,
 - 
 -             /**
 -              * The absolute value of the time from the start of the timer until
 -              * the end of the timer.
 -              *
 -              * @type {number}
 -              */
 -             time: Math.abs(this.props.end - this.props.start)
 -         };
 -     }
 - 
 -     /**
 -      * React Component method that executes once component is mounted.
 -      *
 -      * @inheritdoc
 -      * @returns {void}
 -      * @protected
 -      */
 -     componentDidMount() {
 -         AJS.progressBars.update('#reloadProgressBar', 0);
 - 
 -         const intervalId
 -             = setInterval(
 -                     () => {
 -                         if (this.state.current === this.props.end) {
 -                             clearInterval(intervalId);
 -                             this.props.onFinish();
 -                         } else {
 -                             this.setState((prevState, props) => {
 -                                 return {
 -                                     current: prevState.current + props.step
 -                                 };
 -                             });
 -                         }
 -                     },
 -                     Math.abs(this.props.interval) * 1000);
 -     }
 - 
 -     /**
 -      * React Component method that executes once component is updated.
 -      *
 -      * @inheritdoc
 -      * @returns {void}
 -      * @protected
 -      */
 -     componentDidUpdate() {
 -         AJS.progressBars.update(
 -                 '#reloadProgressBar',
 -                 Math.abs(this.state.current - this.props.start)
 -                     / this.state.time);
 -     }
 - 
 -     /**
 -      * Implements React's {@link Component#render()}.
 -      *
 -      * @inheritdoc
 -      * @returns {ReactElement|null}
 -      * @public
 -      */
 -     render() {
 -         const { t } = this.props;
 - 
 -         return (
 -             <div>
 -                 <div
 -                     className = 'aui-progress-indicator'
 -                     id = 'reloadProgressBar'>
 -                     <span className = 'aui-progress-indicator-value' />
 -                 </div>
 -                 <span className = 'reload_overlay_text'>
 -                     {
 -                         this.state.current
 -                     }
 -                     <span>
 -                         { t('dialog.conferenceReloadTimeLeft') }
 -                     </span>
 -                 </span>
 -             </div>
 -         );
 -     }
 - }
 - 
 - export default translate(ReloadTimer);
 
 
  |