From 880b5e37448c3d6712828aeaeb30eac384be9258 Mon Sep 17 00:00:00 2001
From: lucile varloteaux <lucile.varloteaux@inrae.fr>
Date: Thu, 13 Feb 2025 11:08:06 +0100
Subject: [PATCH] =?UTF-8?q?=C3=A0=20tester=20mais=20voila=20l'id=C3=A9e?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/views/data/DataVersioningView.vue | 162 ++++++++++++++------------
 1 file changed, 90 insertions(+), 72 deletions(-)

diff --git a/src/views/data/DataVersioningView.vue b/src/views/data/DataVersioningView.vue
index 228101dcb..c0973d283 100644
--- a/src/views/data/DataVersioningView.vue
+++ b/src/views/data/DataVersioningView.vue
@@ -17,77 +17,83 @@
           })
         "
       />
-      <div class="columns">
-        <b-field
-          v-for="(referenceScopesByData, index) in referenceScopes[dataId]"
-          :key="index"
-          :label="referenceScopesByData.i18n[locale] || referenceScopesByData.id"
-          class="column is-3"
-        >
-          <b-dropdown
-            :ref="referenceScopesByData.id"
-            :id="referenceScopesByData.id"
-            expanded
-            max-height="500"
-            scrollable
-            width="500"
-          >
-            <template #trigger="{ active }">
-              <b-taginput
-                v-model="requiredAuthorizationsLabels[referenceScopesByData.id]"
-                :aria-placeholder="
-                  $t('dataTypesRepository.placeholder-select-scope-depot', {
-                    scope: referenceScopesByData.i18n[locale] || referenceScopesByData.id,
-                  })
-                "
-                :closable="false"
-                :icon-right="active ? 'angle-up' : 'angle-down'"
-                :placeholder="
-                  $t('dataTypesRepository.placeholder-select-scope-depot', {
-                    scope: referenceScopesByData.i18n[locale] || referenceScopesByData.id,
-                  })
-                "
-                open-on-focus
-                rounded
-                type="is-dark"
-              >
-              </b-taginput>
-            </template>
-            <CollapseMenuOneSelect
-              v-for="(option, optionKey) in referenceScopesByData.nodes"
-              :id="option.id"
-              :key="optionKey"
-              :option="option"
-              :list-select="requiredAuthorizationsLabels[referenceScopesByData.id]"
-              :id-reference-scope="referenceScopesByData.id"
-              @select-menu-item="selectAuthorization($event.type, $event)"
-            ></CollapseMenuOneSelect>
-          </b-dropdown>
-        </b-field>
-      </div>
       <div class="columns">
         <div class="column">
           <form class="card">
             <b-collapse animation="slide" aria-id="fileDeposit" class="card">
               <template #trigger="props">
-                <div aria-controls="fileDeposit" class="card-header" role="button">
+                <div aria-controls="fileDeposit" class="card-header">
                   <h2 class="card-header-title">
                     {{ $t("dataTypesRepository.card-title-upload-file") }}
                   </h2>
-                  <a class="card-header-icon">
+                  <a class="card-header-icon" tabindex="0">
                     <b-icon :icon="props.open ? 'chevron-down' : 'chevron-up'"></b-icon>
                   </a>
                 </div>
               </template>
               <div class="card-content">
                 <div class="content">
-                  <div class="columns">
+                  <div class="columns" v-if="withReferenceScopes">
+                    <div
+                      class="column"
+                      v-for="(referenceScopesByData, index) in referenceScopes[dataId]"
+                      :key="index"
+                    >
+                      <b-field
+                        class="column"
+                        :label="referenceScopesByData.i18n[locale] || referenceScopesByData.id"
+                      >
+                        <b-dropdown
+                          :ref="referenceScopesByData.id"
+                          :id="referenceScopesByData.id"
+                          expanded
+                          open-on-focus
+                          :triggers="['focus']"
+                          max-height="500"
+                          scrollable
+                          width="500"
+                        >
+                          <template #trigger="{ active }">
+                            <b-taginput
+                              v-model="requiredAuthorizationsLabels[referenceScopesByData.id]"
+                              :aria-placeholder="
+                                $t('dataTypesRepository.placeholder-select-scope-depot', {
+                                  scope:
+                                    referenceScopesByData.i18n[locale] || referenceScopesByData.id,
+                                })
+                              "
+                              :closable="false"
+                              :icon-right="active ? 'angle-up' : 'angle-down'"
+                              :placeholder="
+                                $t('dataTypesRepository.placeholder-select-scope-depot', {
+                                  scope:
+                                    referenceScopesByData.i18n[locale] || referenceScopesByData.id,
+                                })
+                              "
+                              rounded
+                              type="is-dark"
+                            >
+                            </b-taginput>
+                          </template>
+                          <CollapseMenuOneSelect
+                            v-for="(option, optionKey) in referenceScopesByData.nodes"
+                            :id="option.id"
+                            :key="optionKey"
+                            :option="option"
+                            :list-select="requiredAuthorizationsLabels[referenceScopesByData.id]"
+                            :id-reference-scope="referenceScopesByData.id"
+                            @select-menu-item="selectAuthorization($event.type, $event)"
+                          ></CollapseMenuOneSelect>
+                        </b-dropdown>
+                      </b-field>
+                    </div>
+                  </div>
+                  <div class="columns" v-if="withTimeScope">
                     <div class="column">
                       <b-field
                         :label="$t('dataTypesRepository.start-date')"
                         class="column"
                         data-cy="dateStart"
-                        label-position="on-border"
                       >
                         <InputDate
                           :format="patternDateTimeScope"
@@ -105,7 +111,6 @@
                         :label="$t('dataTypesRepository.end-date')"
                         class="column"
                         data-cy="dateEnd"
-                        label-position="on-border"
                       >
                         <InputDate
                           :format="patternDateTimeScope"
@@ -118,18 +123,20 @@
                         </InputDate>
                       </b-field>
                     </div>
+                  </div>
+                  <div class="columns">
                     <div class="column" style="display: flex; align-items: center">
                       <b-upload
                         v-model="file"
-                        class="file-label"
+                        class="column file-label"
                         data-cy="changeFileButton"
                         @input="changeFile"
                       >
                         <span class="file-cta">
                           <b-icon class="file-icon" icon="upload"></b-icon>
                           <span class="file-label">{{
-                            $t("dataTypesRepository.choose-file")
-                          }}</span>
+                              $t("dataTypesRepository.choose-file")
+                            }}</span>
                         </span>
                         <span v-if="file" class="file-name">
                           {{ file.name }}
@@ -138,12 +145,7 @@
                     </div>
                   </div>
                   <div class="columns">
-                    <b-field
-                      :label="$t('dataTypesRepository.comment')"
-                      class="column"
-                      expanded
-                      label-position="on-border"
-                    >
+                    <b-field :label="$t('dataTypesRepository.comment')" class="column" expanded>
                       <b-input v-model="comment" maxlength="200" type="textarea"></b-input>
                     </b-field>
                   </div>
@@ -153,7 +155,7 @@
                 <div class="column is-10"></div>
                 <div class="column is-2" style="float: right">
                   <b-button expanded style="float: right" type="is-dark" @click="upload"
-                    >{{ $t("dataTypesRepository.submit") }}
+                  >{{ $t("dataTypesRepository.submit") }}
                   </b-button>
                 </div>
               </footer>
@@ -391,6 +393,8 @@ export default {
     const { shallowRefArray: errorsMessages, doChangeArray: changeErrorsMessages } = useArray();
     const { reactiveObject: selected, doChangeObject: changeSelected } = useObject();
     const { refBoolean: loading } = useBoolean();
+    const { refBoolean: withTimeScope } = useBoolean();
+    const { refBoolean: withReferenceScopes } = useBoolean();
     const { refBoolean: submissionListVisible } = useBoolean();
     const {
       reactiveObject: requiredAuthorizationsObject,
@@ -532,6 +536,7 @@ export default {
           container: document.getElementById("element"),
         });
         changeVersioning(application.configuration.dataDescription[props.dataId].submission);
+        withTimeScope.value = Object.keys(versioning?.submissionScope?.timescope).length !== 0;
         componentNameTimeScope = versioning?.submissionScope?.timescope?.component;
         changeApplication({
           ...services.internationalisationService.mergeInternationalization(application),
@@ -541,6 +546,7 @@ export default {
         });
         changeConfiguration(application.configuration.dataDescription[props.dataId]);
         changeAuthorizations(configuration.submission.submissionScope);
+        withReferenceScopes.value = versioning?.submissionScope?.referenceScopes.length !== 0;
         changeReferences(application.references);
         changeSelected(
           new BinaryFileDataset({
@@ -683,20 +689,30 @@ export default {
     }
 
     async function upload() {
-      if (file.value && startDate.value && endDate.value) {
+      let localStartDate = null;
+      let localEndDate = null;
+      if (withTimeScope.value) {
+        if (startDate.value) {
+          localStartDate = /(.{10})T(.{8}).*/
+            .exec(new Date(startDate.value).toISOString())
+            .filter((a, i) => i !== 0)
+            .join(" ");
+        }
+        if (endDate.value) {
+          localEndDate = /(.{10})T(.{8}).*/
+            .exec(new Date(endDate.value).toISOString())
+            .filter((a, i) => i !== 0)
+            .join(" ");
+        }
+      }
+      if (file.value) {
         const fileOrId = new FileOrUUID(
           null,
           new BinaryFileDataset(
             props.dataId,
             selected.requiredAuthorizations,
-            /(.{10})T(.{8}).*/
-              .exec(new Date(startDate.value).toISOString())
-              .filter((a, i) => i !== 0)
-              .join(" "),
-            /(.{10})T(.{8}).*/
-              .exec(new Date(endDate.value).toISOString())
-              .filter((a, i) => i !== 0)
-              .join(" "),
+            localStartDate,
+            localEndDate,
             comment.value
           ),
           false
@@ -964,6 +980,8 @@ export default {
       downloadDataTypeVersion,
       selectAuthorization,
       nameSelectedTagList,
+      withTimeScope,
+      withReferenceScopes,
       determinateInputType,
       subMenuPaths,
       application,
-- 
GitLab