Clean loading results

Signed-off-by: Jonas Rittershofer <jotoeri@users.noreply.github.com>
This commit is contained in:
Jonas Rittershofer 2020-05-11 15:58:32 +02:00
parent 6a52d83675
commit c54698f950
3 changed files with 24 additions and 24 deletions

View file

@ -649,16 +649,8 @@ class ApiController extends Controller {
$submissions[] = $submission; $submissions[] = $submission;
} }
// Load question-texts, including deleted ones. // Load currently active questions
try { $questions = $this->formsService->getQuestions($form->getId());
$questionEntities = $this->questionMapper->findByForm($form->getId());
} catch (DoesNotExistException $e) {
//handle silently
}
$questions = [];
foreach ($questionEntities as $questionEntity) {
$questions[] = $questionEntity->read();
}
$response = [ $response = [
'submissions' => $submissions, 'submissions' => $submissions,

View file

@ -78,7 +78,12 @@ class FormsService {
$this->userSession = $userSession; $this->userSession = $userSession;
} }
/**
* Load options corresponding to question
*
* @param integer $questionId
* @return array
*/
public function getOptions(int $questionId): array { public function getOptions(int $questionId): array {
$optionList = []; $optionList = [];
try { try {
@ -93,6 +98,12 @@ class FormsService {
} }
} }
/**
* Load questions corresponding to form
*
* @param integer $formId
* @return array
*/
public function getQuestions(int $formId): array { public function getQuestions(int $formId): array {
$questionList = []; $questionList = [];
try { try {

View file

@ -71,10 +71,10 @@
<section v-else> <section v-else>
<Submission <Submission
v-for="submission in submissions" v-for="submission in form.submissions"
:key="submission.id" :key="submission.id"
:submission="submission" :submission="submission"
:questions="questions" :questions="form.questions"
@delete="deleteSubmission(submission.id)" /> @delete="deleteSubmission(submission.id)" />
</section> </section>
</AppContent> </AppContent>
@ -117,14 +117,12 @@ export default {
data() { data() {
return { return {
loadingResults: true, loadingResults: true,
submissions: [],
questions: [],
} }
}, },
computed: { computed: {
noSubmissions() { noSubmissions() {
return this.submissions && this.submissions.length === 0 return this.form.submissions?.length === 0
}, },
/** /**
@ -178,9 +176,8 @@ export default {
const response = await axios.get(generateUrl('/apps/forms/api/v1/submissions/{hash}', { const response = await axios.get(generateUrl('/apps/forms/api/v1/submissions/{hash}', {
hash: this.form.hash, hash: this.form.hash,
})) }))
this.submissions = response.data.submissions this.form.submissions = response.data.submissions
this.questions = response.data.questions this.form.questions = response.data.questions
console.debug(this.submissions)
} catch (error) { } catch (error) {
console.error(error) console.error(error)
showError(t('forms', 'There was an error while loading results')) showError(t('forms', 'There was an error while loading results'))
@ -194,8 +191,8 @@ export default {
try { try {
await axios.delete(generateUrl('/apps/forms/api/v1/submission/{id}', { id })) await axios.delete(generateUrl('/apps/forms/api/v1/submission/{id}', { id }))
const index = this.submissions.findIndex(search => search.id === id) const index = this.form.submissions.findIndex(search => search.id === id)
this.submissions.splice(index, 1) this.form.submissions.splice(index, 1)
} catch (error) { } catch (error) {
console.error(error) console.error(error)
showError(t('forms', 'There was an error while removing this response')) showError(t('forms', 'There was an error while removing this response'))
@ -212,7 +209,7 @@ export default {
this.loadingResults = true this.loadingResults = true
try { try {
await axios.delete(generateUrl('/apps/forms/api/v1/submissions/{formId}', { formId: this.form.id })) await axios.delete(generateUrl('/apps/forms/api/v1/submissions/{formId}', { formId: this.form.id }))
this.submissions = [] this.form.submissions = []
} catch (error) { } catch (error) {
console.error(error) console.error(error)
showError(t('forms', 'There was an error while removing responses')) showError(t('forms', 'There was an error while removing responses'))
@ -229,14 +226,14 @@ export default {
}) })
const formattedSubmissions = [] const formattedSubmissions = []
this.submissions.forEach(submission => { this.form.submissions.forEach(submission => {
const formattedSubmission = { const formattedSubmission = {
userDisplayName: submission.userDisplayName, userDisplayName: submission.userDisplayName,
timestamp: moment(submission.timestamp, 'X').format('L LT'), timestamp: moment(submission.timestamp, 'X').format('L LT'),
} }
submission.answers.forEach(answer => { submission.answers.forEach(answer => {
const questionText = this.questions.find(question => question.id === answer.questionId).text const questionText = this.form.questions.find(question => question.id === answer.questionId).text
if (questionText in formattedSubmission) { if (questionText in formattedSubmission) {
formattedSubmission[questionText] = formattedSubmission[questionText].concat('; ').concat(answer.text) formattedSubmission[questionText] = formattedSubmission[questionText].concat('; ').concat(answer.text)
} else { } else {