Data model for storing the dashboards

 1let dashboardSchema = mongoose.Schema({
 2  _id: {
 3      type: ObjectId,
 4      auto: true,
 5  },
 6  name: {
 7      type: String,
 8      required: true,
 9  },
10  user: {
11      type: String,
12      required: true,
13  },
14  widgets: {
15      type: [WIDGET],
16      required: true,
17  },
18  variables: {
19      type: Object,
20      required: false,
21      default: [{}],
22  },
23  insertTime: {
24      type: Date,
25      default: Date.now,
26  },
27  updateTime: {
28      type: Date,
29      required: true,
30      default: Date.now,
31  },
32  group: {
33      type: String,
34      required: false,
35      default: null,
36  },
37  groupWriteAccess: {
38      type: Boolean,
39      required: false,
40      default: false,
41  },
42  lastUpdatedBy: {
43      type: String,
44      required: false,
45      default: null,
46  },
47  deleted: {
48      type: Boolean,
49      default: false,
50  },
51  tangoDB: {
52      type: String,
53      default: '',
54  },
55});
 1const WIDGET = {
 2  canvas: String,
 3  id: String,
 4  x: Number,
 5  y: Number,
 6  height: Number,
 7  width: Number,
 8  type: { type: String },
 9  // Necessary since `type' is a reserved word in Mongoose
10  inputs: Schema.Types.Mixed,
11  order: Number,
12};