From 03ea03a7521d6ea23a727ca5837a8f0dc3e72cda Mon Sep 17 00:00:00 2001 From: alexandercerutti Date: Sat, 18 Aug 2018 16:30:41 +0200 Subject: [PATCH] Added fieldsArea class to add fields to primaryFields, secondaryFields, etc --- fields.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 fields.js diff --git a/fields.js b/fields.js new file mode 100644 index 0000000..782aa4c --- /dev/null +++ b/fields.js @@ -0,0 +1,39 @@ +const schema = require("./schema"); + +class FieldsArea { + constructor() { + this.fields = []; + } + + push(...fields) { + if (fields[0] instanceof Array && fields[0].length) { + fields = fields[0]; + } + + let validFields = fields.filter(f => typeof f === "object" && schema.isValid(f, schema.constants.field)); + + this.fields.push(...validFields); + + return validFields.length; + } + + pop(quantity = -1) { + if (!this.fields.length) { + return undefined; + } + + if (quantity > -1) { + let removedElements = this.fields.slice(quantity); + this.fields = this.fields.slice(0, this.fields.length - quantity); + + return removedElements; + } + + return this.fields.pop(); + } +} + +module.exports = { + areas: ["primaryFields", "secondaryFields", "auxiliaryFields", "backFields", "headerFields"], + FieldsArea +};