import React from 'react';
import { NavLinkProps } from 'react-router-dom';
import './StrategyHeading.css';
import WorkspaceNavigation from 'wdk-client/Components/Workspace/WorkspaceNavigation';
// The link for Opened strategies is active if the url matches one of:
// - /workspace/strategies
// - /workspace/strategies/:strategyId
// - /workspace/strategies/:strategyId/:stepId
// - /workspace/strategies/:strategyId/:stepId/:tabId
const isOpenedLinkActive: NavLinkProps['isActive'] = (match , location) => {
if (match == null) return false;
if (!location.pathname.startsWith(match.url)) return false;
const subPath = location.pathname.replace(match.url, '');
return /^(\/\d+){0,3}$/.test(subPath);
}
const toCountString = (count?: number, isError?: boolean) => (
isError ?
!
: count != null ? count.toLocaleString()
: ...
)
interface Props {
activeStrategy?: { strategyId: number, stepId?: number };
openedStrategiesCount?: number;
allStrategiesCount?: number;
publicStrategiesCount?: number;
publicStrategiesError?: boolean;
}
function StrategyHeader(props: Props) {
const activeStratPath = props.activeStrategy ? `${props.activeStrategy.strategyId}` : '';
const activeStepPath = props.activeStrategy && props.activeStrategy.stepId ? `/${props.activeStrategy.stepId}` : '';
const { openedStrategiesCount, allStrategiesCount, publicStrategiesCount, publicStrategiesError } = props
return (
Opened ({toCountString(openedStrategiesCount)})>,
route: activeStratPath + activeStepPath,
state: { allowEmptyOpened: true },
isActive: isOpenedLinkActive
},
{
display: <>All ({toCountString(allStrategiesCount)})>,
route: 'all'
},
{
display: <>Public ({toCountString(publicStrategiesCount, publicStrategiesError)})>,
route: 'public'
},
{
display: 'Help',
route: 'help'
}
]}
/>
)
}
export default StrategyHeader;