From f87513a33347939f24a0e6a6117e3fc74e605646 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 30 Oct 2024 18:22:24 +0100 Subject: [PATCH 01/47] =?UTF-8?q?Primer=20avance=20de=20la=20funci=C3=B3n?= =?UTF-8?q?=20de=20rangos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog.component.html | 53 +++++++++++++++++++ .../column-dialog/column-dialog.component.ts | 41 ++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 252d16178..90be7f480 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -328,6 +328,59 @@
Suma acumulativa
+ + +

Formato

+ +
+ +
+ +
Rangos:
+
+ + + + +
+ + + + +
+ + + + + +

+ + * Los rangos son: {{ selectedRange }} + + + +

+ +
+ +
+ +
+ +
+ diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index cfc3c8a47..6b470f041 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -57,6 +57,12 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public cumulativeSumTooltip: string = $localize`:@@cumulativeSumTooltip:Si activas ésta función se calculará la suma acumulativa para los campos numéricos que eligas. Sólo se puede activar si la fecha está agregada por mes, semana o dia.` + + public range: any[] = []; + public rangeString: string; + public selectedRange: string; + public showRange: boolean = false; + constructor( private dashboardService: DashboardService, private chartUtils: ChartUtilsService, @@ -78,6 +84,10 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } onShow(): void { + console.log('HEYYYY'); + console.log('this.controller.params: ', this.controller.params); + // console.log('this.selectedColumn: ', this.selectedColumn); + this.selectedColumn = this.controller.params.selectedColumn; const allowed = []; const title = this.selectedColumn.display_name.default; @@ -620,4 +630,35 @@ export class ColumnDialogComponent extends EdaDialogAbstract { onClose(event: EdaDialogCloseEvent, response?: any): void { return this.controller.close(event, response); } + + addRange(rangeString: string) { + + // Trabajar con range + + const range = rangeString.split(":") + .map(item => parseFloat(item.replace(",", "."))); + + for (let i = 0; i < range.length-1; i++) { + // Verificar si el número actual es menor o igual al anterior + if (range[i] >= range[i + 1]) { + this.range=[]; + console.log('HAY UN ERRORRRRRRR') + return; + } + } + + console.log('RANGE =>',range) + + this.showRange = true; + this.selectedRange = rangeString; // extraemos el rango seleccionado + this.rangeString = ''; + console.log('selectedRange add',this.selectedRange) + + } + + removeRange() { + this.selectedRange=''; + this.showRange=false; + console.log('selectedRange remove',this.selectedRange) + } } From c10c82444fe77327d5ee46096f2d65ab8ea7d425 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 31 Oct 2024 10:07:56 +0100 Subject: [PATCH 02/47] =?UTF-8?q?Ajustes=20de=20solo=20n=C3=BAmeros=20y=20?= =?UTF-8?q?signos=20.=20:=20,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog/column-dialog.component.html | 1 + .../column-dialog/column-dialog.component.ts | 5 +++-- .../only-signs-and-numbers.directive.ts | 16 ++++++++++++++++ eda/eda_app/src/app/shared/shared.module.ts | 7 ++++++- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 90be7f480..5e919001e 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -340,6 +340,7 @@
Rangos:

diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 6b470f041..240b42e32 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -14,6 +14,7 @@ import * as _ from 'lodash'; import { aggTypes } from 'app/config/aggretation-types'; + @Component({ selector: 'app-column-dialog', templateUrl: './column-dialog.component.html', @@ -652,13 +653,13 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.showRange = true; this.selectedRange = rangeString; // extraemos el rango seleccionado this.rangeString = ''; - console.log('selectedRange add',this.selectedRange) + console.log('selectedRange: ',this.selectedRange) } removeRange() { this.selectedRange=''; this.showRange=false; - console.log('selectedRange remove',this.selectedRange) + console.log('selectedRange remove: ',this.selectedRange) } } diff --git a/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts b/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts new file mode 100644 index 000000000..d12221595 --- /dev/null +++ b/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts @@ -0,0 +1,16 @@ +import { Directive, HostListener } from '@angular/core'; + +@Directive({ + selector: '[appOnlySignsAndNumbers]' +}) +export class OnlySignsAndNumbersDirective { + + constructor() { } + + @HostListener('input', ['$event']) + onInput(event: any) { + const valorFiltrado = event.target.value.replace(/[^0-9:.,]/g, ''); + event.target.value = valorFiltrado; + } + +} diff --git a/eda/eda_app/src/app/shared/shared.module.ts b/eda/eda_app/src/app/shared/shared.module.ts index a3ae7aff0..a915ffbd5 100644 --- a/eda/eda_app/src/app/shared/shared.module.ts +++ b/eda/eda_app/src/app/shared/shared.module.ts @@ -6,6 +6,8 @@ import { PipesModule } from './pipes/pipes.module'; // Directives import { FocusOnShowDirective } from './directives/autofocus.directive'; +import { OnlySignsAndNumbersDirective } from './directives/only-signs-and-numbers.directive'; + // Components import { @@ -31,9 +33,11 @@ import { EdaContextMenuComponent, EdaInputComponent, FocusOnShowDirective, + OnlySignsAndNumbersDirective, EdaDatePickerComponent, CreateDashboardComponent, - EdaFieldComponent + EdaFieldComponent, + OnlySignsAndNumbersDirective ], imports: [ CoreModule, @@ -50,6 +54,7 @@ import { EdaContextMenuComponent, EdaInputComponent, FocusOnShowDirective, + OnlySignsAndNumbersDirective, EdaDatePickerComponent, CreateDashboardComponent, EdaFieldComponent From a3abc34a9df64f31d5b6c153964df4158298ebd5 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 31 Oct 2024 13:40:49 +0100 Subject: [PATCH 03/47] =?UTF-8?q?Control=20del=20input=20para=20solo=20rec?= =?UTF-8?q?ibir=20n=C3=BAmeros,=20'.',=20','=20y=20':'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog/column-dialog.component.html | 3 +-- .../column-dialog/column-dialog.component.ts | 14 ++++++++++++++ .../directives/only-signs-and-numbers.directive.ts | 9 ++++++++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 5e919001e..45828a00f 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -341,7 +341,6 @@
Rangos:
@@ -354,7 +353,7 @@
Rangos:
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 240b42e32..9049a064e 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -662,4 +662,18 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.showRange=false; console.log('selectedRange remove: ',this.selectedRange) } + + contieneLetra(rangeString: string){ + + const regexNumber = /^[0-9]/; + const regexLetrasEspacio = /[a-zA-Z\s]/; + + if(regexNumber.test(rangeString[0])){ + return regexLetrasEspacio.test(rangeString); + } + else { + return !regexNumber.test(rangeString[0]) + } + + } } diff --git a/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts b/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts index d12221595..3c0f9bdb7 100644 --- a/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts +++ b/eda/eda_app/src/app/shared/directives/only-signs-and-numbers.directive.ts @@ -9,8 +9,15 @@ export class OnlySignsAndNumbersDirective { @HostListener('input', ['$event']) onInput(event: any) { + const valorFiltrado = event.target.value.replace(/[^0-9:.,]/g, ''); - event.target.value = valorFiltrado; + + // Verificar si el valor ha cambiado después del filtrado + if (event.target.value !== valorFiltrado) { + // Si hay caracteres no permitidos, actualiza el valor y detiene el evento + event.target.value = valorFiltrado; + event.stopPropagation(); // Evitar que el evento se propague si se detectan caracteres no válidos + } } } From 3e1292585b10cefde963e3a5b2a40e9357982fb0 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 31 Oct 2024 14:00:51 +0100 Subject: [PATCH 04/47] =?UTF-8?q?El=20=C3=BAltimo=20caracter=20debe=20ser?= =?UTF-8?q?=20n=C3=BAmero?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog/column-dialog.component.ts | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 9049a064e..16e772267 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -634,26 +634,34 @@ export class ColumnDialogComponent extends EdaDialogAbstract { addRange(rangeString: string) { - // Trabajar con range + const regexNumber = /^[0-9]/; - const range = rangeString.split(":") - .map(item => parseFloat(item.replace(",", "."))); + if(regexNumber.test(rangeString[rangeString.length-1])){ - for (let i = 0; i < range.length-1; i++) { - // Verificar si el número actual es menor o igual al anterior - if (range[i] >= range[i + 1]) { - this.range=[]; - console.log('HAY UN ERRORRRRRRR') - return; + const range = rangeString.split(":") + .map(item => parseFloat(item.replace(",", "."))); + + for (let i = 0; i < range.length-1; i++) { + // Verificar si el número actual es menor o igual al anterior + if (range[i] >= range[i + 1]) { + this.range=[]; + console.log('HAY UN ERRORRRRRRR') + return; + } } - } - console.log('RANGE =>',range) + console.log('RANGE =>',range) - this.showRange = true; - this.selectedRange = rangeString; // extraemos el rango seleccionado - this.rangeString = ''; - console.log('selectedRange: ',this.selectedRange) + this.showRange = true; + this.selectedRange = rangeString; // extraemos el rango seleccionado + this.rangeString = ''; + console.log('selectedRange: ',this.selectedRange) + + } + else { + console.log('HAY UN ERRORRRRRRR, el ultimo caracter debe ser un número') + return; + } } @@ -666,10 +674,10 @@ export class ColumnDialogComponent extends EdaDialogAbstract { contieneLetra(rangeString: string){ const regexNumber = /^[0-9]/; - const regexLetrasEspacio = /[a-zA-Z\s]/; + // const regexLetrasEspacio = /[a-zA-Z\s]/; if(regexNumber.test(rangeString[0])){ - return regexLetrasEspacio.test(rangeString); + // return regexLetrasEspacio.test(rangeString); } else { return !regexNumber.test(rangeString[0]) From fe8cd6769c486598c26d3cdb1d3a272f01cdd648 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 5 Nov 2024 14:24:47 +0100 Subject: [PATCH 05/47] =?UTF-8?q?Nueva=20rama=20actual=20de=20range,=20seg?= =?UTF-8?q?=C3=BAn=20reuni=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eda-blank-panel/column-dialog/column-dialog.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 16e772267..afcfd2fed 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -85,7 +85,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } onShow(): void { - console.log('HEYYYY'); + console.log('column-dialog.component.ts'); console.log('this.controller.params: ', this.controller.params); // console.log('this.selectedColumn: ', this.selectedColumn); From 8acd12dc966459f29d3116f5e8dd2a956c0a7928 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 5 Nov 2024 15:20:52 +0100 Subject: [PATCH 06/47] =?UTF-8?q?Range=20front=20end=20dise=C3=B1o=20nuevo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog/column-dialog.component.html | 14 ++++++++------ .../column-dialog/column-dialog.component.ts | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 45828a00f..3d9116d57 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -334,12 +334,14 @@

Formato


-
+
+ +
Rangos:
+ -
Rangos:
-
@@ -360,13 +362,13 @@
Rangos:
- +

- - * Los rangos son: {{ selectedRange }} + + • Rango:
{{ selectedRange }}
= range[i + 1]) { - this.range=[]; + this.ranges=[]; console.log('HAY UN ERRORRRRRRR') return; } From 09001e6b4f4ff0e2e1c5eb4cf76c66d29538b671 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 09:55:43 +0100 Subject: [PATCH 07/47] =?UTF-8?q?Cuando=20se=20selecciona=20el=20rango,=20?= =?UTF-8?q?se=20selecciona=20la=20agregaci=C3=B3n=20none?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog/column-dialog.component.html | 9 ++++----- .../column-dialog/column-dialog.component.ts | 12 +++++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 3d9116d57..a45f6ba29 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -10,13 +10,12 @@


-
+
- - {{getAggName(aggregation.value)}} - + {{getAggName(aggregation.value)}}
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 4cf60ddbf..01beb56df 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -63,6 +63,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public rangeString: string; public selectedRange: string; public showRange: boolean = false; + public allowedAggregations: boolean = true; constructor( private dashboardService: DashboardService, @@ -170,6 +171,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } addAggregation(type: any) { + console.log('type: ', type); this.aggregationsTypes.find((ag: any) => ag.value === type.value).selected = true; for (let ag of this.aggregationsTypes) { @@ -178,11 +180,14 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } } + console.log('this.aggregationsTypes: ', this.aggregationsTypes); // Recarguem les agregacions d'aquella columna + la seleccionada this.selectedColumn.aggregation_type = JSON.parse(JSON.stringify(this.aggregationsTypes)); + console.log('this.selectedColumn.aggregation_type: ', this.selectedColumn.aggregation_type); // Introduim l'agregació a la Select const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); + console.log('addAggr: ', addAggr); if (addAggr) { addAggr.aggregation_type = JSON.parse(JSON.stringify(this.selectedColumn.aggregation_type)); @@ -655,7 +660,11 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.showRange = true; this.selectedRange = rangeString; // extraemos el rango seleccionado this.rangeString = ''; - console.log('selectedRange: ',this.selectedRange) + this.allowedAggregations = false; + + // Selección de Rango, genera que la agregación sea 'none' + const selectionAggregationRange = { value: 'none', display_name: 'No', selected: 'true' }; + this.addAggregation(selectionAggregationRange); } else { @@ -668,6 +677,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { removeRange() { this.selectedRange=''; this.showRange=false; + this.allowedAggregations = true; console.log('selectedRange remove: ',this.selectedRange) } From 780a0e84787b690593805932f1fea940fe19a3ca Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 11:28:29 +0100 Subject: [PATCH 08/47] Interactividad de los rangos y las agregaciones funcional --- .../column-dialog/column-dialog.component.ts | 53 +++++++++++++++---- .../models/dashboard-models/column.model.ts | 1 + 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 01beb56df..91ffcdc9d 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -59,9 +59,9 @@ export class ColumnDialogComponent extends EdaDialogAbstract { para los campos numéricos que eligas. Sólo se puede activar si la fecha está agregada por mes, semana o dia.` - public ranges: any[] = []; + public ranges: number[] = []; public rangeString: string; - public selectedRange: string; + public selectedRange: string = ''; public showRange: boolean = false; public allowedAggregations: boolean = true; @@ -95,8 +95,13 @@ export class ColumnDialogComponent extends EdaDialogAbstract { const title = this.selectedColumn.display_name.default; const col = $localize`:@@col:Atributo`, from = $localize`:@@table:de la entidad`; this.dialog.title = `${col} ${title} ${from} ${this.controller.params.table}`; - + this.carregarValidacions(); + this.verifyRange(); + // debugger; + // console.log('this.selectedColumn', this.selectedColumn); + // console.log('this.aggregationsTypes', this.aggregationsTypes); + // debugger; const columnType = this.selectedColumn.column_type; @@ -180,14 +185,11 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } } - console.log('this.aggregationsTypes: ', this.aggregationsTypes); // Recarguem les agregacions d'aquella columna + la seleccionada this.selectedColumn.aggregation_type = JSON.parse(JSON.stringify(this.aggregationsTypes)); - console.log('this.selectedColumn.aggregation_type: ', this.selectedColumn.aggregation_type); // Introduim l'agregació a la Select const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); - console.log('addAggr: ', addAggr); if (addAggr) { addAggr.aggregation_type = JSON.parse(JSON.stringify(this.selectedColumn.aggregation_type)); @@ -643,19 +645,20 @@ export class ColumnDialogComponent extends EdaDialogAbstract { if(regexNumber.test(rangeString[rangeString.length-1])){ - const range = rangeString.split(":") + const ranges = rangeString.split(":") .map(item => parseFloat(item.replace(",", "."))); - for (let i = 0; i < range.length-1; i++) { + for (let i = 0; i < ranges.length-1; i++) { // Verificar si el número actual es menor o igual al anterior - if (range[i] >= range[i + 1]) { + if (ranges[i] >= ranges[i + 1]) { this.ranges=[]; console.log('HAY UN ERRORRRRRRR') return; } } - console.log('RANGE =>',range) + console.log('RANGE =>',ranges) + this.ranges = ranges this.showRange = true; this.selectedRange = rangeString; // extraemos el rango seleccionado @@ -666,6 +669,11 @@ export class ColumnDialogComponent extends EdaDialogAbstract { const selectionAggregationRange = { value: 'none', display_name: 'No', selected: 'true' }; this.addAggregation(selectionAggregationRange); + // Encuentra la columna de turno y agrega el rango + const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); + addAggr.ranges = this.ranges; + console.log('addAggr===> ', addAggr); + } else { console.log('HAY UN ERRORRRRRRR, el ultimo caracter debe ser un número') @@ -678,9 +686,34 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.selectedRange=''; this.showRange=false; this.allowedAggregations = true; + const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); + addAggr.ranges = []; + console.log('selectedRange remove: ',this.selectedRange) } + verifyRange() { + + if(this.selectedColumn.ranges !== undefined){ + + if(this.selectedColumn.ranges.length !==0){ + console.log('Es diferente de indefinido') + + this.allowedAggregations = false; + this.showRange = true; + this.ranges = this.selectedColumn.ranges; + this.ranges.forEach( ran => { + this.selectedRange += `${ran}:` + }) + } + } else { + console.log('Es indefinido') + } + + console.log('this.selectedColumn - verifyRange', this.selectedColumn); + console.log('this.aggregationsTypes - verifyRange', this.aggregationsTypes); + } + contieneLetra(rangeString: string){ const regexNumber = /^[0-9]/; diff --git a/eda/eda_app/src/app/shared/models/dashboard-models/column.model.ts b/eda/eda_app/src/app/shared/models/dashboard-models/column.model.ts index d765dc511..7e8c6b33b 100644 --- a/eda/eda_app/src/app/shared/models/dashboard-models/column.model.ts +++ b/eda/eda_app/src/app/shared/models/dashboard-models/column.model.ts @@ -19,4 +19,5 @@ export interface Column { /* SDA CUSTOM */ hidden: number; autorelation: boolean; joins: string[]; + ranges: number[]; } From e038f2fb182c4dc35ec2ec0aeac5a6d852a7486f Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 14:18:07 +0100 Subject: [PATCH 09/47] Frontend rango - margenes listos --- .../column-dialog.component.html | 16 ++++++------- .../column-dialog/column-dialog.component.ts | 23 +++++++++++++++---- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index a45f6ba29..1c6edb222 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -361,18 +361,16 @@
Rangos:
- + -

- - • Rango:
{{ selectedRange }} -
- - -

+ + + + * Rango: + +
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 91ffcdc9d..65c3fc1bb 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -661,7 +661,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.ranges = ranges this.showRange = true; - this.selectedRange = rangeString; // extraemos el rango seleccionado + this.selectedRange = this.generarStringRango(this.ranges); // extraemos el rango seleccionado this.rangeString = ''; this.allowedAggregations = false; @@ -692,6 +692,23 @@ export class ColumnDialogComponent extends EdaDialogAbstract { console.log('selectedRange remove: ',this.selectedRange) } + generarStringRango(rango: number[]): string { + let resultado = ""; + + // Agregamos la primera condición + resultado += `< ${rango[0]}
`; + + // Creamos las condiciones intermedias + for (let i = 0; i < rango.length - 1; i++) { + resultado += `${rango[i]} - ${rango[i + 1] - 1}
`; + } + + // Agregamos la última condición + resultado += `>= ${rango[rango.length - 1]}`; + + return resultado; + } + verifyRange() { if(this.selectedColumn.ranges !== undefined){ @@ -702,9 +719,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.allowedAggregations = false; this.showRange = true; this.ranges = this.selectedColumn.ranges; - this.ranges.forEach( ran => { - this.selectedRange += `${ran}:` - }) + this.selectedRange = this.generarStringRango(this.ranges); } } else { console.log('Es indefinido') From ef90983a17193b3e91946e319449bd8e224bc858 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 14:40:47 +0100 Subject: [PATCH 10/47] String de rangos listo --- .../column-dialog/column-dialog.component.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 1c6edb222..1d35dc885 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -365,10 +365,9 @@
Rangos:
- - - * Rango: + • Rango: +
From ff3b318bba119108f836183b395d9b95275f3ecd Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 14:46:32 +0100 Subject: [PATCH 11/47] Frontend terminado --- .../eda-blank-panel/column-dialog/column-dialog.component.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 65c3fc1bb..daf811507 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -176,7 +176,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } addAggregation(type: any) { - console.log('type: ', type); this.aggregationsTypes.find((ag: any) => ag.value === type.value).selected = true; for (let ag of this.aggregationsTypes) { @@ -672,8 +671,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { // Encuentra la columna de turno y agrega el rango const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); addAggr.ranges = this.ranges; - console.log('addAggr===> ', addAggr); - } else { console.log('HAY UN ERRORRRRRRR, el ultimo caracter debe ser un número') From 62ee7cafbd1934cab945701d360f549218987502 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 6 Nov 2024 15:00:49 +0100 Subject: [PATCH 12/47] Llegada de rangos al Backend --- .../lib/services/query-builder/query-builder.service.ts | 9 +++++++++ .../src/app/services/utils/query-builder.service.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 8547c32ae..4693960b3 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -114,6 +114,10 @@ export abstract class QueryBuilderService { /** ..........................PER ELS VALUE LISTS................................ */ + console.log('.......................................MITAD..queryTODO..............................................') + console.log(this.queryTODO) + console.log('.....................................................................................................') + const filterTables = this.queryTODO.filters.map(filter => filter.filter_table); @@ -319,6 +323,11 @@ export abstract class QueryBuilderService { this.query = this.normalQuery(columns, origin, dest, joinTree, grouping, filters, havingFilters, tables, this.queryTODO.queryLimit, this.queryTODO.joinType, valueListJoins, this.dataModel.ds.connection.schema, this.dataModel.ds.connection.database, this.queryTODO.forSelector); + + console.log('........................................FIN..this.query..............................................') + console.log(this.query) + console.log('.....................................................................................................') + return this.query; } } diff --git a/eda/eda_app/src/app/services/utils/query-builder.service.ts b/eda/eda_app/src/app/services/utils/query-builder.service.ts index 438689dfc..b670de83c 100644 --- a/eda/eda_app/src/app/services/utils/query-builder.service.ts +++ b/eda/eda_app/src/app/services/utils/query-builder.service.ts @@ -103,6 +103,7 @@ export class QueryBuilderService extends ApiService { col.whatif = select[i].whatif; col.joins = select[i].joins || []; col.autorelation = select[i].autorelation; + col.ranges = select[i].ranges || []; queryColumns.push(col); labels.push(select[i].column_name); } From 8c1502fa6409548fe111f77a5032979860634d53 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 7 Nov 2024 17:09:27 +0100 Subject: [PATCH 13/47] =?UTF-8?q?Primera=20versi=C3=B3n=20de=20la=20tarea?= =?UTF-8?q?=20de=20Rangos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qb-systems/mySql-builder.service.ts | 7 ++ .../query-builder/query-builder.service.ts | 90 ++++++++++++++++++- .../column-dialog.component.html | 15 +++- .../column-dialog/column-dialog.component.ts | 9 ++ eda/eda_app/src/locale/messages.ca.xlf | 4 + eda/eda_app/src/locale/messages.en.xlf | 4 + eda/eda_app/src/locale/messages.es.xlf | 4 + eda/eda_app/src/locale/messages.gl.xlf | 4 + eda/eda_app/src/locale/messages.pl.xlf | 4 + 9 files changed, 136 insertions(+), 5 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index cb89f274f..265adc7f4 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -15,6 +15,13 @@ export class MySqlBuilderService extends QueryBuilderService { let myQuery = `SELECT ${columns.join(', ')} \nFROM ${o}`; + + + + +console.log(columns); + + /** SI ES UN SELECT PARA UN SELECTOR VOLDRÉ VALORS ÚNICS */ if (forSelector === true) { myQuery = `SELECT DISTINCT ${columns.join(', ')} \nFROM ${o}`; diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 4693960b3..da21a59c5 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -116,7 +116,40 @@ export abstract class QueryBuilderService { console.log('.......................................MITAD..queryTODO..............................................') console.log(this.queryTODO) - console.log('.....................................................................................................') + + // Verificando el Rango, si existe agrega los cambios sino el this.queryTODO queda igual. + this.queryTODO = this.verifyRange(this.queryTODO); + + /** + * + * si tienen rangos + * this.queryTODO[i].computed_column === 'computed' + * this.queryTODO[i].column_type='text' + * this.queryTODO[i].SQLexpression= "case when `Importe` < 100 then '< 100' + when `Importe` >= 100 and `Importe` <= (1500-1) then '>=100 y <1499' + when `Importe` >= 1500 and `Importe` <= (3858-1) then '>=1500 y <3857' + when `Importe` >= 3858 and `Importe` <= (5000-1) then '>=3858 y <4999' + when `Importe` >= 5000 then '>= 5000' + end + * / */ + + +/** + * // Aqui se manejan las columnas calculadas + if (el.computed_column === 'computed') { + if(el.column_type=='text'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + }else if(el.column_type=='numeric'){ + columns.push(`cast( ${el.SQLexpression} as decimal(32,${el.minimumFractionDigits})) as \`${el.display_name}\``); + }else if(el.column_type=='date'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + }else if(el.column_type=='coordinate'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + } + * + * + */ + const filterTables = this.queryTODO.filters.map(filter => filter.filter_table); @@ -326,12 +359,67 @@ export abstract class QueryBuilderService { console.log('........................................FIN..this.query..............................................') console.log(this.query) + console.log('this.queryTODO: ',this.queryTODO); console.log('.....................................................................................................') + // this.query = this.applyRange(this.query, this.queryTODO); + return this.query; } } + public verifyRange(queryTODO: any){ + let columnRange = queryTODO.fields.find( c => c.ranges.length!==0); + + if(columnRange===undefined) { + console.log('RANGEEEEEEEEEEEEEEEEE: ', columnRange); + return queryTODO; + } else { + console.log('RANGEEEEEEEEEEEEEEEEE: ', columnRange.ranges); + columnRange.computed_column = 'computed'; + columnRange.column_type = 'text'; + + let columna = `${columnRange.table_id}.${columnRange.column_name}` + + let SQLexpression = "CASE\n"; + + // Primer caso: menor que el primer valor del rango + SQLexpression += `\tWHEN ${columna} < ${columnRange.ranges[0]} THEN '< ${columnRange.ranges[0]}'\n`; + + // Casos intermedios: entre cada par de valores en el rango + for (let i = 0; i < columnRange.ranges.length - 1; i++) { + const lower = columnRange.ranges[i]; + const upper = columnRange.ranges[i + 1] - 1; + SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} y <${upper}'\n`; + } + + // Último caso: mayor o igual al último valor del rango + SQLexpression += `\tWHEN ${columna} >= ${columnRange.ranges[columnRange.ranges.length - 1]} THEN '>= ${columnRange.ranges[columnRange.ranges.length - 1]}'\n`; + SQLexpression += "END"; + + columnRange.SQLexpression = SQLexpression; + + return queryTODO + } + + } + +/** + * // Aqui se manejan las columnas calculadas + if (el.computed_column === 'computed') { + if(el.column_type=='text'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + }else if(el.column_type=='numeric'){ + columns.push(`cast( ${el.SQLexpression} as decimal(32,${el.minimumFractionDigits})) as \`${el.display_name}\``); + }else if(el.column_type=='date'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + }else if(el.column_type=='coordinate'){ + columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); + } + * + * + */ + public buildGraph() { const graph = []; //No fa falta treure les relacions ocultes per que les poso al array no_relations en guardar-ho diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 1d35dc885..d716ad09d 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -327,7 +327,7 @@
Suma acumulativa
- +

Formato

@@ -335,9 +335,16 @@

Formato

-
Rangos:
+
+
Rangos:
+ + + + +
- Rangos: • Rango:
-
+
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index daf811507..30f226d21 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -64,6 +64,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public selectedRange: string = ''; public showRange: boolean = false; public allowedAggregations: boolean = true; + public ptooltipViewTextRanges: string = $localize`:@@ptooltipViewTextRanges:Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 `; + constructor( private dashboardService: DashboardService, @@ -670,6 +672,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { // Encuentra la columna de turno y agrega el rango const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); + addAggr.column_type = 'text'; addAggr.ranges = this.ranges; } else { @@ -684,6 +687,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.showRange=false; this.allowedAggregations = true; const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); + addAggr.column_type = 'numeric'; addAggr.ranges = []; console.log('selectedRange remove: ',this.selectedRange) @@ -726,6 +730,11 @@ export class ColumnDialogComponent extends EdaDialogAbstract { console.log('this.aggregationsTypes - verifyRange', this.aggregationsTypes); } + getTextRanges($event) { + console.log('holaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') + + } + contieneLetra(rangeString: string){ const regexNumber = /^[0-9]/; diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index 3c6ed7694..5e4451e8b 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4315,6 +4315,10 @@ El año pasado, completo L'any passat, complet + + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 + diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 6e2aa6dbb..71e80cacc 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4289,6 +4289,10 @@ El año pasado, completo Last year, complete + + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 + diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index c35488092..c90e5e98b 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4318,6 +4318,10 @@ El año pasado, completo El año pasado, completo + + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index 26efcf03e..4a059ed28 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4319,6 +4319,10 @@ El año pasado, completo El año pasado, completo + + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 + diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index 3531d2939..d043a16a7 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3945,6 +3945,10 @@ Login El año pasado, completo W zeszłym roku, kompletne + + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Podczas konfigurowania zakresu agregacje zostaną zablokowane. Przykład prawidłowego zakresu - 12:18:50:100 + From d65cb7492fa70815fb0760f8499728ab68052019 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 8 Nov 2024 10:28:47 +0100 Subject: [PATCH 14/47] =?UTF-8?q?Correcci=C3=B3n=20de=20la=20generaci?= =?UTF-8?q?=C3=B3n=20del=20query=20en=20el=20Backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query-builder/query-builder.service.ts | 63 +++++++++++-------- .../column-dialog.component.html | 2 +- 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index da21a59c5..f46d37fca 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -369,39 +369,50 @@ export abstract class QueryBuilderService { } public verifyRange(queryTODO: any){ - let columnRange = queryTODO.fields.find( c => c.ranges.length!==0); + // let columnRange = queryTODO.fields.find( c => c.ranges.length!==0); - if(columnRange===undefined) { - console.log('RANGEEEEEEEEEEEEEEEEE: ', columnRange); - return queryTODO; - } else { - console.log('RANGEEEEEEEEEEEEEEEEE: ', columnRange.ranges); - columnRange.computed_column = 'computed'; - columnRange.column_type = 'text'; + queryTODO.fields.forEach( (fieldsColumn:any, j: number) => { + + if(fieldsColumn.ranges===undefined) { + + queryTODO.fields[j]=fieldsColumn; + } else { - let columna = `${columnRange.table_id}.${columnRange.column_name}` + if(fieldsColumn.ranges.length===0){ + queryTODO.fields[j]=fieldsColumn; + } else { - let SQLexpression = "CASE\n"; + fieldsColumn.computed_column = 'computed'; + fieldsColumn.column_type = 'text'; - // Primer caso: menor que el primer valor del rango - SQLexpression += `\tWHEN ${columna} < ${columnRange.ranges[0]} THEN '< ${columnRange.ranges[0]}'\n`; - - // Casos intermedios: entre cada par de valores en el rango - for (let i = 0; i < columnRange.ranges.length - 1; i++) { - const lower = columnRange.ranges[i]; - const upper = columnRange.ranges[i + 1] - 1; - SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} y <${upper}'\n`; - } - - // Último caso: mayor o igual al último valor del rango - SQLexpression += `\tWHEN ${columna} >= ${columnRange.ranges[columnRange.ranges.length - 1]} THEN '>= ${columnRange.ranges[columnRange.ranges.length - 1]}'\n`; - SQLexpression += "END"; + let columna = `${fieldsColumn.table_id}.${fieldsColumn.column_name}` + + let SQLexpression = "CASE\n"; + + // Primer caso: menor que el primer valor del rango + SQLexpression += `\tWHEN ${columna} < ${fieldsColumn.ranges[0]} THEN '< ${fieldsColumn.ranges[0]}'\n`; + + // Casos intermedios: entre cada par de valores en el rango + for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { + const lower = fieldsColumn.ranges[i]; + const upper = fieldsColumn.ranges[i + 1] - 1; + SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} y <${upper}'\n`; + } + + // Último caso: mayor o igual al último valor del rango + SQLexpression += `\tWHEN ${columna} >= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]} THEN '>= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]}'\n`; + SQLexpression += "END"; + + fieldsColumn.SQLexpression = SQLexpression; + + queryTODO[j] = fieldsColumn; + } - columnRange.SQLexpression = SQLexpression; + } - return queryTODO - } + }) + return queryTODO } /** diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index d716ad09d..3c3cb5b87 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -339,7 +339,7 @@

Formato

Rangos:
From 499e6edb6c9a62b28b52bb9916a9173d12ef8140 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 8 Nov 2024 12:07:30 +0100 Subject: [PATCH 15/47] =?UTF-8?q?Backend=20funcional=20y=20limpieza=20de?= =?UTF-8?q?=20c=C3=B3digo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qb-systems/mySql-builder.service.ts | 8 --- .../query-builder/query-builder.service.ts | 61 ------------------- .../column-dialog/column-dialog.component.ts | 22 ------- .../eda-blank-panel.component.ts | 5 ++ .../panel-utils/panel-interaction-utils.ts | 9 ++- 5 files changed, 12 insertions(+), 93 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index 265adc7f4..332184557 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -14,14 +14,6 @@ export class MySqlBuilderService extends QueryBuilderService { let o = tables.filter(table => table.name === origin).map(table => { return table.query ? table.query : table.name })[0]; let myQuery = `SELECT ${columns.join(', ')} \nFROM ${o}`; - - - - - -console.log(columns); - - /** SI ES UN SELECT PARA UN SELECTOR VOLDRÉ VALORS ÚNICS */ if (forSelector === true) { myQuery = `SELECT DISTINCT ${columns.join(', ')} \nFROM ${o}`; diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index f46d37fca..99485bac5 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -62,8 +62,6 @@ export abstract class QueryBuilderService { /** joins per els value list */ let valueListJoins = []; - //console.log(this.queryTODO); - if (!this.queryTODO.queryMode || this.queryTODO.queryMode == 'EDA') { /** Reviso si cap columna de la consulta es un multivalueliest..... */ this.queryTODO.fields.forEach( e=>{ @@ -114,44 +112,8 @@ export abstract class QueryBuilderService { /** ..........................PER ELS VALUE LISTS................................ */ - console.log('.......................................MITAD..queryTODO..............................................') - console.log(this.queryTODO) - // Verificando el Rango, si existe agrega los cambios sino el this.queryTODO queda igual. this.queryTODO = this.verifyRange(this.queryTODO); - - /** - * - * si tienen rangos - * this.queryTODO[i].computed_column === 'computed' - * this.queryTODO[i].column_type='text' - * this.queryTODO[i].SQLexpression= "case when `Importe` < 100 then '< 100' - when `Importe` >= 100 and `Importe` <= (1500-1) then '>=100 y <1499' - when `Importe` >= 1500 and `Importe` <= (3858-1) then '>=1500 y <3857' - when `Importe` >= 3858 and `Importe` <= (5000-1) then '>=3858 y <4999' - when `Importe` >= 5000 then '>= 5000' - end - * / */ - - -/** - * // Aqui se manejan las columnas calculadas - if (el.computed_column === 'computed') { - if(el.column_type=='text'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - }else if(el.column_type=='numeric'){ - columns.push(`cast( ${el.SQLexpression} as decimal(32,${el.minimumFractionDigits})) as \`${el.display_name}\``); - }else if(el.column_type=='date'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - }else if(el.column_type=='coordinate'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - } - * - * - */ - - - const filterTables = this.queryTODO.filters.map(filter => filter.filter_table); // Afegim a dest les taules dels filtres @@ -356,13 +318,6 @@ export abstract class QueryBuilderService { this.query = this.normalQuery(columns, origin, dest, joinTree, grouping, filters, havingFilters, tables, this.queryTODO.queryLimit, this.queryTODO.joinType, valueListJoins, this.dataModel.ds.connection.schema, this.dataModel.ds.connection.database, this.queryTODO.forSelector); - - console.log('........................................FIN..this.query..............................................') - console.log(this.query) - console.log('this.queryTODO: ',this.queryTODO); - console.log('.....................................................................................................') - - // this.query = this.applyRange(this.query, this.queryTODO); return this.query; } @@ -415,22 +370,6 @@ export abstract class QueryBuilderService { return queryTODO } -/** - * // Aqui se manejan las columnas calculadas - if (el.computed_column === 'computed') { - if(el.column_type=='text'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - }else if(el.column_type=='numeric'){ - columns.push(`cast( ${el.SQLexpression} as decimal(32,${el.minimumFractionDigits})) as \`${el.display_name}\``); - }else if(el.column_type=='date'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - }else if(el.column_type=='coordinate'){ - columns.push(` ${el.SQLexpression} as \`${el.display_name}\``); - } - * - * - */ - public buildGraph() { const graph = []; //No fa falta treure les relacions ocultes per que les poso al array no_relations en guardar-ho diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 30f226d21..63116b52c 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -88,10 +88,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } onShow(): void { - console.log('column-dialog.component.ts'); - console.log('this.controller.params: ', this.controller.params); - // console.log('this.selectedColumn: ', this.selectedColumn); - this.selectedColumn = this.controller.params.selectedColumn; const allowed = []; const title = this.selectedColumn.display_name.default; @@ -100,10 +96,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.carregarValidacions(); this.verifyRange(); - // debugger; - // console.log('this.selectedColumn', this.selectedColumn); - // console.log('this.aggregationsTypes', this.aggregationsTypes); - // debugger; const columnType = this.selectedColumn.column_type; @@ -658,9 +650,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } } - console.log('RANGE =>',ranges) this.ranges = ranges - this.showRange = true; this.selectedRange = this.generarStringRango(this.ranges); // extraemos el rango seleccionado this.rangeString = ''; @@ -689,8 +679,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); addAggr.column_type = 'numeric'; addAggr.ranges = []; - - console.log('selectedRange remove: ',this.selectedRange) } generarStringRango(rango: number[]): string { @@ -715,8 +703,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { if(this.selectedColumn.ranges !== undefined){ if(this.selectedColumn.ranges.length !==0){ - console.log('Es diferente de indefinido') - this.allowedAggregations = false; this.showRange = true; this.ranges = this.selectedColumn.ranges; @@ -725,14 +711,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } else { console.log('Es indefinido') } - - console.log('this.selectedColumn - verifyRange', this.selectedColumn); - console.log('this.aggregationsTypes - verifyRange', this.aggregationsTypes); - } - - getTextRanges($event) { - console.log('holaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') - } contieneLetra(rangeString: string){ diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.ts index 7813ff622..99235df26 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.ts @@ -436,6 +436,7 @@ export class EdaBlankPanelComponent implements OnInit { */ public buildGlobalconfiguration(panelContent: any) { + const modeSQL = panelContent.query.query.modeSQL; const queryMode = this.selectedQueryMode; /*SDA CUSTOM*/ this.showHiddenColumn = true; @@ -447,11 +448,13 @@ export class EdaBlankPanelComponent implements OnInit { this.rootTable = this.tables.find((t) => t.table_name == this.rootTable); // Assert Relation Tables const currentQuery = panelContent.query.query.fields; + for (const column of currentQuery) { PanelInteractionUtils.assertTable(this, column); } PanelInteractionUtils.handleCurrentQuery2(this); + this.reloadTablesData(); PanelInteractionUtils.loadTableNodes(this); this.userSelectedTable = undefined; @@ -469,6 +472,7 @@ export class EdaBlankPanelComponent implements OnInit { } } + this.queryLimit = panelContent.query.query.queryLimit; PanelInteractionUtils.handleFilters(this, panelContent.query.query); PanelInteractionUtils.handleFilterColumns(this, panelContent.query.query.filters, panelContent.query.query.fields); @@ -488,6 +492,7 @@ export class EdaBlankPanelComponent implements OnInit { * Updates panel content with actual state */ public savePanel() { + this.panel.title = this.pdialog.getTitle(); if (this.panel?.content) { diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-utils/panel-interaction-utils.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-utils/panel-interaction-utils.ts index 2d134e1ec..578bab199 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-utils/panel-interaction-utils.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-utils/panel-interaction-utils.ts @@ -357,7 +357,6 @@ export const PanelInteractionUtils = { c.column_name === contentColumn.column_name // && c.display_name.default === contentColumn.display_name ); - // console.log('assertColumn', contentColumn, column); if (!column && contentColumn) { if(columns.length > 0) { column = ebp.currentQuery.find((c: Column) => @@ -396,11 +395,17 @@ export const PanelInteractionUtils = { handleColumn.joins = contentColumn.joins || []; handleColumn.ordenation_type = contentColumn.ordenation_type; handleColumn.autorelation = contentColumn.autorelation || false; + handleColumn.ranges = contentColumn.ranges; + + // Si posee Rango el column_type debe ser de tipo 'text' + if(handleColumn.ranges.length!==0){ + handleColumn.column_type = 'text' + } const existsAgg = handleColumn.aggregation_type.find((agg) => agg.value === contentColumn.aggregation_type); if (existsAgg) existsAgg.selected = true; - if (handleColumn.column_type === 'text' && ![null, 'none'].includes(contentColumn.aggregation_type)) { + if (handleColumn.column_type === 'text' && ![null, 'none'].includes(contentColumn.aggregation_type)) { handleColumn.column_type = 'numeric'; handleColumn.old_column_type = 'text'; } From 5bc7a1deab62ee90147420315e4e9dc8347b3a08 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 8 Nov 2024 13:02:56 +0100 Subject: [PATCH 16/47] issue en los rangos, resuelto --- .../column-dialog/column-dialog.component.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 63116b52c..61a415857 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -645,7 +645,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { // Verificar si el número actual es menor o igual al anterior if (ranges[i] >= ranges[i + 1]) { this.ranges=[]; - console.log('HAY UN ERRORRRRRRR') + // console.log('El correcto orden de los límites del rango van de menor a mayor') + this.alertService.addError('El correcto orden de los límites del rango van de menor a mayor'); return; } } @@ -666,7 +667,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { addAggr.ranges = this.ranges; } else { - console.log('HAY UN ERRORRRRRRR, el ultimo caracter debe ser un número') + // console.log('El último caracter del rango debe ser un número') + this.alertService.addError('El último caracter del rango debe ser un número'); return; } @@ -678,6 +680,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.allowedAggregations = true; const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); addAggr.column_type = 'numeric'; + this.selectedColumn.column_type = 'numeric'; addAggr.ranges = []; } @@ -708,8 +711,6 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.ranges = this.selectedColumn.ranges; this.selectedRange = this.generarStringRango(this.ranges); } - } else { - console.log('Es indefinido') } } From 0487ba65411ada7dbcc1aef9b5b1fbd32b0eefaa Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 8 Nov 2024 15:35:44 +0100 Subject: [PATCH 17/47] =?UTF-8?q?Internacionalizaci=C3=B3n=20de=20la=20pri?= =?UTF-8?q?mera=20versi=C3=B3n=20de=20rangos=20terminada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog.component.html | 4 ++-- .../column-dialog/column-dialog.component.ts | 2 ++ eda/eda_app/src/locale/messages.ca.xlf | 20 +++++++++++++++++++ eda/eda_app/src/locale/messages.en.xlf | 20 +++++++++++++++++++ eda/eda_app/src/locale/messages.es.xlf | 20 +++++++++++++++++++ eda/eda_app/src/locale/messages.gl.xlf | 20 +++++++++++++++++++ eda/eda_app/src/locale/messages.pl.xlf | 20 +++++++++++++++++++ 7 files changed, 104 insertions(+), 2 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 3c3cb5b87..644888d55 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -336,7 +336,7 @@

Formato

-
Rangos:
+
Rangos:
Rangos: - + • Rango: diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 61a415857..e912c5b76 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -65,6 +65,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public showRange: boolean = false; public allowedAggregations: boolean = true; public ptooltipViewTextRanges: string = $localize`:@@ptooltipViewTextRanges:Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 `; + public rangeDescriptionNumberError: string = $localize`:@@rangeDescriptionNumberError:El correcto orden de los límites del rango van de menor a mayor`; + public rangeDescriptionCharacterError: string = $localize`:@@rangeDescriptionCharacterError:El último caracter del rango debe ser un número`; constructor( diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index 5e4451e8b..6fd8c4fe4 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4319,6 +4319,26 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 + + Rangos: + Rangs: + + + Añadir Rango + Afegeix Rang + + + Rango + Rang + + + El correcto orden de los límites del rango van de menor a mayor + El correcte ordre dels límits del rang van de menor a més gran + + + El último caracter del rango debe ser un número + El darrer caràcter del rang ha de ser un número + diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 71e80cacc..40f84ad9d 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4293,6 +4293,26 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 + + Rangos: + Ranks: + + + Añadir Rango + Add Rank + + + Rango + Range + + + El correcto orden de los límites del rango van de menor a mayor + The correct order of the range limits is from smallest to largest + + + El último caracter del rango debe ser un número + The last character of the range must be a number + diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index c90e5e98b..02282870b 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4322,6 +4322,26 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + + Rangos: + Rangos: + + + Añadir Rango + Añadir Rango + + + Rango + Rango + + + El correcto orden de los límites del rango van de menor a mayor + El correcto orden de los límites del rango van de menor a mayor + + + El último caracter del rango debe ser un número + El último caracter del rango debe ser un número + diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index 4a059ed28..cf3e6fd50 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4323,6 +4323,26 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 + + Rangos: + Rangos: + + + Añadir Rango + Engadir Rango + + + Rango + Rango + + + El correcto orden de los límites del rango van de menor a mayor + A orde correcta dos límites do intervalo é de menor a maior + + + El último caracter del rango debe ser un número + O último carácter do intervalo debe ser un número + diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index d043a16a7..f55d46097 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3949,6 +3949,26 @@ Login Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 Podczas konfigurowania zakresu agregacje zostaną zablokowane. Przykład prawidłowego zakresu - 12:18:50:100 + + Rangos: + Szeregi: + + + Añadir Rango + Dodaj rangę + + + Rango + zakres + + + El correcto orden de los límites del rango van de menor a mayor + Prawidłowa kolejność granic zakresu jest następująca od najmniejszej do największej + + + El último caracter del rango debe ser un número + Ostatni znak zakresu musi być liczbą + From e50ea0ab67fb69f2b3e67ed1e077bb9e91a5de29 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Mon, 18 Nov 2024 13:59:49 +0100 Subject: [PATCH 18/47] =?UTF-8?q?Ajustes=20de=20los=20rangos,=20acordados?= =?UTF-8?q?=20en=20la=20reuni=C3=B3n=20con=20SinergiaDA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eda/eda_api/lib/services/query-builder/query-builder.service.ts | 2 +- .../eda-blank-panel/column-dialog/column-dialog.component.html | 2 +- .../eda-blank-panel/column-dialog/column-dialog.component.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 99485bac5..b4b3fca9c 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -351,7 +351,7 @@ export abstract class QueryBuilderService { for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { const lower = fieldsColumn.ranges[i]; const upper = fieldsColumn.ranges[i + 1] - 1; - SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} y <${upper}'\n`; + SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} - <${upper}'\n`; } // Último caso: mayor o igual al último valor del rango diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 644888d55..3e90d64cb 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -361,7 +361,7 @@
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index e912c5b76..1be92879e 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -683,6 +683,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { const addAggr = this.findColumn(this.selectedColumn, this.controller.params.currentQuery); addAggr.column_type = 'numeric'; this.selectedColumn.column_type = 'numeric'; + this.rangeString = this.ranges.join(':'); addAggr.ranges = []; } From 0fe86b7cbe40b655863dedde4479af57ae6b4d1b Mon Sep 17 00:00:00 2001 From: Juanjo Date: Tue, 19 Nov 2024 17:16:32 +0100 Subject: [PATCH 19/47] formato --- eda/eda_api/lib/services/query-builder/query-builder.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index b4b3fca9c..a58fa7483 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -351,7 +351,7 @@ export abstract class QueryBuilderService { for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { const lower = fieldsColumn.ranges[i]; const upper = fieldsColumn.ranges[i + 1] - 1; - SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} - <${upper}'\n`; + SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} - < ${upper}'\n`; } // Último caso: mayor o igual al último valor del rango From 4a43b4abef0119a0f00f32b19626ae3a310e9176 Mon Sep 17 00:00:00 2001 From: Juanjo Date: Mon, 16 Dec 2024 19:47:12 +0100 Subject: [PATCH 20/47] Falta revisar la ordenacion --- .../services/query-builder/query-builder.service.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index a58fa7483..818889fc8 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -336,6 +336,14 @@ export abstract class QueryBuilderService { if(fieldsColumn.ranges.length===0){ queryTODO.fields[j]=fieldsColumn; } else { + console.log(this.queryTODO); + console.log('Ronald. Aqui también tienes que gesnerar la ordenacion ascendente o descendente \ + CASE WHEN sda_stic_payment_commitments.amount < 100 THEN 1 \ + WHEN sda_stic_payment_commitments.amount >= 100 AND sda_stic_payment_commitments.amount <= 199 THEN 2 \ + WHEN sda_stic_payment_commitments.amount >= 200 AND sda_stic_payment_commitments.amount <= 999 THEN 3 \ + WHEN sda_stic_payment_commitments.amount >= 1000 AND sda_stic_payment_commitments.amount <= 9999 THEN 4 \ + WHEN sda_stic_payment_commitments.amount >= 10000 THEN 5 end \ + '); fieldsColumn.computed_column = 'computed'; fieldsColumn.column_type = 'text'; @@ -351,7 +359,7 @@ export abstract class QueryBuilderService { for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { const lower = fieldsColumn.ranges[i]; const upper = fieldsColumn.ranges[i + 1] - 1; - SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN '>= ${lower} - < ${upper}'\n`; + SQLexpression += `\tWHEN ${columna} >= ${lower} AND ${columna} <= ${upper} THEN ' ${lower} - ${upper}'\n`; } // Último caso: mayor o igual al último valor del rango From e259fac8cf0b6ba514b5025aeed38c4947fea09f Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 19 Dec 2024 10:34:03 +0100 Subject: [PATCH 21/47] =?UTF-8?q?Genaraci=C3=B3n=20del=20rangesOrderExpres?= =?UTF-8?q?sion=20para=20el=20ordenamiento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query-builder/query-builder.service.ts | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 818889fc8..8a028b11b 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -367,7 +367,30 @@ export abstract class QueryBuilderService { SQLexpression += "END"; fieldsColumn.SQLexpression = SQLexpression; - + + // GENERANDO LA ORDENACIÓN + let rangesOrderExpression = `ORDER BY CASE\n`; + let rangesOrderExpressionNumber = 1; + + // Primer caso: + rangesOrderExpression += `\tWHEN ${columna} < ${fieldsColumn.ranges[0]} THEN ${rangesOrderExpressionNumber}\n`; + + // Casos intermedios: + for(let i = 0; i= ${lower} AND ${columna} <= ${upper} THEN ${rangesOrderExpressionNumber}\n`; + } + + // Ultimo caso: + rangesOrderExpression += `\tWHEN ${columna} >= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]} THEN ${rangesOrderExpressionNumber + 1}\n`; + rangesOrderExpression += "END"; + fieldsColumn.rangesOrderExpression = rangesOrderExpression; + + console.log('fieldsColumn: ',fieldsColumn); + console.log('rangesOrderExpression: ',rangesOrderExpression); + queryTODO[j] = fieldsColumn; } @@ -375,6 +398,8 @@ export abstract class QueryBuilderService { }) + console.log('queryTODO:>>>>>>>>> ', queryTODO) + return queryTODO } From 8eeb8e262b963ad0ba8ba8645c35d09f6f742ca6 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 19 Dec 2024 10:59:56 +0100 Subject: [PATCH 22/47] Ordenamiento listo --- .../qb-systems/mySql-builder.service.ts | 4 ++++ .../query-builder/query-builder.service.ts | 16 +--------------- 2 files changed, 5 insertions(+), 15 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index 332184557..e06170ba6 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -59,11 +59,15 @@ export class MySqlBuilderService extends QueryBuilderService { } else { out = false; } + if( col.rangesOrderExpression && col.rangesOrderExpression != undefined){ + out = `${col.rangesOrderExpression} ${col.ordenation_type}` + } return out; }).filter(e => e !== false); const order_columns_string = orderColumns.join(','); + if (order_columns_string.length > 0) { myQuery = `${myQuery}\norder by ${order_columns_string}`; } else if (forSelector === true) { diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 8a028b11b..b28664963 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -336,14 +336,6 @@ export abstract class QueryBuilderService { if(fieldsColumn.ranges.length===0){ queryTODO.fields[j]=fieldsColumn; } else { - console.log(this.queryTODO); - console.log('Ronald. Aqui también tienes que gesnerar la ordenacion ascendente o descendente \ - CASE WHEN sda_stic_payment_commitments.amount < 100 THEN 1 \ - WHEN sda_stic_payment_commitments.amount >= 100 AND sda_stic_payment_commitments.amount <= 199 THEN 2 \ - WHEN sda_stic_payment_commitments.amount >= 200 AND sda_stic_payment_commitments.amount <= 999 THEN 3 \ - WHEN sda_stic_payment_commitments.amount >= 1000 AND sda_stic_payment_commitments.amount <= 9999 THEN 4 \ - WHEN sda_stic_payment_commitments.amount >= 10000 THEN 5 end \ - '); fieldsColumn.computed_column = 'computed'; fieldsColumn.column_type = 'text'; @@ -369,7 +361,7 @@ export abstract class QueryBuilderService { fieldsColumn.SQLexpression = SQLexpression; // GENERANDO LA ORDENACIÓN - let rangesOrderExpression = `ORDER BY CASE\n`; + let rangesOrderExpression = "CASE\n"; let rangesOrderExpressionNumber = 1; // Primer caso: @@ -388,9 +380,6 @@ export abstract class QueryBuilderService { rangesOrderExpression += "END"; fieldsColumn.rangesOrderExpression = rangesOrderExpression; - console.log('fieldsColumn: ',fieldsColumn); - console.log('rangesOrderExpression: ',rangesOrderExpression); - queryTODO[j] = fieldsColumn; } @@ -398,8 +387,6 @@ export abstract class QueryBuilderService { }) - console.log('queryTODO:>>>>>>>>> ', queryTODO) - return queryTODO } @@ -576,7 +563,6 @@ export abstract class QueryBuilderService { } - /** esto se usa para las consultas que hacemos a bbdd para generar el modelo */ public simpleQuery(columns: string[], origin: string) { From 534fc3af8649ec49b4df1c98e87ed9d8c867a9bb Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 20 Dec 2024 10:12:14 +0100 Subject: [PATCH 23/47] Ajuste de ordenation_type = No --- .../query-builder/qb-systems/mySql-builder.service.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index e06170ba6..bf470bd01 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -54,12 +54,14 @@ export class MySqlBuilderService extends QueryBuilderService { const orderColumns = this.queryTODO.fields.map(col => { let out; + console.log('EL col >>>>>> ',col) + if (col.ordenation_type !== 'No' && col.ordenation_type !== undefined) { out = `\`${col.display_name}\` ${col.ordenation_type}` } else { out = false; } - if( col.rangesOrderExpression && col.rangesOrderExpression != undefined){ + if( col.rangesOrderExpression && col.rangesOrderExpression != undefined && col.ordenation_type !== 'No'){ out = `${col.rangesOrderExpression} ${col.ordenation_type}` } From 38b6944aa33915358a0a6799af6a5a81790eebe2 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Mon, 30 Dec 2024 11:13:23 +0100 Subject: [PATCH 24/47] =?UTF-8?q?Agregaci=C3=B3n=20de=20n=C3=BAmeros=20neg?= =?UTF-8?q?ativos=20y=20correcciones=20de=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../column-dialog.component.html | 18 ++++++--------- .../column-dialog/column-dialog.component.ts | 22 ++++++++----------- eda/eda_app/src/locale/messages.ca.xlf | 2 +- eda/eda_app/src/locale/messages.en.xlf | 2 +- eda/eda_app/src/locale/messages.es.xlf | 2 +- eda/eda_app/src/locale/messages.gl.xlf | 2 +- eda/eda_app/src/locale/messages.pl.xlf | 2 +- 7 files changed, 21 insertions(+), 29 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 3e90d64cb..d878d9986 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -345,23 +345,19 @@
- - +
diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 1be92879e..ce4b546ab 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -64,7 +64,7 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public selectedRange: string = ''; public showRange: boolean = false; public allowedAggregations: boolean = true; - public ptooltipViewTextRanges: string = $localize`:@@ptooltipViewTextRanges:Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 `; + public ptooltipViewTextRanges: string = $localize`:@@ptooltipViewTextRanges:Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 `; public rangeDescriptionNumberError: string = $localize`:@@rangeDescriptionNumberError:El correcto orden de los límites del rango van de menor a mayor`; public rangeDescriptionCharacterError: string = $localize`:@@rangeDescriptionCharacterError:El último caracter del rango debe ser un número`; @@ -717,17 +717,13 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } } - contieneLetra(rangeString: string){ - - const regexNumber = /^[0-9]/; - // const regexLetrasEspacio = /[a-zA-Z\s]/; - - if(regexNumber.test(rangeString[0])){ - // return regexLetrasEspacio.test(rangeString); - } - else { - return !regexNumber.test(rangeString[0]) - } - + validateInput(event: Event): void { + const inputElement = event.target as HTMLInputElement; + const validCharacters = /[1234567890.,:-]*/g; + inputElement.value = inputElement.value.match(validCharacters)?.join('') || ''; + // Si el input inicia con (. , :) no se habilitara el botón del rango ni se agregará el signo en el input. Se debe empezar con un número o con un signo (-) y un número para los negativos. + if(inputElement.value=== '.' || inputElement.value===',' || inputElement.value===':') inputElement.value = ''; + this.rangeString = inputElement.value; // Se actualiza ngModel } + } diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index 6fd8c4fe4..e84fb54a7 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4316,7 +4316,7 @@ L'any passat, complet - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 40f84ad9d..710850062 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4290,7 +4290,7 @@ Last year, complete - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index 02282870b..d6de4bffd 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4319,7 +4319,7 @@ El año pasado, completo - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index cf3e6fd50..ca89b29fe 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4320,7 +4320,7 @@ El año pasado, completo - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index f55d46097..0435bb1b7 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3946,7 +3946,7 @@ Login W zeszłym roku, kompletne - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Podczas konfigurowania zakresu agregacje zostaną zablokowane. Przykład prawidłowego zakresu - 12:18:50:100 From 4c3e5981501ae9dffec7efc3b7d2e85d7ebc915c Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Mon, 30 Dec 2024 17:44:07 +0100 Subject: [PATCH 25/47] =?UTF-8?q?Identificaci=C3=B3n=20de=20valores=20del?= =?UTF-8?q?=20rango?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../panel-charts/panel-chart.component.ts | 14 +++++++++++++- .../eda-table/eda-columns/eda-column-text.ts | 3 +++ .../components/eda-table/eda-table.component.css | 6 +++++- .../components/eda-table/eda-table.component.html | 7 ++++++- .../components/eda-table/eda-table.component.ts | 11 +++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts index ed875499a..747e4c41d 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts @@ -701,6 +701,8 @@ export class PanelChartComponent implements OnInit, OnChanges, OnDestroy { const label = this.props.data.labels[i]; const r: Column = this.props.query[i]; + console.log('r: ', r); + if (_.isEqual(r.column_type, 'date')) { tableColumns.push(new EdaColumnDate({ header: r.display_name.default, field: label, description: r.description.default })); @@ -708,7 +710,17 @@ export class PanelChartComponent implements OnInit, OnChanges, OnDestroy { tableColumns.push(new EdaColumnNumber({ header: r.display_name.default, field: label, description: r.description.default , decimals: r.minimumFractionDigits})) } else if (_.isEqual(r.column_type, 'text')) { - tableColumns.push(new EdaColumnText({ header: r.display_name.default, field: label, description: r.description.default })); + let rangeOption = false; + if(r.ranges === undefined) { + tableColumns.push(new EdaColumnText({ header: r.display_name.default, field: label, description: r.description.default })); + } else { + if(r.ranges.length > 0) { + rangeOption = true; + tableColumns.push(new EdaColumnText({ header: r.display_name.default, field: label, description: r.description.default, rangeOption: rangeOption })); + } else { + tableColumns.push(new EdaColumnText({ header: r.display_name.default, field: label, description: r.description.default, rangeOption: rangeOption })); + } + } } else if (_.isEqual(r.column_type, 'coordinate')) { tableColumns.push(new EdaColumnNumber({ header: r.display_name.default, field: label, description: r.description.default })); } diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts b/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts index 95b3eef88..e369ad641 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts @@ -1,6 +1,9 @@ import { EdaColumn } from './eda-column'; export class EdaColumnText extends EdaColumn { + + rangeOption: boolean; + constructor(init: Partial) { super(); Object.assign(this, init); diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css index e30250ac9..a2c4e07b0 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css @@ -50,4 +50,8 @@ th{ .p-datatable-auto-layout>.p-datatable-wrapper { overflow: hidden; -} \ No newline at end of file +} + +.negative-value { + color: red; +} diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html index 6f83e5aae..e066a03c0 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html @@ -59,14 +59,19 @@ +
{{ lodash.get(rowData, col.field) }}
-
+
{{ lodash.get(rowData, col.field) }}
+
+
+ diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts index 12591c785..8f6a54adb 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts @@ -36,6 +36,9 @@ export class EdaTableComponent implements OnInit { }else if(this.inject.styles && this.inject.pivot){ this.applyPivotSyles(this.inject.styles) } + + + console.log('inject: ', this.inject) } @@ -283,5 +286,13 @@ export class EdaTableComponent implements OnInit { return name.replace('%', 'percent').replace(/ /g, '').replace(/[^a-zA-Z0-9-_-\wáéíóúüñÁÉÍÓÚÜÑ ]/g, '').replace('_',''); } + formatValoresRango(rowData: any, colField: string): string { + const valor = _.get(rowData, colField); + + + return valor; + + } + } From 3e4ed8986d400e666fee5546c42c17d6ce43d446 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 31 Dec 2024 13:05:04 +0100 Subject: [PATCH 26/47] Seleccion de valores negativos, exclusivamente para los rangos --- .../eda-table/eda-table.component.css | 3 -- .../eda-table/eda-table.component.ts | 45 ++++++++++++++----- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css index a2c4e07b0..71dddb8c7 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.css @@ -52,6 +52,3 @@ th{ overflow: hidden; } -.negative-value { - color: red; -} diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts index 8f6a54adb..f521031a8 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts @@ -8,6 +8,8 @@ import es from '@angular/common/locales/es'; import * as _ from 'lodash'; import { StyleService } from '@eda/services/service.index'; import { EdaColumnChartOptions } from './eda-columns/eda-column-chart-options'; +import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; + @Component({ selector: 'eda-table', @@ -25,7 +27,7 @@ export class EdaTableComponent implements OnInit { public colors = {}; public styles = {}; - constructor(private elementRef: ElementRef, private styleService: StyleService) { + constructor(private elementRef: ElementRef, private styleService: StyleService, private sanitizer: DomSanitizer) { registerLocaleData(es); /** Definim les caracteristiques del gràfic dintre de la taula.......................... */ this.chartOptions = EdaColumnChartOptions; @@ -36,9 +38,6 @@ export class EdaTableComponent implements OnInit { }else if(this.inject.styles && this.inject.pivot){ this.applyPivotSyles(this.inject.styles) } - - - console.log('inject: ', this.inject) } @@ -111,7 +110,6 @@ export class EdaTableComponent implements OnInit { }); }); - //console.log(limits); //Set ranges fields.forEach(field => { @@ -286,13 +284,40 @@ export class EdaTableComponent implements OnInit { return name.replace('%', 'percent').replace(/ /g, '').replace(/[^a-zA-Z0-9-_-\wáéíóúüñÁÉÍÓÚÜÑ ]/g, '').replace('_',''); } - formatValoresRango(rowData: any, colField: string): string { - const valor = _.get(rowData, colField); - + formatValoresRango(rowData: any, colField: string): SafeHtml { + let valor = _.get(rowData, colField); + let str = ''; - return valor; + const regexNegative = /-\d+/g; + const regexPositive = /(?${valor}`; + } else { + if(negativos.length === 1) { + if(valor.includes('<')) { + valor = negativos[0]; + str = `< ${valor}`; + } + else if(valor.includes('>=')){ + valor = negativos[0]; + str = `>= ${valor}`; + } + else { + valor = negativos[0]; + str = ` ${valor} - ${positivos[0]} `; + } + } + else { + str = ` ${negativos[0]} - ${negativos[1]} `; + } + } + + return this.sanitizer.bypassSecurityTrustHtml(str); + + } } From 77176db56287713838ae53ef3a38a33e50c85bb7 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 31 Dec 2024 13:11:49 +0100 Subject: [PATCH 27/47] Limpieza de codigo y agregado de comentarios --- .../eda-blank-panel/panel-charts/panel-chart.component.ts | 2 -- .../components/eda-table/eda-columns/eda-column-text.ts | 2 +- .../app/module/components/eda-table/eda-table.component.ts | 6 +++--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts index 747e4c41d..bec2917b8 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/panel-charts/panel-chart.component.ts @@ -701,8 +701,6 @@ export class PanelChartComponent implements OnInit, OnChanges, OnDestroy { const label = this.props.data.labels[i]; const r: Column = this.props.query[i]; - console.log('r: ', r); - if (_.isEqual(r.column_type, 'date')) { tableColumns.push(new EdaColumnDate({ header: r.display_name.default, field: label, description: r.description.default })); diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts b/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts index e369ad641..46d19d6d6 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-columns/eda-column-text.ts @@ -2,7 +2,7 @@ import { EdaColumn } from './eda-column'; export class EdaColumnText extends EdaColumn { - rangeOption: boolean; + rangeOption: boolean; // Opción si la cadena es una rango constructor(init: Partial) { super(); diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts index f521031a8..8ab3fe188 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts @@ -300,11 +300,11 @@ export class EdaTableComponent implements OnInit { if(negativos.length === 1) { if(valor.includes('<')) { valor = negativos[0]; - str = `< ${valor}`; + str = `< ${valor}`; } else if(valor.includes('>=')){ valor = negativos[0]; - str = `>= ${valor}`; + str = `>= ${valor}`; } else { valor = negativos[0]; @@ -312,7 +312,7 @@ export class EdaTableComponent implements OnInit { } } else { - str = ` ${negativos[0]} - ${negativos[1]} `; + str = ` ${negativos[0]} - ${negativos[1]} `; } } From 9b65a4a52332b49c0b1d0c519515c2d47684d3f6 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Fri, 10 Jan 2025 16:17:51 +0100 Subject: [PATCH 28/47] =?UTF-8?q?Solo=20se=20mostrara=20el=20rango=20para?= =?UTF-8?q?=20los=20campos=20que=20originalmente=20han=20sido=20un=20valor?= =?UTF-8?q?=20num=C3=A9rico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eda-blank-panel/column-dialog/column-dialog.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index d878d9986..0fefa3a50 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -327,7 +327,7 @@
Suma acumulativa
- +

Formato

From 908674576740cb8962f5642aef1f747db9ca6980 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 14 Jan 2025 12:21:29 +0100 Subject: [PATCH 29/47] Limitar un solo rango por consulta --- .../column-dialog.component.html | 76 +++++++++++-------- .../column-dialog/column-dialog.component.ts | 11 +++ eda/eda_app/src/locale/messages.ca.xlf | 4 + eda/eda_app/src/locale/messages.en.xlf | 4 + eda/eda_app/src/locale/messages.es.xlf | 4 + eda/eda_app/src/locale/messages.gl.xlf | 4 + eda/eda_app/src/locale/messages.pl.xlf | 4 + 7 files changed, 75 insertions(+), 32 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index 0fefa3a50..6f92c2295 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -337,49 +337,61 @@

Formato

Rangos:
- + + + + +
- - +
- - - -
- - - - - - - • Rango: - - -
- -
- -
- +
+ + + + + + +
+ + + + + + + • Rango: + + +
+ +
+ +
+ +
+
+ diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index ce4b546ab..0efe9f858 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -63,8 +63,10 @@ export class ColumnDialogComponent extends EdaDialogAbstract { public rangeString: string; public selectedRange: string = ''; public showRange: boolean = false; + public availableRange: boolean = true; public allowedAggregations: boolean = true; public ptooltipViewTextRanges: string = $localize`:@@ptooltipViewTextRanges:Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 `; + public ptooltipNotAvailableRanges: string = $localize`:@@ptooltipNotAvailableRanges:No es posible crear un rango nuevo por que ya existe uno configurado`; public rangeDescriptionNumberError: string = $localize`:@@rangeDescriptionNumberError:El correcto orden de los límites del rango van de menor a mayor`; public rangeDescriptionCharacterError: string = $localize`:@@rangeDescriptionCharacterError:El último caracter del rango debe ser un número`; @@ -113,6 +115,15 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.filter.types = allowed; } + if(this.controller.params.currentQuery.find( elemento => elemento.ranges.length!==0)) { + if(this.selectedColumn.ranges.length!==0) { + this.availableRange = true; + } else { + this.availableRange = false; + } + } else { + this.availableRange = true; + } } private carregarValidacions(): void { diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index e84fb54a7..c30eb01b3 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4339,6 +4339,10 @@ El último caracter del rango debe ser un número El darrer caràcter del rang ha de ser un número + + No es posible crear un rango nuevo por que ya existe uno configurado + No és possible crear un rang nou perquè existeixi un configurat + diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 710850062..91670eefa 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4313,6 +4313,10 @@ El último caracter del rango debe ser un número The last character of the range must be a number + + No es posible crear un rango nuevo por que ya existe uno configurado + It is not possible to create a new range because a configured one already exists + diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index d6de4bffd..792aaa996 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4342,6 +4342,10 @@ El último caracter del rango debe ser un número El último caracter del rango debe ser un número + + No es posible crear un rango nuevo por que ya existe uno configurado + No es posible crear un rango nuevo por que ya existe uno configurado + diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index ca89b29fe..7f789b32d 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4343,6 +4343,10 @@ El último caracter del rango debe ser un número O último carácter do intervalo debe ser un número + + No es posible crear un rango nuevo por que ya existe uno configurado + Non é posible crear un novo intervalo porque xa existe un configurado. + diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index 0435bb1b7..ea3c0517b 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3969,6 +3969,10 @@ Login El último caracter del rango debe ser un número Ostatni znak zakresu musi być liczbą + + No es posible crear un rango nuevo por que ya existe uno configurado + Nie można utworzyć nowego zakresu, ponieważ jeden już istnieje i jest skonfigurowany. + From 074343d34aee32c95a6f4d805be3d2b39253b5d0 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Tue, 14 Jan 2025 13:03:12 +0100 Subject: [PATCH 30/47] =?UTF-8?q?Se=20a=C3=B1adio=20la=20propiedad=20hasOw?= =?UTF-8?q?nProperty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eda-blank-panel/column-dialog/column-dialog.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 0efe9f858..1cfe0ff8a 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -115,8 +115,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { this.filter.types = allowed; } - if(this.controller.params.currentQuery.find( elemento => elemento.ranges.length!==0)) { - if(this.selectedColumn.ranges.length!==0) { + if(this.controller.params.currentQuery.find( elemento => elemento.hasOwnProperty('ranges') && elemento.ranges.length!==0)) { + if(this.selectedColumn.hasOwnProperty('ranges') && this.selectedColumn.ranges.length!==0) { this.availableRange = true; } else { this.availableRange = false; From 6b29b6c693016758151f74109148e9198afc5d1f Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 15 Jan 2025 17:37:08 +0100 Subject: [PATCH 31/47] Generando la query de ceros y nulos para la query --- .../qb-systems/mySql-builder.service.ts | 4 +- .../query-builder/query-builder.service.ts | 62 +++++++++++++++++++ .../column-dialog/column-dialog.component.ts | 2 + 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index bf470bd01..ef2730bd1 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -54,8 +54,6 @@ export class MySqlBuilderService extends QueryBuilderService { const orderColumns = this.queryTODO.fields.map(col => { let out; - console.log('EL col >>>>>> ',col) - if (col.ordenation_type !== 'No' && col.ordenation_type !== undefined) { out = `\`${col.display_name}\` ${col.ordenation_type}` } else { @@ -68,6 +66,8 @@ export class MySqlBuilderService extends QueryBuilderService { return out; }).filter(e => e !== false); + // console.log('orderColumns:::::::::::::::::::::::::::::::::: ', orderColumns); + const order_columns_string = orderColumns.join(','); if (order_columns_string.length > 0) { diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index b28664963..7cef0524c 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -114,6 +114,7 @@ export abstract class QueryBuilderService { // Verificando el Rango, si existe agrega los cambios sino el this.queryTODO queda igual. this.queryTODO = this.verifyRange(this.queryTODO); + const filterTables = this.queryTODO.filters.map(filter => filter.filter_table); // Afegim a dest les taules dels filtres @@ -326,6 +327,8 @@ export abstract class QueryBuilderService { public verifyRange(queryTODO: any){ // let columnRange = queryTODO.fields.find( c => c.ranges.length!==0); + console.log('queryTODO <-inicio->: ', queryTODO); + queryTODO.fields.forEach( (fieldsColumn:any, j: number) => { if(fieldsColumn.ranges===undefined) { @@ -381,6 +384,65 @@ export abstract class QueryBuilderService { fieldsColumn.rangesOrderExpression = rangesOrderExpression; queryTODO[j] = fieldsColumn; + + // ########################################################################################################################## + // Agregado de ceros y nulos para los campos que tengan agregaciones de: suma, cuenta de valores y valores diferentes + + let withRanges = "WITH ranges AS (\n"; + + withRanges += ` SELECT ' < ${fieldsColumn.ranges[0]}' as \`range\`\n`; + + for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { + withRanges += ` UNION SELECT ' ${fieldsColumn.ranges[i]} - ${fieldsColumn.ranges[i + 1] - 1}'\n`; + } + + withRanges += ` UNION SELECT '>= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]}'\n`; + withRanges += ")\n"; + + let coalesceRanges = `SELECT\n r.range AS \`${fieldsColumn.display_name}\`,\n`; + + let coalesceRangesAux = ''; + queryTODO.fields.forEach( col => { + if(col.ranges.length===0) { + if(col.column_type==='numeric') { + coalesceRangesAux += ` COALESCE(t.\`${col.display_name}\`, 0) AS \`${col.display_name}\`,\n` + } else if(col.column_type==='text') { + coalesceRangesAux += ` COALESCE(t.\`${col.display_name}\`, null) AS \`${col.display_name}\`,\n` + } else { + coalesceRangesAux += ` COALESCE(t.\`${col.display_name}\`, 0) AS \`${col.display_name}\`,\n` // Verificar las fechas + } + } + }) + + coalesceRanges = coalesceRanges + coalesceRangesAux + `FROM ranges r\nLEFT JOIN(`; + withRanges = withRanges + coalesceRanges + fieldsColumn.withRanges = withRanges; // agregando withRanges en field del campo que tiene un rango + // console.log('withRanges::::::::::::::::::::::::::::::::::::: \n') + // console.log(withRanges); + + + + + + let orderRanges = `) t ON r.range = t.\`${fieldsColumn.display_name}\`\nORDER BY\n`; + + orderRanges += ` CASE\n`; + orderRanges += ` WHEN r.range = '< ${fieldsColumn.ranges[0]}' THEN 1\n`; + + + // Generar los casos intermedios + for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { + orderRanges += ` WHEN r.range = ' ${fieldsColumn.ranges[i]} - ${fieldsColumn.ranges[i + 1] - 1}' THEN ${i + 2}\n`; + } + + // Agregar el último caso para valores mayores o iguales al último elemento + orderRanges += ` WHEN r.range = '>= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]}' THEN ${fieldsColumn.ranges.length + 1}\n`; + orderRanges += ` END;`; + + fieldsColumn.orderRanges = orderRanges; + + // console.log('orderRanges: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@', orderRanges); + // console.log('queryTODO <-Fin->: ', queryTODO); } } diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts index 1cfe0ff8a..02262417b 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.ts @@ -124,6 +124,8 @@ export class ColumnDialogComponent extends EdaDialogAbstract { } else { this.availableRange = true; } + + console.log('selectedColum', this.selectedColumn); } private carregarValidacions(): void { From ee8f263e73fa065680e494bf7a97e7200b578810 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 16 Jan 2025 18:04:46 +0100 Subject: [PATCH 32/47] SDA#51 finalizado --- .../qb-systems/mySql-builder.service.ts | 23 ++++++++++++++++--- .../query-builder/query-builder.service.ts | 19 +++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts index ef2730bd1..d26ed1c7c 100644 --- a/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/qb-systems/mySql-builder.service.ts @@ -66,8 +66,6 @@ export class MySqlBuilderService extends QueryBuilderService { return out; }).filter(e => e !== false); - // console.log('orderColumns:::::::::::::::::::::::::::::::::: ', orderColumns); - const order_columns_string = orderColumns.join(','); if (order_columns_string.length > 0) { @@ -83,11 +81,30 @@ export class MySqlBuilderService extends QueryBuilderService { myQuery = myQuery.split(key).join(`\`${alias[key]}\``); } } - + + myQuery = this.queryAddedRange(this.queryTODO.fields, myQuery) return myQuery; }; + public queryAddedRange(fields, myQuery) { + + if(fields.find(field => field.ranges.length!==0)) { + + if(fields.find(field => field.aggregation_type === 'count_distinct' || field.aggregation_type === 'sum' || field.aggregation_type === 'count')) { + const fieldRango = fields.find(field => field.ranges.length!==0) + myQuery = fieldRango.withRanges + myQuery + fieldRango.orderRanges; + return myQuery + } else { + return myQuery + } + + } else { + return myQuery + } + + } + public getFilters(filters): any { if (this.permissions.length > 0) { diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 7cef0524c..6d78a5a73 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -309,7 +309,6 @@ export abstract class QueryBuilderService { } }).filter(f=> ![ 'not_null' , 'not_null_nor_empty' , 'null_or_empty'].includes( f.filter_type)); - if (this.queryTODO.simple) { this.query = this.simpleQuery(columns, origin); return this.query; @@ -327,8 +326,6 @@ export abstract class QueryBuilderService { public verifyRange(queryTODO: any){ // let columnRange = queryTODO.fields.find( c => c.ranges.length!==0); - console.log('queryTODO <-inicio->: ', queryTODO); - queryTODO.fields.forEach( (fieldsColumn:any, j: number) => { if(fieldsColumn.ranges===undefined) { @@ -414,22 +411,20 @@ export abstract class QueryBuilderService { } }) + // Eliminando la ultima coma del salto de linea + const lastCommaIndex = coalesceRangesAux.lastIndexOf(',\n'); + if (lastCommaIndex !== -1) { + coalesceRangesAux = coalesceRangesAux.slice(0, lastCommaIndex) + coalesceRangesAux.slice(lastCommaIndex + 1); + } + coalesceRanges = coalesceRanges + coalesceRangesAux + `FROM ranges r\nLEFT JOIN(`; withRanges = withRanges + coalesceRanges fieldsColumn.withRanges = withRanges; // agregando withRanges en field del campo que tiene un rango - // console.log('withRanges::::::::::::::::::::::::::::::::::::: \n') - // console.log(withRanges); - - - - let orderRanges = `) t ON r.range = t.\`${fieldsColumn.display_name}\`\nORDER BY\n`; - orderRanges += ` CASE\n`; orderRanges += ` WHEN r.range = '< ${fieldsColumn.ranges[0]}' THEN 1\n`; - // Generar los casos intermedios for (let i = 0; i < fieldsColumn.ranges.length - 1; i++) { orderRanges += ` WHEN r.range = ' ${fieldsColumn.ranges[i]} - ${fieldsColumn.ranges[i + 1] - 1}' THEN ${i + 2}\n`; @@ -441,8 +436,6 @@ export abstract class QueryBuilderService { fieldsColumn.orderRanges = orderRanges; - // console.log('orderRanges: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@', orderRanges); - // console.log('queryTODO <-Fin->: ', queryTODO); } } From d61029b444abe85cc77376cec82ce761bf2da000 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 16 Jan 2025 18:12:33 +0100 Subject: [PATCH 33/47] agregado de salto de linea a la query --- .../lib/services/query-builder/query-builder.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 6d78a5a73..0374ad9c3 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -417,11 +417,11 @@ export abstract class QueryBuilderService { coalesceRangesAux = coalesceRangesAux.slice(0, lastCommaIndex) + coalesceRangesAux.slice(lastCommaIndex + 1); } - coalesceRanges = coalesceRanges + coalesceRangesAux + `FROM ranges r\nLEFT JOIN(`; + coalesceRanges = coalesceRanges + coalesceRangesAux + `FROM ranges r\nLEFT JOIN(\n`; withRanges = withRanges + coalesceRanges fieldsColumn.withRanges = withRanges; // agregando withRanges en field del campo que tiene un rango - let orderRanges = `) t ON r.range = t.\`${fieldsColumn.display_name}\`\nORDER BY\n`; + let orderRanges = `\n) t ON r.range = t.\`${fieldsColumn.display_name}\`\nORDER BY\n`; orderRanges += ` CASE\n`; orderRanges += ` WHEN r.range = '< ${fieldsColumn.ranges[0]}' THEN 1\n`; From 9d9b63a21dd548cbc8e8aa3bf4531133e3af6a06 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Mon, 20 Jan 2025 11:33:31 +0100 Subject: [PATCH 34/47] =?UTF-8?q?Verificaci=C3=B3n=20de=20query=20con=20ra?= =?UTF-8?q?ngos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/services/query-builder/query-builder.service.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eda/eda_api/lib/services/query-builder/query-builder.service.ts b/eda/eda_api/lib/services/query-builder/query-builder.service.ts index 0374ad9c3..8a53f4da6 100644 --- a/eda/eda_api/lib/services/query-builder/query-builder.service.ts +++ b/eda/eda_api/lib/services/query-builder/query-builder.service.ts @@ -396,7 +396,7 @@ export abstract class QueryBuilderService { withRanges += ` UNION SELECT '>= ${fieldsColumn.ranges[fieldsColumn.ranges.length - 1]}'\n`; withRanges += ")\n"; - let coalesceRanges = `SELECT\n r.range AS \`${fieldsColumn.display_name}\`,\n`; + let coalesceRanges = `SELECT\n`; let coalesceRangesAux = ''; queryTODO.fields.forEach( col => { @@ -408,6 +408,8 @@ export abstract class QueryBuilderService { } else { coalesceRangesAux += ` COALESCE(t.\`${col.display_name}\`, 0) AS \`${col.display_name}\`,\n` // Verificar las fechas } + } else { + coalesceRangesAux += ` r.range AS \`${fieldsColumn.display_name}\`,\n`; } }) From 3e6bbfd8a46f9809a9f5791ea19fdc8bfaf6fb71 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 22 Jan 2025 09:32:29 +0100 Subject: [PATCH 35/47] =?UTF-8?q?Internacionalizaci=C3=B3n=20de=20Between?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eda/eda_app/src/locale/messages.ca.xlf | 4 ++++ eda/eda_app/src/locale/messages.en.xlf | 4 ++++ eda/eda_app/src/locale/messages.es.xlf | 4 ++++ eda/eda_app/src/locale/messages.gl.xlf | 4 ++++ eda/eda_app/src/locale/messages.pl.xlf | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index c30eb01b3..2f692dbe2 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4343,6 +4343,10 @@ No es posible crear un rango nuevo por que ya existe uno configurado No és possible crear un rang nou perquè existeixi un configurat + + Entre + Entre + diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 91670eefa..3715b8661 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4317,6 +4317,10 @@ No es posible crear un rango nuevo por que ya existe uno configurado It is not possible to create a new range because a configured one already exists + + Entre + Between + diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index 26f011362..44409679e 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4346,6 +4346,10 @@ No es posible crear un rango nuevo por que ya existe uno configurado No es posible crear un rango nuevo por que ya existe uno configurado + + Entre + Entre + diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index 131c9b332..dd4e06a99 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4347,6 +4347,10 @@ No es posible crear un rango nuevo por que ya existe uno configurado Non é posible crear un novo intervalo porque xa existe un configurado. + + Entre + Entre + diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index ea3c0517b..59bb1be25 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3973,6 +3973,10 @@ Login No es posible crear un rango nuevo por que ya existe uno configurado Nie można utworzyć nowego zakresu, ponieważ jeden już istnieje i jest skonfigurowany. + + Entre + Między + From 21bc79321eb0f09b096321456bd1505293ab3afb Mon Sep 17 00:00:00 2001 From: juanSTIC Date: Wed, 22 Jan 2025 17:41:16 +0100 Subject: [PATCH 36/47] fix localization --- .../column-dialog.component.html | 145 +++++++++--------- 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html index fdf5e8e37..3078a23ff 100644 --- a/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html +++ b/eda/eda_app/src/app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html @@ -15,7 +15,7 @@

(click)="allowedAggregations && addAggregation(aggregation)" [ngStyle]="{'cursor': !allowedAggregations ? 'not-allowed' : 'pointer'}" [ngClass]="aggregation.selected === true ? 'aggregation-active' : ''"> - {{getAggName(aggregation.value)}} + {{getAggName(aggregation.value)}}

@@ -51,10 +51,10 @@

-
@@ -85,7 +85,7 @@

- +

@@ -137,7 +137,7 @@

@@ -154,85 +154,85 @@

- +
- +
- + - + - +
- +
- + - +
- + - +
- + - + - + - + - +
- +
- + - + - + - + - +
- +
- + - +
- +
- + - + defaultLabel="Selecciona Valor 1" [selectionLimit]="limitSelectionFields" id="float-input1"> - +
- +
- +
- +
- + - + defaultLabel="Selecciona Valor 2" [selectionLimit]="limitSelectionFields" id="float-input2"> - +
- +
- +
@@ -363,55 +363,56 @@

Formato

Rangos:
- -
- - + +

- - - + + - +
- + - + - - - • Rango: - - -
- + + + • Rango: + + + +
+
- +
- +
@@ -511,4 +512,4 @@

- \ No newline at end of file + From 6d769cb220fb8d28a1333acbd93ad7ad0e35cfe0 Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 22 Jan 2025 19:02:21 +0100 Subject: [PATCH 37/47] Add language internalization --- eda/eda_app/src/locale/messages.ca.xlf | 36 ++++++++++++++++++++++++++ eda/eda_app/src/locale/messages.en.xlf | 36 ++++++++++++++++++++++++++ eda/eda_app/src/locale/messages.es.xlf | 36 ++++++++++++++++++++++++++ eda/eda_app/src/locale/messages.gl.xlf | 36 ++++++++++++++++++++++++++ eda/eda_app/src/locale/messages.pl.xlf | 17 +++++++++++- 5 files changed, 160 insertions(+), 1 deletion(-) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index 2f692dbe2..ee4975fa7 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4315,6 +4315,42 @@ El año pasado, completo L'any passat, complet + + Aplicar + Aplicar + + + Diseño de la tabla cruzada: + Disseny de la taula creuada: + + + Este eje debe contener al menos un elemento + Aquest eix ha de contenir almenys un element + + + • Eje vertical: Arrastre aquí los campos. + • Eix vertical: Arrossegueu aquí els camps. + + + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Eix horitzontal: Arrossegueu aquí els camps per a l'eix horitzontal de la taula creuada. + + + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Eix numèric: Arrossegueu aquí només els camps numèrics. + + + Filtro sobre todos los registros + Filtre sobre tots els registres + + + Filtro sobre los resultados + Filtre sobre els resultats + + + Agregación + Agregació + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 3715b8661..9c949b28a 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4289,6 +4289,42 @@ El año pasado, completo Last year, complete + + Aplicar + Apply + + + Diseño de la tabla cruzada: + Crosstab design: + + + Este eje debe contener al menos un elemento + This axis must contain at least one element + + + • Eje vertical: Arrastre aquí los campos. + • Vertical axis: Drag fields here. + + + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Horizontal Axis: Drag fields for the horizontal axis of the crosstab here. + + + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Number Axis: Drag only numeric fields here. + + + Filtro sobre todos los registros + Filter on all records + + + Filtro sobre los resultados + Filter on results + + + Agregación + Aggregation + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index 44409679e..ea45a6d0b 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4318,6 +4318,42 @@ El año pasado, completo El año pasado, completo + + Aplicar + Aplicar + + + Diseño de la tabla cruzada: + Diseño de la tabla cruzada: + + + Este eje debe contener al menos un elemento + Este eje debe contener al menos un elemento + + + • Eje vertical: Arrastre aquí los campos. + • Eje vertical: Arrastre aquí los campos. + + + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + + + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Eje numérico: Arrastre aquí solo los campos numéricos. + + + Filtro sobre todos los registros + Filtro sobre todos los registros + + + Filtro sobre los resultados + Filtro sobre los resultados + + + Agregación + Agregación + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index dd4e06a99..b781d66ee 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4319,6 +4319,42 @@ El año pasado, completo El año pasado, completo + + Aplicar + Solicitar + + + Diseño de la tabla cruzada: + Deseño de mesas cruzadas: + + + Este eje debe contener al menos un elemento + Este eixe debe conter polo menos un elemento + + + • Eje vertical: Arrastre aquí los campos. + • Eixe vertical: arrastra os campos aquí. + + + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Eixe horizontal: arrastra aquí os campos do eixe horizontal da táboa transversal. + + + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Eixe numérico: arrastra só campos numéricos aquí. + + + Filtro sobre todos los registros + Filtra todos os rexistros + + + Filtro sobre los resultados + Filtra os resultados + + + Agregación + Agregación + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index 59bb1be25..90e30ae8e 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3940,11 +3940,26 @@ Login Este panel no está disponible por falta de permisos en un filtro Ten panel jest niedostępny ze względu na brak uprawnień do filtra - + + Aplicar + Stosować + El año pasado, completo W zeszłym roku, kompletne + + Filtro sobre todos los registros + Filtruj według wszystkich rekordów + + + Filtro sobre los resultados + Filtruj wyniki + + + Agregación + Zbiór + Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Podczas konfigurowania zakresu agregacje zostaną zablokowane. Przykład prawidłowego zakresu - 12:18:50:100 From 0b895e84982a58302edaf4ccd8f28fcadba42d0e Mon Sep 17 00:00:00 2001 From: Paula Date: Wed, 22 Jan 2025 19:09:15 +0100 Subject: [PATCH 38/47] Minor changes --- eda/eda_app/src/locale/messages.ca.xlf | 12 ++++++------ eda/eda_app/src/locale/messages.pl.xlf | 27 +++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index ee4975fa7..b18c0d708 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4328,16 +4328,16 @@ Aquest eix ha de contenir almenys un element - • Eje vertical: Arrastre aquí los campos. - • Eix vertical: Arrossegueu aquí els camps. + • Eje vertical: Arrastre aquí los campos. + • Eix vertical: Arrossegueu aquí els camps. - • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. - • Eix horitzontal: Arrossegueu aquí els camps per a l'eix horitzontal de la taula creuada. + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Eix horitzontal: Arrossegueu aquí els camps per a l'eix horitzontal de la taula creuada. - • Eje numérico: Arrastre aquí solo los campos numéricos. - • Eix numèric: Arrossegueu aquí només els camps numèrics. + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Eix numèric: Arrossegueu aquí només els camps numèrics. Filtro sobre todos los registros diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf index 90e30ae8e..55f8b0429 100644 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ b/eda/eda_app/src/locale/messages.pl.xlf @@ -3940,13 +3940,34 @@ Login Este panel no está disponible por falta de permisos en un filtro Ten panel jest niedostępny ze względu na brak uprawnień do filtra + + El año pasado, completo + W zeszłym roku, kompletne + Aplicar Stosować - - El año pasado, completo - W zeszłym roku, kompletne + + + Diseño de la tabla cruzada: + Projektowanie stołów krzyżowych: + + + Este eje debe contener al menos un elemento + Oś ta musi zawierać co najmniej jeden element + + + • Eje vertical: Arrastre aquí los campos. + • Eix vertical: Arrossegueu aquí els camps. + + + • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. + • Eix horitzontal: Arrossegueu aquí els camps per a l'eix horitzontal de la taula creuada. + + + • Eje numérico: Arrastre aquí solo los campos numéricos. + • Eix numèric: Arrossegueu aquí només els camps numèrics. Filtro sobre todos los registros From e8bb8be404ab47d80ff5a33d0b881c4b64a0ba60 Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Wed, 22 Jan 2025 19:16:27 +0100 Subject: [PATCH 39/47] Ordenamiento de numeric, text y date listo. Planteamiento del ordenamiento del campo que contiene un rango --- .../eda-table/eda-table.component.html | 2 +- .../eda-table/eda-table.component.ts | 40 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html index e066a03c0..071275a34 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.html @@ -1,5 +1,5 @@
- diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts index 19ce023d1..b52e0951a 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts @@ -318,6 +318,44 @@ export class EdaTableComponent implements OnInit { return this.sanitizer.bypassSecurityTrustHtml(str); - } + } + + customSort(event, cols) { + + const actualField = event.field; + const actualCol = cols.find(col => col.field === actualField) + + console.log('event: ', event) + console.log('actualCol: ', actualCol) + + event.data.sort((data1, data2) => { + let value1 = data1[event.field]; + let value2 = data2[event.field]; + let result = null; + + if (value1 == null && value2 != null) + result = -1; + else if (value1 != null && value2 == null) + result = 1; + else if (value1 == null && value2 == null) + result = 0; + else if (typeof value1 === 'string' && typeof value2 === 'string') { + + if(actualCol.rangeOption) { + console.log('Debemos hacer la lógica del ordenamiento') + } else { + result = value1.localeCompare(value2); + } + + } + else + result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0; + + return (event.order * result); + }); + + + + } } From e3699c74cf7f5a5d8721a0ee1cafb9525b341a8a Mon Sep 17 00:00:00 2001 From: ronaldchavezjortilles Date: Thu, 23 Jan 2025 11:56:56 +0100 Subject: [PATCH 40/47] Ordenamiento para los campos rangos concluido --- .../eda-table/eda-table.component.ts | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts index b52e0951a..e17cbd5f0 100644 --- a/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts +++ b/eda/eda_app/src/app/module/components/eda-table/eda-table.component.ts @@ -320,14 +320,26 @@ export class EdaTableComponent implements OnInit { } + extractNumberRange(input) { + const regex = /(?:<|<=|>|>=)?\s*(-?\d+)\s*(?:-|<|<=|>|>=)?\s*(-?\d+)?/; + const match = input.trim().match(regex); + + if (match) { + // Determina qué número extraer en base al formato del string + if (input.includes('<') || input.includes('>')) { + return parseInt(match[1], 10); // Extrae el primer número + } else { + return match[2] ? parseInt(match[2], 10) : null; // Extrae el segundo número si está presente + } + } + return null; // Si no hay coincidencia + } + customSort(event, cols) { const actualField = event.field; const actualCol = cols.find(col => col.field === actualField) - console.log('event: ', event) - console.log('actualCol: ', actualCol) - event.data.sort((data1, data2) => { let value1 = data1[event.field]; let value2 = data2[event.field]; @@ -340,22 +352,18 @@ export class EdaTableComponent implements OnInit { else if (value1 == null && value2 == null) result = 0; else if (typeof value1 === 'string' && typeof value2 === 'string') { - if(actualCol.rangeOption) { - console.log('Debemos hacer la lógica del ordenamiento') - } else { + const match1 = this.extractNumberRange(value1) + const match2 = this.extractNumberRange(value2) + result = (match1 < match2) ? -1 : (match1 > match2) ? 1 : 0; + } else result = value1.localeCompare(value2); - } - } else result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0; return (event.order * result); }); - - - } } From 7ee39b9a73de819781ec4ba67d1922bb4c4b8673 Mon Sep 17 00:00:00 2001 From: Paula Date: Fri, 24 Jan 2025 17:18:03 +0100 Subject: [PATCH 41/47] Changes for translation --- eda/eda_app/src/locale/messages.ca.xlf | 12 ------------ eda/eda_app/src/locale/messages.en.xlf | 12 ------------ eda/eda_app/src/locale/messages.es.xlf | 12 ------------ eda/eda_app/src/locale/messages.gl.xlf | 12 ------------ 4 files changed, 48 deletions(-) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index b18c0d708..7224afb44 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4339,18 +4339,6 @@ • Eje numérico: Arrastre aquí solo los campos numéricos. • Eix numèric: Arrossegueu aquí només els camps numèrics. - - Filtro sobre todos los registros - Filtre sobre tots els registres - - - Filtro sobre los resultados - Filtre sobre els resultats - - - Agregación - Agregació - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 9c949b28a..17f9cfe1a 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4313,18 +4313,6 @@ • Eje numérico: Arrastre aquí solo los campos numéricos. • Number Axis: Drag only numeric fields here. - - Filtro sobre todos los registros - Filter on all records - - - Filtro sobre los resultados - Filter on results - - - Agregación - Aggregation - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index ea45a6d0b..8ace00fdf 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4342,18 +4342,6 @@ • Eje numérico: Arrastre aquí solo los campos numéricos. • Eje numérico: Arrastre aquí solo los campos numéricos. - - Filtro sobre todos los registros - Filtro sobre todos los registros - - - Filtro sobre los resultados - Filtro sobre los resultados - - - Agregación - Agregación - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index b781d66ee..64d388074 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4343,18 +4343,6 @@ • Eje numérico: Arrastre aquí solo los campos numéricos. • Eixe numérico: arrastra só campos numéricos aquí. - - Filtro sobre todos los registros - Filtra todos os rexistros - - - Filtro sobre los resultados - Filtra os resultados - - - Agregación - Agregación - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 From 95c20fca55cf40c688f70459ab1d4624de504cee Mon Sep 17 00:00:00 2001 From: Paula Date: Fri, 24 Jan 2025 17:22:36 +0100 Subject: [PATCH 42/47] Changes for translation --- eda/eda_app/src/locale/messages.ca.xlf | 12 ++++++++++++ eda/eda_app/src/locale/messages.en.xlf | 12 ++++++++++++ eda/eda_app/src/locale/messages.es.xlf | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index 7224afb44..bd96f13fd 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4338,6 +4338,18 @@ • Eje numérico: Arrastre aquí solo los campos numéricos. • Eix numèric: Arrossegueu aquí només els camps numèrics. + + + Filtro sobre todos los registros + Filtre sobre tots els registres + + + Filtro sobre los resultados + Filtre sobre els resultats + + + Agregación + Agregació Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 17f9cfe1a..41add1f50 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4289,6 +4289,18 @@ El año pasado, completo Last year, complete + + Filtro sobre todos los registros + Filter on all records + + + Filtro sobre los resultados + Filter on results + + + Agregación + Aggregation + Aplicar Apply diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index 8ace00fdf..90b792e03 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4318,6 +4318,18 @@ El año pasado, completo El año pasado, completo + + Filtro sobre todos los registros + Filtro sobre todos los registros + + + Filtro sobre los resultados + Filtro sobre los resultados + + + Agregación + Agregación + Aplicar Aplicar From 946d3d0332e7393c446f8147693a077eed409bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaume=20Albaig=C3=A8s?= <45965117+jalbaiges@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:03:02 +0100 Subject: [PATCH 43/47] Improving translation --- eda/eda_app/src/locale/messages.es.xlf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eda/eda_app/src/locale/messages.es.xlf b/eda/eda_app/src/locale/messages.es.xlf index 90b792e03..5e096525d 100644 --- a/eda/eda_app/src/locale/messages.es.xlf +++ b/eda/eda_app/src/locale/messages.es.xlf @@ -4356,7 +4356,7 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango valido - 12:18:50:100 + Al configurar un rango las agregaciones quedarán bloqueadas. Ejemplo de rango válido: 12:18:50:100 Rangos: @@ -4364,7 +4364,7 @@ Añadir Rango - Añadir Rango + Añadir rango Rango @@ -4372,15 +4372,15 @@ El correcto orden de los límites del rango van de menor a mayor - El correcto orden de los límites del rango van de menor a mayor + El orden correcto de los límites del rango es de menor a mayor El último caracter del rango debe ser un número - El último caracter del rango debe ser un número + El último carácter del rango debe numérico No es posible crear un rango nuevo por que ya existe uno configurado - No es posible crear un rango nuevo por que ya existe uno configurado + No es posible crear un rango nuevo porque ya existe uno configurado Entre From b0a1bd0087209d187f3de393e78f0096728b84d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaume=20Albaig=C3=A8s?= <45965117+jalbaiges@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:05:39 +0100 Subject: [PATCH 44/47] Improving translation --- eda/eda_app/src/locale/messages.ca.xlf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eda/eda_app/src/locale/messages.ca.xlf b/eda/eda_app/src/locale/messages.ca.xlf index bd96f13fd..471067bc8 100644 --- a/eda/eda_app/src/locale/messages.ca.xlf +++ b/eda/eda_app/src/locale/messages.ca.xlf @@ -4353,7 +4353,7 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 - En configurar un Rang les agregacions quedaran bloquejades, Exemple d'un rang vàlid - 12:18:50:100 + Al configurar un rang les agregacions quedaran bloquejades. Exemple de rang vàlid: 12:18:50:100 Rangos: @@ -4361,7 +4361,7 @@ Añadir Rango - Afegeix Rang + Afegeix un rang Rango @@ -4369,15 +4369,15 @@ El correcto orden de los límites del rango van de menor a mayor - El correcte ordre dels límits del rang van de menor a més gran + L'ordre correcte dels límits del rang és de més petit a més gran El último caracter del rango debe ser un número - El darrer caràcter del rang ha de ser un número + El darrer caràcter del rang ha de ser numèric No es posible crear un rango nuevo por que ya existe uno configurado - No és possible crear un rang nou perquè existeixi un configurat + No és possible crear un rang nou perquè ja n'hi ha un de configurat Entre From 5457cae6752ecdb07684bf3aec16098d85522539 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaume=20Albaig=C3=A8s?= <45965117+jalbaiges@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:14:13 +0100 Subject: [PATCH 45/47] Improving translation --- eda/eda_app/src/locale/messages.en.xlf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eda/eda_app/src/locale/messages.en.xlf b/eda/eda_app/src/locale/messages.en.xlf index 41add1f50..2a2ba0047 100644 --- a/eda/eda_app/src/locale/messages.en.xlf +++ b/eda/eda_app/src/locale/messages.en.xlf @@ -4327,15 +4327,15 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 - When setting a Range, the aggregations will be blocked. Example of a valid range - 12:18:50:100 + When setting a range, the aggregations will be blocked. Example of a valid range: 12:18:50:100 Rangos: - Ranks: + Ranges: Añadir Rango - Add Rank + Add a range Rango @@ -4351,7 +4351,7 @@ No es posible crear un rango nuevo por que ya existe uno configurado - It is not possible to create a new range because a configured one already exists + It is not possible to create a new range because there is already one Entre From a20938db0400941de177061c87987dca41d97c43 Mon Sep 17 00:00:00 2001 From: Juanjo Date: Tue, 28 Jan 2025 16:42:12 +0100 Subject: [PATCH 46/47] =?UTF-8?q?se=20quita=20el=20archivo=20de=20traducci?= =?UTF-8?q?=C3=B3n=20a=20polaco.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eda/eda_app/src/locale/messages.pl.xlf | 4018 ------------------------ 1 file changed, 4018 deletions(-) delete mode 100644 eda/eda_app/src/locale/messages.pl.xlf diff --git a/eda/eda_app/src/locale/messages.pl.xlf b/eda/eda_app/src/locale/messages.pl.xlf deleted file mode 100644 index 55f8b0429..000000000 --- a/eda/eda_app/src/locale/messages.pl.xlf +++ /dev/null @@ -1,4018 +0,0 @@ - - - - - - Usuario - Użytkownik - - app/core/pages/login/login.component.html - 24 - - - - Contraseña - Hasło - - app/core/pages/login/login.component.html - 31 - - - - Recuérdame - Zapamiętaj - - app/core/pages/login/login.component.html - 38 - - - - Ingresar - Zaloguj się - - app/core/pages/login/login.component.html - 41 - - - - Contraseña - Hasło - - app/core/pages/register/register.component.html - 31 - - - - Confirma contraseña - Potwierdź hasło - - app/core/pages/register/register.component.html - 35 - - - - Estoy de acuerdo con los -términos - - zgadzam się na -warunki - - - app/core/pages/register/register.component.html - 42 - - - - - ¿Tienes una cuenta? - -Ingresa ahora - - - - Masz już konto? - -Login - - - -app/core/pages/register/register.component.html -54 - - - -Perfil -Profil - -app/shared/components/sidebar/sidebar.component.html -42 - - - -Gestión de Usuarios -Zarządzanie użytkownikami - -app/shared/components/sidebar/sidebar.component.html -47 - - - -Gestión de Grupos -Zarządzanie grupami - -app/shared/components/sidebar/sidebar.component.html -51 - - - -Cerrar sesión -Zamknij sesję - -app/shared/components/sidebar/sidebar.component.html -57 - - - - Mis informes - Moje raporty - -app/shared/components/sidebar/sidebar.component.html -68 - - - -Fuente de Datos -Baza danych - -app/shared/components/sidebar/sidebar.component.html -77 - - - -Nueva Fuente -Nowa baza danych - -app/shared/components/sidebar/sidebar.component.html -82 - - - -Editar Fuente -Edytuj bazę danych - -app/shared/components/sidebar/sidebar.component.html -87 - - - -Esta aplicación es una demo. -Aplikacja jest w wersji demo. - -app/core/pages/conditions/conditions.component.html -3 - - - -No ofrece ninguna garantía y no somos responsables del uso que se haga de la misma. -Brak gwarancji. Nie bierzemy odpowiedzialności za użytkowanie. - -app/core/pages/conditions/conditions.component.html -4 - - - -Usala bajo tu responsabilidad. -Użyj na własne ryzyko. - -app/core/pages/conditions/conditions.component.html -5 - - - -Cerrar -Zamknij - -app/core/pages/conditions/conditions.component.html -10 - - -app/module/pages/home/create-dashboard/create-dashboard.component.html -26 - - -app/module/pages/users-management/users-detail/users-detail.component.html -33 - - -app/module/pages/data-sources/data-source-detail/table-relations-dialog/table-relations-dialog.component.html -30 - - -app/module/pages/data-sources/data-source-detail/column-permissions-dialog/column-permission-dialog.component.html -27 - - -app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html -28 - - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -81 - - - - Informe público EDA - Raport publiczny EDA - -app/module/pages/anonimous-login/anonymous-login.component.html -1 - - - -Agregaciones -Agregacje - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -7 - - - - - Ordenación - - - Sortowanie - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -27 - - - - - Filtrar - - - Filtr - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -47 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -6 - - - - - Tipos de filtro - - - Typy filtrów - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -62 - - - - - Fecha - - - Dane - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -78 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -38 - - - - - Valor a filtrar - - - Filtr wartości - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -97 - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -116 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -56 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -74 - - - - - Fecha inicio - - - Data rozpoczęcia - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -137 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -95 - - - - - Fecha final - - - Data zakończenia - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -153 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -111 - - - - - Valor 1 - - - Wartość 1 - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -176 - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -209 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -133 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -164 - - - - - Valor 2 - - - Wartość 2 - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -192 - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -229 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -147 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -184 - - - - - Opciones - - - Opcje - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -254 - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -209 - - - -Añadir filtro - Dodaj filtr - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -273 - - - - - Formato - - - Format - - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -291 - - - -Confirmar -Przyjmij - -app/module/components/eda-panels/eda-blank-panel/column-dialog/column-dialog.component.html -364 - - -app/module/components/eda-panels/eda-blank-panel/chart-dialog/chart-dialog.component.html -54 - - -app/module/components/eda-panels/eda-blank-panel/table-dialog/table-dialog.component.html -18 - - -app/module/components/eda-panels/eda-blank-panel/maps-dialog/mapedit-dialog.component.html -35 - - - - - Tipos de filtro - - - Typy filtrów - - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -22 - - - -Añadir filtro -Dodaj filtr - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -228 - - - -Confirmar -Przyjmij - -app/module/components/eda-panels/eda-blank-panel/filter-dialog/filter-dialog.component.html -292 - - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -10 - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -360 - - -app/module/pages/home/create-dashboard/create-dashboard.component.html -25 - - -app/module/pages/profile/profile.component.html -37 - - -app/module/pages/data-sources/data-sources.component.html -94 - - -app/module/pages/data-sources/data-source-detail/table-relations-dialog/table-relations-dialog.component.html -26 - - -app/module/pages/groups-management/group-detail/group-detail.component.html -31 - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -77 - - -app/module/pages/data-sources/data-source-detail/column-permissions-dialog/column-permission-dialog.component.html -26 - - -app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html -25 - - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -79 - - - - - Colores - - - Kolory - - -app/module/components/eda-panels/eda-blank-panel/chart-dialog/chart-dialog.component.html -19 - - -app/module/components/eda-panels/eda-blank-panel/maps-dialog/mapedit-dialog.component.html -17 - - - -Cancelar -Odrzuć - -app/module/components/eda-panels/eda-blank-panel/chart-dialog/chart-dialog.component.html -58 - - -app/module/components/eda-panels/eda-blank-panel/table-dialog/table-dialog.component.html -22 - - -app/module/components/eda-panels/eda-blank-panel/maps-dialog/mapedit-dialog.component.html -38 - - - -¡Cuidado! -Uwaga! - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -3 - - - -La consulta que estás a punto de realizar es potencialmente pesada y puede tardar mas de lo normal en - ejecutarse. - -Zapytanie, które chcesz wykonać jest potencjalnie duże, przez co realizacja może potrwać dłużej niż zazwyczaj. - - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -4 - - - -Puedes añadir filtros o agregaciones para reducir el número de registros -Spróbuj dodać filtry lub agregacje, aby zmniejszyć ilość zapisów - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -7 - - - -¿Deseas continuar? -Czy chcesz kontynuować? - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -8 - - - -Cancelar -Odrzuć - -app/module/components/eda-panels/eda-blank-panel/alert-dialog/alert-dialog.component.html -14 - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -364 - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -80 - - - - ¿Escala logarítmica? - Logarithmic scale? - -app/module/components/eda-panels/eda-blank-panel/maps-dialog/mapedit-dialog.component.html -29 - - - - - Entidades - - - Podmioty - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -41 - - - - - Atributos - - - Atrybuty - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -61 - - - - - Mostrar los siguientes atributos: - - - Pokaż następujące atrybuty: - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -86 - - - - - Filtrar los resultados por: - - - Filtruj wyniki według: - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -109 - - - - - Mi consulta - - - Moje zapytanie - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -131 - - - - - Resumen de atributos - - - Podsumowanie atrybutów - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -137 - - - - - Resumen de filtros del panel - - - Podsumowanie filtrów panelu - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -155 - - - - - Resumen de filtros del informe - - - Podsumowanie filtrów raportu - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -166 - - - -Expresión SQL -SQL Expression - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -182 - - - -Tabla origen -Origin table - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -187 - - - -Tablas -Tabele - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -191 - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -39 - - - -Indicaciones -Wskazanie - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -198 - - - - Puedes realizar consultas SQL sobre el esquema definido en tu modelo. - Para ello introduce la consulta en el cuadro de texto y selecciona la tabla principal - (puede ser cualquiera de las que aparecen en la consulta). - Usaremos esta tabla para vincular la consulta a los filtros del informe. - You can perform SQL queries on the schema defined in your model. - To do this, enter the query in the text box and select the main table - (It can be any of those that appear in the query). - We will use this table to link the query to the report filters. - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -202 - - - - Limitaciones: - Ograniczenia: - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -206 - - - - - Solo es posible usar las tablas del esquema definido en el modelo (si lo hay) - -Możliwe tylko użycie tabel schematu zdefiniowanych w modelu (jeżeli są). - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -209 - - - - - Debes utilizar alias para todas las tablas de la consulta ( select a,b from tabla t where c ) - - - Musisz użyć skrótów dla wszystkich tabel w zapytaniu (select a, b from table t where c) - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -212 - - - - Puedes vincular los filtros del informe con la consulta - You can link the report filters with the query - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -218 - - - - Para hacerlo sólo tienes que añadir: - - AND - - - en la cláusula 'WHERE' de la consulta donde quieras inyectar el filtro - - Żeby to zrobić musisz dodać:: - - AND - - - in 'WHERE' clause from query - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -220 - - - - Si no has añadido ningúna cláusula WHERE, añádela a la - consulta y haz los joins necesarios, - junto con el filtro en el formato - - - - - If you haven't added any WHERE clause, add it to the query and make the necessary joins, - together with the filter in the format - - - - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -225 - - - -Si la tabla por la que filtramos no está en la consulta, recuerda que debes - añadir las cláusulas JOIN necesarias - para poder vicular la tabla del filtro con tu consulta - -If the table by which we filter is not in the query, remember that you must - add the necessary JOIN clauses - in order to link the filter table with your query - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -229 - - - -Consulta simple -Simple query - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -237 - - - -Consulta con los filtros del informe vinculados -Query with linked report filters - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -246 - - - - Tenemos un filtro en el informe para el campo 'city' de la tabla CUSTOMERS - We have a filter in the report for the 'city' field from CUSTOMERS table - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -248 - - - - Consulta sin filtros vinculados - Query without linked filters - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -249 - - - - Consulta con filtros vinculados - Query with linked filters - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -254 - - - - Tenemos un filtro en el informe para el campo 'office_id' de la tabla OFFICES - - We have a filter in the report for the field 'office_id' from OFFICES table - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -262 - - - - Consulta sin filtros vinculados - Zapytanie bez połączonych filtrów - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -265 - - - - Consulta con filtros vinculados - Zapytanie z połączonym filtrem - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -271 - - - - - - - - - - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -37 - - - -VISTA PREVIA -PODGLĄD - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -291 - - - -Ejecutar -Stwórz - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -356 - - - - Crear nuevo informe - - Stwórz nowy raport - - -app/module/pages/home/home.component.html -7 - - - - - PUBLICOS - - - PUBLICZNE - - -app/module/pages/home/home.component.html -20 - - -app/module/pages/home/home.component.html -44 - - -app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html -3 - - - - - MIS GRUPOS - - - MOJE GRUPY - - -app/module/pages/home/home.component.html -68 - - - - - PRIVADOS - - - PRYWATNE - - -app/module/pages/home/home.component.html -101 - - - -Dame un nombre * -Nazwa raportu * - -app/module/pages/home/create-dashboard/create-dashboard.component.html -7 - - - -Buscar por nombre del informe - Szukaj po nazwie raportu - - -Buscar -Szukaj - - -Selecciona una fuente de datos * -Wybierz źródło danych * - -app/module/pages/home/create-dashboard/create-dashboard.component.html -11 - - - - Todas - Wszystko - -app/module/pages/dashboard/dashboard.component.html -36 - - - - Ayer - Wczoraj - -app/module/pages/dashboard/dashboard.component.html -38 - - - - Ésta semana - Ten tydzień - -app/module/pages/dashboard/dashboard.component.html -39 - - - - Éste mes - Ten miesiąc - -app/module/pages/dashboard/dashboard.component.html -40 - - - - Éste año - Ten rok - -app/module/pages/dashboard/dashboard.component.html -41 - - - -NUEVO PANEL - NOWY PANEL - -app/module/pages/dashboard/dashboard.component.html -130 - - - -NUEVO TEXTO -NOWY TEKST - -app/module/pages/dashboard/dashboard.component.html -137 - - - -NUEVO FILTRO -NOWY FILTR - -app/module/pages/dashboard/dashboard.component.html -144 - - - -RECARGAR INFORME -ODŚWIEŻ RAPORT - -app/module/pages/dashboard/dashboard.component.html -153 - - - -GUARDAR -ZAPSZ - -app/module/pages/dashboard/dashboard.component.html -160 - - - -DESCARGAR PDF -POBIERZ PDF - -app/module/pages/dashboard/dashboard.component.html -167 - - - -DESCARGAR IMAGEN -POBIERZ OBRAZ - -app/module/pages/dashboard/dashboard.component.html -174 - - - -Temas -Motywy - -app/module/pages/account-settings/account-settings.component.html -5 - - - -Con el menu claro -Jasny motyw - -app/module/pages/account-settings/account-settings.component.html -9 - - - -Con el menu oscuro -Ciemny motyw - -app/module/pages/account-settings/account-settings.component.html -17 - - - -Perfil del usuario -Profil użytkownika - -app/module/pages/profile/profile.component.html -6 - - - -Nombre de usuario -Nazwa użytkownika - -app/module/pages/profile/profile.component.html -10 - - -app/module/pages/profile/profile.component.html -14 - - - -Correo de usuario -Email użytkownika - -app/module/pages/profile/profile.component.html -18 - - -app/module/pages/profile/profile.component.html -23 - - - - - Fotografía del usuario - - Zdjęcie - -app/module/pages/profile/profile.component.html -48 - -Label del input imagen de usuario -Label Input Imagen - - -Actualizar Foto -Aktualizuj zdjęcie - -app/module/pages/profile/profile.component.html -63 - -Button actualizar foto profile -Button - - -Crear usuario -Stwórz użytkwnika -Crear usuario -Stwórz użytkownika - -app/module/pages/users-management/users-list/users-list.component.html -5 - - - -Nombre * -Nazwa * - -app/module/pages/users-management/users-detail/users-detail.component.html -4 - - -app/module/pages/users-management/users-detail/users-detail.component.html -5 - - -app/module/pages/data-sources/data-sources.component.html -8 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -6 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -53 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -147 - - -app/module/pages/groups-management/group-detail/group-detail.component.html -6 - - -app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html -10 - - - -Correo * -Email * - -app/module/pages/users-management/users-detail/users-detail.component.html -8 - - -app/module/pages/users-management/users-detail/users-detail.component.html -9 - - - -Contraseña * -Hasło * - -app/module/pages/users-management/users-detail/users-detail.component.html -12 - - -app/module/pages/users-management/users-detail/users-detail.component.html -13 - - -app/module/pages/data-sources/data-sources.component.html -85 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -195 - - - -Seguridad * -Security * - -app/module/pages/users-management/users-detail/users-detail.component.html -16 - - - -Repite la contraseña -Wprowadź hasło ponownie - -app/module/pages/users-management/users-detail/users-detail.component.html -17 - - - -Grupo * -Grupa * - -app/module/pages/users-management/users-detail/users-detail.component.html -22 - - - -TIPO * -RODZAJ* - -app/module/pages/data-sources/data-sources.component.html -15 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -157 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -162 - - - -Selecciona un tipo -Wybierz rodzaj - -app/module/pages/data-sources/data-sources.component.html -17 - - - -SERVIDOR * -SERWER * - -app/module/pages/data-sources/data-sources.component.html -25 - - -app/module/pages/data-sources/data-sources.component.html -32 - - -app/module/pages/data-sources/data-sources.component.html -41 - - - -BASE DE DATOS * -BAZA DANYCH * - -app/module/pages/data-sources/data-sources.component.html -49 - - - -BASE DE DATOS * -BAZA DANYCH * - -app/module/pages/data-sources/data-sources.component.html -56 - - - -ESQUEMA -SCHEMAT - -app/module/pages/data-sources/data-sources.component.html -64 - - - -PUERTO * -PORT * - -app/module/pages/data-sources/data-sources.component.html -71 - - - -USUARIO * -UŻYTKOWNIK * - -app/module/pages/data-sources/data-sources.component.html -78 - - - -Modelo de datos -Model danych - -app/module/pages/data-sources/data-source-list/data-source-list.component.html -18 - -Titulo card -Titulo Card - - -Nombre técnico -Nazwa techniczna - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -11 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -60 - - - - Descripción - Opis - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -16 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -67 - - -app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html -15 - - - -Esconder tabla -Ukryj tabelę - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -21 - - - -Tipo de tabla -Rodzaj tabeli - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -27 - - - -Añadir relación -Dodaj relacje - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -36 - - - - - Tipo de columna - - - Rodzaj kolumny - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -80 - - - - - Agregación - - - - Agregacja - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -90 - - - -Roles y permisos de fila -Row roles and permissions - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -102 - - - - Añadir permiso - Dodaj uprawnienie - - - - - Añadir permiso a nivel de modelo - Dodaj uprawnienia na poziomie modelu - - - -Esconder columna -Ukryj kulumnę - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -112 - - - - - Metadata - - - Metadane - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -142 - - - - - Conexión - - - Połączenie - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -153 - - - - - Host - - - Host - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -167 - - - - - Base de datos - - - Baza danych - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -174 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -181 - - - - - Usuario - - - Użytkownik - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -188 - - - -Columna origen - -Origin column - -app/module/pages/data-sources/data-source-detail/table-relations-dialog/table-relations-dialog.component.html -8 - - - -tabla destino -Destination table - -app/module/pages/data-sources/data-source-detail/table-relations-dialog/table-relations-dialog.component.html -14 - - - -Columna destino -destination column - -app/module/pages/data-sources/data-source-detail/table-relations-dialog/table-relations-dialog.component.html -19 - - - -Columna con el id -Kolumna z id - - -Columna con la descripción -Kolumna z opisem - - -Crear grupo -Stwórz grupę - -app/module/pages/groups-management/group-list/group-list.component.html -5 - - - -Cerrar -Zamknij - -app/module/pages/groups-management/group-detail/group-detail.component.html -32 - -cerrarBtn - - - - ¿Aplica a todos los paneles? - -Dotyczy wszytskich paneli? - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -5 - - - - - Paneles para los que aplica el filtro - - Panele, których dotyczy filtr - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -14 - - - - - Filtrar por - - - - Filtruj według - - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -30 - - - -Atributos -Atrybuty - -app/module/pages/dashboard/filter-dialog/dashboard-filter-dialog.component.html -46 - - - -Añadir permiso -Dodaj uprawnienie - -app/module/pages/data-sources/data-source-detail/column-permissions-dialog/column-permission-dialog.component.html -3 - - - -Propiedades del mapa -Map properties - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -6 - - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -51 - - - - Subir archivo GeoJson (JSON) -Upload GeoJson file (JSON) - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -9 - - - -Campo a usar para vincular el modelo con el mapa -Field to link datamodel to the map - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -14 - - - -Nombre del mapa -Nazwa mapy - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -19 - - - - Centro del mapa (Latitud, Longitud) - Środek mapy (Latitude, Longitude) - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -26 - - - -Mapas disponibles -Dostępne mapy - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -33 - - - -Vincular columnas al mapa -Połącz kolumny z mapą - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -47 - - - -Columnas -Kolumny - -app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html -57 - - - - -Borrar -Usuń - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -124 - - - -Comprobar conexión -Sprwdź połączenie - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -203 - - - -Borrar modelo de datos -Usuń model danych - -app/module/pages/data-sources/data-source-list/data-source-list.component.html -20 - - - -Actualizar modelo de datos desde la base de datos origen para buscar nuevas tablas y columnas -Zaktualizuj model danych ze źródłowej bazy danych, aby znaleźć nowe tabele i kolumny - -app/module/pages/data-sources/data-source-list/data-source-list.component.html -15 - - - -Guardar modelo de datos -Zapisz model danych - -app/module/pages/data-sources/data-source-list/data-source-list.component.html -12 - - - -Refrescar modelo de datos -Odśwież model danych - -app/module/pages/data-sources/data-source-list/data-source-list.component.html -9 - - - -Cargando informe... -Ładownie raportu... - - - Añadir relación - Dodaj relacje - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -36 - - - -Añadir columna calculada -Dodaj sklalkulowaną kolumnę - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -41 - - - - -Destino -Target - - - -Origen -Origin - - - -USUARIO -UŻYTKOWNIKs - - - -VALOR -WARTOŚĆ - - - -Editar - -Edytuj - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -3 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -50 - - -app/module/pages/data-sources/data-source-detail/data-source-detail.component.html -140 - - - -Modo EDA -Tryb EDA - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -344 - - - -Modo SQL -Tryb SQL - -app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html -345 - - - -Editar consulta -Edytuj zapytanie - - - -Editar opciones del gráfico -Edytuj opcje wykresu - - - -Exportar a Excel -Eksportuj do Excela - - -Eliminar panel -Usuń panel - - -Duplicar panel -Duplikuj panel - - -Duplicar columna -Duplikuj kolumna - - -Tabla de Datos -Tabela - - -Tabla Cruzada -Tabela krzyżowa - - -Gráfico de Pastel -Diagram kołowy - - -Gráfico de Área Polar -Wykres biegunowy - - -Gráfico de Barras -Wykres słupkowy - - -Histograma -Histogram - - -Texto Dinámico -Tekst dynamiczny - - -Un texto dinámicos requiere de un único valor NO numérico -Tekst dynamiczny wymaga pojedynczej wartości nienumerycznej - - -Gráfico de Barras Apliadas -Skumulowany wykres słupkowy - - -Gráfico de Barras Horizontales -Poziomy wykres słupkowy - - -Gráfico de Piramide -Wykres piramidy - - -Gráfico Solar -Wykres słońca - - -Gráfico de Lineas -Wykres liniowy - - -Gráfico de Áreas -Wykres warstwowy - - -Mixto: Barras y lineas -Mieszany: słupkowy i liniowy - - -Mapa de coordenadas -Coordinates map - - -Mapa de Capas -Mapa warstwowa - - - -Velocímetro -Wykres mierników - - - -IGUAL A (=) -RÓWNA SIĘ (=) - - -NO IGUAL A (!=) -NIE RÓWNA SIĘ (!=) - - -MAYOR A (>) -WIĘKSZE NIŻ (>) - - -MENOR A (<) -MNIEJSZE NIŻ (<) - - -MAYOR o IGUAL A (>=) -WIĘKSZE LUB RÓWNE (>=) - - -MENOR o IGUAL A (<=) -MNIEJ LUB RÓWNE (<=) - - -ENTRE (between) -POMIĘDZY - - -DENTRO DE (in) - TYLKO WYBRANE - - -FUERA DE (not in) - ODRZUCONE - - -PARECIDO A (like) -PODOBNE - - -NO PARECIDO A (not like) -NIEPODOBNE - - -VALORES NO NULOS (not null) -WARTOŚĆI NIEZEROWE - - - -AÑO -ROK - - -TRIMESTRE -TRYMESTR - - -MES -MIESIĄC - - -DIA -DZIEŃ - - -NO -NO - - -SEMANA -SETMANA - - -DIA DE LA SEMANA -DZIEŃ TYGODNIA - - - -FECHA COMPLETA -TIMESTAMP - - - -DIA HORA -DZIEŃ GODZINA - - -DIA HORA MINUTO -DZIEŃ GODZINA MINUTA - - -PROPIEDADES DEL gráfico -WŁAŚCIWOŚCI WYKRESU - - - -Nuevo Panel -Nowy Panel - - -Nuevo Panel -Nowy Panel - - - - Mapas - Mapy - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 210 - - - -Esquema -Schemat - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 181 - - - - -Relaciones -Relacje - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 33 - - - - COMUNES - WSPÓLNE - - app/module/pages/home/home.component.html - 44 - - - - -Nueva Contraseña (Si no quieres modificar tu contraseña actual deja el campo en blanco) -Nowe hasło - - app/module/pages/profile/profile.component.html - 27 - - - -password -hasło - - app/module/pages/profile/profile.component.html - 28 - - - -Repite la nueva contraseña -Potwierdź hasło - - app/module/pages/profile/profile.component.html - 31 - - - -newPassword -nowe hasło - - app/module/pages/profile/profile.component.html - 32 - - - - -EMAIL -EMAIL - - -GRUPOS -GRUPY - - -NOMBRE -NAZWA - - -ROLE -ROLA - - - -Repite la contraseña -Potwierdź hasło - - app/module/pages/profile/profile.component.html - 32 - - - - -Dirección Email -Email - - app/core/pages/login/login.component.html - 22 - - - - -Contraseña -Hasło - - app/core/pages/login/login.component.html - 28 - - - - -Información general -Informacje ogólne - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 202 - - - - -Vincular consulta con los filtros del panel -Połącz zapytanie z filtrami panelu - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 221 - - - - -Ejemplos -Przykłady - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 242 - - - - -Repite la contraseña -Powtórz hasło - - app/module/pages/users-management/users-detail/users-detail.component.html - 17 - - - - -Añadir permiso -Dodaj uprawnienie - - app/module/pages/data-sources/data-source-detail/column-permissions-dialog/column-permission-dialog.component.html - 3 - - - - - -Definir un listado de valores posibles -Zdefiniuj listę możliwych wartości - - - -Tabla y columna asociadas -Powiązana tabela i kolumna - - - -Tabla: -Tablica: - - - -Tabla que contiene los valores posibles para el filtro asociado a esta columna -Tabela zawierająca możliwe wartości dla filtra powiązanego z tą kolumną - - - -Tabla relacionada -powiązana tabela - - - -Id de la columna relacionada -Identyfikator powiązanej kolumny - - - -Id Columna -kolumna identyfikatora - - - -Descripción de la columna relacionada -Powiązany opis kolumny - - - -Columna descripción -Opis kolumny - - - - Nueva columna calculada - Nowa skalkulowana kolumna - - app/module/pages/data-sources/data-source-detail/calculatedColumn-dialog/calculated-column-dialog.component.html - 3 - - - - -Si desconoces las coordenadas del centro las calcularemos automáticamente -Jeżeli nie znasz środkowych współrzędnych, zostaną wykalkulowane automatycznie - - app/module/pages/data-sources/data-source-detail/mapsDialog/maps-dialog.component.html - 27 - - - - -Expresión SQL - Wyrażenie SQL - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 74 - - - - -Expresión SQL (Debe incluir la agregación) -Wyrażenia SQL (Musi zawierać agregacje) - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 103 - - - - - - -Suma -Suma - - -Media -AVG - - -Màximo -Max - - -Mínimo -Min - - -Cuenta Valores -Licz - - -Valores Distintos -Count Distinct - - -Común -Wspólny - - -Grupo -Grupowy - - -Privado -Prywatny - - - - -Atributo -Atrybuty: - - -de la entidad -. Encja: - - - -Añadir columna calculada a la tabla -Dodaj kolumnę obliczeniową do tabeli - - -Añadir relación a la tabla -Dodaj relację do tabeli - - - -Los datos seleccionados no permiten utilizar este gráfico. -Wykres niedostępny dla bieżących danych. - - -Un KPI necesita un único número. -Do uzyskania wskaźnika KPI wymagana jest tylko jedna liczba. - - -Un gráfico de barras necesita una o más categorías y una série numéricas. -Wykres słupkowy wymaga jednej lub więcej kategorii i jednej serii liczbowej. Jeśli istnieją również dwie serie, dane liczbowe powinny zostać zagregowane. - - - Un gráfico combinado necesita una categoría y dos séries numéricas. -Wykres mieszany wymaga jednej kategorii i dwóch, lub więcej serii numerycznych. - - -Un gráfico de línea necesita una o más categorías y una série numérica. -Wykres liniowy wymaga jednej, lub więcej kategorii i jedną serię numeryczną. Jeżeli są dwie serie numeryczne, dane powinny być zagregowane. - - -Un gráfico de areas necesita una o más categorías y una série numérica. Además, si hay mas de una série los datos numéricos deben agregarse. -Wykres warstwowy wymaga jednej, lub więcej kategorii i jedną serię numeryczną.Jeżeli są dwie serie numeryczne, dane powinny być zagregowane . - - -Un gráfico de barras necesita una o más categorías y una série numérica. -Wykres słupkowy wymaga jednej, lub więcej kategorii i jedną serię numeryczną. Jeżeli są dwie serie numeryczne, dane powinny być zagregowane. - - -Un gráfico de barras necesita una o más categorías y una série numérica. -Wykres słupkowy wymaga jednej, lub więcej kategorii i jedną serię numeryczną. Jeżeli są dwie serie numeryczne, dane powinny być zagregowane. - - -Un gráfico polar necesita una categoría y una série numérica. -Wykres biegunowy wymaga jednej kategorii i jednej serii numerycznej. - - -Un gráfico de pastel necesita una categoría y una série numérica. -Wykres kołowy wymaga jednej kategorii i jednej serii numerycznej. - - -Una tabla cruzada necesita dos o más categorías y una série numérica. -Tabela krzyżowa wymaga dwóch lub więcej kategorii i jednej serii numerycznej. - - -Es necesario que los dos primeros campos sean de tipo coordenada. -Dwa pierwsze pola muszą być skoordynowane. - - -Puedes añarir un campo de tipo métrica y uno de tipo etiqueta en este orden o cualquiera de los dos por separado. -Dodaj pole metryki i pole etykiety w tej kolejności lub każde z nich osobno. - - -Es necesario un campo vinculado a un archivo GeoJson y un campo de tipo numérico. -Potrzebne jest pole połączone GeoJson i pole numeryczne. - - -Los datos seleccionados no permiten utilizar este gráfico. -Wykres niedostępny dla bieżących danych. - - -Un gráfico de burbujas necesita una categorías y una série numérica. -Wykres bąbelkowy wymaga jednej kategorii i jednej serii numerycznej. - - - - - - Demasiados valores - - Za dużo wartości - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 332 - - - - - - No Disponible - - Niedostępne - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 335 - - - -Mapas -Mapy - - - -Hay demasiados valores para este gráfico. Agrega o filtra los datos para poder visualizarlos mejor. -Za dużo wartości dla tego wyresu. Zagreguj lub filtruj dane, aby były lepiej widoczne. - - - - Tipo - Rodzaj - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 157 - - - - Mapas - Mapy - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 206 - - - - - Hay cambios sin guardar... - Nie zapisano zmian... - - app/module/pages/dashboard/dashboard.component.html - 205 - - - - -Informe guardado correctamente -Raport zapisany prawidłowo - - - -Fuente de datos: -Źródło danych: - - - -Creada correctamente -Stworzono prawidłowo - - - -Ha ocurrido un error -Wystąpił problem - - - -Consulta correcta -Zapytanie prawidłowe - - - -Consulta incorrecta -Zapytanie nieprawidłowe - - - -Debes incluir la agregación (distinct, sum, max, min, etc) -Musi zawierać agregację (distinct, sum, max, min, etc) - - - -Conexión establecida -Nawiązano połączenie - - - -Datos de conexión incorrectos -Nieprawidłowe dane dotyczące połączenia - - - -¿Estás seguro? -Jesteś pewny? - - - -Estás a punto de borrar el modelo de datos y todos los dashboards asociados, el cambio es irreversible -Model danych oraz raporty z nim powiązane zostaną usuniętne nieodwracalnie. - - - -Si, ¡Eliminalo! -Tak, usuń! - - - -¡Eliminado! -Usunięto! - - - -Modelo eliminado correctamente. -Model usunięty prawidłowo. - - - -Modelo actualizado correctamente -Model zaktualizowany prawidłowo - - - -Usuario borrado -Usunięto użytkownika - - - -El usuario a sido eliminado correctamente -Użytkownik został usunięty pomyślnie - - - -Imagen Actualizada -Zaktualizowano zdjęcie - - - -No se pudo obtener ningún registro -Nie udało się uzyskać żadnego rekordu - - - -Recuerde rellenar los campos obligatorios -Pamiętaj, aby wypełnić wymagane pola - - - -Formulario incorrecto. Revise los campos obligatorios. -Nieprawidłowa forma. Sprawdź wymagane pola. - - - -Importante -Ważne - - - -Debe de aceptar las condiciones -Musisz zaakceptować warunki - - - -Usuario creado -Stworzono użytkownika - - - -Error al registrarse -Bład rejestracji - - - -Solo puedes añadir filtros cuando todos los paneles están configurados -Możesz dodać filtry tylko wtedy, gdy wszytkkie panele są skofigurowane - - - -Puedes borrar los paneles en blanco o configurarlos -Możesz usunąć puste panele lub je skofigurować - - - -Entendido -OK - - - -ELIMINAR GRUPO -UNUŃ GRUPĘ - - - -Eliminarás todos los elementos relacionados con este grupo, ¿Deseas continuar? -Usuniesz wszytskie elementy powiązane z tą grupą. Czy chcesz kontynuować? - - - -Si, ¡Eliminalo! -Tak, usuń! - - - -Cancelar -Odrzuć - - - -Estás a punto de borrar el informe: -Raport zostanie usunięty: - - - -Informe eliminado correctamente. -Raport usunięty prawidłowo. - - - -USUARIO -UŻYTKOWNIK - - - -GUARDAR -ZAPISZ - - - -Usuario actualizado -Zaktualizowano użytkowanika - - - -Las contraseñas no coinciden -Niezgodne hasła - - - -Usuario creado -Stworzono użytkownika - - - -El archivo seleccionado no es una imagen -Wybrany plik nie jest obrazem - - - -No se puede borrar el usuario -Nie można usunąć użytkownika - - - -No se puede borrar a si mismo -Nie można usunąć samego siebie - - - -Estás a punto de borrar el usuario -Użytkownik zostanie usunięty - - - -Si, ¡Bórralo! -Tak, usuń! - - - -OPCIONES DE LA FILA -OPCJE WIERSZY - - - -EDITAR -EDYTUJ - - - -ELIMINAR -USUŃ - - - -FILTROS DEL INFORME -FILTRY RAPORTU - - - -CREAR NUEVO USUARIO -STWÓRZ NOWEGO UŻYTKOWNIKA - - - - - - registros - - - rekordy - - - app/module/components/eda-table/eda-table.component.html - 110 - - - - - - - - registros - - - rejestry - - app/module/components/eda-table/eda-table.component.html - 112 - - - - -EDITAR CONSULTA -EDYCJA ZAPYTANIA - - -EDITAR CONSULTA SQL -EDYCJA ZAPYTANIA SQL - - - -Todas -Wszystko - - -Ayer -Wczoraj - - -Antes de ayer -Przed wczoraj - - -Ésta semana -Ten tydzień - - -La semana pasada -Zeszły tydzień - - -La semana pasada completa -Cały zeszły tydzień - - -Éste mes -Ten miesiąc - - -El mes pasado -Ostatni miesiąc - - -El mes pasado completo -Wszytsko z zeszłego miesiąca - - -Éste mes del año pasado -Ten miesiąc w zeszłym roku - - -Éste mes al completo del año pasado -Ten miesiąc w zeszłym roku - - -Éste año -Ten rok - - -El año pasado -Zeszły rok - - - Últimos 7 días -Ostatnie 7 dni - - - Últimos 3 días -Ostatnie 3 dni - - - Últimos 15 días -Ostatnie 15 dni - - - Últimos 30 días -Ostatnie 30 dni - - - Últimos 60 días -Ostatnie 60 dni - - - Últimos 120 días -Ostatnie 120 dni - - - Fecha nula - Data zerowa - - -Selecciona un rango -Wybierz zakres - - -Puerto -Port - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 181 - - - - -Filtrar -Filtr - - - - - Generar alerta - Stwórz komunikat - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 15 - - - - - Cambiar Color - Zmień kolor - - app/module/components/eda-panels/eda-blank-panel/dynamicText-dialog/dynamicText-dialog.component.html - 11 - - - - - - Operador - Operator - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 29 - - - - Color - Kolor - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 49 - - - - Alertas - Komunikaty - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 60 - - - - Añadir alerta -Dodaj komunikat - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 77 - - - app/module/components/eda-panels/eda-blank-panel/kpi-dialog/kpi-dialog.component.html - 76 - - - - -Cuando el valor del kpi sea (=, <,>) que el valor definido cambiará el color del texto - Gdy wartość kpi jest (=, <,>) niż zdefiniowana wartość, kolor tekstu ulegnie zmianie - - - - Generar vista - Generuj widok - - app/module/pages/data-sources/data-source-detail/viewDialog/view-dialog.component.html - 31 - - - - - - Vista - Widok - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 23 - - - - - Vistas - Widoki - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 246 - - - - - - Añadir vista - Dodaj widok - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 250 - - - - - Añadir Vista - Dodaj widok - - - - Borrar vista - Usuń widok - - app/module/pages/data-sources/data-source-detail/data-source-detail.component.html - 54 - - - - - Mostrar Top:   - - - - Show Top:   - - - - - app/module/components/eda-panels/eda-blank-panel/eda-blank-panel.component.html - 131 - - - - Tipo de intersección: - rodzaj skrzyżowania: - - - - - Añadir tabla desde CSV - Dodaj tabele z CSV - - app/module/pages/data-sources/data-source-list/data-source-list.component.html - 26 - - - app/module/pages/data-sources/data-source-list/addCSV/add-csv.component.html - 14 - - - - - Nombre de la tabla - Nazwa tabeli - - app/module/pages/data-sources/data-source-list/addCSV/add-csv.component.html - 5 - - - - Separador - Separator - - app/module/pages/data-sources/data-source-list/addCSV/add-csv.component.html - 9 - - - - Generar tabla - Stwórz tabele - - app/module/pages/data-sources/data-source-list/addCSV/add-csv.component.html - 51 - - - - - Añadir Tabla - Dodaj tabele - - - - Tabla creada correctamente - Tabela utworzona pomyślnie - - - - Campo - Pole - - - Tipo - Typ - - - Formato - Format - - - - Extender el model - Rozszerzenie modelu - - - - Utilidades - Narzędzia - - - - Ocultar todas las tablas - Ukryj wszytskie tabele - - - Ocultar todas las columnas - Ukryj wszytskie kolumny - - - Ocultar todas las relaciones - Ukryj wszytskie relacje - - - - Subir archivo - Dodaj plik - - - - Filtros - Filtry - - - - Arrastre aquí los atributos que quiera ver en su panel - Przeciągnij tutaj atrybuty, które mają być widoczne w panelu. - - - - Arrastre aquí los atributos sobre los que quiera filtrar - Przeciągnij tutaj atrybuty, według których chcesz filtrować - - - - Posición de la leyenda - Pozycja legendy - - - - Informe a vincular - Połacz raport - - - - Campo del informe - Pole raportu - - - - Vincular con un informe - Połącz z rapotrem - - - - Vincular con otro informe - Połącz z innym raportem - - - - Sin Etiqueta - Bez Tagu - - - - Nueva etiqueta - Nowy tag - - - - AÑADIR ETIQUETA - DODAJ TAG - - - - Todos - Wszystko - - - - - Ninguno - Brak - - - - - Vinculado con - Połączono z - - - - Configurar nuevo orígen de datos - Nowe źródło danych - - - - Optimizar consultas - Optymalizacja zapytań - - - - Subir archivo de claves (json) * - Prześlij klucze (json) * - - - - Creada correctamente - Utworzono prawidłowo - - - - OPCIONES DEL PANEL - OPCJE PANELU - - - - Paneles filtrados - Panele filtrowane - - - - Paneles no relacionados - Panele niepowiązane - - - - Paneles no filtrados - Panele niefiltrowane - - - - Intervalo de recarga - Częstotliwość odświeżania - - - - Gestión de modelos - Zarządzanie modelami - - - - - Modelos - Modele - - - - Informes - Raporty - - - - Exportar Modelo - Eksportuj Model - - - - Exportar Informe - Eksportuj Raport - - - - Importar Modelo - Prześlij Model - - - - Importar Informe - Prześlij Raport - - - - Importar - Prześlij - - - - Se han encontrado inconsistencias en el informe, los siguientes elementos no existen en el modelo: - Znaleziono niespójności w bieżacym raporcie, następujące elementy nie isnieją w modelu: - - - - Se han encontrado inconsistencias en los siguientes informes: - Znaleziono niespójności w bieżącym raporcie: - - - - Modelo guardado correctamente - Model zapisany pomyślnie - - - - Descargar modelo - Pobierz model - - - - Descargar Informe - Pobierz raport - - - - Hay cambios sin guardar. ¿Seguro que quieres salir? - Nie zapisano zmian, czy chcesz kontynuować? - - - - Separador Decimal - Separator dziesiętny - - - - Vista generada correctamente - Widok wygenerowany poprawnie - - - - Establece un Top n para la consulta - Zdefiniuj Top n dla zapytania - - - - Límites - Ograniczenia - - - - Permisos de usuario - Uprawnienia użytkownika - - - - Permisos de grupo - Uprawnienia grupy - - - - Usuarios - Użytkownicy - - - Grupos - Grupy - - - - GRUPO - GRUPA - - - - Mi consulta SQL - Moje zapytanie SQL - - - - Abrir en modo SQL - Otwórz w trybie SQL - - - - Al cambiar de modo perderás la configuración de la consulta actual - Zmiana trybu zastąpi bieżącą konfigurację zapytań - - - - Ver consulta SQL - Wyświetl zapytanie SQL - - - - Sin estilo - Bez koloru - - - - Quitar totales de fila - Usuń sumy wierszy - - - Quitar subtotales de columna - Usuń wiersz z sumą częściową - - - Totales de fila - Suma - - - Subtotales de columna - Podsumy kolumn - - - Totales de columna - Suma - - - Quitar totales de columna - Usun wiersz z sumą - - - Sólo porcentajes - Tylko odsetki - - - Sólo valores - Tylko wartości - - - Valores y porcentajes - Wartości i odsetki - - - Tendencia - Trend - - - Quitar tendencia - Usuń trend - - - - Totales - Suma - - - Porcentajes - Procenty - - - Código de color - Kolor - - - Propiedades de la tabla - Właściości tabeli - - - SubTotales - Suma częściowa - - - - Código de color para la columna: - Kod koloru dla kolumny: - - - - Desvincular del informe: - Odłącz raport: - - - - Configurar caché del modelo - Caché configuration - - - - Caché eliminada correctamente - Pamięć podręczna usunięta poprawnie - - - - No ha sido posible eliminar la caché - Błąd podczas usuwania pamięci podręcznej - - - - Actualizar los datos del modelo cada: - Aktualizuj model danych co: - - - - Hora/s - Godzinę/godziny - - - - Día/s - Dzień/dni - - - - Sin caché - Brak pamięci podręcznej - - - - Borrar cache del modelo - Usuń pamięć podręczną modelu - - - - Envío de alertas por mail - Mail alerts - - - - Enviar mail de alerta cada: - Wysyłaj mail co: - - - - Destinatarios - Docelowa baza danych - - - - Contenido del mail: - Treść wiadomości: - - - - A las - At - - - - - No hay columnas válidas - No valid columns - - - - - Configuración de seguridad - Ustawienia bezpieczeństwa - - - - Ver configuración de seguridad - Zobacz ustawienia bezpieczeństwa - - - - Visibilidad de tablas - Widoczność tabeli - - - Visibilidad a nivel de modelo - Widoczność na poziomie modelu - - - No tiene permiso para ver esta tabla - Nie masz uprawnień do przeglądania tej tabeli - - - SI tiene permiso para ver esta tabla - Masz uprawnienia do przeglądania tej tabeli - - - - No tiene permiso para ver este modelo - Nie masz uprawnień do oglądania tego modelu - - - SI tiene permiso para ver este modelo - Masz uprawnienia do oglądania tego modelu - - - Los usuarios y grupos que pueden ver el modelo son SOLO los definidos explicitamente. - Użytkownicy i grupy, które mogą zobaczyć model, to TYLKO osoby wyraźnie zdefiniowane - - - Cualquier usuario puede ver el modelo. Los filtros de seguridad se definen a nivel de tabla y columna concreta. - Każdy użytkownik może zobaczyć model. Filtry bezpieczeństwa są definiowane na poziomie określonej tabeli i kolumny. - - - - - TABLAS - TABLICE - - - - PERMISOS - ZEZWOLENIA - - - - - VISIBLE - WIDOCZNY - - - - - COLUMNAS - KOLUMNY - - - - Gestión de alertas - Alert management - - - - - ALERTAS - POWIADOMIENIA - - - - Ir al informe - Go to dashboard - - - - Gestión de alertas - Zarządzanie komunikatami - - - - PANEL - PANEL - - - - INFORME - RAPORT - - - - Un Parallel Set necesita dos o más categorias y un campo numérico - Zestaw równoległy wymaga co najmniej dwóch kategorii i pola numerycznego - - - - Un Tree Map necesita un campo numérico y una o más categorias - Tree Map wymaga pola numerycznego i co najmniej jednej kategorii - - - - Un Scatter Plot necesita una categoria y dos o tres campos numéricos - Scatter Plot wymaga jednej kategorii i dwóch lub trzech pól numerycznych - - - - El velocímetro necesita uno o dos valores numéricos. En caso de disponer de dos valores el segundo se interpretará como límite - Gauge requires uno or two numeric values, if two values are provided second one is interpreted as a limit - - - Un histograma requiere una única columna de valores numericos de los que se calculará la frecuencia - Histogram wymaga pojedynczej kolumny wartości liczbowych, z których obliczana jest częstotliwość. - - - - Un embudo necesitar una categoría y un valor numérico - Lejek będzie wymagał kategorii i wartości liczbowej - - - - Credenciales correctas - Prawidłowe dane uwierzytelniające - - - - Un gráfico de piramide necesita de dos categorías y un valor numérico - Wykres piramidowy wymaga dwóch kategorii i wartości liczbowej - - - - Comprobar credenciales - Sprawdź dane uwierzytelniające - - - - Gestión de correo y envio de mails - Email i wysyłanie wiadomości - - - - Configuración guardada correctamente - Ustawienia zapisane pomyślnie - - - - Habilitar caché - Zezwalaj na pamięć podręczną - - - - Configurar Caché - Zarządzanie pamięcią podręczną - - - - Conexión - Połączenie - - - - CREA UN NUEVO INFORME - TWÓJ NOWY RAPORT - - - - CUENTA* - KONTO* - - - - CUENTA - KONTO - - - - Clique sobre un entidad para ver sus atributos. - Click on an entity to see its attributes - - - - Atributos de una entidad. Arrastre los atrubutos a la selección o los filtros para consultarlos. Haciendo click sobre el atributo se accede a sus propiedaes. - Attributes of an entity. Drag attributes onto selection or filters to view them. By clicking on the attribute you access its properties - - - - Para lanzar una consulta. Seleccione los atributos que desea ver, Clique sobre ellos para configurarlos y ejecute la consulta. Siempre podrá volver a esta vista. - To launch a query. Select the attributes you want to see, click on them to configure them and run the query. You can always go back to this view. - - - - Agregación - Agregacja - - - - Número de decimales - Decimal places - - - - Configuración del envío por email - Wysyłanie wiadomości email - - - - Enviar por email - Wyślij email - - - - Sin alertas de correo - Bez powiadomienia - - - - Envio de informes por email - Dashboards mail sending - - - - Suma acumulativa - Łączna suma - - - - Configurar alertas - Ustawienia powiadomień - - - - - Filtros - Filtery - - - - La función de comparar sólo se puede activar si se dispone de un campo de fecha agregado por mes y un único campo numèrico agregado - Compare function is only allowed in queries with one date field monthly or weekly aggregated and one numeric field - - - - - Si esta opción está seleccionada, sólo el propietario del informe y los administradores podrán guardar los cambios - Jeśli ta opcja jest zaznaczona, tylko właściciel raportu i administratorzy będą mogli zapisywać zmiany - - - Edición privada: - Edycja prywatna: - - - - Mostrar Etiquetas - Pokaż tagi - - - Mostrar Etiquetas en Porcentaje - Pokaż tagi w procentach - - - - Columnas - kolumny - - - - Mostrar o ocultar las etiquetas sobre los gráficos - Pokaż lub ukryj etykiety na wykresach - - - - Mostrar o ocultar las etiquetas en porcentaje sobre los gráficos - Pokaż lub ukryj etykiety procentowe na wykresach - - - - Elige cuantas columnas quieres mostrar - Wybierz ile kolumn chcesz wyświetlić - - - - La función de añadir tendencia sólo se puede activar en los gràficos de lineas - Funkcja trendu jest dozwolona tylko na wykresach liniowych - - - - Puedes añadir palabras separadas por comas, que se aplicarán como filtros de tipo LIKE a la hora de recuperar las tablas de tu base de datos - Można dodać słowa oddzielone przecinkami, które zostaną zastosowane jako filtry LIKE podczas pobierania tabel z bazy danych. - - - - Si activas ésta función se calculará la suma acumulativa - para los campos numéricos que eligas. Sólo se puede activar si la fecha está agregada por mes o dia. - Aktywacja tej funkcji spowoduje obliczenie sumy skumulowanej dla plików numerycznych. - Można go aktywować tylko wtedy, gdy pole danych jest agregowane według miesiąca, tygodnia lub dnia. - - - - La suma acumulativa sólo se puede aplicar si se dispone de una única serie no numérica. - Suma kumulatywna może być zastosowana tylko w jednej serii nienumerycznej. - - - - Puedes desactivar la función acumulativa en el campo de fecha o quitar una columna no numérica. - Wyłącz funkcję kumulacji w polu danych lub usuń jedno pole nienumeryczne. - - - - GUARDAR COMO... - ZAPISZ JAKO... - - - - GUARDAR COMO - ZAPISZ JAKO - - - - - EDITAR ESTILOS DEL INFORME - EDYCJA STYLU PANELU - - - - Título del informe - TYTUŁ RAPORTU - - - - Filtros - Filtry - - - - Título del panel - Tytuł panelu - - - - Contenido del panel - Treść panelu - - - - Tipo de fuente - Typ czcionki - - - - Tamaño de fuente - Rozmiar czcionki - - - - Color de la fuente - Kolor czcionki - - - - - Color del fondo - Kolor tła - - - - Color del panel - Kolor panelu - - - - EDITAR ESTILOS - EDYTUJ STYL - - - - Izquierda - Lewo - - - Centro - Po środku - - - Derecha - Prawo - - - - Volver a los valores por defecto - Ustaw domyślnie - - - - Previsualización - Podgląd - - - - Título del informe - Tytuł raportu - - - - Título del panel - Tytuł raportu - - - - Rango - Zakres - - - - Número de - Ilość - - - - en este rango - w tym zakresie - - - - -Si -Tak - - - -No -Nie - - - -Nombre columna duplicada: -Zduplikowana nazwa kolumny: - - - -Posición del filtro en el informe -Filtruj pozycję w raporcie - - - -Definir la visibilidad del filtro. Público: todos pueden usarlo. Deshabilitado: El resto de usuarios pueden ver el filtro pero no pueden modificarlo. Oculto: El resto de usuario no pueden ver el filtro. Pero se les aplica -Określ widoczność filtra. Publiczny: każdy może z niego korzystać. Wyłączone: Inni użytkownicy mogą zobaczyć filtr, ale nie mogą go modyfikować. Ukryty: Inni użytkownicy nie mogą zobaczyć filtra, ale to ich dotyczy - - - - VALORES NO NULOS NI VACÍOS (not null and != '') - WARTOŚCI NIE NULL LUB PUSTE (not null and != '') - - - - VALORES NULOS O VACÍOS (null or = '') - WARTOŚCI NULL LUB PUSTE (null or = '') - - - -Alias del filtro (opcional) -Alias ​​filtra (opcjonalnie) - - - - Este panel no está disponible por falta de permisos - Ten Panel nie jest dostępny ze względu na brak uprawnień - - - - Este panel no está disponible por falta de permisos en un filtro - Ten panel jest niedostępny ze względu na brak uprawnień do filtra - - - El año pasado, completo - W zeszłym roku, kompletne - - - Aplicar - Stosować - - - - Diseño de la tabla cruzada: - Projektowanie stołów krzyżowych: - - - Este eje debe contener al menos un elemento - Oś ta musi zawierać co najmniej jeden element - - - • Eje vertical: Arrastre aquí los campos. - • Eix vertical: Arrossegueu aquí els camps. - - - • Eje horizontal: Arrastre aquí los campos para el eje horizontal de la tabla cruzada. - • Eix horitzontal: Arrossegueu aquí els camps per a l'eix horitzontal de la taula creuada. - - - • Eje numérico: Arrastre aquí solo los campos numéricos. - • Eix numèric: Arrossegueu aquí només els camps numèrics. - - - Filtro sobre todos los registros - Filtruj według wszystkich rekordów - - - Filtro sobre los resultados - Filtruj wyniki - - - Agregación - Zbiór - - - Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 - Podczas konfigurowania zakresu agregacje zostaną zablokowane. Przykład prawidłowego zakresu - 12:18:50:100 - - - Rangos: - Szeregi: - - - Añadir Rango - Dodaj rangę - - - Rango - zakres - - - El correcto orden de los límites del rango van de menor a mayor - Prawidłowa kolejność granic zakresu jest następująca od najmniejszej do największej - - - El último caracter del rango debe ser un número - Ostatni znak zakresu musi być liczbą - - - No es posible crear un rango nuevo por que ya existe uno configurado - Nie można utworzyć nowego zakresu, ponieważ jeden już istnieje i jest skonfigurowany. - - - Entre - Między - - - - From 8dd72cec44c066605ed77186d13c00442fe1b985 Mon Sep 17 00:00:00 2001 From: juanSTIC Date: Wed, 29 Jan 2025 10:38:19 +0100 Subject: [PATCH 47/47] Fix translation errors in messages.gl.xlf file --- eda/eda_app/src/locale/messages.gl.xlf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eda/eda_app/src/locale/messages.gl.xlf b/eda/eda_app/src/locale/messages.gl.xlf index 64d388074..66f721f65 100644 --- a/eda/eda_app/src/locale/messages.gl.xlf +++ b/eda/eda_app/src/locale/messages.gl.xlf @@ -4345,7 +4345,7 @@ Al configurar un Rango las agregaciones quedarán bloqueadas, Ejemplo de un rango válido - 12:18:50:100 - Ao configurar un intervalo, as agregacións bloquearanse. Exemplo dun intervalo válido: 12:18:50:100 + Ao configurar un rango, as agregacións bloquearanse. Exemplo dun rango válido: 12:18:50:100 Rangos: @@ -4361,15 +4361,15 @@ El correcto orden de los límites del rango van de menor a mayor - A orde correcta dos límites do intervalo é de menor a maior + A orde correcta dos límites do rango é de menor a maior El último caracter del rango debe ser un número - O último carácter do intervalo debe ser un número + O último carácter do rango debe ser un número No es posible crear un rango nuevo por que ya existe uno configurado - Non é posible crear un novo intervalo porque xa existe un configurado. + Non é posible crear un novo rango porque xa existe un configurado. Entre