import React from 'react'; import {gettext} from 'core/utils'; import {ModalHeader} from 'core/ui/components/Modal/ModalHeader'; import {ModalBody} from 'core/ui/components/Modal/ModalBody'; import {ModalFooter} from 'core/ui/components/Modal/ModalFooter'; import {Modal} from 'core/ui/components/Modal/Modal'; import {connectServices} from 'core/helpers/ReactRenderAsync'; import {IDesk, IArticle} from 'superdesk-api'; import {getHighlightsLabel, IHighlight} from '../services/HighlightsService'; interface IProps { closeModal(): void; highlightsService?: any; } interface IState { selectedHighlights: Array; highlightsForDesk?: Array; } export function getModalForMultipleHighlights(articles: Array, deskId: IDesk['_id']) { class SetHighlightsForMultipleArticlesModalComponent extends React.Component { constructor(props: IProps) { super(props); this.state = { selectedHighlights: [], }; this.handleChange = this.handleChange.bind(this); this.markHighlights = this.markHighlights.bind(this); } componentDidMount() { this.props.highlightsService.get(deskId).then((res) => { this.setState({ highlightsForDesk: res._items, }); }); } markHighlights() { var promises = Promise.resolve(); articles.forEach((article) => { this.state.selectedHighlights.forEach((highlightId) => { if (article.highlights == null || article.highlights.includes(highlightId) === false) { promises.then(() => this.props.highlightsService.markItem(highlightId, article)); } }); }); promises.then(() => { this.props.closeModal(); }); } handleChange(event: React.ChangeEvent) { const selected = []; const {options} = event.target; for (const key in options) { const optionElement = options[key]; if (optionElement.selected) { selected.push(optionElement.value); } } this.setState({ selectedHighlights: selected, }); } render() { if (this.state.highlightsForDesk == null) { return null; } return (
{gettext('Set highlights')} { this.state.highlightsForDesk.length < 1 ?
{gettext('No available highlights')}
: ( ) }
); } } return connectServices(SetHighlightsForMultipleArticlesModalComponent, ['highlightsService']); }