From ed6d917e6be5e5581dab1fa9fe2c593f2c35eca6 Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Mon, 13 Nov 2017 16:52:42 -0800 Subject: [PATCH] fixed incorrect responses count for form list view --- app/controllers/forms.server.controller.js | 52 +++++++++++++++---- app/models/form.server.model.js | 2 +- .../admin/views/list-forms.client.view.html | 2 +- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index c04d7bdc..6487e3cb 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -279,7 +279,6 @@ exports.getVisitorData = function(req, res) { }); }; - /** * Create a new form */ @@ -428,26 +427,59 @@ exports.list = function(req, res) { Form.find(searchObj) .sort('-created') - .select('title language admin submissions isLive') - .populate('admin.username', 'admin._id') + .select('title language isLive') .lean() .exec(function(err, forms) { if (err) { - res.status(400).send({ + return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); - } else { + } + + var form_ids = forms.map(function(form){ + return form._id; + }); + + //Get number of submissions for each form + FormSubmission.aggregate([ + { + $match: { + form: { + $in: form_ids + } + } + }, + { + $group: { + _id: '$form', + responses: { $sum: 1 } + } + }, + ], function(err, results){ + if (err) { + console.error(err); + return res.status(500).send({ + message: errorHandler.getErrorMessage(err) + }); + } + + const result_ids = results.map(function(result){ return result._id.id }); + var currIndex = -1; + for(var i=0; i -1){ + forms[i].submissionNum = results[currIndex].responses; + } else { + forms[i].submissionNum = 0; } } + res.json(forms); - } + }); }); }; diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index 236d0ddd..cb9612e9 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -203,7 +203,7 @@ var FormSchema = new Schema({ }, design: { - colors:{ + colors: { backgroundColor: { type: String, match: [/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/], diff --git a/public/modules/forms/admin/views/list-forms.client.view.html b/public/modules/forms/admin/views/list-forms.client.view.html index cea95d84..17088629 100644 --- a/public/modules/forms/admin/views/list-forms.client.view.html +++ b/public/modules/forms/admin/views/list-forms.client.view.html @@ -88,7 +88,7 @@
- {{ form.numberOfResponses }} {{ 'RESPONSES' | translate }} + {{ form.submissionNum }} {{ 'RESPONSES' | translate }}