diff --git a/ui/src/components/common/CollapsibleTree.vue b/ui/src/components/common/CollapsibleTree.vue index 9f80b96ebbb169a220a462a5f286e0b8268fac2f..83c0930249cec25761b40886d94ee0fb95361c13 100644 --- a/ui/src/components/common/CollapsibleTree.vue +++ b/ui/src/components/common/CollapsibleTree.vue @@ -57,9 +57,6 @@ <span class="file-name" v-else-if="lineCount > 0"> {{ $t("validation.count-line") }} {{ lineCount }} </span> - <span v-else-if="!option.synthesisMinMax" class="nodata has-text-danger"> - {{ $t("validation.data-empty") }} - </span> </div> <div :class=" @@ -82,7 +79,11 @@ new Date(option.synthesisMinMax[1]).toLocaleDateString("fr") }} </b-field> + <div v-if="isLoading" class="loader-wrapper"> + <div class="loader is-loading"></div> + </div> <availiblity-chart + v-else class="tile availiblity-chart" :show-dates="false" :minmax="option.synthesis.minmax" @@ -90,6 +91,9 @@ :id="option.label" /> </span> + <span v-else class="nodata has-text-danger" style="margin-left: 50px"> + {{ $t("validation.data-empty") }} + </span> </div> </div> <div class="CollapsibleTree-buttons column is-2"> @@ -176,6 +180,7 @@ export default { type: Number, default: 0, }, + isLoading: Boolean, applicationTitle: { type: String, }, diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index 501d0423d978f5ac623bb66d1c59144e065349a1..384e5774c296fd44be7a45358d2268a5fdd0d147 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -180,6 +180,7 @@ export default class ApplicationCreationView extends Vue { } async testApplication() { + const loadingComponent = this.$buefy.loading.open(); this.errorsMessages = []; try { let response = await this.applicationService.validateConfiguration(this.applicationConfig); @@ -212,6 +213,7 @@ export default class ApplicationCreationView extends Vue { } catch (error) { this.checkMessageErrors(error); } + loadingComponent.close(); } checkMessageErrors(error) { diff --git a/ui/src/views/application/ApplicationsView.vue b/ui/src/views/application/ApplicationsView.vue index 2c5ffe74bd9602a584b4082348b0af41a40b1e2c..bb5521d59012ce9913f9c0933b9e061e529ddc18 100644 --- a/ui/src/views/application/ApplicationsView.vue +++ b/ui/src/views/application/ApplicationsView.vue @@ -94,6 +94,11 @@ </section> </div> <div class="column is-9-widescreen is-12-desktop"> + <caption class="columns" v-if="loading"> + <div class="column loader-wrapper"> + <div class="loader is-loading"></div> + </div> + </caption> <div class="columns"> <div v-for="(application, index) in selectedApplications" @@ -272,6 +277,7 @@ export default class ApplicationsView extends Vue { checkboxTrieA_z = "false"; checkboxTrieZ_a = "false"; checkboxDate = "true"; + loading = false; copyOfApplications(application) { return [...application]; @@ -318,6 +324,9 @@ export default class ApplicationsView extends Vue { async init() { this.applications = await this.applicationService.getApplications(['DATATYPE', 'REFERENCETYPE']); this.selectedApplications = this.applications; + if(this.selectedApplications.length === 0) { + this.loading = true + } if (this.checkboxDate === "true") this.selectedApplications.sort((a, b) => b.creationDate - a.creationDate); } @@ -326,8 +335,8 @@ export default class ApplicationsView extends Vue { this.$router.push("/applicationCreation"); } - updateApplication(id) { - this.$router.push(`/applicationCreation/${id}`); + updateApplication() { + this.$router.push(`/applicationCreation`); } displayReferencesManagement(application) { @@ -413,4 +422,13 @@ export default class ApplicationsView extends Vue { top: 5px; left: 5px; } + +.loader-wrapper { + margin: 50px; + justify-content: center; + .loader { + height: 100px; + width: 100px; + } +} </style> \ No newline at end of file diff --git a/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue b/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue index 3cf1c71041118f7c4d504d0ea4391b9d4e34c1e3..72965cfc21f131b711b2a60b93d82f882aa10eec 100644 --- a/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue +++ b/ui/src/views/authorizations/DataTypeAuthorizationInfoView.vue @@ -102,6 +102,7 @@ ></b-field> </div> </div> + <b-loading :is-full-page="null" v-model="isLoading"></b-loading> </AuthorizationTable> <div class="buttons"> @@ -176,7 +177,7 @@ export default class DataTypeAuthorizationInfoView extends Vue { selectedlabels = []; userLabels = []; isApplicationAdmin = false; - openOnFocus = true; + isLoading; periods = { FROM_DATE: this.$t("dataTypeAuthorizations.from-date"), @@ -295,6 +296,7 @@ export default class DataTypeAuthorizationInfoView extends Vue { } ), ]; + this.isLoading = false; } mounted() {} @@ -309,6 +311,7 @@ export default class DataTypeAuthorizationInfoView extends Vue { } async init() { + this.isLoading = true; try { this.application = await this.applicationService.getApplication(this.applicationName, [ "CONFIGURATION", diff --git a/ui/src/views/datatype/DataTypeTableView.vue b/ui/src/views/datatype/DataTypeTableView.vue index bbe6e80321806b27f8dbb04db41400ebdafb6c6e..fe17a77d11488502983ae1d4cd33371ecf95b231 100644 --- a/ui/src/views/datatype/DataTypeTableView.vue +++ b/ui/src/views/datatype/DataTypeTableView.vue @@ -298,18 +298,9 @@ passive-type="is-dark" type="is-primary" :true-value="$t('dataTypesManagement.accepted')" - :false-value="$t('dataTypesManagement.refuse')" - >{{ $t("ponctuation.regEx") }} {{ params.variableComponentFilters.isRegex }}</b-switch - > - <!-- <b-button - class="btnRegExp" - type="is-dark" - size="is-small" - @click="testChangeRegEx()" - outlined - > - {{ $t("ponctuation.regEx") }}</b-button - >--> + :false-value="$t('dataTypesManagement.refuse')"> + {{ $t("ponctuation.regEx") }} {{ params.variableComponentFilters.isRegex }} + </b-switch> </b-field> <div class="columns"> <div class="column is-8-widescreen is-6-desktop"> @@ -355,13 +346,13 @@ <div class="DataSetTableView-wrapper table-wrapper has-sticky-header" style="height: 690px"> <table class="table is-striped"> <caption v-if="variables.length === 0"> - <div class="columns"> - {{ $t("alert.dataTypeFiltreEmpty") }} + <div v-if="!displayDataTypes" class="loader-wrapper"> + <div class="loader is-loading"></div> </div> - <div class="columns"> - <b-button icon-left="redo" type="is-danger" @click="reInit">{{ - $t("dataTypesManagement.réinitialiser") - }}</b-button> + <div v-if="displayDataTypes" class="columns"> + <div class="column"> + {{ $t("alert.dataTypeFiltreEmpty") }} + </div> </div> </caption> <thead style="text-transform: capitalize; text-align: center"> @@ -535,23 +526,7 @@ export default class DataTypeTableView extends Vue { isOpen = 0; variableSearch = []; referenceLineCheckers = []; - isRegExp = false; - - /* testChangeRegEx() { - let checkboxes = document.querySelector('.btnRegExp'); - if (this.params.variableComponentFilters.isRegex === true) { - this.params.variableComponentFilters.isRegex = false; - checkboxes.classList.remove('active'); - } - else if (this.params.variableComponentFilters.isRegex === false) { - this.params.variableComponentFilters.isRegex = true; - checkboxes[i].classList.add('active'); - } else { - this.params.variableComponentFilters.isRegex = !this.isRegExp; - checkboxes[i].classList.add('active'); - } - console.log(this.params.variableComponentFilters.isRegex); - }*/ + displayDataTypes = false; async created() { await this.init(); @@ -605,6 +580,9 @@ export default class DataTypeTableView extends Vue { this.dataTypeId, this.params ); + if (dataTypes.rows.length === 0) { + this.displayDataTypes = true; + } this.referenceLineCheckers = dataTypes.checkedFormatVariableComponents.ReferenceLineChecker; this.translations = dataTypes.entitiesTranslations; @@ -1005,4 +983,12 @@ $row-variable-height: 60px; .icon.is-small { font-size: 5rem; } + +.loader-wrapper { + margin: 50px; + .loader { + height: 100px; + width: 100px; + } +} </style> \ No newline at end of file diff --git a/ui/src/views/datatype/DataTypesManagementView.vue b/ui/src/views/datatype/DataTypesManagementView.vue index c1c01c0bca50564acec42628d283d32c9f1a1e89..363d4d6576d1ff1a5c8816c017dfc371429e3c51 100644 --- a/ui/src/views/datatype/DataTypesManagementView.vue +++ b/ui/src/views/datatype/DataTypesManagementView.vue @@ -41,6 +41,7 @@ withSynthesis: true, withTooltip: true, }" + :is-loading="isLoading" :level="0" :on-click-label-cb="(event, label) => openDataTypeCb(event, label)" :on-click-label-synthesis-detail-cb=" @@ -110,8 +111,8 @@ export default class DataTypesManagementView extends Vue { alertService = AlertService.INSTANCE; dataService = DataService.INSTANCE; errorsService = ErrorsService.INSTANCE; - application = new ApplicationResult(); + isLoading = false; subMenuPaths = []; buttons = [ new Button( @@ -167,6 +168,7 @@ export default class DataTypesManagementView extends Vue { } } async initSynthesis() { + this.isLoading = true; for (const datatype in this.application.dataTypes) { let minmaxByDatatypes = []; let synthesis = await this.synthesisService.getSynthesis(this.applicationName, datatype); @@ -233,6 +235,7 @@ export default class DataTypesManagementView extends Vue { } this.synthesis = { ...this.synthesis }; this.synthesisMinMax = { ...this.synthesisMinMax }; + this.isLoading = false; } consultDataType(label) { diff --git a/ui/src/views/datatype/DataTypesRepositoryView.vue b/ui/src/views/datatype/DataTypesRepositoryView.vue index 26ff9b0d3e77d364cf6ff34c9d52ac76a97d6901..b8056473e3d61b9cdff93df46aabc8e27b7e77ab 100644 --- a/ui/src/views/datatype/DataTypesRepositoryView.vue +++ b/ui/src/views/datatype/DataTypesRepositoryView.vue @@ -158,7 +158,8 @@ </div> <div v-if="isAuthorisationsSelected()" class="columns"> <div class="card column"> - <div class="card-content"> + <div class="card-content" + id="element"> <table v-if="datasets && Object.keys(datasets).length" class="table is-striped is-fullwidth numberData" @@ -341,6 +342,7 @@ export default class DataTypesRepositoryView extends Vue { currentDataset = null; repository = {}; errorsMessages = []; + isFullPage = false; mounted() { this.$on("authorizationChanged", this.updateDatasets); @@ -371,7 +373,6 @@ export default class DataTypesRepositoryView extends Vue { } changeFile(file) { - console.log("repository", this.repository); let pattern = this.repository.filePattern; let split = []; if (pattern && pattern.length) { @@ -605,6 +606,10 @@ export default class DataTypesRepositoryView extends Vue { } async publish(dataset, pusblished) { + // TODO : ajout loading en JS + const loadingComponent = this.$buefy.loading.open({ + container: document.getElementById("element") + }) this.errorsMessages = []; dataset.params.published = pusblished; let requiredAuthorizations = dataset.params.binaryFiledataset.requiredAuthorizations; @@ -612,9 +617,7 @@ export default class DataTypesRepositoryView extends Vue { acc[key] = acc[key] ? acc[key].sql : ""; return acc; }, requiredAuthorizations); - console.log("requiredAuthorizations", requiredAuthorizations); dataset.params.binaryFiledataset.requiredAuthorizations = requiredAuthorizations; - console.log("binaryFiledataset", dataset.params.binaryFiledataset); var fileOrId = new FileOrUUID(dataset.id, dataset.params.binaryFiledataset, pusblished); try { var uuid = await this.dataService.addData( @@ -628,6 +631,7 @@ export default class DataTypesRepositoryView extends Vue { } catch (error) { this.checkMessageErrors(error); } + loadingComponent.close(); } checkMessageErrors(error) { @@ -639,7 +643,6 @@ export default class DataTypesRepositoryView extends Vue { for (let i = 0; i < value.length; i++) { if (message.length > 0) { if (JSON.stringify(value[i]) !== JSON.stringify(value[i - message.length])) { - console.log(message); this.errorsList.push(value[i]); } for (let j = 0; j < message.length; j++) { @@ -652,7 +655,6 @@ export default class DataTypesRepositoryView extends Vue { this.errorsList.push(value[i]); } } - console.log(this.errorsList); if (this.errorsList.length !== 0) { this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList); } else { diff --git a/ui/src/views/references/ReferenceTableView.vue b/ui/src/views/references/ReferenceTableView.vue index 5a5b70bb95bedc7ae42bf4782334f4caa751c54a..8c900818a92137f57e1827c54a0b9cab8003e8e2 100644 --- a/ui/src/views/references/ReferenceTableView.vue +++ b/ui/src/views/references/ReferenceTableView.vue @@ -13,6 +13,7 @@ <div v-if="reference && columns"> <b-table :data="tableValues" + :loading="isLoading" :striped="true" :is-focusable="true" :is-hoverable="true" @@ -137,7 +138,7 @@ export default class ReferenceTableView extends Vue { }); totalRows = -1; currentPage = 1; - + isLoading = false; application = new ApplicationResult(); subMenuPaths = []; reference = {}; @@ -246,6 +247,7 @@ export default class ReferenceTableView extends Vue { } async init() { + this.isLoading = true; try { this.application = await this.applicationService.getApplication(this.applicationName,['CONFIGURATION','REFERENCETYPE']); this.application = { @@ -276,6 +278,7 @@ export default class ReferenceTableView extends Vue { } catch (error) { this.alertService.toastServerError(); } + this.isLoading = false; } async setInitialVariables() {