import classNames from 'classnames'; import moment from 'moment'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; import CalendarEventQueueDetails from 'Calendar/Events/CalendarEventQueueDetails'; import getStatusStyle from 'Calendar/getStatusStyle'; import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; import EpisodeDetailsModal from 'Episode/EpisodeDetailsModal'; import episodeEntities from 'Episode/episodeEntities'; import getFinaleTypeName from 'Episode/getFinaleTypeName'; import { icons, kinds } from 'Helpers/Props'; import formatTime from 'Utilities/Date/formatTime'; import padNumber from 'Utilities/Number/padNumber'; import translate from 'Utilities/String/translate'; import styles from './AgendaEvent.css'; class AgendaEvent extends Component { // // Lifecycle constructor(props, context) { super(props, context); this.state = { isDetailsModalOpen: false }; } // // Listeners onPress = () => { this.setState({ isDetailsModalOpen: true }); }; onDetailsModalClose = () => { this.setState({ isDetailsModalOpen: false }); }; // // Render render() { const { id, series, episodeFile, title, seasonNumber, episodeNumber, absoluteEpisodeNumber, airDateUtc, monitored, unverifiedSceneNumbering, finaleType, hasFile, grabbed, queueItem, showDate, showEpisodeInformation, showFinaleIcon, showSpecialIcon, showCutoffUnmetIcon, timeFormat, longDateFormat, colorImpairedMode } = this.props; const startTime = moment(airDateUtc); const endTime = moment(airDateUtc).add(series.runtime, 'minutes'); const downloading = !!(queueItem || grabbed); const isMonitored = series.monitored && monitored; const statusStyle = getStatusStyle(hasFile, downloading, startTime, endTime, isMonitored); const missingAbsoluteNumber = series.seriesType === 'anime' && seasonNumber > 0 && !absoluteEpisodeNumber; return (