diff --git a/ui/src/components/application/ApplicationCard.vue b/ui/src/components/application/ApplicationCard.vue index 35e62082b1701e82c976b7ab51d530dd8033b3b6..2eea00c9c98941ed7d64ec58fea1adcb7c4cc529 100644 --- a/ui/src/components/application/ApplicationCard.vue +++ b/ui/src/components/application/ApplicationCard.vue @@ -62,10 +62,10 @@ export default { }; </script> <template> - <div style="margin-left: 30px"> + <div style="margin-left: 30px" + v-if="index >= (current - 1) * perPage && index < current * perPage"> <div class="column is-3-widescreen is-6-desktop is-12-tablet"> <div - v-if="index >= (current - 1) * perPage && index < current * perPage" class="applicationCard card" style="padding-bottom: 10px" > diff --git a/ui/src/components/common/provider/OreInputText.vue b/ui/src/components/common/provider/OreInputText.vue index b198185c13da3568063ce1baeae2f613f4ab30b0..a1e878cdc5089f7eba65c0b0bbc9a45eef48b5b0 100644 --- a/ui/src/components/common/provider/OreInputText.vue +++ b/ui/src/components/common/provider/OreInputText.vue @@ -91,14 +91,14 @@ export default { if (typeof value == "string") { return this.regexp(value); } else { - return value.map((v) => this.regexp(v)).filter((v) => v == false).length == 0; + return value.map((v) => this.regexp(v)).filter((v) => v === false).length === 0; } }, validateRequired(value) { if (typeof value == "string") { return !!value; } else { - return value.length > 0; + return value?.length > 0; } }, }, @@ -110,7 +110,7 @@ export default { }, multiplicity: { get() { - return this.checker && this.checker.params && this.checker.params.multiplicity == "MANY"; + return this.checker && this.checker.params && this.checker.params.multiplicity === "MANY"; }, }, rules: { @@ -118,7 +118,7 @@ export default { let rules = []; if (this.checker) { if ( - this.checker.name == "BooleanType" && + this.checker.name === "BooleanType" && this.checker.param && this.checker.params.expression ) { diff --git a/ui/src/style/_common.scss b/ui/src/style/_common.scss index f9a6a2d31626a4165e368860fe2e44f8e26743cc..db033d6c2bf7ed8d6a9ed46f02dee41d6f574fb7 100644 --- a/ui/src/style/_common.scss +++ b/ui/src/style/_common.scss @@ -40,6 +40,9 @@ h2 { a { color: $info; } +.columns { + margin: 0; +} // affichage icon uniformisé .control.has-icons-right .input.is-small ~ .icon, diff --git a/ui/src/views/application/ApplicationsView.vue b/ui/src/views/application/ApplicationsView.vue index 775f5db8182bb9260bf99e2794d049e9f59a5492..89475dec38e0fa6e47e46cdbc79e48e9bcf5cec9 100644 --- a/ui/src/views/application/ApplicationsView.vue +++ b/ui/src/views/application/ApplicationsView.vue @@ -7,11 +7,11 @@ <section> <div v-if="canCreateApplication" class="card is-clickable"> <div - class="card-header createApplication" - role="button" - style="margin-bottom: 50px" - tabindex="0" - @click="createApplication" + class="card-header createApplication" + role="button" + style="margin-bottom: 50px" + tabindex="0" + @click="createApplication" > <a class="card-header-icon createApplication"> <b-icon icon="plus"></b-icon> @@ -31,31 +31,31 @@ <div class="content"> <b-field class="columns"> <b-checkbox - v-model="checkboxDate" - class="column" - false-value="false" - field="name" - true-value="true" - @input="alphabeticalSort = ''" - >{{ $t("applications.trierRecent") }} + v-model="checkboxDate" + class="column" + false-value="false" + field="name" + true-value="true" + @input="alphabeticalSort = ''" + >{{ $t("applications.trierRecent") }} </b-checkbox> </b-field> </div> <div class="content"> <b-field class="columns"> <b-radio - v-model="alphabeticalSort" - name="alphabeticalSort" - native-value="Az" - @input="checkboxDate = false" + v-model="alphabeticalSort" + name="alphabeticalSort" + native-value="Az" + @input="checkboxDate = false" > {{ $t("applications.trierA_z") }} </b-radio> <b-radio - v-model="alphabeticalSort" - name="alphabeticalSort" - native-value="Za" - @input="checkboxDate = false" + v-model="alphabeticalSort" + name="alphabeticalSort" + native-value="Za" + @input="checkboxDate = false" > {{ $t("applications.trierZ_a") }} </b-radio> @@ -72,10 +72,10 @@ <b-field> {{ $t("applications.name") }} <b-autocomplete - v-model="filterName" - :data="selectedApplications" - field="localName" - placeholder="olac" + v-model="filterName" + :data="selectedApplications" + field="localName" + placeholder="olac" > </b-autocomplete> </b-field> @@ -86,41 +86,38 @@ </div> <div class="column is-9-widescreen is-12-desktop"> <LoadingAnimate v-if="loading" :size="'is-large'"></LoadingAnimate> - <div - v-if="progress > 0 && progress < 1" - class="column is-9-widescreen is-12-tablet" - style="background-color: rgba(0, 127, 127, 0.2)" - > - <div - class="card-header" - :style="'background-color: #007F7F; height: 1.5em; width:' + progress * 100 + '%'" - ></div> - </div> + <b-progress + v-if="progress > 0 && progress < 1" + type="is-primary" + :value="progress * 100" + show-value + size="is-medium" + > {{ progress * 100 }}%</b-progress> <div class="columns"> <ApplicationCard - v-for="(application, index) in selectedApplications" - :key="application.name" - :current="current" - :application="application" - :index="index" - :per-page="perPage" + v-for="(application, index) in selectedApplications" + :key="application.name" + :application="application" + :current="current" + :index="index" + :per-page="perPage" /> </div> - <hr /> + <hr/> <b-pagination - v-if="perPage <= applications.length" - :aria-current-label="$t('menu.aria-curent-page')" - :aria-label="$t('menu.aria-pagination')" - :aria-next-label="$t('menu.aria-next-page')" - :aria-previous-label="$t('menu.aria-previous-page')" - :current.sync="current" - :per-page="perPage" - :range-after="2" - :range-before="2" - :rounded="true" - :total="applications.length" - order="is-centered" - role="navigation" + v-if="perPage <= applications.length" + :aria-current-label="$t('menu.aria-curent-page')" + :aria-label="$t('menu.aria-pagination')" + :aria-next-label="$t('menu.aria-next-page')" + :aria-previous-label="$t('menu.aria-previous-page')" + :current.sync="current" + :per-page="perPage" + :range-after="2" + :range-before="2" + :rounded="true" + :total="applications.length" + order="is-centered" + role="navigation" > </b-pagination> </div> @@ -134,30 +131,30 @@ import LoadingAnimate from "@/components/common/LoadingAnimate.vue"; import services from "@/composable/services"; import useBoolean from "@/composable/components/boolean"; import useText from "@/composable/components/text"; -import { computed, onMounted, inject } from "vue"; -import { useRedirections } from "@/composable/applications/useFunction"; +import {computed, onMounted, inject} from "vue"; +import {useRedirections} from "@/composable/applications/useFunction"; import ApplicationCard from "@/components/application/ApplicationCard.vue"; import useNumber from "@/composable/components/number"; export default { name: "ApplicationsView", - components: { ApplicationCard, LoadingAnimate, PageView }, + components: {ApplicationCard, LoadingAnimate, PageView}, setup() { - const { createApplication, updateApplication, displayAdditionalFilesManagement } = - useRedirections(); + const {createApplication, updateApplication, displayAdditionalFilesManagement} = + useRedirections(); const applications = inject("application:applications"); const progress = inject("application:progress"); const loadApplications = inject("application:loadApplications"); const checkboxDate = useBoolean().refBoolean; const canCreateApplication = - services.loginService.getAuthenticatedUser().authorizedForApplicationCreation; + services.loginService.getAuthenticatedUser().authorizedForApplicationCreation; const loading = computed(() => progress.value < 1); const isCardModalActive = useBoolean().refBoolean; // show modal and cards const selectedName = useText().refText; // pagination variable - const { refNumber : current} = useNumber(1); - const perPage = 6; + const {refNumber: current} = useNumber(1); + const perPage = 9; // filtre variable const filterName = useText().refText; const selected = useBoolean().refBoolean; @@ -167,7 +164,7 @@ export default { let sa = applications && applications.value; if (filterName.value.length > 2) sa = sa.filter( - (a) => a.localName.toString().toLowerCase().indexOf(filterName.value.toLowerCase()) >= 0 + (a) => a.localName.toString().toLowerCase().indexOf(filterName.value.toLowerCase()) >= 0 ); if (checkboxDate.value === "true") sa = sa.sort((a, b) => b.creationDate - a.creationDate); else sa = sa.sort((a, b) => b.creationDate - a.creationDate).reverse(); diff --git a/ui/src/views/common/PageView.vue b/ui/src/views/common/PageView.vue index d3865ab7e50664bcf75f0df46aaebe38ad6f35dc..97218b7e828e6a693d6674e926e8cc5ae49f9a52 100644 --- a/ui/src/views/common/PageView.vue +++ b/ui/src/views/common/PageView.vue @@ -1,7 +1,7 @@ <template> <div class="PageView" role="main"> <MenuView v-if="hasMenu" /> - <div :class="`PageView-container ${hasMenu ? '' : 'noMenu'}`"> + <div :class="`column PageView-container ${hasMenu ? '' : 'noMenu'}`"> <slot></slot> </div> </div> diff --git a/ui/src/views/datatype/DataTypeTableView.vue b/ui/src/views/datatype/DataTypeTableView.vue index 872eca1658eb38c3e8ccc61e0992a01b3d2b7e22..f685f659c9799d81f373b8d969d0e049bb51db14 100644 --- a/ui/src/views/datatype/DataTypeTableView.vue +++ b/ui/src/views/datatype/DataTypeTableView.vue @@ -1,38 +1,38 @@ <template> <PageView class="with-submenu"> <SubMenu - :aria-label="$t('menu.aria-sub-menu')" - :paths="subMenuPaths" - :root="application.localName || application.title" - role="navigation" + :aria-label="$t('menu.aria-sub-menu')" + :paths="subMenuPaths" + :root="application.localName || application.title" + role="navigation" /> <h1 class="title main-title">{{ application.localDatatypeName || dataTypeId }}</h1> <div id="tagsCollapse" class="column"> <TagsCollapse - v-if="tagsColumn && Object.keys(tagsColumn).length > 1" - :tags="tagsColumn" - @change:tag="newTableWithFilterTags($event)" + v-if="tagsColumn && Object.keys(tagsColumn).length > 1" + :tags="tagsColumn" + @change:tag="newTableWithFilterTags($event)" /> </div> <div v-if="!showSort && !showFilter" class="columns"> <div - v-if=" + v-if=" params.variableComponentOrderBy.length !== 0 || params.variableComponentFilters.length !== 0 || params.authorizationDescriptions.length !== 0 " - class="column is-5-desktop is-12-tablet" + class="column is-5-desktop is-12-tablet" > {{ $t("dataTypesManagement.sorted") }} {{ $t("ponctuation.colon") }} <b-field group-multiline grouped> <b-taglist> <div v-for="(variableComponent, index) in params.variableComponentOrderBy" :key="index"> <b-tag - rounded - size="is-medium" - style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" - type="is-dark" + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + type="is-dark" > {{ variableComponent.variableComponentKey.variable }} {{ $t("ponctuation.colon") }} @@ -45,32 +45,32 @@ </b-field> </div> <div - v-if=" + v-if=" params.variableComponentOrderBy.length !== 0 || params.variableComponentFilters.length !== 0 || params.authorizationDescriptions.length !== 0 " - class="column is-5-desktop is-12-tablet" + class="column is-5-desktop is-12-tablet" > {{ $t("dataTypesManagement.filtered") }} {{ $t("ponctuation.colon") }} <b-field group-multiline grouped> <b-taglist v-if="params.authorizationDescriptions.length !== 0"> <div - v-for="(variableComponent, index) in params.authorizationDescriptions" - :key="index" + v-for="(variableComponent, index) in params.authorizationDescriptions" + :key="index" > - {{ $t("dataTypesManagement.interval-date", variableComponent.timeScope) }} - <br /> + {{ $t("dataTypesManagement.interval-date", dateLang(variableComponent.timeScope)) }} + <br/> <span - v-for="(requiredAuthorizations, ind) in variableComponent.requiredAuthorizations" - :key="requiredAuthorizations + ind" + v-for="(requiredAuthorizations, ind) in variableComponent.requiredAuthorizations" + :key="requiredAuthorizations + ind" > <b-tag - v-for="key in Object.keys(requiredAuthorizations)" - :key="key + '_' + ind" - rounded - size="is-medium" - style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + v-for="key in Object.keys(requiredAuthorizations)" + :key="key + '_' + ind" + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" > {{ key }} {{ $t("ponctuation.arrow-right") }} @@ -82,9 +82,10 @@ <b-taglist v-if="params.variableComponentFilters.length !== 0"> <div v-for="(variableComponent, index) in params.variableComponentFilters" :key="index"> <b-tag - rounded - size="is-medium" - style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + v-if="variableComponent.filter !==null" + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" > {{ variableComponent.variableComponentKey.variable }} {{ $t("ponctuation.colon") }} @@ -92,6 +93,21 @@ {{ $t("ponctuation.arrow-right") }} {{ variableComponent.filter }} </b-tag> + <b-tag + v-else + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + > + {{ variableComponent.variableComponentKey.variable }} + {{ $t("ponctuation.colon") }} + {{ variableComponent.variableComponentKey.component }} + {{ $t("ponctuation.arrow-right") }} + {{ $t("dataTypeAuthorizations.from") }} + {{ variableComponent.intervalValues.from }} + {{ $t("dataTypeAuthorizations.to") }} + {{ variableComponent.intervalValues.to }} + </b-tag> </div> </b-taglist> </b-field> @@ -100,37 +116,37 @@ <div class="columns"> <div class="column is-5-desktop is-4-tablet"> <b-button - :disabled="isLoading" - :label="$t('applications.trier')" - icon-left="sort-amount-down" - outlined - type="is-dark" - @click="showSort = !showSort" + :disabled="isLoading" + :label="$t('applications.trier')" + icon-left="sort-amount-down" + outlined + type="is-dark" + @click="showSort = !showSort" ></b-button> </div> <div class="column is-5-desktop is-4-tablet"> <b-button - v-if="Object.keys(authReferences).length !== 0" - :disabled="isLoading" - :label="$t('applications.filter')" - icon-left="filter" - inverted - outlined - type="is-light" - @click=" + v-if="Object.keys(authReferences).length !== 0" + :disabled="isLoading" + :label="$t('applications.filter')" + icon-left="filter" + inverted + outlined + type="is-light" + @click=" showFilter = !showFilter; showAdvancedSearch = false; " ></b-button> <b-tooltip :label="$t('applications.advancedFilter')" position="is-right"> <b-button - :disabled="isLoading" - :icon-left="Object.keys(authReferences).length !== 0 ? 'bars' : 'filter'" - :label="Object.keys(authReferences).length !== 0 ? '' : $t('applications.filter')" - inverted - outlined - type="is-light" - @click=" + :disabled="isLoading" + :icon-left="Object.keys(authReferences).length !== 0 ? 'bars' : 'filter'" + :label="Object.keys(authReferences).length !== 0 ? '' : $t('applications.filter')" + inverted + outlined + type="is-light" + @click=" showFilter = false; showAdvancedSearch = !showAdvancedSearch; " @@ -139,43 +155,43 @@ </div> <div class="column is-2-desktop is-4-tablet"> <b-button icon-left="redo" outlined type="is-danger" @click="reInit" - >{{ $t("dataTypesManagement.réinitialiser") }} + >{{ $t("dataTypesManagement.réinitialiser") }} {{ $t("dataTypesManagement.all") }} </b-button> </div> </div> <div - v-if="showSort" - class="notification" - role="search" - style="background-color: rgba(0, 163, 166, 0.1)" + v-if="showSort" + class="notification" + role="search" + style="background-color: rgba(0, 163, 166, 0.1)" > <h2>{{ $t("applications.trier") }}</h2> <div class="content"> <div class="columns is-multiline"> <div class="column is-9-widescreen is-12-desktop"> <b-tabs - v-model="activeTab" - :multiline="true" - position="is-centered" - style="text-transform: capitalize; text-decoration: none" - type="is-boxed" + v-model="activeTab" + :multiline="true" + position="is-centered" + style="text-transform: capitalize; text-decoration: none" + type="is-boxed" > <template v-for="variable in variables" class="row variableComponent"> <b-tab-item - :key="variable.id" - :label="variable.id" - style="text-transform: capitalize" + :key="variable.id" + :label="variable.id" + style="text-transform: capitalize" > <div - v-for="(variableComponent, index) in variableComponentsListToSort" - :key="index" - :class="variableComponent.order" - class="row variableComponent" + v-for="(variableComponent, index) in variableComponentsListToSort" + :key="index" + :class="variableComponent.order" + class="row variableComponent" > <div - v-if="variableComponent.variableComponentKey.variable === variable.id" - class="columns" + v-if="variableComponent.variableComponentKey.variable === variable.id" + class="columns" > <div class="column orderLabel"> {{ variableComponent.variableComponentKey.variable }} @@ -184,20 +200,20 @@ </div> <div> <b-button - class="column asc" - style="margin: 10px; border-color: #dbdbdb" - type="is-white" - @click="addVariableComponentToSortedList(variableComponent, 'ASC')" + class="column asc" + style="margin: 10px; border-color: #dbdbdb" + type="is-white" + @click="addVariableComponentToSortedList(variableComponent, 'ASC')" > {{ $t("dataTypesManagement.ASC") }} </b-button> </div> <div style="margin-right: 10px"> <b-button - class="column desc" - style="margin: 10px; border-color: #dbdbdb" - type="is-white" - @click="addVariableComponentToSortedList(variableComponent, 'DESC')" + class="column desc" + style="margin: 10px; border-color: #dbdbdb" + type="is-white" + @click="addVariableComponentToSortedList(variableComponent, 'DESC')" > {{ $t("dataTypesManagement.DESC") }} </b-button> @@ -211,18 +227,18 @@ <div class="column is-3-widescreen is-12-desktop"> <draggable class="rows"> <div - v-for="(variableComponent, index) in params.variableComponentOrderBy" - :key="index" - :class="variableComponent.order" - class="row" + v-for="(variableComponent, index) in params.variableComponentOrderBy" + :key="index" + :class="variableComponent.order" + class="row" > <div - :id=" + :id=" variableComponent.variableComponentKey.variable + variableComponent.variableComponentKey.component " - class="control column" - style="padding: 6px" + class="control column" + style="padding: 6px" > <div class="tags has-addons"> <span class="tag is-dark grape" style="font-size: 1rem"> @@ -236,9 +252,9 @@ {{ variableComponent.order }} </span> <a - class="tag is-delete is-dark" - style="font-size: 1rem; color: white" - @click=" + class="tag is-delete is-dark" + style="font-size: 1rem; color: white" + @click=" deleteTag( variableComponent.variableComponentKey.variable, variableComponent.variableComponentKey.component @@ -253,13 +269,13 @@ <div class="columns"> <div class="column"> <b-button expanded icon-left="redo" outlined type="is-danger" @click="clearOrder" - >{{ $t("dataTypesManagement.réinitialiser") }} + >{{ $t("dataTypesManagement.réinitialiser") }} {{ $t("dataTypesManagement.tri") }} </b-button> </div> <div class="column"> <b-button expanded icon-left="check" outlined type="is-dark" @click="initDatatype" - >{{ $t("dataTypesManagement.validate") }} + >{{ $t("dataTypesManagement.validate") }} {{ $t("dataTypesManagement.tri") }} </b-button> </div> @@ -272,45 +288,45 @@ <div v-if="showFilter" class="notification" role="search"> <h2>{{ $t("applications.filter") }}</h2> <div - v-if="authorizationScopesMenus !== null" - class="notification is-flex is-flex-direction-column is-fullwidth" + v-if="authorizationScopesMenus !== null" + class="notification is-flex is-flex-direction-column is-fullwidth" > <AuthorizationScopesMenu - v-for="n in authorizationScopesMenusCount" - :key="n" - v-model="authorizationDescriptions[n - 1]" - :application="application" - :authReferences="authReferences" - :index="n" - class="tile is-3 is-fullwidth" - style="width: 100%" - @update-date="updateDate(n - 1, $event.value, $event.type)" - @update-search="authFilter[$event.index - 1] = $event.selecteds" + v-for="n in authorizationScopesMenusCount" + :key="n" + v-model="authorizationDescriptions[n - 1]" + :application="application" + :authReferences="authReferences" + :index="n" + class="tile is-3 is-fullwidth" + style="width: 100%" + @update-date="updateDate(n - 1, $event.value, $event.type)" + @update-search="authFilter[$event.index - 1] = $event.selecteds" /> <b-button - v-if="visible" - :label="$t('dataTypesManagement.add_filter')" - class="is-primary" - icon-left="plus" - size="small" - @click="addAuthorizationMenus" + v-if="visible" + :label="$t('dataTypesManagement.add_filter')" + class="is-primary" + icon-left="plus" + size="small" + @click="addAuthorizationMenus" /> <b-button - v-if="authorizationScopesMenusCount > 1" - :label="$t('dataTypesManagement.remove_filter')" - class="is-warning" - icon-left="minus" - size="small" - @click="removeAuthorizationMenus" + v-if="authorizationScopesMenusCount > 1" + :label="$t('dataTypesManagement.remove_filter')" + class="is-warning" + icon-left="minus" + size="small" + @click="removeAuthorizationMenus" /> </div> <div class="columns"> <div - class="column is-offset-10-widescreen is-offset-9-desktop is-2-widescreen is-3-desktop" + class="column is-offset-10-widescreen is-offset-9-desktop is-2-widescreen is-3-desktop" > <p class="control"> <b-button expanded icon-left="check" outlined type="is-dark" @click="addSearch" - >{{ $t("dataTypesManagement.validate") }} + >{{ $t("dataTypesManagement.validate") }} {{ $t("dataTypesManagement.filtre") }} </b-button> </p> @@ -321,16 +337,16 @@ <h2 class="columns">{{ $t("applications.advancedFilter") }}</h2> <div class="columns is-multiline"> <div - v-for="(variable, index) in variables" - :key="variable.id" - :variable="variable.id" - class="column is-2-widescreen is-6-desktop is-12-tablet" + v-for="(variable, index) in variables" + :key="variable.id" + :variable="variable.id" + class="column is-2-widescreen is-6-desktop is-12-tablet" > <b-collapse - :open="isOpen === index" - animation="slide" - class="card" - @open="isOpen = index" + :open="isOpen === index" + animation="slide" + class="card" + @open="isOpen = index" > <template #trigger="props"> <div class="card-header" role="button"> @@ -344,62 +360,61 @@ </template> <div class="card-content" style="padding-bottom: 12px; padding-top: 12px"> <div - v-for="(component, index) in variableComponents" - :key="`${index}`" - :component="component.component" - :variable="component.variable" - class="content" - style="margin-bottom: 10px" + v-for="(component, index) in variableComponents" + :key="`${index}`" + :component="component.component" + :variable="component.variable" + class="content" + style="margin-bottom: 10px" > <b-field v-if="variable.id === component.variable" :label="component.component"> <b-field v-if="'date' === component.type || 'numeric' === component.type"> <CollapsibleInterval - :variable-component="component" - @setting_interval="addVariableSearchs" + :variable-component="component" + @setting_interval="addVariableSearchs" ></CollapsibleInterval> <b-input - v-model="search[component.variable + '_' + component.component]" - :placeholder="$t('dataTypeAuthorizations.search')" - autocomplete="off" - class="is-primary" - icon="search" - type="search" - @blur="addVariableSearchs(component)" + v-model="search[component.variable + '_' + component.component]" + :placeholder="$t('dataTypeAuthorizations.search')" + autocomplete="off" + class="is-primary" + icon="search" + type="search" + @blur="addVariableSearchs(component)" ></b-input> </b-field> <b-field - v-else-if="'reference' === component.type" - @click.native="recalculate(component)" + v-else-if="'reference' === component.type" + @click.native="recalculate(component)" > <b-autocomplete - v-model="search[component.variable + '_' + component.component]" - :data="searchValueReference" - :placeholder="$t('dataTypeAuthorizations.search')" - class="is-primary" - icon="search" - open-on-focus - type="search" - @blur="addVariableSearchs(component)" - @select=" + v-model="search[component.variable + '_' + component.component]" + :data="searchValueReference" + :placeholder="$t('dataTypeAuthorizations.search')" + class="is-primary" + icon="search" + open-on-focus + type="search" + @blur="addVariableSearchs(component)" + @select=" (option) => { search[component.variable + '_' + component.component] = option; addVariableSearchs(component, option); } " - @keyup.native="recalculate(component)" + @keyup.native="recalculate(component)" > </b-autocomplete> </b-field> <b-field v-else> <b-input - v-model="search[component.variable + '_' + component.component]" - :placeholder="$t('dataTypeAuthorizations.search')" - autocomplete="off" - class="is-primary" - icon="search" - type="search" - @click.native="addVariableSearchs(component)" - @keyup.native="addVariableSearchs(component)" + v-model="search[component.variable + '_' + component.component]" + :placeholder="$t('dataTypeAuthorizations.search')" + autocomplete="off" + class="is-primary" + icon="search" + type="search" + @blur="addVariableSearchs(component)" ></b-input> </b-field> </b-field> @@ -410,11 +425,11 @@ </div> <b-field> <b-switch - v-model="params.variableComponentFilters.isRegex" - :false-value="$t('dataTypesManagement.refuse')" - :true-value="$t('dataTypesManagement.accepted')" - passive-type="is-dark" - type="is-primary" + v-model="params.variableComponentFilters.isRegex" + :false-value="$t('dataTypesManagement.refuse')" + :true-value="$t('dataTypesManagement.accepted')" + passive-type="is-dark" + type="is-primary" > {{ $t("ponctuation.regEx") }} {{ params.variableComponentFilters.isRegex }} </b-switch> @@ -425,13 +440,14 @@ <b-field group-multiline grouped> <b-taglist> <div - v-for="(variableComponent, index) in params.variableComponentFilters" - :key="index" + v-for="(variableComponent, index) in params.variableComponentFilters" + :key="index" > <b-tag - rounded - size="is-medium" - style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + v-if="variableComponent.filter !==null" + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" > {{ variableComponent.variableComponentKey.variable }} {{ $t("ponctuation.colon") }} @@ -439,20 +455,35 @@ {{ $t("ponctuation.arrow-right") }} {{ variableComponent.filter }} </b-tag> + <b-tag + v-else + rounded + size="is-medium" + style="margin-left: 10px; margin-right: 10px; margin-bottom: 10px" + > + {{ variableComponent.variableComponentKey.variable }} + {{ $t("ponctuation.colon") }} + {{ variableComponent.variableComponentKey.component }} + {{ $t("ponctuation.arrow-right") }} + {{ $t("dataTypeAuthorizations.from") }} + {{ variableComponent.intervalValues.from }} + {{ $t("dataTypeAuthorizations.to") }} + {{ variableComponent.intervalValues.to }} + </b-tag> </div> </b-taglist> </b-field> </div> <div class="column is-2-widescreen is-3-desktop"> <b-button expanded icon-left="redo" outlined type="is-danger" @click="clearSearch" - >{{ $t("dataTypesManagement.réinitialiser") }} + >{{ $t("dataTypesManagement.réinitialiser") }} {{ $t("dataTypesManagement.filtre") }} </b-button> </div> <div class="column is-2-widescreen is-3-desktop"> <p class="control"> <b-button expanded icon-left="check" outlined type="is-dark" @click="addSearch" - >{{ $t("dataTypesManagement.validate") }} + >{{ $t("dataTypesManagement.validate") }} {{ $t("dataTypesManagement.filtre") }} </b-button> </p> @@ -469,43 +500,43 @@ </div> <div class="columns"> <b-button icon-left="redo" type="is-danger" @click="reInit" - >{{ $t("dataTypesManagement.réinitialiser") }} + >{{ $t("dataTypesManagement.réinitialiser") }} </b-button> </div> </caption> <thead v-else style="text-transform: capitalize; text-align: center"> - <tr class="DataSetTableView-variable-row"> - <th + <tr class="DataSetTableView-variable-row"> + <th v-for="variable in columnsVariableToBeShown" :key="variable.id" :colspan="colspan(variable)" :variable="variable.id" - > - {{ variable.label }} - </th> - </tr> - <tr> - <th + > + {{ variable.label }} + </th> + </tr> + <tr> + <th v-for="(comp, index) in columnsVariableComponentsToBeShown" :key="`${comp.label}-${index}`" :component="comp.component" :variable="comp.variable" - > - {{ comp.label }} - </th> - </tr> + > + {{ comp.label }} + </th> + </tr> </thead> <tbody> - <tr v-for="(row, rowIndex) in rows" :key="row.rowId" :rowId="row.rowId"> - <td + <tr v-for="(row, rowIndex) in rows" :key="row.rowId" :rowId="row.rowId"> + <td v-for="(component, index) in columnsVariableComponentsToBeShown" :key="`row_${rowIndex}-${index}`" :component="component.component" :variable="component.variable" style="vertical-align: middle" - > + > <span - v-if=" + v-if=" !testMultiplicity(component.variable, component.component) && row[component.variable][component.component] && component.checker && @@ -514,47 +545,47 @@ > {{ datePatternLang(row[component.variable][component.component], component.format) }} </span> - <span + <span v-else-if=" row[component.variable][component.computedComponent] && component.checker && component.checker.checkerDescription.params.pattern && !testMultiplicity(component.variable, component.component) " - > + > {{ datePatternLang(row[component.variable][component.component], component.format) }} </span> - <span v-else> + <span v-else> <ReferencesManyLink - v-if="testMultiplicity(component.variable, component.component)" - :application="application" - :column-id="getDisplay(row, component.variable, component.component)" - :info-values="getValuesRow(row[component.variable][component.component])" - :loaded-references-by-key="{}" - :multiplicity="true" - :reference-type="getRefType(component.checker)" + v-if="testMultiplicity(component.variable, component.component)" + :application="application" + :column-id="getDisplay(row, component.variable, component.component)" + :info-values="getValuesRow(row[component.variable][component.component])" + :loaded-references-by-key="{}" + :multiplicity="true" + :reference-type="getRefType(component.checker)" ></ReferencesManyLink> <ReferencesLink - v-else-if="getRefsLinkedToId(row, component)" - :application="application" - :column-id="getDisplay(row, component.variable, component.component)" - :column-title="row[component.variable][component.component]" - :component="component.component" - :loaded-references-by-key="{}" - :reference-type="component.checker.fieldType.refType" - :reference-value="component.checker.fieldType.referenceValues" - :row="row" - :value=" + v-else-if="getRefsLinkedToId(row, component)" + :application="application" + :column-id="getDisplay(row, component.variable, component.component)" + :column-title="row[component.variable][component.component]" + :component="component.component" + :loaded-references-by-key="{}" + :reference-type="component.checker.fieldType.refType" + :reference-value="component.checker.fieldType.referenceValues" + :row="row" + :value=" referenceLineCheckers[component.variable + '_' + component.component] ?.fieldType.value ? referenceLineCheckers[component.variable + '_' + component.component] ?.fieldType.value : row[component.variable][component.component] " - :variable="component.variable" + :variable="component.variable" ></ReferencesLink> <p - v-else-if=" + v-else-if=" !getRefsLinkedToId(row, component) && row[component.variable][component.component] " @@ -562,7 +593,7 @@ {{ row[component.variable][component.component] }} </p> <p - v-else-if=" + v-else-if=" !getRefsLinkedToId(row, component) && row[component.variable][component.computedComponent] " @@ -570,33 +601,33 @@ {{ row[component.variable][component.computedComponent] }} </p> </span> - </td> - </tr> + </td> + </tr> </tbody> </table> </div> <b-pagination - v-model="currentPage" - :aria-current-label="$t('menu.aria-curent-page')" - :aria-label="$t('menu.aria-pagination')" - :aria-next-label="$t('menu.aria-next-page')" - :aria-previous-label="$t('menu.aria-previous-page')" - :per-page="params.limit" - :rounded="true" - :total="totalRows" - order="is-centered" - range-after="3" - range-before="3" - role="navigation" - @change="changePage" + v-model="currentPage" + :aria-current-label="$t('menu.aria-curent-page')" + :aria-label="$t('menu.aria-pagination')" + :aria-next-label="$t('menu.aria-next-page')" + :aria-previous-label="$t('menu.aria-previous-page')" + :per-page="params.limit" + :rounded="true" + :total="totalRows" + order="is-centered" + range-after="3" + range-before="3" + role="navigation" + @change="changePage" > </b-pagination> <div class="buttons" style="margin-top: 16px"> <b-button - style="margin-bottom: 15px; float: right" - type="is-primary" - @click.prevent="downloadResultSearch" - >{{ $t("dataTypesManagement.download") }} + style="margin-bottom: 15px; float: right" + type="is-primary" + @click.prevent="downloadResultSearch" + >{{ $t("dataTypesManagement.download") }} </b-button> </div> </div> @@ -606,28 +637,28 @@ <script> import PageView from "@/views/common/PageView.vue"; import AuthorizationScopesMenu from "@/components/datatype/AuthorizationScopesMenu.vue"; -import { ApplicationResult } from "@/model/ApplicationResult"; -import SubMenu, { SubMenuPath } from "@/components/common/SubMenu.vue"; +import {ApplicationResult} from "@/model/ApplicationResult"; +import SubMenu, {SubMenuPath} from "@/components/common/SubMenu.vue"; import CollapsibleInterval from "@/components/common/CollapsibleInterval.vue"; -import { DownloadDatasetQuery } from "@/model/application/DownloadDatasetQuery"; -import { VariableComponentFilters } from "@/model/application/VariableComponentFilters"; -import { VariableComponentKey } from "@/model/application/VariableComponentKey"; -import { IntervalValues } from "@/model/application/IntervalValues"; -import { VariableComponentOrderBy } from "@/model/application/VariableComponentOrderBy"; +import {DownloadDatasetQuery} from "@/model/application/DownloadDatasetQuery"; +import {VariableComponentFilters} from "@/model/application/VariableComponentFilters"; +import {VariableComponentKey} from "@/model/application/VariableComponentKey"; +import {IntervalValues} from "@/model/application/IntervalValues"; +import {VariableComponentOrderBy} from "@/model/application/VariableComponentOrderBy"; import draggable from "vuedraggable"; import ReferencesLink from "@/components/references/ReferencesLink.vue"; import ReferencesManyLink from "@/components/references/ReferencesManyLink.vue"; import TagsCollapse from "@/components/common/TagsCollapse.vue"; import LoadingAnimate from "@/components/common/LoadingAnimate.vue"; -import { LOCAL_STORAGE_LANG } from "@/services/Fetcher"; -import { Authorization } from "@/model/authorization/Authorization"; +import {LOCAL_STORAGE_LANG} from "@/services/Fetcher"; +import {Authorization} from "@/model/authorization/Authorization"; import useBoolean from "@/composable/components/boolean"; import useNumber from "@/composable/components/number"; import useObject from "@/composable/components/object"; -import { computed, onMounted } from "vue"; +import {computed, onMounted} from "vue"; import useArray from "@/composable/components/array"; import services from "@/composable/services"; -import { i18n } from "@/main"; +import {i18n} from "@/main"; import app from "@/main"; import { buildTagsForVariables } from "@/composable/application/tags"; import { datePatternLang } from "@/composable/application/DatePattern"; @@ -660,57 +691,57 @@ export default { setup(props) { // dans onMounted() - const { shallowRefArray: subMenuPaths, doChangeArray: changeSubMenuPaths } = useArray(); + const {shallowRefArray: subMenuPaths, doChangeArray: changeSubMenuPaths} = useArray(); // dans onMounted() -> init() - const { refBoolean: isLoading, doChangeBoolean: changeIsLoading } = useBoolean(); - const { reactiveObject: application, doChangeObject: changeApplication } = useObject( - new ApplicationResult() + const {refBoolean: isLoading, doChangeBoolean: changeIsLoading} = useBoolean(); + const {reactiveObject: application, doChangeObject: changeApplication} = useObject( + new ApplicationResult() ); // dans onMounted() -> init() -> initDataType() - const { refBoolean: showSort, doChangeBoolean: changeShowSort } = useBoolean(); - const { reactiveObject: params, doChangeObject: changeParams } = useObject( - new DownloadDatasetQuery({ - application: null, - applicationNameOrId: props.applicationName, - dataType: props.dataTypeId, - offset: 0, - limit: 10, - variableComponentSelects: [], - variableComponentFilters: [], - variableComponentOrderBy: [], - authorizationDescriptions: [], - }) + const {refBoolean: showSort, doChangeBoolean: changeShowSort} = useBoolean(); + const {reactiveObject: params, doChangeObject: changeParams} = useObject( + new DownloadDatasetQuery({ + application: null, + applicationNameOrId: props.applicationName, + dataType: props.dataTypeId, + offset: 0, + limit: 10, + variableComponentSelects: [], + variableComponentFilters: [], + variableComponentOrderBy: [], + authorizationDescriptions: [], + }) ); - const { reactiveObject: refsLinkedTo, doChangeObject: changeRefsLinkedTo } = useObject(); - const { shallowRefArray: referenceLineCheckers, doChangeArray: changeReferenceLineCheckers } = - useArray(); - const { shallowRefArray: rows, doChangeArray: changeRows } = useArray(); - const { refNumber: totalRows, doChangeNumber: changeTotalRows } = useNumber(-1); - const { shallowRefArray: variables, doChangeArray: changeVariables } = useArray(); - const { shallowRefArray: variableComponents, doChangeArray: changeVariableComponents } = - useArray(); + const {reactiveObject: refsLinkedTo, doChangeObject: changeRefsLinkedTo} = useObject(); + const {shallowRefArray: referenceLineCheckers, doChangeArray: changeReferenceLineCheckers} = + useArray(); + const {shallowRefArray: rows, doChangeArray: changeRows} = useArray(); + const {refNumber: totalRows, doChangeNumber: changeTotalRows} = useNumber(-1); + const {shallowRefArray: variables, doChangeArray: changeVariables} = useArray(); + const {shallowRefArray: variableComponents, doChangeArray: changeVariableComponents} = + useArray(); const { shallowRefArray: variableComponentsListToSort, doChangeArray: changeVariableComponentsListToSort, } = useArray(); const mapVariableIndexByColumnIndex = new Map(); // dans onMounted() -> init() -> initDataType() -> partitionReferencesValues() - const { shallowRefArray: references } = useArray(); + const {shallowRefArray: references} = useArray(); // dans onMounted() -> init() -> initDataType() -> initAuthorizationScopeMenus() - const { reactiveObject: authReferences, doChangeObject: changeAuthReferences } = useObject(); + const {reactiveObject: authReferences, doChangeObject: changeAuthReferences} = useObject(); const { reactiveObject: authorizationScopesMenus, doChangeObject: changeAuthorizationScopesMenus, } = useObject(); // dans onMounted() -> buildTags() - const { shallowRefArray: tagsColumn, doChangeArray: changeTagsColumn } = useArray(); + const {shallowRefArray: tagsColumn, doChangeArray: changeTagsColumn} = useArray(); // dans addAuthorizationMenus() const { refNumber: authorizationScopesMenusCount, doChangeNumber: changeAuthorizationScopesMenusCount, } = useNumber(1); - const { shallowRefArray: authFilter, doChangeArray: changeAuthFilter } = useArray([{}]); + const {shallowRefArray: authFilter, doChangeArray: changeAuthFilter} = useArray([{}]); const { shallowRefArray: authorizationDescriptions, doChangeArray: changeAuthorizationDescriptions, @@ -718,51 +749,51 @@ export default { } = useArray([authorizationDescriptionsModel]); // dans addSearch() - const { refBoolean: showAdvancedSearch } = useBoolean(); + const {refBoolean: showAdvancedSearch} = useBoolean(); const { shallowRefArray: variableSearch, doChangeArray: changeVariableSearch, doAddToArray: addVariableSearch, } = useArray(); - const { refBoolean: showFilter, doChangeBoolean: changeShowFilter } = useBoolean(); + const {refBoolean: showFilter, doChangeBoolean: changeShowFilter} = useBoolean(); // dans updateDate() - const { refBoolean: visible, doChangeBoolean: changeVisible } = useBoolean(); + const {refBoolean: visible, doChangeBoolean: changeVisible} = useBoolean(); // dans getReferenceValues() - const { reactiveObject: loadedReferences, doChangeObject: changeLoadedReferences } = - useObject(); + const {reactiveObject: loadedReferences, doChangeObject: changeLoadedReferences} = + useObject(); // dans recalculate() - const { shallowRefArray: searchValueReference, doChangeArray: changeSearchValueReference } = - useArray(); - const { reactiveObject: search } = useObject(); + const {shallowRefArray: searchValueReference, doChangeArray: changeSearchValueReference} = + useArray(); + const {reactiveObject: search} = useObject(); - const { refNumber: currentPage } = useNumber(1); - const { refNumber: activeTab } = useNumber(); - const { refNumber: isOpen } = useNumber(); + const {refNumber: currentPage} = useNumber(1); + const {refNumber: activeTab} = useNumber(); + const {refNumber: isOpen} = useNumber(); const columnsVariableToBeShown = computed(() => - services.tagService.toBeShown(tagsColumn.value, variables.value) + services.tagService.toBeShown(tagsColumn.value, variables.value) ); const columnsVariableComponentsToBeShown = computed(() => - services.tagService.toBeShown(tagsColumn.value, variableComponents.value) + services.tagService.toBeShown(tagsColumn.value, variableComponents.value) ); onMounted(async () => { await init(); changeSubMenuPaths([ new SubMenuPath( - i18n.t("dataTypesManagement.data-types").toLowerCase(), - () => app.$router.push(`"/applications/${props.applicationName}/dataTypes"`), - () => app.$router.push(`/applications`) + i18n.t("dataTypesManagement.data-types").toLowerCase(), + () => app.$router.push(`"/applications/${props.applicationName}/dataTypes"`), + () => app.$router.push(`/applications`) ), new SubMenuPath( - props.dataTypeId, - () => - app.$router.push( - `/applications/${props.applicationName}/dataTypes/${props.dataTypeId}` - ), - () => app.$router.push(`/applications/${props.applicationName}/dataTypes`) + props.dataTypeId, + () => + app.$router.push( + `/applications/${props.applicationName}/dataTypes/${props.dataTypeId}` + ), + () => app.$router.push(`/applications/${props.applicationName}/dataTypes`) ), ]); changeTagsColumn(buildTagsForVariables(application, variables, variableComponents)); @@ -778,18 +809,18 @@ export default { async function init() { changeIsLoading(true); changeApplication( - await services.applicationService.getApplication(props.applicationName, [ - "CONFIGURATION", - "DATATYPE", - ]) + await services.applicationService.getApplication(props.applicationName, [ + "CONFIGURATION", + "DATATYPE", + ]) ); changeApplication({ ...application, localName: - services.internationalisationService.mergeInternationalization(application).localName, + services.internationalisationService.mergeInternationalization(application).localName, localDatatypeName: services.internationalisationService.localeDataTypeIdName( - application, - application.dataTypes[props.dataTypeId] + application, + application.dataTypes[props.dataTypeId] ), }); await initDatatype(); @@ -798,61 +829,61 @@ export default { async function initDatatype() { changeShowSort(false); const dataTypes = await services.dataService.getDataType( - props.applicationName, - props.dataTypeId, - params + props.applicationName, + props.dataTypeId, + params ); if ( - params.variableComponentFilters.length !== 0 || - params.variableComponentOrderBy.length !== 0 + params.variableComponentFilters.length !== 0 || + params.variableComponentOrderBy.length !== 0 ) { changeIsLoading(true); } changeReferenceLineCheckers(dataTypes.checkedFormatVariableComponents.ReferenceType); changeRefsLinkedTo( - dataTypes.rows.reduce((acc, d) => { - acc[d.rowId] = d.refsLinkedTo; - return acc; - }, {}) + dataTypes.rows.reduce((acc, d) => { + acc[d.rowId] = d.refsLinkedTo; + return acc; + }, {}) ); changeTotalRows(dataTypes.totalRows); changeRows( - dataTypes.rows.map((r) => { - return { rowId: r.rowId, ...r.values }; - }) + dataTypes.rows.map((r) => { + return {rowId: r.rowId, ...r.values}; + }) ); const variablesModels = application.dataTypes[props.dataTypeId].variables; changeVariables(dataTypes.variables.map((v) => variablesModels[v])); changeVariableComponents( - variables.value - .map((v) => { - return Object.values(v.components).map((c) => - Object.assign(c, { - variable: v.label, - component: c.id, - ...getVariableComponentInfos(v.label, c.id, dataTypes), + variables.value + .map((v) => { + return Object.values(v.components).map((c) => + Object.assign(c, { + variable: v.label, + component: c.id, + ...getVariableComponentInfos(v.label, c.id, dataTypes), + }) + ); }) - ); - }) - .flat() + .flat() ); changeVariableComponentsListToSort( - variables.value - .map((v) => { - return Object.keys(v.components).reduce((acc, comp) => { - return [ - ...acc, - { - variableComponentKey: { variable: v.id, component: comp }, - order: null, - ...getVariableComponentInfos(v.id, comp, dataTypes), - }, - ]; - }, []); - }) - .flat() + variables.value + .map((v) => { + return Object.keys(v.components).reduce((acc, comp) => { + return [ + ...acc, + { + variableComponentKey: {variable: v.id, component: comp}, + order: null, + ...getVariableComponentInfos(v.id, comp, dataTypes), + }, + ]; + }, []); + }) + .flat() ); let columnIndex = 0; variables.value.forEach((variable, variableIndex) => { @@ -873,17 +904,17 @@ export default { async function reInit() { changeIsLoading(true); changeParams( - new DownloadDatasetQuery({ - application: null, - applicationNameOrId: props.applicationName, - dataType: props.dataTypeId, - offset: 0, - limit: 15, - variableComponentSelects: [], - variableComponentFilters: [], - variableComponentOrderBy: [], - authorizationDescriptions: [], - }) + new DownloadDatasetQuery({ + application: null, + applicationNameOrId: props.applicationName, + dataType: props.dataTypeId, + offset: 0, + limit: 15, + variableComponentSelects: [], + variableComponentFilters: [], + variableComponentOrderBy: [], + authorizationDescriptions: [], + }) ); changeAuthorizationScopesMenusCount(1); changeAuthorizationDescriptions([authorizationDescriptionsModel]); @@ -902,7 +933,7 @@ export default { } else { params.authorizationDescriptions = authFilter.value.map((_, index) => { let timeScope = authorizationDescriptions.value[index]; - timeScope = { from: timeScope.from, to: timeScope.to }; + timeScope = {from: timeScope.from, to: timeScope.to}; let requiredAuthorizations = [{}]; for (const auth of Object.keys(authReferences)) { requiredAuthorizations = setRequiredAuthorization(requiredAuthorizations, auth, index); @@ -925,7 +956,7 @@ export default { let returnAuthorizations = []; requiredAuthorizations.forEach((ra) => { values.forEach((value) => { - let requiredAuthorization = { ...ra }; + let requiredAuthorization = {...ra}; requiredAuthorization[auth] = value; returnAuthorizations.push(requiredAuthorization); }); @@ -940,29 +971,29 @@ export default { let key = variableId + "_" + componentId; if (dataTypes.checkedFormatVariableComponents) { if ( - dataTypes.checkedFormatVariableComponents.DateType && - dataTypes.checkedFormatVariableComponents.DateType[key] + dataTypes.checkedFormatVariableComponents.DateType && + dataTypes.checkedFormatVariableComponents.DateType[key] ) { type = "date"; format = dataTypes.checkedFormatVariableComponents.DateType[key].fieldType.pattern; checker = dataTypes.checkedFormatVariableComponents.DateType[key]; } else if ( - dataTypes.checkedFormatVariableComponents.IntegerType && - dataTypes.checkedFormatVariableComponents.IntegerType[key] + dataTypes.checkedFormatVariableComponents.IntegerType && + dataTypes.checkedFormatVariableComponents.IntegerType[key] ) { type = "numeric"; format = "integer"; checker = dataTypes.checkedFormatVariableComponents.IntegerType[key]; } else if ( - dataTypes.checkedFormatVariableComponents.FloatType && - dataTypes.checkedFormatVariableComponents.FloatType[key] + dataTypes.checkedFormatVariableComponents.FloatType && + dataTypes.checkedFormatVariableComponents.FloatType[key] ) { type = "numeric"; format = "float"; checker = dataTypes.checkedFormatVariableComponents.FloatType[key]; } else if ( - dataTypes.checkedFormatVariableComponents.ReferenceType && - dataTypes.checkedFormatVariableComponents.ReferenceType[key] + dataTypes.checkedFormatVariableComponents.ReferenceType && + dataTypes.checkedFormatVariableComponents.ReferenceType[key] ) { type = "reference"; format = "uuid"; @@ -987,30 +1018,30 @@ export default { for (let auth in dataType.authorization.authorizationScopes) { let vc = dataType.authorization.authorizationScopes[auth]; let variables = dataType.data[vc.variable]; - const reference = { ...variables.components, ...variables.computedComponents }[ - vc.component - ].checker.params.refType; + const reference = {...variables.components, ...variables.computedComponents}[ + vc.component + ].checker.params.refType; let ref = await getOrLoadReferences(reference); ret[auth] = ref; } let refs = Object.values(ret) - .reduce( - (acc, k) => [ - ...acc, - ...k.referenceValues.reduce( - (a, b) => [...a, ...b.hierarchicalReference.split(".")], - acc - ), - ], - [] - ) - .reduce((a, b) => { - if (a.indexOf(b) < 0) { - a.push(b); - } - return a; - }, []); + .reduce( + (acc, k) => [ + ...acc, + ...k.referenceValues.reduce( + (a, b) => [...a, ...b.hierarchicalReference.split(".")], + acc + ), + ], + [] + ) + .reduce((a, b) => { + if (a.indexOf(b) < 0) { + a.push(b); + } + return a; + }, []); for (const refsKey in refs) { await getOrLoadReferences(refs[refsKey]); } @@ -1021,17 +1052,17 @@ export default { changeAuthReferences(ret); let authorizationScopeMenus = {}; let referenceforAuthorizationScope = Object.values( - dataType.authorization.authorizationScopes + dataType.authorization.authorizationScopes ).map( - (as) => - ( - dataType.data[as.variable]?.components[as.component] || - dataType.data[as.variable]?.computedComponent[as.component] - ).checker.params.refType + (as) => + ( + dataType.data[as.variable]?.components[as.component] || + dataType.data[as.variable]?.computedComponent[as.component] + ).checker.params.refType ); changeAuthorizationScopesMenus({}); for (let compositeReference of Object.values( - application.configuration.compositeReferences + application.configuration.compositeReferences )) { let components = []; for (let component of compositeReference.components) { @@ -1050,9 +1081,9 @@ export default { } async function partitionReferencesValues( - referencesValues, - currentPath, - currentCompleteLocalName + referencesValues, + currentPath, + currentCompleteLocalName ) { let returnValues = {}; for (const referenceValue of referencesValues) { @@ -1082,7 +1113,7 @@ export default { localName = key; } let completeLocalName = - typeof currentCompleteLocalName === "undefined" ? "" : currentCompleteLocalName; + typeof currentCompleteLocalName === "undefined" ? "" : currentCompleteLocalName; completeLocalName = completeLocalName + (completeLocalName === "" ? "" : ",") + localName; let authPartition = returnValues[key] || { key, @@ -1100,8 +1131,8 @@ export default { const auth = returnValues[returnValuesKey]; let referenceValueLeaf = auth.referenceValues?.[0]; if ( - auth.referenceValues.length <= 1 && - referenceValueLeaf.hierarchicalKey === auth.currentPath + auth.referenceValues.length <= 1 && + referenceValueLeaf.hierarchicalKey === auth.currentPath ) { returnValues[returnValuesKey] = { ...auth, @@ -1110,9 +1141,9 @@ export default { }; } else { let r = await partitionReferencesValues( - auth.referenceValues, - auth.currentPath, - auth.completeLocalName + auth.referenceValues, + auth.currentPath, + auth.completeLocalName ); returnValues[returnValuesKey] = { ...auth, @@ -1127,8 +1158,8 @@ export default { async function getOrLoadReferences(reference) { if (!references[reference]) { references[reference] = await services.referenceService.getReferenceValues( - application.name, - reference + application.name, + reference ); } return references[reference]; @@ -1176,8 +1207,8 @@ export default { function testMultiplicity(variable, component) { return ( - application.configuration.dataTypes.bugs?.data[variable].components[component]?.checker - .params.multiplicity === "MANY" + application.configuration.dataTypes.bugs?.data[variable].components[component]?.checker + .params.multiplicity === "MANY" ); } @@ -1196,8 +1227,8 @@ export default { function updateDate(index, value, type) { authorizationDescriptions.value[index][type] = value; if ( - authorizationDescriptions.value[index]?.from?.length !== undefined && - authorizationDescriptions.value[index]?.to?.length !== undefined + authorizationDescriptions.value[index]?.from?.length !== undefined && + authorizationDescriptions.value[index]?.to?.length !== undefined ) { changeVisible(true); } @@ -1213,11 +1244,11 @@ export default { function addVariableComponentToSortedList(variableComponentSorted, order) { variableComponentSorted.order = variableComponentSorted.order === order ? null : order; params.variableComponentOrderBy = params.variableComponentOrderBy.filter( - (c) => - c.variableComponentKey.variable !== - variableComponentSorted.variableComponentKey.variable || - c.variableComponentKey.component !== - variableComponentSorted.variableComponentKey.component + (c) => + c.variableComponentKey.variable !== + variableComponentSorted.variableComponentKey.variable || + c.variableComponentKey.component !== + variableComponentSorted.variableComponentKey.component ); if (variableComponentSorted.order) { params.variableComponentOrderBy.push(new VariableComponentOrderBy(variableComponentSorted)); @@ -1226,28 +1257,35 @@ export default { function deleteTag(variable, component) { params.variableComponentOrderBy = params.variableComponentOrderBy.filter( - (c) => - c.variableComponentKey.variable !== variable || - c.variableComponentKey.component !== component + (c) => + c.variableComponentKey.variable !== variable || + c.variableComponentKey.component !== component ); params.variableComponentOrderBy.delete(); document.getElementById(variable + component).remove(); } - function recalculate(variableComponent) { - let { key, variable, component } = variableComponent; - let valueReference; + async function recalculate(variableComponent) { + let display = "__display_" + window.localStorage.lang; + let {key, variable, component} = variableComponent; + let valueReference = []; let value = search[key]; changeSearchValueReference([]); - valueReference = Object.keys( - application.dataTypes[props.dataTypeId].variables[variable].components[component].checker - .fieldType.referenceValues - ); + let refId = application.dataTypes[props.dataTypeId].variables[variable].components[component].checker + .fieldType.refType; + let reference = await services.referenceService.getReferenceValues(props.applicationName, refId); + for (let i = 0; i < reference.referenceValues.length; i++) { + if (reference.referenceValues[i].values[display]) { + valueReference.push(reference.referenceValues[i].values[display]); + } else { + valueReference.push(reference.referenceValues[i].naturalKey); + } + } if (value !== undefined) { changeSearchValueReference( - valueReference.filter((option) => { - return option.toString().indexOf(value) >= 0; - }) + valueReference.filter((option) => { + return option.toString().indexOf(value) >= 0; + }) ); } else { changeSearchValueReference(valueReference); @@ -1256,34 +1294,34 @@ export default { function getSortIcon(variable, component) { let icon = params.variableComponentOrderBy - .filter( - (c) => - c.variableComponentKey.variable === variable && - c.variableComponentKey.component === component - ) - .map((vc) => { - if (vc.order === "ASC") { - return "arrow-down"; - } else if (vc.order === "DESC") { - return "arrow-up"; - } else { - return ""; - } - })[0]; + .filter( + (c) => + c.variableComponentKey.variable === variable && + c.variableComponentKey.component === component + ) + .map((vc) => { + if (vc.order === "ASC") { + return "arrow-down"; + } else if (vc.order === "DESC") { + return "arrow-up"; + } else { + return ""; + } + })[0]; return icon ? icon : null; } function addVariableSearchs(variableComponent, option) { - let { key, variable, component, type, format } = variableComponent; + let {key, variable, component, type, format} = variableComponent; let isRegExp = params.variableComponentFilters.isRegex; if (option) { search[key] = option; } let value = search[key]; params.variableComponentFilters = params.variableComponentFilters.filter( - (c) => - c.variableComponentKey.variable !== variable || - c.variableComponentKey.component !== component + (c) => + c.variableComponentKey.variable !== variable || + c.variableComponentKey.component !== component ); let letSearch = null; if (variableComponent.intervalValues) { @@ -1330,17 +1368,17 @@ export default { async function clearSearch() { if (showFilter.value) { changeParams( - new DownloadDatasetQuery({ - application: null, - applicationNameOrId: props.applicationName, - dataType: props.dataTypeId, - offset: 0, - limit: 15, - variableComponentSelects: params.variableComponentSelects, - variableComponentFilters: params.variableComponentFilters, - variableComponentOrderBy: params.variableComponentOrderBy, - authorizationDescriptions: [], - }) + new DownloadDatasetQuery({ + application: null, + applicationNameOrId: props.applicationName, + dataType: props.dataTypeId, + offset: 0, + limit: 15, + variableComponentSelects: params.variableComponentSelects, + variableComponentFilters: params.variableComponentFilters, + variableComponentOrderBy: params.variableComponentOrderBy, + authorizationDescriptions: [], + }) ); changeAuthorizationScopesMenusCount(1); changeAuthorizationDescriptions([authorizationDescriptionsModel]); @@ -1370,11 +1408,11 @@ export default { let lang = "__display_" + localStorage.getItem("lang"); if (referenceLineCheckers.value[key]) { if ( - referenceLineCheckers.value[key].referenceValues && - referenceLineCheckers.value[key].referenceValues.refValues + referenceLineCheckers.value[key].referenceValues && + referenceLineCheckers.value[key].referenceValues.refValues ) { const display = - referenceLineCheckers.value[key].referenceValues.refValues.evaluationContext.datum[lang]; + referenceLineCheckers.value[key].referenceValues.refValues.evaluationContext.datum[lang]; return display ? display : value; } } @@ -1383,9 +1421,9 @@ export default { async function downloadResultSearch() { let csv = await services.dataService.getDataTypesCsv( - props.applicationName, - props.dataTypeId, - buildSearchParams() + props.applicationName, + props.dataTypeId, + buildSearchParams() ); const hiddenElement = document.createElement("a"); hiddenElement.href = csv.href; @@ -1406,8 +1444,8 @@ export default { } } else { params.authorizationDescriptions = authorizationDescriptions.slice( - 0, - authorizationScopesMenusCount + 0, + authorizationScopesMenusCount ); } return { @@ -1429,23 +1467,23 @@ export default { refvalues = referenceLineCheckers[key].referenceValues.refValues.evaluationContext.datum; } if (!refvalues) { - let params = { _row_id_: [rowId] }; + let params = {_row_id_: [rowId]}; if (!refType) { params.any = true; } const reference = await services.referenceService.getReferenceValues( - props.applicationName, - refType, - params + props.applicationName, + refType, + params ); refvalues = reference.referenceValues[0].values; } const data = Object.entries(refvalues) - .map((entry) => ({ colonne: entry[0], valeur: entry[1] })) - .reduce((acc, entry) => { - acc.push(entry); - return acc; - }, []); + .map((entry) => ({colonne: entry[0], valeur: entry[1]})) + .reduce((acc, entry) => { + acc.push(entry); + return acc; + }, []); const result = {}; result[rowId] = { data: data, @@ -1473,9 +1511,9 @@ export default { function getRefsLinkedToId(row, component) { return ( - refsLinkedTo[row.rowId][component.variable] && - (refsLinkedTo[row.rowId][component.variable][component.component] || - refsLinkedTo[row.rowId][component.variable][component.computedComponent]) + refsLinkedTo[row.rowId][component.variable] && + (refsLinkedTo[row.rowId][component.variable][component.component] || + refsLinkedTo[row.rowId][component.variable][component.computedComponent]) ); }