scanner
parent
100e2c36cc
commit
81412ef340
|
@ -31,7 +31,10 @@ export default function App() {
|
||||||
setUserSession={setUserSession}
|
setUserSession={setUserSession}
|
||||||
notificationApi={notificationApi}
|
notificationApi={notificationApi}
|
||||||
>
|
>
|
||||||
<SideMenu setUserSession={setUserSession}></SideMenu>
|
<SideMenu
|
||||||
|
userSession={userSession}
|
||||||
|
setUserSession={setUserSession}
|
||||||
|
></SideMenu>
|
||||||
<PageContent></PageContent>
|
<PageContent></PageContent>
|
||||||
</WebSocketProvider>
|
</WebSocketProvider>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|
|
@ -9,15 +9,9 @@ import Sider from "antd/es/layout/Sider";
|
||||||
import { useContext, useEffect, useState } from "react";
|
import { useContext, useEffect, useState } from "react";
|
||||||
import { useLocation, useNavigate } from "react-router-dom";
|
import { useLocation, useNavigate } from "react-router-dom";
|
||||||
import PropTypes from "prop-types";
|
import PropTypes from "prop-types";
|
||||||
import {
|
import { Constants, MyAvatar, WebSocketContext } from "../../utils";
|
||||||
Constants,
|
|
||||||
MyAvatar,
|
|
||||||
UseUserSession,
|
|
||||||
WebSocketContext,
|
|
||||||
} from "../../utils";
|
|
||||||
|
|
||||||
export default function SideMenu({ setUserSession }) {
|
export default function SideMenu({ userSession, setUserSession }) {
|
||||||
const { userSession } = UseUserSession();
|
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
const [selectedKeys, setSelectedKeys] = useState("/");
|
const [selectedKeys, setSelectedKeys] = useState("/");
|
||||||
const webSocketContext = useContext(WebSocketContext);
|
const webSocketContext = useContext(WebSocketContext);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { Button, Popover, QRCode, Space, Table } from "antd";
|
import { Space, Table } from "antd";
|
||||||
import { MyAvatar } from "../../utils";
|
import { FormatDatetime, WebSocketContext } from "../../utils";
|
||||||
import { PlusOutlined } from "@ant-design/icons";
|
import { useContext } from "react";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -23,27 +24,65 @@ const columns = [
|
||||||
dataIndex: "registeredAt",
|
dataIndex: "registeredAt",
|
||||||
key: "registeredAt",
|
key: "registeredAt",
|
||||||
},
|
},
|
||||||
];
|
|
||||||
|
|
||||||
const data = [
|
|
||||||
{
|
{
|
||||||
key: "1",
|
title: "User-Agent",
|
||||||
name: "Alex",
|
dataIndex: "userAgent",
|
||||||
usedBy: <MyAvatar avatar={"8c9f6287-5de3-413a-aec4-a89a7e55fcd4.jpeg"} />,
|
key: "userAgent",
|
||||||
lastUsed: new Date().toLocaleString(),
|
},
|
||||||
registeredAt: new Date().toLocaleString(),
|
{
|
||||||
|
title: "Action",
|
||||||
|
dataIndex: "action",
|
||||||
|
key: "action",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space size="middle">
|
||||||
|
<Link to="#">Use scanner</Link>
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export default function Scanners() {
|
export default function Scanners() {
|
||||||
|
const webSocketContext = useContext(WebSocketContext);
|
||||||
|
|
||||||
|
const getTableItems = () => {
|
||||||
|
if (webSocketContext.Scanners === null) return [];
|
||||||
|
|
||||||
|
let items = [];
|
||||||
|
|
||||||
|
webSocketContext.Scanners.forEach((scanner) => {
|
||||||
|
items.push({
|
||||||
|
key: scanner.Id,
|
||||||
|
name: scanner.Name,
|
||||||
|
usedBy: scanner.UsedByUserId,
|
||||||
|
lastUsed: scanner.LastUsed,
|
||||||
|
registeredAt: FormatDatetime(scanner.RegisteredAt),
|
||||||
|
userAgent: scanner.UserAgent,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return items;
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1 style={{ fontWeight: "bold", float: "left" }}>Scanners (0)</h1>
|
<h1 style={{ fontWeight: "bold", float: "left" }}>
|
||||||
|
Scanners (
|
||||||
|
{webSocketContext.Scanners === null
|
||||||
|
? "0"
|
||||||
|
: webSocketContext.Scanners.length}
|
||||||
|
)
|
||||||
|
</h1>
|
||||||
|
|
||||||
<Popover
|
<Table columns={columns} dataSource={getTableItems()} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
<Popover
|
||||||
title="Scan this on mobile"
|
title="Scan this on mobile"
|
||||||
content={<QRCode value={"test"} bordered={false} />}
|
content={<QRCode value={"test"} bordered={false} />}
|
||||||
>
|
>
|
||||||
<Button
|
<Button
|
||||||
style={{ float: "right" }}
|
style={{ float: "right" }}
|
||||||
type="primary"
|
type="primary"
|
||||||
|
@ -51,9 +90,5 @@ export default function Scanners() {
|
||||||
>
|
>
|
||||||
Add scanner
|
Add scanner
|
||||||
</Button>
|
</Button>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
*/
|
||||||
<Table columns={columns} dataSource={data} />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
getConnectionStatusItem,
|
getConnectionStatusItem,
|
||||||
getUserSessionFromLocalStorage,
|
getUserSessionFromLocalStorage,
|
||||||
} from "../../utils";
|
} from "../../utils";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
@ -37,7 +38,7 @@ const columns = [
|
||||||
render: (_, record) => {
|
render: (_, record) => {
|
||||||
return (
|
return (
|
||||||
<Space size="middle">
|
<Space size="middle">
|
||||||
<a
|
<Link
|
||||||
href="#"
|
href="#"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
fetch(`${Constants.API_ADDRESS}/user/session/${record.key}`, {
|
fetch(`${Constants.API_ADDRESS}/user/session/${record.key}`, {
|
||||||
|
@ -52,7 +53,7 @@ const columns = [
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Sign out
|
Sign out
|
||||||
</a>
|
</Link>
|
||||||
</Space>
|
</Space>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
12
src/utils.js
12
src/utils.js
|
@ -85,6 +85,7 @@ let webSocketContextPreview = {
|
||||||
CategoryGroups: [],
|
CategoryGroups: [],
|
||||||
GroupTasks: [],
|
GroupTasks: [],
|
||||||
GroupTasksSteps: [],
|
GroupTasksSteps: [],
|
||||||
|
Scanners: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const WebSocketContext = createContext(webSocketContextPreview);
|
export const WebSocketContext = createContext(webSocketContextPreview);
|
||||||
|
@ -101,6 +102,8 @@ const ReceivedMessagesCommands = {
|
||||||
GroupTasksReloaded: 8,
|
GroupTasksReloaded: 8,
|
||||||
UpdateUserSessions: 9,
|
UpdateUserSessions: 9,
|
||||||
UpdateAllUsersUserAvatar: 10,
|
UpdateAllUsersUserAvatar: 10,
|
||||||
|
NewScanner: 11,
|
||||||
|
DeleteScanner: 12,
|
||||||
};
|
};
|
||||||
|
|
||||||
// commands sent to the backend server
|
// commands sent to the backend server
|
||||||
|
@ -131,6 +134,7 @@ export function WebSocketProvider({
|
||||||
// these are all group tasks that are then filtered and displayed in the respective tables for the category
|
// these are all group tasks that are then filtered and displayed in the respective tables for the category
|
||||||
const [groupTasks, setGroupTasks] = useState([]);
|
const [groupTasks, setGroupTasks] = useState([]);
|
||||||
const [groupTasksSteps, setGroupTasksSteps] = useState([]);
|
const [groupTasksSteps, setGroupTasksSteps] = useState([]);
|
||||||
|
const [scanners, setScanners] = useState([]);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const StartGroupTasksOpenModalRememberIdRef = useRef(null);
|
const StartGroupTasksOpenModalRememberIdRef = useRef(null);
|
||||||
|
|
||||||
|
@ -162,6 +166,7 @@ export function WebSocketProvider({
|
||||||
setCategoryGroups(body.CategoryGroups);
|
setCategoryGroups(body.CategoryGroups);
|
||||||
setGroupTasks(body.GroupTasks);
|
setGroupTasks(body.GroupTasks);
|
||||||
setGroupTasksSteps(body.GroupTasksSteps);
|
setGroupTasksSteps(body.GroupTasksSteps);
|
||||||
|
if (body.Scanners !== null) setScanners(body.Scanners);
|
||||||
break;
|
break;
|
||||||
case ReceivedMessagesCommands.UpdateConnectedUsers:
|
case ReceivedMessagesCommands.UpdateConnectedUsers:
|
||||||
setConnectedWebSocketUsersCount(body.WebSocketUsersCount);
|
setConnectedWebSocketUsersCount(body.WebSocketUsersCount);
|
||||||
|
@ -240,6 +245,12 @@ export function WebSocketProvider({
|
||||||
return newArr;
|
return newArr;
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case ReceivedMessagesCommands.NewScanner:
|
||||||
|
setScanners((arr) => [...arr, body]);
|
||||||
|
break;
|
||||||
|
case ReceivedMessagesCommands.DeleteScanner:
|
||||||
|
setScanners((arr) => arr.filter((arr) => arr.Id !== body.Id));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
console.error("unknown command", cmd);
|
console.error("unknown command", cmd);
|
||||||
break;
|
break;
|
||||||
|
@ -291,6 +302,7 @@ export function WebSocketProvider({
|
||||||
GroupTasks: groupTasks,
|
GroupTasks: groupTasks,
|
||||||
User: user,
|
User: user,
|
||||||
AllUsers: allUsers,
|
AllUsers: allUsers,
|
||||||
|
Scanners: scanners,
|
||||||
SendSocketMessage: SendSocketMessage,
|
SendSocketMessage: SendSocketMessage,
|
||||||
GroupTasksSteps: groupTasksSteps,
|
GroupTasksSteps: groupTasksSteps,
|
||||||
setGroupTasksSteps: setGroupTasksSteps,
|
setGroupTasksSteps: setGroupTasksSteps,
|
||||||
|
|
Loading…
Reference in New Issue