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