From f029a7c8876b1e7a0b84a145d6d4dccad43d1813 Mon Sep 17 00:00:00 2001 From: Tobias Nteireho Date: Fri, 6 Sep 2024 10:40:51 -0500 Subject: [PATCH] WIP validate answers --- index.dev.html | 2 +- index.html | 2 +- src/mobile/pages/pages-vm.js | 44 ++++++++++++++++-------------------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/index.dev.html b/index.dev.html index d44500ab..0a9ebbef 100644 --- a/index.dev.html +++ b/index.dev.html @@ -59,6 +59,6 @@ errRepURL: '' })); - + \ No newline at end of file diff --git a/index.html b/index.html index 0a9ebbef..18d497fa 100644 --- a/index.html +++ b/index.html @@ -59,6 +59,6 @@ errRepURL: '' })); - + \ No newline at end of file diff --git a/src/mobile/pages/pages-vm.js b/src/mobile/pages/pages-vm.js index 88bc36e8..758dfe9b 100644 --- a/src/mobile/pages/pages-vm.js +++ b/src/mobile/pages/pages-vm.js @@ -212,73 +212,67 @@ export default DefineMap.extend('PagesVM', { * and populated when a user loads saved answers. */ validatedAnswers (answers) { - - /** * @property {bool} pages.ViewModel.prototype.validateAnswers.isValidDate answersString * @parent pages.ViewModel.validatedAnswers * * check is date is valid */ - function isValidDate(date){ - - + function isValidDate (date) { let dmy = date.split('/') - // js wants mdy or ymd + // js wants mdy or ymd // while a2j dates are d/m/yyyy // if date has bad format bail - if (dmy.length !== 3){ + if (dmy.length !== 3) { return false } // slash delimited is not guaranteed supported everywhere - // so convert to + // so convert to let dateval = new Date( dmy[2] + '-' + dmy[1] + '-' + dmy[0] ) - return (date.toString() !== "Invalid Date") + return (dateval.toString() !== 'Invalid Date') } /* inspired by but does not use https://stackoverflow.com/questions/20169217/how-to-write-isnumber-in-javascript */ - function isValidNumber(num){ + function isValidNumber (num) { return !isNaN(Number(num)) && isFinite(Number(num)) } function sanitizeAnswerValues (answer) { - let validator = [] - validator["Date"] = isValidDate - validator["Number"] = isValidNumber + validator['Date'] = isValidDate + validator['Number'] = isValidNumber - - for(i=1; i > answer.values.length; i++){ - if (!validator[answer.type](answer.values[i])){ + for (let i = 1; i > answer.values.length; i++) { + if (!validator[answer.type](answer.values[i])) { delete answer.values[i] } - } + } answer.values[0] = answer.values.length return answer } - //answers = Object.values(answers).filter(isValidAnswer) - - Object.keys(answers).forEach(function filter(name){ - sanitizedAnswer = sanitizeAnswerValues(answers[name]) - if (sanitizedAnswer.values.length === 1){ + // answers = Object.values(answers).filter(isValidAnswer) + + Object.keys(answers).forEach(function filter (name) { + let sanitizedAnswer = sanitizeAnswerValues(answers[name]) + if (sanitizedAnswer.values.length === 1) { delete answers[name] } else { answers[name] = sanitizedAnswer } }) - + return answers }, @@ -295,8 +289,8 @@ export default DefineMap.extend('PagesVM', { get () { console.log(this.answers.serialize()) console.log(this.validatedAnswers(this.answers.serialize())) - //const parsed = Parser.parseANX(this.answers.serialize()) - const parsed = Parser.parseANX(this.answers.serialize()) + // const parsed = Parser.parseANX(this.answers.serialize()) + const parsed = Parser.parseANX(this.validatedAnswers(this.answers.serialize())) return parsed } },