Skip to content
Snippets Groups Projects
Commit b5ff966c authored by mathias.chouet's avatar mathias.chouet
Browse files

Modale pour l'édition des valeurs du tableau PAB

parent cfe75a30
No related branches found
No related tags found
1 merge request!49Resolve "Ajout du module de calcul d'une passe à bassins"
...@@ -18,6 +18,7 @@ import { ...@@ -18,6 +18,7 @@ import {
MatListModule, MatListModule,
MatCardModule, MatCardModule,
MatProgressBarModule, MatProgressBarModule,
MatRadioModule,
MatTableModule, MatTableModule,
MatSnackBarModule, MatSnackBarModule,
MatBadgeModule, MatBadgeModule,
...@@ -82,6 +83,7 @@ import { PabTableComponent } from "./components/pab-table/pab-table.component"; ...@@ -82,6 +83,7 @@ import { PabTableComponent } from "./components/pab-table/pab-table.component";
import { DialogConfirmEmptySessionComponent } from "./components/dialog-confirm-empty-session/dialog-confirm-empty-session.component"; import { DialogConfirmEmptySessionComponent } from "./components/dialog-confirm-empty-session/dialog-confirm-empty-session.component";
import { DialogConfirmCloseCalcComponent } from "./components/dialog-confirm-close-calc/dialog-confirm-close-calc.component"; import { DialogConfirmCloseCalcComponent } from "./components/dialog-confirm-close-calc/dialog-confirm-close-calc.component";
import { DialogEditPabComponent } from "./components/dialog-edit-pab/dialog-edit-pab.component";
import { DialogEditParamComputedComponent } from "./components/dialog-edit-param-computed/dialog-edit-param-computed.component"; import { DialogEditParamComputedComponent } from "./components/dialog-edit-param-computed/dialog-edit-param-computed.component";
import { DialogEditParamValuesComponent } from "./components/dialog-edit-param-values/dialog-edit-param-values.component"; import { DialogEditParamValuesComponent } from "./components/dialog-edit-param-values/dialog-edit-param-values.component";
import { DialogGeneratePABComponent } from "./components/dialog-generate-pab/dialog-generate-pab.component"; import { DialogGeneratePABComponent } from "./components/dialog-generate-pab/dialog-generate-pab.component";
...@@ -127,6 +129,7 @@ const appRoutes: Routes = [ ...@@ -127,6 +129,7 @@ const appRoutes: Routes = [
MatListModule, MatListModule,
MatMenuModule, MatMenuModule,
MatProgressBarModule, MatProgressBarModule,
MatRadioModule,
MatSelectModule, MatSelectModule,
MatSidenavModule, MatSidenavModule,
MatSnackBarModule, MatSnackBarModule,
...@@ -155,6 +158,7 @@ const appRoutes: Routes = [ ...@@ -155,6 +158,7 @@ const appRoutes: Routes = [
CalculatorResultsComponent, CalculatorResultsComponent,
DialogConfirmCloseCalcComponent, DialogConfirmCloseCalcComponent,
DialogConfirmEmptySessionComponent, DialogConfirmEmptySessionComponent,
DialogEditPabComponent,
DialogEditParamComputedComponent, DialogEditParamComputedComponent,
DialogEditParamValuesComponent, DialogEditParamValuesComponent,
DialogGeneratePABComponent, DialogGeneratePABComponent,
...@@ -196,6 +200,7 @@ const appRoutes: Routes = [ ...@@ -196,6 +200,7 @@ const appRoutes: Routes = [
entryComponents: [ entryComponents: [
DialogConfirmCloseCalcComponent, DialogConfirmCloseCalcComponent,
DialogConfirmEmptySessionComponent, DialogConfirmEmptySessionComponent,
DialogEditPabComponent,
DialogEditParamComputedComponent, DialogEditParamComputedComponent,
DialogEditParamValuesComponent, DialogEditParamValuesComponent,
DialogGeneratePABComponent, DialogGeneratePABComponent,
......
...@@ -3,6 +3,12 @@ ...@@ -3,6 +3,12 @@
"Q": "Flow", "Q": "Flow",
"Z1": "Upstream elevation", "Z1": "Upstream elevation",
"Z2": "Downstream elevation", "Z2": "Downstream elevation",
"LB": "Longueur du bassin",
"BB": "Largeur du bassin",
"PB": "Profondeur moyenne du bassin",
"W": "Gate opening",
"ZRAM": "Bottom elevation",
"ZRMB": "Mid-basin elevation",
"fs_bassin": "Basin", "fs_bassin": "Basin",
"fs_cloison_aval": "Downstream wall", "fs_cloison_aval": "Downstream wall",
"bassin_container": "Basins", "bassin_container": "Basins",
...@@ -15,5 +21,6 @@ ...@@ -15,5 +21,6 @@
"UNIT_YMOY": "m", "UNIT_YMOY": "m",
"UNIT_Z": "m", "UNIT_Z": "m",
"UNIT_ZRAM": "m", "UNIT_ZRAM": "m",
"UNIT_ZRB": "m" "UNIT_ZRB": "m",
"UNIT_ZRMB": "m"
} }
\ No newline at end of file
...@@ -3,6 +3,12 @@ ...@@ -3,6 +3,12 @@
"Q": "Débit", "Q": "Débit",
"Z1": "Cote amont", "Z1": "Cote amont",
"Z2": "Cote aval", "Z2": "Cote aval",
"LB": "Longueur du bassin",
"BB": "Largeur du bassin",
"PB": "Profondeur moyenne du bassin",
"W": "Ouverture de vanne",
"ZRAM": "Cote de radier amont",
"ZRMB": "Cote de radier mi-bassin",
"fs_bassin": "Bassin", "fs_bassin": "Bassin",
"fs_cloison_aval": "Cloison aval", "fs_cloison_aval": "Cloison aval",
"bassin_container": "Bassins", "bassin_container": "Bassins",
...@@ -15,5 +21,6 @@ ...@@ -15,5 +21,6 @@
"UNIT_YMOY": "m", "UNIT_YMOY": "m",
"UNIT_Z": "m", "UNIT_Z": "m",
"UNIT_ZRAM": "m", "UNIT_ZRAM": "m",
"UNIT_ZRB": "m" "UNIT_ZRB": "m",
"UNIT_ZRMB": "m"
} }
\ No newline at end of file
<h1 mat-dialog-title [innerHTML]="uitextEditPabTitle"></h1>
<form>
<div mat-dialog-content>
<!-- récap selection -->
<!-- champ à modifier -->
<mat-form-field class="select-form-field">
<mat-select [placeholder]="uitextVariable" [(value)]="variable">
<mat-option *ngFor="let v of availableVariables" [value]="v.value">
{{ v.label }}
</mat-option>
</mat-select>
</mat-form-field>
<!-- ngDefaultControl : see https://github.com/angular/components/issues/8267 -->
<mat-radio-group ngDefaultControl [(ngModel)]="varAction" name="varAction">
<div class="radio-button-and-input-wrapper rbaiw-set-value">
<mat-radio-button value="set-value">
{{ uitextSetValue }}
</mat-radio-button>
<mat-form-field class="input-form-field">
<input matInput [(ngModel)]="valueToSet" name="valueToSet" #valueToSetRef="ngModel"
(keydown.enter)="onEnterPressed($event)" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$">
</mat-form-field>
<mat-error *ngIf="varAction === 'set-value' && valueToSetRef.invalid">
{{ uitextMustBeANumber }}
</mat-error>
</div>
<div class="radio-button-and-input-wrapper rbaiw-delta">
<mat-radio-button value="delta">
{{ uitextDelta }}
</mat-radio-button>
<mat-form-field class="input-form-field">
<input matInput [(ngModel)]="delta" name="delta" #deltaRef="ngModel"
(keydown.enter)="onEnterPressed($event)" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$">
</mat-form-field>
<mat-error *ngIf="varAction === 'delta' && deltaRef.invalid">
{{ uitextMustBeANumber }}
</mat-error>
</div>
<div class="radio-button-and-input-wrapper">
<mat-radio-button value="interpolate">
{{ uitextInterpolate }}
</mat-radio-button>
</div>
</mat-radio-group>
</div>
<div mat-dialog-actions [attr.align]="'end'">
<button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial>
{{ uitextCancel }}
</button>
<button mat-raised-button type="submit" color="warn" (click)="applyValues()"
[disabled]="buttonDisabled(valueToSetRef, deltaRef)">
{{ uitextSave }}
</button>
</div>
</form>
.mat-dialog-content {
margin-bottom: 2em;
overflow: inherit; // wtf
}
mat-form-field.select-form-field {
width: 100%;
margin-bottom: 10px;
}
.radio-button-and-input-wrapper {
margin-bottom: .5em;
mat-radio-button {
width: 60%;
}
mat-form-field.input-form-field {
width: 35%;
margin-left: 5%;
}
mat-error {
font-size: .8em;
margin-top: -12px;
margin-bottom: 15px;
}
&.rbaiw-set-value, &.rbaiw-delta {
margin-top: -1em;
}
}
import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
import { Inject, Component } from "@angular/core";
import { I18nService } from "../../services/internationalisation/internationalisation.service";
@Component({
selector: "dialog-edit-pab",
templateUrl: "dialog-edit-pab.component.html",
styleUrls: [ "dialog-edit-pab.component.scss" ]
})
export class DialogEditPabComponent {
/** variables eligible to modification */
public availableVariables: any[];
/** symbols of the variables eligible to modification */
public availableVariableSymbols: string[];
/** variable to modify on every selected object */
public variable: string;
/** action to apply to the variable */
public varAction: string;
/** value to set to all occurrences of the variable */
public valueToSet: number;
/** delta to apply (add) to all occurrences of the variable */
public delta: number;
constructor(
public dialogRef: MatDialogRef<DialogEditPabComponent>,
private intlService: I18nService,
@Inject(MAT_DIALOG_DATA) public data: any
) {
this.availableVariables = this.data.availableVariables;
this.availableVariableSymbols = this.availableVariables.map(av => av.value);
this.variable = this.availableVariableSymbols[0];
// default action
this.varAction = "set-value";
// example values for validation / avoiding using a placeholder
this.valueToSet = 1.5;
this.delta = -0.01;
}
public onEnterPressed($event) {
console.log("enter pressed !!");
}
public applyValues() {
console.log("Apply values !!", this.varAction, this.variable, this.valueToSet, this.delta);
}
public buttonDisabled(value: any, delta: any) {
return (
(this.varAction === "set-value" && ! value.valid)
|| (this.varAction === "delta" && ! delta.valid)
);
}
public variableLabel(v: string) {
for (const av of this.availableVariables) {
if (av.value === v) {
return av.label;
}
}
}
public get uitextEditPabTitle() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_TITLE");
}
public get uitextVariable() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE");
}
public get uitextSetValue() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE");
}
public get uitextDelta() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_DELTA");
}
public get uitextInterpolate() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE");
}
public get uitextSetValueInput() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_SET_VALUE_INPUT");
}
public get uitextDeltaInput() {
return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_DELTA_INPUT");
}
public get uitextMustBeANumber(): string {
return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER");
}
public get uitextSave() {
return this.intlService.localizeText("INFO_OPTION_SAVE");
}
public get uitextCancel() {
return this.intlService.localizeText("INFO_OPTION_CANCEL");
}
}
import { Component, Input, Output, EventEmitter, OnInit } from "@angular/core"; import { Component, Input, Output, EventEmitter, OnInit } from "@angular/core";
import { MatDialog } from "@angular/material";
import { import {
Pab, Pab,
Session, Session,
...@@ -15,6 +17,8 @@ import { ...@@ -15,6 +17,8 @@ import {
import { I18nService } from "../../services/internationalisation/internationalisation.service"; import { I18nService } from "../../services/internationalisation/internationalisation.service";
import { PabTable } from "../../formulaire/pab-table"; import { PabTable } from "../../formulaire/pab-table";
import { DialogEditPabComponent } from "../dialog-edit-pab/dialog-edit-pab.component";
import { FormulaireService } from "../../services/formulaire/formulaire.service";
/** /**
* The big editable data grid for calculator type "Pab" (component) * The big editable data grid for calculator type "Pab" (component)
...@@ -64,7 +68,9 @@ export class PabTableComponent implements /* DoCheck, AfterViewInit, */ OnInit { ...@@ -64,7 +68,9 @@ export class PabTableComponent implements /* DoCheck, AfterViewInit, */ OnInit {
private latestClickedCell: any; private latestClickedCell: any;
public constructor( public constructor(
private i18nService: I18nService private i18nService: I18nService,
private formService: FormulaireService,
private editPabDialog: MatDialog
) { ) {
this.selectedItems = []; this.selectedItems = [];
} }
...@@ -769,8 +775,35 @@ export class PabTableComponent implements /* DoCheck, AfterViewInit, */ OnInit { ...@@ -769,8 +775,35 @@ export class PabTableComponent implements /* DoCheck, AfterViewInit, */ OnInit {
console.log("Remove !!!"); console.log("Remove !!!");
} }
// show modal dialog for values edition
public showEditPab() { public showEditPab() {
console.log(">> Edit PAB !!"); if (this.selectedItems.length > 0) {
// list variables eligible to modification
const availableVariables: any[] = [];
for (const c of this.selectedItems) {
for (const p of c.parameterIterator) { // deep one
if (
p.visible &&
! availableVariables.map(av => av.value).includes(p.symbol)
) {
availableVariables.push({
label: this.formService.expandVariableNameAndUnit(CalculatorType.Pab, p.symbol),
value: p.symbol
});
}
}
}
// open dialog
const dialogRef = this.editPabDialog.open(
DialogEditPabComponent,
{
data: {
availableVariables: availableVariables
},
disableClose: true
}
);
}
} }
/* public ngAfterViewInit() { /* public ngAfterViewInit() {
......
...@@ -58,6 +58,11 @@ ...@@ -58,6 +58,11 @@
"INFO_DEVER_TITRE_COURT": "Free weir", "INFO_DEVER_TITRE_COURT": "Free weir",
"INFO_DEVER_TITRE": "Free flow weir stage-discharge laws", "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws",
"INFO_DIALOG_COMPUTED_VALUE_TITLE": "Edit initial value", "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Edit initial value",
"INFO_DIALOG_EDIT_PAB_TITLE": "Edit values",
"INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable to edit",
"INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Fixed value",
"INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta",
"INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE": "Interpolate",
"INFO_DIALOG_EMPTY_CURRENT_SESSION": "Empty current session", "INFO_DIALOG_EMPTY_CURRENT_SESSION": "Empty current session",
"INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Fix missing dependencies", "INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Fix missing dependencies",
"INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "File format versions mismatch (file: %s, jalhyd: %s)", "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "File format versions mismatch (file: %s, jalhyd: %s)",
......
...@@ -58,6 +58,11 @@ ...@@ -58,6 +58,11 @@
"INFO_DEVER_TITRE_COURT": "Déver. dénoyés", "INFO_DEVER_TITRE_COURT": "Déver. dénoyés",
"INFO_DEVER_TITRE": "Lois de déversoirs dénoyés", "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés",
"INFO_DIALOG_COMPUTED_VALUE_TITLE": "Modifier la valeur initiale", "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Modifier la valeur initiale",
"INFO_DIALOG_EDIT_PAB_TITLE": "Modifier les valeurs",
"INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable à modifier",
"INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Valeur fixe",
"INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta",
"INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE": "Interpoler",
"INFO_DIALOG_EMPTY_CURRENT_SESSION": "Vider la session courante", "INFO_DIALOG_EMPTY_CURRENT_SESSION": "Vider la session courante",
"INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Résoudre les dépendances", "INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Résoudre les dépendances",
"INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier: %s, jalhyd: %s)", "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier: %s, jalhyd: %s)",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment