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

@@ -57,8 +57,12 @@ Meteor.methods({
if(Roles.userIsInRole(Meteor.userId(), "admin", {anyScope:true})) {
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});
}
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.
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).
editedSite.subscribe(site => {dirtySite = Object.assign({}, site)});
editedSite.subscribe(site => {dirtySite = Object.assign({name:""}, site)});
// Load the sites (reactive).
let sites = Sites.find({});
const applySiteChanges = () => {
@@ -61,6 +61,7 @@
else
Meteor.call("sites.add", dirtySite.name);
editedSite.set(null);
dirtySite = null;
}
const rejectSiteChanges = () => {
editedSite.set(null);
@@ -215,7 +216,7 @@
let editedAssetType = writable(null);
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).
editedAssetType.subscribe(v => {dirtyAssetType = Object.assign({name: "", description: ""}, v)});
// Load the sites (reactive).
@@ -229,6 +230,7 @@
else
Meteor.call("assetTypes.add", dirtyAssetType.name, dirtyAssetType.description);
editedAssetType.set(null);
dirtyAssetType = null;
}
const rejectAssetTypeChanges = () => {
editedSite.set(null);
@@ -320,10 +322,6 @@
</div>
{/if}
</GridTable>
<!--{#each sites as site}-->
<!-- <div>{site.name}</div>-->
<!--{/each}-->
<!-- <button type="button" on:click={fixRecords}>Fix Records</button>-->
</div>
<style>

View File

@@ -63,9 +63,28 @@
let assetId = "";
let serial = "";
const addAsset = () => {
Meteor.call("assets.add", selectedAssetType._id, assetId, serial);
assetId = "";
serial = "";
if(selectedAssetType && selectedAssetType._id && assetId) {
let result = Meteor.call("assets.add", selectedAssetType._id, assetId, serial, (err, res) => {
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;
</script>
@@ -109,7 +128,7 @@
{/each}
</List>
<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>
</div>
<div style="grid-column: 1/span 1">