feat: optimize expense and manual journal details status.

This commit is contained in:
a.bouhuolia
2021-12-21 18:10:58 +02:00
parent 5429643db5
commit a456b9d942
5 changed files with 79 additions and 20 deletions

View File

@@ -101,13 +101,13 @@ export const StatusAccessor = (row) => {
return ( return (
<Choose> <Choose>
<Choose.When condition={!!row.is_published}> <Choose.When condition={!!row.is_published}>
<Tag minimal={true}> <Tag minimal={true} round={true}>
<T id={'published'} /> <T id={'published'} />
</Tag> </Tag>
</Choose.When> </Choose.When>
<Choose.Otherwise> <Choose.Otherwise>
<Tag minimal={true} intent={Intent.WARNING}> <Tag minimal={true} intent={Intent.WARNING} round={true}>
<T id={'draft'} /> <T id={'draft'} />
</Tag> </Tag>
</Choose.Otherwise> </Choose.Otherwise>

View File

@@ -1,6 +1,7 @@
import React from 'react'; import React from 'react';
import moment from 'moment'; import moment from 'moment';
import { defaultTo } from 'lodash'; import { defaultTo } from 'lodash';
import styled from 'styled-components';
import { import {
CommercialDocHeader, CommercialDocHeader,
@@ -13,6 +14,7 @@ import {
FormattedMessage as T, FormattedMessage as T,
} from 'components'; } from 'components';
import { useExpenseDrawerContext } from './ExpenseDrawerProvider'; import { useExpenseDrawerContext } from './ExpenseDrawerProvider';
import { ExpenseDetailsStatus } from './components';
/** /**
* Expense drawer content. * Expense drawer content.
@@ -32,6 +34,10 @@ export default function ExpenseDrawerHeader() {
/> />
</h3> </h3>
</DetailItem> </DetailItem>
<StatusDetailItem>
<ExpenseDetailsStatus expense={expense} />
</StatusDetailItem>
</DetailsMenu> </DetailsMenu>
</CommercialDocTopHeader> </CommercialDocTopHeader>
@@ -68,3 +74,10 @@ export default function ExpenseDrawerHeader() {
</CommercialDocHeader> </CommercialDocHeader>
); );
} }
const StatusDetailItem = styled(DetailItem)`
width: 50%;
text-align: right;
position: relative;
top: -5px;
`;

View File

@@ -0,0 +1,20 @@
import React from 'react';
import { Tag, Intent } from '@blueprintjs/core';
import { T } from 'components';
/**
* Expense details status.
* @returns {React.JSX}
*/
export function ExpenseDetailsStatus({ expense }) {
return expense.is_published ? (
<Tag round={true} minimal={true}>
<T id={'published'} />
</Tag>
) : (
<Tag round={true} intent={Intent.WARNING}>
<T id={'draft'} />
</Tag>
);
}

View File

@@ -1,5 +1,7 @@
import React from 'react'; import React from 'react';
import { defaultTo } from 'lodash'; import { defaultTo } from 'lodash';
import styled from 'styled-components';
import { import {
Row, Row,
Col, Col,
@@ -9,30 +11,26 @@ import {
CommercialDocHeader, CommercialDocHeader,
CommercialDocTopHeader, CommercialDocTopHeader,
} from 'components'; } from 'components';
import { ManualJournalDetailsStatus } from './utils';
import { useManualJournalDrawerContext } from './ManualJournalDrawerProvider'; import { useManualJournalDrawerContext } from './ManualJournalDrawerProvider';
/** /**
* Manual journal details header. * Manual journal details header.
*/ */
export default function ManualJournalDrawerHeader() { export default function ManualJournalDrawerHeader() {
const { const { manualJournal } = useManualJournalDrawerContext();
manualJournal: {
formatted_amount,
journal_type,
journal_number,
reference,
currency_code,
description,
},
} = useManualJournalDrawerContext();
return ( return (
<CommercialDocHeader> <CommercialDocHeader>
<CommercialDocTopHeader> <CommercialDocTopHeader>
<DetailsMenu> <DetailsMenu>
<DetailItem name={'total'} label={<T id={'total'} />}> <DetailItem name={'total'} label={<T id={'total'} />}>
<h3 class="big-number">{formatted_amount}</h3> <h3 class="big-number">{manualJournal.formatted_amount}</h3>
</DetailItem> </DetailItem>
<StatusDetailItem>
<ManualJournalDetailsStatus manualJournal={manualJournal} />
</StatusDetailItem>
</DetailsMenu> </DetailsMenu>
</CommercialDocTopHeader> </CommercialDocTopHeader>
@@ -40,23 +38,23 @@ export default function ManualJournalDrawerHeader() {
<Col xs={6}> <Col xs={6}>
<DetailsMenu direction={'horizantal'} minLabelSize={'180px'}> <DetailsMenu direction={'horizantal'} minLabelSize={'180px'}>
<DetailItem name={'journal-type'} label={<T id={'journal_type'} />}> <DetailItem name={'journal-type'} label={<T id={'journal_type'} />}>
{journal_type} {manualJournal.journal_type}
</DetailItem> </DetailItem>
<DetailItem name={'journal-number'} label={<T id={'journal_no'} />}> <DetailItem name={'journal-number'} label={<T id={'journal_no'} />}>
{journal_number} {manualJournal.journal_number}
</DetailItem> </DetailItem>
<DetailItem name={'reference-no'} label={<T id={'reference_no'} />}> <DetailItem name={'reference-no'} label={<T id={'reference_no'} />}>
{defaultTo(reference, '-')} {defaultTo(manualJournal.reference, '-')}
</DetailItem> </DetailItem>
<DetailItem name={'currency'} label={<T id={'currency'} />}> <DetailItem name={'currency'} label={<T id={'currency'} />}>
{currency_code} {manualJournal.currency_code}
</DetailItem> </DetailItem>
<DetailItem label={<T id={'description'} />}> <DetailItem label={<T id={'description'} />}>
{defaultTo(description, '—')} {defaultTo(manualJournal.description, '—')}
</DetailItem> </DetailItem>
</DetailsMenu> </DetailsMenu>
</Col> </Col>
@@ -64,3 +62,10 @@ export default function ManualJournalDrawerHeader() {
</CommercialDocHeader> </CommercialDocHeader>
); );
} }
const StatusDetailItem = styled(DetailItem)`
width: 50%;
text-align: right;
position: relative;
top: -5px;
`;

View File

@@ -1,8 +1,8 @@
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import React from 'react'; import React from 'react';
import { Classes, Tooltip, Position } from '@blueprintjs/core'; import { Tag, Intent, Classes, Tooltip, Position } from '@blueprintjs/core';
import { FormatNumberCell, If, Icon } from '../../../components'; import { T, Choose, FormatNumberCell, If, Icon } from '../../../components';
/** /**
* Note column accessor. * Note column accessor.
@@ -22,6 +22,27 @@ export function NoteAccessor(row) {
); );
} }
/**
* Publish column accessor.
*/
export function ManualJournalDetailsStatus({ manualJournal }) {
return (
<Choose>
<Choose.When condition={!!manualJournal.is_published}>
<Tag minimal={true} round={true}>
<T id={'published'} />
</Tag>
</Choose.When>
<Choose.Otherwise>
<Tag intent={Intent.WARNING} round={true}>
<T id={'draft'} />
</Tag>
</Choose.Otherwise>
</Choose>
);
}
/** /**
* Retrieve read-only manual journal entries columns. * Retrieve read-only manual journal entries columns.
*/ */