import React from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import * as actions from 'state/records/actions';
import SilverStripeComponent from 'silverstripe-component';
import Accordion from 'components/accordion/index';
import AccordionGroup from 'components/accordion/group';
import AccordionItem from 'components/accordion/item';
import NorthHeader from 'components/north-header/index';
import CampaignItem from './item';
import CampaignPreview from './preview';
/**
* Represents a campaign list view
*/
class CampaignListContainer extends SilverStripeComponent {
componentDidMount() {
const fetchURL = this.props.itemListViewEndpoint.replace(/:id/, this.props.campaignId);
super.componentDidMount();
this.props.actions.fetchRecord('ChangeSet', 'get', fetchURL);
}
/**
* Renders a list of items in a Campaign.
*
* @return object
*/
render() {
const itemID = 1; // todo - hook up to "click" handler for changesetitems
const campaignId = this.props.campaignId;
// Trigger different layout when preview is enabled
const previewUrl = this.previewURLForItem(itemID);
const itemGroups = this.groupItemsForSet();
const classNames = previewUrl ? 'cms-middle with-preview' : 'cms-middle no-preview';
// Get items in this set
let accordionGroups = [];
Object.keys(itemGroups).forEach(className => {
const group = itemGroups[className];
const groupCount = group.items.length;
let accordionItems = [];
let title = `${groupCount} ${groupCount === 1 ? group.singular : group.plural}`;
let groupid = `Set_${campaignId}_Group_${className}`;
// Create items for this group
group.items.forEach(item => {
// Add extra css class for published items
let itemClassName = '';
if (item.ChangeType === 'none') {
itemClassName = 'list-group-item--published';
}
accordionItems.push(