Skip to content

Commit

Permalink
WIP answer validation
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiasnteireho committed Sep 6, 2024
1 parent c9497a1 commit caf9462
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 7 deletions.
4 changes: 2 additions & 2 deletions demo/viewer/viewer.html
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
<script main="@empty"
env="production"
config="../package.json!npm"
src="../dist/bundles/app.js?v=1697489907734"
src="../dist/bundles/app.js?v=1724972361669"
cache-key="v"
cache-version="1697489907734"
cache-version="1724972361669"
base-url="../">
</script>
</body>
Expand Down
2 changes: 1 addition & 1 deletion index.dev.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@
errRepURL: ''
}));
</script>
<script src="node_modules/steal/steal.production.js?v=1677170402416" cache-key="v" cache-version="1677170402416" main="@caliorg/a2jviewer/app"></script>
<script src="node_modules/steal/steal.production.js?v=1724971878013" cache-key="v" cache-version="1724971878013" main="@caliorg/a2jviewer/app"></script>
</body>
</html>
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,6 @@
errRepURL: ''
}));
</script>
<script src="node_modules/steal/steal.production.js?v=1697489872534" cache-key="v" cache-version="1697489872534" main="@caliorg/a2jviewer/app"></script>
<script src="node_modules/steal/steal.production.js?v=1724972332735" cache-key="v" cache-version="1724972332735" main="@caliorg/a2jviewer/app"></script>
</body>
</html>
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@caliorg/a2jviewer",
"version": "8.1.6",
"version": "8.1.7-0",
"description": "A2J Viewer standalone and preview app.",
"main": "a2jviewer/app",
"scripts": {
Expand Down
83 changes: 83 additions & 0 deletions src/mobile/pages/pages-vm.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,86 @@ export default DefineMap.extend('PagesVM', {
}
},

/**
* @property {String} pages.ViewModel.prototype.validateAnswers answersString
* @parent pages.ViewModel
*
* XML version of the `answers` entered by the user.
*
* This is POSTed to `setDataURL` when user finishes the interview,
* 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){


let dmy = date.split('/')
// js wants mdy or ymd
// while a2j dates are d/m/yyyy
// if date has bad format bail
if (dmy.length !== 3){
return false
}

// slash delimited is not guaranteed supported everywhere
// so convert to
let dateval = new Date(
dmy[2] + '-' +
dmy[1] + '-' +
dmy[0]
)
return (date.toString() !== "Invalid Date")
}

/*
inspired by but does not use
https://stackoverflow.com/questions/20169217/how-to-write-isnumber-in-javascript
*/
function isValidNumber(num){
return !isNaN(Number(num)) && isFinite(Number(num))
}

function sanitizeAnswerValues (answer) {

let validator = []

validator["Date"] = isValidDate
validator["Number"] = isValidNumber


for(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){
delete answers[name]
} else {
answers[name] = sanitizedAnswer
}
})

return answers
},

/**
* @property {String} pages.ViewModel.prototype.answersString answersString
* @parent pages.ViewModel
Expand All @@ -213,6 +293,9 @@ export default DefineMap.extend('PagesVM', {
*/
answersANX: {
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())
return parsed
}
Expand Down

0 comments on commit caf9462

Please sign in to comment.