'use strict'; import React from 'react'; import Status from './Status'; import Statistics from './Statistics'; import CampaignsCUD from './CUD'; import Content from './Content'; import CampaignsList from './List'; import Share from '../shares/Share'; import Files from "../lib/files"; import { CampaignSource, CampaignStatus, CampaignType } from "../../../shared/campaigns"; import TriggersCUD from './triggers/CUD'; import TriggersList from './triggers/List'; import StatisticsSubsList from "./StatisticsSubsList"; import {SubscriptionStatus} from "../../../shared/lists"; import StatisticsOpened from "./StatisticsOpened"; import StatisticsLinkClicks from "./StatisticsLinkClicks"; function getMenus(t) { const aggLabels = { 'countries': t('Countries'), 'devices': t('Devices') }; return { 'campaigns': { title: t('campaigns'), link: '/campaigns', panelComponent: CampaignsList, children: { ':campaignId([0-9]+)': { title: resolved => t('campaignName', {name: resolved.campaign.name}), resolve: { campaign: params => `rest/campaigns-settings/${params.campaignId}` }, link: params => `/campaigns/${params.campaignId}/status`, navs: { status: { title: t('status'), link: params => `/campaigns/${params.campaignId}/status`, visible: resolved => resolved.campaign.permissions.includes('viewStats'), panelRender: props => }, statistics: { title: t('statistics'), resolve: { statisticsOverview: params => `rest/campaign-statistics/${params.campaignId}/overview` }, link: params => `/campaigns/${params.campaignId}/statistics`, visible: resolved => resolved.campaign.permissions.includes('viewStats') && (resolved.campaign.status === CampaignStatus.SENDING || resolved.campaign.status === CampaignStatus.PAUSED || resolved.campaign.status === CampaignStatus.FINISHED), panelRender: props => , children: { delivered: { title: t('Delivered'), link: params => `/campaigns/${params.campaignId}/statistics/delivered`, panelRender: props => }, complained: { title: t('Complained'), link: params => `/campaigns/${params.campaignId}/statistics/complained`, panelRender: props => }, bounced: { title: t('Bounced'), link: params => `/campaigns/${params.campaignId}/statistics/bounced`, panelRender: props => }, unsubscribed: { title: t('Unsubscribed'), link: params => `/campaigns/${params.campaignId}/statistics/unsubscribed`, panelRender: props => }, 'opened': { title: t('Opened'), resolve: { statisticsOpened: params => `rest/campaign-statistics/${params.campaignId}/opened` }, link: params => `/campaigns/${params.campaignId}/statistics/opened/countries`, children: { ':agg(countries|devices)': { title: (resolved, params) => aggLabels[params.agg], link: params => `/campaigns/${params.campaignId}/statistics/opened/${params.agg}`, panelRender: props => } } }, 'clicks': { title: t('Clicks'), link: params => `/campaigns/${params.campaignId}/statistics/clicks`, panelRender: props => } } }, ':action(edit|delete)': { title: t('edit'), link: params => `/campaigns/${params.campaignId}/edit`, visible: resolved => resolved.campaign.permissions.includes('edit'), panelRender: props => }, content: { title: t('content'), link: params => `/campaigns/${params.campaignId}/content`, resolve: { campaignContent: params => `rest/campaigns-content/${params.campaignId}` }, visible: resolved => resolved.campaign.permissions.includes('edit') && (resolved.campaign.source === CampaignSource.CUSTOM || resolved.campaign.source === CampaignSource.CUSTOM_FROM_TEMPLATE || resolved.campaign.source === CampaignSource.CUSTOM_FROM_CAMPAIGN), panelRender: props => }, files: { title: t('files'), link: params => `/campaigns/${params.campaignId}/files`, visible: resolved => resolved.campaign.permissions.includes('viewFiles') && (resolved.campaign.source === CampaignSource.CUSTOM || resolved.campaign.source === CampaignSource.CUSTOM_FROM_TEMPLATE || resolved.campaign.source === CampaignSource.CUSTOM_FROM_CAMPAIGN), panelRender: props => }, attachments: { title: t('attachments'), link: params => `/campaigns/${params.campaignId}/attachments`, visible: resolved => resolved.campaign.permissions.includes('viewAttachments'), panelRender: props => }, triggers: { title: t('triggers'), link: params => `/campaigns/${params.campaignId}/triggers/`, visible: resolved => resolved.campaign.type === CampaignType.TRIGGERED && resolved.campaign.permissions.includes('viewTriggers'), panelRender: props => , children: { ':triggerId([0-9]+)': { title: resolved => t('triggerName', {name: resolved.trigger.name}), resolve: { trigger: params => `rest/triggers/${params.campaignId}/${params.triggerId}`, }, link: params => `/campaigns/${params.campaignId}/triggers/${params.triggerId}/edit`, navs: { ':action(edit|delete)': { title: t('edit'), link: params => `/campaigns/${params.campaignId}/triggers/${params.triggerId}/edit`, panelRender: props => } } }, create: { title: t('create'), panelRender: props => } } }, share: { title: t('share'), link: params => `/campaigns/${params.campaignId}/share`, visible: resolved => resolved.campaign.permissions.includes('share'), panelRender: props => } } }, 'create-regular': { title: t('createRegularCampaign'), panelRender: props => }, 'create-rss': { title: t('createRssCampaign'), panelRender: props => }, 'create-triggered': { title: t('createTriggeredCampaign'), panelRender: props => } } } }; } export default { getMenus }