WIP feature/Bulk

This commit is contained in:
elforjani3
2020-05-20 01:49:36 +02:00
parent 10f636d2bc
commit 3753c3e791
20 changed files with 454 additions and 73 deletions

View File

@@ -44,6 +44,8 @@ function AccountsActionsBar({
onFilterChanged,
onBulkDelete,
onBulkArchive,
onBulkActivate,
onBulkInactive
}) {
const history = useHistory();
const [filterCount, setFilterCount] = useState(0);
@@ -78,6 +80,17 @@ function AccountsActionsBar({
onBulkDelete && onBulkDelete(selectedRows.map(r => r.id));
}, [onBulkDelete, selectedRows]);
const handelBulkActivate =useCallback(()=>{
onBulkActivate && onBulkActivate(selectedRows.map(r=>r.id))
},[onBulkActivate,selectedRows])
const handelBulkInactive =useCallback(()=>{
onBulkInactive && onBulkInactive(selectedRows.map(r=>r.id))
},[onBulkInactive,selectedRows])
return (
<DashboardActionsBar>
<NavbarGroup>
@@ -116,11 +129,18 @@ function AccountsActionsBar({
</Popover>
<If condition={hasSelectedRows}>
<Button
className={Classes.MINIMAL}
icon={<Icon icon='multi-select' iconSize={15} />}
text={<T id={'activate'}/>}
onClick={handelBulkActivate}
/>
<Button
className={Classes.MINIMAL}
icon={<Icon icon='archive' iconSize={15} />}
text={<T id={'archive'}/>}
onClick={handleBulkArchive}
text={<T id={'inactivate'}/>}
onClick={handelBulkInactive}
/>
<Button
className={Classes.MINIMAL}

View File

@@ -44,6 +44,8 @@ function AccountsChart({
requestFetchAccountsTable,
requestDeleteBulkAccounts,
addAccountsTableQueries,
requestBulkActivateAccounts,
requestBulkInactiveAccounts,
// #withAccounts
accountsTableQuery,
@@ -55,7 +57,8 @@ function AccountsChart({
const [activateAccount, setActivateAccount] = useState(false);
const [bulkDelete, setBulkDelete] = useState(false);
const [selectedRows, setSelectedRows] = useState([]);
const [bulkActivate,setBulkActivate] =useState(false);
const [bulkInactiveAccounts,setBulkInactiveAccounts] =useState(false)
const [tableLoading, setTableLoading] = useState(false);
// Fetch accounts resource views and fields.
@@ -235,6 +238,65 @@ function AccountsChart({
// Calculates the data table selected rows count.
const selectedRowsCount = useMemo(() => Object.values(selectedRows).length, [selectedRows]);
// Handle bulk Activate accounts button click.,
const handleBulkActivate = useCallback((bulkActivateIds) => {
setBulkActivate(bulkActivateIds);
}, [setBulkActivate]);
// Handle cancel Bulk Activate accounts bulk delete.
const handleCancelBulkActivate = useCallback(() => {
setBulkActivate(false);
}, []);
// Handle Bulk activate account confirm.
const handleConfirmBulkActivate = useCallback(() => {
requestBulkActivateAccounts(bulkActivate).then(() => {
setBulkActivate(false);
AppToaster.show({
message: formatMessage({ id: 'the_accounts_has_been_successfully_activated' }),
intent: Intent.SUCCESS,
});
}).catch((errors) => {
setBulkActivate(false);
});
}, [requestBulkActivateAccounts, bulkActivate]);
// Handle bulk Inactive accounts button click.,
const handleBulkInactive = useCallback((bulkInactiveIds) => {
setBulkInactiveAccounts(bulkInactiveIds);
}, [setBulkInactiveAccounts]);
// Handle cancel Bulk Inactive accounts bulk delete.
const handleCancelBulkInactive = useCallback(() => {
setBulkInactiveAccounts(false);
}, []);
// Handle Bulk Inactive accounts confirm.
const handleConfirmBulkInactive = useCallback(() => {
requestBulkInactiveAccounts(bulkInactiveAccounts).then(() => {
setBulkInactiveAccounts(false);
AppToaster.show({
message: formatMessage({ id: 'the_accounts_has_been_successfully_inactivated' }),
intent: Intent.SUCCESS,
});
}).catch((errors) => {
setBulkInactiveAccounts(false);
});
}, [requestBulkInactiveAccounts, bulkInactiveAccounts]);
return (
<DashboardInsider loading={fetchHook.isFetching} name={'accounts-chart'}>
<DashboardActionsBar
@@ -242,6 +304,8 @@ function AccountsChart({
onFilterChanged={handleFilterChanged}
onBulkDelete={handleBulkDelete}
onBulkArchive={handleBulkArchive}
onBulkActivate={handleBulkActivate}
onBulkInactive={handleBulkInactive}
/>
<DashboardPageContent>
@@ -321,6 +385,29 @@ function AccountsChart({
<T id={'once_delete_these_accounts_you_will_not_able_restore_them'} />
</p>
</Alert>
<Alert
cancelButtonText={<T id={'cancel'} />}
confirmButtonText={`${formatMessage({id:'activate'})} (${selectedRowsCount})`}
intent={Intent.WARNING}
isOpen={bulkActivate}
onCancel={handleCancelBulkActivate}
onConfirm={handleConfirmBulkActivate}>
<p>
<T id={'are_sure_to_activate_this_accounts'} />
</p>
</Alert>
<Alert
cancelButtonText={<T id={'cancel'} />}
confirmButtonText={`${formatMessage({id:'inactivate'})} (${selectedRowsCount})`}
intent={Intent.WARNING}
isOpen={bulkInactiveAccounts}
onCancel={handleCancelBulkInactive}
onConfirm={handleConfirmBulkInactive}>
<p>
<T id={'are_sure_to_inactive_this_accounts'} />
</p>
</Alert>
</DashboardPageContent>
</DashboardInsider>
);

View File

@@ -8,6 +8,8 @@ import {
submitAccount,
fetchAccount,
deleteBulkAccounts,
bulkActivateAccounts,
bulkInactiveAccounts
} from 'store/accounts/accounts.actions';
const mapActionsToProps = (dispatch) => ({
@@ -19,6 +21,8 @@ const mapActionsToProps = (dispatch) => ({
requestActivateAccount: (id) => dispatch(activateAccount({ id })),
requestFetchAccount: (id) => dispatch(fetchAccount({ id })),
requestDeleteBulkAccounts: (ids) => dispatch(deleteBulkAccounts({ ids })),
requestBulkActivateAccounts:(ids)=>dispatch(bulkActivateAccounts({ids})),
requestBulkInactiveAccounts:(ids)=>dispatch(bulkInactiveAccounts({ids})),
});
export default connect(null, mapActionsToProps);