Fixed bug in Admin page; Finished asset data entry page.
This commit is contained in:
@@ -57,8 +57,12 @@ 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 {
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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">
|
||||||
|
|||||||
Reference in New Issue
Block a user