import React from 'react'; import './executionParameters.less'; import './executionStatus.less'; export interface IExecutionParametersProps { shouldShowAllParams: boolean; displayableParameters: IDisplayableParameter[]; pinnedDisplayableParameters: IDisplayableParameter[]; } export interface IDisplayableParameter { key: string; value: string; showTruncatedValue?: boolean; valueTruncated?: string; } export class ExecutionParameters extends React.Component { constructor(props: IExecutionParametersProps) { super(props); } private toggleParameterTruncation(parameter: IDisplayableParameter) { if (parameter.valueTruncated) { return () => { parameter.showTruncatedValue = !parameter.showTruncatedValue; this.forceUpdate(); }; } return null; } public render() { const { shouldShowAllParams, displayableParameters, pinnedDisplayableParameters } = this.props; let parameters = pinnedDisplayableParameters; if (shouldShowAllParams) { parameters = displayableParameters; } if (!parameters.length) { return null; } const halfWay = Math.ceil(parameters.length / 2); const paramsSplitIntoColumns = [parameters.slice(0, halfWay), parameters.slice(halfWay)]; return (
{shouldShowAllParams && 'Parameters'}
{paramsSplitIntoColumns.map((c, i) => (
{c.map((p) => (
{p.key}:
{p.showTruncatedValue ? p.valueTruncated : p.value} {p.valueTruncated && ( )}
))}
))}
); } }