user-questionnaire
Example
<cr-component id="component" name="user-questionnaire" loading></cr-component>
<script>
const component = document.getElementById("#component");
let questionnaireProps = {
skip: true,
intro: {
enabled: true,
description:
"Para poder ofrecerte un producto adaptado a tu perfil, necesitamos que completes este test de idoneidad.",
title: "Test de idoneidad",
},
steps: [
{
id: 1,
name: "N 1",
question: "¿Cuáles son tus ingresos netos anuales?",
type: "text",
placeholder: "Especifique aquí",
},
{
id: 2,
name: "N 2",
question: "¿Cuáles son tus ingresos netos anuales?",
type: "currency",
value: 55555,
},
],
score: {
enabled: true,
from: 0,
to: 10,
title: "conservador",
description:
"Un perfil más elevado te permitiría acceder a productos con mayor riesgo y, por lo tanto, mayor rentabilidad esperada en el largo plazo.",
error: {
description:
"Dichas respuestas son incorrectas o no estan relacionadas. Por favor, revise las siguientes respuestas",
questions: [],
},
},
};
let newScore = {
value: 7,
title: "Arriesgado",
description:
"Un perfil más elevado te permitiría acceder a productos con mayor riesgo y, por lo tanto, mayor rentabilidad esperada en el largo plazo.",
};
let newError = {
questions: [1, 2, 5],
description: "Te faltaron estas preguntas por responder",
};
component.init(questionnaireProps);
component.addEventListener("change", (e) => {
if (
questionnaireProps.score.enabled &&
questionnaireProps.steps.length + questionnaireProps.intro.enabled === e.detail.current
) {
setTimeout(() => {
questionnaireProps.steps.length === e.detail.answers.length
? component.updateScore(newScore)
: component.updateErrors(newError);
}, 1000);
}
});
</script>
Schema
{
"type": "object",
"properties": {
"skip": {
"type": "boolean",
"default": false
},
"intro": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"description": {
"type": "string",
"default": ""
},
"image": {
"type": "string",
"default": "undefined/assets/img/kyc.svg"
}
},
"default": {
"enabled": false,
"image": "undefined/assets/img/kyc.svg"
}
},
"steps": {
"type": "array",
"default": [],
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"default": 0
},
"question": {
"type": "string",
"default": ""
},
"type": {
"type": "string",
"default": ""
},
"options": {
"type": "array",
"default": []
},
"alert": {
"type": "object",
"properties": {
"type": {
"type": "string",
"default": "info"
},
"text": {
"type": "string",
"default": ""
}
}
},
"value": {
"type": [
"string",
"number",
"object"
],
"properties": {
"value": {
"type": [
"string",
"number"
]
},
"description": {
"type": "string"
}
}
},
"label": {
"type": "string",
"default": ""
},
"placeholder": {
"type": "string",
"default": ""
},
"pattern": {
"type": "string",
"default": ""
},
"required": {
"type": "boolean",
"default": false
},
"min": {
"type": "number"
},
"max": {
"type": "number"
},
"step": {
"type": "number",
"default": 1
},
"risk": {
"type": "boolean",
"default": false
}
}
}
},
"score": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"value": {
"type": "number",
"default": 0
},
"from": {
"type": "number",
"default": 0
},
"to": {
"type": "number",
"default": 1
},
"title": {
"type": "string",
"default": ""
},
"description": {
"type": "string",
"default": ""
},
"error": {
"type": "object",
"properties": {
"description": {
"type": "string",
"default": ""
},
"image": {
"type": "string",
"default": "undefined/assets/img/error.svg"
},
"questions": {
"type": "array",
"default": [],
"items": {
"type": "string"
}
}
}
}
},
"default": {
"enabled": false,
"error": {
"image": "undefined/assets/img/error.svg"
}
}
},
"current": {
"type": "number",
"default": 0
}
},
"additionalProperties": true
}
Complete Schema
{}
Public functions
-
goToStep(step)
Function to change the step
Params
- {number} step
-
updateScore(newScore)
Function to change the score
Params
- {object} newScore
-
updateErrors(errors)
Function to change the score
Params
- {array} errors
Locales
{
"estimation": "It won't take you more than {{estimatedTime}} minutes",
"start": "Start",
"%s answer": {
"one": "Answer",
"other": "other"
},
"inconsistencies": "We have detected inconsistencies in the responses given to the questionnaire.",
"result": "Result",
"showResult": "Based on your answers the result of your profile is...",
"skipStep": "Skip step",
"sorry": "We're sorry"
}