From a67f1197d59969ff60a22fc744ac547b739b8ff4 Mon Sep 17 00:00:00 2001 From: Quentin Ruhier <99256289+QRuhier@users.noreply.github.com> Date: Tue, 16 Jul 2024 16:18:18 +0200 Subject: [PATCH] refactor: migrate to vite + new VTL editor (#776) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * build: init migration to vite - update react to 18 - migrate to vite * replace .js with .jsx in src/auth * Switch to oidc-sap library * .js 2 .jsx + replace absolute paths with relative paths * Migrate to vite & fix import issues * set .env file to VITE_ * replace getToken with oidc.getTokens().accessToken * remove sonar bugs * remove medium severity code smells * update relative paths in spec.js files * Switch to oidc-sap library * .js 2 .jsx + replace absolute paths with relative paths * Remove fake server and fix oidc * Better oidcProvider work with oidc / none * lower vitest errors * fix: finalize rebasing on suggesters * build: init migration to vite - update react to 18 - migrate to vite * replace .js with .jsx in src/auth * Switch to oidc-sap library * .js 2 .jsx + replace absolute paths with relative paths * Migrate to vite & fix import issues * set .env file to VITE_ * replace getToken with oidc.getTokens().accessToken * remove sonar bugs * remove medium severity code smells * update relative paths in spec.js files * Switch to oidc-sap library * .js 2 .jsx + replace absolute paths with relative paths * Remove fake server and fix oidc * Better oidcProvider work with oidc / none * lower vitest errors * fix: finalize rebasing on suggesters * rename remaining .js files into .jsx * move token calculation to container * restore token in components with oidc * manage oidc provider in tests * update node-version for tests * add vitest imports * update setupTests.ts address from relative to absolute * add a replacement for dirname in vite.config * try help test to find setupTests.ts * restore failing tests to the branch * remove nested filter * fix init component weight * split component-new-edit * roundabout : add component * feat : form to state and back * save and back * validate roundabout form * remove duplicate code * fix sonar issues * simplify Pogues model for roundabout * remove partial and complete + restore redirections call * show tab redirections depending on redicretionNeeeded * bump version * add scope for collected variables depending on roundabout * fix roundabout model * fix: eslint config * remove nested filter * fix init component weight * split component-new-edit * roundabout : add component * feat : form to state and back * save and back * validate roundabout form * remove duplicate code * fix sonar issues * simplify Pogues model for roundabout * remove partial and complete + restore redirections call * show tab redirections depending on redicretionNeeeded * bump version * add scope for collected variables depending on roundabout * fix roundabout model * fix: bring back rich editor for xpath * feat: add new vtl editor * fix: add global to vite config * deps: upgrade redux-form * fix: revert md-vtl parser * style : remove margin on vtl editor * fix: response format table * fix: don't display vtl error when field is empty * fix declaration mode in roundabout * fix: vtl-editor style * fix: font & icons import * fix: reducer with authType * fix: forwardRef error * fix: dnd type import * fix: eslint errors * deps: add test dependencies * fix: add authType reducer * fix: remove duplicate snapshot file * fix : add token to visualizeDropdown props * test: fix visualizeDropdown tests * fix : add token to StatisticalContextCriteria props * test: fix StatisticalContextCriteria tests * fix : get token in SearchCodesLists * test: fix SearchCodesLists tests * fix: add token to InputFilterWithCriteria props * test : fix InputFilterWithCriteria tests * test : fix ResponseFormatSimple tests * test: fix QuestionnaireNav tests * test : skip not working tests * test: skip not working test * fix: vite config for test * fix: after merge from main * fix : visualizeDropdown test & import * test: add script for test with coverage * ci : fix test with coverage * ci : fix path for build -> dist * fix: coverage config * fix: imports * remove env * fix: initialize auth * fix: missing stamp on questionnaires list * fix: VTL editor tools (syntax colorization...) * fix: auth for deleting questionnaire --------- Co-authored-by: Laurent Caouissin Co-authored-by: Bulot François Co-authored-by: Bulot François Co-authored-by: BulotF --- .env | 20 +- .eslintrc.yaml | 23 +- .github/workflows/ci.yaml | 8 +- .github/workflows/test.yaml | 6 +- .gitignore | 1 + .../remote-apis/configuration.md | 2 +- .../remote-apis/configuration.md | 2 +- fake-server/.eslintrc | 14 - fake-server/campaigns.js | 310 - fake-server/codes-lists-ref-infos.js | 82 - fake-server/init.js | 4 - fake-server/operations.js | 156 - fake-server/published.json | 1 - fake-server/questionnaires-ref-infos.js | 92 - fake-server/questionnaires.js | 5814 ---------------- fake-server/repo.json | 48 - fake-server/series.js | 79 - fake-server/server.js | 249 - fake-server/stamps.js | 10 - fake-server/test.odt | Bin 8074 -> 0 bytes fake-server/test.pdf | Bin 65582 -> 0 bytes fake-server/test.xml | 1 - fake-server/units.js | 82 - public/index.html => index.html | 9 +- jison/fixParser.js | 13 +- jsconfig.json | 5 - package.json | 54 +- {src => public}/fonts/FontAwesome.otf | Bin .../glyphicons-halflings-regular.eot | Bin .../glyphicons-halflings-regular.svg | 0 .../glyphicons-halflings-regular.ttf | Bin .../glyphicons-halflings-regular.woff | Bin .../glyphicons-halflings-regular.woff2 | Bin {src => public}/fonts/fontawesome-webfont.eot | Bin {src => public}/fonts/fontawesome-webfont.svg | 0 {src => public}/fonts/fontawesome-webfont.ttf | Bin .../fonts/fontawesome-webfont.woff | Bin .../fonts/fontawesome-webfont.woff2 | Bin public/oidc.json | 4 +- public/silent-sso.html | 9 + scripts/generate-entrypoint.js | 13 +- ...mponent-insert.js => component-insert.jsx} | 0 .../{component-move.js => component-move.jsx} | 0 ...mponent-remove.js => component-remove.jsx} | 0 ...mponent-update.js => component-update.jsx} | 0 ...actionComponent.js => actionComponent.jsx} | 2 +- ...onent.spec.js => actionComponent.spec.jsx} | 5 +- src/actions/{app-state.js => app-state.jsx} | 8 +- .../{app-state.spec.js => app-state.spec.jsx} | 29 +- ...mponent-insert.js => component-insert.jsx} | 12 +- ...sert.spec.js => component-insert.spec.jsx} | 3 +- .../{component-move.js => component-move.jsx} | 9 +- ...t-move.spec.js => component-move.spec.jsx} | 5 +- ...mponent-remove.js => component-remove.jsx} | 12 +- ...move.spec.js => component-remove.spec.jsx} | 3 +- ...mponent-update.js => component-update.jsx} | 4 +- ...date.spec.js => component-update.spec.jsx} | 39 +- src/actions/{component.js => component.jsx} | 4 +- .../{component.spec.js => component.spec.jsx} | 11 +- src/actions/{errors.js => errors.jsx} | 0 ...ionnaire.js => external-questionnaire.jsx} | 0 src/actions/{general.js => general.jsx} | 0 src/actions/{metadata.js => metadata.jsx} | 2 +- .../{metadata.spec.js => metadata.spec.jsx} | 5 +- ...onnaire-list.js => questionnaire-list.jsx} | 4 +- .../{questionnaire.js => questionnaire.jsx} | 14 +- src/actions/{search.js => search.jsx} | 2 +- src/auth/hoc/component.js | 12 - src/auth/hoc/component.jsx | 16 + src/auth/hoc/container.js | 9 - src/auth/hoc/hoc.js | 7 - src/auth/hoc/hoc.jsx | 6 + src/auth/hoc/{index.js => index.jsx} | 0 src/auth/index.js | 2 - src/auth/index.jsx | 1 + src/auth/provider/component.js | 14 - src/auth/provider/none.js | 5 - src/auth/provider/oidc.js | 36 - .../{dictionary.js => dictionary.jsx} | 2 +- .../{dom-constants.js => dom-constants.jsx} | 0 ...gues-constants.js => pogues-constants.jsx} | 0 .../generic-option.spec.jsx.snap | 10 + .../components/control-with-suggestions.jsx | 23 +- ...ls.js => input-with-suggestions-utils.jsx} | 0 ... => input-with-suggestions-utils.spec.jsx} | 5 +- .../components/input-with-suggestions.jsx | 4 +- ...pec.js => input-with-suggestions.spec.jsx} | 7 +- .../components/rich-editor.jsx | 2 +- .../rich-textarea-with-suggestions.jsx | 18 +- .../components/simple-editor.jsx | 2 +- .../components/textarea-with-suggestions.jsx | 4 +- ....js => textarea-with-suggestions.spec.jsx} | 7 +- .../components/{utils.js => utils.jsx} | 47 +- .../{utils.spec.js => utils.spec.jsx} | 1 + .../components/vtl-editor.js | 90 - .../components/vtl-editor.jsx | 100 + .../components/vtl-suggestions.js | 1595 ----- .../control-with-suggestions-container.jsx | 2 +- .../{index.js => index.jsx} | 0 ...option.spec.js => generic-option.spec.jsx} | 1 + .../{index.js => index.jsx} | 0 ...-utils.js => input-autocomplete-utils.jsx} | 0 ...c.js => input-autocomplete-utils.spec.jsx} | 8 +- .../input-autocomplete/input-autocomplete.jsx | 9 +- ...te.spec.js => input-autocomplete.spec.jsx} | 9 +- src/forms/controls/input.jsx | 4 +- .../{input.spec.js => input.spec.jsx} | 7 +- src/forms/controls/list-checkboxes.jsx | 4 +- ...boxes.spec.js => list-checkboxes.spec.jsx} | 11 +- src/forms/controls/list-radios.jsx | 7 +- ...rators.js => rich-textarea-decorators.jsx} | 2 +- .../rich-textarea/hoc/with-conditions.jsx | 4 +- .../rich-textarea/{index.js => index.jsx} | 0 ...-vtl-parser.js => markdown-vtl-parser.jsx} | 12 + ...own-vtl.js => state-from-markdown-vtl.jsx} | 0 ...kdown-vtl.js => state-to-markdown-vtl.jsx} | 0 ...fig.js => rich-textarea-toobar-config.jsx} | 0 .../controls/rich-textarea/ui/button-wrap.jsx | 2 +- .../controls/rich-textarea/ui/icon-button.jsx | 8 +- .../ui/input-condition-popover.jsx | 23 +- ...tarea-utils.js => rich-textarea-utils.jsx} | 0 src/forms/controls/select.jsx | 7 +- .../{select.spec.js => select.spec.jsx} | 7 +- src/forms/controls/textarea.jsx | 4 +- .../{textarea.spec.js => textarea.spec.jsx} | 5 +- src/forms/controls/tree-select.jsx | 2 +- ...rmalize-inputs.js => normalize-inputs.jsx} | 2 +- ...puts.spec.js => normalize-inputs.spec.jsx} | 3 +- ...lidation-rules.js => validation-rules.jsx} | 8 +- ...ules.spec.js => validation-rules.spec.jsx} | 27 +- ...les.js => with-current-form-variables.jsx} | 4 +- ...alidation.js => with-error-validation.jsx} | 0 ...alidation.js => with-xpath-validation.jsx} | 0 src/{index.js => index.jsx} | 21 +- src/layout/app/components/app.jsx | 22 +- src/layout/app/containers/app-container.js | 27 - src/layout/app/containers/app-container.jsx | 9 + src/layout/app/index.js | 1 - src/layout/app/index.jsx | 1 + .../components/component-edit.jsx | 8 +- ...tainer.js => component-edit-container.jsx} | 4 +- .../component-edit/{index.js => index.jsx} | 0 .../components/component-new.jsx | 3 +- ...ntainer.js => component-new-container.jsx} | 6 +- .../component-new/{index.js => index.jsx} | 0 src/layout/confirm-dialog/confirm-dialog.jsx | 2 +- .../confirm-dialog/{index.js => index.jsx} | 0 .../connected-widget/select-metadata.jsx | 4 +- .../components/duplicate-variables.jsx | 2 +- ...r.js => duplicate-variables-container.jsx} | 0 .../{index.js => index.jsx} | 0 ...utils.js => duplicate-variables-utils.jsx} | 2 +- .../errors-integrity/errors-integrity.jsx | 4 +- .../errors-integrity/{index.js => index.jsx} | 0 .../components/generic-input.jsx | 20 +- ...ntainer.js => generic-input-container.jsx} | 6 +- .../generic-input/{index.js => index.jsx} | 0 src/layout/header/header.jsx | 10 +- .../{header.spec.js => header.spec.jsx} | 11 +- .../loader/{component.js => component.jsx} | 0 src/layout/loader/index.js | 1 - .../index.js => layout/loader/index.jsx} | 0 src/layout/page-home/components/page-home.jsx | 13 +- ...e-container.js => page-home-container.jsx} | 2 +- src/layout/page-home/{index.js => index.jsx} | 0 .../components/page-questionnaire.jsx | 20 +- ...re.spec.js => page-questionnaire.spec.jsx} | 100 +- ...er.js => page-questionnaire-container.jsx} | 42 +- .../{index.js => index.jsx} | 0 .../components/page-search-questionnaire.jsx | 17 +- .../containers/criteria.jsx | 5 +- .../page-search-questionnaire-container.jsx | 2 +- .../{index.js => index.jsx} | 0 .../components/questionnaire-composition.jsx | 4 +- ...> questionnaire-composition-container.jsx} | 0 .../{index.js => index.jsx} | 0 .../components/questionnaire-edit.jsx | 8 +- ...er.js => questionnaire-edit-container.jsx} | 4 +- .../{index.js => index.jsx} | 0 .../components/questionnaire-errors.jsx | 4 +- ....js => questionnaire-errors-container.jsx} | 2 +- .../{index.js => index.jsx} | 0 .../__snapshots__/drop-zone.spec.jsx.snap | 15 +- .../components/drop-zone/drop-zone.jsx | 2 +- .../components/drop-zone/drop-zone.spec.jsx | 1 + .../components/questionnaire-component.jsx | 26 +- .../questionnaire-list-components.jsx | 46 +- ...estionnaire-list-components-container.jsx} | 21 +- .../{index.js => index.jsx} | 0 .../components/questionnaire-list-item.jsx | 8 +- .../components/questionnaire-list.jsx | 27 +- ...st.spec.js => questionnaire-list.spec.jsx} | 22 +- ...er.js => questionnaire-list-container.jsx} | 26 +- .../{index.js => index.jsx} | 0 .../components/questionnaire-merge.jsx | 4 +- ...r.js => questionnaire-merge-container.jsx} | 0 .../{index.js => index.jsx} | 0 .../components/arbo-simplifield.jsx | 2 +- ...ield.spec.js => arbo-simplifield.spec.jsx} | 8 +- .../questionnaire-nav/components/nav-loop.jsx | 6 +- .../components/questionnaire-nav.jsx | 4 +- .../components/questionnaire-nav.spec.js | 38 - .../components/questionnaire-nav.spec.jsx | 43 + ...ner.js => questionnaire-nav-container.jsx} | 4 +- .../questionnaire-nav/{index.js => index.jsx} | 0 .../components/questionnaire-new.jsx | 13 +- .../questionnaire-new-container.jsx | 7 +- .../questionnaire-new/{index.js => index.jsx} | 0 .../questionnaire-tcm-composition.jsx | 4 +- ...estionnaire-tcm-composition-container.jsx} | 0 .../{index.js => index.jsx} | 0 .../user/components/user-connection.jsx | 32 +- src/layout/user/user-connection-container.jsx | 10 - src/layout/user/user-connection.spec.js | 59 - .../{codes-list.js => codes-list.jsx} | 2 +- ...ed-variable.js => calculated-variable.jsx} | 2 +- ...ted-variable.js => collected-variable.jsx} | 2 +- .../__mocks__/{control.js => control.jsx} | 0 .../{declaration.js => declaration.jsx} | 0 ...rnal-variable.js => external-variable.jsx} | 2 +- .../{redirection.js => redirection.jsx} | 0 ...ed-variable.js => calculated-variable.jsx} | 4 +- ...e.spec.js => calculated-variable.spec.jsx} | 5 +- ...ted-variable.js => collected-variable.jsx} | 6 +- .../{component.js => component.jsx} | 4 +- .../{control.js => control.jsx} | 2 +- .../{control.spec.js => control.spec.jsx} | 7 +- .../{declaration.js => declaration.jsx} | 2 +- ...claration.spec.js => declaration.spec.jsx} | 12 +- ...rnal-variable.js => external-variable.jsx} | 4 +- ...ble.spec.js => external-variable.spec.jsx} | 7 +- .../{filter-nested.js => filter-nested.jsx} | 2 +- .../{redirection.js => redirection.jsx} | 2 +- ...direction.spec.js => redirection.spec.jsx} | 7 +- ...ltiple.js => response-format-multiple.jsx} | 22 +- ...pairing.js => response-format-pairing.jsx} | 16 +- ...t-simple.js => response-format-simple.jsx} | 2 +- ...t-single.js => response-format-single.jsx} | 16 +- ...mat-table.js => response-format-table.jsx} | 32 +- ...response-format.js => response-format.jsx} | 2 +- .../{typage.js => typage.jsx} | 2 +- src/model/{index.js => index.jsx} | 0 ...mote-to-stores.js => remote-to-stores.jsx} | 4 +- ...ores.spec.js => remote-to-stores.spec.jsx} | 1 + ...ed-variable.js => calculated-variable.jsx} | 4 +- ...e.spec.js => calculated-variable.spec.jsx} | 6 +- .../{codes-list.js => codes-list.jsx} | 2 +- ...codes-list.spec.js => codes-list.spec.jsx} | 3 +- ...ted-variable.js => collected-variable.jsx} | 4 +- ...le.spec.js => collected-variable.spec.jsx} | 3 +- .../{component.js => component.jsx} | 4 +- .../{component.spec.js => component.spec.jsx} | 3 +- .../{control.js => control.jsx} | 2 +- .../{control.spec.js => control.spec.jsx} | 1 + .../{declaration.js => declaration.jsx} | 2 +- ...claration.spec.js => declaration.spec.jsx} | 3 +- .../{dimension.js => dimension.jsx} | 2 +- .../{dimension.spec.js => dimension.spec.jsx} | 7 +- ...rnal-variable.js => external-variable.jsx} | 4 +- ...ble.spec.js => external-variable.spec.jsx} | 1 + .../transformations/{loop.js => loop.jsx} | 4 +- .../{loop.spec.js => loop.spec.jsx} | 1 + .../{questionnaire.js => questionnaire.jsx} | 10 +- ...onnaire.spec.js => questionnaire.spec.jsx} | 3 +- ...ion-filters.js => redirection-filters.jsx} | 2 +- .../{redirection.js => redirection.jsx} | 2 +- ...direction.spec.js => redirection.spec.jsx} | 1 + ...ltiple.js => response-format-multiple.jsx} | 2 +- ...c.js => response-format-multiple.spec.jsx} | 3 +- ...pairing.js => response-format-pairing.jsx} | 2 +- ...t-simple.js => response-format-simple.jsx} | 2 +- ...pec.js => response-format-simple.spec.jsx} | 11 +- ...t-single.js => response-format-single.jsx} | 2 +- ...pec.js => response-format-single.spec.jsx} | 1 + ...mat-table.js => response-format-table.jsx} | 6 +- ...spec.js => response-format-table.spec.jsx} | 1 + ...response-format.js => response-format.jsx} | 2 +- ...ormat.spec.js => response-format.spec.jsx} | 28 +- .../{response.js => response.jsx} | 4 +- .../{response.spec.js => response.spec.jsx} | 7 +- .../{responses.js => responses.jsx} | 2 +- .../{responses.spec.js => responses.spec.jsx} | 3 +- ... => active-calculated-variables-by-id.jsx} | 6 +- ...ctive-calculated-variables-by-id.spec.jsx} | 5 +- ...s-by-id.js => active-code-lists-by-id.jsx} | 9 +- ...ec.js => active-code-lists-by-id.spec.jsx} | 5 +- ...s-by-id.js => active-components-by-id.jsx} | 9 +- ...ec.js => active-components-by-id.spec.jsx} | 4 +- ...js => active-external-variables-by-id.jsx} | 6 +- ... active-external-variables-by-id.spec.jsx} | 5 +- .../app-state/{app-state.js => app-state.jsx} | 22 +- .../{app-state.spec.js => app-state.spec.jsx} | 7 +- ....js => collected-variable-by-question.jsx} | 6 +- ...> collected-variable-by-question.spec.jsx} | 13 +- ...tion-tab.js => errors-by-question-tab.jsx} | 8 +- .../{form-utils.js => form-utils.jsx} | 0 ...s => invalid-items-by-active-question.jsx} | 4 +- ...nvalid-items-by-active-questions.spec.jsx} | 15 +- src/reducers/auth-type.jsx | 5 + ... calculated-variable-by-questionnaire.jsx} | 8 +- ...ulated-variable-by-questionnaire.spec.jsx} | 15 +- ...aire.js => code-list-by-questionnaire.jsx} | 8 +- ...js => code-list-by-questionnaire.spec.jsx} | 15 +- ...> collected-variable-by-questionnaire.jsx} | 8 +- ...lected-variable-by-questionnaire.spec.jsx} | 15 +- ...aire.js => component-by-questionnaire.jsx} | 8 +- ...js => component-by-questionnaire.spec.jsx} | 11 +- .../{dictionary.js => dictionary.jsx} | 2 +- ...dictionary.spec.js => dictionary.spec.jsx} | 1 + ...y-component.js => errors-by-component.jsx} | 4 +- ...rors-integrity.js => errors-integrity.jsx} | 4 +- ...rity.spec.js => errors-integrity.spec.jsx} | 3 +- ...ation.js => errors-subform-validation.jsx} | 4 +- ...rs-validation.js => errors-validation.jsx} | 4 +- ...ualization.js => errors-visualization.jsx} | 4 +- ....spec.js => errors-visualization.spec.jsx} | 3 +- src/reducers/errors/{errors.js => errors.jsx} | 0 ...=> external-variable-by-questionnaire.jsx} | 8 +- ...ternal-variable-by-questionnaire.spec.jsx} | 15 +- src/reducers/{general.js => general.jsx} | 4 +- src/reducers/index.js | 43 - src/reducers/index.jsx | 41 + ...tadata-by-type.js => metadata-by-type.jsx} | 4 +- ...naire-by-id.js => questionnaire-by-id.jsx} | 6 +- ...d.spec.js => questionnaire-by-id.spec.jsx} | 11 +- ...-by-id.js => questionnaire-list-by-id.jsx} | 4 +- ...c.js => questionnaire-list-by-id.spec.jsx} | 5 +- ...esult-by-id.js => search-result-by-id.jsx} | 4 +- ...d.spec.js => search-result-by-id.spec.jsx} | 11 +- src/reducers/selectors/index.js | 1 - src/reducers/selectors/user.js | 32 - src/router.jsx | 45 +- src/scss/_global.scss | 12 +- .../inc/controls/_ctrl-with-suggestions.scss | 1 - src/{setupTests.js => setupTests.ts} | 0 ...configure-store.js => configure-store.jsx} | 2 +- ...s-lists-utils.js => codes-lists-utils.jsx} | 2 +- ...s-lists-utils.js => codes-lists-utils.jsx} | 2 +- ...ils.spec.js => codes-lists-utils.spec.jsx} | 23 +- ...component-utils.js => component-utils.jsx} | 0 ...utils.js => component-dragndrop-utils.jsx} | 2 +- ....js => component-dragndrop-utils.spec.jsx} | 5 +- ...t-dragndrop.js => component-dragndrop.jsx} | 0 ...p.spec.js => component-dragndrop.spec.jsx} | 7 +- ...component-utils.js => component-utils.jsx} | 6 +- ...utils.spec.js => component-utils.spec.jsx} | 13 +- ...input-utils.js => generic-input-utils.jsx} | 2 +- ...s.spec.js => generic-input-utils.spec.jsx} | 7 +- .../{dictionary.js => dictionary.jsx} | 2 +- ...dictionary.spec.js => dictionary.spec.jsx} | 0 src/utils/env.js | 2 - src/utils/env.jsx | 2 + ...rgets.js => checker-component-targets.jsx} | 4 +- ...n-mode.js => checker-declaration-mode.jsx} | 4 +- ...c.js => checker-declaration-mode.spec.jsx} | 3 +- ...-target.js => checker-existing-target.jsx} | 4 +- ...ec.js => checker-existing-target.spec.jsx} | 3 +- ...th.js => checker-questionnaire-length.jsx} | 5 +- ...hecker-unique-collected-variable-name.jsx} | 6 +- ...e.js => checker-unique-component-name.jsx} | 7 +- ...=> checker-unique-component-name.spec.jsx} | 3 +- .../integrity/{checkers.js => checkers.jsx} | 9 +- ...mbine-checkers.js => combine-checkers.jsx} | 0 ...grity-checker.js => integrity-checker.jsx} | 0 src/utils/integrity/{utils.js => utils.jsx} | 2 +- .../{utils.spec.js => utils.spec.jsx} | 1 + src/utils/logger/{logger.js => logger.jsx} | 4 +- .../{logger.spec.js => logger.spec.jsx} | 2 +- .../{questionnaires.js => questionnaires.jsx} | 30 +- ...ctions-utils.js => redirections-utils.jsx} | 0 ...ctions-utils.js => redirections-utils.jsx} | 2 +- ...ls.spec.js => redirections-utils.spec.jsx} | 5 +- ...nfiguration.js => build-configuration.jsx} | 2 +- src/utils/oidc/index.jsx | 24 + src/utils/oidc/useAuth.jsx | 19 + ...proptypes-utils.js => proptypes-utils.jsx} | 0 ...ndler.spec.js => actions-handler.spec.jsx} | 1 + ...tions-handlers.js => actions-handlers.jsx} | 0 src/utils/{remote-api.js => remote-api.jsx} | 6 +- src/utils/test/test-utils.jsx | 4 +- src/utils/{utils.js => utils.jsx} | 21 - src/utils/{utils.spec.js => utils.spec.jsx} | 1 + .../validation/{validate.js => validate.jsx} | 2 +- ...lidation-rules.js => validation-rules.jsx} | 6 +- ...lidation-utils.js => validation-utils.jsx} | 0 ...tils.spec.js => validation-utils.spec.jsx} | 11 +- ...utils.js => collected-variables-utils.jsx} | 8 +- ....js => collected-variables-utils.spec.jsx} | 3 +- ...variables-utils.js => variables-utils.jsx} | 2 +- ...utils.spec.js => variables-utils.spec.jsx} | 5 +- src/utils/{version.js => version.jsx} | 0 .../{widget-utils.js => widget-utils.jsx} | 0 ...et-utils.spec.js => widget-utils.spec.jsx} | 3 +- .../components/associated-fields.jsx | 8 +- ...ner.js => associated-fields-container.jsx} | 4 +- .../associated-fields/{index.js => index.jsx} | 0 .../components/codes-lists-actions.jsx | 6 +- .../components/codes-lists-codes.jsx | 13 +- ...des.spec.js => codes-lists-codes.spec.jsx} | 17 +- .../components/codes-lists-input-code.jsx | 12 +- .../codes-lists/components/codes-lists.jsx | 22 +- ...des-lists.spec.js => codes-lists.spec.jsx} | 10 +- ...suggester-lists.js => suggester-lists.jsx} | 18 +- .../codes-lists/components/upload-csv.jsx | 4 +- .../{constants.js => constants.jsx} | 0 .../containers/codes-lists-container.jsx | 6 +- .../codes-lists-input-code-container.jsx | 2 +- ...ainer.js => suggester-lists-container.jsx} | 16 +- .../codes-lists/{index.js => index.jsx} | 0 .../utils/__mocks__/{codes.js => codes.jsx} | 0 .../utils/{actions.js => actions.jsx} | 0 .../utils/{movement.js => movement.jsx} | 2 +- .../{movement.spec.js => movement.spec.jsx} | 3 +- .../codes-lists/utils/{utils.js => utils.jsx} | 2 +- .../utils/{validation.js => validation.jsx} | 21 +- .../components/component-new-edit.jsx | 2 - .../components/controls.jsx | 18 +- .../components/declarations.jsx | 20 +- .../components/redirections.jsx | 19 +- .../multiple/multiple-measure-codeslist.jsx | 10 +- .../multiple/multiple-measure.jsx | 9 +- .../multiple/multiple-primary.jsx | 4 +- .../multiple/response-format-multiple.jsx | 4 +- .../response-format/response-format.jsx | 9 +- .../__snapshots__/simple-text.spec.jsx.snap | 187 + .../simple/response-format-simple.jsx | 9 +- .../response-format/simple/simple-date.jsx | 10 +- .../response-format/simple/simple-duree.jsx | 10 +- .../response-format/simple/simple-numeric.jsx | 8 +- .../response-format/simple/simple-text.jsx | 6 +- ...mple-text.spec.js => simple-text.spec.jsx} | 3 +- .../single/response-format-single.jsx | 16 +- .../response-format/table/input-measure.jsx | 10 +- .../table/response-format-table.jsx | 4 +- .../table/table-list-measures.jsx | 8 +- .../response-format/table/table-measure.jsx | 2 +- .../table/table-primary-codeslist.jsx | 4 +- .../table/table-primary-list.jsx | 6 +- .../response-format/table/table-primary.jsx | 9 +- .../table/table-secondary-optional.jsx | 2 +- .../response-format/table/table-secondary.jsx | 6 +- .../variables/calculated-variables.jsx | 26 +- .../variables/collected-variables.jsx | 37 +- .../variables/external-variables.jsx | 24 +- .../{utils-loops.js => utils-loops.jsx} | 2 +- ...er.js => component-new-edit-container.jsx} | 4 +- ...it-form.js => component-new-edit-form.jsx} | 2 +- .../collected-variables-container.jsx | 7 +- .../{index.js => index.jsx} | 0 ...-utils.js => component-new-edit-utils.jsx} | 0 ...c.js => component-new-edit-utils.spec.jsx} | 1 + .../component-with-validation.jsx | 4 +- .../{index.js => index.jsx} | 0 .../dropdown/{component.js => component.jsx} | 2 +- src/widgets/dropdown/{index.js => index.jsx} | 0 .../errors-panel/components/errors-panel.jsx | 2 +- ...ontainer.js => errors-panel-container.jsx} | 0 .../errors-panel/{index.js => index.jsx} | 0 .../external-questionnaire-dropdown.jsx | 2 +- ...rnal-questionnaire-dropdown-container.jsx} | 0 .../{index.js => index.jsx} | 0 .../goto-input/components/goto-input.jsx | 8 +- ...-container.js => goto-input-container.jsx} | 2 +- .../goto-input/{index.js => index.jsx} | 0 ...to-input-utils.js => goto-input-utils.jsx} | 2 +- ...ghlighter.spec.js => highlighter.spec.jsx} | 3 +- .../highlighter/{index.js => index.jsx} | 0 .../components/input-filter-with-criteria.jsx | 12 +- .../input-filter-with-criteria.spec.js | 75 - .../input-filter-with-criteria.spec.jsx | 112 + ... input-filter-with-criteria-container.jsx} | 8 +- .../{index.js => index.jsx} | 0 .../components/list-with-input-panel-item.jsx | 2 +- ...js => list-with-input-panel-item.spec.jsx} | 10 +- .../components/list-with-input-panel-list.jsx | 6 +- ...js => list-with-input-panel-list.spec.jsx} | 20 +- .../components/list-with-input-panel.jsx | 8 +- ...spec.js => list-with-input-panel.spec.jsx} | 10 +- ...js => list-with-input-panel-container.jsx} | 2 +- .../{index.js => index.jsx} | 0 .../utils/{actions.js => actions.jsx} | 0 .../utils/{test-utils.js => test-utils.jsx} | 0 .../components/optional-view.jsx | 8 +- ...ntainer.js => optional-view-container.jsx} | 2 +- .../optional-view/{index.js => index.jsx} | 0 .../components/questionnaire-new-edit.jsx | 41 +- .../questionnaire-new-edit-form.jsx | 2 +- .../{index.js => index.jsx} | 0 .../{questionnaire.js => questionnaire.jsx} | 2 +- .../{index.js => index.jsx} | 0 .../search-codes-lists/search-codes-lists.jsx | 21 +- ...ts.spec.js => search-codes-lists.spec.jsx} | 44 +- .../components/search-results.jsx | 4 +- ...esults.spec.js => search-results.spec.jsx} | 15 +- ...tainer.js => search-results-container.jsx} | 2 +- .../search-results/{index.js => index.jsx} | 0 .../selector-view-view.spec.jsx.snap | 12 + .../__snapshots__/selector-view.spec.jsx.snap | 99 + ...ew.spec.js => selector-view-view.spec.jsx} | 1 + .../components/selector-view.jsx | 6 +- ...or-view.spec.js => selector-view.spec.jsx} | 5 +- ...ntainer.js => selector-view-container.jsx} | 4 +- .../selector-view/{index.js => index.jsx} | 0 .../statistical-context-criteria.jsx | 23 +- .../statistical-context-criteria.spec.js | 244 - .../statistical-context-criteria.spec.jsx | 300 + ...ia.js => statistical-context-criteria.jsx} | 29 +- .../{index.js => index.jsx} | 1 - .../__snapshots__/tab.spec.jsx.snap | 11 + .../components/{tab.spec.js => tab.spec.jsx} | 1 + src/widgets/tabs/components/tabs.jsx | 2 +- .../{tabs-container.js => tabs-container.jsx} | 2 +- src/widgets/tabs/{index.js => index.jsx} | 0 .../visualize-dropdown.spec.js.snap | 268 - .../visualize-dropdown.spec.jsx.snap | 245 + .../components/visualize-dropdown.jsx | 14 +- ...er.js => visualize-dropdown-container.jsx} | 6 +- .../{index.js => index.jsx} | 0 .../visualize-dropdown.spec.js | 78 - .../visualize-dropdown.spec.jsx | 99 + vite.config.js | 24 + yarn.lock | 6074 +++++++++++------ 522 files changed, 7091 insertions(+), 12959 deletions(-) delete mode 100644 fake-server/.eslintrc delete mode 100644 fake-server/campaigns.js delete mode 100644 fake-server/codes-lists-ref-infos.js delete mode 100644 fake-server/init.js delete mode 100644 fake-server/operations.js delete mode 100644 fake-server/published.json delete mode 100644 fake-server/questionnaires-ref-infos.js delete mode 100644 fake-server/questionnaires.js delete mode 100644 fake-server/repo.json delete mode 100644 fake-server/series.js delete mode 100644 fake-server/server.js delete mode 100644 fake-server/stamps.js delete mode 100644 fake-server/test.odt delete mode 100644 fake-server/test.pdf delete mode 100644 fake-server/test.xml delete mode 100644 fake-server/units.js rename public/index.html => index.html (85%) delete mode 100644 jsconfig.json rename {src => public}/fonts/FontAwesome.otf (100%) rename {src => public}/fonts/bootstrap/glyphicons-halflings-regular.eot (100%) rename {src => public}/fonts/bootstrap/glyphicons-halflings-regular.svg (100%) rename {src => public}/fonts/bootstrap/glyphicons-halflings-regular.ttf (100%) rename {src => public}/fonts/bootstrap/glyphicons-halflings-regular.woff (100%) rename {src => public}/fonts/bootstrap/glyphicons-halflings-regular.woff2 (100%) rename {src => public}/fonts/fontawesome-webfont.eot (100%) rename {src => public}/fonts/fontawesome-webfont.svg (100%) rename {src => public}/fonts/fontawesome-webfont.ttf (100%) rename {src => public}/fonts/fontawesome-webfont.woff (100%) rename {src => public}/fonts/fontawesome-webfont.woff2 (100%) create mode 100644 public/silent-sso.html rename src/actions/__mocks__/{component-insert.js => component-insert.jsx} (100%) rename src/actions/__mocks__/{component-move.js => component-move.jsx} (100%) rename src/actions/__mocks__/{component-remove.js => component-remove.jsx} (100%) rename src/actions/__mocks__/{component-update.js => component-update.jsx} (100%) rename src/actions/{actionComponent.js => actionComponent.jsx} (98%) rename src/actions/{actionComponent.spec.js => actionComponent.spec.jsx} (95%) rename src/actions/{app-state.js => app-state.jsx} (98%) mode change 100755 => 100644 rename src/actions/{app-state.spec.js => app-state.spec.jsx} (98%) rename src/actions/{component-insert.js => component-insert.jsx} (97%) rename src/actions/{component-insert.spec.js => component-insert.spec.jsx} (99%) rename src/actions/{component-move.js => component-move.jsx} (96%) rename src/actions/{component-move.spec.js => component-move.spec.jsx} (99%) rename src/actions/{component-remove.js => component-remove.jsx} (98%) rename src/actions/{component-remove.spec.js => component-remove.spec.jsx} (99%) rename src/actions/{component-update.js => component-update.jsx} (95%) rename src/actions/{component-update.spec.js => component-update.spec.jsx} (70%) rename src/actions/{component.js => component.jsx} (99%) rename src/actions/{component.spec.js => component.spec.jsx} (98%) rename src/actions/{errors.js => errors.jsx} (100%) rename src/actions/{external-questionnaire.js => external-questionnaire.jsx} (100%) rename src/actions/{general.js => general.jsx} (100%) rename src/actions/{metadata.js => metadata.jsx} (99%) rename src/actions/{metadata.spec.js => metadata.spec.jsx} (84%) rename src/actions/{questionnaire-list.js => questionnaire-list.jsx} (93%) rename src/actions/{questionnaire.js => questionnaire.jsx} (97%) rename src/actions/{search.js => search.jsx} (97%) delete mode 100644 src/auth/hoc/component.js create mode 100644 src/auth/hoc/component.jsx delete mode 100644 src/auth/hoc/container.js delete mode 100644 src/auth/hoc/hoc.js create mode 100644 src/auth/hoc/hoc.jsx rename src/auth/hoc/{index.js => index.jsx} (100%) delete mode 100644 src/auth/index.js create mode 100644 src/auth/index.jsx delete mode 100644 src/auth/provider/component.js delete mode 100644 src/auth/provider/none.js delete mode 100644 src/auth/provider/oidc.js rename src/constants/{dictionary.js => dictionary.jsx} (99%) rename src/constants/{dom-constants.js => dom-constants.jsx} (100%) rename src/constants/{pogues-constants.js => pogues-constants.jsx} (100%) create mode 100644 src/forms/controls/__snapshots__/generic-option.spec.jsx.snap rename src/forms/controls/control-with-suggestions/components/{input-with-suggestions-utils.js => input-with-suggestions-utils.jsx} (100%) rename src/forms/controls/control-with-suggestions/components/{input-with-suggestions-utils.spec.js => input-with-suggestions-utils.spec.jsx} (95%) rename src/forms/controls/control-with-suggestions/components/{input-with-suggestions.spec.js => input-with-suggestions.spec.jsx} (83%) rename src/forms/controls/control-with-suggestions/components/{textarea-with-suggestions.spec.js => textarea-with-suggestions.spec.jsx} (83%) rename src/forms/controls/control-with-suggestions/components/{utils.js => utils.jsx} (57%) rename src/forms/controls/control-with-suggestions/components/{utils.spec.js => utils.spec.jsx} (97%) delete mode 100644 src/forms/controls/control-with-suggestions/components/vtl-editor.js create mode 100644 src/forms/controls/control-with-suggestions/components/vtl-editor.jsx delete mode 100644 src/forms/controls/control-with-suggestions/components/vtl-suggestions.js rename src/forms/controls/control-with-suggestions/{index.js => index.jsx} (100%) rename src/forms/controls/{generic-option.spec.js => generic-option.spec.jsx} (90%) rename src/forms/controls/input-autocomplete/{index.js => index.jsx} (100%) rename src/forms/controls/input-autocomplete/{input-autocomplete-utils.js => input-autocomplete-utils.jsx} (100%) rename src/forms/controls/input-autocomplete/{input-autocomplete-utils.spec.js => input-autocomplete-utils.spec.jsx} (97%) rename src/forms/controls/input-autocomplete/{input-autocomplete.spec.js => input-autocomplete.spec.jsx} (94%) rename src/forms/controls/{input.spec.js => input.spec.jsx} (89%) rename src/forms/controls/{list-checkboxes.spec.js => list-checkboxes.spec.jsx} (94%) rename src/forms/controls/rich-textarea/decorators/{rich-textarea-decorators.js => rich-textarea-decorators.jsx} (100%) rename src/forms/controls/rich-textarea/{index.js => index.jsx} (100%) rename src/forms/controls/rich-textarea/lib/{markdown-vtl-parser.js => markdown-vtl-parser.jsx} (97%) rename src/forms/controls/rich-textarea/lib/{state-from-markdown-vtl.js => state-from-markdown-vtl.jsx} (100%) rename src/forms/controls/rich-textarea/lib/{state-to-markdown-vtl.js => state-to-markdown-vtl.jsx} (100%) rename src/forms/controls/rich-textarea/{rich-textarea-toobar-config.js => rich-textarea-toobar-config.jsx} (100%) rename src/forms/controls/rich-textarea/utils/{rich-textarea-utils.js => rich-textarea-utils.jsx} (100%) rename src/forms/controls/{select.spec.js => select.spec.jsx} (93%) rename src/forms/controls/{textarea.spec.js => textarea.spec.jsx} (90%) rename src/forms/{normalize-inputs.js => normalize-inputs.jsx} (89%) rename src/forms/{normalize-inputs.spec.js => normalize-inputs.spec.jsx} (94%) rename src/forms/{validation-rules.js => validation-rules.jsx} (97%) rename src/forms/{validation-rules.spec.js => validation-rules.spec.jsx} (99%) rename src/hoc/{with-current-form-variables.js => with-current-form-variables.jsx} (95%) rename src/hoc/{with-error-validation.js => with-error-validation.jsx} (100%) rename src/hoc/{with-xpath-validation.js => with-xpath-validation.jsx} (100%) rename src/{index.js => index.jsx} (58%) delete mode 100644 src/layout/app/containers/app-container.js create mode 100644 src/layout/app/containers/app-container.jsx delete mode 100644 src/layout/app/index.js create mode 100644 src/layout/app/index.jsx rename src/layout/component-edit/containers/{component-edit-container.js => component-edit-container.jsx} (89%) rename src/layout/component-edit/{index.js => index.jsx} (100%) rename src/layout/component-new/containers/{component-new-container.js => component-new-container.jsx} (99%) rename src/layout/component-new/{index.js => index.jsx} (100%) rename src/layout/confirm-dialog/{index.js => index.jsx} (100%) rename src/layout/duplicate-variables/containers/{duplicate-variables-container.js => duplicate-variables-container.jsx} (100%) rename src/layout/duplicate-variables/{index.js => index.jsx} (100%) rename src/layout/duplicate-variables/utils/{duplicate-variables-utils.js => duplicate-variables-utils.jsx} (97%) rename src/layout/errors-integrity/{index.js => index.jsx} (100%) rename src/layout/generic-input/containers/{generic-input-container.js => generic-input-container.jsx} (97%) rename src/layout/generic-input/{index.js => index.jsx} (100%) rename src/layout/header/{header.spec.js => header.spec.jsx} (87%) rename src/layout/loader/{component.js => component.jsx} (100%) delete mode 100644 src/layout/loader/index.js rename src/{auth/provider/index.js => layout/loader/index.jsx} (100%) rename src/layout/page-home/containers/{page-home-container.js => page-home-container.jsx} (80%) rename src/layout/page-home/{index.js => index.jsx} (100%) rename src/layout/page-questionnaire/components/{page-questionnaire.spec.js => page-questionnaire.spec.jsx} (55%) rename src/layout/page-questionnaire/containers/{page-questionnaire-container.js => page-questionnaire-container.jsx} (67%) rename src/layout/page-questionnaire/{index.js => index.jsx} (100%) rename src/layout/page-search-questionnaire/{index.js => index.jsx} (100%) rename src/layout/questionnaire-composition/containers/{questionnaire-composition-container.js => questionnaire-composition-container.jsx} (100%) rename src/layout/questionnaire-composition/{index.js => index.jsx} (100%) rename src/layout/questionnaire-edit/containers/{questionnaire-edit-container.js => questionnaire-edit-container.jsx} (88%) rename src/layout/questionnaire-edit/{index.js => index.jsx} (100%) rename src/layout/questionnaire-errors/containers/{questionnaire-errors-container.js => questionnaire-errors-container.jsx} (90%) rename src/layout/questionnaire-errors/{index.js => index.jsx} (100%) rename src/layout/questionnaire-list-components/containers/{questionnaire-list-components-container.js => questionnaire-list-components-container.jsx} (82%) rename src/layout/questionnaire-list-components/{index.js => index.jsx} (100%) rename src/layout/questionnaire-list/components/{questionnaire-list.spec.js => questionnaire-list.spec.jsx} (81%) rename src/layout/questionnaire-list/containers/{questionnaire-list-container.js => questionnaire-list-container.jsx} (78%) rename src/layout/questionnaire-list/{index.js => index.jsx} (100%) rename src/layout/questionnaire-merge/containers/{questionnaire-merge-container.js => questionnaire-merge-container.jsx} (100%) rename src/layout/questionnaire-merge/{index.js => index.jsx} (100%) rename src/layout/questionnaire-nav/components/{arbo-simplifield.spec.js => arbo-simplifield.spec.jsx} (94%) delete mode 100644 src/layout/questionnaire-nav/components/questionnaire-nav.spec.js create mode 100644 src/layout/questionnaire-nav/components/questionnaire-nav.spec.jsx rename src/layout/questionnaire-nav/containers/{questionnaire-nav-container.js => questionnaire-nav-container.jsx} (86%) rename src/layout/questionnaire-nav/{index.js => index.jsx} (100%) rename src/layout/questionnaire-new/{index.js => index.jsx} (100%) rename src/layout/questionnaire-tcm-composition/containers/{questionnaire-tcm-composition-container.js => questionnaire-tcm-composition-container.jsx} (100%) rename src/layout/questionnaire-tcm-composition/{index.js => index.jsx} (100%) delete mode 100644 src/layout/user/user-connection-container.jsx delete mode 100644 src/layout/user/user-connection.spec.js rename src/model/formToState/codes-lists/{codes-list.js => codes-list.jsx} (97%) rename src/model/formToState/component-new-edit/__mocks__/{calculated-variable.js => calculated-variable.jsx} (95%) rename src/model/formToState/component-new-edit/__mocks__/{collected-variable.js => collected-variable.jsx} (94%) rename src/model/formToState/component-new-edit/__mocks__/{control.js => control.jsx} (100%) rename src/model/formToState/component-new-edit/__mocks__/{declaration.js => declaration.jsx} (100%) rename src/model/formToState/component-new-edit/__mocks__/{external-variable.js => external-variable.jsx} (94%) rename src/model/formToState/component-new-edit/__mocks__/{redirection.js => redirection.jsx} (100%) rename src/model/formToState/component-new-edit/{calculated-variable.js => calculated-variable.jsx} (93%) rename src/model/formToState/component-new-edit/{calculated-variable.spec.js => calculated-variable.spec.jsx} (97%) rename src/model/formToState/component-new-edit/{collected-variable.js => collected-variable.jsx} (93%) rename src/model/formToState/component-new-edit/{component.js => component.jsx} (97%) rename src/model/formToState/component-new-edit/{control.js => control.jsx} (96%) rename src/model/formToState/component-new-edit/{control.spec.js => control.spec.jsx} (97%) rename src/model/formToState/component-new-edit/{declaration.js => declaration.jsx} (96%) rename src/model/formToState/component-new-edit/{declaration.spec.js => declaration.spec.jsx} (92%) rename src/model/formToState/component-new-edit/{external-variable.js => external-variable.jsx} (93%) rename src/model/formToState/component-new-edit/{external-variable.spec.js => external-variable.spec.jsx} (97%) rename src/model/formToState/component-new-edit/{filter-nested.js => filter-nested.jsx} (97%) rename src/model/formToState/component-new-edit/{redirection.js => redirection.jsx} (96%) rename src/model/formToState/component-new-edit/{redirection.spec.js => redirection.spec.jsx} (97%) rename src/model/formToState/component-new-edit/{response-format-multiple.js => response-format-multiple.jsx} (87%) rename src/model/formToState/component-new-edit/{response-format-pairing.js => response-format-pairing.jsx} (89%) rename src/model/formToState/component-new-edit/{response-format-simple.js => response-format-simple.jsx} (96%) rename src/model/formToState/component-new-edit/{response-format-single.js => response-format-single.jsx} (89%) rename src/model/formToState/component-new-edit/{response-format-table.js => response-format-table.jsx} (95%) rename src/model/formToState/component-new-edit/{response-format.js => response-format.jsx} (98%) rename src/model/formToState/component-new-edit/{typage.js => typage.jsx} (90%) rename src/model/{index.js => index.jsx} (100%) rename src/model/{remote-to-stores.js => remote-to-stores.jsx} (95%) rename src/model/{remote-to-stores.spec.js => remote-to-stores.spec.jsx} (95%) rename src/model/transformations/{calculated-variable.js => calculated-variable.jsx} (96%) rename src/model/transformations/{calculated-variable.spec.js => calculated-variable.spec.jsx} (97%) rename src/model/transformations/{codes-list.js => codes-list.jsx} (98%) rename src/model/transformations/{codes-list.spec.js => codes-list.spec.jsx} (99%) rename src/model/transformations/{collected-variable.js => collected-variable.jsx} (99%) rename src/model/transformations/{collected-variable.spec.js => collected-variable.spec.jsx} (99%) rename src/model/transformations/{component.js => component.jsx} (99%) rename src/model/transformations/{component.spec.js => component.spec.jsx} (99%) rename src/model/transformations/{control.js => control.jsx} (96%) rename src/model/transformations/{control.spec.js => control.spec.jsx} (97%) rename src/model/transformations/{declaration.js => declaration.jsx} (95%) rename src/model/transformations/{declaration.spec.js => declaration.spec.jsx} (96%) rename src/model/transformations/{dimension.js => dimension.jsx} (95%) rename src/model/transformations/{dimension.spec.js => dimension.spec.jsx} (96%) rename src/model/transformations/{external-variable.js => external-variable.jsx} (96%) rename src/model/transformations/{external-variable.spec.js => external-variable.spec.jsx} (97%) rename src/model/transformations/{loop.js => loop.jsx} (94%) rename src/model/transformations/{loop.spec.js => loop.spec.jsx} (98%) rename src/model/transformations/{questionnaire.js => questionnaire.jsx} (96%) rename src/model/transformations/{questionnaire.spec.js => questionnaire.spec.jsx} (99%) rename src/model/transformations/{redirection-filters.js => redirection-filters.jsx} (97%) rename src/model/transformations/{redirection.js => redirection.jsx} (95%) rename src/model/transformations/{redirection.spec.js => redirection.spec.jsx} (98%) rename src/model/transformations/{response-format-multiple.js => response-format-multiple.jsx} (98%) rename src/model/transformations/{response-format-multiple.spec.js => response-format-multiple.spec.jsx} (98%) rename src/model/transformations/{response-format-pairing.js => response-format-pairing.jsx} (95%) rename src/model/transformations/{response-format-simple.js => response-format-simple.jsx} (98%) rename src/model/transformations/{response-format-simple.spec.js => response-format-simple.spec.jsx} (97%) rename src/model/transformations/{response-format-single.js => response-format-single.jsx} (97%) rename src/model/transformations/{response-format-single.spec.js => response-format-single.spec.jsx} (97%) rename src/model/transformations/{response-format-table.js => response-format-table.jsx} (98%) rename src/model/transformations/{response-format-table.spec.js => response-format-table.spec.jsx} (99%) rename src/model/transformations/{response-format.js => response-format.jsx} (97%) rename src/model/transformations/{response-format.spec.js => response-format.spec.jsx} (86%) rename src/model/transformations/{response.js => response.jsx} (97%) rename src/model/transformations/{response.spec.js => response.spec.jsx} (98%) rename src/model/transformations/{responses.js => responses.jsx} (95%) rename src/model/transformations/{responses.spec.js => responses.spec.jsx} (92%) rename src/reducers/app-state/{active-calculated-variables-by-id.js => active-calculated-variables-by-id.jsx} (75%) rename src/reducers/app-state/{active-calculated-variables-by-id.spec.js => active-calculated-variables-by-id.spec.jsx} (89%) rename src/reducers/app-state/{active-code-lists-by-id.js => active-code-lists-by-id.jsx} (71%) rename src/reducers/app-state/{active-code-lists-by-id.spec.js => active-code-lists-by-id.spec.jsx} (88%) rename src/reducers/app-state/{active-components-by-id.js => active-components-by-id.jsx} (84%) rename src/reducers/app-state/{active-components-by-id.spec.js => active-components-by-id.spec.jsx} (95%) rename src/reducers/app-state/{active-external-variables-by-id.js => active-external-variables-by-id.jsx} (74%) rename src/reducers/app-state/{active-external-variables-by-id.spec.js => active-external-variables-by-id.spec.jsx} (89%) rename src/reducers/app-state/{app-state.js => app-state.jsx} (88%) rename src/reducers/app-state/{app-state.spec.js => app-state.spec.jsx} (95%) rename src/reducers/app-state/{collected-variable-by-question.js => collected-variable-by-question.jsx} (81%) rename src/reducers/app-state/{collected-variable-by-question.spec.js => collected-variable-by-question.spec.jsx} (93%) rename src/reducers/app-state/{errors-by-question-tab.js => errors-by-question-tab.jsx} (85%) rename src/reducers/app-state/{form-utils.js => form-utils.jsx} (100%) rename src/reducers/app-state/{invalid-items-by-active-question.js => invalid-items-by-active-question.jsx} (89%) rename src/reducers/app-state/{invalid-items-by-active-questions.spec.js => invalid-items-by-active-questions.spec.jsx} (96%) create mode 100644 src/reducers/auth-type.jsx rename src/reducers/{calculated-variable-by-questionnaire.js => calculated-variable-by-questionnaire.jsx} (79%) rename src/reducers/{calculated-variable-by-questionnaire.spec.js => calculated-variable-by-questionnaire.spec.jsx} (91%) rename src/reducers/{code-list-by-questionnaire.js => code-list-by-questionnaire.jsx} (77%) rename src/reducers/{code-list-by-questionnaire.spec.js => code-list-by-questionnaire.spec.jsx} (90%) rename src/reducers/{collected-variable-by-questionnaire.js => collected-variable-by-questionnaire.jsx} (79%) rename src/reducers/{collected-variable-by-questionnaire.spec.js => collected-variable-by-questionnaire.spec.jsx} (91%) rename src/reducers/{component-by-questionnaire.js => component-by-questionnaire.jsx} (77%) rename src/reducers/{component-by-questionnaire.spec.js => component-by-questionnaire.spec.jsx} (88%) rename src/reducers/{dictionary.js => dictionary.jsx} (87%) rename src/reducers/{dictionary.spec.js => dictionary.spec.jsx} (88%) rename src/reducers/errors/{errors-by-component.js => errors-by-component.jsx} (57%) rename src/reducers/errors/{errors-integrity.js => errors-integrity.jsx} (73%) rename src/reducers/errors/{errors-integrity.spec.js => errors-integrity.spec.jsx} (91%) rename src/reducers/errors/{errors-subform-validation.js => errors-subform-validation.jsx} (92%) rename src/reducers/errors/{errors-validation.js => errors-validation.jsx} (91%) rename src/reducers/errors/{errors-visualization.js => errors-visualization.jsx} (83%) rename src/reducers/errors/{errors-visualization.spec.js => errors-visualization.spec.jsx} (95%) rename src/reducers/errors/{errors.js => errors.jsx} (100%) rename src/reducers/{external-variable-by-questionnaire.js => external-variable-by-questionnaire.jsx} (78%) rename src/reducers/{external-variable-by-questionnaire.spec.js => external-variable-by-questionnaire.spec.jsx} (91%) rename src/reducers/{general.js => general.jsx} (67%) delete mode 100755 src/reducers/index.js create mode 100644 src/reducers/index.jsx rename src/reducers/{metadata-by-type.js => metadata-by-type.jsx} (69%) rename src/reducers/{questionnaire-by-id.js => questionnaire-by-id.jsx} (82%) mode change 100755 => 100644 rename src/reducers/{questionnaire-by-id.spec.js => questionnaire-by-id.spec.jsx} (92%) rename src/reducers/{questionnaire-list-by-id.js => questionnaire-list-by-id.jsx} (82%) rename src/reducers/{questionnaire-list-by-id.spec.js => questionnaire-list-by-id.spec.jsx} (76%) rename src/reducers/{search-result-by-id.js => search-result-by-id.jsx} (83%) rename src/reducers/{search-result-by-id.spec.js => search-result-by-id.spec.jsx} (94%) delete mode 100644 src/reducers/selectors/index.js delete mode 100644 src/reducers/selectors/user.js rename src/{setupTests.js => setupTests.ts} (100%) rename src/store/{configure-store.js => configure-store.jsx} (93%) mode change 100755 => 100644 rename src/utils/codes-lists/__mocks__/{codes-lists-utils.js => codes-lists-utils.jsx} (98%) rename src/utils/codes-lists/{codes-lists-utils.js => codes-lists-utils.jsx} (98%) rename src/utils/codes-lists/{codes-lists-utils.spec.js => codes-lists-utils.spec.jsx} (93%) rename src/utils/component/__mocks__/{component-utils.js => component-utils.jsx} (100%) rename src/utils/component/{component-dragndrop-utils.js => component-dragndrop-utils.jsx} (97%) rename src/utils/component/{component-dragndrop-utils.spec.js => component-dragndrop-utils.spec.jsx} (94%) rename src/utils/component/{component-dragndrop.js => component-dragndrop.jsx} (100%) rename src/utils/component/{component-dragndrop.spec.js => component-dragndrop.spec.jsx} (90%) rename src/utils/component/{component-utils.js => component-utils.jsx} (96%) rename src/utils/component/{component-utils.spec.js => component-utils.spec.jsx} (98%) rename src/utils/component/{generic-input-utils.js => generic-input-utils.jsx} (99%) rename src/utils/component/{generic-input-utils.spec.js => generic-input-utils.spec.jsx} (97%) rename src/utils/dictionary/{dictionary.js => dictionary.jsx} (93%) rename src/utils/dictionary/{dictionary.spec.js => dictionary.spec.jsx} (100%) delete mode 100644 src/utils/env.js create mode 100644 src/utils/env.jsx rename src/utils/integrity/{checker-component-targets.js => checker-component-targets.jsx} (91%) rename src/utils/integrity/{checker-declaration-mode.js => checker-declaration-mode.jsx} (86%) rename src/utils/integrity/{checker-declaration-mode.spec.js => checker-declaration-mode.spec.jsx} (90%) rename src/utils/integrity/{checker-existing-target.js => checker-existing-target.jsx} (87%) rename src/utils/integrity/{checker-existing-target.spec.js => checker-existing-target.spec.jsx} (92%) rename src/utils/integrity/{checker-questionnaire-length.js => checker-questionnaire-length.jsx} (91%) rename src/utils/integrity/{checker-unique-collected-variable-name.js => checker-unique-collected-variable-name.jsx} (89%) rename src/utils/integrity/{checker-unique-component-name.js => checker-unique-component-name.jsx} (86%) rename src/utils/integrity/{checker-unique-component-name.spec.js => checker-unique-component-name.spec.jsx} (90%) rename src/utils/integrity/{checkers.js => checkers.jsx} (90%) rename src/utils/integrity/{combine-checkers.js => combine-checkers.jsx} (100%) rename src/utils/integrity/{integrity-checker.js => integrity-checker.jsx} (100%) rename src/utils/integrity/{utils.js => utils.jsx} (85%) rename src/utils/integrity/{utils.spec.js => utils.spec.jsx} (85%) rename src/utils/logger/{logger.js => logger.jsx} (94%) rename src/utils/logger/{logger.spec.js => logger.spec.jsx} (94%) rename src/utils/model/__mocks__/{questionnaires.js => questionnaires.jsx} (97%) rename src/utils/model/__mocks__/{redirections-utils.js => redirections-utils.jsx} (100%) rename src/utils/model/{redirections-utils.js => redirections-utils.jsx} (98%) rename src/utils/model/{redirections-utils.spec.js => redirections-utils.spec.jsx} (98%) rename src/utils/oidc/{build-configuration.js => build-configuration.jsx} (94%) create mode 100644 src/utils/oidc/index.jsx create mode 100644 src/utils/oidc/useAuth.jsx rename src/utils/{proptypes-utils.js => proptypes-utils.jsx} (100%) rename src/utils/reducer/{actions-handler.spec.js => actions-handler.spec.jsx} (95%) rename src/utils/reducer/{actions-handlers.js => actions-handlers.jsx} (100%) rename src/utils/{remote-api.js => remote-api.jsx} (97%) rename src/utils/{utils.js => utils.jsx} (78%) rename src/utils/{utils.spec.js => utils.spec.jsx} (95%) rename src/utils/validation/{validate.js => validate.jsx} (98%) rename src/utils/validation/{validation-rules.js => validation-rules.jsx} (98%) rename src/utils/validation/{validation-utils.js => validation-utils.jsx} (100%) rename src/utils/validation/{validation-utils.spec.js => validation-utils.spec.jsx} (69%) rename src/utils/variables/{collected-variables-utils.js => collected-variables-utils.jsx} (97%) rename src/utils/variables/{collected-variables-utils.spec.js => collected-variables-utils.spec.jsx} (99%) rename src/utils/variables/{variables-utils.js => variables-utils.jsx} (97%) rename src/utils/variables/{variables-utils.spec.js => variables-utils.spec.jsx} (93%) rename src/utils/{version.js => version.jsx} (100%) rename src/utils/{widget-utils.js => widget-utils.jsx} (100%) rename src/utils/{widget-utils.spec.js => widget-utils.spec.jsx} (97%) rename src/widgets/associated-fields/containers/{associated-fields-container.js => associated-fields-container.jsx} (91%) rename src/widgets/associated-fields/{index.js => index.jsx} (100%) rename src/widgets/codes-lists/components/{codes-lists-codes.spec.js => codes-lists-codes.spec.jsx} (88%) rename src/widgets/codes-lists/components/{codes-lists.spec.js => codes-lists.spec.jsx} (87%) rename src/widgets/codes-lists/components/{suggester-lists.js => suggester-lists.jsx} (88%) rename src/widgets/codes-lists/{constants.js => constants.jsx} (100%) rename src/widgets/codes-lists/containers/{suggester-lists-container.js => suggester-lists-container.jsx} (86%) rename src/widgets/codes-lists/{index.js => index.jsx} (100%) rename src/widgets/codes-lists/utils/__mocks__/{codes.js => codes.jsx} (100%) rename src/widgets/codes-lists/utils/{actions.js => actions.jsx} (100%) rename src/widgets/codes-lists/utils/{movement.js => movement.jsx} (98%) rename src/widgets/codes-lists/utils/{movement.spec.js => movement.spec.jsx} (93%) rename src/widgets/codes-lists/utils/{utils.js => utils.jsx} (94%) rename src/widgets/codes-lists/utils/{validation.js => validation.jsx} (57%) create mode 100644 src/widgets/component-new-edit/components/response-format/simple/__snapshots__/simple-text.spec.jsx.snap rename src/widgets/component-new-edit/components/response-format/simple/{simple-text.spec.js => simple-text.spec.jsx} (87%) rename src/widgets/component-new-edit/components/variables/{utils-loops.js => utils-loops.jsx} (95%) rename src/widgets/component-new-edit/containers/{component-new-edit-container.js => component-new-edit-container.jsx} (95%) rename src/widgets/component-new-edit/containers/{component-new-edit-form.js => component-new-edit-form.jsx} (74%) rename src/widgets/component-new-edit/{index.js => index.jsx} (100%) rename src/widgets/component-new-edit/utils/{component-new-edit-utils.js => component-new-edit-utils.jsx} (100%) rename src/widgets/component-new-edit/utils/{component-new-edit-utils.spec.js => component-new-edit-utils.spec.jsx} (94%) rename src/widgets/component-with-validation/{index.js => index.jsx} (100%) rename src/widgets/dropdown/{component.js => component.jsx} (88%) rename src/widgets/dropdown/{index.js => index.jsx} (100%) rename src/widgets/errors-panel/containers/{errors-panel-container.js => errors-panel-container.jsx} (100%) rename src/widgets/errors-panel/{index.js => index.jsx} (100%) rename src/widgets/external-questionnaire-dropdown/containers/{external-questionnaire-dropdown-container.js => external-questionnaire-dropdown-container.jsx} (100%) rename src/widgets/external-questionnaire-dropdown/{index.js => index.jsx} (100%) rename src/widgets/goto-input/containers/{goto-input-container.js => goto-input-container.jsx} (94%) rename src/widgets/goto-input/{index.js => index.jsx} (100%) rename src/widgets/goto-input/utils/{goto-input-utils.js => goto-input-utils.jsx} (95%) rename src/widgets/highlighter/{highlighter.spec.js => highlighter.spec.jsx} (91%) rename src/widgets/highlighter/{index.js => index.jsx} (100%) delete mode 100644 src/widgets/input-filter-with-criteria/components/input-filter-with-criteria.spec.js create mode 100644 src/widgets/input-filter-with-criteria/components/input-filter-with-criteria.spec.jsx rename src/widgets/input-filter-with-criteria/containers/{input-filter-with-criteria-container.js => input-filter-with-criteria-container.jsx} (86%) rename src/widgets/input-filter-with-criteria/{index.js => index.jsx} (100%) rename src/widgets/list-with-input-panel/components/{list-with-input-panel-item.spec.js => list-with-input-panel-item.spec.jsx} (85%) rename src/widgets/list-with-input-panel/components/{list-with-input-panel-list.spec.js => list-with-input-panel-list.spec.jsx} (84%) rename src/widgets/list-with-input-panel/components/{list-with-input-panel.spec.js => list-with-input-panel.spec.jsx} (92%) rename src/widgets/list-with-input-panel/containers/{list-with-input-panel-container.js => list-with-input-panel-container.jsx} (97%) rename src/widgets/list-with-input-panel/{index.js => index.jsx} (100%) rename src/widgets/list-with-input-panel/utils/{actions.js => actions.jsx} (100%) rename src/widgets/list-with-input-panel/utils/{test-utils.js => test-utils.jsx} (100%) rename src/widgets/optional-view/containers/{optional-view-container.js => optional-view-container.jsx} (93%) rename src/widgets/optional-view/{index.js => index.jsx} (100%) rename src/widgets/questionnaire-new-edit/{index.js => index.jsx} (100%) rename src/widgets/questionnaire-new-edit/model/{questionnaire.js => questionnaire.jsx} (97%) rename src/widgets/search-codes-lists/{index.js => index.jsx} (100%) rename src/widgets/search-codes-lists/{search-codes-lists.spec.js => search-codes-lists.spec.jsx} (64%) rename src/widgets/search-results/components/{search-results.spec.js => search-results.spec.jsx} (87%) rename src/widgets/search-results/containers/{search-results-container.js => search-results-container.jsx} (94%) rename src/widgets/search-results/{index.js => index.jsx} (100%) create mode 100644 src/widgets/selector-view/components/__snapshots__/selector-view-view.spec.jsx.snap create mode 100644 src/widgets/selector-view/components/__snapshots__/selector-view.spec.jsx.snap rename src/widgets/selector-view/components/{selector-view-view.spec.js => selector-view-view.spec.jsx} (91%) rename src/widgets/selector-view/components/{selector-view.spec.js => selector-view.spec.jsx} (88%) rename src/widgets/selector-view/containers/{selector-view-container.js => selector-view-container.jsx} (87%) rename src/widgets/selector-view/{index.js => index.jsx} (100%) delete mode 100644 src/widgets/statistical-context-criteria/components/statistical-context-criteria.spec.js create mode 100644 src/widgets/statistical-context-criteria/components/statistical-context-criteria.spec.jsx rename src/widgets/statistical-context-criteria/containers/{statistical-context-criteria.js => statistical-context-criteria.jsx} (80%) rename src/widgets/statistical-context-criteria/{index.js => index.jsx} (57%) create mode 100644 src/widgets/tabs/components/__snapshots__/tab.spec.jsx.snap rename src/widgets/tabs/components/{tab.spec.js => tab.spec.jsx} (90%) rename src/widgets/tabs/containers/{tabs-container.js => tabs-container.jsx} (96%) rename src/widgets/tabs/{index.js => index.jsx} (100%) delete mode 100644 src/widgets/visualize-dropdown/__snapshots__/visualize-dropdown.spec.js.snap create mode 100644 src/widgets/visualize-dropdown/__snapshots__/visualize-dropdown.spec.jsx.snap rename src/widgets/visualize-dropdown/containers/{visualize-dropdown-container.js => visualize-dropdown-container.jsx} (97%) rename src/widgets/visualize-dropdown/{index.js => index.jsx} (100%) delete mode 100644 src/widgets/visualize-dropdown/visualize-dropdown.spec.js create mode 100644 src/widgets/visualize-dropdown/visualize-dropdown.spec.jsx create mode 100644 vite.config.js diff --git a/.env b/.env index bf4ff8426..7c1a4c6b1 100644 --- a/.env +++ b/.env @@ -1,15 +1,17 @@ -REACT_APP_API_URL=http://localhost:5000 -REACT_APP_ACTIVE_NAMESPACES='Components,Actions,Stores,Utils,Models' +VITE_API_URL=http://localhost:5000 +VITE_ACTIVE_NAMESPACES='Components,Actions,Stores,Utils,Models' +VITE_PUBLIC_ENEMY_URL= # AUTH # NONE or OIDC -REACT_APP_AUTH_TYPE=NONE -REACT_APP_OIDC_AUTHORITY= -REACT_APP_OIDC_CLIENT_ID= +VITE_AUTH_TYPE=NONE +VITE_OIDC_AUTHORITY= +VITE_OIDC_CLIENT_ID= # OPTIONAL -REACT_APP_DEFAULT_USER_ID= -REACT_APP_DEFAULT_USER_NAME= -REACT_APP_DEFAULT_USER_STAMP= -REACT_APP_LOG_LEVEL=DEBUG \ No newline at end of file +VITE_DEFAULT_USER_ID= +VITE_DEFAULT_USER_NAME= +VITE_DEFAULT_USER_STAMP= + +VITE_LOG_LEVEL=DEBUG diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 414479ad3..3f13bab22 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -10,12 +10,16 @@ plugins: settings: ecmascript: 2020 +parser: babel-eslint + parserOptions: ecmaVersion: 2020 + sourceType: module + ecmaFeatures: + jsx: true env: browser: true - jest: true rules: indent: 0 @@ -35,25 +39,24 @@ rules: react/prefer-stateless-function: 0 react/no-children-prop: 0 react/forbid-prop-types: 0 + react/react-in-jsx-scope: 0 react/no-unescaped-entities: 0 prettier/prettier: - [ - 'error', - { - 'trailingComma': 'all', - 'singleQuote': true, - 'endOfLine': 'auto', - 'react/forbid-prop-types': 0, - }, - ] + - 'error' + - trailingComma: 'all' + singleQuote: true + endOfLine: 'auto' + react/forbid-prop-types: 0 import/prefer-default-export: 0 react/jsx-props-no-spreading: 0 import/order: 0 camelcase: 0 no-plusplus: 0 + no-useless-escape: warn no-restricted-globals: 0 import/named: 0 no-use-before-define: 0 + prefer-destructuring: off react/destructuring-assignment: 0 no-shadow: 0 no-else-return: 0 diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 47c6f3a3e..57508ef3a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,13 +14,13 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '20' - run: yarn - run: yarn build - uses: actions/upload-artifact@v3 with: name: pogues - path: build + path: dist check_if_version_upgraded: needs: build @@ -62,7 +62,7 @@ jobs: - uses: actions/download-artifact@v3 with: name: pogues - path: build + path: dist - uses: docker/build-push-action@v4 with: platforms: linux/amd64,linux/arm64 @@ -87,7 +87,7 @@ jobs: - uses: actions/download-artifact@v3 with: name: pogues - path: build + path: dist - name: Zip bundle run: cd build && zip -r ../pogues.zip ./* && cd .. - uses: softprops/action-gh-release@v1 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index a8e49b9f5..9152c636c 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -15,10 +15,10 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: 15 + node-version: 20 - run: yarn # Run tests & build sonar reports - - run: yarn test + - run: yarn test:coverage # Build lib - run: yarn build - name: Upload deploy artifact @@ -30,7 +30,7 @@ jobs: uses: actions/upload-artifact@v2 with: name: build - path: build/ + path: dist/ sonarcloud: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index d84ea3dd7..80b73c19e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ build/ +dist/ node_modules/ npm-debug.log yarn-error.log diff --git a/docs/en/developper-guide/remote-apis/configuration.md b/docs/en/developper-guide/remote-apis/configuration.md index 9e78eb6ab..27b24e320 100644 --- a/docs/en/developper-guide/remote-apis/configuration.md +++ b/docs/en/developper-guide/remote-apis/configuration.md @@ -1,3 +1,3 @@ # Configuration -The visualization and persistence services share the base URL of the API, provided by the `getBaseURI` method. When working on a development server, this URL must be defined in the [.env](https://github.com/InseeFr/Pogues/blob/main/.env) file in the `REACT_APP_API_URL` variable. For deployment on an apache server, the `POGUES_API_BASE_HOST` variable must be overridden in the [configuration.json](https://github.com/InseeFr/Pogues/blob/main/public/configuration.json) file located in the `public` folder. +The visualization and persistence services share the base URL of the API, provided by the `getBaseURI` method. When working on a development server, this URL must be defined in the [.env](https://github.com/InseeFr/Pogues/blob/main/.env) file in the `VITE_API_URL` variable. For deployment on an apache server, the `POGUES_API_BASE_HOST` variable must be overridden in the [configuration.json](https://github.com/InseeFr/Pogues/blob/main/public/configuration.json) file located in the `public` folder. diff --git a/docs/fr/guide-developpeur/remote-apis/configuration.md b/docs/fr/guide-developpeur/remote-apis/configuration.md index 50bd1de1d..9121e8c5a 100644 --- a/docs/fr/guide-developpeur/remote-apis/configuration.md +++ b/docs/fr/guide-developpeur/remote-apis/configuration.md @@ -1,3 +1,3 @@ # Configuration -Les services de visualisation et de persistance partage l'URL de base de l'API, fournie par la méthode `getBaseURI`. Lorsque que l'on travaille sur un serveur de développement, cette URL doit être définie dans le fichier [.env](https://github.com/InseeFr/Pogues/blob/main/.env) dans la variable `REACT_APP_API_URL`. Pour un déploiement sur un serveur apache, il faut surcharger la variable `POGUES_API_BASE_HOST` dans le fichier [configuration.json](https://github.com/InseeFr/Pogues/blob/main/public/configuration.json) se trouvant dans le dossier `public`. +Les services de visualisation et de persistance partage l'URL de base de l'API, fournie par la méthode `getBaseURI`. Lorsque que l'on travaille sur un serveur de développement, cette URL doit être définie dans le fichier [.env](https://github.com/InseeFr/Pogues/blob/main/.env) dans la variable `VITE_API_URL`. Pour un déploiement sur un serveur apache, il faut surcharger la variable `POGUES_API_BASE_HOST` dans le fichier [configuration.json](https://github.com/InseeFr/Pogues/blob/main/public/configuration.json) se trouvant dans le dossier `public`. diff --git a/fake-server/.eslintrc b/fake-server/.eslintrc deleted file mode 100644 index 01dccb8ca..000000000 --- a/fake-server/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -extends: - - eslint:recommended - - plugin:node/recommended - -plugins: - - node - -env: - node: true - -rules: - no-console: 0 - node/no-unpublished-require: 0 - node/exports-style: ["error", "module.exports"] diff --git a/fake-server/campaigns.js b/fake-server/campaigns.js deleted file mode 100644 index c581e18ee..000000000 --- a/fake-server/campaigns.js +++ /dev/null @@ -1,310 +0,0 @@ -module.exports = [ - { - id: 'campaign01', - label: 'Campaign 01', - parent: 'operation01', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign02', - label: 'Campaign 02', - parent: 'operation01', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign03', - label: 'Campaign 03', - parent: 'operation02', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign04', - label: 'Campaign 04', - parent: 'operation02', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign05', - label: 'Campaign 05', - parent: 'operation03', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign06', - label: 'Campaign 06', - parent: 'operation03', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign07', - label: 'Campaign 07', - parent: 'operation04', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign08', - label: 'Campaign 08', - parent: 'operation04', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign09', - label: 'Campaign 09', - parent: 'operation05', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign10', - label: 'Campaign 10', - parent: 'operation05', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign11', - label: 'Campaign 11', - parent: 'operation06', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign12', - label: 'Campaign 12', - parent: 'operation06', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign13', - label: 'Campaign 13', - parent: 'operation07', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign14', - label: 'Campaign 14', - parent: 'operation07', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign01', - label: 'Campaign 01', - parent: 'operation08', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign02', - label: 'Campaign 02', - parent: 'operation08', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign03', - label: 'Campaign 03', - parent: 'operation09', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign04', - label: 'Campaign 04', - parent: 'operation09', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign05', - label: 'Campaign 05', - parent: 'operation10', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign06', - label: 'Campaign 06', - parent: 'operation10', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign07', - label: 'Campaign 07', - parent: 'operation11', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign08', - label: 'Campaign 08', - parent: 'operation11', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign09', - label: 'Campaign 09', - parent: 'operation12', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign10', - label: 'Campaign 10', - parent: 'operation12', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign11', - label: 'Campaign 11', - parent: 'operation13', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign12', - label: 'Campaign 12', - parent: 'operation13', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign13', - label: 'Campaign 13', - parent: 'operation14', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, - { - id: 'campaign14', - label: 'Campaign 14', - parent: 'operation14', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'DataCollection', - }, -]; diff --git a/fake-server/codes-lists-ref-infos.js b/fake-server/codes-lists-ref-infos.js deleted file mode 100644 index 44c7193a0..000000000 --- a/fake-server/codes-lists-ref-infos.js +++ /dev/null @@ -1,82 +0,0 @@ -module.exports = [ - { - id: 'FAKE_ID_01', - name: 'FAKE_NAME_01', - title: 'Fake codes list 01', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation01', - }, - { - id: 'FAKE_ID_02', - name: 'FAKE_NAME_02', - title: 'Fake codes list 02', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation01', - }, - { - id: 'FAKE_ID_03', - name: 'FAKE_NAME_03', - title: 'Fake codes list 03', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation02', - }, - { - id: 'FAKE_ID_04', - name: 'FAKE_NAME_04', - title: 'Fake codes list 04', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation02', - }, - { - id: 'FAKE_ID_05', - name: 'FAKE_NAME_05', - title: 'Fake codes list 05', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation03', - }, - { - id: 'FAKE_ID_06', - name: 'FAKE_NAME_06', - title: 'Fake codes list 06', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation03', - }, - { - id: 'FAKE_ID_07', - name: 'FAKE_NAME_07', - title: 'Fake codes list 07', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation04', - }, - { - id: 'FAKE_ID_08', - name: 'FAKE_NAME_08', - title: 'Fake codes list 08', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation04', - }, - { - id: 'FAKE_ID_09', - name: 'FAKE_NAME_09', - title: 'Fake codes list 09', - version: '01', - subgroupId: 'serie03', - studyUnitId: 'operation05', - }, - { - id: 'FAKE_ID_10', - name: 'FAKE_NAME_10', - title: 'Fake codes list 10', - version: '01', - subgroupId: 'serie03', - studyUnitId: 'operation05', - }, -]; diff --git a/fake-server/init.js b/fake-server/init.js deleted file mode 100644 index 55acf914c..000000000 --- a/fake-server/init.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - authType: 'NONE', - isSearchDisable: true, -}; diff --git a/fake-server/operations.js b/fake-server/operations.js deleted file mode 100644 index de9c8150b..000000000 --- a/fake-server/operations.js +++ /dev/null @@ -1,156 +0,0 @@ -module.exports = [ - { - id: 'operation01', - label: 'Operation 01', - parent: 'serie01', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation02', - label: 'Operation 02', - parent: 'serie01', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation03', - label: 'Operation 03', - parent: 'serie02', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation04', - label: 'Operation 04', - parent: 'serie02', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation05', - label: 'Operation 05', - parent: 'serie03', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation06', - label: 'Operation 06', - parent: 'serie03', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation07', - label: 'Operation 07', - parent: 'serie04', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation08', - label: 'Operation 08', - parent: 'serie04', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation09', - label: 'Operation 09', - parent: 'serie05', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation10', - label: 'Operation 10', - parent: 'serie05', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation11', - label: 'Operation 11', - parent: 'serie06', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation12', - label: 'Operation 12', - parent: 'serie06', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation13', - label: 'Operation 13', - parent: 'serie07', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, - { - id: 'operation14', - label: 'Operation 14', - parent: 'serie07', - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'StudyUnit', - }, -]; diff --git a/fake-server/published.json b/fake-server/published.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/fake-server/published.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/fake-server/questionnaires-ref-infos.js b/fake-server/questionnaires-ref-infos.js deleted file mode 100644 index e9300eea9..000000000 --- a/fake-server/questionnaires-ref-infos.js +++ /dev/null @@ -1,92 +0,0 @@ -module.exports = [ - { - id: 'FAKE_ID_01', - name: 'FAKE_NAME_01', - title: 'Fake questionnaire 01', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation01', - dataCollectionId: 'campaign01', - }, - { - id: 'FAKE_ID_02', - name: 'FAKE_NAME_02', - title: 'Fake questionnaire 02', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation01', - dataCollectionId: 'campaign02', - }, - { - id: 'FAKE_ID_03', - name: 'FAKE_NAME_03', - title: 'Fake questionnaire 03', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation02', - dataCollectionId: 'campaign03', - }, - { - id: 'FAKE_ID_04', - name: 'FAKE_NAME_04', - title: 'Fake questionnaire 04', - version: '01', - subgroupId: 'serie01', - studyUnitId: 'operation02', - dataCollectionId: 'campaign04', - }, - { - id: 'FAKE_ID_05', - name: 'FAKE_NAME_05', - title: 'Fake questionnaire 05', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation03', - dataCollectionId: 'campaign05', - }, - { - id: 'FAKE_ID_06', - name: 'FAKE_NAME_06', - title: 'Fake questionnaire 06', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation03', - dataCollectionId: 'campaign06', - }, - { - id: 'FAKE_ID_07', - name: 'FAKE_NAME_07', - title: 'Fake questionnaire 07', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation04', - dataCollectionId: 'campaign07', - }, - { - id: 'FAKE_ID_08', - name: 'FAKE_NAME_08', - title: 'Fake questionnaire 08', - version: '01', - subgroupId: 'serie02', - studyUnitId: 'operation04', - dataCollectionId: 'campaign08', - }, - { - id: 'FAKE_ID_09', - name: 'FAKE_NAME_09', - title: 'Fake questionnaire 09', - version: '01', - subgroupId: 'serie03', - studyUnitId: 'operation05', - dataCollectionId: 'campaign09', - }, - { - id: 'FAKE_ID_10', - name: 'FAKE_NAME_10', - title: 'Fake questionnaire 10', - version: '01', - subgroupId: 'serie03', - studyUnitId: 'operation05', - dataCollectionId: 'campaign10', - }, -]; diff --git a/fake-server/questionnaires.js b/fake-server/questionnaires.js deleted file mode 100644 index b821c709d..000000000 --- a/fake-server/questionnaires.js +++ /dev/null @@ -1,5814 +0,0 @@ -module.exports = [ - { - owner: 'DG75-L201', - ComponentGroup: [ - { - MemberReference: [ - 'j6p0ti5h', - 'j6p3dkx6', - 'j6p0np9q', - 'j6p0s7o5', - 'j3343qhx', - 'j6q9h8tj', - 'j334cyqb', - 'j6z06z1e', - 'j3341528', - 'j3343clt', - 'j6qdfhvw', - 'j4nw5cqz', - 'j6qe0h9q', - 'j334akov', - 'j6p29i81', - 'j6qefnga', - 'j6yzoc6g', - 'j4nw88h2', - 'j6qe237q', - 'j4nwc63q', - 'j6qejudb', - 'j4nw0rr6', - 'j6qeh91y', - 'j6p2lwuj', - 'j6qfx9qe', - 'j6qg8rc6', - 'j6z12s2d', - 'j6z0z3us', - ], - Label: ['Components for page 1'], - id: 'jbgd383r', - Name: 'PAGE_1', - }, - ], - agency: 'fr.insee', - genericName: 'QUESTIONNAIRE', - Label: ['Questionnaire SIMPSONS'], - declarationMode: ['CAWI'], - Name: 'SIMPSONS', - Variables: { - Variable: [ - { - Label: 'COMMENT label', - id: 'jbcgfvir', - type: 'CollectedVariableType', - Name: 'COMMENT', - }, - { - Label: 'READY label', - id: 'jbcgm0ip', - type: 'CollectedVariableType', - Name: 'READY', - }, - { - Label: 'PRODUCER label', - id: 'jbcgf11f', - type: 'CollectedVariableType', - Name: 'PRODUCER', - }, - { - Label: 'SEASON_NUMBER label', - id: 'jbcgcy2x', - type: 'CollectedVariableType', - Name: 'SEASON_NUMBER', - }, - { - Label: 'DATEFIRST label', - id: 'jbcgbg33', - type: 'CollectedVariableType', - Name: 'DATEFIRST', - }, - { - Label: 'AUDIENCE_SHARE label', - id: 'jbcgieyw', - type: 'CollectedVariableType', - Name: 'AUDIENCE_SHARE', - }, - { - Label: 'CITY label', - id: 'jbcgasbh', - type: 'CollectedVariableType', - Name: 'CITY', - }, - { - Label: 'MAYOR label', - id: 'jbcg9yr6', - type: 'CollectedVariableType', - Name: 'MAYOR', - }, - { - Label: 'STATE label', - id: 'jbcgpija', - type: 'CollectedVariableType', - Name: 'STATE', - }, - { - Label: "1 - Santa's Little Helper", - id: 'jbdxewlq', - type: 'CollectedVariableType', - Name: 'PET1', - }, - { - Label: '2 - Snowball I', - id: 'jbdxjmst', - type: 'CollectedVariableType', - Name: 'PET2', - }, - { - Label: '3 - Coltrane', - id: 'jbdxjuay', - type: 'CollectedVariableType', - Name: 'PET3', - }, - { - Label: '4 - Mojo the Helper Monkey', - id: 'jbdxniuw', - type: 'CollectedVariableType', - Name: 'PET4', - }, - { - Label: '1 - Vanilla', - id: 'jbdxtl1d', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR1', - }, - { - Label: '2 - Strawberry', - id: 'jbdxvai9', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR2', - }, - { - Label: '3 - Apple', - id: 'jbdxpltw', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR3', - }, - { - Label: '4 - Bacon', - id: 'jbdxzx2x', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR4', - }, - { - Label: '1 - Charles Montgomery Burns', - id: 'jbdy4nhp', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER1', - }, - { - Label: '2 - Carl Carlson', - id: 'jbdxtanu', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER2', - }, - { - Label: '3 - Otto Mann', - id: 'jbdy25if', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER3', - }, - { - Label: '4 - Carl Carlson', - id: 'jbdxvta8', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER4', - }, - { - Label: '1 - Selma Bouvier', - id: 'jbdy3nh7', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER1', - }, - { - Label: '2 - Kent Brockman', - id: 'jbdy6lk3', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER2', - }, - { - Label: '3 - Milhouse Van Houten', - id: 'jbdxsby0', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER3', - }, - { - Label: '4 - Nelson Muntz', - id: 'jbdy7sra', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER4', - }, - { - Label: '5 - Crazy Cat Lady', - id: 'jbdy2wyl', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER5', - }, - { - Label: 'Frozen products-Percentage', - id: 'jbgdnfk7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES11', - }, - { - Label: 'Ice creams-Percentage', - id: 'jbgdje4w', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES21', - }, - { - Label: 'Jasper Beardly-Percentage', - id: 'jbgdlth7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES31', - }, - { - Label: 'Meat-Percentage', - id: 'jbgdelbl', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES41', - }, - { - Label: 'Bacon-Percentage', - id: 'jbgd95jq', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES51', - }, - { - Label: 'Pork chop-Percentage', - id: 'jbgdadd9', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES61', - }, - { - Label: 'Chicken-Percentage', - id: 'jbgdlwzk', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES71', - }, - { - Label: 'Compote-Percentage', - id: 'jbgdfz77', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES81', - }, - { - Label: 'Powersauce-Percentage', - id: 'jbgdepx6', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES91', - }, - { - Label: 'Other-Percentage', - id: 'jbgdepx7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES101', - }, - { - Label: 'Break the windows of the whole city-Clowning', - id: 'jbgd9vqv', - type: 'CollectedVariableType', - Name: 'CLOWNING11', - }, - { - Label: 'Loose the violin of his daughter playing poker-Clowning', - id: 'jbgden0i', - type: 'CollectedVariableType', - Name: 'CLOWNING21', - }, - { - Label: 'Kill Mr Burns-Clowning', - id: 'jbgdndju', - type: 'CollectedVariableType', - Name: 'CLOWNING31', - }, - { - Label: - 'Leaving a mechanical object to control the nuclear power plant-Clowning', - id: 'jbgdfwg9', - type: 'CollectedVariableType', - Name: 'CLOWNING41', - }, - { - Label: 'Break the windows of the whole city-Remember?', - id: 'jbgdd3ky', - type: 'CollectedVariableType', - Name: 'CLOWNING12', - }, - { - Label: 'Loose the violin of his daughter playing poker-Remember?', - id: 'jbgdm9lm', - type: 'CollectedVariableType', - Name: 'CLOWNING22', - }, - { - Label: 'Kill Mr Burns-Remember?', - id: 'jbgdcdhv', - type: 'CollectedVariableType', - Name: 'CLOWNING32', - }, - { - Label: - 'Leaving a mechanical object to control the nuclear power plant-Remember?', - id: 'jbgdjlit', - type: 'CollectedVariableType', - Name: 'CLOWNING42', - }, - { - Label: 'Car-Brazil-Means', - id: 'jbgd1zxu', - type: 'CollectedVariableType', - Name: 'TRAVEL11', - }, - { - Label: 'Bike-Brazil-Means', - id: 'jbgd8lfs', - type: 'CollectedVariableType', - Name: 'TRAVEL21', - }, - { - Label: 'Skateboard-Brazil-Means', - id: 'jbgd56qo', - type: 'CollectedVariableType', - Name: 'TRAVEL31', - }, - { - Label: 'Plane-Brazil-Means', - id: 'jbgd4wu8', - type: 'CollectedVariableType', - Name: 'TRAVEL41', - }, - { - Label: 'Car-Canada-Means', - id: 'jbgdak6h', - type: 'CollectedVariableType', - Name: 'TRAVEL12', - }, - { - Label: 'Bike-Canada-Means', - id: 'jbgdmsy4', - type: 'CollectedVariableType', - Name: 'TRAVEL22', - }, - { - Label: 'Skateboard-Canada-Means', - id: 'jbgd2zlu', - type: 'CollectedVariableType', - Name: 'TRAVEL32', - }, - { - Label: 'Plane-Canada-Means', - id: 'jbgd6v73', - type: 'CollectedVariableType', - Name: 'TRAVEL42', - }, - { - Label: 'Car-Japan-Means', - id: 'jbgdf5fg', - type: 'CollectedVariableType', - Name: 'TRAVEL13', - }, - { - Label: 'Bike-Japan-Means', - id: 'jbgd2xg0', - type: 'CollectedVariableType', - Name: 'TRAVEL23', - }, - { - Label: 'Skateboard-Japan-Means', - id: 'jbgdc06l', - type: 'CollectedVariableType', - Name: 'TRAVEL33', - }, - { - Label: 'Plane-Japan-Means', - id: 'jbgdb8i9', - type: 'CollectedVariableType', - Name: 'TRAVEL43', - }, - { - Label: 'Car-France-Means', - id: 'jbgdhzve', - type: 'CollectedVariableType', - Name: 'TRAVEL14', - }, - { - Label: 'Bike-France-Means', - id: 'jbgd93ks', - type: 'CollectedVariableType', - Name: 'TRAVEL24', - }, - { - Label: 'Skateboard-France-Means', - id: 'jbgdfw7h', - type: 'CollectedVariableType', - Name: 'TRAVEL34', - }, - { - Label: 'Plane-France-Means', - id: 'jbgdfavn', - type: 'CollectedVariableType', - Name: 'TRAVEL44', - }, - { - Label: 'Car-Other country-Means', - id: 'jbgdc199', - type: 'CollectedVariableType', - Name: 'TRAVEL15', - }, - { - Label: 'Bike-Other country-Means', - id: 'jbgdfqph', - type: 'CollectedVariableType', - Name: 'TRAVEL25', - }, - { - Label: 'Skateboard-Other country-Means', - id: 'jbgd8r0n', - type: 'CollectedVariableType', - Name: 'TRAVEL35', - }, - { - Label: 'Plane-Other country-Means', - id: 'jbgd3aqk', - type: 'CollectedVariableType', - Name: 'TRAVEL45', - }, - { - Label: 'Car-Other Planet-Means', - id: 'jbgdltql', - type: 'CollectedVariableType', - Name: 'TRAVEL16', - }, - { - Label: 'Bike-Other Planet-Means', - id: 'jbgd9um3', - type: 'CollectedVariableType', - Name: 'TRAVEL26', - }, - { - Label: 'Skateboard-Other Planet-Means', - id: 'jbgddj7v', - type: 'CollectedVariableType', - Name: 'TRAVEL36', - }, - { - Label: 'Plane-Other Planet-Means', - id: 'jbgdb4ym', - type: 'CollectedVariableType', - Name: 'TRAVEL46', - }, - { - Label: 'Line1-Name', - id: 'jbgd3fkz', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS11', - }, - { - Label: 'Line2-Name', - id: 'jbgdf2md', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS21', - }, - { - Label: 'Line3-Name', - id: 'jbgdfle1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS31', - }, - { - Label: 'Line4-Name', - id: 'jbgdix8x', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS41', - }, - { - Label: 'Line5-Name', - id: 'jbgd782k', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS51', - }, - { - Label: 'Line6-Name', - id: 'jbgd68rf', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS61', - }, - { - Label: 'Line7-Name', - id: 'jbgdfoj4', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS71', - }, - { - Label: 'Line8-Name', - id: 'jbgdb116', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS81', - }, - { - Label: 'Line9-Name', - id: 'jbgd7w5p', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS91', - }, - { - Label: 'Line10-Name', - id: 'jbgd8rj2', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS101', - }, - { - Label: 'Line1-Age', - id: 'jbgdidnp', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS12', - }, - { - Label: 'Line2-Age', - id: 'jbgd47wz', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS22', - }, - { - Label: 'Line3-Age', - id: 'jbgdj2nn', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS32', - }, - { - Label: 'Line4-Age', - id: 'jbgd2ipx', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS42', - }, - { - Label: 'Line5-Age', - id: 'jbgd4pe3', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS52', - }, - { - Label: 'Line6-Age', - id: 'jbgdjgb1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS62', - }, - { - Label: 'Line7-Age', - id: 'jbgdb5c1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS72', - }, - { - Label: 'Line8-Age', - id: 'jbgdju9y', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS82', - }, - { - Label: 'Line9-Age', - id: 'jbgdatyx', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS92', - }, - { - Label: 'Line10-Age', - id: 'jbgdi1dt', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS102', - }, - { - Label: 'SURVEY_COMMENT label', - id: 'jbcggt4x', - type: 'CollectedVariableType', - Name: 'SURVEY_COMMENT', - }, - { - Label: 'SUM_EXPENSES label', - id: 'jbcggtca', - type: 'CalculatedVariableType', - Name: 'SUM_EXPENSES', - Formula: - '$PERCENTAGE_EXPENSES11 + $PERCENTAGE_EXPENSES21 + $PERCENTAGE_EXPENSES31 + $PERCENTAGE_EXPENSES41 + $PERCENTAGE_EXPENSES51 + $PERCENTAGE_EXPENSES61 + $PERCENTAGE_EXPENSES71 + $PERCENTAGE_EXPENSES81 + $PERCENTAGE_EXPENSES91 + $PERCENTAGE_EXPENSES101', - }, - { - Label: 'LAST_BROADCAST label', - id: 'jbcggtex', - type: 'ExternalVariableType', - Name: 'LAST_BROADCAST', - }, - ], - }, - lastUpdatedDate: 'Fri Jan 12 2018 12:06:03 GMT+0100 (Paris, Madrid)', - DataCollection: [], - final: false, - id: 'i6vwid', - CodeLists: { - CodeList: [ - { - Label: 'TOWN', - id: 'j334iumu', - Code: [ - { - Parent: '', - Label: 'Springfield', - Value: '00001', - }, - { - Parent: '', - Label: 'Shelbyville', - Value: '00002', - }, - { - Parent: '', - Label: 'Seinfeld', - Value: '00003', - }, - ], - Name: '', - }, - { - Label: 'MAYOR', - id: 'j6qdqoen', - Code: [ - { - Parent: '', - Label: 'Constance Harm', - Value: '1', - }, - { - Parent: '', - Label: 'Timothy Lovejoy', - Value: '2', - }, - { - Parent: '', - Label: 'Joe Quimby', - Value: '3', - }, - { - Parent: '', - Label: 'Poochie', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'State', - id: 'j4nwo00f', - Code: [ - { - Parent: '', - Label: 'Washington', - Value: '1', - }, - { - Parent: '', - Label: 'Kentucky', - Value: '2', - }, - { - Parent: '', - Label: 'Ohio', - Value: '3', - }, - { - Parent: '', - Label: 'Maine', - Value: '4', - }, - { - Parent: '', - Label: 'North Dakota', - Value: '5', - }, - { - Parent: '', - Label: 'Florida', - Value: '6', - }, - { - Parent: '', - Label: 'North Takoma', - Value: '7', - }, - { - Parent: '', - Label: 'California', - Value: '8', - }, - { - Parent: '', - Label: 'Texas', - Value: '9', - }, - { - Parent: '', - Label: 'Massachusetts', - Value: '10', - }, - { - Parent: '', - Label: 'Nevada', - Value: '11', - }, - { - Parent: '', - Label: 'Illinois', - Value: '12', - }, - { - Parent: '', - Label: 'Not in any state, you fool!', - Value: '13', - }, - ], - Name: '', - }, - { - Label: 'ANIMALS', - id: 'j335cu3c', - Code: [ - { - Parent: '', - Label: "Santa's Little Helper", - Value: '1', - }, - { - Parent: '', - Label: 'Snowball I', - Value: '2', - }, - { - Parent: '', - Label: 'Coltrane', - Value: '3', - }, - { - Parent: '', - Label: 'Mojo the Helper Monkey', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Flavours', - id: 'j6p2mvca', - Code: [ - { - Parent: '', - Label: 'Vanilla', - Value: '1', - }, - { - Parent: '', - Label: 'Strawberry', - Value: '2', - }, - { - Parent: '', - Label: 'Apple', - Value: '3', - }, - { - Parent: '', - Label: 'Bacon', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'YESNO', - id: 'jbdxh138', - Code: [ - { - Parent: '', - Label: 'Yes', - Value: '1', - }, - { - Parent: '', - Label: 'No', - Value: '0', - }, - ], - Name: '', - }, - { - Label: 'NUCLEAR_CHARACTERS', - id: 'j6qeytgc', - Code: [ - { - Parent: '', - Label: 'Charles Montgomery Burns', - Value: '1', - }, - { - Parent: '', - Label: 'Carl Carlson', - Value: '2', - }, - { - Parent: '', - Label: 'Otto Mann', - Value: '3', - }, - { - Parent: '', - Label: 'Carl Carlson', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'BIRTH_CHARACTER', - id: 'j6z087mq', - Code: [ - { - Parent: '', - Label: 'Selma Bouvier', - Value: '1', - }, - { - Parent: '', - Label: 'Kent Brockman', - Value: '2', - }, - { - Parent: '', - Label: 'Milhouse Van Houten', - Value: '3', - }, - { - Parent: '', - Label: 'Nelson Muntz', - Value: '4', - }, - { - Parent: '', - Label: 'Crazy Cat Lady', - Value: '5', - }, - ], - Name: '', - }, - { - Label: 'CITY_BIRTH', - id: 'jbdxricm', - Code: [ - { - Parent: '', - Label: 'Albuquerque', - Value: '1', - }, - { - Parent: '', - Label: 'Springfield', - Value: '2', - }, - { - Parent: '', - Label: 'Portland', - Value: '3', - }, - { - Parent: '', - Label: 'Shelbyville', - Value: '4', - }, - { - Parent: '', - Label: 'Dagstuhl', - Value: '5', - }, - ], - Name: '', - }, - { - Label: 'Products', - id: 'j4nwh16i', - Code: [ - { - Parent: '', - Label: 'Frozen products', - Value: 'A', - }, - { - Parent: 'A', - Label: 'Ice creams', - Value: 'A1', - }, - { - Parent: 'A', - Label: 'Jasper Beardly', - Value: 'A2', - }, - { - Parent: '', - Label: 'Meat', - Value: 'B', - }, - { - Parent: 'B', - Label: 'Bacon', - Value: 'B1', - }, - { - Parent: 'B', - Label: 'Pork chop', - Value: 'B2', - }, - { - Parent: 'B', - Label: 'Chicken', - Value: 'B3', - }, - { - Value: 'C', - Label: 'Compote', - Parent: '', - }, - { - Value: 'C1', - Label: 'Powersauce', - Parent: 'C', - }, - { - Parent: '', - Label: 'Other', - Value: 'D', - }, - ], - Name: '', - }, - { - Label: 'Clownings', - id: 'j77dav9b', - Code: [ - { - Parent: '', - Label: '***Break the windows of the whole city***', - Value: '1', - }, - { - Parent: '', - Label: '***Loose the violin of his daughter playing poker***', - Value: '2', - }, - { - Parent: '', - Label: '***Kill Mr Burns***', - Value: '3', - }, - { - Parent: '', - Label: - '***Leaving a mechanical object to control the nuclear power plant***', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Clowning_Characters', - id: 'jbdyh6b5', - Code: [ - { - Parent: '', - Label: 'Jay', - Value: '1', - }, - { - Parent: '', - Label: 'Bart', - Value: '2', - }, - { - Parent: '', - Label: 'Krusty the clown', - Value: '3', - }, - { - Parent: '', - Label: 'Maggie', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Means of transport', - id: 'j6p2kivg', - Code: [ - { - Parent: '', - Label: 'Car', - Value: '1', - }, - { - Parent: '', - Label: 'Bike', - Value: '2', - }, - { - Parent: '', - Label: 'Skateboard', - Value: '3', - }, - { - Parent: '', - Label: 'Plane', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Country', - id: 'jbdye1wa', - Code: [ - { - Parent: '', - Label: 'Brazil', - Value: '1', - }, - { - Parent: '', - Label: 'Canada', - Value: '2', - }, - { - Parent: '', - Label: 'Japan', - Value: '3', - }, - { - Parent: '', - Label: 'France', - Value: '4', - }, - { - Parent: '', - Label: '[Other country](. "Included principalities")', - Value: '5', - }, - { - Parent: '', - Label: 'Other planet', - Value: '6', - }, - ], - Name: '', - }, - ], - }, - Child: [ - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Introduction'], - id: 'j6p0ti5h', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - "We're going to test your knowledge about the simpsons series.\n**Welcome in the simspons world!**", - id: 'd1', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgfvir', - id: 'jbgdhaht', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 500, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: [ - 'Before starting, do you have any comments about the Simpsons family?', - ], - id: 'j6p3dkx6', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'COMMENT', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgm0ip', - id: 'jbgd3set', - mandatory: false, - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [ - { - Description: - 'If you are not ready, please go to the end of the questionnaire', - Expression: "$READY != '1'", - id: 'j6p6my1d', - IfTrue: 'j6z12s2d', - }, - ], - Label: ['Are you ready?'], - id: 'j6p0np9q', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'READY', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['General knowledge of the series'], - id: 'j6p0s7o5', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgf11f', - id: 'jbgd90cy', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 30, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['Who is the producer?'], - id: 'j3343qhx', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'PRODUCER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgcy2x', - id: 'jbgdjy8h', - mandatory: false, - Datatype: { - Maximum: 99, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - Decimals: 0, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['What is the current season number?'], - id: 'j6q9h8tj', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'SEASON_NUMBER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgbg33', - id: 'jbgdih2z', - mandatory: false, - Datatype: { - typeName: 'DATE', - type: 'DateDatatypeType', - Maximum: 2000, - Minimum: 2020, - Format: 'YYYY', - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['When was the first episode of the Simpsons?'], - id: 'j334cyqb', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - 'For your information, the date of the last broadcast was on $LAST_BROADCAST', - id: 'd11', - }, - ], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'DATEFIRST', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgieyw', - id: 'jbgddnrd', - mandatory: false, - Datatype: { - Maximum: 99, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'In your opinion, how much is the part of audience share in US for the 2016 season?', - ], - id: 'j6z06z1e', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'AUDIENCE_SHARE', - }, - ], - declarationMode: [], - Name: 'MODULE11', - }, - ], - declarationMode: [], - Name: 'MODULE1', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ["Simpsons' city"], - id: 'j3341528', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - 'This module asks about your general knowledge of the Simpsons city', - id: 'd2', - }, - ], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgasbh', - id: 'jbgdjdkn', - mandatory: true, - CodeListReference: 'j334iumu', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which city do the Simpsons reside?'], - id: 'j3343clt', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: 'One possible answer', - id: 'd3', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'CITY', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcg9yr6', - id: 'jbgd8ghp', - CodeListReference: 'j6qdqoen', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Who is the Simpsons city mayor?'], - id: 'j6qdfhvw', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: 'Only one possible answer', - id: 'd4', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'MAYOR', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgpija', - id: 'jbgdkd7v', - CodeListReference: 'j4nwo00f', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which state do The Simpsons reside?'], - id: 'j4nw5cqz', - Declaration: [], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'STATE', - }, - ], - declarationMode: [], - Name: 'MODULE2', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Characters'], - id: 'j6qe0h9q', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbdxewlq', - id: 'jbgd8qmn', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxjmst', - id: 'jbgd60vl', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxjuay', - id: 'jbgda2jo', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxniuw', - id: 'jbgdfssy', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['What are the pet names that the Simpsons family had?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd8qmn', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd60vl', - MappingTarget: '2', - }, - { - MappingSource: 'jbgda2jo', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdfssy', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j335cu3c', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j334akov', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: '*Several possible answers*', - id: 'd5', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'PET', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdxtl1d', - id: 'jbgdb3jx', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxvai9', - id: 'jbgdb61k', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxpltw', - id: 'jbgdl3kc', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxzx2x', - id: 'jbgdcobo', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Does Jay like the following ice cream flavours?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgdb3jx', - MappingTarget: '1', - }, - { - MappingSource: 'jbgdb61k', - MappingTarget: '2', - }, - { - MappingSource: 'jbgdl3kc', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdcobo', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6p2mvca', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6p29i81', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - '**Now we are going to know if you think that Jay is a gluton.**', - id: 'd12', - position: 'BEFORE_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'ICE_FLAVOUR', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdy4nhp', - id: 'jbgd6p0k', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxtanu', - id: 'jbgd9ato', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy25if', - id: 'jbgd3e0p', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxvta8', - id: 'jbgdkxne', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Which character works in the nuclear power plant?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd6p0k', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd9ato', - MappingTarget: '2', - }, - { - MappingSource: 'jbgd3e0p', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdkxne', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6qeytgc', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6qefnga', - Declaration: [], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'NUCLEAR_CHARACTER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdy3nh7', - id: 'jbgd7fr6', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy6lk3', - id: 'jbgd5e9f', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxsby0', - id: 'jbgd912x', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy7sra', - id: 'jbgd6bdy', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy2wyl', - id: 'jbgddyry', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which city each character was born?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd7fr6', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd5e9f', - MappingTarget: '2', - }, - { - MappingSource: 'jbgd912x', - MappingTarget: '3', - }, - { - MappingSource: 'jbgd6bdy', - MappingTarget: '4', - }, - { - MappingSource: 'jbgddyry', - MappingTarget: '5', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6z087mq', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6yzoc6g', - Declaration: [], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'BIRTH_CHARACTER', - }, - ], - declarationMode: [], - Name: 'MODULE3', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['General questions'], - id: 'j4nw88h2', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Kwik-E-Mart'], - id: 'j6qe237q', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgdnfk7', - id: 'jbgde5yl', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdje4w', - id: 'jbgd2x2t', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdlth7', - id: 'jbgdjypz', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdelbl', - id: 'jbgdcftu', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgd95jq', - id: 'jbgdiyfe', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdadd9', - id: 'jbgdj1wd', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdlwzk', - id: 'jbgddylk', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdfz77', - id: 'jbgd3jj6', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdepx6', - id: 'jbgd4w3k', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdepx7', - id: 'jbgd4w4k', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - ], - Control: [ - { - Description: 'Total of percentages', - Expression: - '$PERCENTAGE_EXPENSES11 + $PERCENTAGE_EXPENSES21 + $PERCENTAGE_EXPENSES31 + $PERCENTAGE_EXPENSES41 + $PERCENTAGE_EXPENSES51 + $PERCENTAGE_EXPENSES61 + $PERCENTAGE_EXPENSES71 + $PERCENTAGE_EXPENSES81 + $PERCENTAGE_EXPENSES91 + $PERCENTAGE_EXPENSES101 != 100', - criticity: 'ERROR', - FailMessage: - 'The sum of percentages is: $SUM_EXPENSES %. The total of percentages must be equal to 100%.', - id: 'j6z2680o', - }, - ], - depth: 3, - FlowControl: [], - Label: [ - "Please, specify the percentage of Jay's expenses in the Kwik-E-Mart for each product?", - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgde5yl', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgd2x2t', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdjypz', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdcftu', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdiyfe', - MappingTarget: '5 1', - }, - { - MappingSource: 'jbgdj1wd', - MappingTarget: '6 1', - }, - { - MappingSource: 'jbgddylk', - MappingTarget: '7 1', - }, - { - MappingSource: 'jbgd3jj6', - MappingTarget: '8 1', - }, - { - MappingSource: 'jbgd4w3k', - MappingTarget: '9 1', - }, - { - MappingSource: 'jbgd4w4k', - MappingTarget: '10 1', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j4nwh16i', - }, - { - dimensionType: 'MEASURE', - Label: 'Percentage', - dynamic: '0', - }, - ], - }, - id: 'j4nwc63q', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'PERCENTAGE_EXPENSES', - }, - ], - declarationMode: [], - Name: 'MODULE41', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Clowning'], - id: 'j6qejudb', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd9vqv', - id: 'jbgd8tyr', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgden0i', - id: 'jbgdep36', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdndju', - id: 'jbgdjjgi', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdfwg9', - id: 'jbgdgh6k', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdd3ky', - id: 'jbgdit3o', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdm9lm', - id: 'jbgd366k', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdcdhv', - id: 'jbgdax06', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdjlit', - id: 'jbgdfo1j', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'Who did these clownings and tell us what you remember?', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd8tyr', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgdep36', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdjjgi', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdgh6k', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdit3o', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd366k', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgdax06', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgdfo1j', - MappingTarget: '4 2', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j77dav9b', - }, - { - dimensionType: 'MEASURE', - Label: 'Clowning', - dynamic: '0', - }, - { - dimensionType: 'MEASURE', - Label: 'Remember?', - dynamic: '0', - }, - ], - }, - id: 'j4nw0rr6', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'CLOWNING', - }, - ], - declarationMode: [], - Name: 'MODULE42', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Transport'], - id: 'j6qeh91y', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd1zxu', - id: 'jbgd92mb', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd8lfs', - id: 'jbgdgsat', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd56qo', - id: 'jbgdaxk2', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd4wu8', - id: 'jbgd7myn', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdak6h', - id: 'jbgdnxkt', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdmsy4', - id: 'jbgd3ef5', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2zlu', - id: 'jbgd8p1v', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd6v73', - id: 'jbgdgm0c', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdf5fg', - id: 'jbgdcppc', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2xg0', - id: 'jbgd4cm6', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdc06l', - id: 'jbgdd2lo', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb8i9', - id: 'jbgdo0ay', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdhzve', - id: 'jbgd4r2a', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd93ks', - id: 'jbgdkfpq', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfw7h', - id: 'jbgd7u52', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfavn', - id: 'jbgdgfwl', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdc199', - id: 'jbgd9cff', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfqph', - id: 'jbgddwsp', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd8r0n', - id: 'jbgdncn8', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd3aqk', - id: 'jbgdnz6b', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdltql', - id: 'jbgdiva0', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd9um3', - id: 'jbgd7dqf', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgddj7v', - id: 'jbgdnous', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb4ym', - id: 'jbgdkfcz', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'Which of the following means of transport were used by the hero and in which country?', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd92mb', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgdgsat', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdaxk2', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgd7myn', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdnxkt', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd3ef5', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgd8p1v', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgdgm0c', - MappingTarget: '4 2', - }, - { - MappingSource: 'jbgdcppc', - MappingTarget: '1 3', - }, - { - MappingSource: 'jbgd4cm6', - MappingTarget: '2 3', - }, - { - MappingSource: 'jbgdd2lo', - MappingTarget: '3 3', - }, - { - MappingSource: 'jbgdo0ay', - MappingTarget: '4 3', - }, - { - MappingSource: 'jbgd4r2a', - MappingTarget: '1 4', - }, - { - MappingSource: 'jbgdkfpq', - MappingTarget: '2 4', - }, - { - MappingSource: 'jbgd7u52', - MappingTarget: '3 4', - }, - { - MappingSource: 'jbgdgfwl', - MappingTarget: '4 4', - }, - { - MappingSource: 'jbgd9cff', - MappingTarget: '1 5', - }, - { - MappingSource: 'jbgddwsp', - MappingTarget: '2 5', - }, - { - MappingSource: 'jbgdncn8', - MappingTarget: '3 5', - }, - { - MappingSource: 'jbgdnz6b', - MappingTarget: '4 5', - }, - { - MappingSource: 'jbgdiva0', - MappingTarget: '1 6', - }, - { - MappingSource: 'jbgd7dqf', - MappingTarget: '2 6', - }, - { - MappingSource: 'jbgdnous', - MappingTarget: '3 6', - }, - { - MappingSource: 'jbgdkfcz', - MappingTarget: '4 6', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6p2kivg', - }, - { - dimensionType: 'SECONDARY', - dynamic: '0', - CodeListReference: 'jbdye1wa', - }, - { - dimensionType: 'MEASURE', - Label: 'Means', - dynamic: '0', - }, - ], - }, - id: 'j6p2lwuj', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: - 'Several answers possible: check off all the relevant boxes', - id: 'd10', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'TRAVEL', - }, - ], - declarationMode: [], - Name: 'MODULE43', - }, - ], - declarationMode: [], - Name: 'MODULE4', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Favourite characters'], - id: 'j6qfx9qe', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd3fkz', - id: 'jbgdl5jb', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdf2md', - id: 'jbgd8lwo', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdfle1', - id: 'jbgdbfag', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdix8x', - id: 'jbgdlgja', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd782k', - id: 'jbgd745y', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd68rf', - id: 'jbgdjkts', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdfoj4', - id: 'jbgdcax7', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdb116', - id: 'jbgdjye1', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd7w5p', - id: 'jbgd5jet', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd8rj2', - id: 'jbgdjw90', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdidnp', - id: 'jbgdfndq', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd47wz', - id: 'jbgd7osi', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdj2nn', - id: 'jbgd7bnw', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2ipx', - id: 'jbgd9k71', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd4pe3', - id: 'jbgdimks', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdjgb1', - id: 'jbgdjquz', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb5c1', - id: 'jbgdd2w3', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdju9y', - id: 'jbgdkosc', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdatyx', - id: 'jbgdk0x4', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdi1dt', - id: 'jbgd2wgf', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: [ - 'Please, complete the following grid with your favourite characters', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgdl5jb', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgd8lwo', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdbfag', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdlgja', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgd745y', - MappingTarget: '5 1', - }, - { - MappingSource: 'jbgdjkts', - MappingTarget: '6 1', - }, - { - MappingSource: 'jbgdcax7', - MappingTarget: '7 1', - }, - { - MappingSource: 'jbgdjye1', - MappingTarget: '8 1', - }, - { - MappingSource: 'jbgd5jet', - MappingTarget: '9 1', - }, - { - MappingSource: 'jbgdjw90', - MappingTarget: '10 1', - }, - { - MappingSource: 'jbgdfndq', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd7osi', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgd7bnw', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgd9k71', - MappingTarget: '4 2', - }, - { - MappingSource: 'jbgdimks', - MappingTarget: '5 2', - }, - { - MappingSource: 'jbgdjquz', - MappingTarget: '6 2', - }, - { - MappingSource: 'jbgdd2w3', - MappingTarget: '7 2', - }, - { - MappingSource: 'jbgdkosc', - MappingTarget: '8 2', - }, - { - MappingSource: 'jbgdk0x4', - MappingTarget: '9 2', - }, - { - MappingSource: 'jbgd2wgf', - MappingTarget: '10 2', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '1-10', - }, - { - dimensionType: 'MEASURE', - Label: 'Name', - dynamic: '0', - }, - { - dimensionType: 'MEASURE', - Label: 'Age', - dynamic: '0', - }, - ], - }, - id: 'j6qg8rc6', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'FAVOURITE_CHARACTERS', - }, - ], - declarationMode: [], - Name: 'MODULE5', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Comment'], - id: 'j6z12s2d', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcggt4x', - id: 'jbgd6m6e', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Do you have any comment about the survey?'], - id: 'j6z0z3us', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'SURVEY_COMMENT', - }, - ], - declarationMode: [], - Name: 'MODULE6', - }, - ], - }, - { - owner: 'DR59-SNDI', - ComponentGroup: [ - { - MemberReference: [ - 'j6p0ti5h', - 'j6p3dkx6', - 'j6p0np9q', - 'j6p0s7o5', - 'j3343qhx', - 'j6q9h8tj', - 'j334cyqb', - 'j6z06z1e', - 'j3341528', - 'j3343clt', - 'j6qdfhvw', - 'j4nw5cqz', - 'j6qe0h9q', - 'j334akov', - 'j6p29i81', - 'j6qefnga', - 'j6yzoc6g', - 'j4nw88h2', - 'j6qe237q', - 'j4nwc63q', - 'j6qejudb', - 'j4nw0rr6', - 'j6qeh91y', - 'j6p2lwuj', - 'j6qfx9qe', - 'j6qg8rc6', - 'j6z12s2d', - 'j6z0z3us', - ], - Label: ['Components for page 1'], - id: 'jbgd383r', - Name: 'PAGE_1', - }, - ], - agency: 'fr.insee', - genericName: 'QUESTIONNAIRE', - Label: ['Questionnaire SIMPSONS - Test'], - declarationMode: ['CAWI'], - Name: 'SIMPSONS', - Variables: { - Variable: [ - { - Label: 'COMMENT label', - id: 'jbcgfvir', - type: 'CollectedVariableType', - Name: 'COMMENT', - }, - { - Label: 'READY label', - id: 'jbcgm0ip', - type: 'CollectedVariableType', - Name: 'READY', - }, - { - Label: 'PRODUCER label', - id: 'jbcgf11f', - type: 'CollectedVariableType', - Name: 'PRODUCER', - }, - { - Label: 'SEASON_NUMBER label', - id: 'jbcgcy2x', - type: 'CollectedVariableType', - Name: 'SEASON_NUMBER', - }, - { - Label: 'DATEFIRST label', - id: 'jbcgbg33', - type: 'CollectedVariableType', - Name: 'DATEFIRST', - }, - { - Label: 'AUDIENCE_SHARE label', - id: 'jbcgieyw', - type: 'CollectedVariableType', - Name: 'AUDIENCE_SHARE', - }, - { - Label: 'CITY label', - id: 'jbcgasbh', - type: 'CollectedVariableType', - Name: 'CITY', - }, - { - Label: 'MAYOR label', - id: 'jbcg9yr6', - type: 'CollectedVariableType', - Name: 'MAYOR', - }, - { - Label: 'STATE label', - id: 'jbcgpija', - type: 'CollectedVariableType', - Name: 'STATE', - }, - { - Label: "1 - Santa's Little Helper", - id: 'jbdxewlq', - type: 'CollectedVariableType', - Name: 'PET1', - }, - { - Label: '2 - Snowball I', - id: 'jbdxjmst', - type: 'CollectedVariableType', - Name: 'PET2', - }, - { - Label: '3 - Coltrane', - id: 'jbdxjuay', - type: 'CollectedVariableType', - Name: 'PET3', - }, - { - Label: '4 - Mojo the Helper Monkey', - id: 'jbdxniuw', - type: 'CollectedVariableType', - Name: 'PET4', - }, - { - Label: '1 - Vanilla', - id: 'jbdxtl1d', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR1', - }, - { - Label: '2 - Strawberry', - id: 'jbdxvai9', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR2', - }, - { - Label: '3 - Apple', - id: 'jbdxpltw', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR3', - }, - { - Label: '4 - Bacon', - id: 'jbdxzx2x', - type: 'CollectedVariableType', - Name: 'ICE_FLAVOUR4', - }, - { - Label: '1 - Charles Montgomery Burns', - id: 'jbdy4nhp', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER1', - }, - { - Label: '2 - Carl Carlson', - id: 'jbdxtanu', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER2', - }, - { - Label: '3 - Otto Mann', - id: 'jbdy25if', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER3', - }, - { - Label: '4 - Carl Carlson', - id: 'jbdxvta8', - type: 'CollectedVariableType', - Name: 'NUCLEAR_CHARACTER4', - }, - { - Label: '1 - Selma Bouvier', - id: 'jbdy3nh7', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER1', - }, - { - Label: '2 - Kent Brockman', - id: 'jbdy6lk3', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER2', - }, - { - Label: '3 - Milhouse Van Houten', - id: 'jbdxsby0', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER3', - }, - { - Label: '4 - Nelson Muntz', - id: 'jbdy7sra', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER4', - }, - { - Label: '5 - Crazy Cat Lady', - id: 'jbdy2wyl', - type: 'CollectedVariableType', - Name: 'BIRTH_CHARACTER5', - }, - { - Label: 'Frozen products-Percentage', - id: 'jbgdnfk7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES11', - }, - { - Label: 'Ice creams-Percentage', - id: 'jbgdje4w', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES21', - }, - { - Label: 'Jasper Beardly-Percentage', - id: 'jbgdlth7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES31', - }, - { - Label: 'Meat-Percentage', - id: 'jbgdelbl', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES41', - }, - { - Label: 'Bacon-Percentage', - id: 'jbgd95jq', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES51', - }, - { - Label: 'Pork chop-Percentage', - id: 'jbgdadd9', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES61', - }, - { - Label: 'Chicken-Percentage', - id: 'jbgdlwzk', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES71', - }, - { - Label: 'Compote-Percentage', - id: 'jbgdfz77', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES81', - }, - { - Label: 'Powersauce-Percentage', - id: 'jbgdepx6', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES91', - }, - { - Label: 'Other-Percentage', - id: 'jbgdepx7', - type: 'CollectedVariableType', - Name: 'PERCENTAGE_EXPENSES101', - }, - { - Label: 'Break the windows of the whole city-Clowning', - id: 'jbgd9vqv', - type: 'CollectedVariableType', - Name: 'CLOWNING11', - }, - { - Label: 'Loose the violin of his daughter playing poker-Clowning', - id: 'jbgden0i', - type: 'CollectedVariableType', - Name: 'CLOWNING21', - }, - { - Label: 'Kill Mr Burns-Clowning', - id: 'jbgdndju', - type: 'CollectedVariableType', - Name: 'CLOWNING31', - }, - { - Label: - 'Leaving a mechanical object to control the nuclear power plant-Clowning', - id: 'jbgdfwg9', - type: 'CollectedVariableType', - Name: 'CLOWNING41', - }, - { - Label: 'Break the windows of the whole city-Remember?', - id: 'jbgdd3ky', - type: 'CollectedVariableType', - Name: 'CLOWNING12', - }, - { - Label: 'Loose the violin of his daughter playing poker-Remember?', - id: 'jbgdm9lm', - type: 'CollectedVariableType', - Name: 'CLOWNING22', - }, - { - Label: 'Kill Mr Burns-Remember?', - id: 'jbgdcdhv', - type: 'CollectedVariableType', - Name: 'CLOWNING32', - }, - { - Label: - 'Leaving a mechanical object to control the nuclear power plant-Remember?', - id: 'jbgdjlit', - type: 'CollectedVariableType', - Name: 'CLOWNING42', - }, - { - Label: 'Car-Brazil-Means', - id: 'jbgd1zxu', - type: 'CollectedVariableType', - Name: 'TRAVEL11', - }, - { - Label: 'Bike-Brazil-Means', - id: 'jbgd8lfs', - type: 'CollectedVariableType', - Name: 'TRAVEL21', - }, - { - Label: 'Skateboard-Brazil-Means', - id: 'jbgd56qo', - type: 'CollectedVariableType', - Name: 'TRAVEL31', - }, - { - Label: 'Plane-Brazil-Means', - id: 'jbgd4wu8', - type: 'CollectedVariableType', - Name: 'TRAVEL41', - }, - { - Label: 'Car-Canada-Means', - id: 'jbgdak6h', - type: 'CollectedVariableType', - Name: 'TRAVEL12', - }, - { - Label: 'Bike-Canada-Means', - id: 'jbgdmsy4', - type: 'CollectedVariableType', - Name: 'TRAVEL22', - }, - { - Label: 'Skateboard-Canada-Means', - id: 'jbgd2zlu', - type: 'CollectedVariableType', - Name: 'TRAVEL32', - }, - { - Label: 'Plane-Canada-Means', - id: 'jbgd6v73', - type: 'CollectedVariableType', - Name: 'TRAVEL42', - }, - { - Label: 'Car-Japan-Means', - id: 'jbgdf5fg', - type: 'CollectedVariableType', - Name: 'TRAVEL13', - }, - { - Label: 'Bike-Japan-Means', - id: 'jbgd2xg0', - type: 'CollectedVariableType', - Name: 'TRAVEL23', - }, - { - Label: 'Skateboard-Japan-Means', - id: 'jbgdc06l', - type: 'CollectedVariableType', - Name: 'TRAVEL33', - }, - { - Label: 'Plane-Japan-Means', - id: 'jbgdb8i9', - type: 'CollectedVariableType', - Name: 'TRAVEL43', - }, - { - Label: 'Car-France-Means', - id: 'jbgdhzve', - type: 'CollectedVariableType', - Name: 'TRAVEL14', - }, - { - Label: 'Bike-France-Means', - id: 'jbgd93ks', - type: 'CollectedVariableType', - Name: 'TRAVEL24', - }, - { - Label: 'Skateboard-France-Means', - id: 'jbgdfw7h', - type: 'CollectedVariableType', - Name: 'TRAVEL34', - }, - { - Label: 'Plane-France-Means', - id: 'jbgdfavn', - type: 'CollectedVariableType', - Name: 'TRAVEL44', - }, - { - Label: 'Car-Other country-Means', - id: 'jbgdc199', - type: 'CollectedVariableType', - Name: 'TRAVEL15', - }, - { - Label: 'Bike-Other country-Means', - id: 'jbgdfqph', - type: 'CollectedVariableType', - Name: 'TRAVEL25', - }, - { - Label: 'Skateboard-Other country-Means', - id: 'jbgd8r0n', - type: 'CollectedVariableType', - Name: 'TRAVEL35', - }, - { - Label: 'Plane-Other country-Means', - id: 'jbgd3aqk', - type: 'CollectedVariableType', - Name: 'TRAVEL45', - }, - { - Label: 'Car-Other Planet-Means', - id: 'jbgdltql', - type: 'CollectedVariableType', - Name: 'TRAVEL16', - }, - { - Label: 'Bike-Other Planet-Means', - id: 'jbgd9um3', - type: 'CollectedVariableType', - Name: 'TRAVEL26', - }, - { - Label: 'Skateboard-Other Planet-Means', - id: 'jbgddj7v', - type: 'CollectedVariableType', - Name: 'TRAVEL36', - }, - { - Label: 'Plane-Other Planet-Means', - id: 'jbgdb4ym', - type: 'CollectedVariableType', - Name: 'TRAVEL46', - }, - { - Label: 'Line1-Name', - id: 'jbgd3fkz', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS11', - }, - { - Label: 'Line2-Name', - id: 'jbgdf2md', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS21', - }, - { - Label: 'Line3-Name', - id: 'jbgdfle1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS31', - }, - { - Label: 'Line4-Name', - id: 'jbgdix8x', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS41', - }, - { - Label: 'Line5-Name', - id: 'jbgd782k', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS51', - }, - { - Label: 'Line6-Name', - id: 'jbgd68rf', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS61', - }, - { - Label: 'Line7-Name', - id: 'jbgdfoj4', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS71', - }, - { - Label: 'Line8-Name', - id: 'jbgdb116', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS81', - }, - { - Label: 'Line9-Name', - id: 'jbgd7w5p', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS91', - }, - { - Label: 'Line10-Name', - id: 'jbgd8rj2', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS101', - }, - { - Label: 'Line1-Age', - id: 'jbgdidnp', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS12', - }, - { - Label: 'Line2-Age', - id: 'jbgd47wz', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS22', - }, - { - Label: 'Line3-Age', - id: 'jbgdj2nn', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS32', - }, - { - Label: 'Line4-Age', - id: 'jbgd2ipx', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS42', - }, - { - Label: 'Line5-Age', - id: 'jbgd4pe3', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS52', - }, - { - Label: 'Line6-Age', - id: 'jbgdjgb1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS62', - }, - { - Label: 'Line7-Age', - id: 'jbgdb5c1', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS72', - }, - { - Label: 'Line8-Age', - id: 'jbgdju9y', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS82', - }, - { - Label: 'Line9-Age', - id: 'jbgdatyx', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS92', - }, - { - Label: 'Line10-Age', - id: 'jbgdi1dt', - type: 'CollectedVariableType', - Name: 'FAVOURITE_CHARACTERS102', - }, - { - Label: 'SURVEY_COMMENT label', - id: 'jbcggt4x', - type: 'CollectedVariableType', - Name: 'SURVEY_COMMENT', - }, - { - Label: 'SUM_EXPENSES label', - id: 'jbcggtca', - type: 'CalculatedVariableType', - Name: 'SUM_EXPENSES', - Formula: - '$PERCENTAGE_EXPENSES11 + $PERCENTAGE_EXPENSES21 + $PERCENTAGE_EXPENSES31 + $PERCENTAGE_EXPENSES41 + $PERCENTAGE_EXPENSES51 + $PERCENTAGE_EXPENSES61 + $PERCENTAGE_EXPENSES71 + $PERCENTAGE_EXPENSES81 + $PERCENTAGE_EXPENSES91 + $PERCENTAGE_EXPENSES101', - }, - { - Label: 'LAST_BROADCAST label', - id: 'jbcggtex', - type: 'ExternalVariableType', - Name: 'LAST_BROADCAST', - }, - ], - }, - lastUpdatedDate: 'Fri Jan 12 2018 12:06:03 GMT+0100 (Paris, Madrid)', - DataCollection: [], - final: false, - id: 'new-i6vwid', - CodeLists: { - CodeList: [ - { - Label: 'TOWN', - id: 'j334iumu', - Code: [ - { - Parent: '', - Label: 'Springfield', - Value: '00001', - }, - { - Parent: '', - Label: 'Shelbyville', - Value: '00002', - }, - { - Parent: '', - Label: 'Seinfeld', - Value: '00003', - }, - ], - Name: '', - }, - { - Label: 'MAYOR', - id: 'j6qdqoen', - Code: [ - { - Parent: '', - Label: 'Constance Harm', - Value: '1', - }, - { - Parent: '', - Label: 'Timothy Lovejoy', - Value: '2', - }, - { - Parent: '', - Label: 'Joe Quimby', - Value: '3', - }, - { - Parent: '', - Label: 'Poochie', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'State', - id: 'j4nwo00f', - Code: [ - { - Parent: '', - Label: 'Washington', - Value: '1', - }, - { - Parent: '', - Label: 'Kentucky', - Value: '2', - }, - { - Parent: '', - Label: 'Ohio', - Value: '3', - }, - { - Parent: '', - Label: 'Maine', - Value: '4', - }, - { - Parent: '', - Label: 'North Dakota', - Value: '5', - }, - { - Parent: '', - Label: 'Florida', - Value: '6', - }, - { - Parent: '', - Label: 'North Takoma', - Value: '7', - }, - { - Parent: '', - Label: 'California', - Value: '8', - }, - { - Parent: '', - Label: 'Texas', - Value: '9', - }, - { - Parent: '', - Label: 'Massachusetts', - Value: '10', - }, - { - Parent: '', - Label: 'Nevada', - Value: '11', - }, - { - Parent: '', - Label: 'Illinois', - Value: '12', - }, - { - Parent: '', - Label: 'Not in any state, you fool!', - Value: '13', - }, - ], - Name: '', - }, - { - Label: 'ANIMALS', - id: 'j335cu3c', - Code: [ - { - Parent: '', - Label: "Santa's Little Helper", - Value: '1', - }, - { - Parent: '', - Label: 'Snowball I', - Value: '2', - }, - { - Parent: '', - Label: 'Coltrane', - Value: '3', - }, - { - Parent: '', - Label: 'Mojo the Helper Monkey', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Flavours', - id: 'j6p2mvca', - Code: [ - { - Parent: '', - Label: 'Vanilla', - Value: '1', - }, - { - Parent: '', - Label: 'Strawberry', - Value: '2', - }, - { - Parent: '', - Label: 'Apple', - Value: '3', - }, - { - Parent: '', - Label: 'Bacon', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'YESNO', - id: 'jbdxh138', - Code: [ - { - Parent: '', - Label: 'Yes', - Value: '1', - }, - { - Parent: '', - Label: 'No', - Value: '0', - }, - ], - Name: '', - }, - { - Label: 'NUCLEAR_CHARACTERS', - id: 'j6qeytgc', - Code: [ - { - Parent: '', - Label: 'Charles Montgomery Burns', - Value: '1', - }, - { - Parent: '', - Label: 'Carl Carlson', - Value: '2', - }, - { - Parent: '', - Label: 'Otto Mann', - Value: '3', - }, - { - Parent: '', - Label: 'Carl Carlson', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'BIRTH_CHARACTER', - id: 'j6z087mq', - Code: [ - { - Parent: '', - Label: 'Selma Bouvier', - Value: '1', - }, - { - Parent: '', - Label: 'Kent Brockman', - Value: '2', - }, - { - Parent: '', - Label: 'Milhouse Van Houten', - Value: '3', - }, - { - Parent: '', - Label: 'Nelson Muntz', - Value: '4', - }, - { - Parent: '', - Label: 'Crazy Cat Lady', - Value: '5', - }, - ], - Name: '', - }, - { - Label: 'CITY_BIRTH', - id: 'jbdxricm', - Code: [ - { - Parent: '', - Label: 'Albuquerque', - Value: '1', - }, - { - Parent: '', - Label: 'Springfield', - Value: '2', - }, - { - Parent: '', - Label: 'Portland', - Value: '3', - }, - { - Parent: '', - Label: 'Shelbyville', - Value: '4', - }, - { - Parent: '', - Label: 'Dagstuhl', - Value: '5', - }, - ], - Name: '', - }, - { - Label: 'Products', - id: 'j4nwh16i', - Code: [ - { - Parent: '', - Label: 'Frozen products', - Value: 'A', - }, - { - Parent: 'A', - Label: 'Ice creams', - Value: 'A1', - }, - { - Parent: 'A', - Label: 'Jasper Beardly', - Value: 'A2', - }, - { - Parent: '', - Label: 'Meat', - Value: 'B', - }, - { - Parent: 'B', - Label: 'Bacon', - Value: 'B1', - }, - { - Parent: 'B', - Label: 'Pork chop', - Value: 'B2', - }, - { - Parent: 'B', - Label: 'Chicken', - Value: 'B3', - }, - { - Value: 'C', - Label: 'Compote', - Parent: '', - }, - { - Value: 'C1', - Label: 'Powersauce', - Parent: 'C', - }, - { - Parent: '', - Label: 'Other', - Value: 'D', - }, - ], - Name: '', - }, - { - Label: 'Clownings', - id: 'j77dav9b', - Code: [ - { - Parent: '', - Label: '***Break the windows of the whole city***', - Value: '1', - }, - { - Parent: '', - Label: '***Loose the violin of his daughter playing poker***', - Value: '2', - }, - { - Parent: '', - Label: '***Kill Mr Burns***', - Value: '3', - }, - { - Parent: '', - Label: - '***Leaving a mechanical object to control the nuclear power plant***', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Clowning_Characters', - id: 'jbdyh6b5', - Code: [ - { - Parent: '', - Label: 'Jay', - Value: '1', - }, - { - Parent: '', - Label: 'Bart', - Value: '2', - }, - { - Parent: '', - Label: 'Krusty the clown', - Value: '3', - }, - { - Parent: '', - Label: 'Maggie', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Means of transport', - id: 'j6p2kivg', - Code: [ - { - Parent: '', - Label: 'Car', - Value: '1', - }, - { - Parent: '', - Label: 'Bike', - Value: '2', - }, - { - Parent: '', - Label: 'Skateboard', - Value: '3', - }, - { - Parent: '', - Label: 'Plane', - Value: '4', - }, - ], - Name: '', - }, - { - Label: 'Country', - id: 'jbdye1wa', - Code: [ - { - Parent: '', - Label: 'Brazil', - Value: '1', - }, - { - Parent: '', - Label: 'Canada', - Value: '2', - }, - { - Parent: '', - Label: 'Japan', - Value: '3', - }, - { - Parent: '', - Label: 'France', - Value: '4', - }, - { - Parent: '', - Label: '[Other country](. "Included principalities")', - Value: '5', - }, - { - Parent: '', - Label: 'Other planet', - Value: '6', - }, - ], - Name: '', - }, - ], - }, - Child: [ - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Introduction'], - id: 'j6p0ti5h', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - "We're going to test your knowledge about the simpsons series.\n**Welcome in the simspons world!**", - id: 'd1', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgfvir', - id: 'jbgdhaht', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 500, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: [ - 'Before starting, do you have any comments about the Simpsons family?', - ], - id: 'j6p3dkx6', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'COMMENT', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgm0ip', - id: 'jbgd3set', - mandatory: false, - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [ - { - Description: - 'If you are not ready, please go to the end of the questionnaire', - Expression: "$READY != '1'", - id: 'j6p6my1d', - IfTrue: 'j6z12s2d', - }, - ], - Label: ['Are you ready?'], - id: 'j6p0np9q', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'READY', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['General knowledge of the series'], - id: 'j6p0s7o5', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgf11f', - id: 'jbgd90cy', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 30, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['Who is the producer?'], - id: 'j3343qhx', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'PRODUCER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgcy2x', - id: 'jbgdjy8h', - mandatory: false, - Datatype: { - Maximum: 99, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - Decimals: 0, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['What is the current season number?'], - id: 'j6q9h8tj', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'SEASON_NUMBER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgbg33', - id: 'jbgdih2z', - mandatory: false, - Datatype: { - typeName: 'DATE', - type: 'DateDatatypeType', - Maximum: 2000, - Minimum: 2020, - Format: 'YYYY', - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: ['When was the first episode of the Simpsons?'], - id: 'j334cyqb', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - 'For your information, the date of the last broadcast was on $LAST_BROADCAST', - id: 'd11', - }, - ], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'DATEFIRST', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgieyw', - id: 'jbgddnrd', - mandatory: false, - Datatype: { - Maximum: 99, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'In your opinion, how much is the part of audience share in US for the 2016 season?', - ], - id: 'j6z06z1e', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'AUDIENCE_SHARE', - }, - ], - declarationMode: [], - Name: 'MODULE11', - }, - ], - declarationMode: [], - Name: 'MODULE1', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ["Simpsons' city"], - id: 'j3341528', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - 'This module asks about your general knowledge of the Simpsons city', - id: 'd2', - }, - ], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcgasbh', - id: 'jbgdjdkn', - mandatory: true, - CodeListReference: 'j334iumu', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which city do the Simpsons reside?'], - id: 'j3343clt', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: 'One possible answer', - id: 'd3', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'CITY', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcg9yr6', - id: 'jbgd8ghp', - CodeListReference: 'j6qdqoen', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Who is the Simpsons city mayor?'], - id: 'j6qdfhvw', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: 'Only one possible answer', - id: 'd4', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'MAYOR', - }, - { - Response: [ - { - CollectedVariableReference: 'jbcgpija', - id: 'jbgdkd7v', - CodeListReference: 'j4nwo00f', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which state do The Simpsons reside?'], - id: 'j4nw5cqz', - Declaration: [], - type: 'QuestionType', - questionType: 'SINGLE_CHOICE', - declarationMode: [], - Name: 'STATE', - }, - ], - declarationMode: [], - Name: 'MODULE2', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Characters'], - id: 'j6qe0h9q', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbdxewlq', - id: 'jbgd8qmn', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxjmst', - id: 'jbgd60vl', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxjuay', - id: 'jbgda2jo', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbdxniuw', - id: 'jbgdfssy', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['What are the pet names that the Simpsons family had?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd8qmn', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd60vl', - MappingTarget: '2', - }, - { - MappingSource: 'jbgda2jo', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdfssy', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j335cu3c', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j334akov', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: '*Several possible answers*', - id: 'd5', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'PET', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdxtl1d', - id: 'jbgdb3jx', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxvai9', - id: 'jbgdb61k', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxpltw', - id: 'jbgdl3kc', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxzx2x', - id: 'jbgdcobo', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'RADIO', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Does Jay like the following ice cream flavours?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgdb3jx', - MappingTarget: '1', - }, - { - MappingSource: 'jbgdb61k', - MappingTarget: '2', - }, - { - MappingSource: 'jbgdl3kc', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdcobo', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6p2mvca', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6p29i81', - Declaration: [ - { - declarationType: 'COMMENT', - Text: - '**Now we are going to know if you think that Jay is a gluton.**', - id: 'd12', - position: 'BEFORE_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'ICE_FLAVOUR', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdy4nhp', - id: 'jbgd6p0k', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxtanu', - id: 'jbgd9ato', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy25if', - id: 'jbgd3e0p', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxvta8', - id: 'jbgdkxne', - CodeListReference: 'jbdxh138', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Which character works in the nuclear power plant?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd6p0k', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd9ato', - MappingTarget: '2', - }, - { - MappingSource: 'jbgd3e0p', - MappingTarget: '3', - }, - { - MappingSource: 'jbgdkxne', - MappingTarget: '4', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6qeytgc', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6qefnga', - Declaration: [], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'NUCLEAR_CHARACTER', - }, - { - Response: [ - { - CollectedVariableReference: 'jbdy3nh7', - id: 'jbgd7fr6', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy6lk3', - id: 'jbgd5e9f', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdxsby0', - id: 'jbgd912x', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy7sra', - id: 'jbgd6bdy', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbdy2wyl', - id: 'jbgddyry', - CodeListReference: 'jbdxricm', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'CHECKBOX', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['In which city each character was born?'], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd7fr6', - MappingTarget: '1', - }, - { - MappingSource: 'jbgd5e9f', - MappingTarget: '2', - }, - { - MappingSource: 'jbgd912x', - MappingTarget: '3', - }, - { - MappingSource: 'jbgd6bdy', - MappingTarget: '4', - }, - { - MappingSource: 'jbgddyry', - MappingTarget: '5', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6z087mq', - }, - { - dimensionType: 'MEASURE', - dynamic: '0', - }, - ], - }, - id: 'j6yzoc6g', - Declaration: [], - type: 'QuestionType', - questionType: 'MULTIPLE_CHOICE', - declarationMode: [], - Name: 'BIRTH_CHARACTER', - }, - ], - declarationMode: [], - Name: 'MODULE3', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['General questions'], - id: 'j4nw88h2', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Kwik-E-Mart'], - id: 'j6qe237q', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgdnfk7', - id: 'jbgde5yl', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdje4w', - id: 'jbgd2x2t', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdlth7', - id: 'jbgdjypz', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdelbl', - id: 'jbgdcftu', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgd95jq', - id: 'jbgdiyfe', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdadd9', - id: 'jbgdj1wd', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdlwzk', - id: 'jbgddylk', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdfz77', - id: 'jbgd3jj6', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdepx6', - id: 'jbgd4w3k', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - { - CollectedVariableReference: 'jbgdepx7', - id: 'jbgd4w4k', - Datatype: { - Maximum: 100, - Minimum: 0, - typeName: 'NUMERIC', - Unit: 'http://id.insee.fr/unit/percent', - type: 'NumericDatatypeType', - Decimals: 1, - }, - }, - ], - Control: [ - { - Description: 'Total of percentages', - Expression: - '$PERCENTAGE_EXPENSES11 + $PERCENTAGE_EXPENSES21 + $PERCENTAGE_EXPENSES31 + $PERCENTAGE_EXPENSES41 + $PERCENTAGE_EXPENSES51 + $PERCENTAGE_EXPENSES61 + $PERCENTAGE_EXPENSES71 + $PERCENTAGE_EXPENSES81 + $PERCENTAGE_EXPENSES91 + $PERCENTAGE_EXPENSES101 != 100', - criticity: 'ERROR', - FailMessage: - 'The sum of percentages is: $SUM_EXPENSES %. The total of percentages must be equal to 100%.', - id: 'j6z2680o', - }, - ], - depth: 3, - FlowControl: [], - Label: [ - "Please, specify the percentage of Jay's expenses in the Kwik-E-Mart for each product?", - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgde5yl', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgd2x2t', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdjypz', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdcftu', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdiyfe', - MappingTarget: '5 1', - }, - { - MappingSource: 'jbgdj1wd', - MappingTarget: '6 1', - }, - { - MappingSource: 'jbgddylk', - MappingTarget: '7 1', - }, - { - MappingSource: 'jbgd3jj6', - MappingTarget: '8 1', - }, - { - MappingSource: 'jbgd4w3k', - MappingTarget: '9 1', - }, - { - MappingSource: 'jbgd4w4k', - MappingTarget: '10 1', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j4nwh16i', - }, - { - dimensionType: 'MEASURE', - Label: 'Percentage', - dynamic: '0', - }, - ], - }, - id: 'j4nwc63q', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'PERCENTAGE_EXPENSES', - }, - ], - declarationMode: [], - Name: 'MODULE41', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Clowning'], - id: 'j6qejudb', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd9vqv', - id: 'jbgd8tyr', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgden0i', - id: 'jbgdep36', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdndju', - id: 'jbgdjjgi', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdfwg9', - id: 'jbgdgh6k', - CodeListReference: 'jbdyh6b5', - Datatype: { - Pattern: '', - typeName: 'TEXT', - visualizationHint: 'DROPDOWN', - type: 'TextDatatypeType', - MaxLength: 1, - }, - }, - { - CollectedVariableReference: 'jbgdd3ky', - id: 'jbgdit3o', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdm9lm', - id: 'jbgd366k', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdcdhv', - id: 'jbgdax06', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdjlit', - id: 'jbgdfo1j', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'Who did these clownings and tell us what you remember?', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd8tyr', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgdep36', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdjjgi', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdgh6k', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdit3o', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd366k', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgdax06', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgdfo1j', - MappingTarget: '4 2', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j77dav9b', - }, - { - dimensionType: 'MEASURE', - Label: 'Clowning', - dynamic: '0', - }, - { - dimensionType: 'MEASURE', - Label: 'Remember?', - dynamic: '0', - }, - ], - }, - id: 'j4nw0rr6', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'CLOWNING', - }, - ], - declarationMode: [], - Name: 'MODULE42', - }, - { - Control: [], - depth: 2, - FlowControl: [], - genericName: 'SUBMODULE', - Label: ['Transport'], - id: 'j6qeh91y', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd1zxu', - id: 'jbgd92mb', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd8lfs', - id: 'jbgdgsat', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd56qo', - id: 'jbgdaxk2', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd4wu8', - id: 'jbgd7myn', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdak6h', - id: 'jbgdnxkt', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdmsy4', - id: 'jbgd3ef5', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2zlu', - id: 'jbgd8p1v', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd6v73', - id: 'jbgdgm0c', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdf5fg', - id: 'jbgdcppc', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2xg0', - id: 'jbgd4cm6', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdc06l', - id: 'jbgdd2lo', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb8i9', - id: 'jbgdo0ay', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdhzve', - id: 'jbgd4r2a', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd93ks', - id: 'jbgdkfpq', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfw7h', - id: 'jbgd7u52', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfavn', - id: 'jbgdgfwl', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdc199', - id: 'jbgd9cff', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdfqph', - id: 'jbgddwsp', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd8r0n', - id: 'jbgdncn8', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd3aqk', - id: 'jbgdnz6b', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdltql', - id: 'jbgdiva0', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd9um3', - id: 'jbgd7dqf', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgddj7v', - id: 'jbgdnous', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb4ym', - id: 'jbgdkfcz', - Datatype: { - typeName: 'BOOLEAN', - type: 'BooleanDatatypeType', - }, - }, - ], - Control: [], - depth: 3, - FlowControl: [], - Label: [ - 'Which of the following means of transport were used by the hero and in which country?', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgd92mb', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgdgsat', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdaxk2', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgd7myn', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgdnxkt', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd3ef5', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgd8p1v', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgdgm0c', - MappingTarget: '4 2', - }, - { - MappingSource: 'jbgdcppc', - MappingTarget: '1 3', - }, - { - MappingSource: 'jbgd4cm6', - MappingTarget: '2 3', - }, - { - MappingSource: 'jbgdd2lo', - MappingTarget: '3 3', - }, - { - MappingSource: 'jbgdo0ay', - MappingTarget: '4 3', - }, - { - MappingSource: 'jbgd4r2a', - MappingTarget: '1 4', - }, - { - MappingSource: 'jbgdkfpq', - MappingTarget: '2 4', - }, - { - MappingSource: 'jbgd7u52', - MappingTarget: '3 4', - }, - { - MappingSource: 'jbgdgfwl', - MappingTarget: '4 4', - }, - { - MappingSource: 'jbgd9cff', - MappingTarget: '1 5', - }, - { - MappingSource: 'jbgddwsp', - MappingTarget: '2 5', - }, - { - MappingSource: 'jbgdncn8', - MappingTarget: '3 5', - }, - { - MappingSource: 'jbgdnz6b', - MappingTarget: '4 5', - }, - { - MappingSource: 'jbgdiva0', - MappingTarget: '1 6', - }, - { - MappingSource: 'jbgd7dqf', - MappingTarget: '2 6', - }, - { - MappingSource: 'jbgdnous', - MappingTarget: '3 6', - }, - { - MappingSource: 'jbgdkfcz', - MappingTarget: '4 6', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '0', - CodeListReference: 'j6p2kivg', - }, - { - dimensionType: 'SECONDARY', - dynamic: '0', - CodeListReference: 'jbdye1wa', - }, - { - dimensionType: 'MEASURE', - Label: 'Means', - dynamic: '0', - }, - ], - }, - id: 'j6p2lwuj', - Declaration: [ - { - declarationType: 'INSTRUCTION', - Text: - 'Several answers possible: check off all the relevant boxes', - id: 'd10', - position: 'AFTER_QUESTION_TEXT', - }, - ], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'TRAVEL', - }, - ], - declarationMode: [], - Name: 'MODULE43', - }, - ], - declarationMode: [], - Name: 'MODULE4', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Favourite characters'], - id: 'j6qfx9qe', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbgd3fkz', - id: 'jbgdl5jb', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdf2md', - id: 'jbgd8lwo', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdfle1', - id: 'jbgdbfag', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdix8x', - id: 'jbgdlgja', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd782k', - id: 'jbgd745y', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd68rf', - id: 'jbgdjkts', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdfoj4', - id: 'jbgdcax7', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdb116', - id: 'jbgdjye1', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd7w5p', - id: 'jbgd5jet', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgd8rj2', - id: 'jbgdjw90', - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - { - CollectedVariableReference: 'jbgdidnp', - id: 'jbgdfndq', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd47wz', - id: 'jbgd7osi', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdj2nn', - id: 'jbgd7bnw', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd2ipx', - id: 'jbgd9k71', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgd4pe3', - id: 'jbgdimks', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdjgb1', - id: 'jbgdjquz', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdb5c1', - id: 'jbgdd2w3', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdju9y', - id: 'jbgdkosc', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdatyx', - id: 'jbgdk0x4', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - { - CollectedVariableReference: 'jbgdi1dt', - id: 'jbgd2wgf', - Datatype: { - Maximum: 120, - Minimum: 0, - typeName: 'NUMERIC', - type: 'NumericDatatypeType', - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: [ - 'Please, complete the following grid with your favourite characters', - ], - ResponseStructure: { - Mapping: [ - { - MappingSource: 'jbgdl5jb', - MappingTarget: '1 1', - }, - { - MappingSource: 'jbgd8lwo', - MappingTarget: '2 1', - }, - { - MappingSource: 'jbgdbfag', - MappingTarget: '3 1', - }, - { - MappingSource: 'jbgdlgja', - MappingTarget: '4 1', - }, - { - MappingSource: 'jbgd745y', - MappingTarget: '5 1', - }, - { - MappingSource: 'jbgdjkts', - MappingTarget: '6 1', - }, - { - MappingSource: 'jbgdcax7', - MappingTarget: '7 1', - }, - { - MappingSource: 'jbgdjye1', - MappingTarget: '8 1', - }, - { - MappingSource: 'jbgd5jet', - MappingTarget: '9 1', - }, - { - MappingSource: 'jbgdjw90', - MappingTarget: '10 1', - }, - { - MappingSource: 'jbgdfndq', - MappingTarget: '1 2', - }, - { - MappingSource: 'jbgd7osi', - MappingTarget: '2 2', - }, - { - MappingSource: 'jbgd7bnw', - MappingTarget: '3 2', - }, - { - MappingSource: 'jbgd9k71', - MappingTarget: '4 2', - }, - { - MappingSource: 'jbgdimks', - MappingTarget: '5 2', - }, - { - MappingSource: 'jbgdjquz', - MappingTarget: '6 2', - }, - { - MappingSource: 'jbgdd2w3', - MappingTarget: '7 2', - }, - { - MappingSource: 'jbgdkosc', - MappingTarget: '8 2', - }, - { - MappingSource: 'jbgdk0x4', - MappingTarget: '9 2', - }, - { - MappingSource: 'jbgd2wgf', - MappingTarget: '10 2', - }, - ], - Dimension: [ - { - dimensionType: 'PRIMARY', - dynamic: '1-10', - }, - { - dimensionType: 'MEASURE', - Label: 'Name', - dynamic: '0', - }, - { - dimensionType: 'MEASURE', - Label: 'Age', - dynamic: '0', - }, - ], - }, - id: 'j6qg8rc6', - Declaration: [], - type: 'QuestionType', - questionType: 'TABLE', - declarationMode: [], - Name: 'FAVOURITE_CHARACTERS', - }, - ], - declarationMode: [], - Name: 'MODULE5', - }, - { - Control: [], - depth: 1, - FlowControl: [], - genericName: 'MODULE', - Label: ['Comment'], - id: 'j6z12s2d', - Declaration: [], - type: 'SequenceType', - Child: [ - { - Response: [ - { - CollectedVariableReference: 'jbcggt4x', - id: 'jbgd6m6e', - mandatory: false, - Datatype: { - Pattern: '', - typeName: 'TEXT', - type: 'TextDatatypeType', - MaxLength: 255, - }, - }, - ], - Control: [], - depth: 2, - FlowControl: [], - Label: ['Do you have any comment about the survey?'], - id: 'j6z0z3us', - Declaration: [], - type: 'QuestionType', - questionType: 'SIMPLE', - declarationMode: [], - Name: 'SURVEY_COMMENT', - }, - ], - declarationMode: [], - Name: 'MODULE6', - }, - ], - }, -]; diff --git a/fake-server/repo.json b/fake-server/repo.json deleted file mode 100644 index 7fff93d76..000000000 --- a/fake-server/repo.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "specs": { - "cl_hommefemme": { - "id": "cl_hommefemme", - "label": "homme ou femme", - "retrievalQuery": "getHommeFemme" - }, - "cl_ouinon": { - "id": "cl_ouinon", - "label": "oui ou non", - "retrievalQuery": "getOuiNon" - }, - "proposal": { - "id": "cl_proposal", - "label": "Proportion de salaire", - "retrievalQuery": "getProposal" - } - }, - "cLists": { - "getHommeFemme": { - "id": "cl_sexe", - "name": "cl_sexe", - "label": "Sexe", - "codes": [ - { "value": 0, "label": "Homme"}, - { "value": 1, "label": "Femme"} - ] - }, - "getOuiNon": { - "id": "cl_ouinon", - "name": "cl_ouinon", - "label": "Oui ou Non", - "codes": [ - { "value": 0, "label": "Non" }, - { "value": 1, "label": "Oui" } - ] - }, - "getProposal": { - "id": "cl_proposal", - "name": "cl_proposal", - "label": "Proportion de salaire", - "codes": [ - { "value": 0, "label": "La moitié ou plus" }, - { "value": 1, "label": "Moins de la moitié" } - ] - } - } -} \ No newline at end of file diff --git a/fake-server/series.js b/fake-server/series.js deleted file mode 100644 index ef17f5d1d..000000000 --- a/fake-server/series.js +++ /dev/null @@ -1,79 +0,0 @@ -module.exports = [ - { - id: 'serie01', - label: 'Serie 01', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie02', - label: 'Serie 02', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie03', - label: 'Serie 03', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie04', - label: 'Serie 04', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie05', - label: 'Serie 05', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie06', - label: 'Serie 06', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, - { - id: 'serie07', - label: 'Serie 07', - parent: null, - groupId: null, - subGroupId: null, - studyUnitId: null, - dataCollectionId: null, - resourcePackageId: null, - type: 'SubGroup', - }, -]; diff --git a/fake-server/server.js b/fake-server/server.js deleted file mode 100644 index 78a238843..000000000 --- a/fake-server/server.js +++ /dev/null @@ -1,249 +0,0 @@ -const restify = require('restify'); -const restifyBodyParser = require('restify-plugins').bodyParser; -const restifyQueryParser = require('restify-plugins').queryParser; -const corsMiddleware = require('restify-cors-middleware'); -const fs = require('fs'); -const server = restify.createServer(); -const listenPort = process.env.PORT || 5000; -const init = require(__dirname + '/init'); -const stamps = require(__dirname + '/stamps'); -const questionnaires = require(__dirname + '/questionnaires'); -const series = require(__dirname + '/series'); -const operations = require(__dirname + '/operations'); -const campaigns = require(__dirname + '/campaigns'); -const questionnairesRefInfos = require(__dirname + '/questionnaires-ref-infos'); -const codesListsRefInfos = require(__dirname + '/codes-lists-ref-infos'); -const units = require(__dirname + '/units'); - -const cors = corsMiddleware({ - origins: ['http://localhost:3000'], - credentials: true, - allowHeaders: ['authorization', 'Location'], -}); - -server.pre((req, res, next) => { - res.header('Access-Control-Allow-Origin', req.header('origin')); - res.header( - 'Access-Control-Allow-Headers', - req.header('Access-Control-Request-Headers'), - ); - res.header('Access-Control-Allow-Credentials', 'true'); - res.header('Access-Control-Allow-Methods', 'POST, PUT, GET, OPTIONS'); - // other headers go here.. - - if (req.method === 'OPTIONS') { - // if is preflight(OPTIONS) then response status 204(NO CONTENT) - res.header('Access-Control-Allow-Methods', 'POST, PUT, GET, OPTIONS'); - return res.send(204); - } - next(); -}); -//server.use(cors.actual); - -function getQuestionnairePosition(questionnaires, id) { - for (var i = 0; i < questionnaires.length; i++) { - if (questionnaires[i].id === id) { - return i; - } - } - - return -1; -} - -server.use(restifyBodyParser()); -server.use(restifyQueryParser()); - -server.get('/init', function (req, res, next) { - res.send(init); - next(); -}); - -server.get('/persistence/questionnaires/stamps', function (req, res, next) { - res.send(stamps); - next(); -}); - -server.get( - '/persistence/questionnaires/search/meta', - function (req, res, next) { - const questionnaires1 = questionnaires - .filter(q => q.owner === req.query.owner) - .map(question => { - return { - Label: question.Label, - id: question.id, - lastUpdatedDate: question.lastUpdatedDate, - final: question.final, - DataCollection: question.DataCollection, - TargetMode: question.TargetMode, - }; - }); - res.send(questionnaires1); - next(); - }, -); - -server.get('/persistence/questionnaire/:id', function (req, res, next) { - var position = getQuestionnairePosition(questionnaires, req.params.id); - var questionnaire = position !== -1 ? questionnaires[position] : {}; - res.send(questionnaire); - next(); -}); - -server.put('/persistence/questionnaire/:id', function (req, res, next) { - var qr = req.body; - var position = getQuestionnairePosition(questionnaires, req.params.id); - if (position > -1) { - questionnaires.splice(position, 1); - } - questionnaires.push(qr); - res.send(); - next(); -}); - -server.post('/persistence/questionnaires', function (req, res, next) { - var qr = req.body; - questionnaires.push(qr); - res.header( - 'Location', - 'http://' + req.headers.host + '/questionnaires/' + qr.id, - ); - res.send(); - next(); -}); - -server.get('/search/series', function (req, res, next) { - res.send(series); - next(); -}); - -server.get('/search/series/:id/operations', function (req, res, next) { - res.send( - operations.filter(function (o) { - return o.parent === req.params.id; - }), - ); - next(); -}); - -server.get('/search/operations/:id/collections', function (req, res, next) { - res.send( - campaigns.filter(function (c) { - return c.parent === req.params.id; - }), - ); - next(); -}); - -server.get('/search/context/collection/:id', function (req, res, next) { - var campaign = campaigns.filter(function (c) { - return c.id === req.params.id; - })[0]; - - var operation = operations.filter(function (o) { - return campaign && o.id === campaign.parent; - })[0]; - - res.send({ - dataCollectionId: req.params.id, - serieId: operation && operation.parent, - operationId: campaign && campaign.parent, - }); - next(); -}); - -server.post('/search', function (req, res, next) { - var body = JSON.parse(req.body); - var typeItem = body.types[0]; - var result = []; - - if (typeItem === 'Instrument') { - result = questionnairesRefInfos; - } else { - result = codesListsRefInfos; - } - - var params = req.params; - - Object.keys(params).forEach(function (key) { - if (params[key] !== '') { - result = result.filter(function (qr) { - return qr[key] === params[key]; - }); - } - }); - - if (body.filter !== '') { - result = result.filter(function (qr) { - return qr.title.search(body.filter) !== -1; - }); - } - - res.send(result); - - next(); -}); - -server.get('/meta-data/units', function (req, res, next) { - res.send( - units.map(function (u) { - return { - id: u.uri, - uri: u.uri, - label: u.label, - }; - }), - ); - next(); -}); - -function setResponseHeaders(res, filename) { - res.header('Content-disposition', 'inline; filename=' + filename); - res.header('Content-type', 'application/pdf'); -} - -server.post( - '/transform/visualize/:dataCollection/:questionnaire', - (req, res, next) => { - res.end('http://google.fr'); - }, -); -server.post('/transform/visualize-pdf', (req, res, next) => { - const filename = __dirname + '/test.pdf'; - const data = fs.readFileSync(filename); - res.writeHead(200, { - 'Content-Type': 'application/pdf', - 'Content-Disposition': 'attachment; filename=some_file.pdf', - 'Content-Length': data.length, - 'Access-Control-Expose-Headers': 'Content-Disposition', - }); - res.end(data); -}); - -server.post('/transform/visualize-ddi', (req, res, next) => { - const filename = __dirname + '/test.xml'; - const data = fs.readFileSync(filename); - res.writeHead(200, { - 'Content-Type': 'application/xml', - 'Content-Disposition': 'attachment; filename=some_file.xml', - 'Content-Length': data.length, - 'Access-Control-Expose-Headers': 'Content-Disposition', - }); - res.end(data); -}); - -server.post('/transform/visualize-spec', (req, res, next) => { - const filename = __dirname + '/test.odt'; - const data = fs.readFileSync(filename); - res.writeHead(200, { - 'Content-Type': 'application/vnd.oasis.opendocument.text', - 'Content-Disposition': 'attachment; filename=some_file.odt', - 'Content-Length': data.length, - 'Access-Control-Expose-Headers': 'Content-Disposition', - }); - res.end(data); -}); - -console.log('listening in http://localhost:' + listenPort); - -server.listen(listenPort); diff --git a/fake-server/stamps.js b/fake-server/stamps.js deleted file mode 100644 index abe875f69..000000000 --- a/fake-server/stamps.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = [ - { - id: 'DR59-SNDI', - label: 'DR59-SNDI', - }, - { - id: 'DG75-L201', - label: 'DG75-L201', - }, -]; diff --git a/fake-server/test.odt b/fake-server/test.odt deleted file mode 100644 index 8da4fc50a9fc2b047cd054a5b4682191cd00f0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8074 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 diff --git a/fake-server/test.pdf b/fake-server/test.pdf deleted file mode 100644 index 978439cbbc5e3b19c6cc2a741e2b398ef289f6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65582 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 U9sjl7ApeJ)KqN{^Q8}^y1>26HQvd(} diff --git a/fake-server/test.xml b/fake-server/test.xml deleted file mode 100644 index 63c125365..000000000 --- a/fake-server/test.xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fake-server/units.js b/fake-server/units.js deleted file mode 100644 index 31c7e57e7..000000000 --- a/fake-server/units.js +++ /dev/null @@ -1,82 +0,0 @@ -module.exports = [ - { - uri: 'http://id.insee.fr/unit/euro', - label: '€', - }, - { - uri: 'http://id.insee.fr/unit/keuro', - label: 'k€', - }, - { - uri: 'http://id.insee.fr/unit/percent', - label: '%', - }, - { - uri: 'http://id.insee.fr/unit/heure', - label: 'heures', - }, - { - uri: 'http://id.insee.fr/unit/jour', - label: 'jours', - }, - { - uri: 'http://id.insee.fr/unit/semaine', - label: 'semaines', - }, - { - uri: 'http://id.insee.fr/unit/mois', - label: 'mois', - }, - { - uri: 'http://id.insee.fr/unit/annee', - label: 'années', - }, - { - uri: 'http://id.insee.fr/unit/watt', - label: 'W', - }, - { - uri: 'http://id.insee.fr/unit/kilowatt', - label: 'kW', - }, - { - uri: 'http://id.insee.fr/unit/megawatt', - label: 'MW', - }, - { - uri: 'http://id.insee.fr/unit/megawattpcs', - label: 'MW PCS', - }, - { - uri: 'http://id.insee.fr/unit/kilowattthermique', - label: 'kWth', - }, - { - uri: 'http://id.insee.fr/unit/tonne', - label: 'tonnes', - }, - { - uri: 'http://id.insee.fr/unit/tonnematiereseche', - label: 'tonnes matières sèches', - }, - { - uri: 'http://id.insee.fr/unit/degrecelsius', - label: '°C', - }, - { - uri: 'http://id.insee.fr/unit/bar', - label: 'bars', - }, - { - uri: 'http://id.insee.fr/unit/litre', - label: 'litres', - }, - { - uri: 'http://id.insee.fr/unit/metre', - label: 'mètres', - }, - { - uri: 'http://id.insee.fr/unit/metrecarre', - label: 'mètres carrés', - }, -]; diff --git a/public/index.html b/index.html similarity index 85% rename from public/index.html rename to index.html index 444321e22..4f801da8e 100644 --- a/public/index.html +++ b/index.html @@ -2,19 +2,19 @@ - + - + - + - + Pogues
+