72 lines
1.6 KiB
JavaScript
72 lines
1.6 KiB
JavaScript
import SimpleSchema from 'simpl-schema';
|
|
import STORAGE_LIMITS from '/imports/constants/STORAGE_LIMITS.js';
|
|
import createPropertySchema from '/imports/api/properties/subSchemas/createPropertySchema.js';
|
|
|
|
let ContainerSchema = createPropertySchema({
|
|
name: {
|
|
type: String,
|
|
optional: true,
|
|
trim: false,
|
|
max: STORAGE_LIMITS.name,
|
|
},
|
|
carried: {
|
|
type: Boolean,
|
|
defaultValue: true,
|
|
optional: true,
|
|
},
|
|
contentsWeightless: {
|
|
type: Boolean,
|
|
optional: true,
|
|
},
|
|
weight: {
|
|
type: Number,
|
|
min: 0,
|
|
optional: true,
|
|
},
|
|
value: {
|
|
type: Number,
|
|
min: 0,
|
|
optional: true,
|
|
},
|
|
description: {
|
|
type: 'inlineCalculationFieldToCompute',
|
|
optional: true,
|
|
},
|
|
});
|
|
|
|
const ComputedOnlyContainerSchema = createPropertySchema({
|
|
description: {
|
|
type: 'computedOnlyInlineCalculationField',
|
|
optional: true,
|
|
},
|
|
// Weight of all the contents, zero if `contentsWeightless` is true
|
|
contentsWeight: {
|
|
type: Number,
|
|
optional: true,
|
|
removeBeforeCompute: true,
|
|
},
|
|
// Weight of all the carried contents (some sub-containers might not be carried)
|
|
// zero if `contentsWeightless` is true
|
|
carriedWeight: {
|
|
type: Number,
|
|
optional: true,
|
|
removeBeforeCompute: true,
|
|
},
|
|
contentsValue: {
|
|
type: Number,
|
|
optional: true,
|
|
removeBeforeCompute: true,
|
|
},
|
|
carriedValue: {
|
|
type: Number,
|
|
optional: true,
|
|
removeBeforeCompute: true,
|
|
},
|
|
});
|
|
|
|
const ComputedContainerSchema = new SimpleSchema()
|
|
.extend(ComputedOnlyContainerSchema)
|
|
.extend(ContainerSchema);
|
|
|
|
export { ContainerSchema, ComputedOnlyContainerSchema, ComputedContainerSchema };
|