From dac2b1dd43229c45d8aac72c92a11a8736b3b052 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Tue, 21 Jan 2025 16:01:56 +0100 Subject: [PATCH 1/3] =?UTF-8?q?order=20liste=20submission=20et=20ajout=20b?= =?UTF-8?q?ackground=20color=20si=20select=20reste=20=C3=A0=20faire=20le?= =?UTF-8?q?=20remove=20de=20la=20class=20si=20non=20select?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/CollapseMenuOneSelect.vue | 20 +++++++++++++++++-- src/views/data/DataVersioningView.vue | 15 ++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/components/common/CollapseMenuOneSelect.vue b/src/components/common/CollapseMenuOneSelect.vue index 162129f08..095612ff2 100644 --- a/src/components/common/CollapseMenuOneSelect.vue +++ b/src/components/common/CollapseMenuOneSelect.vue @@ -2,7 +2,7 @@ <div v-if="!option.children.length" :id="option.id" - @click="select(option, option.i18n[locale] || option.naturalKey)" + @click="select(option, option.i18n[locale] || option.naturalKey, option.id)" style="padding: 5px 16px" > <a>{{ option.i18n[locale] || option.naturalKey }}</a> @@ -43,6 +43,7 @@ export default { type: Object, required: true, }, + listSelect: Array, }, emits: ["select-menu-item"], setup(props, { emit }) { @@ -50,7 +51,19 @@ export default { const locale = services.internationalisationService.getLocale(); const displayText = computed(() => props.option.i18n[locale] || props.option.naturalKey); - function select(option, localName) { + function select(option, localName, localID) { + if (props.listSelect && props.listSelect.length !== 0) { + if ( + props.option.i18n[locale] === props.listSelect[0] || + props.option.naturalKey === props.listSelect[0] + ) { + console.log(props.listSelect, document.getElementById(props.option.id)); + } + } + const element = document.getElementById(localID); + if (element) { + element.classList.add('colorSelected'); + } option.localName = option.localName || localName; emit("select-menu-item", option || { ...this.option, localName }); } @@ -68,6 +81,9 @@ export default { a { color: black; } +.colorSelected { + background-color: rgba(0, 100, 100, 0.4); +} .card { box-shadow: none; diff --git a/src/views/data/DataVersioningView.vue b/src/views/data/DataVersioningView.vue index 72242e60f..34d0137f9 100644 --- a/src/views/data/DataVersioningView.vue +++ b/src/views/data/DataVersioningView.vue @@ -26,6 +26,7 @@ > <b-dropdown :ref="referenceScopesByData.id" + :id="referenceScopesByData.id" expanded max-height="500" scrollable @@ -57,6 +58,7 @@ :id="option.id" :key="optionKey" :option="option" + :list-select="requiredAuthorizationsLabels[referenceScopesByData.id]" @select-menu-item="selectAuthorization($event.type, $event)" ></CollapseMenuOneSelect> </b-dropdown> @@ -574,6 +576,7 @@ export default { refForAuth[reference] = ref; changeReferenceScopes(refForAuth[reference].referenceScopes); } + sortedReferenceScope(referenceScopes); } } } @@ -601,6 +604,18 @@ export default { } } + function sortedReferenceScope(referenceScope) { + for (let i = 0; i < referenceScope[props.dataId].length; i++) { + if (Object.keys(referenceScope[props.dataId][i].nodes).length !== 0) { + referenceScope[props.dataId][i].nodes = Object.fromEntries( + Object.entries(referenceScope[props.dataId][i].nodes) + .sort(([, a], [, b]) => a.naturalKey.localeCompare(b.naturalKey)) + .map(([key, value], index) => [index, value, key]) + ); + } + } + } + function nameSelectedTagList(nameTagList) { return i18n.t("dataTypesManagement.selected_filter", { key: nameTagList }); } -- GitLab From b292a90c5312fb4af3894333c5ef8e8e4922dc40 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Wed, 22 Jan 2025 16:44:34 +0100 Subject: [PATCH 2/3] ajout function de modification de class en js --- .../common/CollapseMenuOneSelect.vue | 25 +++++++++---------- src/views/data/DataVersioningView.vue | 12 +++++++++ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/components/common/CollapseMenuOneSelect.vue b/src/components/common/CollapseMenuOneSelect.vue index 095612ff2..caf78dcd1 100644 --- a/src/components/common/CollapseMenuOneSelect.vue +++ b/src/components/common/CollapseMenuOneSelect.vue @@ -2,8 +2,8 @@ <div v-if="!option.children.length" :id="option.id" - @click="select(option, option.i18n[locale] || option.naturalKey, option.id)" style="padding: 5px 16px" + @click="select(option, option.i18n[locale] || option.naturalKey, option.id)" > <a>{{ option.i18n[locale] || option.naturalKey }}</a> </div> @@ -25,6 +25,9 @@ :key="child.id" :option="child" @select-menu-item="select" + @change-style-if-selected=" + select(child, child.i18n[locale] || child.naturalKey, child.id) + " > </CollapseMenuOneSelect> </div> @@ -45,35 +48,30 @@ export default { }, listSelect: Array, }, - emits: ["select-menu-item"], + emits: ["select-menu-item", "change-style-if-selected"], setup(props, { emit }) { const isOpen = ref(false); const locale = services.internationalisationService.getLocale(); const displayText = computed(() => props.option.i18n[locale] || props.option.naturalKey); function select(option, localName, localID) { - if (props.listSelect && props.listSelect.length !== 0) { - if ( - props.option.i18n[locale] === props.listSelect[0] || - props.option.naturalKey === props.listSelect[0] - ) { - console.log(props.listSelect, document.getElementById(props.option.id)); - } - } const element = document.getElementById(localID); if (element) { - element.classList.add('colorSelected'); + console.log(localID); + emit("change-style-if-selected", localID); + element.classList.add("colorSelected"); } option.localName = option.localName || localName; emit("select-menu-item", option || { ...this.option, localName }); } + return { select, isOpen, locale, - displayText, + displayText }; - }, + } }; </script> @@ -81,6 +79,7 @@ export default { a { color: black; } + .colorSelected { background-color: rgba(0, 100, 100, 0.4); } diff --git a/src/views/data/DataVersioningView.vue b/src/views/data/DataVersioningView.vue index 34d0137f9..626504b9a 100644 --- a/src/views/data/DataVersioningView.vue +++ b/src/views/data/DataVersioningView.vue @@ -60,6 +60,7 @@ :option="option" :list-select="requiredAuthorizationsLabels[referenceScopesByData.id]" @select-menu-item="selectAuthorization($event.type, $event)" + @change-style-if-selected="changeStyleIfSelected($event, referenceScopesByData.id)" ></CollapseMenuOneSelect> </b-dropdown> </b-field> @@ -790,6 +791,16 @@ export default { } } + function changeStyleIfSelected(event, referenceScopesByDataId) { + console.log("selected", event, referenceScopesByDataId); + const regex = new RegExp("(.*)" + referenceScopesByDataId + "K(.*)"); + Array.from(document.querySelectorAll("div.colorSelected")) + .filter(el => el.id && regex.test(el.id) && !el.id.includes(event)) + .forEach((element) => { + element.classList.remove("colorSelected"); + }); + } + function isReferenceScopesSelected() { if (selected && selected.requiredAuthorizations) { submissionListVisible.value = @@ -982,6 +993,7 @@ export default { comment, currentDataset, internationalizeRequiredAuthorization, + changeStyleIfSelected, submissionListVisible, }; }, -- GitLab From e49b1e02b357ff7ff449ef89fb2daf158524b569 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Thu, 23 Jan 2025 15:02:08 +0100 Subject: [PATCH 3/3] fonction JS pour rendre dynamique de changement du background du select dans de dropDown de submission --- .../common/CollapseMenuOneSelect.vue | 29 ++++++++++++------- src/views/data/DataVersioningView.vue | 13 +-------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/components/common/CollapseMenuOneSelect.vue b/src/components/common/CollapseMenuOneSelect.vue index caf78dcd1..246bca343 100644 --- a/src/components/common/CollapseMenuOneSelect.vue +++ b/src/components/common/CollapseMenuOneSelect.vue @@ -24,10 +24,8 @@ v-for="child in option.children" :key="child.id" :option="child" + :id-reference-scope="idReferenceScope" @select-menu-item="select" - @change-style-if-selected=" - select(child, child.i18n[locale] || child.naturalKey, child.id) - " > </CollapseMenuOneSelect> </div> @@ -47,6 +45,7 @@ export default { required: true, }, listSelect: Array, + idReferenceScope: String, }, emits: ["select-menu-item", "change-style-if-selected"], setup(props, { emit }) { @@ -54,13 +53,21 @@ export default { const locale = services.internationalisationService.getLocale(); const displayText = computed(() => props.option.i18n[locale] || props.option.naturalKey); - function select(option, localName, localID) { - const element = document.getElementById(localID); - if (element) { - console.log(localID); - emit("change-style-if-selected", localID); - element.classList.add("colorSelected"); + function changeStyleIfSelected(localID) { + const localElement = document.getElementById(localID); + if (localElement) { + console.log("selected", localID, props.idReferenceScope); + Array.from(document.querySelectorAll("div.colorSelected")) + .filter(el => el.id && el.id.includes(props.idReferenceScope + "K") && !el.id.includes(localID)) + .forEach((element) => { + element.classList.remove("colorSelected"); + }); + localElement.classList.add("colorSelected"); } + } + + function select(option, localName, localID) { + changeStyleIfSelected(localID); option.localName = option.localName || localName; emit("select-menu-item", option || { ...this.option, localName }); } @@ -69,9 +76,9 @@ export default { select, isOpen, locale, - displayText + displayText, }; - } + }, }; </script> diff --git a/src/views/data/DataVersioningView.vue b/src/views/data/DataVersioningView.vue index 626504b9a..afc7e53c2 100644 --- a/src/views/data/DataVersioningView.vue +++ b/src/views/data/DataVersioningView.vue @@ -59,8 +59,8 @@ :key="optionKey" :option="option" :list-select="requiredAuthorizationsLabels[referenceScopesByData.id]" + :id-reference-scope="referenceScopesByData.id" @select-menu-item="selectAuthorization($event.type, $event)" - @change-style-if-selected="changeStyleIfSelected($event, referenceScopesByData.id)" ></CollapseMenuOneSelect> </b-dropdown> </b-field> @@ -791,16 +791,6 @@ export default { } } - function changeStyleIfSelected(event, referenceScopesByDataId) { - console.log("selected", event, referenceScopesByDataId); - const regex = new RegExp("(.*)" + referenceScopesByDataId + "K(.*)"); - Array.from(document.querySelectorAll("div.colorSelected")) - .filter(el => el.id && regex.test(el.id) && !el.id.includes(event)) - .forEach((element) => { - element.classList.remove("colorSelected"); - }); - } - function isReferenceScopesSelected() { if (selected && selected.requiredAuthorizations) { submissionListVisible.value = @@ -993,7 +983,6 @@ export default { comment, currentDataset, internationalizeRequiredAuthorization, - changeStyleIfSelected, submissionListVisible, }; }, -- GitLab