fix: bill view.

This commit is contained in:
elforjani3
2020-12-17 16:35:05 +02:00
parent e4ede4f352
commit d7b1877953
5 changed files with 64 additions and 82 deletions

View File

@@ -38,13 +38,12 @@ function BillActionsBar({
//#withBillActions //#withBillActions
addBillsTableQueries, addBillsTableQueries,
changeBillView,
// #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();
@@ -52,6 +51,17 @@ function BillActionsBar({
history.push('/bills/new'); history.push('/bills/new');
}, [history]); }, [history]);
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
selectedRows,
]);
const handleTabChange = (viewId) => {
changeBillView(viewId.id || -1);
addBillsTableQueries({
custom_view_id: viewId.id || null,
});
};
// const FilterDropdown = FilterDropdown({ // const FilterDropdown = FilterDropdown({
// initialCondition: { // initialCondition: {
// fieldKey: '', // fieldKey: '',
@@ -67,14 +77,14 @@ function BillActionsBar({
// }, // },
// }); // });
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
selectedRows,
]);
return ( return (
<DashboardActionsBar> <DashboardActionsBar>
<NavbarGroup> <NavbarGroup>
<DashboardActionViewsList resourceName={'bills'} views={[]} /> <DashboardActionViewsList
resourceName={'bills'}
views={billsViews}
onChange={handleTabChange}
/>
<NavbarDivider /> <NavbarDivider />
<Button <Button
className={Classes.MINIMAL} className={Classes.MINIMAL}
@@ -139,10 +149,8 @@ export default compose(
withResourceDetail(({ resourceFields }) => ({ withResourceDetail(({ resourceFields }) => ({
resourceFields, resourceFields,
})), })),
withBills(({ billsViews }) => ({
// withBills(({billsViews})=>({ billsViews,
// billsViews })),
// })),
withBillActions, withBillActions,
)(BillActionsBar); )(BillActionsBar);

View File

@@ -21,6 +21,9 @@ import withViewsActions from 'containers/Views/withViewsActions';
import { compose } from 'utils'; import { compose } from 'utils';
/**
* Bills list.
*/
function BillList({ function BillList({
// #withDashboardActions // #withDashboardActions
changePageTitle, changePageTitle,
@@ -58,8 +61,8 @@ function BillList({
(key, resourceName) => requestFetchResourceFields(resourceName), (key, resourceName) => requestFetchResourceFields(resourceName),
); );
const fetchBills = useQuery(['bills-table', billsTableQuery], () => const fetchBills = useQuery(['bills-table', billsTableQuery], (key, query) =>
requestFetchBillsTable(), requestFetchBillsTable({ ...query }),
); );
//handle dalete Bill //handle dalete Bill
@@ -127,14 +130,7 @@ function BillList({
); );
// Handle filter change to re-fetch data-table. // Handle filter change to re-fetch data-table.
const handleFilterChanged = useCallback( const handleFilterChanged = useCallback((filterConditions) => {}, []);
(filterConditions) => {
addBillsTableQueries({
filter_roles: filterConditions || '',
});
},
[fetchBills],
);
return ( return (
<DashboardInsider <DashboardInsider
@@ -148,7 +144,10 @@ function BillList({
/> />
<DashboardPageContent> <DashboardPageContent>
<Switch> <Switch>
<Route exact={true}> <Route
exact={true}
path={['/bills/:custom_view_id/custom_view', '/bills']}
>
<BillViewTabs /> <BillViewTabs />
<BillsDataTable <BillsDataTable
onDeleteBill={handleDeleteBill} onDeleteBill={handleDeleteBill}

View File

@@ -38,51 +38,34 @@ function BillViewTabs({
const { custom_view_id: customViewId = null } = useParams(); const { custom_view_id: customViewId = null } = useParams();
useEffect(() => { useEffect(() => {
changeBillView(customViewId || -1);
setTopbarEditView(customViewId); setTopbarEditView(customViewId);
changePageSubtitle(customViewId && viewItem ? viewItem.name : ''); changePageSubtitle(customViewId && viewItem ? viewItem.name : '');
addBillsTableQueries({
custom_view_id: customViewId,
});
return () => {
setTopbarEditView(null);
changePageSubtitle('');
changeBillView(null);
};
}, [customViewId, addBillsTableQueries, changeBillView]);
useUpdateEffect(() => {
onViewChanged && onViewChanged(customViewId);
}, [customViewId]); }, [customViewId]);
const debounceChangeHistory = useRef(
debounce((toUrl) => {
history.push(toUrl);
}, 250),
);
// 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');
}; };
const handleTabsChange = (viewId) => { const handleTabsChange = (viewId) => {
const toPath = viewId ? `${viewId}/custom_view` : ''; changeBillView(viewId || -1);
debounceChangeHistory.current(`/bills/${toPath}`); addBillsTableQueries({
custom_view_id: customViewId || null,
});
setTopbarEditView(viewId); setTopbarEditView(viewId);
}; };
const tabs = billsViews.map((view) => ({ const tabs = billsViews.map((view) => ({
...pick(view, ['name', 'id']), ...pick(view, ['name', 'id']),
})); }));
console.log(billsViews, 'billsViews');
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={'/bills'} resourceName={'bills'}
tabs={tabs} tabs={tabs}
onNewViewTabClick={handleClickNewView} onNewViewTabClick={handleClickNewView}
onChange={handleTabsChange} onChange={handleTabsChange}

View File

@@ -60,24 +60,9 @@ function BillsDataTable({
onOpenBill, onOpenBill,
onSelectedRowsChange, onSelectedRowsChange,
}) { }) {
const { custom_view_id: customViewId } = useParams();
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
const isLoadedBefore = useIsValuePassed(billsLoading, false); const isLoadedBefore = useIsValuePassed(billsLoading, false);
useEffect(() => {
if (customViewId) {
changeCurrentView(customViewId);
setTopbarEditView(customViewId);
}
changePageSubtitle(customViewId && viewMeta ? viewMeta.name : '');
}, [
customViewId,
changeCurrentView,
changePageSubtitle,
setTopbarEditView,
viewMeta,
]);
const handleFetchData = useCallback( const handleFetchData = useCallback(
({ pageIndex, pageSize, sortBy }) => { ({ pageIndex, pageSize, sortBy }) => {
const page = pageIndex + 1; const page = pageIndex + 1;

View File

@@ -21,7 +21,8 @@ export const fetchBillsTable = ({ query = {} }) => {
payload: { payload: {
bills: response.data.bills, bills: response.data.bills,
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({
@@ -34,7 +35,8 @@ export const fetchBillsTable = ({ query = {} }) => {
type: t.BILLS_PAGINATION_SET, type: t.BILLS_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({
@@ -118,27 +120,32 @@ export const editBill = (id, form) => {
}); });
}; };
export const fetchDueBills = ({ vendorId }) => (dispatch) => new Promise((resolve, reject) => { export const fetchDueBills = ({ vendorId }) => (dispatch) =>
new Promise((resolve, reject) => {
const params = { vendor_id: vendorId }; const params = { vendor_id: vendorId };
ApiService.get(`purchases/bills/due`, { params }).then((response) => { ApiService.get(`purchases/bills/due`, { params })
.then((response) => {
dispatch({ dispatch({
type: t.BILLS_ITEMS_SET, type: t.BILLS_ITEMS_SET,
payload: { payload: {
bills: response.data.bills, bills: response.data.bills,
}, },
}); });
if ( vendorId ) { if (vendorId) {
dispatch({ dispatch({
type: t.BILLS_PAYABLE_BY_VENDOR_ID, type: t.BILLS_PAYABLE_BY_VENDOR_ID,
payload: { payload: {
bills: response.data.bills, bills: response.data.bills,
} },
}); });
} }
resolve(response); resolve(response);
}).catch(error => { reject(error) }); })
}); .catch((error) => {
reject(error);
});
});
export const openBill = ({ id }) => { export const openBill = ({ id }) => {
return (dispatch) => ApiService.post(`purchases/bills/${id}/open`); return (dispatch) => ApiService.post(`purchases/bills/${id}/open`);