Fixed bug in Admin page; Finished asset data entry page.

This commit is contained in:
2022-07-22 00:14:45 -07:00
parent 84e7dc890b
commit 195d93fd20
3 changed files with 34 additions and 13 deletions

View File

@@ -58,7 +58,11 @@ Meteor.methods({
if(Roles.userIsInRole(Meteor.userId(), "admin", {anyScope:true})) { if(Roles.userIsInRole(Meteor.userId(), "admin", {anyScope:true})) {
let assetType = AssetTypes.findOne({assetTypeId}); let assetType = AssetTypes.findOne({assetTypeId});
if(serial) { if(Assets.findOne({assetId})) {
//return {error: true, errorType: 'duplicateAssetId'}
throw new Meteor.Error("duplicateAssetId", "Cannot use the same asset ID twice.")
}
else if(serial) {
Assets.insert({assetTypeId, assetId, serial}); Assets.insert({assetTypeId, assetId, serial});
} }
else { else {

View File

@@ -50,9 +50,9 @@
}; };
// Create a holder for the site being edited. This allows us to clear the editor when the user finishes, and allows the table or parent view to setup the editor. // Create a holder for the site being edited. This allows us to clear the editor when the user finishes, and allows the table or parent view to setup the editor.
let editedSite = writable(null); let editedSite = writable(null);
let dirtySite = null; let dirtySite;
// Copy the edited site when ever it changes, set some defaults for a new site object (to make the view happy). // Copy the edited site when ever it changes, set some defaults for a new site object (to make the view happy).
editedSite.subscribe(site => {dirtySite = Object.assign({}, site)}); editedSite.subscribe(site => {dirtySite = Object.assign({name:""}, site)});
// Load the sites (reactive). // Load the sites (reactive).
let sites = Sites.find({}); let sites = Sites.find({});
const applySiteChanges = () => { const applySiteChanges = () => {
@@ -61,6 +61,7 @@
else else
Meteor.call("sites.add", dirtySite.name); Meteor.call("sites.add", dirtySite.name);
editedSite.set(null); editedSite.set(null);
dirtySite = null;
} }
const rejectSiteChanges = () => { const rejectSiteChanges = () => {
editedSite.set(null); editedSite.set(null);
@@ -215,7 +216,7 @@
let editedAssetType = writable(null); let editedAssetType = writable(null);
const onAssetTypeSelection = (e) => { const onAssetTypeSelection = (e) => {
} }
let dirtyAssetType = null; let dirtyAssetType;
// Copy the edited value when ever it changes, set some defaults for a new value object (to make the view happy). // Copy the edited value when ever it changes, set some defaults for a new value object (to make the view happy).
editedAssetType.subscribe(v => {dirtyAssetType = Object.assign({name: "", description: ""}, v)}); editedAssetType.subscribe(v => {dirtyAssetType = Object.assign({name: "", description: ""}, v)});
// Load the sites (reactive). // Load the sites (reactive).
@@ -229,6 +230,7 @@
else else
Meteor.call("assetTypes.add", dirtyAssetType.name, dirtyAssetType.description); Meteor.call("assetTypes.add", dirtyAssetType.name, dirtyAssetType.description);
editedAssetType.set(null); editedAssetType.set(null);
dirtyAssetType = null;
} }
const rejectAssetTypeChanges = () => { const rejectAssetTypeChanges = () => {
editedSite.set(null); editedSite.set(null);
@@ -320,10 +322,6 @@
</div> </div>
{/if} {/if}
</GridTable> </GridTable>
<!--{#each sites as site}-->
<!-- <div>{site.name}</div>-->
<!--{/each}-->
<!-- <button type="button" on:click={fixRecords}>Fix Records</button>-->
</div> </div>
<style> <style>

View File

@@ -63,9 +63,28 @@
let assetId = ""; let assetId = "";
let serial = ""; let serial = "";
const addAsset = () => { const addAsset = () => {
Meteor.call("assets.add", selectedAssetType._id, assetId, serial); if(selectedAssetType && selectedAssetType._id && assetId) {
assetId = ""; let result = Meteor.call("assets.add", selectedAssetType._id, assetId, serial, (err, res) => {
serial = ""; if (err) {
if (err.error === 'duplicateAssetId')
alert("The asset ID `" + assetId + "` has already been used.");
else
alert(err);
} else {
assetId = "";
serial = "";
document.getElementById('assetIdField').focus();
}
});
}
else {
if(!selectedAssetType) {
alert("Must select an asset type.");
}
else {
alert("Must provide an Asset Id.");
}
}
} }
let selectedAssetType = null; let selectedAssetType = null;
</script> </script>
@@ -109,7 +128,7 @@
{/each} {/each}
</List> </List>
<div style="grid-column: 1/span 1"> <div style="grid-column: 1/span 1">
<TextField type="text" style="width: 100%" bind:value={assetId} label="AssetId"> <TextField id="assetIdField" type="text" style="width: 100%" bind:value={assetId} label="AssetId">
</TextField> </TextField>
</div> </div>
<div style="grid-column: 1/span 1"> <div style="grid-column: 1/span 1">