import _ from 'lodash'; import PropTypes from 'prop-types'; import React from 'react'; import classNames from 'classnames'; import { tooltipPositions, icons, sizes } from 'Helpers/Props'; import styles from './ReleaseSceneIndicator.css'; import DescriptionList from 'Components/DescriptionList/DescriptionList'; import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem'; import Popover from 'Components/Tooltip/Popover'; import Icon from 'Components/Icon'; function formatReleaseNumber(seasonNumber, episodeNumbers, absoluteEpisodeNumbers) { if (episodeNumbers && episodeNumbers.length) { if (episodeNumbers.length > 1) { return `${seasonNumber}x${episodeNumbers[0]}-${episodeNumbers[episodeNumbers.length - 1]}`; } return `${seasonNumber}x${episodeNumbers[0]}`; } if (absoluteEpisodeNumbers && absoluteEpisodeNumbers.length) { if (absoluteEpisodeNumbers.length > 1) { return `${absoluteEpisodeNumbers[0]}-${absoluteEpisodeNumbers[absoluteEpisodeNumbers.length - 1]}`; } return absoluteEpisodeNumbers[0]; } if (seasonNumber !== undefined) { return `Season ${seasonNumber}`; } return null; } function ReleaseSceneIndicator(props) { const { className, seasonNumber, episodeNumbers, absoluteEpisodeNumbers, sceneSeasonNumber, sceneEpisodeNumbers, sceneAbsoluteEpisodeNumbers, sceneMapping, episodeRequested, isDaily } = props; const { sceneOrigin, title, comment } = sceneMapping || {}; if (isDaily) { return null; } let mappingDifferent = (sceneSeasonNumber !== undefined && seasonNumber !== sceneSeasonNumber); if (sceneEpisodeNumbers !== undefined) { mappingDifferent = mappingDifferent || !_.isEqual(sceneEpisodeNumbers, episodeNumbers); } else if (sceneAbsoluteEpisodeNumbers !== undefined) { mappingDifferent = mappingDifferent || !_.isEqual(sceneAbsoluteEpisodeNumbers, absoluteEpisodeNumbers); } if (!sceneMapping && !mappingDifferent) { return null; } const releaseNumber = formatReleaseNumber(sceneSeasonNumber, sceneEpisodeNumbers, sceneAbsoluteEpisodeNumbers); const mappedNumber = formatReleaseNumber(seasonNumber, episodeNumbers, absoluteEpisodeNumbers); const messages = []; const isMixed = (sceneOrigin === 'mixed'); const isUnknown = (sceneOrigin === 'unknown' || sceneOrigin === 'unknown:tvdb'); let level = styles.levelNone; if (isMixed) { level = styles.levelMixed; messages.push(