This commit is contained in:
@@ -4,11 +4,11 @@ import { useNavigate, useSearchParams } from "react-router-dom";
|
||||
import { selectInboundRoutes, selectTomorrowAllRoutes, selectTomorrowInboundRoutes, selectTomorrowOutboundRoutes, selectHistoryInboundRoutes, selectHistoryRoutes, selectHistoryOutboundRoutes, selectOutboundRoutes, selectAllRoutes, selectAllActiveVehicles, selectAllActiveDrivers, transRoutesSlice } from "./../../store";
|
||||
import RoutesSection from "./RoutesSection";
|
||||
import PersonnelSection from "./PersonnelSection";
|
||||
import { AuthService, CustomerService, TransRoutesService, DriverService, EventsService, SignatureRequestService, DailyRoutesTemplateService } from "../../services";
|
||||
import { AuthService, CustomerService, TransRoutesService, DriverService, EventsService, DailyRoutesTemplateService } from "../../services";
|
||||
import { PERSONAL_ROUTE_STATUS, ROUTE_STATUS, reportRootUrl, CUSTOMER_TYPE_TEXT, PERSONAL_ROUTE_STATUS_TEXT, PICKUP_STATUS, PICKUP_STATUS_TEXT, REPORT_TYPE } from "../../shared";
|
||||
import moment from 'moment';
|
||||
import DatePicker from "react-datepicker";
|
||||
import { CalendarWeek, ClockHistory, Copy, Download, Eraser, Plus, Clock, Send, Filter, CalendarCheck, Check } from "react-bootstrap-icons";
|
||||
import { CalendarWeek, ClockHistory, Copy, Download, Eraser, Plus, Clock, Filter, CalendarCheck, Check } from "react-bootstrap-icons";
|
||||
import { Breadcrumb, Tabs, Tab, Dropdown, Spinner, Modal, Button, ProgressBar } from "react-bootstrap";
|
||||
import RouteCustomerTable from "./RouteCustomerTable";
|
||||
|
||||
@@ -40,10 +40,8 @@ const RoutesDashboard = () => {
|
||||
const [routesForSignature, setRoutesForSignature] = useState(allRoutes);
|
||||
const [currentTab, setCurrentTab] = useState('allRoutesOverview');
|
||||
const [sorting, setSorting] = useState({key: '', order: ''});
|
||||
const [selectedItems, setSelectedItems] = useState([]);
|
||||
const [showFilterDropdown, setShowFilterDropdown] = useState(false);
|
||||
const [showDateDropdown, setShowDateDropdown] = useState(false);
|
||||
const [showSignatureRequestLoading, setShowSignatureRequestLoading] = useState(false);
|
||||
const [routesForShowing, setRoutesForShowing] = useState(allRoutes);
|
||||
const [routesInboundForShowing, setRoutesInboundForShowing] = useState(inboundRoutes);
|
||||
const [routesOutboundForShowing, setRoutesOutboundForShowing] = useState(outboundRoutes);
|
||||
@@ -750,7 +748,6 @@ const RoutesDashboard = () => {
|
||||
setCurrentTab(k);
|
||||
setKeyword('');
|
||||
setSorting({key: '', order: ''});
|
||||
setSelectedItems([]);
|
||||
setDateSelected(new Date());
|
||||
setOriginDateSelected(undefined);
|
||||
setTargetedDateSelected(undefined);
|
||||
@@ -1141,43 +1138,6 @@ const RoutesDashboard = () => {
|
||||
setSorting(newSorting);
|
||||
}
|
||||
|
||||
const toggleSelectedAllItems = () => {
|
||||
const filteredSignatures = routesForSignature && routesForSignature.filter((route) => {
|
||||
if (!selectedDriver) {
|
||||
return route;
|
||||
} else {
|
||||
return route?.driver === selectedDriver;
|
||||
}
|
||||
}).filter(((route) => route.name?.toLowerCase().includes(keyword?.toLowerCase()) || drivers.find((d) => d.id === route?.driver)?.name?.toLowerCase().includes(keyword?.toLowerCase())));
|
||||
if (selectedItems.length !== filteredSignatures.length || selectedItems.length === 0) {
|
||||
const newSelectedItems = [...filteredSignatures].map((sig) => sig.id);
|
||||
setSelectedItems(newSelectedItems);
|
||||
} else {
|
||||
setSelectedItems([]);
|
||||
}
|
||||
}
|
||||
|
||||
const toggleItem = (id) => {
|
||||
if (selectedItems.includes(id)) {
|
||||
const newSelectedItems = [...selectedItems].filter((item) => item !== id);
|
||||
setSelectedItems(newSelectedItems);
|
||||
} else {
|
||||
const newSelectedItems = [...selectedItems, id];
|
||||
setSelectedItems(newSelectedItems);
|
||||
}
|
||||
}
|
||||
|
||||
const checkSelectAll = () => {
|
||||
const filteredSignatures = routesForSignature && routesForSignature.filter((route) => {
|
||||
if (!selectedDriver) {
|
||||
return route;
|
||||
} else {
|
||||
return route?.driver === selectedDriver;
|
||||
}
|
||||
}).filter((route) => route.name?.toLowerCase().includes(keyword?.toLowerCase()) || drivers.find((d) => d.id === route?.driver)?.name?.toLowerCase().includes(keyword?.toLowerCase()));
|
||||
return selectedItems.length === filteredSignatures.length && selectedItems.length > 0;
|
||||
}
|
||||
|
||||
const pickOriginDateSelected = (v) => {
|
||||
setOriginDateSelected(v);
|
||||
setDateSelected(v);
|
||||
@@ -1452,24 +1412,6 @@ const RoutesDashboard = () => {
|
||||
|
||||
|
||||
|
||||
const generateSignatureRequest = async () => {
|
||||
setShowSignatureRequestLoading(true);
|
||||
for (const id of selectedItems) {
|
||||
const currentRoute = routesForSignature.find(route => route?.id === id);
|
||||
const currentDriver = drivers.find(driver => driver?.id === currentRoute?.driver);
|
||||
await SignatureRequestService.createNewSignatureRequest({
|
||||
driver_id: currentRoute?.id,
|
||||
driver_name: currentDriver?.name,
|
||||
route_id: currentRoute?.id,
|
||||
route_date: currentRoute?.schedule_date,
|
||||
route_name: currentRoute?.name,
|
||||
status: 'active',
|
||||
})
|
||||
}
|
||||
setShowSignatureRequestLoading(false);
|
||||
}
|
||||
|
||||
|
||||
// Save template modal handlers
|
||||
const openSaveTemplateModal = () => {
|
||||
setShowSaveTemplateModal(true);
|
||||
@@ -1786,7 +1728,6 @@ const RoutesDashboard = () => {
|
||||
<table className="personnel-info-table me-4">
|
||||
<thead>
|
||||
<tr>
|
||||
<th className="th-checkbox"><input type="checkbox" checked={checkSelectAll()} onClick={() => toggleSelectedAllItems()}></input></th>
|
||||
<th className="th-index">No.</th>
|
||||
{
|
||||
columns.map((column, index) => <th className="sortable-header" key={index}>
|
||||
@@ -1806,7 +1747,6 @@ const RoutesDashboard = () => {
|
||||
}
|
||||
}).filter((route) => route.name?.toLowerCase().includes(keyword?.toLowerCase()) || drivers.find((d) => d.id === route?.driver)?.name?.toLowerCase().includes(keyword?.toLowerCase()))?.map(({id, name, end_time, driver, type, signature}, index) => {
|
||||
return (<tr key={index}>
|
||||
<td className="td-checkbox"><input type="checkbox" checked={selectedItems.includes(id)} onClick={()=>toggleItem(id)}/></td>
|
||||
<td className="td-index">{index + 1}</td>
|
||||
<td>{name}</td>
|
||||
<td>{drivers.find((d) => d.id === driver)?.name}</td>
|
||||
@@ -1925,8 +1865,6 @@ const RoutesDashboard = () => {
|
||||
</Dropdown.Toggle>
|
||||
<Dropdown.Menu as={customMenu}/>
|
||||
</Dropdown>
|
||||
<button className="btn btn-primary me-2" onClick={() => generateSignatureRequest()}><Send size={16} className="me-2"></Send>{ showSignatureRequestLoading ? <Spinner size={12}></Spinner> : 'Send Signature Link'}</button>
|
||||
<button className="btn btn-primary"><Download size={16} className="me-2"></Download>Export</button>
|
||||
</> }
|
||||
|
||||
{ currentTab === 'allRoutesStatus' && <>
|
||||
|
||||
Reference in New Issue
Block a user