diff --git a/webclient/src/Usage.js b/webclient/src/Usage.js
new file mode 100644
index 0000000..bbb1cea
--- /dev/null
+++ b/webclient/src/Usage.js
@@ -0,0 +1,92 @@
+import React, { useRef, useState, useEffect, useReducer } from 'react';
+import { BrowserRouter as Router, Switch, Route, Link, useParams, useLocation } from 'react-router-dom';
+import moment from 'moment-timezone';
+import QRCode from 'react-qr-code';
+import { Button, Container, Divider, Dropdown, Form, Grid, Header, Icon, Image, Menu, Message, Popup, Segment, Table } from 'semantic-ui-react';
+import { statusColor, BasicTable, siteUrl, staticUrl, requester, isAdmin } from './utils.js';
+
+const deviceNames = {
+ 'trotec': {title: 'Trotec', device: 'TROTECS300'},
+};
+
+export function Usage(props) {
+ const { name } = useParams();
+ const title = deviceNames[name].title;
+ const device = deviceNames[name].device;
+ const [usage, setUsage] = useState(false);
+ const [fullElement, setFullElement] = useState(false);
+ const ref = useRef(null);
+
+ const getUsage = () => {
+ requester('/stats/usage_data/?device='+device, 'GET', '')
+ .then(res => {
+ setUsage(res);
+ })
+ .catch(err => {
+ console.log(err);
+ setUsage(false);
+ });
+ };
+
+ useEffect(() => {
+ getUsage();
+ const interval = setInterval(getUsage, 60000);
+ return () => clearInterval(interval);
+ }, []);
+
+ const goFullScreen = () => {
+ if ('wakeLock' in navigator) {
+ navigator.wakeLock.request('screen');
+ }
+
+ ref.current.requestFullscreen({ navigationUI: 'hide' }).then(() => {
+ setFullElement(true);
+ });
+ };
+
+ const inUse = usage && moment().unix() - usage.track.time < 300;
+ const showUsage = usage && inUse && usage.track.username === usage.session.username;
+
+ const now = moment();
+
+ return (
+
+
+
+ {!fullElement &&
+
+
+
+ }
+
+ {showUsage ?
+ <>
+
+
+
+ {usage.session.first_name}
+
+
+
+
+
+ {parseInt(moment.duration(moment(now).diff(usage.session.start_time)).asMinutes())} mins
+
+
+
+
+
+ {parseInt(usage.session.num_seconds / 60)} mins
+
+ >
+ :
+ <>
+
+
Waiting for session
+ >
+ }
+
+
+
+ );
+};
diff --git a/webclient/src/light.css b/webclient/src/light.css
index fd7be49..84fb504 100644
--- a/webclient/src/light.css
+++ b/webclient/src/light.css
@@ -133,6 +133,24 @@ body {
margin-top: 1rem;
}
+.usage {
+ height: 100vh;
+ background-color: black;
+ color: white;
+ padding: 0.5em;
+ font-size: 3em;
+}
+
+.usage .ui.header {
+ color: white;
+}
+
+.usage .stat {
+ font-size: 2em;
+ margin-bottom: 0.75em;
+}
+
+
.footer {
margin-top: -20rem;
background: black;