diff --git a/README.md b/README.md index 0b74316..4012b47 100755 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ npm run deploy Goto https://app.keycdn.com/zones/purgeurl/87880 and enter: ``` -/s3/republik-assets/dynamic-components/questionnaire-dn/index.js +/s3/republik-assets/dynamic-components/questionnaire/index.js ``` If you change asset files be sure to purge those too. diff --git a/package.json b/package.json index 9fe93ec..0469fab 100755 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "questionnaire-dn", + "name": "questionnaire", "version": "0.0.1", "description": "use a questionnaire inline", "main": "index.js", @@ -11,18 +11,18 @@ "now-build": "NODE_ENV=production rollup -c && cd test && next build", "heroku-postbuild": "NODE_ENV=production rollup -c && cd test && next build", "start": "NODE_ENV=production cd test && node server.js", - "deploy": "s3cmd sync --exclude '.DS_Store' --verbose --acl-public build/ s3://republik-assets/dynamic-components/questionnaire-dn/" + "deploy": "s3cmd sync --exclude '.DS_Store' --verbose --acl-public build/ s3://republik-assets/dynamic-components/questionnaire/" }, "repository": { "type": "git", - "url": "git+https://github.com/orbiting/questionnaire-dn.git" + "url": "git+https://github.com/orbiting/questionnaire.git" }, "author": "", "license": "BSD-3-Clause", "bugs": { - "url": "https://github.com/orbiting/questionnaire-dn/issues" + "url": "https://github.com/orbiting/questionnaire/issues" }, - "homepage": "https://github.com/orbiting/questionnaire-dn#readme", + "homepage": "https://github.com/orbiting/questionnaire#readme", "devDependencies": { "@babel/core": "^7.0.0-beta.51", "@babel/preset-env": "^7.0.0-beta.51", diff --git a/src/components/Chart.js b/src/components/Chart.js index 67a0f36..947e3c1 100644 --- a/src/components/Chart.js +++ b/src/components/Chart.js @@ -69,7 +69,7 @@ const styles = { class Chart extends Component { render () { - const { question } = this.props + const { question, colors = [] } = this.props if (!question || !question.results) { return } @@ -87,6 +87,9 @@ class Chart extends Component { const truePercent = getPercentage(trueResult) const falsePercent = getPercentage(falseResult) + const trueColor = colors.find(c => c.value) + const falseColor = colors.find(c => !c.value) + return (
{text}
- Der Fragebogen konnte nicht gefunden werden. -
- ) - } + // handle not found or not started + if (!data.questionnaire || new Date(data.questionnaire.beginDate) > now) { + return ( ++ Der Fragebogen konnte nicht gefunden werden. +
+ ) + } - if (!me || !me.id) { - return ( -Damit wir Ihnen zeigen können wo Sie im Vergleich zu allen anderen stehen müssen Sie sich anmelden. Sie benötigen keine Mitgliedschaft. Um Ihre Privatsphäre müssen Sie sich keine Sorgen machen: Sie können Ihre Antworten jederzeit wieder anonymisieren.
- ) - } + // handle questions + const { questionnaire } = data + const { questions, userHasSubmitted } = questionnaire - // handle questions - const { questionnaire } = data - const { questions, userHasSubmitted } = questionnaire + const { error, submitting, updating, showOverlay } = this.state + const questionCount = questions.filter(Boolean).length + const userAnswerCount = questions.map(q => q.userAnswer).filter(Boolean).length - const { error, submitting, updating, showOverlay } = this.state - const questionCount = questions.filter(Boolean).length - const userAnswerCount = questions.map(q => q.userAnswer).filter(Boolean).length + const elementForQuestion = q => + React.createElement( + Question, + { + onChange: this.createHandleChange(q), + questionnaire, + question: q, + key: q.id, + colors, + forceShowResults + } + ) - return ( -{errorToString(error)}
+ // rolls questions into groups. The last question of a group is left outside + // for nicer sticky behaviour + const items = [] + let group + questions.forEach( (q, index) => { + const groupText = q.metadata && q.metadata.group + const nextQuestion = questions[index+1] + const nextHasGroup = nextQuestion && nextQuestion.metadata && nextQuestion.metadata.group + const isLast = index === questions.length - 1 + if (groupText) { + group = { + text: groupText, + questions: [], + __typename: 'QuestionGroup' } -Sie haben Ihre Antworten anonymisiert und können daher nicht noch einmal teilnehmen.
- :{t('questionnaire/header', { questionCount, userAnswerCount })}
- } - { (updating || submitting) && -Melden Sie sich an, um an der Umfrage teilzunehmen und live zu sehen, wo Sie im Vergleich zu allen anderen stehen. Sie können Ihre Antworten jederzeit anonymisieren.
+Das erste Mal hier? Starten Sie am besten gleich ein kostenloses Probeabo für 14 Tage.
+Jetzt gerade nicht? Resultate anzeigen.
+ } +{i.text}
+ { + i.questions.map(q => elementForQuestion(q)) + } +{errorToString(error)}
+ } +Sie haben Ihre Antworten anonymisiert und können daher nicht noch einmal teilnehmen.
+ :{t('questionnaire/header', { questionCount, userAnswerCount })}
+ } + { (updating || submitting) && +Wenn Sie möchten, können Sie Ihre Antworten anonymisieren. Diese bleiben zwar in unserer Datenbank erhalten, aber wir vergessen, dass sie von Ihnen stammen. Wir können Ihnen danach nicht mehr anzeigen, was Sie geantwortet haben, und Sie können keine Antworten mehr abgeben.
- -Wenn Sie möchten, können Sie Ihre Antworten anonymisieren. Diese bleiben zwar in unserer Datenbank erhalten, aber wir vergessen, dass sie von Ihnen stammen. Wir können Ihnen danach nicht mehr anzeigen, was Sie geantwortet haben, und Sie können keine Antworten mehr abgeben.
+ +