import React from 'react'; import percentPipe from 'app/shared/pipes/percent.pipe'; import cx from 'classnames'; export interface BunkerConsumptionCalculationsRowData { type: string; days?: number; daysPercentage?: number; reported?: number; virtual?: number; difference?: number; } interface DataRowProps { data: BunkerConsumptionCalculationsRowData; total?: boolean; } const DataRow = ({ data }: DataRowProps) => { const isTotal = data.type === 'total'; const cellStyle = cx( 'c-bunker-consumption-calculations-rows__cell', 'c-bunker-consumption-calculations-rows__cell--data', ); const cellTextStyle = cx( { 'c-bunker-consumption-calculations-rows__data--text': !isTotal }, { 'c-bunker-consumption-calculations-rows__data--additional-data': isTotal }, ); const rowStyles = cx( 'c-bunker-consumption-calculations-rows__row', 'c-bunker-consumption-calculations-rows__row--main-data', 'c-bunker-consumption-calculations-rows__row--padded', { 'c-bunker-consumption-calculations-rows__row--no-background-color': isTotal }, { 'c-bunker-consumption-calculations-rows__row--row-total': isTotal }, ); const getDaysPercentage = (data: BunkerConsumptionCalculationsRowData) => data.daysPercentage ? {'(' + percentPipe.format(data.daysPercentage * 100, 1) + ')'} : ''; return (

{data.days !== null && data.days !== undefined ? data.days : '-'} {!isTotal ? getDaysPercentage(data) : data.days !== null && data.days !== undefined ? on-hire-days : '' }

{data.reported !== null && data.reported !== undefined ? data.reported: `-`}

{data.virtual !== null && data.virtual !== undefined ? data.virtual: `-`}

{data.difference !== null && data.difference !== undefined ? data.difference: `-`}

); }; interface SummaryRowProps { difference: number; vesselName: string; } const SummaryRow = ({ difference, vesselName }: SummaryRowProps) => { const dataClassName = cx( 'c-bunker-consumption-calculations-rows__data', 'c-bunker-consumption-calculations-rows__data--summary', { 'c-bunker-consumption-calculations-rows__data--positive': difference <= 0 }, ); const suffixClassName = cx( 'c-bunker-consumption-calculations-rows__data', 'c-bunker-consumption-calculations-rows__data--summary-suffix', { 'c-bunker-consumption-calculations-rows__data--positive': difference <= 0 }, ); return (

{`Total difference between ${vesselName} and virtual pool vessel`}

{difference !== null && true &&

{difference} {` mt`}

}
); }; const consumptionColumnLabels = [ { text: `ON-HIRE DAYS`, type: `DAYS` }, { text: `REPORTED BUNKER CONSUMPTION`, type: `MT` }, { text: `VIRTUAL POOL VESSEL CONSUMPTION`, type: `MT` }, { text: `DIFFERENCE`, type: `MT` }, ]; const ColumnLabelRow = () => { return
{consumptionColumnLabels.map(data => (

{data.text ?? '-'}

{data.type}

))}
; }; interface LabelRowProps { text: string; total?: boolean; } const LabelRow = ({ text, total }: LabelRowProps) => { const cellStyle = cx( 'c-bunker-consumption-calculations-rows__row c-bunker-consumption-calculations-rows__row--cell-sized', { 'c-bunker-consumption-calculations-rows__row--row-label': total }, ); const textStyle = cx( '', { ' c-bunker-consumption-calculations-rows__label--row': !total }, { ' c-bunker-consumption-calculations-rows__row--total ': total }, ); return (

{text}

); }; export const BunkerConsumptionCalculationsRows = { DataRow, SummaryRow, ColumnLabelRow, LabelRow, };