From e0b78c7825e032580c859da76ff1c8f38ff38e0e Mon Sep 17 00:00:00 2001 From: "Nico Pfiffner (nipfif)" Date: Wed, 13 Mar 2024 18:00:34 +0100 Subject: [PATCH] feat: Add option for 'all-in-one consent' to File Uploader. --- .../0047_fileuploader_combined_consent.py | 18 +++++++++++ ddm/models/core.py | 11 +++++++ ddm/static/ddm/vue/css/vue_uploader.css | 2 +- ddm/static/ddm/vue/js/vue_uploader.js | 2 +- ddm/static/ddm/vue/js/vue_uploader.js.map | 2 +- ddm/templates/ddm/public/data_donation.html | 1 - ddm/views/admin/data_donations.py | 4 +-- docs/modules/ROOT/pages/for_researchers.adoc | 20 ++++++++----- frontend/src/UploaderApp.vue | 5 ++-- frontend/src/components/FileUploader.vue | 30 +++++++++---------- frontend/src/translations/file_uploader.json | 6 ---- 11 files changed, 63 insertions(+), 38 deletions(-) create mode 100644 ddm/migrations/0047_fileuploader_combined_consent.py diff --git a/ddm/migrations/0047_fileuploader_combined_consent.py b/ddm/migrations/0047_fileuploader_combined_consent.py new file mode 100644 index 0000000..096e7ee --- /dev/null +++ b/ddm/migrations/0047_fileuploader_combined_consent.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2024-03-13 15:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ddm', '0046_donationblueprint_expected_fields_regex_matching'), + ] + + operations = [ + migrations.AddField( + model_name='fileuploader', + name='combined_consent', + field=models.BooleanField(default=False, help_text='If enabled, participants will be asked to consent to submit all uploaded data at once. Otherwise, participant will be asked to consent to the submission of the data separately for each blueprint.', verbose_name='All-in-one consent'), + ), + ] diff --git a/ddm/models/core.py b/ddm/models/core.py index 20db8f0..8e34fa6 100644 --- a/ddm/models/core.py +++ b/ddm/models/core.py @@ -326,6 +326,8 @@ def get_donation_info(self): 'n_success': donations.filter(status='success').count(), 'n_pending': donations.filter(status='pending').count(), 'n_failed': donations.filter(status='failed').count(), + 'n_consent': donations.filter(status='success', consent=True).count(), + 'n_no_consent': donations.filter(status='success', consent=False).count(), 'n_no_data_extracted': donations.filter(status='nothing extracted').count() } return donation_info @@ -372,6 +374,14 @@ class UploadTypes(models.TextChoices): verbose_name='Upload type', ) + combined_consent = models.BooleanField( + default=False, + verbose_name='All-in-one consent', + help_text='If enabled, participants will be asked to consent to submit ' + 'all uploaded data at once. Otherwise, participant will be asked to ' + 'consent to the submission of the data separately for each blueprint.' + ) + def __str__(self): return self.name @@ -385,6 +395,7 @@ def get_configs(self, participant_data=None): configs = { 'upload_type': self.upload_type, 'name': self.name, + 'combined_consent': self.combined_consent, 'blueprints': [bp.get_config() for bp in blueprints], 'instructions': [{ 'index': i.index, diff --git a/ddm/static/ddm/vue/css/vue_uploader.css b/ddm/static/ddm/vue/css/vue_uploader.css index cec8557..3389957 100644 --- a/ddm/static/ddm/vue/css/vue_uploader.css +++ b/ddm/static/ddm/vue/css/vue_uploader.css @@ -1 +1 @@ -.carousel[data-v-2c67d9b8]{min-height:250px}.carousel-control-next[data-v-2c67d9b8],.carousel-control-prev[data-v-2c67d9b8]{width:auto}.carousel-inner[data-v-2c67d9b8]{padding-left:42px;padding-right:42px}@media (max-width:768px){.carousel-inner[data-v-2c67d9b8]{padding-left:10px;padding-right:10px}.carousel-control-next[data-v-2c67d9b8],.carousel-control-prev[data-v-2c67d9b8]{width:30px;opacity:.1}}.carousel-item[data-v-2c67d9b8]{transition:transform .3s ease,opacity .3s ease-out}.carousel-indicators[data-v-2c67d9b8]{position:static;padding-top:20px}.accordion-button[data-v-482dae14]:focus{outline:none;box-shadow:none}.accordion-button[data-v-482dae14]:not(.collapsed){background-color:#fff;color:#000;border-bottom:none;box-shadow:none}.accordion-button[data-v-482dae14]{color:#000;border-bottom:none}.accordion-button[data-v-482dae14]:not(.collapsed):after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.accordion-button[data-v-482dae14]{border-radius:0!important}@media (max-width:768px){.accordion-body[data-v-482dae14]{padding:10px 5px}}.form-check-label[data-v-482dae14]{cursor:pointer}.ul-status-icon[data-v-482dae14]{font-size:2.5rem}.ul-status p[data-v-482dae14],.ul-status-description p[data-v-482dae14],.ul-status-message p[data-v-482dae14],.ul-status-message ul[data-v-482dae14]{margin:0}.text-grey[data-v-482dae14]{color:#d0d0d0}.bp-description[data-v-482dae14]{font-weight:700}.ul-data-container[data-v-482dae14]{display:block}.ul-data-condensed[data-v-482dae14]{max-height:250px;overflow:hidden}.ul-data-condensed table[data-v-482dae14]{color:gray}.ul-data-expanded[data-v-482dae14]{color:#000}.ul-data-container th[data-v-482dae14]{position:sticky;top:0;z-index:1;background-color:#fff!important;box-shadow:0 1px #000}.ul-data-expansion-control[data-v-482dae14]{text-align:center;z-index:10;position:relative;cursor:pointer;border-bottom:1px solid #000}.control-expanded[data-v-482dae14]{background:#fff;margin-top:0;height:30px}.control-condensed[data-v-482dae14]{background:#fff;background:linear-gradient(180deg,hsla(0,0%,100%,0),#fafafa 50%);height:75px;margin-top:-74px;padding-top:45px}.fs-09[data-v-482dae14]{font-size:.9rem}.w-small[data-v-482dae14]{max-width:33px}.consent-question-container[data-v-482dae14]{width:100%}.feedback-col[data-v-482dae14]{padding-left:46px}.extraction-information-container[data-v-482dae14]{padding-top:6px}.ul-status[data-v-482dae14]{border-top:1px solid #212529}.extraction-information-container .ul-status[data-v-482dae14]:last-of-type{border-bottom:1px solid #212529}.text-orange[data-v-482dae14]{color:#ef7000}.upload-other a[data-v-482dae14]{color:#767676!important}.ul-status-message[data-v-482dae14]{padding-left:25px}.ul-data-container table[data-v-482dae14]{background:#e3e3e31c;table-layout:fixed;max-width:1000px;width:1000px}.ul-data-container table td[data-v-482dae14]{max-width:33%;word-break:break-all}.btn-secondary[data-v-482dae14]:hover{color:#fff!important}#uapp{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50}.default-modal{background:#fff;z-index:2000;position:fixed;top:35%;margin-left:auto;margin-right:auto;left:0;right:0;width:30%;border-radius:5px}@media (max-width:768px){.default-modal{width:85%;top:5%;max-height:90%;overflow-y:scroll}}@media (min-width:769px){.default-modal{width:50%}}.modal-backdrop{position:fixed;height:100%;width:100%;background:#959595;opacity:.75;z-index:1000}.custom-modal-container{width:100%;max-width:none;-webkit-animation:fade-in-right .6s ease forwards;animation:fade-in-right .6s ease forwards}.custom-modal-content{background:#212529!important;color:#fff!important;border:none;border-radius:0;font-size:2.5rem!important;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;padding-bottom:30px;box-shadow:0 3px #ffffff17}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}}@keyframes fade-in-right{0%{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}}.dot-floating{position:relative;width:12px;height:12px;border-radius:6px;background-color:#009c94;color:#009c94;-webkit-animation:dotFloating 3s cubic-bezier(.15,.6,.9,.1) infinite;animation:dotFloating 3s cubic-bezier(.15,.6,.9,.1) infinite}.dot-floating:after,.dot-floating:before{content:"";display:inline-block;position:absolute;top:0}.dot-floating:before{left:-14px;-webkit-animation:dotFloatingBefore 3s ease-in-out infinite;animation:dotFloatingBefore 3s ease-in-out infinite}.dot-floating:after,.dot-floating:before{width:12px;height:12px;border-radius:6px;background-color:#009c94;color:#009c94}.dot-floating:after{left:-26px;-webkit-animation:dotFloatingAfter 3s cubic-bezier(.4,0,1,1) infinite;animation:dotFloatingAfter 3s cubic-bezier(.4,0,1,1) infinite}.ddm-btn{background-color:#1a1a1a;color:#fff!important;border-radius:5px;border:1px solid #8e8e8e;padding:3px 10px!important;font-size:.9rem;text-decoration:none}.color-blue{color:#0068b3}@-webkit-keyframes dotFloating{0%{left:calc(-50% - 5px)}75%{left:calc(50% + 105px)}to{left:calc(50% + 105px)}}@keyframes dotFloating{0%{left:calc(-50% - 5px)}75%{left:calc(50% + 105px)}to{left:calc(50% + 105px)}}@-webkit-keyframes dotFloatingBefore{0%{left:-50px}50%{left:-14px}75%{left:-50px}to{left:-50px}}@keyframes dotFloatingBefore{0%{left:-50px}50%{left:-14px}75%{left:-50px}to{left:-50px}}@-webkit-keyframes dotFloatingAfter{0%{left:-100px}50%{left:-26px}75%{left:-100px}to{left:-100px}}@keyframes dotFloatingAfter{0%{left:-100px}50%{left:-26px}75%{left:-100px}to{left:-100px}} \ No newline at end of file +.carousel[data-v-2c67d9b8]{min-height:250px}.carousel-control-next[data-v-2c67d9b8],.carousel-control-prev[data-v-2c67d9b8]{width:auto}.carousel-inner[data-v-2c67d9b8]{padding-left:42px;padding-right:42px}@media (max-width:768px){.carousel-inner[data-v-2c67d9b8]{padding-left:10px;padding-right:10px}.carousel-control-next[data-v-2c67d9b8],.carousel-control-prev[data-v-2c67d9b8]{width:30px;opacity:.1}}.carousel-item[data-v-2c67d9b8]{transition:transform .3s ease,opacity .3s ease-out}.carousel-indicators[data-v-2c67d9b8]{position:static;padding-top:20px}.accordion-button[data-v-d0eda75a]:focus{outline:none;box-shadow:none}.accordion-button[data-v-d0eda75a]:not(.collapsed){background-color:#fff;color:#000;border-bottom:none;box-shadow:none}.accordion-button[data-v-d0eda75a]{color:#000;border-bottom:none}.accordion-button[data-v-d0eda75a]:not(.collapsed):after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E")}.accordion-button[data-v-d0eda75a]{border-radius:0!important}@media (max-width:768px){.accordion-body[data-v-d0eda75a]{padding:10px 5px}}.form-check-label[data-v-d0eda75a]{cursor:pointer}.ul-status-icon[data-v-d0eda75a]{font-size:2.5rem}.ul-status p[data-v-d0eda75a],.ul-status-description p[data-v-d0eda75a],.ul-status-message p[data-v-d0eda75a],.ul-status-message ul[data-v-d0eda75a]{margin:0}.text-grey[data-v-d0eda75a]{color:#d0d0d0}.bp-description[data-v-d0eda75a]{font-weight:700}.ul-data-container[data-v-d0eda75a]{display:block}.ul-data-condensed[data-v-d0eda75a]{max-height:250px;overflow:hidden}.ul-data-condensed table[data-v-d0eda75a]{color:gray}.ul-data-expanded[data-v-d0eda75a]{color:#000}.ul-data-container th[data-v-d0eda75a]{position:sticky;top:0;z-index:1;background-color:#fff!important;box-shadow:0 1px #000}.ul-data-expansion-control[data-v-d0eda75a]{text-align:center;z-index:10;position:relative;cursor:pointer;border-bottom:1px solid #000}.control-expanded[data-v-d0eda75a]{background:#fff;margin-top:0;height:30px}.control-condensed[data-v-d0eda75a]{background:#fff;background:linear-gradient(180deg,hsla(0,0%,100%,0),#fafafa 50%);height:75px;margin-top:-74px;padding-top:45px}.fs-09[data-v-d0eda75a]{font-size:.9rem}.w-small[data-v-d0eda75a]{max-width:33px}.consent-question-container[data-v-d0eda75a]{width:100%}.feedback-col[data-v-d0eda75a]{padding-left:46px}.extraction-information-container[data-v-d0eda75a]{padding-top:6px}.ul-status[data-v-d0eda75a]{border-top:1px solid #212529}.extraction-information-container .ul-status[data-v-d0eda75a]:last-of-type{border-bottom:1px solid #212529}.text-orange[data-v-d0eda75a]{color:#ef7000}.upload-other a[data-v-d0eda75a]{color:#767676!important}.ul-status-message[data-v-d0eda75a]{padding-left:25px}.ul-data-container table[data-v-d0eda75a]{background:#e3e3e31c;table-layout:fixed;max-width:1000px;width:1000px}.ul-data-container table td[data-v-d0eda75a]{max-width:33%;word-break:break-all}.btn-secondary[data-v-d0eda75a]:hover{color:#fff!important}#uapp{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50}.default-modal{background:#fff;z-index:2000;position:fixed;top:35%;margin-left:auto;margin-right:auto;left:0;right:0;width:30%;border-radius:5px}@media (max-width:768px){.default-modal{width:85%;top:5%;max-height:90%;overflow-y:scroll}}@media (min-width:769px){.default-modal{width:50%}}.modal-backdrop{position:fixed;height:100%;width:100%;background:#959595;opacity:.75;z-index:1000}.custom-modal-container{width:100%;max-width:none;-webkit-animation:fade-in-right .6s ease forwards;animation:fade-in-right .6s ease forwards}.custom-modal-content{background:#212529!important;color:#fff!important;border:none;border-radius:0;font-size:2.5rem!important;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;padding-bottom:30px;box-shadow:0 3px #ffffff17}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}}@keyframes fade-in-right{0%{opacity:0;transform:translateX(-15px)}to{opacity:1;transform:translateX(0)}}.dot-floating{position:relative;width:12px;height:12px;border-radius:6px;background-color:#009c94;color:#009c94;-webkit-animation:dotFloating 3s cubic-bezier(.15,.6,.9,.1) infinite;animation:dotFloating 3s cubic-bezier(.15,.6,.9,.1) infinite}.dot-floating:after,.dot-floating:before{content:"";display:inline-block;position:absolute;top:0}.dot-floating:before{left:-14px;-webkit-animation:dotFloatingBefore 3s ease-in-out infinite;animation:dotFloatingBefore 3s ease-in-out infinite}.dot-floating:after,.dot-floating:before{width:12px;height:12px;border-radius:6px;background-color:#009c94;color:#009c94}.dot-floating:after{left:-26px;-webkit-animation:dotFloatingAfter 3s cubic-bezier(.4,0,1,1) infinite;animation:dotFloatingAfter 3s cubic-bezier(.4,0,1,1) infinite}.ddm-btn{background-color:#1a1a1a;color:#fff!important;border-radius:5px;border:1px solid #8e8e8e;padding:3px 10px!important;font-size:.9rem;text-decoration:none}.color-blue{color:#0068b3}@-webkit-keyframes dotFloating{0%{left:calc(-50% - 5px)}75%{left:calc(50% + 105px)}to{left:calc(50% + 105px)}}@keyframes dotFloating{0%{left:calc(-50% - 5px)}75%{left:calc(50% + 105px)}to{left:calc(50% + 105px)}}@-webkit-keyframes dotFloatingBefore{0%{left:-50px}50%{left:-14px}75%{left:-50px}to{left:-50px}}@keyframes dotFloatingBefore{0%{left:-50px}50%{left:-14px}75%{left:-50px}to{left:-50px}}@-webkit-keyframes dotFloatingAfter{0%{left:-100px}50%{left:-26px}75%{left:-100px}to{left:-100px}}@keyframes dotFloatingAfter{0%{left:-100px}50%{left:-26px}75%{left:-100px}to{left:-100px}} \ No newline at end of file diff --git a/ddm/static/ddm/vue/js/vue_uploader.js b/ddm/static/ddm/vue/js/vue_uploader.js index 5bc5bc4..f284ff4 100644 --- a/ddm/static/ddm/vue/js/vue_uploader.js +++ b/ddm/static/ddm/vue/js/vue_uploader.js @@ -1,2 +1,2 @@ -(function(){"use strict";var e={4043:function(e,t,n){var a=n(821);const o={class:"row"},i={class:"col"},r={class:"modal custom-modal",id:"processingModal",ref:"processingModal",style:{display:"none"}},l={class:"modal-dialog modal-dialog-centered custom-modal-container"},s={class:"modal-content fs-1 text-center custom-modal-content"},d={class:"p-3 modal-message"},c=(0,a._)("div",{class:"dot-floating"},null,-1),u={class:"default-modal",id:"infoModal",ref:"infoModal",style:{display:"none"}},p={class:"modal-body d-flex flex-row align-items-center pt-5"},h=(0,a._)("div",{class:"ps-2 pe-3 color-blue"},[(0,a._)("i",{class:"bi bi-info-circle-fill fs-1"})],-1),f={class:"modal-footer"},m={class:"default-modal",id:"statusModal",ref:"statusModal",style:{display:"none"}},g={class:"modal-body d-flex flex-row align-items-center pt-5"},b=(0,a._)("div",{class:"ps-2 pe-3 color-blue"},[(0,a._)("i",{class:"bi bi-info-circle-fill fs-1"})],-1),y={id:"statusModalMsg",ref:"statusModalMsg"},w={class:"modal-footer"},_={class:"modal-backdrop",ref:"modalBackdrop",style:{display:"none"}};function v(e,t,n,v,D,z){const x=(0,a.up)("FileUploader");return(0,a.wg)(),(0,a.iD)(a.HY,null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(D.parsedUploadConfig,((e,t)=>((0,a.wg)(),(0,a.j4)(x,{key:t,"component-id":t,"expects-zip":"zip file"===e.upload_type,name:e.name,blueprints:e.blueprints,instructions:e.instructions,"exception-url":this.exceptionUrl,pooled:this.pooled,onChangedData:z.updatePostData},null,8,["component-id","expects-zip","name","blueprints","instructions","exception-url","pooled","onChangedData"])))),128)),(0,a._)("div",o,[(0,a._)("div",i,[(0,a._)("button",{class:"flow-btn",type:"button",onClick:t[0]||(t[0]=e=>z.processData(!1))},(0,a.zw)(e.$t("next-btn-label"))+"  ›",1)])]),(0,a._)("div",r,[(0,a._)("div",l,[(0,a._)("div",s,[(0,a._)("div",d,(0,a.zw)(e.$t("data-submit-wait")),1),c])])],512),(0,a._)("div",u,[(0,a._)("div",p,[h,(0,a._)("div",null,(0,a.zw)(this.infoModalMsg),1)]),(0,a._)("div",f,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeInfoModal",onClick:t[1]||(t[1]=(...e)=>z.closeInfoModal&&z.closeInfoModal(...e))},"OK")])],512),(0,a._)("div",m,[(0,a._)("div",g,[b,(0,a._)("div",y,null,512)]),(0,a._)("div",w,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"cancelStatusModal",onClick:t[2]||(t[2]=(...e)=>z.closeStatusModal&&z.closeStatusModal(...e))},(0,a.zw)(e.$t("cancel-label")),1),(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeStatusModal",onClick:t[3]||(t[3]=e=>z.processData(!0))},(0,a.zw)(e.$t("continue-anyway-label")),1)])],512),(0,a._)("div",_,null,512)],64)}n(6699);const D=e=>((0,a.dD)("data-v-482dae14"),e=e(),(0,a.Cn)(),e),z={class:"mb-5"},x={class:"float-left bg-dark text-white pt-2 ps-2 pb-1 rounded-top"},k={class:"col-sm"},S=["id"],$={class:"accordion-body border"},E={class:"row align-items-center"},M=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-signpost"})],-1))),I={class:"col-auto"},T=["id"],U=["data-bs-target","aria-controls"],O=["id","data-bs-parent"],C={class:"accordion-body ps-0 pe-0"},j={class:"accordion-body border"},F={class:"row align-items-center"},H=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-upload"})],-1))),A={class:"col-auto ul-status-description"},Y={key:0},P={key:1},q={class:"col ul-status-message"},N={class:"select-file-btn"},B=["name"],L=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("div",{class:"clearfix"},[(0,a._)("p",null,[(0,a._)("span",{class:"spinner-border float-right me-3",role:"status"},[(0,a._)("span",{class:"sr-only"})])])])],-1))),Z={class:"col ul-status-description"},K=D((()=>(0,a._)("div",{class:"col ul-status-message"},null,-1))),J=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-file-check"})],-1))),V={class:"col ul-status-description"},R={class:"text-success fw-bold"},G=D((()=>(0,a._)("div",{class:"col ul-status-message"},null,-1))),W=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-exclamation-diamond text-orange"})],-1))),Q={class:"col-auto ul-status-description"},X={class:"fw-bold"},ee={class:"col ul-status-message"},te=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-x-octagon text-danger"})],-1))),ne={class:"col-auto ul-status-description"},ae={class:"fw-bold"},oe={class:"col ul-status-message"},ie={class:"text-danger"},re={class:"accordion-body border border-bottom-0"},le={class:"row align-items-center"},se=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-clipboard-data"})],-1))),de={class:"col extraction-information-container"},ce={class:"col"},ue={class:"col"},pe={class:"accordion-body border border-top-0"},he={class:"container ul-feedback-container"},fe={class:"row"},me={class:"col extraction-information-container"},ge=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-fill text-grey"})],-1))),be={class:"col"},ye={class:"col bp-description pb-2"},we={class:"col bp-ul-status"},_e={class:"row pb-2"},ve=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-check-fill text-success"})],-1))),De={class:"col"},ze={class:"col bp-description pb-2"},xe={class:"col bp-ul-status"},ke={class:"row pt-2"},Se={class:"col feedback-col"},$e={class:"data-donation-container pb-3 pt-3 fs-09"},Ee=["id"],Me=["id"],Ie={key:1},Te={class:"pb-2"},Ue=["onClick"],Oe=["onClick"],Ce={class:"pb-3"},je=["id"],Fe=["id","onClick"],He=["id"],Ae={key:0,class:"row"},Ye={class:"col feedback-col pb-5 pt-1"},Pe={class:"fw-bold"},qe={class:"consent-question-container"},Ne={class:"question-choice-item pt-3 pt-lg-0"},Be=["for"],Le=["id","name","onUpdate:modelValue"],Ze={class:"question-choice-item pt-3 pt-lg-0"},Ke=["for"],Je=["id","name","onUpdate:modelValue"],Ve=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-x-fill text-grey"})],-1))),Re={class:"col-4 bp-description"},Ge={class:"col bp-ul-status"},We={key:1},Qe=D((()=>(0,a._)("div",{class:"col-auto bp-ul-data"},null,-1))),Xe=D((()=>(0,a._)("div",{class:"col-auto bp-ul-consent"},null,-1))),et=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-x-fill text-danger"})],-1))),tt={class:"col-4 bp-description"},nt={class:"col bp-ul-status"},at={key:1},ot=D((()=>(0,a._)("div",{class:"col-auto bp-ul-data"},null,-1))),it=D((()=>(0,a._)("div",{class:"col-auto bp-ul-consent"},null,-1))),rt={key:0,class:"row mt-5"},lt={class:"col feedback-col pb-5 pt-1"},st={class:"fw-bold"},dt={class:"consent-question-container"},ct={class:"question-choice-item pt-3 pt-lg-0"},ut={class:"form-check-label rb-cb-label",for:"pool-donate-agree"},pt={class:"question-choice-item pt-3 pt-lg-0"},ht={class:"form-check-label rb-cb-label",for:"pool-donate-disagree"},ft={class:"default-modal",id:"ulInfoModal",ref:"ulInfoModal",style:{display:"none"}},mt={class:"modal-body d-flex flex-row align-items-center pt-5"},gt=D((()=>(0,a._)("div",{class:"ps-2 pe-3 ul-status-icon"},[(0,a._)("i",{id:"ul-modal-info-icon",class:"bi bi-file-check"})],-1))),bt={class:"ul-status-description"},yt=["innerHTML"],wt={key:0},_t={class:"text-danger pb-3"},vt={class:"modal-footer"},Dt={class:"modal-backdrop",ref:"modalBackdrop",style:{display:"none"}};function zt(e,t,n,o,i,r){const l=(0,a.up)("DonationInstructions");return(0,a.wg)(),(0,a.iD)(a.HY,null,[(0,a._)("div",z,[(0,a._)("div",x,[(0,a._)("div",k,[(0,a._)("h4",null,(0,a.zw)(n.name),1)])]),n.instructions.length?((0,a.wg)(),(0,a.iD)("div",{key:0,class:"accordion",id:"ul-acc-"+n.componentId},[(0,a._)("div",$,[(0,a._)("div",E,[M,(0,a._)("div",I,[(0,a._)("h5",null,(0,a.zw)(e.$t("instructions")),1)]),(0,a._)("div",{class:"col accordion-header",id:"acc-instr-head-"+n.componentId},[(0,a._)("button",{class:"accordion-button",type:"button","data-bs-toggle":"collapse","data-bs-target":"#acc-instr-body-"+n.componentId,"aria-expanded":"true","aria-controls":"acc-instr-body-"+n.componentId},null,8,U)],8,T)]),(0,a._)("div",{id:"acc-instr-body-"+n.componentId,class:"accordion-collapse collapse show","aria-labelledby":"headingOne","data-bs-parent":"#ul-acc-"+n.componentId},[(0,a._)("div",C,[(0,a.Wm)(l,{instructions:n.instructions,"component-id":n.componentId},null,8,["instructions","component-id"])])],8,O)])],8,S)):(0,a.kq)("",!0),(0,a._)("div",j,[(0,a._)("div",F,["pending"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[H,(0,a._)("div",A,[i.uploadAttempts?i.uploadAttempts?((0,a.wg)(),(0,a.iD)("p",P,(0,a.zw)(e.$t("upload-different-file"))+":",1)):(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("h5",Y,(0,a.zw)(e.$t("upload-file"))+":",1))]),(0,a._)("div",q,[(0,a._)("label",N,[(0,a._)("input",{name:"ul-"+n.componentId,type:"file",onChange:t[0]||(t[0]=(...e)=>r.processFile&&r.processFile(...e)),class:"d-none"},null,40,B),(0,a.Uk)(" "+(0,a.zw)(e.$t("choose-file")),1)])])],64)):"processing"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[L,(0,a._)("div",Z,[(0,a._)("p",null,(0,a.zw)(e.$t("file-is-being-uploaded")),1)]),K],64)):"success"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[J,(0,a._)("div",V,[(0,a._)("p",R,(0,a.zw)(e.$t("upload-success")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[1]||(t[1]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),G],64)):"partial"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:3},[W,(0,a._)("div",Q,[(0,a._)("p",X,(0,a.zw)(e.$t("partial-upload-status")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[2]||(t[2]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),(0,a._)("div",ee,[(0,a._)("p",null,(0,a.zw)(e.$t("partial-upload-message")),1)])],64)):"failed"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:4},[te,(0,a._)("div",ne,[(0,a._)("p",ae,(0,a.zw)(e.$t("upload-failed")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[3]||(t[3]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),(0,a._)("div",oe,[(0,a._)("ul",ie,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.generalErrors,(e=>((0,a.wg)(),(0,a.iD)("li",{key:e},(0,a.zw)(e),1)))),128))])])],64)):(0,a.kq)("",!0)])]),(0,a._)("div",re,[(0,a._)("div",le,[se,(0,a._)("div",de,[(0,a._)("div",ce,[(0,a._)("h5",null,(0,a.zw)(e.$t("data-extraction")),1)]),(0,a._)("div",ue,["pending"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[(0,a.Uk)((0,a.zw)(e.$t("data-extraction-intro"))+": ",1)],64)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a.Uk)((0,a.zw)(e.$t("extracted-data-intro"))+": ",1)],64))])])])]),(0,a._)("div",pe,[(0,a._)("div",he,[(0,a._)("div",fe,[(0,a._)("div",me,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.blueprints,(n=>((0,a.wg)(),(0,a.iD)("div",{key:n,class:(0,a.C_)(["ul-status row align-items-start pt-2 pb-2",{"ul-success":"success"===i.blueprintData[n.id.toString()].status,"ul-failed":"failed"===i.blueprintData[n.id.toString()].status}])},["pending"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[ge,(0,a._)("div",be,[(0,a._)("div",ye,(0,a.zw)(n.name),1),(0,a._)("div",we,(0,a.zw)(n.description),1)])],64)):(0,a.kq)("",!0),"success"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a._)("div",_e,[ve,(0,a._)("div",De,[(0,a._)("div",ze,(0,a.zw)(n.name),1),(0,a._)("div",xe,(0,a.zw)(n.description),1)])]),(0,a._)("div",ke,[(0,a._)("div",Se,[(0,a._)("div",null,(0,a.zw)(e.$t("extracted-data")),1),(0,a._)("div",$e,[(0,a._)("div",{id:"donation-container-"+n.id.toString(),class:"ul-data-container ul-data-condensed bg-white"},[(0,a._)("table",{id:"ul-result-"+n.id.toString(),class:"table table-sm"},[(0,a._)("thead",null,[(0,a._)("tr",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_fields.values(),(e=>((0,a.wg)(),(0,a.iD)("th",{key:e},(0,a.zw)(e),1)))),128))])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_data.slice(i.blueprintData[n.id.toString()].fb_pos_lower,i.blueprintData[n.id.toString()].fb_pos_upper),(e=>((0,a.wg)(),(0,a.iD)("tr",{key:e},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_fields.keys(),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[t in e?((0,a.wg)(),(0,a.iD)("td",{key:e},(0,a.zw)(e[t]),1)):((0,a.wg)(),(0,a.iD)("td",Ie,"–"))],64)))),128))])))),128))])],8,Me),(0,a._)("div",Te,[i.blueprintData[n.id.toString()].fb_pos_lower>14?((0,a.wg)(),(0,a.iD)("a",{key:0,class:"btn btn-secondary btn-sm me-2",onClick:e=>r.updateFbPos(n.id.toString(),"down")},"Vorherige Seite",8,Ue)):(0,a.kq)("",!0),i.blueprintData[n.id.toString()].fb_pos_upperr.updateFbPos(n.id.toString(),"up")},"Nächste Seite",8,Oe)):(0,a.kq)("",!0)]),(0,a._)("p",Ce,(0,a.zw)(e.$t("extraction-disclaimer",{lower:i.blueprintData[n.id.toString()].fb_pos_lower,upper:i.blueprintData[n.id.toString()].fb_pos_upper,total:i.blueprintData[n.id.toString()].extracted_data.length})),1)],8,Ee),(0,a._)("div",{id:"expansion-control-"+n.id.toString(),class:"ul-data-expansion-control control-condensed"},[(0,a._)("a",{class:"text-decoration-none fw-bold",id:"collapse-toggle-"+n.id.toString(),onClick:e=>r.showHideData(n.id.toString())},[(0,a._)("span",{id:"donation-container-"+n.id.toString()+"-toggle-label"},(0,a.zw)(e.$t("show-extracted-data")),9,He)],8,Fe)],8,je)])])]),"false"===this.pooled?((0,a.wg)(),(0,a.iD)("div",Ae,[(0,a._)("div",Ye,[(0,a._)("p",Pe,(0,a.zw)(e.$t("donation-question")),1),(0,a._)("div",qe,[(0,a._)("div",Ne,[(0,a._)("label",{class:"form-check-label rb-cb-label",for:"donate-agree-"+n.id.toString()},[(0,a.wy)((0,a._)("input",{type:"radio",id:"donate-agree-"+n.id.toString(),name:"agreement-"+n.id.toString(),value:"true","onUpdate:modelValue":e=>i.blueprintData[n.id.toString()].consent=e,onChange:t[4]||(t[4]=(...e)=>r.emitToParent&&r.emitToParent(...e)),required:""},null,40,Le),[[a.G2,i.blueprintData[n.id.toString()].consent]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-agree")),1)],8,Be)]),(0,a._)("div",Ze,[(0,a._)("label",{class:"form-check-label rb-cb-label",for:"donate-disagree-"+n.id.toString()},[(0,a.wy)((0,a._)("input",{type:"radio",id:"donate-disagree-"+n.id.toString(),name:"agreement-"+n.id.toString(),value:"false","onUpdate:modelValue":e=>i.blueprintData[n.id.toString()].consent=e,onChange:t[5]||(t[5]=(...e)=>r.emitToParent&&r.emitToParent(...e))},null,40,Je),[[a.G2,i.blueprintData[n.id.toString()].consent]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-disagree")),1)],8,Ke)])])])])):(0,a.kq)("",!0)],64)):(0,a.kq)("",!0),"nothing extracted"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[Ve,(0,a._)("div",Re,(0,a.zw)(n.name),1),(0,a._)("div",Ge,[i.blueprintData[n.id.toString()].errors.length?((0,a.wg)(!0),(0,a.iD)(a.HY,{key:0},(0,a.Ko)(i.blueprintData[n.id.toString()].errors,(e=>((0,a.wg)(),(0,a.iD)("p",{key:e},(0,a.zw)(e),1)))),128)):((0,a.wg)(),(0,a.iD)("p",We,(0,a.zw)(e.$t("extraction-failed")),1))]),Qe,Xe],64)):(0,a.kq)("",!0),"failed"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:3},[et,(0,a._)("div",tt,(0,a.zw)(n.name),1),(0,a._)("div",nt,[i.blueprintData[n.id.toString()].errors.length?((0,a.wg)(!0),(0,a.iD)(a.HY,{key:0},(0,a.Ko)(i.blueprintData[n.id.toString()].errors,(e=>((0,a.wg)(),(0,a.iD)("p",{key:e},(0,a.zw)(e),1)))),128)):((0,a.wg)(),(0,a.iD)("p",at,(0,a.zw)(e.$t("extraction-failed")),1))]),ot,it],64)):(0,a.kq)("",!0)],2)))),128))])])]),"true"!==this.pooled||"success"!==i.uploadStatus&&"partial"!==i.uploadStatus?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",rt,[(0,a._)("div",lt,[(0,a._)("p",st,(0,a.zw)(e.$t("pool-submit-question")),1),(0,a._)("div",dt,[(0,a._)("div",ct,[(0,a._)("label",ut,[(0,a.wy)((0,a._)("input",{type:"radio",id:"pool-donate-agree",value:"true","onUpdate:modelValue":t[6]||(t[6]=e=>i.poolDonate=e),onChange:t[7]||(t[7]=(...e)=>r.emitToParent&&r.emitToParent(...e)),required:""},null,544),[[a.G2,i.poolDonate]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-agree-pooled")),1)])]),(0,a._)("div",pt,[(0,a._)("label",ht,[(0,a.wy)((0,a._)("input",{type:"radio",id:"pool-donate-disagree",value:"false","onUpdate:modelValue":t[8]||(t[8]=e=>i.poolDonate=e),onChange:t[9]||(t[9]=(...e)=>r.emitToParent&&r.emitToParent(...e))},null,544),[[a.G2,i.poolDonate]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-disagree-pooled")),1)])])])])]))])]),(0,a._)("div",ft,[(0,a._)("div",mt,[gt,(0,a._)("div",bt,[(0,a._)("h4",null,(0,a.zw)(this.ulModalInfoTitle),1),(0,a._)("p",{id:"ul-modal-info-msg",class:"pb-2",innerHTML:this.ulModalInfoMsg},null,8,yt),"failed"===i.uploadStatus?((0,a.wg)(),(0,a.iD)("div",wt,[(0,a._)("ul",_t,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.generalErrors,(e=>((0,a.wg)(),(0,a.iD)("li",{key:e},(0,a.zw)(e),1)))),128))])])):(0,a.kq)("",!0)])]),(0,a._)("div",vt,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeUlInfoModal",onClick:t[10]||(t[10]=(...e)=>r.closeUlInfoModal&&r.closeUlInfoModal(...e))},"OK")])],512),(0,a._)("div",Dt,null,512)],64)}var xt=n(5733),kt=n.n(xt);const St=e=>((0,a.dD)("data-v-2c67d9b8"),e=e(),(0,a.Cn)(),e),$t=["id"],Et={class:"carousel-inner"},Mt=["innerHTML"],It=["data-bs-target"],Tt=St((()=>(0,a._)("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1))),Ut=St((()=>(0,a._)("span",{class:"visually-hidden"},"Previous",-1))),Ot=[Tt,Ut],Ct=["data-bs-target"],jt=St((()=>(0,a._)("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1))),Ft=St((()=>(0,a._)("span",{class:"visually-hidden"},"Next",-1))),Ht=[jt,Ft],At={class:"carousel-indicators"},Yt=["data-bs-target","data-bs-slide-to","aria-label","aria-current"];function Pt(e,t,n,o,i,r){return(0,a.wg)(),(0,a.iD)("div",{id:"carousel-"+n.componentId,class:"carousel carousel-dark slide","data-bs-interval":"false","data-bs-ride":"carousel"},[(0,a._)("div",Et,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.instructions,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{key:t,class:(0,a.C_)(["carousel-item",{active:0===t}]),innerHTML:e.text},null,10,Mt)))),128))]),(0,a._)("button",{class:"carousel-control-prev",type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide":"prev"},Ot,8,It),(0,a._)("button",{class:"carousel-control-next",type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide":"next"},Ht,8,Ct),(0,a._)("div",At,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.instructions,((e,t)=>((0,a.wg)(),(0,a.iD)("button",{key:t,type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide-to":t,"aria-label":"Step "+t,class:(0,a.C_)({active:0===t}),"aria-current":0===t},null,10,Yt)))),128))])],8,$t)}var qt={name:"DonationInstructions",props:{instructions:Array,componentId:Number},data(){return{}},methods:{}},Nt=n(3744);const Bt=(0,Nt.Z)(qt,[["render",Pt],["__scopeId","data-v-2c67d9b8"]]);var Lt=Bt,Zt=n(9669),Kt=n.n(Zt),Jt=n(7460),Vt=n.n(Jt),Rt={name:"ProcessFile",components:{DonationInstructions:Lt},props:{expectsZip:Boolean,blueprints:Array,instructions:Array,componentId:Number,name:String,exceptionUrl:String,pooled:String},emits:["changedData"],data(){return{blueprintData:{},uploadStatus:"pending",uploadAttempts:0,generalErrors:[],ulModalInfoMsg:"",ulModalInfoTitle:"",poolDonate:!0}},created(){this.blueprints.forEach((e=>{let t=e.id,n={name_uploaded_file:null,consent:null,extracted_data:[],extracted_fields:new Map,status:"pending",errors:[],fb_pos_lower:0,fb_pos_upper:15};this.blueprintData[t.toString()]=n})),this.resetErrorLog(),this.emitToParent()},methods:{processFile(e){let t=this;t.uploadStatus="processing",t.uploadAttempts+=1,t.resetErrorLog();const n=e.target.files;if(t.expectsZip&&1===n.length)kt().loadAsync(n[0]).then((e=>{t.blueprints.forEach((n=>{let a=new RegExp(n.regex_path),o=!1;e.file(a).forEach((e=>{o=!0,e.async("string").then((e=>t.processContent(e,n))).catch((e=>{t.postError(4199,e.message),t.recordError(t.$t("error-generic")+e.message,n.id.toString())}))})),o||(t.postError(4180,t.$t("error-regex-not-matched"),n.id),t.postError(4181,`Files in uploaded folder: ${Object.keys(e.files)}`,n.id),t.recordError(t.$t("error-regex-not-matched"),n.id.toString()))}))})).catch((e=>{let n="",a=0;e.message.includes("zip")&&e.message.includes("central")?(n=t.$t("error-not-zip"),a=4101):e.message.includes("Corrupted zip")?(n=t.$t("error-zip-corrupted"),a=4102):e.message.includes("Encrypted zip")?(n=t.$t("error-zip-encrypted"),a=4103):(n=t.$t("error-generic")+e.message,a=4198),t.postError(a,e.message),t.recordError(n,"general")}));else if(t.expectsZip||1!==n.length)t.postError(4104,t.$t("error-multiple-files","en")),t.recordError(t.$t("error-multiple-files"),"general");else{if("json"===t.blueprints[0].format&&!n[0].name.endsWith(".json")){let e=t.$t("error-wrong-file-type","en",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".json"});t.postError(4105,e,t.blueprints[0].id),t.recordError(t.$t("error-wrong-file-type",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".json"}),t.blueprints[0].id.toString())}if("csv"===t.blueprints[0].format&&!n[0].name.endsWith(".csv")){let e=t.$t("error-wrong-file-type","en",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".csv"});t.postError(4105,e,t.blueprints[0].id),t.recordError(t.$t("error-wrong-file-type",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".csv"}),t.blueprints[0].id.toString())}let e=new FileReader;e.onload=function(e){let n=e.target.result;try{t.blueprints.forEach((e=>{t.processContent(n,e)}))}catch(a){t.postError(4199,a.message,t.blueprints[0].id),t.recordError(t.$t("error-generic")+a.message,t.blueprints[0].id.toString())}},e.readAsText(n[0])}setTimeout((()=>{t.updateStatus(),t.$nextTick((function(){t.emitToParent()}))}),1e3)},processContent(e,t){let n=this,a=t.id.toString(),o=null,i=[];if("json"===t.format){try{o=JSON.parse(e)}catch(r){n.postError(4106,r.message,t.id),n.recordError(n.$t("error-json-syntax"),n.blueprints[0].id.toString())}o&&(""!==t.json_extraction_root&&(o=this.getNestedJsonEntry(o,t.json_extraction_root)),Symbol.iterator in Object(o)||(o=new Array(o)))}else if("csv"===t.format)try{let n=Vt().parse(e,{header:!0,delimiter:t.csv_delimiter});o=n.data}catch(r){n.postError(4106,r.message,t.id),n.recordError(n.$t("error-json-syntax"),n.blueprints[0].id.toString())}if(o){let e=0,l=0,s=0,d=10;if(o.forEach((o=>{let c=[];if(!t.expected_fields.every((n=>{if(t.exp_fields_regex_matching){let t=new RegExp(n);return Object.keys(o).filter((e=>t.test(e))).length>0||(c.push(n),e+=1,!1)}return Object.keys(o).filter((e=>n===e)).length>0||(c.push(n),e+=1,!1)})))return;let u=t.filter_rules,p=new Map;u.forEach((e=>{let a=Object.keys(o);if(e.regex_field){let t=new RegExp(e.field);a=a.filter((e=>t.test(e)))}else{let t=e.field;a=a.filter((e=>t===e))}if(a.length>1){if(s0&&u.forEach((e=>{let t=p.get(e.field);if("undefined"===t)throw`Field "${t}" not in entry.`;switch(e.comparison_operator){case null:h[e.field]=o[t];break;case"==":if(o[t]===e.comparison_value)throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case"!=":if(o[t]!==e.comparison_value)throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case"<=":if(!(o[t]>e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case">=":if(!(o[t]=e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case">":if(!(o[t]<=e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}".`;break;case"regex-delete-match":if(t in h){let n=o[t].replaceAll(RegExp(e.comparison_value,"g"),"");h[e.field]=n,o[t]=n}break;case"regex-replace-match":if(t in h){let n=o[t].replaceAll(RegExp(e.comparison_value,"g"),e.replacement_value);h[e.field]=n,o[t]=n}break;case"regex-delete-row":if(t in o){let n=RegExp(e.comparison_value,"g");if(n.test(o[t]))throw`Field "${t}" matches RegExp "${e.comparison_value}".`}break;default:break}})),i.push(h)}catch(r){l+=1}for(let[e,t]of p.entries())n.blueprintData[a].extracted_fields.set(e,t)})),n.blueprintData[a].extracted_data=i,i=null,e===o.length){let a=`No data extracted: Expected fields missing in ${e}/${o.length} entries.`;n.postError(4201,a,t.id),n.recordError(n.$t("error-all-expected-fields-missing"),t.id.toString())}else if(l===o.length){let e=`No data extracted: All entries (${l}/${o.length}) were filtered out.`;n.postError(4204,e,t.id),n.recordError(n.$t("error-all-fields-filtered-out"),t.id.toString())}else if(e+l===o.length){let a=`No data extracted: Expected fields missing in ${e}/${o.length} entries and ${l}/${o.length} filtered out.`;n.postError(4205,a,t.id),n.recordError(n.$t("error-all-fields-filtered-out"),t.id.toString())}else if(l>0){let e=`${l}/${o.length} rows omitted due to a filter rule match.`;n.postError(4206,e,t.id)}try{let e=`${n.blueprintData[a].extracted_data.length} entries were extracted.`;n.postError(7004,e,t.id)}catch{}}},getNestedJsonEntry(e,t){t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,"");let n=t.split(".");for(let a=0,o=n.length;a{null===e[t].consent?(e[t].consent=null,e[t].extracted_data=[]):"false"===e[t].consent?(e[t].extracted_data=[],e[t].consent=!1):e[t].consent=!0}));else{let t=this.poolDonate;Object.keys(e).forEach((n=>{"0"===t||"false"===t?(e[n].consent=!1,e[n].extracted_data=[]):e[n].consent=!0}))}this.$emit("changedData",e)},resetErrorLog(){this.generalErrors=[];for(let e in this.blueprintData)this.blueprintData[e].errors=[]},recordError(e,t){"general"==t?this.generalErrors.push(e):this.blueprintData[t].errors.push(e)},postError(e,t,n=null){let a={status_code:e,message:this.name+": "+t,raised_by:"client",blueprint:n};Kt().post(this.exceptionUrl,a).catch((e=>console.error(`Could not post error message, ${e}`)))},updateStatus(){let e=0,t=0,n=Object.keys(this.blueprintData).length;for(let a in this.blueprintData)if(this.blueprintData[a].errors.length){let n=new Set(this.blueprintData[a].errors);1===n.size&&n.has(this.$t("error-all-fields-filtered-out"))?(this.blueprintData[a].status="nothing extracted",this.blueprintData[a].consent="false",t+=1):(this.blueprintData[a].status="failed",this.blueprintData[a].consent="false",e+=1)}else this.blueprintData[a].status="success";this.$nextTick((function(){let a=document.getElementById("ul-modal-info-icon");if(this.generalErrors.length||0!==e||0!==t)if(!this.generalErrors.length&&t>0&&0===e)this.uploadStatus="partial",a.className="bi bi-exclamation-diamond text-orange",this.ulModalInfoTitle=this.$t("ul-nothing-extracted-modal-title"),this.ulModalInfoMsg=this.$t("ul-nothing-extracted-modal-body");else if(!this.generalErrors.length&&e{const{normalize:t}=e;return t(["Instructions"])},"no-instructions-defined":e=>{const{normalize:t}=e;return t(["No instructions defined"])},"upload-file":e=>{const{normalize:t}=e;return t(["File Upload"])},"data-extraction":e=>{const{normalize:t}=e;return t(["Data Donation"])},"upload-different-file":e=>{const{normalize:t}=e;return t(["Upload a different file"])},"upload-success":e=>{const{normalize:t}=e;return t(["Upload was successful"])},"upload-failed":e=>{const{normalize:t}=e;return t(["Upload failed"])},"choose-different-file":e=>{const{normalize:t}=e;return t(["select a different file"])},"choose-file":e=>{const{normalize:t}=e;return t(["Select file"])},"file-is-being-uploaded":e=>{const{normalize:t}=e;return t(["file is being uploaded"])},"extracted-files":e=>{const{normalize:t}=e;return t(["Extracted files"])},"upload-success-short":e=>{const{normalize:t}=e;return t(["Successfully Uploaded"])},"upload-failed-short":e=>{const{normalize:t}=e;return t(["Upload Failed"])},"show-extracted-data":e=>{const{normalize:t}=e;return t(["Show data"])},"hide-extracted-data":e=>{const{normalize:t}=e;return t(["Show less"])},"donation-question":e=>{const{normalize:t}=e;return t(["Do you agree to donate and submit the data listed above?"])},"donation-agree":e=>{const{normalize:t}=e;return t(["Yes, I agree to submit these data"])},"donation-disagree":e=>{const{normalize:t}=e;return t(["No, I do not want to submit these data"])},"pool-submit-question":e=>{const{normalize:t}=e;return t(["Do you agree to submit these data and receive a personalized analysis?"])},"donation-agree-pooled":e=>{const{normalize:t}=e;return t(["Yes, I agree to my data being analyzed"])},"donation-disagree-pooled":e=>{const{normalize:t}=e;return t(["No, I do not want my data to be analyzed"])},"extracted-data-intro":e=>{const{normalize:t}=e;return t(["The following data have been extracted and will be transmitted to the researchers with your consent"])},file:e=>{const{normalize:t}=e;return t(["file"])},"error-multiple-files":e=>{const{normalize:t}=e;return t(["More than one file uploaded, but only one is expected."])},"error-not-zip":e=>{const{normalize:t}=e;return t(["A zip-file is expected but another file type was uploaded."])},"error-generic":e=>{const{normalize:t}=e;return t(["An error occurred: "])},"error-zip-corrupted":e=>{const{normalize:t}=e;return t(["The provided zip file is corrupted. Please download the zip file again from the original source and try again."])},"error-zip-encrypted":e=>{const{normalize:t}=e;return t(["The provided zip file is encrypted. Unfortunately, encrypted files are not supported."])},"error-all-expected-fields-missing":e=>{const{normalize:t}=e;return t(["Uploaded file does not contain all expected data fields."])},"error-regex-not-matched":e=>{const{normalize:t}=e;return t(["The provided zip container does not contain the matching file."])},"error-json-syntax":e=>{const{normalize:t}=e;return t(["The provided file contains a syntax error."])},"error-wrong-file-type":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["The provided file is of type '",n(a("actualType")),"' but '",n(a("expectedType")),"' is expected."])},"error-all-fields-filtered-out":e=>{const{normalize:t}=e;return t(["All entries were filtered out and deleted."])},"extraction-failed":e=>{const{normalize:t}=e;return t(["Information could not be extracted from uploaded file"])},"partial-upload-status":e=>{const{normalize:t}=e;return t(["Only partially uploaded"])},"partial-upload-message":e=>{const{normalize:t}=e;return t(["Zip file was successfully uploaded but not all of the expected information were successfully extracted (see below)"])},"data-extraction-intro":e=>{const{normalize:t}=e;return t(["The following information will be extracted from the selected file"])},"ul-success-modal-title":e=>{const{normalize:t}=e;return t(["Upload Complete"])},"ul-success-modal-body":e=>{const{normalize:t}=e;return t(["All data has been uploaded successfully. Please look at the uploaded data and indicate whether you want to donate the data or not."])},"ul-failed-modal-title":e=>{const{normalize:t}=e;return t(["An Error Occurred"])},"ul-failed-modal-body":e=>{const{normalize:t}=e;return t(["Unfortunately, an error occurred while uploading your file. Please have a look at the error description in the File Upload and Data Donation sections and try again if necessary."])},"ul-partial-modal-title":e=>{const{normalize:t}=e;return t(["Upload Partially Successful"])},"ul-partial-modal-body":e=>{const{normalize:t}=e;return t(["

Only parts of the data could be uploaded successfully.

In the 'Data Donation' section you will find more information on which file a problem occurred. This information may help you to identify and fix the problem.

If not, you can inspect the uploaded data, indicate whether you want to donate the data or not, and continue.

"])},"ul-nothing-extracted-modal-title":e=>{const{normalize:t}=e;return t(["Upload Successful but No Data Extracted"])},"ul-nothing-extracted-modal-body":e=>{const{normalize:t}=e;return t(["

The data was successfully uploaded but no data were extracted. It is possible, that your data file did not contain any information relevant to this research project.

If you think you chose the wrong file, you can try the upload again. Otherwise, you can continue by clicking on 'submit data'.

"])},"extracted-data":e=>{const{normalize:t}=e;return t(["The following data were extracted:"])},"extraction-disclaimer":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["The rows ",n(a("lower"))," to ",n(a("upper"))," from a total of ",n(a("total"))," extracted data entries are displayed."])}},de:{instructions:e=>{const{normalize:t}=e;return t(["Instruktionen"])},"no-instructions-defined":e=>{const{normalize:t}=e;return t(["Es wurden keine Instruktionen definiert"])},"upload-file":e=>{const{normalize:t}=e;return t(["Datei hochladen"])},"data-extraction":e=>{const{normalize:t}=e;return t(["Datenspende"])},"upload-different-file":e=>{const{normalize:t}=e;return t(["Andere Datei hochladen"])},"upload-success":e=>{const{normalize:t}=e;return t(["Upload erfolgreich abgeschlossen"])},"upload-failed":e=>{const{normalize:t}=e;return t(["Etwas ging schief"])},"choose-different-file":e=>{const{normalize:t}=e;return t(["eine andere Datei auswählen"])},"choose-file":e=>{const{normalize:t}=e;return t(["Datei auswählen"])},"file-is-being-uploaded":e=>{const{normalize:t}=e;return t(["Datei wird hochgeladen"])},"extracted-files":e=>{const{normalize:t}=e;return t(["Ausgelesene Dateien"])},"upload-success-short":e=>{const{normalize:t}=e;return t(["erfolgreich hochgeladen"])},"upload-failed-short":e=>{const{normalize:t}=e;return t(["Upload fehlgeschlagen"])},"show-extracted-data":e=>{const{normalize:t}=e;return t(["Daten anzeigen"])},"hide-extracted-data":e=>{const{normalize:t}=e;return t(["weniger anzeigen"])},"donation-question":e=>{const{normalize:t}=e;return t(["Sind Sie damit einverstanden, diese Daten zu spenden?"])},"donation-agree":e=>{const{normalize:t}=e;return t(["Ja, ich bin damit einverstanden, diese Daten zu spenden und an die Forschenden zu übermitteln."])},"donation-disagree":e=>{const{normalize:t}=e;return t(["Nein, ich möchte diese Daten nicht spenden."])},"pool-submit-question":e=>{const{normalize:t}=e;return t(["Sind Sie damit einverstanden Ihre Daten für eine personalisierte Auswertung zu übermitteln?"])},"donation-agree-pooled":e=>{const{normalize:t}=e;return t(["Ja, ich bin damit einverstanden, meine Daten für eine personalisierte Auswertung zu übermitteln"])},"donation-disagree-pooled":e=>{const{normalize:t}=e;return t(["Nein, ich möchte meine Daten nicht übermitteln"])},"extracted-data-intro":e=>{const{normalize:t}=e;return t(["Die folgenden Daten wurden ausgelesen und werden bei Ihrer Zustimmung an die Forschenden übermittelt"])},file:e=>{const{normalize:t}=e;return t(["Datei"])},"error-multiple-files":e=>{const{normalize:t}=e;return t(["Mehr als eine Datei hochgeladen, aber nur eine wird erwartet"])},"error-not-zip":e=>{const{normalize:t}=e;return t(["Es wird eine Zip-Datei erwartet, aber es wurde ein anderer Dateityp hochgeladen."])},"error-generic":e=>{const{normalize:t}=e;return t(["Es ist ein Fehler aufgetreten: "])},"error-zip-corrupted":e=>{const{normalize:t}=e;return t(["Die hochgeladene Zip-Datei scheint beschädigt zu sein. Bitte laden Sie die Zip-Datei erneut von der Originalquelle herunter und versuchen Sie, sie erneut hochzuladen."])},"error-zip-encrypted":e=>{const{normalize:t}=e;return t(["Die hochgeladene Zip-Datei ist password-geschützt. Leider werden verschlüsselte Dateien nicht unterstützt."])},"error-all-expected-fields-missing":e=>{const{normalize:t}=e;return t(["Die hochgeladene Datei enthält nicht alle erwarteten Datenfelder."])},"error-regex-not-matched":e=>{const{normalize:t}=e;return t(["Die entsprechende Datei ist nicht im hochgeladenen Zip-Container enthalten."])},"error-json-syntax":e=>{const{normalize:t}=e;return t(["Die json-Datei enthält einen Syntaxfehler."])},"error-wrong-file-type":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["Die ausgewählte Datei ist eine '",n(a("actualType")),"'-Datei; es wird aber eine '",n(a("expectedType")),"'-Datei erwartet."])},"error-all-fields-filtered-out":e=>{const{normalize:t}=e;return t(["Alle Einträge in der hochgeladenen Datei wurden herausgefiltert."])},"extraction-failed":e=>{const{normalize:t}=e;return t(["Es konnten nicht alle erwarteten Dateien ausgelesen werden."])},"partial-upload-status":e=>{const{normalize:t}=e;return t(["Nur teilweise hochgeladen"])},"partial-upload-message":e=>{const{normalize:t}=e;return t(["Der Zip-Container wurde erfolgreich hochgeladen, aber es wurden nicht alle Daten erfolgreich extrahiert (siehe unten)"])},"data-extraction-intro":e=>{const{normalize:t}=e;return t(["Die folgenden Informationen werden aus dem ausgewählten File ausgelesen"])},"ul-success-modal-title":e=>{const{normalize:t}=e;return t(["Upload abgeschlossen"])},"ul-success-modal-body":e=>{const{normalize:t}=e;return t(["Alle Daten wurden erfolgreich hochgeladen. Bitte schauen Sie sich die hochgeladenen Daten an und geben Sie jeweils an, ob Sie die Daten spenden möchten oder nicht."])},"ul-failed-modal-title":e=>{const{normalize:t}=e;return t(["Es ist ein Fehler aufgetreten"])},"ul-failed-modal-body":e=>{const{normalize:t}=e;return t(["Leider ist beim Hochladen ihrer Datei ein Fehler aufgetreten. Bitte schauen Sie sich die Fehlerbeschreibung in den Abschnitten 'Daten hochladen' und 'Datenspende' an und versuchen Sie es gegebenenfalls erneut."])},"ul-partial-modal-title":e=>{const{normalize:t}=e;return t(["Upload teilweise erfolgreich"])},"ul-partial-modal-body":e=>{const{normalize:t}=e;return t(["

Es konnte nur ein Teil der Daten erfolgreich hochgeladen werden.

Im Bereich 'Datenspende' finden Sie weitere Informationen dazu, bei welchen Daten ein Problem aufgetreten ist. Gegebenenfalls helfen Ihnen diese Informationen das Problem zu identifizieren und zu beheben.

Falls nicht, können Sie sich die erfolgreich hochgeladenen Daten anschauen und entscheiden, ob Sie diese Daten spenden möchten oder nicht.

"])},"ul-nothing-extracted-modal-title":e=>{const{normalize:t}=e;return t(["Upload erfolgreich, jedoch wurden keine Daten ausgelesen"])},"ul-nothing-extracted-modal-body":e=>{const{normalize:t}=e;return t(["

Die Daten wurden erfolgreich verarbeitet, aber es wurden keine Daten extrahiert. Es ist möglich, dass Ihre Datei keine für dieses Forschungsprojekt relevanten Informationen enthält.

Wenn Sie denken, dass Sie die falsche Datei ausgewählt haben, können Sie den Upload erneut versuchen.

Andernfalls können Sie fortfahren, indem Sie auf 'Daten übermitteln' klicken.

"])},"extracted-data":e=>{const{normalize:t}=e;return t(["Die folgenden Daten wurden ausgelesen:"])},"extraction-disclaimer":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["Es werden die Zeilen ",n(a("lower"))," bis ",n(a("upper"))," von insgesamt ",n(a("total"))," ausgelesenen Einträgen angezeigt."])}}}})}"function"===typeof Gt&&Gt(Rt);const Wt=(0,Nt.Z)(Rt,[["render",zt],["__scopeId","data-v-482dae14"]]);var Qt=Wt,Xt={name:"UApp",components:{FileUploader:Qt},props:{uploadConfig:String,actionUrl:String,exceptionUrl:String,language:String,pooled:Boolean},data(){return this.$i18n.locale=this.language,{parsedUploadConfig:JSON.parse(this.uploadConfig),postData:{},locale:this.language,donationStatus:0,infoModalMsg:"undefined"}},watch:{locale(e){this.$i18n.locale=e}},methods:{updatePostData(e){Object.keys(e).forEach((t=>{this.postData[t]=e[t]}))},getStatus(){let e=[],t=[],n=[];Object.keys(this.postData).forEach((a=>{switch(this.postData[a].status){case"success":e.push(this.postData[a]);break;case"failed":t.push(this.postData[a]);break;case"nothing extracted":t.push(this.postData[a]);break;case"pending":n.push(this.postData[a])}})),e.length||t.length||!n.length?!e.length&&n.length&&t.length?this.donationStatus=2:e.length||n.length?e.length&&n.length?this.donationStatus=4:e.length&&!n.length&&t.length?this.donationStatus=5:!e.length||n.length||t.length||(this.donationStatus=6):this.donationStatus=3:this.donationStatus=1},consentValid(){let e=[];return Object.keys(this.postData).forEach((t=>{"pending"!==this.postData[t].status&&e.push(this.postData[t].consent)})),!0!==e.includes(null)||(this.$refs.processingModal.style.display="none",this.infoModalMsg=this.$t("consent-error-msg"),this.$refs.infoModal.style.display="block",!1)},cleanConsent(){Object.keys(this.postData).forEach((e=>{null==this.postData[e].consent&&(this.postData[e].consent=!1)}))},processData(e=!1){if(this.$refs.statusModal.style.display="none",this.$refs.processingModal.style.display="block",this.$refs.modalBackdrop.style.display="block",this.consentValid()){if(!e){if(this.getStatus(),1===this.donationStatus)return this.$refs.processingModal.style.display="none",this.$refs.statusModalMsg.innerHTML=this.$t("status-info-msg-none-attempted"),void(this.$refs.statusModal.style.display="block");if(2===this.donationStatus||4===this.donationStatus)return this.$refs.processingModal.style.display="none",this.$refs.statusModalMsg.innerHTML=this.$t("status-info-msg-not-all-attempted"),void(this.$refs.statusModal.style.display="block")}this.zipData()}},zipData(){this.cleanConsent();let e=document.querySelectorAll("input[type=file]");e.forEach((e=>{e.disabled=!0}));let t=new FormData(document.getElementById("uploader-form")),n=new(kt());n.file("ul_data.json",JSON.stringify(this.postData)).generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:5}}).then((e=>{t.append("post_data",e),fetch(this.actionUrl,{method:"POST",body:t}).then((e=>{e.redirected&&(window.location.href=e.url)})).catch((e=>{console.info(e)}))}))},closeInfoModal(){this.$refs.infoModal.style.display="none",this.$refs.modalBackdrop.style.display="none"},closeStatusModal(){this.$refs.statusModal.style.display="none",this.$refs.modalBackdrop.style.display="none"}}};function en(e){e.__i18n=e.__i18n||[],e.__i18n.push({locale:"",resource:{en:{"data-submit-wait":e=>{const{normalize:t}=e;return t(["Your data donation is being submitted. Please be patient for a moment and do not close this window."])},"next-btn-label":e=>{const{normalize:t}=e;return t(["Submit Data"])},"consent-error-msg":e=>{const{normalize:t}=e;return t(["You did not indicate for all uploads whether you consent to the donation of your data. Please go back and indicate whether you want to donate your data."])},"back-label":e=>{const{normalize:t}=e;return t(["back"])},"cancel-label":e=>{const{normalize:t}=e;return t(["Cancel"])},"continue-anyway-label":e=>{const{normalize:t}=e;return t(["Yes, continue anyway"])},"status-info-msg-not-all-attempted":e=>{const{normalize:t}=e;return t(["You have skipped some data uploads. Are you sure you want to continue?"])},"status-info-msg-none-attempted":e=>{const{normalize:t}=e;return t(["You have not uploaded any data. Are you sure you want to continue?"])}},de:{"data-submit-wait":e=>{const{normalize:t}=e;return t(["Ihre Datenspende wird gerade übermittelt. Bitte haben Sie einen Moment Geduld und schliessen Sie dieses Fenster nicht."])},"next-btn-label":e=>{const{normalize:t}=e;return t(["Daten übermitteln"])},"consent-error-msg":e=>{const{normalize:t}=e;return t(["Sie haben nicht bei allen Uploads angegeben, ob Sie mit der Spende Ihrer Daten einverstanden sind. Bitte gehen Sie zurück und geben Sie an, ob Sie mit der Spende Ihrer Daten einverstanden sind."])},"back-label":e=>{const{normalize:t}=e;return t(["zurück"])},"continue-anyway-label":e=>{const{normalize:t}=e;return t(["Ja, trotzdem fortfahren"])},"cancel-label":e=>{const{normalize:t}=e;return t(["Abbrechen"])},"status-info-msg-not-all-attempted":e=>{const{normalize:t}=e;return t(["Sie haben einige Daten nicht hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?"])},"status-info-msg-none-attempted":e=>{const{normalize:t}=e;return t(["Sie haben keine Daten hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?"])}}}})}"function"===typeof en&&en(Xt);const tn=(0,Nt.Z)(Xt,[["render",v]]);var nn=tn,an=n(9150);const on=new an.o({fallbackLocale:"en"}),rn="#uapp",ln=document.querySelector(rn),sn=(0,a.ri)(nn,{...ln.dataset});sn.use(on),sn.mount(rn)}},t={};function n(a){var o=t[a];if(void 0!==o)return o.exports;var i=t[a]={exports:{}};return e[a].call(i.exports,i,i.exports,n),i.exports}n.m=e,function(){var e=[];n.O=function(t,a,o,i){if(!a){var r=1/0;for(c=0;c=i)&&Object.keys(n.O).every((function(e){return n.O[e](a[s])}))?a.splice(s--,1):(l=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[a,o,i]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){var e={93:0};n.O.j=function(t){return 0===e[t]};var t=function(t,a){var o,i,r=a[0],l=a[1],s=a[2],d=0;if(r.some((function(t){return 0!==e[t]}))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)var c=s(n)}for(t&&t(a);d((0,a.wg)(),(0,a.j4)(x,{key:t,"component-id":t,"expects-zip":"zip file"===e.upload_type,name:e.name,blueprints:e.blueprints,instructions:e.instructions,"exception-url":this.exceptionUrl,"combined-consent":e.combined_consent,onChangedData:z.updatePostData},null,8,["component-id","expects-zip","name","blueprints","instructions","exception-url","combined-consent","onChangedData"])))),128)),(0,a._)("div",o,[(0,a._)("div",i,[(0,a._)("button",{class:"flow-btn",type:"button",onClick:t[0]||(t[0]=e=>z.processData(!1))},(0,a.zw)(e.$t("next-btn-label"))+"  ›",1)])]),(0,a._)("div",r,[(0,a._)("div",l,[(0,a._)("div",s,[(0,a._)("div",d,(0,a.zw)(e.$t("data-submit-wait")),1),c])])],512),(0,a._)("div",u,[(0,a._)("div",p,[h,(0,a._)("div",null,(0,a.zw)(this.infoModalMsg),1)]),(0,a._)("div",f,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeInfoModal",onClick:t[1]||(t[1]=(...e)=>z.closeInfoModal&&z.closeInfoModal(...e))},"OK")])],512),(0,a._)("div",m,[(0,a._)("div",g,[b,(0,a._)("div",y,null,512)]),(0,a._)("div",_,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"cancelStatusModal",onClick:t[2]||(t[2]=(...e)=>z.closeStatusModal&&z.closeStatusModal(...e))},(0,a.zw)(e.$t("cancel-label")),1),(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeStatusModal",onClick:t[3]||(t[3]=e=>z.processData(!0))},(0,a.zw)(e.$t("continue-anyway-label")),1)])],512),(0,a._)("div",w,null,512)],64)}n(6699);const D=e=>((0,a.dD)("data-v-d0eda75a"),e=e(),(0,a.Cn)(),e),z={class:"mb-5"},x={class:"float-left bg-dark text-white pt-2 ps-2 pb-1 rounded-top"},k={class:"col-sm"},S=["id"],$={class:"accordion-body border"},E={class:"row align-items-center"},M=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-signpost"})],-1))),I={class:"col-auto"},T=["id"],U=["data-bs-target","aria-controls"],C=["id","data-bs-parent"],O={class:"accordion-body ps-0 pe-0"},j={class:"accordion-body border"},F={class:"row align-items-center"},H=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-upload"})],-1))),A={class:"col-auto ul-status-description"},P={key:0},Y={key:1},q={class:"col ul-status-message"},N={class:"select-file-btn"},B=["name"],L=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("div",{class:"clearfix"},[(0,a._)("p",null,[(0,a._)("span",{class:"spinner-border float-right me-3",role:"status"},[(0,a._)("span",{class:"sr-only"})])])])],-1))),Z={class:"col ul-status-description"},K=D((()=>(0,a._)("div",{class:"col ul-status-message"},null,-1))),J=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-file-check"})],-1))),V={class:"col ul-status-description"},R={class:"text-success fw-bold"},G=D((()=>(0,a._)("div",{class:"col ul-status-message"},null,-1))),W=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-exclamation-diamond text-orange"})],-1))),Q={class:"col-auto ul-status-description"},X={class:"fw-bold"},ee={class:"col ul-status-message"},te=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-x-octagon text-danger"})],-1))),ne={class:"col-auto ul-status-description"},ae={class:"fw-bold"},oe={class:"col ul-status-message"},ie={class:"text-danger"},re={class:"accordion-body border border-bottom-0"},le={class:"row align-items-center"},se=D((()=>(0,a._)("div",{class:"col-auto ul-status-icon"},[(0,a._)("i",{class:"bi bi-clipboard-data"})],-1))),de={class:"col extraction-information-container"},ce={class:"col"},ue={class:"col"},pe={class:"accordion-body border border-top-0"},he={class:"container ul-feedback-container"},fe={class:"row"},me={class:"col extraction-information-container"},ge=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-fill text-grey"})],-1))),be={class:"col"},ye={class:"col bp-description pb-2"},_e={class:"col bp-ul-status"},we={class:"row pb-2"},ve=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-check-fill text-success"})],-1))),De={class:"col"},ze={class:"col bp-description pb-2"},xe={class:"col bp-ul-status"},ke={class:"row pt-2"},Se={class:"col feedback-col"},$e={class:"data-donation-container pb-3 pt-3 fs-09"},Ee=["id"],Me=["id"],Ie={key:1},Te={class:"pb-2"},Ue=["onClick"],Ce=["onClick"],Oe={class:"pb-3"},je=["id"],Fe=["id","onClick"],He=["id"],Ae={key:0,class:"row"},Pe={class:"col feedback-col pb-5 pt-1"},Ye={class:"fw-bold"},qe={class:"consent-question-container"},Ne={class:"question-choice-item pt-3 pt-lg-0"},Be=["for"],Le=["id","name","onUpdate:modelValue"],Ze={class:"question-choice-item pt-3 pt-lg-0"},Ke=["for"],Je=["id","name","onUpdate:modelValue"],Ve=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-x-fill text-grey"})],-1))),Re={class:"col-4 bp-description"},Ge={class:"col bp-ul-status"},We={key:1},Qe=D((()=>(0,a._)("div",{class:"col-auto bp-ul-data"},null,-1))),Xe=D((()=>(0,a._)("div",{class:"col-auto bp-ul-consent"},null,-1))),et=D((()=>(0,a._)("div",{class:"col w-small bp-ul-icon"},[(0,a._)("i",{class:"bi bi-file-earmark-x-fill text-danger"})],-1))),tt={class:"col-4 bp-description"},nt={class:"col bp-ul-status"},at={key:1},ot=D((()=>(0,a._)("div",{class:"col-auto bp-ul-data"},null,-1))),it=D((()=>(0,a._)("div",{class:"col-auto bp-ul-consent"},null,-1))),rt={key:0,class:"row mt-5"},lt={class:"col feedback-col pb-5 pt-1"},st={class:"fw-bold"},dt={class:"consent-question-container"},ct={class:"question-choice-item pt-3 pt-lg-0"},ut={class:"form-check-label rb-cb-label",for:"combined-donate-agree"},pt={class:"question-choice-item pt-3 pt-lg-0"},ht={class:"form-check-label rb-cb-label",for:"combined-donate-disagree"},ft={class:"default-modal",id:"ulInfoModal",ref:"ulInfoModal",style:{display:"none"}},mt={class:"modal-body d-flex flex-row align-items-center pt-5"},gt=D((()=>(0,a._)("div",{class:"ps-2 pe-3 ul-status-icon"},[(0,a._)("i",{id:"ul-modal-info-icon",class:"bi bi-file-check"})],-1))),bt={class:"ul-status-description"},yt=["innerHTML"],_t={key:0},wt={class:"text-danger pb-3"},vt={class:"modal-footer"},Dt={class:"modal-backdrop",ref:"modalBackdrop",style:{display:"none"}};function zt(e,t,n,o,i,r){const l=(0,a.up)("DonationInstructions");return(0,a.wg)(),(0,a.iD)(a.HY,null,[(0,a._)("div",z,[(0,a._)("div",x,[(0,a._)("div",k,[(0,a._)("h4",null,(0,a.zw)(n.name),1)])]),n.instructions.length?((0,a.wg)(),(0,a.iD)("div",{key:0,class:"accordion",id:"ul-acc-"+n.componentId},[(0,a._)("div",$,[(0,a._)("div",E,[M,(0,a._)("div",I,[(0,a._)("h5",null,(0,a.zw)(e.$t("instructions")),1)]),(0,a._)("div",{class:"col accordion-header",id:"acc-instr-head-"+n.componentId},[(0,a._)("button",{class:"accordion-button",type:"button","data-bs-toggle":"collapse","data-bs-target":"#acc-instr-body-"+n.componentId,"aria-expanded":"true","aria-controls":"acc-instr-body-"+n.componentId},null,8,U)],8,T)]),(0,a._)("div",{id:"acc-instr-body-"+n.componentId,class:"accordion-collapse collapse show","aria-labelledby":"headingOne","data-bs-parent":"#ul-acc-"+n.componentId},[(0,a._)("div",O,[(0,a.Wm)(l,{instructions:n.instructions,"component-id":n.componentId},null,8,["instructions","component-id"])])],8,C)])],8,S)):(0,a.kq)("",!0),(0,a._)("div",j,[(0,a._)("div",F,["pending"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[H,(0,a._)("div",A,[i.uploadAttempts?i.uploadAttempts?((0,a.wg)(),(0,a.iD)("p",Y,(0,a.zw)(e.$t("upload-different-file"))+":",1)):(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("h5",P,(0,a.zw)(e.$t("upload-file"))+":",1))]),(0,a._)("div",q,[(0,a._)("label",N,[(0,a._)("input",{name:"ul-"+n.componentId,type:"file",onChange:t[0]||(t[0]=(...e)=>r.processFile&&r.processFile(...e)),class:"d-none"},null,40,B),(0,a.Uk)(" "+(0,a.zw)(e.$t("choose-file")),1)])])],64)):"processing"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[L,(0,a._)("div",Z,[(0,a._)("p",null,(0,a.zw)(e.$t("file-is-being-uploaded")),1)]),K],64)):"success"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[J,(0,a._)("div",V,[(0,a._)("p",R,(0,a.zw)(e.$t("upload-success")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[1]||(t[1]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),G],64)):"partial"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:3},[W,(0,a._)("div",Q,[(0,a._)("p",X,(0,a.zw)(e.$t("partial-upload-status")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[2]||(t[2]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),(0,a._)("div",ee,[(0,a._)("p",null,(0,a.zw)(e.$t("partial-upload-message")),1)])],64)):"failed"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:4},[te,(0,a._)("div",ne,[(0,a._)("p",ae,(0,a.zw)(e.$t("upload-failed")),1),(0,a._)("p",null,[(0,a._)("a",{onClick:t[3]||(t[3]=e=>i.uploadStatus="pending"),class:"upload-other"},(0,a.zw)(e.$t("choose-different-file")),1)])]),(0,a._)("div",oe,[(0,a._)("ul",ie,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.generalErrors,(e=>((0,a.wg)(),(0,a.iD)("li",{key:e},(0,a.zw)(e),1)))),128))])])],64)):(0,a.kq)("",!0)])]),(0,a._)("div",re,[(0,a._)("div",le,[se,(0,a._)("div",de,[(0,a._)("div",ce,[(0,a._)("h5",null,(0,a.zw)(e.$t("data-extraction")),1)]),(0,a._)("div",ue,["pending"===i.uploadStatus?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[(0,a.Uk)((0,a.zw)(e.$t("data-extraction-intro"))+": ",1)],64)):((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a.Uk)((0,a.zw)(e.$t("extracted-data-intro"))+": ",1)],64))])])])]),(0,a._)("div",pe,[(0,a._)("div",he,[(0,a._)("div",fe,[(0,a._)("div",me,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.blueprints,(n=>((0,a.wg)(),(0,a.iD)("div",{key:n,class:(0,a.C_)(["ul-status row align-items-start pt-2 pb-2",{"ul-success":"success"===i.blueprintData[n.id.toString()].status,"ul-failed":"failed"===i.blueprintData[n.id.toString()].status}])},["pending"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[ge,(0,a._)("div",be,[(0,a._)("div",ye,(0,a.zw)(n.name),1),(0,a._)("div",_e,(0,a.zw)(n.description),1)])],64)):(0,a.kq)("",!0),"success"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a._)("div",we,[ve,(0,a._)("div",De,[(0,a._)("div",ze,(0,a.zw)(n.name),1),(0,a._)("div",xe,(0,a.zw)(n.description),1)])]),(0,a._)("div",ke,[(0,a._)("div",Se,[(0,a._)("div",null,(0,a.zw)(e.$t("extracted-data")),1),(0,a._)("div",$e,[(0,a._)("div",{id:"donation-container-"+n.id.toString(),class:"ul-data-container ul-data-condensed bg-white"},[(0,a._)("table",{id:"ul-result-"+n.id.toString(),class:"table table-sm"},[(0,a._)("thead",null,[(0,a._)("tr",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_fields.values(),(e=>((0,a.wg)(),(0,a.iD)("th",{key:e},(0,a.zw)(e),1)))),128))])]),(0,a._)("tbody",null,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_data.slice(i.blueprintData[n.id.toString()].fb_pos_lower,i.blueprintData[n.id.toString()].fb_pos_upper),(e=>((0,a.wg)(),(0,a.iD)("tr",{key:e},[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.blueprintData[n.id.toString()].extracted_fields.keys(),(t=>((0,a.wg)(),(0,a.iD)(a.HY,{key:t},[t in e?((0,a.wg)(),(0,a.iD)("td",{key:e},(0,a.zw)(e[t]),1)):((0,a.wg)(),(0,a.iD)("td",Ie,"–"))],64)))),128))])))),128))])],8,Me),(0,a._)("div",Te,[i.blueprintData[n.id.toString()].fb_pos_lower>14?((0,a.wg)(),(0,a.iD)("a",{key:0,class:"btn btn-secondary btn-sm me-2",onClick:e=>r.updateFbPos(n.id.toString(),"down")},"Vorherige Seite",8,Ue)):(0,a.kq)("",!0),i.blueprintData[n.id.toString()].fb_pos_upperr.updateFbPos(n.id.toString(),"up")},"Nächste Seite",8,Ce)):(0,a.kq)("",!0)]),(0,a._)("p",Oe,(0,a.zw)(e.$t("extraction-disclaimer",{lower:i.blueprintData[n.id.toString()].fb_pos_lower,upper:i.blueprintData[n.id.toString()].fb_pos_upper,total:i.blueprintData[n.id.toString()].extracted_data.length})),1)],8,Ee),(0,a._)("div",{id:"expansion-control-"+n.id.toString(),class:"ul-data-expansion-control control-condensed"},[(0,a._)("a",{class:"text-decoration-none fw-bold",id:"collapse-toggle-"+n.id.toString(),onClick:e=>r.showHideData(n.id.toString())},[(0,a._)("span",{id:"donation-container-"+n.id.toString()+"-toggle-label"},(0,a.zw)(e.$t("show-extracted-data")),9,He)],8,Fe)],8,je)])])]),!1===this.combinedConsent?((0,a.wg)(),(0,a.iD)("div",Ae,[(0,a._)("div",Pe,[(0,a._)("p",Ye,(0,a.zw)(e.$t("donation-question")),1),(0,a._)("div",qe,[(0,a._)("div",Ne,[(0,a._)("label",{class:"form-check-label rb-cb-label",for:"donate-agree-"+n.id.toString()},[(0,a.wy)((0,a._)("input",{type:"radio",id:"donate-agree-"+n.id.toString(),name:"agreement-"+n.id.toString(),value:"true","onUpdate:modelValue":e=>i.blueprintData[n.id.toString()].consent=e,onChange:t[4]||(t[4]=(...e)=>r.emitToParent&&r.emitToParent(...e)),required:""},null,40,Le),[[a.G2,i.blueprintData[n.id.toString()].consent]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-agree")),1)],8,Be)]),(0,a._)("div",Ze,[(0,a._)("label",{class:"form-check-label rb-cb-label",for:"donate-disagree-"+n.id.toString()},[(0,a.wy)((0,a._)("input",{type:"radio",id:"donate-disagree-"+n.id.toString(),name:"agreement-"+n.id.toString(),value:"false","onUpdate:modelValue":e=>i.blueprintData[n.id.toString()].consent=e,onChange:t[5]||(t[5]=(...e)=>r.emitToParent&&r.emitToParent(...e))},null,40,Je),[[a.G2,i.blueprintData[n.id.toString()].consent]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-disagree")),1)],8,Ke)])])])])):(0,a.kq)("",!0)],64)):(0,a.kq)("",!0),"nothing extracted"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:2},[Ve,(0,a._)("div",Re,(0,a.zw)(n.name),1),(0,a._)("div",Ge,[i.blueprintData[n.id.toString()].errors.length?((0,a.wg)(!0),(0,a.iD)(a.HY,{key:0},(0,a.Ko)(i.blueprintData[n.id.toString()].errors,(e=>((0,a.wg)(),(0,a.iD)("p",{key:e},(0,a.zw)(e),1)))),128)):((0,a.wg)(),(0,a.iD)("p",We,(0,a.zw)(e.$t("extraction-failed")),1))]),Qe,Xe],64)):(0,a.kq)("",!0),"failed"===i.blueprintData[n.id.toString()].status?((0,a.wg)(),(0,a.iD)(a.HY,{key:3},[et,(0,a._)("div",tt,(0,a.zw)(n.name),1),(0,a._)("div",nt,[i.blueprintData[n.id.toString()].errors.length?((0,a.wg)(!0),(0,a.iD)(a.HY,{key:0},(0,a.Ko)(i.blueprintData[n.id.toString()].errors,(e=>((0,a.wg)(),(0,a.iD)("p",{key:e},(0,a.zw)(e),1)))),128)):((0,a.wg)(),(0,a.iD)("p",at,(0,a.zw)(e.$t("extraction-failed")),1))]),ot,it],64)):(0,a.kq)("",!0)],2)))),128))])])]),!0!==this.combinedConsent||"success"!==i.uploadStatus&&"partial"!==i.uploadStatus?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",rt,[(0,a._)("div",lt,[(0,a._)("p",st,(0,a.zw)(e.$t("donation-question")),1),(0,a._)("div",dt,[(0,a._)("div",ct,[(0,a._)("label",ut,[(0,a.wy)((0,a._)("input",{type:"radio",id:"combined-donate-agree",value:"true","onUpdate:modelValue":t[6]||(t[6]=e=>i.combinedDonation=e),onChange:t[7]||(t[7]=(...e)=>r.emitToParent&&r.emitToParent(...e)),required:""},null,544),[[a.G2,i.combinedDonation]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-agree")),1)])]),(0,a._)("div",pt,[(0,a._)("label",ht,[(0,a.wy)((0,a._)("input",{type:"radio",id:"combined-donate-disagree",value:"false","onUpdate:modelValue":t[8]||(t[8]=e=>i.combinedDonation=e),onChange:t[9]||(t[9]=(...e)=>r.emitToParent&&r.emitToParent(...e))},null,544),[[a.G2,i.combinedDonation]]),(0,a.Uk)(" "+(0,a.zw)(e.$t("donation-disagree")),1)])])])])]))])]),(0,a._)("div",ft,[(0,a._)("div",mt,[gt,(0,a._)("div",bt,[(0,a._)("h4",null,(0,a.zw)(this.ulModalInfoTitle),1),(0,a._)("p",{id:"ul-modal-info-msg",class:"pb-2",innerHTML:this.ulModalInfoMsg},null,8,yt),"failed"===i.uploadStatus?((0,a.wg)(),(0,a.iD)("div",_t,[(0,a._)("ul",wt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(i.generalErrors,(e=>((0,a.wg)(),(0,a.iD)("li",{key:e},(0,a.zw)(e),1)))),128))])])):(0,a.kq)("",!0)])]),(0,a._)("div",vt,[(0,a._)("button",{class:"ddm-btn",type:"button",id:"closeUlInfoModal",onClick:t[10]||(t[10]=(...e)=>r.closeUlInfoModal&&r.closeUlInfoModal(...e))},"OK")])],512),(0,a._)("div",Dt,null,512)],64)}var xt=n(5733),kt=n.n(xt);const St=e=>((0,a.dD)("data-v-2c67d9b8"),e=e(),(0,a.Cn)(),e),$t=["id"],Et={class:"carousel-inner"},Mt=["innerHTML"],It=["data-bs-target"],Tt=St((()=>(0,a._)("span",{class:"carousel-control-prev-icon","aria-hidden":"true"},null,-1))),Ut=St((()=>(0,a._)("span",{class:"visually-hidden"},"Previous",-1))),Ct=[Tt,Ut],Ot=["data-bs-target"],jt=St((()=>(0,a._)("span",{class:"carousel-control-next-icon","aria-hidden":"true"},null,-1))),Ft=St((()=>(0,a._)("span",{class:"visually-hidden"},"Next",-1))),Ht=[jt,Ft],At={class:"carousel-indicators"},Pt=["data-bs-target","data-bs-slide-to","aria-label","aria-current"];function Yt(e,t,n,o,i,r){return(0,a.wg)(),(0,a.iD)("div",{id:"carousel-"+n.componentId,class:"carousel carousel-dark slide","data-bs-interval":"false","data-bs-ride":"carousel"},[(0,a._)("div",Et,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.instructions,((e,t)=>((0,a.wg)(),(0,a.iD)("div",{key:t,class:(0,a.C_)(["carousel-item",{active:0===t}]),innerHTML:e.text},null,10,Mt)))),128))]),(0,a._)("button",{class:"carousel-control-prev",type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide":"prev"},Ct,8,It),(0,a._)("button",{class:"carousel-control-next",type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide":"next"},Ht,8,Ot),(0,a._)("div",At,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(n.instructions,((e,t)=>((0,a.wg)(),(0,a.iD)("button",{key:t,type:"button","data-bs-target":"#carousel-"+n.componentId,"data-bs-slide-to":t,"aria-label":"Step "+t,class:(0,a.C_)({active:0===t}),"aria-current":0===t},null,10,Pt)))),128))])],8,$t)}var qt={name:"DonationInstructions",props:{instructions:Array,componentId:Number},data(){return{}},methods:{}},Nt=n(3744);const Bt=(0,Nt.Z)(qt,[["render",Yt],["__scopeId","data-v-2c67d9b8"]]);var Lt=Bt,Zt=n(9669),Kt=n.n(Zt),Jt=n(7460),Vt=n.n(Jt),Rt={name:"ProcessFile",components:{DonationInstructions:Lt},props:{expectsZip:Boolean,blueprints:Array,instructions:Array,componentId:Number,name:String,exceptionUrl:String,combinedConsent:Boolean},emits:["changedData"],data(){return{blueprintData:{},uploadStatus:"pending",uploadAttempts:0,generalErrors:[],ulModalInfoMsg:"",ulModalInfoTitle:"",combinedDonation:null}},created(){this.blueprints.forEach((e=>{let t=e.id,n={name_uploaded_file:null,consent:null,extracted_data:[],extracted_fields:new Map,status:"pending",errors:[],fb_pos_lower:0,fb_pos_upper:15};this.blueprintData[t.toString()]=n})),this.resetErrorLog(),this.emitToParent()},methods:{processFile(e){let t=this;t.uploadStatus="processing",t.uploadAttempts+=1,t.resetErrorLog();const n=e.target.files;if(t.expectsZip&&1===n.length)kt().loadAsync(n[0]).then((e=>{t.blueprints.forEach((n=>{let a=new RegExp(n.regex_path),o=!1;e.file(a).forEach((e=>{o=!0,e.async("string").then((e=>t.processContent(e,n))).catch((e=>{t.postError(4199,e.message),t.recordError(t.$t("error-generic")+e.message,n.id.toString())}))})),o||(t.postError(4180,t.$t("error-regex-not-matched"),n.id),t.postError(4181,`Files in uploaded folder: ${Object.keys(e.files)}`,n.id),t.recordError(t.$t("error-regex-not-matched"),n.id.toString()))}))})).catch((e=>{let n="",a=0;e.message.includes("zip")&&e.message.includes("central")?(n=t.$t("error-not-zip"),a=4101):e.message.includes("Corrupted zip")?(n=t.$t("error-zip-corrupted"),a=4102):e.message.includes("Encrypted zip")?(n=t.$t("error-zip-encrypted"),a=4103):(n=t.$t("error-generic")+e.message,a=4198),t.postError(a,e.message),t.recordError(n,"general")}));else if(t.expectsZip||1!==n.length)t.postError(4104,t.$t("error-multiple-files","en")),t.recordError(t.$t("error-multiple-files"),"general");else{if("json"===t.blueprints[0].format&&!n[0].name.endsWith(".json")){let e=t.$t("error-wrong-file-type","en",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".json"});t.postError(4105,e,t.blueprints[0].id),t.recordError(t.$t("error-wrong-file-type",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".json"}),t.blueprints[0].id.toString())}if("csv"===t.blueprints[0].format&&!n[0].name.endsWith(".csv")){let e=t.$t("error-wrong-file-type","en",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".csv"});t.postError(4105,e,t.blueprints[0].id),t.recordError(t.$t("error-wrong-file-type",{actualType:n[0].name.substr(n[0].name.lastIndexOf(".")),expectedType:".csv"}),t.blueprints[0].id.toString())}let e=new FileReader;e.onload=function(e){let n=e.target.result;try{t.blueprints.forEach((e=>{t.processContent(n,e)}))}catch(a){t.postError(4199,a.message,t.blueprints[0].id),t.recordError(t.$t("error-generic")+a.message,t.blueprints[0].id.toString())}},e.readAsText(n[0])}setTimeout((()=>{t.updateStatus(),t.$nextTick((function(){t.emitToParent()}))}),1e3)},processContent(e,t){let n=this,a=t.id.toString(),o=null,i=[];if("json"===t.format){try{o=JSON.parse(e)}catch(r){n.postError(4106,r.message,t.id),n.recordError(n.$t("error-json-syntax"),n.blueprints[0].id.toString())}o&&(""!==t.json_extraction_root&&(o=this.getNestedJsonEntry(o,t.json_extraction_root)),Symbol.iterator in Object(o)||(o=new Array(o)))}else if("csv"===t.format)try{let n=Vt().parse(e,{header:!0,delimiter:t.csv_delimiter});o=n.data}catch(r){n.postError(4106,r.message,t.id),n.recordError(n.$t("error-json-syntax"),n.blueprints[0].id.toString())}if(o){let e=0,l=0,s=0,d=10;if(o.forEach((o=>{let c=[];if(!t.expected_fields.every((n=>{if(t.exp_fields_regex_matching){let t=new RegExp(n);return Object.keys(o).filter((e=>t.test(e))).length>0||(c.push(n),e+=1,!1)}return Object.keys(o).filter((e=>n===e)).length>0||(c.push(n),e+=1,!1)})))return;let u=t.filter_rules,p=new Map;u.forEach((e=>{let a=Object.keys(o);if(e.regex_field){let t=new RegExp(e.field);a=a.filter((e=>t.test(e)))}else{let t=e.field;a=a.filter((e=>t===e))}if(a.length>1){if(s0&&u.forEach((e=>{let t=p.get(e.field);if("undefined"===t)throw`Field "${t}" not in entry.`;switch(e.comparison_operator){case null:h[e.field]=o[t];break;case"==":if(o[t]===e.comparison_value)throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case"!=":if(o[t]!==e.comparison_value)throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case"<=":if(!(o[t]>e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case">=":if(!(o[t]=e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}" for entry.`;break;case">":if(!(o[t]<=e.comparison_value))throw`Field "${t}" matches filter value "${e.comparison_value}".`;break;case"regex-delete-match":if(t in h){let n=o[t].replaceAll(RegExp(e.comparison_value,"g"),"");h[e.field]=n,o[t]=n}break;case"regex-replace-match":if(t in h){let n=o[t].replaceAll(RegExp(e.comparison_value,"g"),e.replacement_value);h[e.field]=n,o[t]=n}break;case"regex-delete-row":if(t in o){let n=RegExp(e.comparison_value,"g");if(n.test(o[t]))throw`Field "${t}" matches RegExp "${e.comparison_value}".`}break;default:break}})),i.push(h)}catch(r){l+=1}for(let[e,t]of p.entries())n.blueprintData[a].extracted_fields.set(e,t)})),n.blueprintData[a].extracted_data=i,i=null,e===o.length){let a=`No data extracted: Expected fields missing in ${e}/${o.length} entries.`;n.postError(4201,a,t.id),n.recordError(n.$t("error-all-expected-fields-missing"),t.id.toString())}else if(l===o.length){let e=`No data extracted: All entries (${l}/${o.length}) were filtered out.`;n.postError(4204,e,t.id),n.recordError(n.$t("error-all-fields-filtered-out"),t.id.toString())}else if(e+l===o.length){let a=`No data extracted: Expected fields missing in ${e}/${o.length} entries and ${l}/${o.length} filtered out.`;n.postError(4205,a,t.id),n.recordError(n.$t("error-all-fields-filtered-out"),t.id.toString())}else if(l>0){let e=`${l}/${o.length} rows omitted due to a filter rule match.`;n.postError(4206,e,t.id)}try{let e=`${n.blueprintData[a].extracted_data.length} entries were extracted.`;n.postError(7004,e,t.id)}catch{}}},getNestedJsonEntry(e,t){t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,"");let n=t.split(".");for(let a=0,o=n.length;a{null===e[t].consent?(e[t].consent=null,e[t].extracted_data=[]):"false"===e[t].consent?(e[t].extracted_data=[],e[t].consent=!1):e[t].consent=!0}));else{let t=this.combinedDonation;Object.keys(e).forEach((n=>{"false"===t?(e[n].consent=!1,e[n].extracted_data=[]):e[n].consent=!0}))}this.$emit("changedData",e)},resetErrorLog(){this.generalErrors=[];for(let e in this.blueprintData)this.blueprintData[e].errors=[]},recordError(e,t){"general"==t?this.generalErrors.push(e):this.blueprintData[t].errors.push(e)},postError(e,t,n=null){let a={status_code:e,message:this.name+": "+t,raised_by:"client",blueprint:n};Kt().post(this.exceptionUrl,a).catch((e=>console.error(`Could not post error message, ${e}`)))},updateStatus(){let e=0,t=0,n=Object.keys(this.blueprintData).length;for(let a in this.blueprintData)if(this.blueprintData[a].errors.length){let n=new Set(this.blueprintData[a].errors);1===n.size&&n.has(this.$t("error-all-fields-filtered-out"))?(this.blueprintData[a].status="nothing extracted",this.blueprintData[a].consent="false",t+=1):(this.blueprintData[a].status="failed",this.blueprintData[a].consent="false",e+=1)}else this.blueprintData[a].status="success";this.$nextTick((function(){let a=document.getElementById("ul-modal-info-icon");if(this.generalErrors.length||0!==e||0!==t)if(!this.generalErrors.length&&t>0&&0===e)this.uploadStatus="partial",a.className="bi bi-exclamation-diamond text-orange",this.ulModalInfoTitle=this.$t("ul-nothing-extracted-modal-title"),this.ulModalInfoMsg=this.$t("ul-nothing-extracted-modal-body");else if(!this.generalErrors.length&&e{const{normalize:t}=e;return t(["Instructions"])},"no-instructions-defined":e=>{const{normalize:t}=e;return t(["No instructions defined"])},"upload-file":e=>{const{normalize:t}=e;return t(["File Upload"])},"data-extraction":e=>{const{normalize:t}=e;return t(["Data Donation"])},"upload-different-file":e=>{const{normalize:t}=e;return t(["Upload a different file"])},"upload-success":e=>{const{normalize:t}=e;return t(["Upload was successful"])},"upload-failed":e=>{const{normalize:t}=e;return t(["Upload failed"])},"choose-different-file":e=>{const{normalize:t}=e;return t(["select a different file"])},"choose-file":e=>{const{normalize:t}=e;return t(["Select file"])},"file-is-being-uploaded":e=>{const{normalize:t}=e;return t(["file is being uploaded"])},"extracted-files":e=>{const{normalize:t}=e;return t(["Extracted files"])},"upload-success-short":e=>{const{normalize:t}=e;return t(["Successfully Uploaded"])},"upload-failed-short":e=>{const{normalize:t}=e;return t(["Upload Failed"])},"show-extracted-data":e=>{const{normalize:t}=e;return t(["Show data"])},"hide-extracted-data":e=>{const{normalize:t}=e;return t(["Show less"])},"donation-question":e=>{const{normalize:t}=e;return t(["Do you agree to donate and submit the data listed above?"])},"donation-agree":e=>{const{normalize:t}=e;return t(["Yes, I agree to submit these data"])},"donation-disagree":e=>{const{normalize:t}=e;return t(["No, I do not want to submit these data"])},"extracted-data-intro":e=>{const{normalize:t}=e;return t(["The following data have been extracted and will be transmitted to the researchers with your consent"])},file:e=>{const{normalize:t}=e;return t(["file"])},"error-multiple-files":e=>{const{normalize:t}=e;return t(["More than one file uploaded, but only one is expected."])},"error-not-zip":e=>{const{normalize:t}=e;return t(["A zip-file is expected but another file type was uploaded."])},"error-generic":e=>{const{normalize:t}=e;return t(["An error occurred: "])},"error-zip-corrupted":e=>{const{normalize:t}=e;return t(["The provided zip file is corrupted. Please download the zip file again from the original source and try again."])},"error-zip-encrypted":e=>{const{normalize:t}=e;return t(["The provided zip file is encrypted. Unfortunately, encrypted files are not supported."])},"error-all-expected-fields-missing":e=>{const{normalize:t}=e;return t(["Uploaded file does not contain all expected data fields."])},"error-regex-not-matched":e=>{const{normalize:t}=e;return t(["The provided zip container does not contain the matching file."])},"error-json-syntax":e=>{const{normalize:t}=e;return t(["The provided file contains a syntax error."])},"error-wrong-file-type":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["The provided file is of type '",n(a("actualType")),"' but '",n(a("expectedType")),"' is expected."])},"error-all-fields-filtered-out":e=>{const{normalize:t}=e;return t(["All entries were filtered out and deleted."])},"extraction-failed":e=>{const{normalize:t}=e;return t(["Information could not be extracted from uploaded file"])},"partial-upload-status":e=>{const{normalize:t}=e;return t(["Only partially uploaded"])},"partial-upload-message":e=>{const{normalize:t}=e;return t(["Zip file was successfully uploaded but not all of the expected information were successfully extracted (see below)"])},"data-extraction-intro":e=>{const{normalize:t}=e;return t(["The following information will be extracted from the selected file"])},"ul-success-modal-title":e=>{const{normalize:t}=e;return t(["Upload Complete"])},"ul-success-modal-body":e=>{const{normalize:t}=e;return t(["All data has been uploaded successfully. Please look at the uploaded data and indicate whether you want to donate the data or not."])},"ul-failed-modal-title":e=>{const{normalize:t}=e;return t(["An Error Occurred"])},"ul-failed-modal-body":e=>{const{normalize:t}=e;return t(["Unfortunately, an error occurred while uploading your file. Please have a look at the error description in the File Upload and Data Donation sections and try again if necessary."])},"ul-partial-modal-title":e=>{const{normalize:t}=e;return t(["Upload Partially Successful"])},"ul-partial-modal-body":e=>{const{normalize:t}=e;return t(["

Only parts of the data could be uploaded successfully.

In the 'Data Donation' section you will find more information on which file a problem occurred. This information may help you to identify and fix the problem.

If not, you can inspect the uploaded data, indicate whether you want to donate the data or not, and continue.

"])},"ul-nothing-extracted-modal-title":e=>{const{normalize:t}=e;return t(["Upload Successful but No Data Extracted"])},"ul-nothing-extracted-modal-body":e=>{const{normalize:t}=e;return t(["

The data was successfully uploaded but no data were extracted. It is possible, that your data file did not contain any information relevant to this research project.

If you think you chose the wrong file, you can try the upload again. Otherwise, you can continue by clicking on 'submit data'.

"])},"extracted-data":e=>{const{normalize:t}=e;return t(["The following data were extracted:"])},"extraction-disclaimer":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["The rows ",n(a("lower"))," to ",n(a("upper"))," from a total of ",n(a("total"))," extracted data entries are displayed."])}},de:{instructions:e=>{const{normalize:t}=e;return t(["Instruktionen"])},"no-instructions-defined":e=>{const{normalize:t}=e;return t(["Es wurden keine Instruktionen definiert"])},"upload-file":e=>{const{normalize:t}=e;return t(["Datei hochladen"])},"data-extraction":e=>{const{normalize:t}=e;return t(["Datenspende"])},"upload-different-file":e=>{const{normalize:t}=e;return t(["Andere Datei hochladen"])},"upload-success":e=>{const{normalize:t}=e;return t(["Upload erfolgreich abgeschlossen"])},"upload-failed":e=>{const{normalize:t}=e;return t(["Etwas ging schief"])},"choose-different-file":e=>{const{normalize:t}=e;return t(["eine andere Datei auswählen"])},"choose-file":e=>{const{normalize:t}=e;return t(["Datei auswählen"])},"file-is-being-uploaded":e=>{const{normalize:t}=e;return t(["Datei wird hochgeladen"])},"extracted-files":e=>{const{normalize:t}=e;return t(["Ausgelesene Dateien"])},"upload-success-short":e=>{const{normalize:t}=e;return t(["erfolgreich hochgeladen"])},"upload-failed-short":e=>{const{normalize:t}=e;return t(["Upload fehlgeschlagen"])},"show-extracted-data":e=>{const{normalize:t}=e;return t(["Daten anzeigen"])},"hide-extracted-data":e=>{const{normalize:t}=e;return t(["weniger anzeigen"])},"donation-question":e=>{const{normalize:t}=e;return t(["Sind Sie damit einverstanden, diese Daten zu spenden?"])},"donation-agree":e=>{const{normalize:t}=e;return t(["Ja, ich bin damit einverstanden, diese Daten zu spenden und an die Forschenden zu übermitteln."])},"donation-disagree":e=>{const{normalize:t}=e;return t(["Nein, ich möchte diese Daten nicht spenden."])},"extracted-data-intro":e=>{const{normalize:t}=e;return t(["Die folgenden Daten wurden ausgelesen und werden bei Ihrer Zustimmung an die Forschenden übermittelt"])},file:e=>{const{normalize:t}=e;return t(["Datei"])},"error-multiple-files":e=>{const{normalize:t}=e;return t(["Mehr als eine Datei hochgeladen, aber nur eine wird erwartet"])},"error-not-zip":e=>{const{normalize:t}=e;return t(["Es wird eine Zip-Datei erwartet, aber es wurde ein anderer Dateityp hochgeladen."])},"error-generic":e=>{const{normalize:t}=e;return t(["Es ist ein Fehler aufgetreten: "])},"error-zip-corrupted":e=>{const{normalize:t}=e;return t(["Die hochgeladene Zip-Datei scheint beschädigt zu sein. Bitte laden Sie die Zip-Datei erneut von der Originalquelle herunter und versuchen Sie, sie erneut hochzuladen."])},"error-zip-encrypted":e=>{const{normalize:t}=e;return t(["Die hochgeladene Zip-Datei ist password-geschützt. Leider werden verschlüsselte Dateien nicht unterstützt."])},"error-all-expected-fields-missing":e=>{const{normalize:t}=e;return t(["Die hochgeladene Datei enthält nicht alle erwarteten Datenfelder."])},"error-regex-not-matched":e=>{const{normalize:t}=e;return t(["Die entsprechende Datei ist nicht im hochgeladenen Zip-Container enthalten."])},"error-json-syntax":e=>{const{normalize:t}=e;return t(["Die json-Datei enthält einen Syntaxfehler."])},"error-wrong-file-type":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["Die ausgewählte Datei ist eine '",n(a("actualType")),"'-Datei; es wird aber eine '",n(a("expectedType")),"'-Datei erwartet."])},"error-all-fields-filtered-out":e=>{const{normalize:t}=e;return t(["Alle Einträge in der hochgeladenen Datei wurden herausgefiltert."])},"extraction-failed":e=>{const{normalize:t}=e;return t(["Es konnten nicht alle erwarteten Dateien ausgelesen werden."])},"partial-upload-status":e=>{const{normalize:t}=e;return t(["Nur teilweise hochgeladen"])},"partial-upload-message":e=>{const{normalize:t}=e;return t(["Der Zip-Container wurde erfolgreich hochgeladen, aber es wurden nicht alle Daten erfolgreich extrahiert (siehe unten)"])},"data-extraction-intro":e=>{const{normalize:t}=e;return t(["Die folgenden Informationen werden aus dem ausgewählten File ausgelesen"])},"ul-success-modal-title":e=>{const{normalize:t}=e;return t(["Upload abgeschlossen"])},"ul-success-modal-body":e=>{const{normalize:t}=e;return t(["Alle Daten wurden erfolgreich hochgeladen. Bitte schauen Sie sich die hochgeladenen Daten an und geben Sie jeweils an, ob Sie die Daten spenden möchten oder nicht."])},"ul-failed-modal-title":e=>{const{normalize:t}=e;return t(["Es ist ein Fehler aufgetreten"])},"ul-failed-modal-body":e=>{const{normalize:t}=e;return t(["Leider ist beim Hochladen ihrer Datei ein Fehler aufgetreten. Bitte schauen Sie sich die Fehlerbeschreibung in den Abschnitten 'Daten hochladen' und 'Datenspende' an und versuchen Sie es gegebenenfalls erneut."])},"ul-partial-modal-title":e=>{const{normalize:t}=e;return t(["Upload teilweise erfolgreich"])},"ul-partial-modal-body":e=>{const{normalize:t}=e;return t(["

Es konnte nur ein Teil der Daten erfolgreich hochgeladen werden.

Im Bereich 'Datenspende' finden Sie weitere Informationen dazu, bei welchen Daten ein Problem aufgetreten ist. Gegebenenfalls helfen Ihnen diese Informationen das Problem zu identifizieren und zu beheben.

Falls nicht, können Sie sich die erfolgreich hochgeladenen Daten anschauen und entscheiden, ob Sie diese Daten spenden möchten oder nicht.

"])},"ul-nothing-extracted-modal-title":e=>{const{normalize:t}=e;return t(["Upload erfolgreich, jedoch wurden keine Daten ausgelesen"])},"ul-nothing-extracted-modal-body":e=>{const{normalize:t}=e;return t(["

Die Daten wurden erfolgreich verarbeitet, aber es wurden keine Daten extrahiert. Es ist möglich, dass Ihre Datei keine für dieses Forschungsprojekt relevanten Informationen enthält.

Wenn Sie denken, dass Sie die falsche Datei ausgewählt haben, können Sie den Upload erneut versuchen.

Andernfalls können Sie fortfahren, indem Sie auf 'Daten übermitteln' klicken.

"])},"extracted-data":e=>{const{normalize:t}=e;return t(["Die folgenden Daten wurden ausgelesen:"])},"extraction-disclaimer":e=>{const{normalize:t,interpolate:n,named:a}=e;return t(["Es werden die Zeilen ",n(a("lower"))," bis ",n(a("upper"))," von insgesamt ",n(a("total"))," ausgelesenen Einträgen angezeigt."])}}}})}"function"===typeof Gt&&Gt(Rt);const Wt=(0,Nt.Z)(Rt,[["render",zt],["__scopeId","data-v-d0eda75a"]]);var Qt=Wt,Xt={name:"UApp",components:{FileUploader:Qt},props:{uploadConfig:String,actionUrl:String,exceptionUrl:String,language:String},data(){return this.$i18n.locale=this.language,{parsedUploadConfig:JSON.parse(this.uploadConfig),postData:{},locale:this.language,donationStatus:0,infoModalMsg:"undefined"}},watch:{locale(e){this.$i18n.locale=e}},methods:{updatePostData(e){Object.keys(e).forEach((t=>{this.postData[t]=e[t]}))},getStatus(){let e=[],t=[],n=[];Object.keys(this.postData).forEach((a=>{switch(this.postData[a].status){case"success":e.push(this.postData[a]);break;case"failed":t.push(this.postData[a]);break;case"nothing extracted":t.push(this.postData[a]);break;case"pending":n.push(this.postData[a])}})),e.length||t.length||!n.length?!e.length&&n.length&&t.length?this.donationStatus=2:e.length||n.length?e.length&&n.length?this.donationStatus=4:e.length&&!n.length&&t.length?this.donationStatus=5:!e.length||n.length||t.length||(this.donationStatus=6):this.donationStatus=3:this.donationStatus=1},consentValid(){let e=[];return Object.keys(this.postData).forEach((t=>{"pending"!==this.postData[t].status&&e.push(this.postData[t].consent)})),!0!==e.includes(null)||(this.$refs.processingModal.style.display="none",this.infoModalMsg=this.$t("consent-error-msg"),this.$refs.infoModal.style.display="block",!1)},cleanConsent(){Object.keys(this.postData).forEach((e=>{null==this.postData[e].consent&&(this.postData[e].consent=!1)}))},processData(e=!1){if(this.$refs.statusModal.style.display="none",this.$refs.processingModal.style.display="block",this.$refs.modalBackdrop.style.display="block",this.consentValid()){if(!e){if(this.getStatus(),1===this.donationStatus)return this.$refs.processingModal.style.display="none",this.$refs.statusModalMsg.innerHTML=this.$t("status-info-msg-none-attempted"),void(this.$refs.statusModal.style.display="block");if(2===this.donationStatus||4===this.donationStatus)return this.$refs.processingModal.style.display="none",this.$refs.statusModalMsg.innerHTML=this.$t("status-info-msg-not-all-attempted"),void(this.$refs.statusModal.style.display="block")}this.zipData()}},zipData(){this.cleanConsent();let e=document.querySelectorAll("input[type=file]");e.forEach((e=>{e.disabled=!0}));let t=new FormData(document.getElementById("uploader-form")),n=new(kt());n.file("ul_data.json",JSON.stringify(this.postData)).generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:5}}).then((e=>{t.append("post_data",e),fetch(this.actionUrl,{method:"POST",body:t}).then((e=>{e.redirected&&(window.location.href=e.url)})).catch((e=>{console.info(e)}))}))},closeInfoModal(){this.$refs.infoModal.style.display="none",this.$refs.modalBackdrop.style.display="none"},closeStatusModal(){this.$refs.statusModal.style.display="none",this.$refs.modalBackdrop.style.display="none"}}};function en(e){e.__i18n=e.__i18n||[],e.__i18n.push({locale:"",resource:{en:{"data-submit-wait":e=>{const{normalize:t}=e;return t(["Your data donation is being submitted. Please be patient for a moment and do not close this window."])},"next-btn-label":e=>{const{normalize:t}=e;return t(["Submit Data"])},"consent-error-msg":e=>{const{normalize:t}=e;return t(["You did not indicate for all uploads whether you consent to the donation of your data. Please go back and indicate whether you want to donate your data."])},"back-label":e=>{const{normalize:t}=e;return t(["back"])},"cancel-label":e=>{const{normalize:t}=e;return t(["Cancel"])},"continue-anyway-label":e=>{const{normalize:t}=e;return t(["Yes, continue anyway"])},"status-info-msg-not-all-attempted":e=>{const{normalize:t}=e;return t(["You have skipped some data uploads. Are you sure you want to continue?"])},"status-info-msg-none-attempted":e=>{const{normalize:t}=e;return t(["You have not uploaded any data. Are you sure you want to continue?"])}},de:{"data-submit-wait":e=>{const{normalize:t}=e;return t(["Ihre Datenspende wird gerade übermittelt. Bitte haben Sie einen Moment Geduld und schliessen Sie dieses Fenster nicht."])},"next-btn-label":e=>{const{normalize:t}=e;return t(["Daten übermitteln"])},"consent-error-msg":e=>{const{normalize:t}=e;return t(["Sie haben nicht bei allen Uploads angegeben, ob Sie mit der Spende Ihrer Daten einverstanden sind. Bitte gehen Sie zurück und geben Sie an, ob Sie mit der Spende Ihrer Daten einverstanden sind."])},"back-label":e=>{const{normalize:t}=e;return t(["zurück"])},"continue-anyway-label":e=>{const{normalize:t}=e;return t(["Ja, trotzdem fortfahren"])},"cancel-label":e=>{const{normalize:t}=e;return t(["Abbrechen"])},"status-info-msg-not-all-attempted":e=>{const{normalize:t}=e;return t(["Sie haben einige Daten nicht hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?"])},"status-info-msg-none-attempted":e=>{const{normalize:t}=e;return t(["Sie haben keine Daten hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?"])}}}})}"function"===typeof en&&en(Xt);const tn=(0,Nt.Z)(Xt,[["render",v]]);var nn=tn,an=n(9150);const on=new an.o({fallbackLocale:"en"}),rn="#uapp",ln=document.querySelector(rn),sn=(0,a.ri)(nn,{...ln.dataset});sn.use(on),sn.mount(rn)}},t={};function n(a){var o=t[a];if(void 0!==o)return o.exports;var i=t[a]={exports:{}};return e[a].call(i.exports,i,i.exports,n),i.exports}n.m=e,function(){var e=[];n.O=function(t,a,o,i){if(!a){var r=1/0;for(c=0;c=i)&&Object.keys(n.O).every((function(e){return n.O[e](a[s])}))?a.splice(s--,1):(l=!1,i0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[a,o,i]}}(),function(){n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,{a:t}),t}}(),function(){n.d=function(e,t){for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}}(),function(){n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}(),function(){var e={93:0};n.O.j=function(t){return 0===e[t]};var t=function(t,a){var o,i,r=a[0],l=a[1],s=a[2],d=0;if(r.some((function(t){return 0!==e[t]}))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)var c=s(n)}for(t&&t(a);d\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./DonationInstructions.vue?vue&type=template&id=2c67d9b8&scoped=true\"\nimport script from \"./DonationInstructions.vue?vue&type=script&lang=js\"\nexport * from \"./DonationInstructions.vue?vue&type=script&lang=js\"\n\nimport \"./DonationInstructions.vue?vue&type=style&index=0&id=2c67d9b8&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2c67d9b8\"]])\n\nexport default __exports__","export default function (Component) {\n Component.__i18n = Component.__i18n || []\n Component.__i18n.push({\n \"locale\": \"\",\n \"resource\": {\n \"en\": {\n \"instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instructions\"])},\n \"no-instructions-defined\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No instructions defined\"])},\n \"upload-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File Upload\"])},\n \"data-extraction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data Donation\"])},\n \"upload-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a different file\"])},\n \"upload-success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload was successful\"])},\n \"upload-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed\"])},\n \"choose-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"select a different file\"])},\n \"choose-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select file\"])},\n \"file-is-being-uploaded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file is being uploaded\"])},\n \"extracted-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extracted files\"])},\n \"upload-success-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully Uploaded\"])},\n \"upload-failed-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Failed\"])},\n \"show-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show data\"])},\n \"hide-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n \"donation-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you agree to donate and submit the data listed above?\"])},\n \"donation-agree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes, I agree to submit these data\"])},\n \"donation-disagree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No, I do not want to submit these data\"])},\n \"pool-submit-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you agree to submit these data and receive a personalized analysis?\"])},\n \"donation-agree-pooled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes, I agree to my data being analyzed\"])},\n \"donation-disagree-pooled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No, I do not want my data to be analyzed\"])},\n \"extracted-data-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following data have been extracted and will be transmitted to the researchers with your consent\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file\"])},\n \"error-multiple-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More than one file uploaded, but only one is expected.\"])},\n \"error-not-zip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A zip-file is expected but another file type was uploaded.\"])},\n \"error-generic\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred: \"])},\n \"error-zip-corrupted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip file is corrupted. Please download the zip file again from the original source and try again.\"])},\n \"error-zip-encrypted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip file is encrypted. Unfortunately, encrypted files are not supported.\"])},\n \"error-all-expected-fields-missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uploaded file does not contain all expected data fields.\"])},\n \"error-regex-not-matched\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip container does not contain the matching file.\"])},\n \"error-json-syntax\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided file contains a syntax error.\"])},\n \"error-wrong-file-type\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"The provided file is of type '\", _interpolate(_named(\"actualType\")), \"' but '\", _interpolate(_named(\"expectedType\")), \"' is expected.\"])},\n \"error-all-fields-filtered-out\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All entries were filtered out and deleted.\"])},\n \"extraction-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information could not be extracted from uploaded file\"])},\n \"partial-upload-status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only partially uploaded\"])},\n \"partial-upload-message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zip file was successfully uploaded but not all of the expected information were successfully extracted (see below)\"])},\n \"data-extraction-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information will be extracted from the selected file\"])},\n \"ul-success-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Complete\"])},\n \"ul-success-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All data has been uploaded successfully. Please look at the uploaded data and indicate whether you want to donate the data or not.\"])},\n \"ul-failed-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An Error Occurred\"])},\n \"ul-failed-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfortunately, an error occurred while uploading your file. Please have a look at the error description in the File Upload and Data Donation sections and try again if necessary.\"])},\n \"ul-partial-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Partially Successful\"])},\n \"ul-partial-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Only parts of the data could be uploaded successfully.

In the 'Data Donation' section you will find more information on which file a problem occurred. This information may help you to identify and fix the problem.

If not, you can inspect the uploaded data, indicate whether you want to donate the data or not, and continue.

\"])},\n \"ul-nothing-extracted-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Successful but No Data Extracted\"])},\n \"ul-nothing-extracted-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

The data was successfully uploaded but no data were extracted. It is possible, that your data file did not contain any information relevant to this research project.

If you think you chose the wrong file, you can try the upload again. Otherwise, you can continue by clicking on 'submit data'.

\"])},\n \"extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following data were extracted:\"])},\n \"extraction-disclaimer\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"The rows \", _interpolate(_named(\"lower\")), \" to \", _interpolate(_named(\"upper\")), \" from a total of \", _interpolate(_named(\"total\")), \" extracted data entries are displayed.\"])}\n },\n \"de\": {\n \"instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instruktionen\"])},\n \"no-instructions-defined\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es wurden keine Instruktionen definiert\"])},\n \"upload-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei hochladen\"])},\n \"data-extraction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenspende\"])},\n \"upload-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Andere Datei hochladen\"])},\n \"upload-success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload erfolgreich abgeschlossen\"])},\n \"upload-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas ging schief\"])},\n \"choose-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"eine andere Datei auswählen\"])},\n \"choose-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei auswählen\"])},\n \"file-is-being-uploaded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei wird hochgeladen\"])},\n \"extracted-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ausgelesene Dateien\"])},\n \"upload-success-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erfolgreich hochgeladen\"])},\n \"upload-failed-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload fehlgeschlagen\"])},\n \"show-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten anzeigen\"])},\n \"hide-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weniger anzeigen\"])},\n \"donation-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sind Sie damit einverstanden, diese Daten zu spenden?\"])},\n \"donation-agree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja, ich bin damit einverstanden, diese Daten zu spenden und an die Forschenden zu übermitteln.\"])},\n \"donation-disagree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein, ich möchte diese Daten nicht spenden.\"])},\n \"pool-submit-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sind Sie damit einverstanden Ihre Daten für eine personalisierte Auswertung zu übermitteln?\"])},\n \"donation-agree-pooled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja, ich bin damit einverstanden, meine Daten für eine personalisierte Auswertung zu übermitteln\"])},\n \"donation-disagree-pooled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein, ich möchte meine Daten nicht übermitteln\"])},\n \"extracted-data-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Daten wurden ausgelesen und werden bei Ihrer Zustimmung an die Forschenden übermittelt\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei\"])},\n \"error-multiple-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mehr als eine Datei hochgeladen, aber nur eine wird erwartet\"])},\n \"error-not-zip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es wird eine Zip-Datei erwartet, aber es wurde ein anderer Dateityp hochgeladen.\"])},\n \"error-generic\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es ist ein Fehler aufgetreten: \"])},\n \"error-zip-corrupted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Zip-Datei scheint beschädigt zu sein. Bitte laden Sie die Zip-Datei erneut von der Originalquelle herunter und versuchen Sie, sie erneut hochzuladen.\"])},\n \"error-zip-encrypted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Zip-Datei ist password-geschützt. Leider werden verschlüsselte Dateien nicht unterstützt.\"])},\n \"error-all-expected-fields-missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Datei enthält nicht alle erwarteten Datenfelder.\"])},\n \"error-regex-not-matched\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die entsprechende Datei ist nicht im hochgeladenen Zip-Container enthalten.\"])},\n \"error-json-syntax\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die json-Datei enthält einen Syntaxfehler.\"])},\n \"error-wrong-file-type\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Die ausgewählte Datei ist eine '\", _interpolate(_named(\"actualType\")), \"'-Datei; es wird aber eine '\", _interpolate(_named(\"expectedType\")), \"'-Datei erwartet.\"])},\n \"error-all-fields-filtered-out\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Einträge in der hochgeladenen Datei wurden herausgefiltert.\"])},\n \"extraction-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es konnten nicht alle erwarteten Dateien ausgelesen werden.\"])},\n \"partial-upload-status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur teilweise hochgeladen\"])},\n \"partial-upload-message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Zip-Container wurde erfolgreich hochgeladen, aber es wurden nicht alle Daten erfolgreich extrahiert (siehe unten)\"])},\n \"data-extraction-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden aus dem ausgewählten File ausgelesen\"])},\n \"ul-success-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload abgeschlossen\"])},\n \"ul-success-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Daten wurden erfolgreich hochgeladen. Bitte schauen Sie sich die hochgeladenen Daten an und geben Sie jeweils an, ob Sie die Daten spenden möchten oder nicht.\"])},\n \"ul-failed-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es ist ein Fehler aufgetreten\"])},\n \"ul-failed-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Leider ist beim Hochladen ihrer Datei ein Fehler aufgetreten. Bitte schauen Sie sich die Fehlerbeschreibung in den Abschnitten 'Daten hochladen' und 'Datenspende' an und versuchen Sie es gegebenenfalls erneut.\"])},\n \"ul-partial-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload teilweise erfolgreich\"])},\n \"ul-partial-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Es konnte nur ein Teil der Daten erfolgreich hochgeladen werden.

Im Bereich 'Datenspende' finden Sie weitere Informationen dazu, bei welchen Daten ein Problem aufgetreten ist. Gegebenenfalls helfen Ihnen diese Informationen das Problem zu identifizieren und zu beheben.

Falls nicht, können Sie sich die erfolgreich hochgeladenen Daten anschauen und entscheiden, ob Sie diese Daten spenden möchten oder nicht.

\"])},\n \"ul-nothing-extracted-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload erfolgreich, jedoch wurden keine Daten ausgelesen\"])},\n \"ul-nothing-extracted-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Die Daten wurden erfolgreich verarbeitet, aber es wurden keine Daten extrahiert. Es ist möglich, dass Ihre Datei keine für dieses Forschungsprojekt relevanten Informationen enthält.

Wenn Sie denken, dass Sie die falsche Datei ausgewählt haben, können Sie den Upload erneut versuchen.

Andernfalls können Sie fortfahren, indem Sie auf 'Daten übermitteln' klicken.

\"])},\n \"extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Daten wurden ausgelesen:\"])},\n \"extraction-disclaimer\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Es werden die Zeilen \", _interpolate(_named(\"lower\")), \" bis \", _interpolate(_named(\"upper\")), \" von insgesamt \", _interpolate(_named(\"total\")), \" ausgelesenen Einträgen angezeigt.\"])}\n }\n }\n })\n}\n","import { render } from \"./FileUploader.vue?vue&type=template&id=482dae14&scoped=true\"\nimport script from \"./FileUploader.vue?vue&type=script&lang=js\"\nexport * from \"./FileUploader.vue?vue&type=script&lang=js\"\n\nimport \"./FileUploader.vue?vue&type=style&index=0&id=482dae14&scoped=true&lang=css\"\n/* custom blocks */\nimport block0 from \"../translations/file_uploader.json?vue&type=custom&index=0&blockType=i18n&issuerPath=C%3A%5CFiles%5CArbeit%5CProjekte%5CData%20Donation%20Lab%5CCode%5CDDM%5Cddm%5Cfrontend%5Csrc%5Ccomponents%5CFileUploader.vue\"\nif (typeof block0 === 'function') block0(script)\n\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-482dae14\"]])\n\nexport default __exports__","export default function (Component) {\n Component.__i18n = Component.__i18n || []\n Component.__i18n.push({\n \"locale\": \"\",\n \"resource\": {\n \"en\": {\n \"data-submit-wait\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your data donation is being submitted. Please be patient for a moment and do not close this window.\"])},\n \"next-btn-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit Data\"])},\n \"consent-error-msg\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You did not indicate for all uploads whether you consent to the donation of your data. Please go back and indicate whether you want to donate your data.\"])},\n \"back-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back\"])},\n \"cancel-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"continue-anyway-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes, continue anyway\"])},\n \"status-info-msg-not-all-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have skipped some data uploads. Are you sure you want to continue?\"])},\n \"status-info-msg-none-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have not uploaded any data. Are you sure you want to continue?\"])}\n },\n \"de\": {\n \"data-submit-wait\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ihre Datenspende wird gerade übermittelt. Bitte haben Sie einen Moment Geduld und schliessen Sie dieses Fenster nicht.\"])},\n \"next-btn-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten übermitteln\"])},\n \"consent-error-msg\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben nicht bei allen Uploads angegeben, ob Sie mit der Spende Ihrer Daten einverstanden sind. Bitte gehen Sie zurück und geben Sie an, ob Sie mit der Spende Ihrer Daten einverstanden sind.\"])},\n \"back-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück\"])},\n \"continue-anyway-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja, trotzdem fortfahren\"])},\n \"cancel-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"status-info-msg-not-all-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben einige Daten nicht hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?\"])},\n \"status-info-msg-none-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben keine Daten hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?\"])}\n }\n }\n })\n}\n","import { render } from \"./UploaderApp.vue?vue&type=template&id=222100a2\"\nimport script from \"./UploaderApp.vue?vue&type=script&lang=js\"\nexport * from \"./UploaderApp.vue?vue&type=script&lang=js\"\n\nimport \"./UploaderApp.vue?vue&type=style&index=0&id=222100a2&lang=css\"\n/* custom blocks */\nimport block0 from \"./translations/uploader_app.json?vue&type=custom&index=0&blockType=i18n&issuerPath=C%3A%5CFiles%5CArbeit%5CProjekte%5CData%20Donation%20Lab%5CCode%5CDDM%5Cddm%5Cfrontend%5Csrc%5CUploaderApp.vue\"\nif (typeof block0 === 'function') block0(script)\n\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport UApp from './UploaderApp.vue'\r\nimport { createI18n } from 'vue-i18n'\r\n\r\nconst i18n = new createI18n({\r\n fallbackLocale: 'en',\r\n})\r\n\r\nconst selector = \"#uapp\";\r\nconst mountEl = document.querySelector(selector);\r\nconst app = createApp(UApp, {...mountEl.dataset})\r\n\r\napp.use(i18n)\r\napp.mount(selector)\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t93: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvue_frontend\"] = self[\"webpackChunkvue_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(4043); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["class","id","ref","style","_createElementVNode","_createElementBlock","_Fragment","_renderList","$data","uploadConfig","_createBlock","_component_FileUploader","key","upload_type","name","blueprints","instructions","exceptionUrl","pooled","onChangedData","$options","type","onClick","_ctx","_toDisplayString","_hoisted_7","_hoisted_10","infoModalMsg","_hoisted_14","role","for","$props","length","_createVNode","_component_DonationInstructions","_hoisted_15","_hoisted_18","_hoisted_17","onChange","_hoisted_22","_hoisted_24","_hoisted_25","_hoisted_28","_hoisted_29","_hoisted_33","error","_hoisted_40","bp","toString","status","_hoisted_48","description","_hoisted_53","extracted_fields","values","value","extracted_data","slice","fb_pos_lower","fb_pos_upper","row","keys","_hoisted_62","_hoisted_64","_hoisted_65","lower","upper","total","_hoisted_69","consent","$event","required","_hoisted_80","errors","e","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_102","ulModalInfoTitle","innerHTML","ulModalInfoMsg","_hoisted_105","_hoisted_5","_hoisted_6","_hoisted_9","i","index","text","props","Array","componentId","Number","data","methods","__exports__","components","DonationInstructions","expectsZip","Boolean","String","emits","blueprintData","uploadStatus","uploadAttempts","generalErrors","poolDonate","created","this","forEach","blueprintInfo","name_uploaded_file","Map","resetErrorLog","emitToParent","processFile","event","uploader","files","target","JSZip","then","z","blueprint","re","RegExp","regex_path","reHasMatched","file","f","async","c","processContent","catch","postError","message","recordError","$t","Object","myMess","statusCode","includes","format","endsWith","errorMsg","actualType","substr","lastIndexOf","expectedType","reader","FileReader","onload","content","result","readAsText","setTimeout","updateStatus","$nextTick","blueprintID","fileContent","extractedData","JSON","parse","json_extraction_root","getNestedJsonEntry","Symbol","iterator","parserResult","Papa","header","delimiter","csv_delimiter","nEntriesWithMissingFields","nEntriesFilteredOut","nMsgsPosted","maxMsgs","entry","missingFields","expected_fields","every","field","exp_fields_regex_matching","fieldRegex","filter","test","push","rules","filter_rules","keyMap","rule","regex_field","set","get","comparison_operator","comparison_value","newValue","replaceAll","replacement_value","comparisonValue","entries","msg","path","replace","a","split","n","k","dataToEmit","stringify","$emit","code","axios","console","bpErrorCount","bpNothingExtracted","nBlueprints","errorSet","Set","size","has","modalIcon","document","getElementById","className","$refs","ulInfoModal","display","modalBackdrop","showHideData","bpId","elementId","targetLabel","concat","controlElement","newLabel","classList","contains","closeUlInfoModal","updateFbPos","dir","Component","__i18n","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","FileUploader","actionUrl","language","$i18n","locale","parsedUploadConfig","postData","donationStatus","watch","val","updatePostData","getStatus","success","failed","pending","consentValid","consents","processingModal","infoModal","cleanConsent","processData","skipStatus","statusModal","statusModalMsg","zipData","fileInputs","querySelectorAll","fi","disabled","form","FormData","zip","generateAsync","compression","compressionOptions","level","blob","append","fetch","method","body","response","redirected","window","location","href","url","err","info","closeInfoModal","closeStatusModal","render","i18n","createI18n","fallbackLocale","selector","mountEl","querySelector","app","createApp","UApp","dataset","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/vue_uploader.js","mappings":"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","sources":["webpack://vue_frontend/./src/UploaderApp.vue","webpack://vue_frontend/./src/components/FileUploader.vue","webpack://vue_frontend/./src/components/DonationInstructions.vue","webpack://vue_frontend/./src/components/DonationInstructions.vue?04f9","webpack://vue_frontend/./src/translations/file_uploader.json","webpack://vue_frontend/./src/components/FileUploader.vue?88ff","webpack://vue_frontend/./src/translations/uploader_app.json","webpack://vue_frontend/./src/UploaderApp.vue?fe86","webpack://vue_frontend/./src/uploader.js","webpack://vue_frontend/webpack/bootstrap","webpack://vue_frontend/webpack/runtime/chunk loaded","webpack://vue_frontend/webpack/runtime/compat get default export","webpack://vue_frontend/webpack/runtime/define property getters","webpack://vue_frontend/webpack/runtime/global","webpack://vue_frontend/webpack/runtime/hasOwnProperty shorthand","webpack://vue_frontend/webpack/runtime/make namespace object","webpack://vue_frontend/webpack/runtime/jsonp chunk loading","webpack://vue_frontend/webpack/startup"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { render } from \"./DonationInstructions.vue?vue&type=template&id=2c67d9b8&scoped=true\"\nimport script from \"./DonationInstructions.vue?vue&type=script&lang=js\"\nexport * from \"./DonationInstructions.vue?vue&type=script&lang=js\"\n\nimport \"./DonationInstructions.vue?vue&type=style&index=0&id=2c67d9b8&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2c67d9b8\"]])\n\nexport default __exports__","export default function (Component) {\n Component.__i18n = Component.__i18n || []\n Component.__i18n.push({\n \"locale\": \"\",\n \"resource\": {\n \"en\": {\n \"instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instructions\"])},\n \"no-instructions-defined\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No instructions defined\"])},\n \"upload-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File Upload\"])},\n \"data-extraction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data Donation\"])},\n \"upload-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a different file\"])},\n \"upload-success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload was successful\"])},\n \"upload-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed\"])},\n \"choose-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"select a different file\"])},\n \"choose-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select file\"])},\n \"file-is-being-uploaded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file is being uploaded\"])},\n \"extracted-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extracted files\"])},\n \"upload-success-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully Uploaded\"])},\n \"upload-failed-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Failed\"])},\n \"show-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show data\"])},\n \"hide-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n \"donation-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you agree to donate and submit the data listed above?\"])},\n \"donation-agree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes, I agree to submit these data\"])},\n \"donation-disagree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No, I do not want to submit these data\"])},\n \"extracted-data-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following data have been extracted and will be transmitted to the researchers with your consent\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"file\"])},\n \"error-multiple-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More than one file uploaded, but only one is expected.\"])},\n \"error-not-zip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"A zip-file is expected but another file type was uploaded.\"])},\n \"error-generic\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred: \"])},\n \"error-zip-corrupted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip file is corrupted. Please download the zip file again from the original source and try again.\"])},\n \"error-zip-encrypted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip file is encrypted. Unfortunately, encrypted files are not supported.\"])},\n \"error-all-expected-fields-missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uploaded file does not contain all expected data fields.\"])},\n \"error-regex-not-matched\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided zip container does not contain the matching file.\"])},\n \"error-json-syntax\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The provided file contains a syntax error.\"])},\n \"error-wrong-file-type\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"The provided file is of type '\", _interpolate(_named(\"actualType\")), \"' but '\", _interpolate(_named(\"expectedType\")), \"' is expected.\"])},\n \"error-all-fields-filtered-out\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All entries were filtered out and deleted.\"])},\n \"extraction-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Information could not be extracted from uploaded file\"])},\n \"partial-upload-status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only partially uploaded\"])},\n \"partial-upload-message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zip file was successfully uploaded but not all of the expected information were successfully extracted (see below)\"])},\n \"data-extraction-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following information will be extracted from the selected file\"])},\n \"ul-success-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Complete\"])},\n \"ul-success-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All data has been uploaded successfully. Please look at the uploaded data and indicate whether you want to donate the data or not.\"])},\n \"ul-failed-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An Error Occurred\"])},\n \"ul-failed-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfortunately, an error occurred while uploading your file. Please have a look at the error description in the File Upload and Data Donation sections and try again if necessary.\"])},\n \"ul-partial-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Partially Successful\"])},\n \"ul-partial-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Only parts of the data could be uploaded successfully.

In the 'Data Donation' section you will find more information on which file a problem occurred. This information may help you to identify and fix the problem.

If not, you can inspect the uploaded data, indicate whether you want to donate the data or not, and continue.

\"])},\n \"ul-nothing-extracted-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload Successful but No Data Extracted\"])},\n \"ul-nothing-extracted-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

The data was successfully uploaded but no data were extracted. It is possible, that your data file did not contain any information relevant to this research project.

If you think you chose the wrong file, you can try the upload again. Otherwise, you can continue by clicking on 'submit data'.

\"])},\n \"extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The following data were extracted:\"])},\n \"extraction-disclaimer\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"The rows \", _interpolate(_named(\"lower\")), \" to \", _interpolate(_named(\"upper\")), \" from a total of \", _interpolate(_named(\"total\")), \" extracted data entries are displayed.\"])}\n },\n \"de\": {\n \"instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instruktionen\"])},\n \"no-instructions-defined\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es wurden keine Instruktionen definiert\"])},\n \"upload-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei hochladen\"])},\n \"data-extraction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datenspende\"])},\n \"upload-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Andere Datei hochladen\"])},\n \"upload-success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload erfolgreich abgeschlossen\"])},\n \"upload-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etwas ging schief\"])},\n \"choose-different-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"eine andere Datei auswählen\"])},\n \"choose-file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei auswählen\"])},\n \"file-is-being-uploaded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei wird hochgeladen\"])},\n \"extracted-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ausgelesene Dateien\"])},\n \"upload-success-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"erfolgreich hochgeladen\"])},\n \"upload-failed-short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload fehlgeschlagen\"])},\n \"show-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten anzeigen\"])},\n \"hide-extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"weniger anzeigen\"])},\n \"donation-question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sind Sie damit einverstanden, diese Daten zu spenden?\"])},\n \"donation-agree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja, ich bin damit einverstanden, diese Daten zu spenden und an die Forschenden zu übermitteln.\"])},\n \"donation-disagree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nein, ich möchte diese Daten nicht spenden.\"])},\n \"extracted-data-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Daten wurden ausgelesen und werden bei Ihrer Zustimmung an die Forschenden übermittelt\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Datei\"])},\n \"error-multiple-files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mehr als eine Datei hochgeladen, aber nur eine wird erwartet\"])},\n \"error-not-zip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es wird eine Zip-Datei erwartet, aber es wurde ein anderer Dateityp hochgeladen.\"])},\n \"error-generic\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es ist ein Fehler aufgetreten: \"])},\n \"error-zip-corrupted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Zip-Datei scheint beschädigt zu sein. Bitte laden Sie die Zip-Datei erneut von der Originalquelle herunter und versuchen Sie, sie erneut hochzuladen.\"])},\n \"error-zip-encrypted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Zip-Datei ist password-geschützt. Leider werden verschlüsselte Dateien nicht unterstützt.\"])},\n \"error-all-expected-fields-missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die hochgeladene Datei enthält nicht alle erwarteten Datenfelder.\"])},\n \"error-regex-not-matched\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die entsprechende Datei ist nicht im hochgeladenen Zip-Container enthalten.\"])},\n \"error-json-syntax\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die json-Datei enthält einen Syntaxfehler.\"])},\n \"error-wrong-file-type\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Die ausgewählte Datei ist eine '\", _interpolate(_named(\"actualType\")), \"'-Datei; es wird aber eine '\", _interpolate(_named(\"expectedType\")), \"'-Datei erwartet.\"])},\n \"error-all-fields-filtered-out\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Einträge in der hochgeladenen Datei wurden herausgefiltert.\"])},\n \"extraction-failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es konnten nicht alle erwarteten Dateien ausgelesen werden.\"])},\n \"partial-upload-status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur teilweise hochgeladen\"])},\n \"partial-upload-message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Der Zip-Container wurde erfolgreich hochgeladen, aber es wurden nicht alle Daten erfolgreich extrahiert (siehe unten)\"])},\n \"data-extraction-intro\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Informationen werden aus dem ausgewählten File ausgelesen\"])},\n \"ul-success-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload abgeschlossen\"])},\n \"ul-success-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alle Daten wurden erfolgreich hochgeladen. Bitte schauen Sie sich die hochgeladenen Daten an und geben Sie jeweils an, ob Sie die Daten spenden möchten oder nicht.\"])},\n \"ul-failed-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Es ist ein Fehler aufgetreten\"])},\n \"ul-failed-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Leider ist beim Hochladen ihrer Datei ein Fehler aufgetreten. Bitte schauen Sie sich die Fehlerbeschreibung in den Abschnitten 'Daten hochladen' und 'Datenspende' an und versuchen Sie es gegebenenfalls erneut.\"])},\n \"ul-partial-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload teilweise erfolgreich\"])},\n \"ul-partial-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Es konnte nur ein Teil der Daten erfolgreich hochgeladen werden.

Im Bereich 'Datenspende' finden Sie weitere Informationen dazu, bei welchen Daten ein Problem aufgetreten ist. Gegebenenfalls helfen Ihnen diese Informationen das Problem zu identifizieren und zu beheben.

Falls nicht, können Sie sich die erfolgreich hochgeladenen Daten anschauen und entscheiden, ob Sie diese Daten spenden möchten oder nicht.

\"])},\n \"ul-nothing-extracted-modal-title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload erfolgreich, jedoch wurden keine Daten ausgelesen\"])},\n \"ul-nothing-extracted-modal-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"

Die Daten wurden erfolgreich verarbeitet, aber es wurden keine Daten extrahiert. Es ist möglich, dass Ihre Datei keine für dieses Forschungsprojekt relevanten Informationen enthält.

Wenn Sie denken, dass Sie die falsche Datei ausgewählt haben, können Sie den Upload erneut versuchen.

Andernfalls können Sie fortfahren, indem Sie auf 'Daten übermitteln' klicken.

\"])},\n \"extracted-data\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Die folgenden Daten wurden ausgelesen:\"])},\n \"extraction-disclaimer\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Es werden die Zeilen \", _interpolate(_named(\"lower\")), \" bis \", _interpolate(_named(\"upper\")), \" von insgesamt \", _interpolate(_named(\"total\")), \" ausgelesenen Einträgen angezeigt.\"])}\n }\n }\n })\n}\n","import { render } from \"./FileUploader.vue?vue&type=template&id=d0eda75a&scoped=true\"\nimport script from \"./FileUploader.vue?vue&type=script&lang=js\"\nexport * from \"./FileUploader.vue?vue&type=script&lang=js\"\n\nimport \"./FileUploader.vue?vue&type=style&index=0&id=d0eda75a&scoped=true&lang=css\"\n/* custom blocks */\nimport block0 from \"../translations/file_uploader.json?vue&type=custom&index=0&blockType=i18n&issuerPath=C%3A%5CFiles%5CArbeit%5CProjekte%5CData%20Donation%20Lab%5CCode%5CDDM%5Cddm%5Cfrontend%5Csrc%5Ccomponents%5CFileUploader.vue\"\nif (typeof block0 === 'function') block0(script)\n\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d0eda75a\"]])\n\nexport default __exports__","export default function (Component) {\n Component.__i18n = Component.__i18n || []\n Component.__i18n.push({\n \"locale\": \"\",\n \"resource\": {\n \"en\": {\n \"data-submit-wait\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your data donation is being submitted. Please be patient for a moment and do not close this window.\"])},\n \"next-btn-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit Data\"])},\n \"consent-error-msg\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You did not indicate for all uploads whether you consent to the donation of your data. Please go back and indicate whether you want to donate your data.\"])},\n \"back-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back\"])},\n \"cancel-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"continue-anyway-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes, continue anyway\"])},\n \"status-info-msg-not-all-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have skipped some data uploads. Are you sure you want to continue?\"])},\n \"status-info-msg-none-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have not uploaded any data. Are you sure you want to continue?\"])}\n },\n \"de\": {\n \"data-submit-wait\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ihre Datenspende wird gerade übermittelt. Bitte haben Sie einen Moment Geduld und schliessen Sie dieses Fenster nicht.\"])},\n \"next-btn-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daten übermitteln\"])},\n \"consent-error-msg\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben nicht bei allen Uploads angegeben, ob Sie mit der Spende Ihrer Daten einverstanden sind. Bitte gehen Sie zurück und geben Sie an, ob Sie mit der Spende Ihrer Daten einverstanden sind.\"])},\n \"back-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zurück\"])},\n \"continue-anyway-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ja, trotzdem fortfahren\"])},\n \"cancel-label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abbrechen\"])},\n \"status-info-msg-not-all-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben einige Daten nicht hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?\"])},\n \"status-info-msg-none-attempted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sie haben keine Daten hochgeladen. Sind Sie sicher, dass Sie fortfahren möchten?\"])}\n }\n }\n })\n}\n","import { render } from \"./UploaderApp.vue?vue&type=template&id=26a0ecf6\"\nimport script from \"./UploaderApp.vue?vue&type=script&lang=js\"\nexport * from \"./UploaderApp.vue?vue&type=script&lang=js\"\n\nimport \"./UploaderApp.vue?vue&type=style&index=0&id=26a0ecf6&lang=css\"\n/* custom blocks */\nimport block0 from \"./translations/uploader_app.json?vue&type=custom&index=0&blockType=i18n&issuerPath=C%3A%5CFiles%5CArbeit%5CProjekte%5CData%20Donation%20Lab%5CCode%5CDDM%5Cddm%5Cfrontend%5Csrc%5CUploaderApp.vue\"\nif (typeof block0 === 'function') block0(script)\n\n\nimport exportComponent from \"C:\\\\Files\\\\Arbeit\\\\Projekte\\\\Data Donation Lab\\\\Code\\\\DDM\\\\ddm\\\\frontend\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport UApp from './UploaderApp.vue'\r\nimport { createI18n } from 'vue-i18n'\r\n\r\nconst i18n = new createI18n({\r\n fallbackLocale: 'en',\r\n})\r\n\r\nconst selector = \"#uapp\";\r\nconst mountEl = document.querySelector(selector);\r\nconst app = createApp(UApp, {...mountEl.dataset})\r\n\r\napp.use(i18n)\r\napp.mount(selector)\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t93: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkvue_frontend\"] = self[\"webpackChunkvue_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(6983); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["class","id","ref","style","_createElementVNode","_createElementBlock","_Fragment","_renderList","$data","uploadConfig","_createBlock","_component_FileUploader","key","upload_type","name","blueprints","instructions","exceptionUrl","combined_consent","onChangedData","$options","type","onClick","_ctx","_toDisplayString","_hoisted_7","_hoisted_10","infoModalMsg","_hoisted_14","role","for","$props","length","_createVNode","_component_DonationInstructions","_hoisted_15","_hoisted_18","_hoisted_17","onChange","_hoisted_22","_hoisted_24","_hoisted_25","_hoisted_28","_hoisted_29","_hoisted_33","error","_hoisted_40","bp","toString","status","_hoisted_48","description","_hoisted_53","extracted_fields","values","value","extracted_data","slice","fb_pos_lower","fb_pos_upper","row","keys","_hoisted_62","_hoisted_64","_hoisted_65","lower","upper","total","_hoisted_69","combinedConsent","consent","$event","required","_hoisted_80","errors","e","_hoisted_83","_hoisted_84","_hoisted_85","_hoisted_86","_hoisted_89","_hoisted_90","_hoisted_91","_hoisted_102","ulModalInfoTitle","innerHTML","ulModalInfoMsg","_hoisted_105","_hoisted_5","_hoisted_6","_hoisted_9","i","index","text","props","Array","componentId","Number","data","methods","__exports__","components","DonationInstructions","expectsZip","Boolean","String","emits","blueprintData","uploadStatus","uploadAttempts","generalErrors","combinedDonation","created","this","forEach","blueprintInfo","name_uploaded_file","Map","resetErrorLog","emitToParent","processFile","event","uploader","files","target","JSZip","then","z","blueprint","re","RegExp","regex_path","reHasMatched","file","f","async","c","processContent","catch","postError","message","recordError","$t","Object","myMess","statusCode","includes","format","endsWith","errorMsg","actualType","substr","lastIndexOf","expectedType","reader","FileReader","onload","content","result","readAsText","setTimeout","updateStatus","$nextTick","blueprintID","fileContent","extractedData","JSON","parse","json_extraction_root","getNestedJsonEntry","Symbol","iterator","parserResult","Papa","header","delimiter","csv_delimiter","nEntriesWithMissingFields","nEntriesFilteredOut","nMsgsPosted","maxMsgs","entry","missingFields","expected_fields","every","field","exp_fields_regex_matching","fieldRegex","filter","test","push","rules","filter_rules","keyMap","rule","regex_field","set","get","comparison_operator","comparison_value","newValue","replaceAll","replacement_value","comparisonValue","entries","msg","path","replace","a","split","n","k","dataToEmit","stringify","$emit","code","axios","console","bpErrorCount","bpNothingExtracted","nBlueprints","errorSet","Set","size","has","modalIcon","document","getElementById","className","$refs","ulInfoModal","display","modalBackdrop","showHideData","bpId","elementId","targetLabel","concat","controlElement","newLabel","classList","contains","closeUlInfoModal","updateFbPos","dir","Component","__i18n","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","FileUploader","actionUrl","language","$i18n","locale","parsedUploadConfig","postData","donationStatus","watch","val","updatePostData","getStatus","success","failed","pending","consentValid","consents","processingModal","infoModal","cleanConsent","processData","skipStatus","statusModal","statusModalMsg","zipData","fileInputs","querySelectorAll","fi","disabled","form","FormData","zip","generateAsync","compression","compressionOptions","level","blob","append","fetch","method","body","response","redirected","window","location","href","url","err","info","closeInfoModal","closeStatusModal","render","i18n","createI18n","fallbackLocale","selector","mountEl","querySelector","app","createApp","UApp","dataset","use","mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/ddm/templates/ddm/public/data_donation.html b/ddm/templates/ddm/public/data_donation.html index 554f0ad..c8c1c07 100644 --- a/ddm/templates/ddm/public/data_donation.html +++ b/ddm/templates/ddm/public/data_donation.html @@ -13,7 +13,6 @@ data-action-url='{{ request.build_absolute_uri }}' data-exception-url='{% if request.is_secure %}https://{% else %}http://{% endif %}{{ request.get_host }}{% url "ddm-exceptions-api" project_id %}' data-language='{{ LANGUAGE_CODE|slice:"0:2"}}' - data-pooled='{% if request.project_is_pooled %}true{% else %}false{% endif %}' > diff --git a/ddm/views/admin/data_donations.py b/ddm/views/admin/data_donations.py index f8a248c..e484a9d 100644 --- a/ddm/views/admin/data_donations.py +++ b/ddm/views/admin/data_donations.py @@ -46,7 +46,7 @@ class FileUploaderCreate(SuccessMessageMixin, DdmAuthMixin, BlueprintMixin, Crea """ View to create a new file uploader. """ model = FileUploader template_name = 'ddm/admin/data_donation/file_uploader/create.html' - fields = ['name', 'upload_type'] + fields = ['name', 'upload_type', 'combined_consent'] success_message = 'File Uploader was created successfully.' def form_valid(self, form): @@ -65,7 +65,7 @@ class FileUploaderEdit(SuccessMessageMixin, DdmAuthMixin, BlueprintMixin, Update """ View to edit the details of an existing file uploader. """ model = FileUploader template_name = 'ddm/admin/data_donation/file_uploader/edit.html' - fields = ['name', 'upload_type', 'index'] + fields = ['name', 'upload_type', 'combined_consent', 'index'] success_message = 'Blueprint Uploader "%(name)s" was successfully updated.' def get_context_data(self, **kwargs): diff --git a/docs/modules/ROOT/pages/for_researchers.adoc b/docs/modules/ROOT/pages/for_researchers.adoc index 3650f6c..d643ad6 100644 --- a/docs/modules/ROOT/pages/for_researchers.adoc +++ b/docs/modules/ROOT/pages/for_researchers.adoc @@ -187,22 +187,26 @@ The data donation step can incorporate multiple File Uploaders. ===== Configure File Uploader -Name:: Name of the File Uploader. Will be publicly visible to participants in the header of the file uplaoder. +Name:: Name of the File Uploader. Will be publicly visible to participants in the header of the File Uplaoder. Upload Type:: Either "single file" or "zip file". Index:: The position of the file uploader on the data donation page. -Only relevant if multiple file uploaders are displayed – file uploaders with a +Only relevant if multiple File Uploaders are displayed – File Uploaders with a lower index will be displayed closer to the top of the page. +All-in-one consent:: If enabled, participants will be asked to consent to submit +all uploaded data at once. Otherwise, participant will be asked to consent to +the submission of the data separately for each blueprint. + Associated Donation Blueprints:: The donation blueprints that apply to the -expected file(s) collected with the file uploader. +expected file(s) collected with the File Uploader. ===== Configure Instructions Donation Instructions consist of one or multiple instruction pages. -Instruction pages are displayed as a slide show at the top of file uploader. +Instruction pages are displayed as a slide show at the top of File Uploader. For each instruction page, the following can be configured: Text:: The instruction text displayed to the participants. @@ -470,9 +474,11 @@ The participant related data contains the following information: "briefing_consent": "1" # or "0" if participant did not consent to take part in the study }, "donation_info": { - "n_success": 1, # number of successful donations by this participant - "n_pending": 1, # number of pending (i.e., not attempted) donations by this participant - "n_failed": 0, # number of attempted but failed donations by this participant + "n_success": 1, # number of successfully uploaded blueprints by this participant (regardless of consent). + "n_pending": 1, # number of pending (i.e., not attempted) blueprint uploads. + "n_failed": 0, # number of blueprints where an upload was attempted but failed. + "n_consent": 1, # number of successful uploads to which donation consent was given. + "n_no_consent": 0, # number of successful uploads to which no donation consent was given. "n_no_data_extracted": 0 # number of donations by this participant where all entries were filtered out } } diff --git a/frontend/src/UploaderApp.vue b/frontend/src/UploaderApp.vue index 3899f9f..8d85686 100644 --- a/frontend/src/UploaderApp.vue +++ b/frontend/src/UploaderApp.vue @@ -11,7 +11,7 @@ :blueprints="uploadConfig.blueprints" :instructions="uploadConfig.instructions" :exception-url="this.exceptionUrl" - :pooled="this.pooled" + :combined-consent="uploadConfig.combined_consent" @changedData="updatePostData" > @@ -72,8 +72,7 @@ export default { uploadConfig: String, actionUrl: String, exceptionUrl: String, - language: String, - pooled: Boolean + language: String }, data() { this.$i18n.locale = this.language; diff --git a/frontend/src/components/FileUploader.vue b/frontend/src/components/FileUploader.vue index d393372..1fdfd56 100644 --- a/frontend/src/components/FileUploader.vue +++ b/frontend/src/components/FileUploader.vue @@ -192,7 +192,7 @@ -