134 lines
4.1 KiB
React
134 lines
4.1 KiB
React
|
|
import { Meteor } from 'meteor/meteor';
|
||
|
|
import React, { useState, useEffect } from 'react';
|
||
|
|
import { useTracker } from 'meteor/react-meteor-data';
|
||
|
|
import _ from 'lodash';
|
||
|
|
import {Link, useSearchParams} from "react-router-dom";
|
||
|
|
|
||
|
|
const RenderUsage = ({data}) => {
|
||
|
|
return (
|
||
|
|
<>
|
||
|
|
<ul>
|
||
|
|
{data.map((next, i) => (
|
||
|
|
<li key={next._id}>
|
||
|
|
{next.person && (
|
||
|
|
<>
|
||
|
|
User: {next.person.firstName} {next.person.lastName} {next.person.grade ? "~ " + next.person.grade : ""} (<Link to={"/history/search?email=" + encodeURIComponent(next.email)}>{next.email}</Link>)<br/>
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
Device ID: <Link to={"/history/search?deviceId=" + encodeURIComponent(next.deviceId)}>{next.deviceId}</Link><br/>
|
||
|
|
Serial: <Link to={"/history/search?serial=" + encodeURIComponent(next.serial)}>{next.serial}</Link><br/>
|
||
|
|
{next.asset && (
|
||
|
|
<>
|
||
|
|
Asset ID: <Link to={"/history/search?assetId=" + encodeURIComponent(next.asset.assetId)}>{next.asset.assetId}</Link><br/>
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
{new Date(next.startTime).toLocaleDateString("en-US") + "-" + new Date(next.endTime).toLocaleDateString("en-US")}
|
||
|
|
{next.assetType && (
|
||
|
|
<>
|
||
|
|
<br/>Asset Type: {next.assetType.name}
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
{next.assignedTo && (
|
||
|
|
<>
|
||
|
|
<br/>Currently assigned to: {next.assignedTo.firstName} {next.assignedTo.lastName} {next.assignedTo.grade ? "~ " + next.assignedTo.grade : ""} ({next.assignedTo.email})
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
</li>
|
||
|
|
))}
|
||
|
|
</ul>
|
||
|
|
</>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
const RenderAssignments = ({data}) => {
|
||
|
|
return (
|
||
|
|
<>
|
||
|
|
<ul>
|
||
|
|
{data.map((next, i) => (
|
||
|
|
<li key={next._id}>
|
||
|
|
{next.assignee && (
|
||
|
|
<>
|
||
|
|
User: {next.assignee.firstName} {next.assignee.lastName} {next.assignee.grade ? "~ " + next.assignee.grade : ""} (<Link to={"/history/search?email=" + encodeURIComponent(next.assignee.email)}>{next.assignee.email}</Link>)<br/>
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
Serial: <Link to={"/history/search?serial=" + encodeURIComponent(next.serial)}>{next.serial}</Link><br/>
|
||
|
|
{next.asset && (
|
||
|
|
<>
|
||
|
|
Asset ID: <Link to={"/history/search?assetId=" + encodeURIComponent(next.asset.assetId)}>{next.asset.assetId}</Link><br/>
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
{next.assetType && (
|
||
|
|
<>
|
||
|
|
Asset Type: {next.assetType.name}<br/>
|
||
|
|
</>
|
||
|
|
)}
|
||
|
|
{new Date(next.startDate).toLocaleDateString("en-US") + "-" + new Date(next.endDate).toLocaleDateString("en-US")}<br/>
|
||
|
|
Comment: {next.comment}<br/>
|
||
|
|
Start Condition: {next.startCondition}<br/>
|
||
|
|
Details: {next.startConditionDetails}<br/>
|
||
|
|
End Condition: {next.endCondition}<br/>
|
||
|
|
Details: {next.endConditionDetails}<br/>
|
||
|
|
</li>
|
||
|
|
))}
|
||
|
|
</ul>
|
||
|
|
</>
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
export default () => {
|
||
|
|
// const query = queryString.parse(search)
|
||
|
|
const [data, setData] = useState([])
|
||
|
|
const [search, setSearch] = useSearchParams()
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
let args;
|
||
|
|
|
||
|
|
if(search.get('resultType') === 'usage') {
|
||
|
|
if(search.get('studentId')) {
|
||
|
|
args = {studentId: search.get('studentId')}
|
||
|
|
}
|
||
|
|
else if(search.get('staffId')) {
|
||
|
|
args = {staffId: search.get('staffId')}
|
||
|
|
}
|
||
|
|
else if(search.get('email')) {
|
||
|
|
args = {email: search.get('email')}
|
||
|
|
}
|
||
|
|
else if(search.get('deviceId')) {
|
||
|
|
args = {deviceId: search.get('deviceId')}
|
||
|
|
}
|
||
|
|
else if(search.get('serial')) {
|
||
|
|
args = {serial: search.get('serial')}
|
||
|
|
}
|
||
|
|
else if(search.get('assetId')) {
|
||
|
|
args = {assetId: search.get('assetId')}
|
||
|
|
}
|
||
|
|
|
||
|
|
Meteor.call('DataCollection.chromebookData', args, (err, result) => {
|
||
|
|
if (err) console.error(err)
|
||
|
|
else setData(result)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
if(search.get('studentId')) {
|
||
|
|
args = {studentId: search.get('studentId')}
|
||
|
|
}
|
||
|
|
else if(search.get('staffId')) {
|
||
|
|
args = {staffId: search.get('staffId')}
|
||
|
|
}
|
||
|
|
else if(search.get('serial')) {
|
||
|
|
args = {serial: search.get('serial')}
|
||
|
|
}
|
||
|
|
else if(search.get('assetId')) {
|
||
|
|
args = {assetId: search.get('assetId')}
|
||
|
|
}
|
||
|
|
|
||
|
|
Meteor.call('AssetAssignmentHistory.get', args, (err, result) => {
|
||
|
|
if (err) console.error(err)
|
||
|
|
else setData(result)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
}, [search])
|
||
|
|
|
||
|
|
return (search.get('resultType') === 'usage' ? <RenderUsage data={data}/> : <RenderAssignments data={data}/>)
|
||
|
|
}
|