Files
bigcapital/client/src/containers/FinancialStatements/InventoryItemDetails/components.js
2021-06-08 17:39:33 +02:00

69 lines
1.8 KiB
JavaScript

import React from 'react';
import { Button } from '@blueprintjs/core';
import { Icon, If } from 'components';
import { FormattedMessage as T } from 'react-intl';
import { dynamicColumns } from './utils';
import FinancialLoadingBar from '../FinancialLoadingBar';
import { useInventoryItemDetailsContext } from './InventoryItemDetailsProvider';
/**
* Retrieve inventory item details columns.
*/
export const useInventoryItemDetailsColumns = () => {
const {
inventoryItemDetails: { columns, tableRows },
} = useInventoryItemDetailsContext();
return React.useMemo(
() => dynamicColumns(columns, tableRows),
[columns, tableRows],
);
};
/**
* inventory item details loading bar.
*/
export function InventoryItemDetailsLoadingBar() {
const { isInventoryItemDetailsLoading } = useInventoryItemDetailsContext();
return (
<If condition={isInventoryItemDetailsLoading}>
<FinancialLoadingBar />
</If>
);
}
/**
* inventory item details alerts
*/
export function InventoryItemDetailsAlerts() {
const {
inventoryItemDetails,
isInventoryItemDetailsLoading,
inventoryItemDetailsRefetch,
} = useInventoryItemDetailsContext();
// Handle refetch the report sheet.
const handleRecalcReport = () => {
inventoryItemDetailsRefetch();
};
// Can't display any error if the report is loading
if (isInventoryItemDetailsLoading) {
return null;
}
return (
<If condition={inventoryItemDetails.meta.is_cost_compute_running}>
<div className="alert-compute-running">
<Icon icon="info-block" iconSize={12} />
<T id={'just_a_moment_we_re_calculating_your_cost_transactions'} />
<Button onClick={handleRecalcReport} minimal={true} small={true}>
<T id={'refresh'} />
</Button>
</div>
</If>
);
}