You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
198 lines
5.2 KiB
198 lines
5.2 KiB
import { Button, Space, Table, Tooltip } from "antd";
|
|
import { useState } from "react";
|
|
|
|
import { Link } from "react-router-dom";
|
|
import { EyeOutlined } from "@ant-design/icons";
|
|
import { TCompany } from "../../types/Company/TCompany";
|
|
|
|
import BulkEditModal from "./BulkEditModal";
|
|
|
|
import zippy from "../../assets/zippyicon.svg";
|
|
import evo from "../../assets/evoicon.png";
|
|
import zeelog from "../../assets/zeelogicon.svg";
|
|
import ontime from "../../assets/ontimeicon.svg";
|
|
import tt from "../../assets/tticon.svg";
|
|
import tagIcon from "../../assets/tagIcon.svg";
|
|
import { role } from "../../App";
|
|
|
|
function CompanyTable({
|
|
data,
|
|
isLoading,
|
|
refetch,
|
|
}: {
|
|
data?: TCompany[] | undefined;
|
|
isLoading?: boolean;
|
|
refetch?: any;
|
|
}) {
|
|
const moment = require("moment");
|
|
|
|
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
|
|
const [selectedIds, setSelectedIds] = useState<number[]>([]);
|
|
const [isBulkModalOpen, setIsBulkModalOpen] = useState(false);
|
|
|
|
const rowSelection = {
|
|
selectedRowKeys,
|
|
onChange: (keys: React.Key[], rows: TCompany[]) => {
|
|
setSelectedRowKeys(keys);
|
|
setSelectedIds(rows.map((row) => row?.id));
|
|
},
|
|
};
|
|
|
|
function getStatusClassName() {
|
|
if (role !== "Owner") {
|
|
return "isnot";
|
|
} else if (role === "Owner") {
|
|
return "super";
|
|
}
|
|
}
|
|
|
|
const getImageSource = (source: string) => {
|
|
switch (source) {
|
|
case "Zippy":
|
|
return zippy;
|
|
case "EVO":
|
|
return evo;
|
|
case "Ontime":
|
|
return ontime;
|
|
case "Zeelog":
|
|
return zeelog;
|
|
case "TT":
|
|
return tt;
|
|
default:
|
|
return tt;
|
|
}
|
|
};
|
|
|
|
return (
|
|
<div>
|
|
{selectedIds.length !== 0 && (
|
|
<div
|
|
style={{
|
|
marginBottom: 16,
|
|
display: "flex",
|
|
alignItems: "center",
|
|
justifyContent: "end",
|
|
}}
|
|
>
|
|
<Button
|
|
type="primary"
|
|
disabled={selectedIds.length === 0}
|
|
onClick={() => setIsBulkModalOpen(true)}
|
|
>
|
|
Bulk Edit
|
|
</Button>
|
|
</div>
|
|
)}
|
|
<Table
|
|
rowSelection={{
|
|
type: "checkbox",
|
|
...rowSelection,
|
|
}}
|
|
dataSource={data?.map((u, i) => ({
|
|
...u,
|
|
no: i + 1,
|
|
created: moment(u?.created_at, "YYYY-MM-DD HH:mm:ss").format(
|
|
"DD.MM.YYYY HH:mm",
|
|
),
|
|
key: u?.id,
|
|
action: { ...u },
|
|
}))}
|
|
loading={isLoading}
|
|
columns={[
|
|
{
|
|
title: <img src={tagIcon} alt="" />,
|
|
dataIndex: "no",
|
|
width: "5%",
|
|
},
|
|
{
|
|
title: "Company",
|
|
dataIndex: "name",
|
|
width: "20%",
|
|
ellipsis: {
|
|
showTitle: false,
|
|
},
|
|
render: (text, record) => (
|
|
<Tooltip placement="topLeft" title={text}>
|
|
<div style={{ display: "flex", alignItems: "center" }}>
|
|
{record?.source && (
|
|
<img
|
|
src={getImageSource(record?.source)}
|
|
alt=""
|
|
style={{ width: 20, height: 20, marginRight: 10 }}
|
|
/>
|
|
)}
|
|
{text}
|
|
</div>
|
|
</Tooltip>
|
|
),
|
|
},
|
|
{
|
|
title: "Service Team",
|
|
dataIndex: "team",
|
|
render: (status: string, record: TCompany) => (
|
|
<span className={getStatusClassName()}>{record?.team?.name}</span>
|
|
),
|
|
},
|
|
{
|
|
title: "Monitoring Team",
|
|
dataIndex: "team_monitoring",
|
|
render: (status: string, record: TCompany) => (
|
|
<span className={getStatusClassName()}>
|
|
{record?.team_monitoring?.name}
|
|
</span>
|
|
),
|
|
},
|
|
{
|
|
title: "USDOT",
|
|
dataIndex: "usdot",
|
|
},
|
|
{
|
|
title: "API KEY",
|
|
dataIndex: "api_key",
|
|
render: (status: string, record: TCompany) => (
|
|
<span className={getStatusClassName()}>{status}</span>
|
|
),
|
|
},
|
|
{
|
|
title: "Created at",
|
|
dataIndex: "created",
|
|
responsive: ["lg"],
|
|
},
|
|
{
|
|
width: "8%",
|
|
title: "Actions",
|
|
dataIndex: "action",
|
|
render: ({ id }: { id: string }) => {
|
|
return (
|
|
<Space>
|
|
<Link to={`${id}`}>
|
|
{role !== "Checker" && <Button type="primary">Edit</Button>}
|
|
{role === "Checker" && (
|
|
<Button type="primary" icon={<EyeOutlined />}></Button>
|
|
)}
|
|
</Link>
|
|
</Space>
|
|
);
|
|
},
|
|
},
|
|
]}
|
|
rowClassName={(record, index) =>
|
|
index % 2 === 0 ? "odd-row" : "even-row"
|
|
}
|
|
size="small"
|
|
scroll={{ x: "768px" }}
|
|
pagination={false}
|
|
bordered
|
|
/>
|
|
<BulkEditModal
|
|
open={isBulkModalOpen}
|
|
selectedIds={selectedIds}
|
|
onCancel={() => setIsBulkModalOpen(false)}
|
|
refetch={refetch}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default CompanyTable;
|