fix: Invoice View.

This commit is contained in:
elforjani3
2020-12-17 16:33:25 +02:00
parent 19f346beb5
commit e4ede4f352
5 changed files with 44 additions and 54 deletions

View File

@@ -3,8 +3,6 @@ import Icon from 'components/Icon';
import { import {
Button, Button,
Classes, Classes,
Menu,
MenuItem,
Popover, Popover,
NavbarDivider, NavbarDivider,
NavbarGroup, NavbarGroup,
@@ -40,13 +38,12 @@ function InvoiceActionsBar({
// #withInvoiceActions // #withInvoiceActions
addInvoiceTableQueries, addInvoiceTableQueries,
changeInvoiceView,
// #own Porps // #own Porps
onFilterChanged, onFilterChanged,
selectedRows = [], selectedRows = [],
}) { }) {
const history = useHistory(); const history = useHistory();
const { path } = useRouteMatch();
const [filterCount, setFilterCount] = useState(0); const [filterCount, setFilterCount] = useState(0);
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
@@ -54,10 +51,21 @@ function InvoiceActionsBar({
history.push('/invoices/new'); history.push('/invoices/new');
}, [history]); }, [history]);
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
selectedRows,
]);
const handleTabChange = (viewId) => {
changeInvoiceView(viewId.id || -1);
addInvoiceTableQueries({
custom_view_id: viewId.id || null,
});
};
// const filterDropdown = FilterDropdown({ // const filterDropdown = FilterDropdown({
// initialCondition: { // initialCondition: {
// fieldKey: 'reference_no', // fieldKey: '',
// compatator: 'contains', // compatator: '',
// value: '', // value: '',
// }, // },
// fields: resourceFields, // fields: resourceFields,
@@ -69,16 +77,13 @@ function InvoiceActionsBar({
// }, // },
// }); // });
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
selectedRows,
]);
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<DashboardActionViewsList <DashboardActionViewsList
resourceName={'sales_invoices'} resourceName={'invoices'}
views={invoicesViews} views={invoicesViews}
onChange={handleTabChange}
/> />
<NavbarDivider /> <NavbarDivider />
<Button <Button

View File

@@ -51,18 +51,19 @@ function InvoiceList({
changePageTitle(formatMessage({ id: 'invoice_list' })); changePageTitle(formatMessage({ id: 'invoice_list' }));
}, [changePageTitle, formatMessage]); }, [changePageTitle, formatMessage]);
// const fetchResourceViews = useQuery( const fetchResourceViews = useQuery(
// ['resource-views', 'sales_invoices'], ['resource-views', 'sale_invoice'],
// (key, resourceName) => requestFetchResourceViews(resourceName), (key, resourceName) => requestFetchResourceViews(resourceName),
// ); );
// const fetchResourceFields = useQuery( const fetchResourceFields = useQuery(
// ['resource-fields', 'sales_invoices'], ['resource-fields', 'sale_invoice'],
// (key, resourceName) => requestFetchResourceFields(resourceName), (key, resourceName) => requestFetchResourceFields(resourceName),
// ); );
const fetchInvoices = useQuery(['invoices-table', invoicesTableQuery], () => const fetchInvoices = useQuery(
requestFetchInvoiceTable(), ['invoices-table', invoicesTableQuery],
(key, query) => requestFetchInvoiceTable({ ...query }),
); );
//handle dalete Invoice //handle dalete Invoice
const handleDeleteInvoice = useCallback( const handleDeleteInvoice = useCallback(
@@ -139,7 +140,7 @@ function InvoiceList({
); );
return ( return (
<DashboardInsider <DashboardInsider
// loading={fetchResourceViews.isFetching || fetchResourceFields.isFetching} loading={fetchResourceViews.isFetching || fetchResourceFields.isFetching}
name={'sales_invoices'} name={'sales_invoices'}
> >
<InvoiceActionsBar <InvoiceActionsBar

View File

@@ -15,6 +15,9 @@ import withViewDetails from 'containers/Views/withViewDetails';
import { compose } from 'utils'; import { compose } from 'utils';
/**
* Invoices views tabs.
*/
function InvoiceViewTabs({ function InvoiceViewTabs({
//#withInvoices //#withInvoices
invoicesViews, invoicesViews,
@@ -38,54 +41,34 @@ function InvoiceViewTabs({
const { custom_view_id: customViewId = null } = useParams(); const { custom_view_id: customViewId = null } = useParams();
useEffect(() => { useEffect(() => {
changeInvoiceView(customViewId || -1);
setTopbarEditView(customViewId); setTopbarEditView(customViewId);
changePageSubtitle(customViewId && viewItem ? viewItem.name : ''); changePageSubtitle(customViewId && viewItem ? viewItem.name : '');
addInvoiceTableQueries({
custom_view_id: customViewId,
});
return () => {
setTopbarEditView(null);
changePageSubtitle('');
changeInvoiceView(null);
};
}, [customViewId, addInvoiceTableQueries, changeInvoiceView]);
useUpdateEffect(() => {
onViewChanged && onViewChanged(customViewId);
}, [customViewId]); }, [customViewId]);
const debounceChangeHistory = useRef(
debounce((toUrl) => {
history.push(toUrl);
}, 250),
);
const handleTabsChange = (viewId) => {
const toPath = viewId ? `${viewId}/custom_view` : '';
debounceChangeHistory.current(`/invoices/${toPath}`);
setTopbarEditView(viewId);
};
const tabs = invoicesViews.map((view) => ({ const tabs = invoicesViews.map((view) => ({
...pick(view, ['name', 'id']), ...pick(view, ['name', 'id']),
})); }));
const handleTabsChange = (viewId) => {
changeInvoiceView(viewId || -1);
addInvoiceTableQueries({
custom_view_id: customViewId || null,
});
setTopbarEditView(viewId);
};
// Handle click a new view tab. // Handle click a new view tab.
const handleClickNewView = () => { const handleClickNewView = () => {
setTopbarEditView(null); setTopbarEditView(null);
history.push('/custom_views/invoices/new'); history.push('/custom_views/invoices/new');
}; };
console.log(invoicesViews, 'invoicesViews');
return ( return (
<Navbar className={'navbar--dashboard-views'}> <Navbar className={'navbar--dashboard-views'}>
<NavbarGroup align={Alignment.LEFT}> <NavbarGroup align={Alignment.LEFT}>
<DashboardViewsTabs <DashboardViewsTabs
initialViewId={customViewId} initialViewId={customViewId}
baseUrl={'/invoices'} resourceName={'invoices'}
tabs={tabs} tabs={tabs}
onNewViewTabClick={handleClickNewView} onNewViewTabClick={handleClickNewView}
onChange={handleTabsChange} onChange={handleTabsChange}

View File

@@ -25,7 +25,7 @@ export default (mapState) => {
invoicesCurrentPage: getInvoicesItems(state, props, query), invoicesCurrentPage: getInvoicesItems(state, props, query),
invoicesCurrentViewId: getInvoicesCurrentViewId(state, props), invoicesCurrentViewId: getInvoicesCurrentViewId(state, props),
invoicesViews: getResourceViews(state, props, 'sales_invoices'), invoicesViews: getResourceViews(state, props, 'sale_invoice'),
invoicesItems: state.salesInvoices.items, invoicesItems: state.salesInvoices.items,
invoicesTableQuery: query, invoicesTableQuery: query,
invoicesPageination: getInvoicesPaginationMeta(state, props, query), invoicesPageination: getInvoicesPaginationMeta(state, props, query),

View File

@@ -69,7 +69,8 @@ export const fetchInvoicesTable = ({ query } = {}) => {
payload: { payload: {
sales_invoices: response.data.sales_invoices, sales_invoices: response.data.sales_invoices,
pagination: response.data.pagination, pagination: response.data.pagination,
customViewId: response.data.customViewId || -1, customViewId:
response.data?.filter_meta?.view?.custom_view_id || -1,
}, },
}); });
dispatch({ dispatch({
@@ -82,7 +83,7 @@ export const fetchInvoicesTable = ({ query } = {}) => {
type: t.INVOICES_PAGINATION_SET, type: t.INVOICES_PAGINATION_SET,
payload: { payload: {
pagination: response.data.pagination, pagination: response.data.pagination,
customViewId: response.data.customViewId || -1, customViewId: response.data?.filter_meta?.view?.custom_view_id ||-1
}, },
}); });
dispatch({ dispatch({