Updated meteor; Fixed AssetTypes add/update/remove.

This commit is contained in:
2023-04-22 13:20:14 -07:00
parent 8196c02b4e
commit 5514cd8d9d
9 changed files with 103 additions and 64 deletions

View File

@@ -6,23 +6,23 @@
meteor-base@1.5.1 # Packages every Meteor app needs to have meteor-base@1.5.1 # Packages every Meteor app needs to have
mobile-experience@1.1.0 # Packages for a great mobile UX mobile-experience@1.1.0 # Packages for a great mobile UX
mongo@1.15.0 # The database Meteor supports right now mongo@1.16.5 # The database Meteor supports right now
jquery # Wrapper package for npm-installed jquery jquery # Wrapper package for npm-installed jquery
reactive-var@1.0.11 # Reactive variable for tracker reactive-var@1.0.12 # Reactive variable for tracker
standard-minifier-css@1.8.1 # CSS minifier run for production mode standard-minifier-css@1.9.0 # CSS minifier run for production mode
standard-minifier-js@2.8.0 # JS minifier run for production mode standard-minifier-js@2.8.1 # JS minifier run for production mode
es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers
ecmascript@0.16.2 # Enable ECMAScript2015+ syntax in app code ecmascript@0.16.6 # Enable ECMAScript2015+ syntax in app code
typescript # Enable TypeScript syntax in .ts and .tsx modules typescript@4.9.4 # Enable TypeScript syntax in .ts and .tsx modules
shell-server@0.5.0 # Server-side component of the `meteor shell` command shell-server@0.5.0 # Server-side component of the `meteor shell` command
static-html@1.3.2 # Define static page content in .html files static-html@1.3.2 # Define static page content in .html files
react-meteor-data # React higher-order component for reactively tracking Meteor data react-meteor-data # React higher-order component for reactively tracking Meteor data
accounts-ui@1.4.2 accounts-ui@1.4.2
accounts-password@2.3.1 accounts-password@2.3.4
accounts-google@1.4.0 accounts-google@1.4.0
service-configuration@1.3.0 service-configuration@1.3.1
google-config-ui@1.0.3 # Adds the UI for logging in via Google google-config-ui@1.0.3 # Adds the UI for logging in via Google
alanning:roles # Adds roles to the user alanning:roles # Adds roles to the user

View File

@@ -1 +1 @@
METEOR@2.7.3 METEOR@2.11.0

View File

@@ -1,41 +1,41 @@
accounts-base@2.2.4 accounts-base@2.2.7
accounts-google@1.4.0 accounts-google@1.4.0
accounts-oauth@1.4.1 accounts-oauth@1.4.2
accounts-password@2.3.1 accounts-password@2.3.4
accounts-ui@1.4.2 accounts-ui@1.4.2
accounts-ui-unstyled@1.7.0 accounts-ui-unstyled@1.7.0
alanning:roles@3.4.0 alanning:roles@3.4.0
allow-deny@1.1.1 allow-deny@1.1.1
autoupdate@1.8.0 autoupdate@1.8.0
babel-compiler@7.9.2 babel-compiler@7.10.3
babel-runtime@1.5.1 babel-runtime@1.5.1
base64@1.0.12 base64@1.0.12
binary-heap@1.0.11 binary-heap@1.0.11
blaze@2.5.0 blaze@2.6.1
blaze-tools@1.1.3 blaze-tools@1.1.3
boilerplate-generator@1.7.1 boilerplate-generator@1.7.1
caching-compiler@1.2.2 caching-compiler@1.2.2
caching-html-compiler@1.2.1 caching-html-compiler@1.2.1
callback-hook@1.4.0 callback-hook@1.5.0
check@1.3.1 check@1.3.2
ddp@1.4.0 ddp@1.4.1
ddp-client@2.5.0 ddp-client@2.6.1
ddp-common@1.4.0 ddp-common@1.4.0
ddp-rate-limiter@1.1.0 ddp-rate-limiter@1.1.1
ddp-server@2.5.0 ddp-server@2.6.0
diff-sequence@1.1.1 diff-sequence@1.1.2
dynamic-import@0.7.2 dynamic-import@0.7.2
ecmascript@0.16.2 ecmascript@0.16.6
ecmascript-runtime@0.8.0 ecmascript-runtime@0.8.0
ecmascript-runtime-client@0.12.1 ecmascript-runtime-client@0.12.1
ecmascript-runtime-server@0.11.0 ecmascript-runtime-server@0.11.0
ejson@1.1.2 ejson@1.1.3
email@2.2.1 email@2.2.4
es5-shim@4.8.0 es5-shim@4.8.0
fetch@0.1.1 fetch@0.1.3
geojson-utils@1.0.10 geojson-utils@1.0.11
google-config-ui@1.0.3 google-config-ui@1.0.3
google-oauth@1.4.2 google-oauth@1.4.3
hot-code-push@1.0.4 hot-code-push@1.0.4
html-tools@1.1.3 html-tools@1.1.3
htmljs@1.1.1 htmljs@1.1.1
@@ -43,57 +43,57 @@ id-map@1.1.1
inter-process-messaging@0.1.1 inter-process-messaging@0.1.1
jquery@3.0.0 jquery@3.0.0
launch-screen@1.3.0 launch-screen@1.3.0
less@3.0.2 less@4.0.0
localstorage@1.2.0 localstorage@1.2.0
logging@1.3.1 logging@1.3.2
meteor@1.10.0 meteor@1.11.1
meteor-base@1.5.1 meteor-base@1.5.1
meteortoys:toykit@10.0.0 meteortoys:toykit@10.0.0
minifier-css@1.6.1 minifier-css@1.6.2
minifier-js@2.7.5 minifier-js@2.7.5
minimongo@1.8.0 minimongo@1.9.2
mobile-experience@1.1.0 mobile-experience@1.1.0
mobile-status-bar@1.1.0 mobile-status-bar@1.1.0
modern-browsers@0.1.8 modern-browsers@0.1.9
modules@0.18.0 modules@0.19.0
modules-runtime@0.13.0 modules-runtime@0.13.1
mongo@1.15.0 mongo@1.16.5
mongo-decimal@0.1.3 mongo-decimal@0.1.3
mongo-dev-server@1.1.0 mongo-dev-server@1.1.0
mongo-id@1.0.8 mongo-id@1.0.8
msavin:mongol@10.0.1 msavin:mongol@10.0.1
npm-mongo@4.3.1 npm-mongo@4.14.0
oauth@2.1.2 oauth@2.2.0
oauth2@1.3.1 oauth2@1.3.2
observe-sequence@1.0.20 observe-sequence@1.0.20
ordered-dict@1.1.0 ordered-dict@1.1.0
promise@0.12.0 promise@0.12.2
random@1.2.0 random@1.2.1
rate-limit@1.0.9 rate-limit@1.0.9
react-fast-refresh@0.2.3 react-fast-refresh@0.2.6
react-meteor-data@2.5.1 react-meteor-data@2.7.2
reactive-dict@1.3.0 reactive-dict@1.3.1
reactive-var@1.0.11 reactive-var@1.0.12
reload@1.3.1 reload@1.3.1
retry@1.1.0 retry@1.1.0
routepolicy@1.1.1 routepolicy@1.1.1
service-configuration@1.3.0 service-configuration@1.3.1
session@1.2.0 session@1.2.1
sha@1.0.9 sha@1.0.9
shell-server@0.5.0 shell-server@0.5.0
socket-stream-client@0.5.0 socket-stream-client@0.5.0
spacebars@1.2.0 spacebars@1.3.0
spacebars-compiler@1.3.1 spacebars-compiler@1.3.1
standard-minifier-css@1.8.2 standard-minifier-css@1.9.0
standard-minifier-js@2.8.1 standard-minifier-js@2.8.1
static-html@1.3.2 static-html@1.3.2
templating@1.4.1 templating@1.4.2
templating-compiler@1.4.1 templating-compiler@1.4.1
templating-runtime@1.5.0 templating-runtime@1.6.1
templating-tools@1.2.2 templating-tools@1.2.2
tracker@1.2.0 tracker@1.3.1
typescript@4.5.4 typescript@4.9.4
underscore@1.0.10 underscore@1.0.12
url@1.3.2 url@1.3.2
webapp@1.13.1 webapp@1.13.4
webapp-hashing@1.1.0 webapp-hashing@1.1.1

View File

@@ -42,9 +42,9 @@ const AssetTypeEditor = ({value, close}) => {
close() close()
//TODO Should invert this and only close if there was success on the server. //TODO Should invert this and only close if there was success on the server.
if(value._id) if(value._id)
Meteor.call("assetType.update", value._id, name, description, year); Meteor.call("assetTypes.update", value._id, name, description, year);
else else
Meteor.call("assetType.add", name, description, year); Meteor.call("assetTypes.add", name, description, year);
} }
const rejectChanges = () => { const rejectChanges = () => {
close() close()
@@ -59,7 +59,7 @@ const AssetTypeEditor = ({value, close}) => {
<div style={cssFieldColumnContainer}> <div style={cssFieldColumnContainer}>
<h1>Asset Type Editor</h1> <h1>Asset Type Editor</h1>
<div style={cssGridFieldContainer}> <div style={cssGridFieldContainer}>
<TextField variant="standard" style={cssEditorField} label="Year" value={year} onChange={(e) => change}/> <TextField variant="standard" style={cssEditorField} label="Year" value={year} onChange={(e) => change(e)}/>
<TextField variant="standard" style={cssEditorField} label="Name" value={name} onChange={(e) => {setName(e.target.value)}}/> <TextField variant="standard" style={cssEditorField} label="Name" value={name} onChange={(e) => {setName(e.target.value)}}/>
<TextField variant="outlined" style={{gridColumn: '1 / span 2',...cssEditorField}} multiline rows={4} label="Description" value={description} onChange={(e) => {setDescription(e.target.value)}}/> <TextField variant="outlined" style={{gridColumn: '1 / span 2',...cssEditorField}} multiline rows={4} label="Description" value={description} onChange={(e) => {setDescription(e.target.value)}}/>
</div> </div>
@@ -102,7 +102,7 @@ export default () => {
maxHeight: '40rem', maxHeight: '40rem',
keyHandler: (e, selected) => { keyHandler: (e, selected) => {
if(selected && selected._id && e.key === "Delete") { if(selected && selected._id && e.key === "Delete") {
Meteor.call("assetType.remove", selected._id); Meteor.call("assetTypes.remove", selected._id);
} }
} }
} }

View File

@@ -62,6 +62,7 @@ const AddAssets = ({assetTypes}) => {
return ( return (
<> <>
<div>1: Select Asset Types To Add</div>
<Box style={cssContainer}> <Box style={cssContainer}>
<FormControl style={cssComponent}> <FormControl style={cssComponent}>
<InputLabel id="selectAssetTypesLabel">Available Asset Types</InputLabel> <InputLabel id="selectAssetTypesLabel">Available Asset Types</InputLabel>
@@ -81,6 +82,7 @@ const AddAssets = ({assetTypes}) => {
</Select> </Select>
</FormControl> </FormControl>
</Box> </Box>
<div>2: Select Asset Type and Enter Asset Data</div>
<Box style={cssContainer}> <Box style={cssContainer}>
<div style={{maxHeight: '26rem', overflowY:'auto', minWidth: '10rem', minHeight: '10rem'}}> <div style={{maxHeight: '26rem', overflowY:'auto', minWidth: '10rem', minHeight: '10rem'}}>
<List> <List>

View File

@@ -65,13 +65,13 @@ const AssetEditor = ({value, close}) => {
return <MenuItem key={i} value={assetType._id}>{assetType.name}</MenuItem> return <MenuItem key={i} value={assetType._id}>{assetType.name}</MenuItem>
})} })}
</TextField> </TextField>
<TextField style={cssEditorField} variant="standard" label="Asset ID" value={assetId} onChange={(e) => {setAssetId(e.target.value)}}/> <TextField style={cssEditorField} variant="standard" label="Asset ID" value={assetId} onChange={(e) => {setAssetId(e.target.value.toUpperCase())}}/>
<TextField style={cssEditorField} variant="standard" label="Serial" value={serial} onChange={(e) => {setSerial(e.target.value)}}/>
<TextField style={cssEditorField} select variant="standard" label="Condition" value={condition} onChange={(e)=>{setCondition(e.target.value)}}> <TextField style={cssEditorField} select variant="standard" label="Condition" value={condition} onChange={(e)=>{setCondition(e.target.value)}}>
{conditions.map((condition, i) => { {conditions.map((condition, i) => {
return <MenuItem key={i} value={condition}>{condition}</MenuItem> return <MenuItem key={i} value={condition}>{condition}</MenuItem>
})} })}
</TextField> </TextField>
<TextField style={cssEditorField} variant="standard" label="Serial" value={serial} onChange={(e) => {setSerial(e.target.value)}}/>
<TextField style={{gridColumn: '1 / span 2',...cssEditorField}} multiline variant="outlined" rows={4} label="Condition Details" value={conditionDetails} onChange={(e) => {setConditionDetails(e.target.value)}}/> <TextField style={{gridColumn: '1 / span 2',...cssEditorField}} multiline variant="outlined" rows={4} label="Condition Details" value={conditionDetails} onChange={(e) => {setConditionDetails(e.target.value)}}/>
</div> </div>
<div style={cssButtonContainer}> <div style={cssButtonContainer}>

View File

@@ -32,7 +32,7 @@
"typescript": "^4.8.4", "typescript": "^4.8.4",
"umbrellajs": "^3.3.1", "umbrellajs": "^3.3.1",
"underscore": "^1.13.2", "underscore": "^1.13.2",
"verbum": "^0.4.0", "verbum": "^0.5.0",
"winston": "^3.7.2", "winston": "^3.7.2",
"winston-daily-rotate-file": "^4.6.1", "winston-daily-rotate-file": "^4.6.1",
"ws": "^8.4.2" "ws": "^8.4.2"

View File

@@ -4,7 +4,8 @@ import '../imports/api/';
import './google-oauth.js'; import './google-oauth.js';
import '/imports/startup/accounts-config.js'; import '/imports/startup/accounts-config.js';
import './logging'; import './logging';
//Currently all the websocket based reporting is done via the data collection system.
//import './websocket'

36
server/websocket.js Normal file
View File

@@ -0,0 +1,36 @@
import WebSocket, {WebSocketServer} from 'ws'
try {
const server = new WebSocketServer({
port: 3001,
perMessageDeflate: {
zlibDeflateOptions: {
// See zlib defaults.
chunkSize: 1024,
memLevel: 7,
level: 3
},
zlibInflateOptions: {
chunkSize: 10 * 1024
},
// Other options settable:
clientNoContextTakeover: true, // Defaults to negotiated value.
serverNoContextTakeover: true, // Defaults to negotiated value.
serverMaxWindowBits: 10, // Defaults to negotiated value.
// Below options specified as default values.
concurrencyLimit: 10, // Limits zlib concurrency for perf.
threshold: 1024 // Size (in bytes) below which messages
// should not be compressed if context takeover is disabled.
}
})
server.on('connection', function connection(socket) {
socket.on('message', function message(data) {
console.log("received: %s", data)
socket.send("pong")
})
})
}
catch(e) {
console.log(e);
}