diff --git a/.gitignore b/.gitignore index c8694b3ebb4918507fa82b2426552e0f6d301667..b6ac6349452cf1b6098a100248fd3a3e0197f277 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,10 @@ # See http://help.github.com/ignore-files/ for more about ignoring files. # compiled output -/dist -/build /tmp -/out-tsc -/src/main.js* -/src/app/*.js* +/src/main.js +/src/app/**/*.js +/src/app/**/*.js.map # dependencies /node_modules diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 776f649682d8bd8f770ad5e6b31d3635d7e3e00e..01ed3c11e5f745422c442e0717f2572f9bcdc1cd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,14 +1,22 @@ -import { Component } from '@angular/core'; +import { Component, ChangeDetectorRef, ApplicationRef, AfterViewChecked } from '@angular/core'; import { ParamService } from './services/param/param.service'; import { HttpService } from './services/http/http.service'; -import { InternationalisationService } from './services/internationalisation/internationalisation.service'; +import { InternationalisationService, Language, LanguageCode } from './services/internationalisation/internationalisation.service'; @Component({ selector: 'nghyd-app', template: ` + + <select [(ngModel)]=_currentLanguage (change)=onSelectLang($event)> + <option *ngFor="let l of intlService.languages" [value]=l.code>{{l.label}}</option> + </select> + <cond-distri></cond-distri> <!-- + <select name="Language" (change)=selectLang($event)> + <option *ngFor="let l of intlService.languages" [value]=l.code>{{l.label}}</option> + </select> <h1>{{title}}</h1> <param-input symbol="Q"></param-input> <param-input symbol="Q"></param-input> @@ -18,14 +26,37 @@ import { InternationalisationService } from './services/internationalisation/int providers: [ParamService, InternationalisationService, HttpService] }) export class AppComponent { - constructor(private intlService: InternationalisationService) { } + private _currentLanguage: LanguageCode; + + constructor(private intlService: InternationalisationService, private appRef: ApplicationRef) { } private initLocale() { let docLocale: string = document['locale'] as string; this.intlService.setLocale(docLocale); + this._currentLanguage = this.intlService.currentLanguage.code; } ngOnInit() { this.initLocale(); } + + private onSelectLang(evt: any) { + let v = evt.target.value; + let lc = LanguageCode[v]; + this.intlService.setLocale(lc); + + this._currentLanguage = this.intlService.currentLanguage.code; + + let tag = this.intlService.currentLanguage.tag; + document['locale'] = tag; + + // location.reload(true); + // this.cdRef.markForCheck(); + // this.cdRef.detectChanges(); + this.appRef.tick(); + } + + ngAfterViewChecked() { + this.intlService.acknowledgeLocaleChanged(); + } } diff --git a/src/app/calculators/cond_distri/conddistri.component.js b/src/app/calculators/cond_distri/conddistri.component.js deleted file mode 100644 index 4db6ed09a682163dc5f5323e6b6a58eb357914ef..0000000000000000000000000000000000000000 --- a/src/app/calculators/cond_distri/conddistri.component.js +++ /dev/null @@ -1,95 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var param_service_1 = require("../../services/param/param.service"); -var http_service_1 = require("../../services/http/http.service"); -var internationalisation_service_1 = require("../../services/internationalisation/internationalisation.service"); -var field_set_component_1 = require("../../components/field-set/field-set.component"); -var CondDistriComponent = (function () { - function CondDistriComponent(paramService, httpService, intlService) { - this.paramService = paramService; - this.httpService = httpService; - this.intlService = intlService; - this._title = "Conduite distributrice"; - this._localisation = {}; - this._config = {}; - this._fieldSets = []; - } - CondDistriComponent.prototype.loadLocalisation = function () { - var ths = this; - var processData = function (s) { - // fermeture nécessaire pour capturer la valeur de this (undefined sinon) - ths._localisation = JSON.parse(s); - ths.paramService.updateLocalisation(ths._localisation); - }; - var f = "app/calculators/cond_distri/cond_distri." + this.intlService.languageCode + ".json"; - this.httpService.httpGetRequest(undefined, undefined, undefined, f, processData); - }; - CondDistriComponent.prototype.logObject = function (obj) { - console.log(JSON.stringify(obj)); - }; - CondDistriComponent.prototype.parseConfig = function () { - this._fieldSets = []; - for (var conf_index in this._config) { - //this.logObject(this._fieldSets); - var conf = this._config[conf_index]; - //console.log(conf); - var conf_id = conf["id"]; - if (conf_id.startsWith("fs_")) { - var fieldSet = new field_set_component_1.FieldSet(); - fieldSet.title = this._localisation[conf_id]; - var fields = conf["fields"]; - for (var field_index in fields) { - var field = fields[field_index]; - // console.log(field); - if (field["type"] === "input") { - var input_id = field["id"]; - // console.log(input_id); - var param = this.paramService.getParameter(input_id); - if (param != undefined) { - //this.logObject(param); - fieldSet.params.push(param); - } - } - } - if (fieldSet.params.length > 0) { - // this.logObject(fieldSet); - this._fieldSets.push(fieldSet); - } - } - } - }; - CondDistriComponent.prototype.loadConfig = function () { - var ths = this; - var processData = function (s) { - // fermeture nécessaire pour capturer la valeur de this (undefined sinon) - ths._config = JSON.parse(s); - ths.parseConfig(); - }; - var f = "app/calculators/cond_distri/cond_distri.config.json"; - this.httpService.httpGetRequest(undefined, undefined, undefined, f, processData); - }; - CondDistriComponent.prototype.ngOnInit = function () { - this.loadLocalisation(); - this.loadConfig(); - }; - return CondDistriComponent; -}()); -CondDistriComponent = __decorate([ - core_1.Component({ - selector: 'cond-distri', - template: "\n <h1>{{_title}}</h1>\n <field-set *ngFor=\"let fs of _fieldSets\" [fieldSet]=fs></field-set>\n <!--\n <field-set *ngFor=\"let fs of _fieldSets\" title=\"fs.title\" fields=\"fs.paramList\"></field-set>\n <field-set title=\"titre de field set\" fields=\"Q,D\"></field-set>\n <param-input symbol=\"Q\"></param-input>\n <param-input symbol=\"Q\"></param-input>\n <param-input symbol=\"Ks\"></param-input>\n <field-set title=\"aaaa\"></field-set>\n -->\n " - }), - __metadata("design:paramtypes", [param_service_1.ParamService, http_service_1.HttpService, internationalisation_service_1.InternationalisationService]) -], CondDistriComponent); -exports.CondDistriComponent = CondDistriComponent; -//# sourceMappingURL=conddistri.component.js.map \ No newline at end of file diff --git a/src/app/calculators/cond_distri/conddistri.component.js.map b/src/app/calculators/cond_distri/conddistri.component.js.map deleted file mode 100644 index 6c31c4ec8f7663f4d9653b2943c3b82b07deefbe..0000000000000000000000000000000000000000 --- a/src/app/calculators/cond_distri/conddistri.component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"conddistri.component.js","sourceRoot":"","sources":["conddistri.component.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/app/calculators/cond_distri/conddistri.component.ts b/src/app/calculators/cond_distri/conddistri.component.ts index c5cf553ed1d91e7d7a627f48f5e2179772f04812..ef114c4fbbc028d03d92572aa5a4120dad285b84 100644 --- a/src/app/calculators/cond_distri/conddistri.component.ts +++ b/src/app/calculators/cond_distri/conddistri.component.ts @@ -1,4 +1,7 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, DoCheck } from '@angular/core'; +import { Response } from '@angular/http'; +import { Observable } from "rxjs/Observable"; +import 'rxjs/add/operator/toPromise'; import { ParamService } from '../../services/param/param.service'; import { HttpService } from '../../services/http/http.service'; @@ -8,21 +11,19 @@ import { FieldSet } from '../../components/field-set/field-set.component'; @Component({ selector: 'cond-distri', template: ` - <h1>{{_title}}</h1> + <h1 i18n="@@titre_cond_distri">Conduite distributrice</h1> <field-set *ngFor="let fs of _fieldSets" [fieldSet]=fs></field-set> <!-- + <h1>{{_title}}</h1> <field-set *ngFor="let fs of _fieldSets" title="fs.title" fields="fs.paramList"></field-set> <field-set title="titre de field set" fields="Q,D"></field-set> <param-input symbol="Q"></param-input> <param-input symbol="Q"></param-input> <param-input symbol="Ks"></param-input> - <field-set title="aaaa"></field-set> --> ` }) -export class CondDistriComponent implements OnInit { - private _title = "Conduite distributrice"; - +export class CondDistriComponent implements OnInit, DoCheck { private _localisation = {}; private _config = {}; private _fieldSets: FieldSet[] = []; @@ -30,7 +31,18 @@ export class CondDistriComponent implements OnInit { constructor(private paramService: ParamService, private httpService: HttpService, private intlService: InternationalisationService) { } - private loadLocalisation() { + // private loadLocalisation() { + // let ths = this; + // let processData = function (s: string) { + // // fermeture nécessaire pour capturer la valeur de this (undefined sinon) + // ths._localisation = JSON.parse(s); + // ths.paramService.updateLocalisation(ths._localisation); + // } + + // let f: string = "app/calculators/cond_distri/cond_distri." + this.intlService.languageCode + ".json" + // this.httpService.httpGetRequest(undefined, undefined, undefined, f, processData); + // } + private loadLocalisation(): Promise<string> { let ths = this; let processData = function (s: string) { // fermeture nécessaire pour capturer la valeur de this (undefined sinon) @@ -38,9 +50,15 @@ export class CondDistriComponent implements OnInit { ths.paramService.updateLocalisation(ths._localisation); } + let f: string = "app/calculators/cond_distri/cond_distri." + this.intlService.currentLanguage.tag + ".json" + let resp: Observable<Response> = this.httpService.httpGetRequestResponse(undefined, undefined, undefined, f); - let f: string = "app/calculators/cond_distri/cond_distri." + this.intlService.languageCode + ".json" - this.httpService.httpGetRequest(undefined, undefined, undefined, f, processData); + let prom = resp.map(res => res.text()).toPromise(); + prom.then((res) => { + processData(res); + }) + + return prom; } private logObject(obj: {}) { @@ -51,31 +69,25 @@ export class CondDistriComponent implements OnInit { this._fieldSets = []; for (let conf_index in this._config) { - //this.logObject(this._fieldSets); let conf = this._config[conf_index]; - //console.log(conf); let conf_id: string = conf["id"]; if (conf_id.startsWith("fs_")) { - let fieldSet: FieldSet = new FieldSet(); - fieldSet.title = this._localisation[conf_id]; + let fieldSet: FieldSet = new FieldSet(conf_id); let fields = conf["fields"]; for (let field_index in fields) { let field = fields[field_index]; - // console.log(field); if (field["type"] === "input") { let input_id = field["id"]; - // console.log(input_id); let param = this.paramService.getParameter(input_id); if (param != undefined) { - //this.logObject(param); + param.unit = field["unit"]; fieldSet.params.push(param); } } } if (fieldSet.params.length > 0) { - // this.logObject(fieldSet); this._fieldSets.push(fieldSet); } } @@ -97,5 +109,35 @@ export class CondDistriComponent implements OnInit { ngOnInit() { this.loadLocalisation(); this.loadConfig(); + this.updateLanguage(); + } + + private getFieldSet(id: string) { + for (let fs of this._fieldSets) { + if (fs._id == id) + return fs; + } + return undefined; + } + + private updateLanguage() { + for (let conf_index in this._config) { + let conf = this._config[conf_index]; + let conf_id: string = conf["id"]; + + if (conf_id.startsWith("fs_")) { + let fieldSet: FieldSet = this.getFieldSet(conf_id); + fieldSet.title = this._localisation[conf_id]; + } + } + } + + ngDoCheck() { + if (this.intlService.localeChanged) { + const promise = this.loadLocalisation() + .then(() => { + this.updateLanguage(); + }); + } } } diff --git a/src/app/components/field-set/field-set.component.js b/src/app/components/field-set/field-set.component.js deleted file mode 100644 index 7de090967104a32b6cb1a738919b4cdfd3e77f31..0000000000000000000000000000000000000000 --- a/src/app/components/field-set/field-set.component.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var ngparam_1 = require("../../services/ngparam"); -var FieldSet = (function () { - function FieldSet() { - this.params = []; - } - FieldSet.prototype.addParameter = function (prm) { - this.params.push(new ngparam_1.NgParameter(prm)); - }; - return FieldSet; -}()); -exports.FieldSet = FieldSet; -var FieldSetComponent = (function () { - function FieldSetComponent() { - } - Object.defineProperty(FieldSetComponent.prototype, "fieldSet", { - set: function (fs) { - this._fieldSet = fs; - }, - enumerable: true, - configurable: true - }); - return FieldSetComponent; -}()); -__decorate([ - core_1.Input(), - __metadata("design:type", FieldSet), - __metadata("design:paramtypes", [FieldSet]) -], FieldSetComponent.prototype, "fieldSet", null); -FieldSetComponent = __decorate([ - core_1.Component({ - selector: "field-set", - templateUrl: "./field-set.html", - styles: [".field_set_title {\ - font-weight: bold;\ - margin: 0.3em 0 0.2em;\ - padding: 0.3em;\ - background-color: #eeeeee;\ - }"] - }), - __metadata("design:paramtypes", []) -], FieldSetComponent); -exports.FieldSetComponent = FieldSetComponent; -//# sourceMappingURL=field-set.component.js.map \ No newline at end of file diff --git a/src/app/components/field-set/field-set.component.js.map b/src/app/components/field-set/field-set.component.js.map deleted file mode 100644 index 4dc6e9d41780ab0bac26a67b279eef95ea9b6393..0000000000000000000000000000000000000000 --- a/src/app/components/field-set/field-set.component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"field-set.component.js","sourceRoot":"","sources":["field-set.component.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAiD;AAIjD,kDAAqD;AAErD;IAII;QACI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAEM,+BAAY,GAAnB,UAAoB,GAAoB;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qBAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACL,eAAC;AAAD,CAAC,AAXD,IAWC;AAXY,4BAAQ;AAuBrB,IAAa,iBAAiB;IAW1B;IACA,CAAC;IALD,sBAAY,uCAAQ;aAApB,UAAqB,EAAY;YAC7B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACxB,CAAC;;;OAAA;IAIL,wBAAC;AAAD,CAAC,AAbD,IAaC;AANG;IADC,YAAK,EAAE;8BACiB,QAAQ;qCAAR,QAAQ;iDAEhC;AATQ,iBAAiB;IAV7B,gBAAS,CAAC;QACP,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,CAAC;;;;;UAKH,CAAC;KACV,CAAC;;GACW,iBAAiB,CAa7B;AAbY,8CAAiB"} \ No newline at end of file diff --git a/src/app/components/field-set/field-set.component.ts b/src/app/components/field-set/field-set.component.ts index a51264ac76a9ab996adf40670f9ecaf4b31ddd97..72187ede6eab80289167779427d811050f0ed64c 100644 --- a/src/app/components/field-set/field-set.component.ts +++ b/src/app/components/field-set/field-set.component.ts @@ -5,11 +5,17 @@ import { ParamDefinition } from 'jalhyd'; import { NgParameter } from '../../services/ngparam'; export class FieldSet { + _id: string; title: string; params: NgParameter[]; - constructor() { + constructor(id: string) { this.params = []; + this._id = id; + } + + get id() { + return this._id; } public addParameter(prm: ParamDefinition) { diff --git a/src/app/components/param-field-line/param-field-line.component.js b/src/app/components/param-field-line/param-field-line.component.js deleted file mode 100644 index 519eaf1e8b45efd94d6bda37db648b3300b25041..0000000000000000000000000000000000000000 --- a/src/app/components/param-field-line/param-field-line.component.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var param_service_1 = require("../../services/param/param.service"); -var ParamFieldLineComponent = (function () { - function ParamFieldLineComponent(paramService) { - this.paramService = paramService; - } - Object.defineProperty(ParamFieldLineComponent.prototype, "symbol", { - /** - * Parameter symbol string - */ - get: function () { - return this._param.symbol; - }, - /** - * Parameter symbol (Q, Ks, B, ...) input attribute - */ - set: function (s) { - this._param = this.paramService.getParameter(s); - this._label = this._param.label; - }, - enumerable: true, - configurable: true - }); - return ParamFieldLineComponent; -}()); -__decorate([ - core_1.Input(), - __metadata("design:type", String), - __metadata("design:paramtypes", [String]) -], ParamFieldLineComponent.prototype, "symbol", null); -ParamFieldLineComponent = __decorate([ - core_1.Component({ - selector: "param-field-line", - templateUrl: "./param-field-line.html" - }), - __metadata("design:paramtypes", [param_service_1.ParamService]) -], ParamFieldLineComponent); -exports.ParamFieldLineComponent = ParamFieldLineComponent; -//# sourceMappingURL=param-field-line.component.js.map \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.js.map b/src/app/components/param-field-line/param-field-line.component.js.map deleted file mode 100644 index 6f5f61c09bff8ffb2787dcffcf5fe2f0e0cf8b77..0000000000000000000000000000000000000000 --- a/src/app/components/param-field-line/param-field-line.component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"param-field-line.component.js","sourceRoot":"","sources":["param-field-line.component.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAyD;AAEzD,oEAAkE;AAOlE,IAAa,uBAAuB;IAwBhC,iCAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAC9C,CAAC;IAbD,sBAAY,2CAAM;QAKlB;;WAEG;aACH;YACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;QAdD;;WAEG;aAEH,UAAmB,CAAS;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,CAAC;;;OAAA;IAWL,8BAAC;AAAD,CAAC,AA1BD,IA0BC;AAdG;IADC,YAAK,EAAE;;;qDAIP;AAfQ,uBAAuB;IAJnC,gBAAS,CAAC;QACP,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,yBAAyB;KACzC,CAAC;qCAyBoC,4BAAY;GAxBrC,uBAAuB,CA0BnC;AA1BY,0DAAuB"} \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index 2f3c362b4ca1ecec17f86a1838e97e0460a1b5a6..8584b6db94fd8a426bf9a4dd58833ccfd946b304 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, DoCheck } from '@angular/core'; import { ParamService } from '../../services/param/param.service'; import { NgParameter } from '../../services/ngparam'; @@ -7,21 +7,35 @@ import { NgParameter } from '../../services/ngparam'; selector: "param-field-line", templateUrl: "./param-field-line.html" }) -export class ParamFieldLineComponent { +export class ParamFieldLineComponent implements DoCheck { private _param: NgParameter; + constructor(private paramService: ParamService) { + } + /** * associated (localised) label */ private _label: string; + /** + * associated unit + */ + get _unit(): string { + return this._param.unit; + } + + private updateLanguage() { + this._label = this._param.label; + } + /** * Parameter symbol (Q, Ks, B, ...) input attribute */ @Input() private set symbol(s: string) { this._param = this.paramService.getParameter(s); - this._label = this._param.label; + this.updateLanguage(); } /** @@ -31,6 +45,7 @@ export class ParamFieldLineComponent { return this._param.symbol; } - constructor(private paramService: ParamService) { + public ngDoCheck() { + this.updateLanguage(); } } diff --git a/src/app/components/param-field-line/param-field-line.html b/src/app/components/param-field-line/param-field-line.html index 2a91b84da0a8ef0c5799e54f3c1202ec58ee2616..b898acad30185f2c2a72ce1eee2320be109807ca 100644 --- a/src/app/components/param-field-line/param-field-line.html +++ b/src/app/components/param-field-line/param-field-line.html @@ -1,5 +1,5 @@ <tr id="tr_FT_rLargeurFond"> - <td align="right">{{_label}}</td> + <td align="right">{{_label}} ({{_unit}})</td> <td> <!-- diff --git a/src/app/components/param-input/param-input.component.js b/src/app/components/param-input/param-input.component.js deleted file mode 100644 index da6c4e74c84fc1902f88915bb2363b1e916a2a4e..0000000000000000000000000000000000000000 --- a/src/app/components/param-input/param-input.component.js +++ /dev/null @@ -1,198 +0,0 @@ -// cf. https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var forms_1 = require("@angular/forms"); -var jalhyd_1 = require("jalhyd"); -var param_service_1 = require("../../services/param/param.service"); -var internationalisation_service_1 = require("../../services/internationalisation/internationalisation.service"); -var ParamInputComponent = ParamInputComponent_1 = (function () { - function ParamInputComponent(paramService, changeDetector, intlService) { - this.paramService = paramService; - this.changeDetector = changeDetector; - this.intlService = intlService; - /** - * flag d'affichage du titre - */ - this.displayTitle = false; - // ControlValueAccessor interface - this.propagateChange = function (_) { }; - this._id = ParamInputComponent_1._idGen++; - if (ParamInputComponent_1._startTime == undefined) - ParamInputComponent_1._startTime = new Date().getTime(); - this._uiValue = new jalhyd_1.NumericalString(); - } - ParamInputComponent.prototype.hasError = function () { - var res = (this._message != undefined); - if (res) - this.log("hasError : true " + this._message); - else - this.log("hasError : false"); - return res; - }; - ParamInputComponent.prototype.getSfromUI = function () { - return this._fromUI ? " fromUI " : " fromMODEL"; - }; - ParamInputComponent.prototype.getSParam = function () { - return " " + this._paramDef.symbol + "=" + this._paramDef.toString(); - }; - ParamInputComponent.prototype.getSUIvalue = function (v) { - if (v === void 0) { v = undefined; } - if (v == undefined) - return " uiValue=" + this._uiValue.toString() + ""; - return " uiValue=" + v.toString() + ""; - }; - ParamInputComponent.prototype.ngOnInit = function () { - // retrieve parameter from symbol - this._paramDef = this.paramService.getParameter(this._paramSymbol); - }; - // private getValue() { - // if (this._paramDef.isDefined) - // return this._paramDef.v; - // return ""; - // // return this._uiValue.value; - // } - /** - * fonction appelée lorsque l'utilisateur fait une saisie - * @param event valeur du contrôle - */ - ParamInputComponent.prototype.setValue = function (event) { - this._fromUI = true; - this._uiValue.value = event; - this.log(this._uiValue.toString()); - return this.validateUIValue(); - }; - /** - * fonction appelée lors d'un rafraîchissement de l'UI - */ - ParamInputComponent.prototype.ngDoCheck = function () { - this.log("ngDoCheck start : " + this.getSParam() + this.getSUIvalue() + this.getSfromUI()); - if (this._fromUI) - this.updateMessage(this._uiValue); - else { - if (this._paramDef.isDefined) { - this.updateMessage(new jalhyd_1.NumericalString(this._paramDef.v)); - this._uiValue.value = String(this._paramDef.v); - } - else - this.updateMessage(this._uiValue); - } - this.log("ngDoCheck end : " + this.getSParam() + this.getSUIvalue()); - this._fromUI = false; - }; - ParamInputComponent.prototype.updateMessage = function (v) { - this.log("updateMessage start :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); - if (v.isNumerical) { - this._message = undefined; - try { - this._paramDef.checkValue(v.numericalValue); - } - catch (e) { - if (e instanceof jalhyd_1.ErrorMessage) - this._message = this.intlService.localizeErrorMessage(e); - else - this._message = "invalid value"; - } - } - else { - switch (this.intlService.lang) { - case internationalisation_service_1.Language.FRENCH: - this._message = "Veuillez entrer une valeur numérique"; - break; - default: - this._message = "Please enter a numerical value"; - } - } - this.log("updateMessage end :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); - }; - ParamInputComponent.prototype.validateUIValue = function () { - this.log(""); - this.log("validateValue start : val '" + this._uiValue.toString() + "'" + this.getSParam() + this.getSfromUI()); - var ok = this._uiValue.isNumerical; - if (ok) { - try { - if (!this._paramDef.isDefined || this._paramDef.v != this._uiValue.numericalValue) { - this._paramDef.v = this._uiValue.numericalValue; - this.changeDetector.detectChanges(); // provoque une détection des changements dans les contrôles - } - } - catch (e) { - ok = false; - } - } - if (!ok) { - this.log("validateValue end : " + this.getSParam()); - var err = { - rangeError: { - // given: val, - given: this._uiValue.toString(), - max: 4, - min: 0 - } - }; - return err; - } - this.log("validateValue end : " + this.getSParam()); - return null; - }; - ParamInputComponent.prototype.log = function (m) { - // let t: number = new Date().getTime() - ParamInputComponent._startTime; - // console.log("ParamInputComponent(" + this._id + ") " + t + " : " + m); - }; - /* - //From ControlValueAccessor interface - writeValue(value: any) { - if (value !== this.innerValue) { - this.innerValue = value; - } - } - */ - ParamInputComponent.prototype.writeValue = function (value) { - this.log("writeValue " + value); - }; - ParamInputComponent.prototype.registerOnChange = function (fn) { - this.propagateChange = fn; - }; - ParamInputComponent.prototype.registerOnTouched = function () { }; - return ParamInputComponent; -}()); -ParamInputComponent._idGen = 0; // A VIRER -__decorate([ - core_1.Input('symbol'), - __metadata("design:type", String) -], ParamInputComponent.prototype, "_paramSymbol", void 0); -ParamInputComponent = ParamInputComponent_1 = __decorate([ - core_1.Component({ - selector: 'param-input[symbol]', - /* OK - <input placeholder="{{_paramDef.symbol}}" [ngModel]="_paramDef.v" (ngModelChange)="setValue($event)"/> - <p *ngIf="_message">{{_message}}</p> - */ - templateUrl: "./param-input.component.html", - providers: [ - { - provide: forms_1.NG_VALUE_ACCESSOR, - useExisting: core_1.forwardRef(function () { return ParamInputComponent_1; }), - multi: true - }, - { - provide: forms_1.NG_VALIDATORS, - useExisting: core_1.forwardRef(function () { return ParamInputComponent_1; }), - multi: true - } - ] - }), - __metadata("design:paramtypes", [param_service_1.ParamService, core_1.ChangeDetectorRef, internationalisation_service_1.InternationalisationService]) -], ParamInputComponent); -exports.ParamInputComponent = ParamInputComponent; -var ParamInputComponent_1; -//# sourceMappingURL=param-input.component.js.map \ No newline at end of file diff --git a/src/app/components/param-input/param-input.component.js.map b/src/app/components/param-input/param-input.component.js.map deleted file mode 100644 index 085cf3bd9db25966062aab650223ffacc161e929..0000000000000000000000000000000000000000 --- a/src/app/components/param-input/param-input.component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"param-input.component.js","sourceRoot":"","sources":["param-input.component.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/app/components/param-input/param-input.component.ts b/src/app/components/param-input/param-input.component.ts index e87dd7e08e1e0e170c840e960e7b7ca2e720fac5..d6359b1df977aa202451577ba7de94711a3a2bf2 100644 --- a/src/app/components/param-input/param-input.component.ts +++ b/src/app/components/param-input/param-input.component.ts @@ -6,7 +6,7 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl } f import { ParamDefinition, NumericalString, ErrorMessage } from 'jalhyd'; import { ParamService } from '../../services/param/param.service'; -import { InternationalisationService, Language } from '../../services/internationalisation/internationalisation.service'; +import { InternationalisationService, LanguageCode } from '../../services/internationalisation/internationalisation.service'; import { NgParameter } from '../../services/ngparam'; @Component({ @@ -74,10 +74,10 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec hasError(): boolean { let res = (this._message != undefined); - if (res) - this.log("hasError : true " + this._message); - else - this.log("hasError : false"); + // if (res) + // this.log("hasError : true " + this._message); + // else + // this.log("hasError : false"); return res; } @@ -116,7 +116,7 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec private setValue(event: any) { this._fromUI = true; this._uiValue.value = event; - this.log(this._uiValue.toString()); + // this.log(this._uiValue.toString()); return this.validateUIValue(); } @@ -124,7 +124,7 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec * fonction appelée lors d'un rafraîchissement de l'UI */ ngDoCheck(): void { - this.log("ngDoCheck start : " + this.getSParam() + this.getSUIvalue() + this.getSfromUI()); + // this.log("ngDoCheck start : " + this.getSParam() + this.getSUIvalue() + this.getSfromUI()); if (this._fromUI) this.updateMessage(this._uiValue); @@ -137,13 +137,13 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec this.updateMessage(this._uiValue); } - this.log("ngDoCheck end : " + this.getSParam() + this.getSUIvalue()); + // this.log("ngDoCheck end : " + this.getSParam() + this.getSUIvalue()); this._fromUI = false; } private updateMessage(v: NumericalString) { - this.log("updateMessage start :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); + // this.log("updateMessage start :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); if (v.isNumerical) { this._message = undefined; @@ -159,8 +159,8 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec } } else { - switch (this.intlService.lang) { - case Language.FRENCH: + switch (this.intlService.currentLanguage.code) { + case LanguageCode.FRENCH: this._message = "Veuillez entrer une valeur numérique"; break; @@ -169,12 +169,12 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec } } - this.log("updateMessage end :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); + // this.log("updateMessage end :" + this.getSParam() + this.getSfromUI() + this.getSUIvalue(v) + " message=" + this._message); } private validateUIValue() { - this.log(""); - this.log("validateValue start : val '" + this._uiValue.toString() + "'" + this.getSParam() + this.getSfromUI()); + // this.log(""); + // this.log("validateValue start : val '" + this._uiValue.toString() + "'" + this.getSParam() + this.getSfromUI()); let ok: boolean = this._uiValue.isNumerical; if (ok) { @@ -190,7 +190,7 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec } if (!ok) { - this.log("validateValue end : " + this.getSParam()); + // this.log("validateValue end : " + this.getSParam()); let err = { rangeError: { @@ -203,13 +203,13 @@ export class ParamInputComponent implements ControlValueAccessor, OnInit, DoChec return err; } - this.log("validateValue end : " + this.getSParam()); + // this.log("validateValue end : " + this.getSParam()); return null; } private log(m: string) { - // let t: number = new Date().getTime() - ParamInputComponent._startTime; - // console.log("ParamInputComponent(" + this._id + ") " + t + " : " + m); + let t: number = new Date().getTime() - ParamInputComponent._startTime; + console.log("ParamInputComponent(" + this._id + ") " + t + " : " + m); } // ControlValueAccessor interface diff --git a/src/app/i18n-providers.ts b/src/app/i18n-providers.ts index 76ee311c5c8e870ada38fad12a9bb8517caf13b5..6a4dfa8fb40c3017dfd7e2d92cfb1b87452f8ced 100644 --- a/src/app/i18n-providers.ts +++ b/src/app/i18n-providers.ts @@ -4,13 +4,14 @@ import { CompilerConfig } from '@angular/compiler'; export function getTranslationProviders(): Promise<Object[]> { // Get the locale id from the global + // const locale = localStorage.getItem('localeId'); const locale = document['locale'] as string; // return no providers if fail to get translation file for locale const noProviders: Object[] = []; // No locale or French: no translation providers - if (!locale || locale === 'fr-FR') { + if (!locale || locale === 'fr-FR' || locale === 'fr') { return Promise.resolve(noProviders); } diff --git a/src/app/services/http/http.service.js b/src/app/services/http/http.service.js deleted file mode 100644 index a16539cfafea09516ef69e191da6e8a176aa1745..0000000000000000000000000000000000000000 --- a/src/app/services/http/http.service.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var http_1 = require("@angular/http"); -var HttpService = (function () { - function HttpService(http) { - this.http = http; - } - HttpService.prototype.concat = function (s1, s2) { - if (s1 == undefined) - return s2; - if (s2 == undefined) - return s1; - return s1 + s2; - }; - HttpService.prototype.httpGetRequest = function (protocol, host, port, path, processDataCallback) { - var url; - if (protocol != undefined) - url = protocol + "://" + host; - else if (host != undefined) - url = host; - if (port != undefined) - url = this.concat(url, ":" + String(port)); - var p = path === "/" ? "" : path; - url = this.concat(url, "/" + p); - //console.log(url); - var enc = encodeURI(url); - var opts = new http_1.RequestOptions(); - this.http.get(enc, opts) - .map(function (res) { return res.text(); }) - .subscribe(function (data) { return processDataCallback(data); }); - }; - return HttpService; -}()); -HttpService = __decorate([ - core_1.Injectable(), - __metadata("design:paramtypes", [http_1.Http]) -], HttpService); -exports.HttpService = HttpService; -//# sourceMappingURL=http.service.js.map \ No newline at end of file diff --git a/src/app/services/http/http.service.js.map b/src/app/services/http/http.service.js.map deleted file mode 100644 index cc04e15fd964ed0ee5e4910a5378b8f59cf25f2b..0000000000000000000000000000000000000000 --- a/src/app/services/http/http.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"http.service.js","sourceRoot":"","sources":["http.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAA2C;AAC3C,sCAAkF;AAGlF,IAAa,WAAW;IACpB,qBAAoB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAAI,CAAC;IAE3B,4BAAM,GAAd,UAAe,EAAU,EAAE,EAAU;QACjC,EAAE,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;YAChB,MAAM,CAAC,EAAE,CAAC;QAEd,EAAE,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC;YAChB,MAAM,CAAC,EAAE,CAAC;QAEd,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACnB,CAAC;IAEM,oCAAc,GAArB,UAAsB,QAAgB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,mBAAwC;QACtH,IAAI,GAAW,CAAC;QAChB,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;YACtB,GAAG,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;YACvB,GAAG,GAAG,IAAI,CAAC;QAEf,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC;YAClB,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;QACjC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAEhC,mBAAmB;QACnB,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,IAAI,GAAG,IAAI,qBAAc,EAAE,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;aACnB,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACtB,SAAS,CACV,UAAA,IAAI,IAAI,OAAA,mBAAmB,CAAC,IAAI,CAAC,EAAzB,CAAyB,CAGpC,CAAC;IACN,CAAC;IACL,kBAAC;AAAD,CAAC,AAvCD,IAuCC;AAvCY,WAAW;IADvB,iBAAU,EAAE;qCAEiB,WAAI;GADrB,WAAW,CAuCvB;AAvCY,kCAAW"} \ No newline at end of file diff --git a/src/app/services/http/http.service.ts b/src/app/services/http/http.service.ts index f90a5b6ff149e774c3ed1784bbea15997ff409de..ecc167c565738ea0dbc5e9b2806682babcd7ec30 100644 --- a/src/app/services/http/http.service.ts +++ b/src/app/services/http/http.service.ts @@ -1,5 +1,7 @@ import { Injectable } from '@angular/core'; -import { Http, RequestOptions, RequestOptionsArgs, Headers } from '@angular/http'; +import { Http, RequestOptions, RequestOptionsArgs, Headers, Response } from '@angular/http'; +import { Observable } from "rxjs/Observable"; + @Injectable() export class HttpService { @@ -16,6 +18,17 @@ export class HttpService { } public httpGetRequest(protocol: string, host: string, port: number, path: string, processDataCallback: (s: string) => void) { + let resp: Observable<Response> = this.httpGetRequestResponse(protocol, host, port, path); + + resp.map(res => res.text()) + .subscribe( + data => processDataCallback(data), + // err => this.logError(err), + // () => console.log('Random Quote Complete') + ); + } + + public httpGetRequestResponse(protocol: string, host: string, port: number, path: string): Observable<Response> { let url: string; if (protocol != undefined) url = protocol + "://" + host; @@ -28,17 +41,11 @@ export class HttpService { let p = path === "/" ? "" : path; url = this.concat(url, "/" + p); - //console.log(url); let enc = encodeURI(url); let opts = new RequestOptions(); - this.http.get(enc, opts) - .map(res => res.text()) - .subscribe( - data => processDataCallback(data), - // err => this.logError(err), - // () => console.log('Random Quote Complete') - ); + let res: Observable<Response> = this.http.get(enc, opts); + return res; } } diff --git a/src/app/services/internationalisation/internationalisation.service.js b/src/app/services/internationalisation/internationalisation.service.js deleted file mode 100644 index 53774e8aea551b8fb9fb095ea88117cea44905b7..0000000000000000000000000000000000000000 --- a/src/app/services/internationalisation/internationalisation.service.js +++ /dev/null @@ -1,119 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var core_1 = require("@angular/core"); -var jalhyd_1 = require("jalhyd"); -var http_service_1 = require("../http/http.service"); -/* - language tag : fr-FR - primary subcode : fr - optional subcode : FR - */ -var Language; -(function (Language) { - Language[Language["FRENCH"] = 0] = "FRENCH"; - Language[Language["ENGLISH"] = 1] = "ENGLISH"; -})(Language = exports.Language || (exports.Language = {})); -var InternationalisationService = (function () { - function InternationalisationService(httpService) { - this.httpService = httpService; - } - Object.defineProperty(InternationalisationService.prototype, "lang", { - get: function () { - return this._lang; - }, - enumerable: true, - configurable: true - }); - // public set lang(l: Language) { - // this._lang = l; - // this._sLang = Language[l]; - // } - InternationalisationService.prototype.setLocale = function (tag) { - var l = tag.substr(0, 2).toLowerCase(); - if (l === "en") - this._lang = Language.ENGLISH; - else if (l === "fr") - this._lang = Language.FRENCH; - else { - var e = new jalhyd_1.ErrorMessage(jalhyd_1.ErrorCode.ERROR_LANG_UNSUPPORTED); - e.extraVar["locale"] = tag; - throw e; - } - // this.loadErrorMessages(); - this.httpGetErrorMessages(); - }; - Object.defineProperty(InternationalisationService.prototype, "languageCode", { - get: function () { - switch (this._lang) { - case Language.ENGLISH: - return "en"; - case Language.FRENCH: - return "fr"; - default: - throw new jalhyd_1.ErrorMessage(jalhyd_1.ErrorCode.ERROR_LANG_UNSUPPORTED); - } - }, - enumerable: true, - configurable: true - }); - // private loadErrorMessages() { - // let l; - // switch (this.lang) { - // case Language.FRENCH: - // l = "fr"; - // break; - // default: - // l = "en"; - // } - // let s: string = fs.readFileSync("src/error_messages." + l + ".json", "utf8"); - // this._errorMessages = JSON.parse(s); - // } - InternationalisationService.prototype.httpGetErrorMessages = function () { - var is = this; - var processData = function (s) { - // fermeture nécessaire pour capturer la valeur de this (undefined sinon) - is._errorMessages = JSON.parse(s); - }; - var l; - switch (this.lang) { - case Language.FRENCH: - l = "fr"; - break; - default: - l = "en"; - } - var f = "error_messages." + l + ".json"; - this.httpService.httpGetRequest(undefined, undefined, undefined, "locale/" + f, processData); - }; - InternationalisationService.prototype.getErrorMessageFromCode = function (c) { - var sCode = jalhyd_1.ErrorCode[c]; - return this._errorMessages[jalhyd_1.ErrorCode[c]]; - }; - InternationalisationService.prototype.replaceAll = function (str, find, replace) { - return str.replace(new RegExp(find, 'g'), replace); - }; - InternationalisationService.prototype.localizeErrorMessage = function (r) { - var sCode = jalhyd_1.ErrorCode[r.code]; - var m = this.getErrorMessageFromCode(r.code); - for (var k in r.extraVar) { - m = this.replaceAll(m, "%" + k + "%", r.extraVar[k]); - } - return m; - }; - return InternationalisationService; -}()); -InternationalisationService = __decorate([ - core_1.Injectable(), - __metadata("design:paramtypes", [http_service_1.HttpService]) -], InternationalisationService); -exports.InternationalisationService = InternationalisationService; -//# sourceMappingURL=internationalisation.service.js.map \ No newline at end of file diff --git a/src/app/services/internationalisation/internationalisation.service.js.map b/src/app/services/internationalisation/internationalisation.service.js.map deleted file mode 100644 index e56486869a39d796a88130b4e88fc849b91220c8..0000000000000000000000000000000000000000 --- a/src/app/services/internationalisation/internationalisation.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"internationalisation.service.js","sourceRoot":"","sources":["internationalisation.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/app/services/internationalisation/internationalisation.service.ts b/src/app/services/internationalisation/internationalisation.service.ts index c7a403b236907b309ede739a2f715aeb1bcfff99..7cfef31390f96f29170152fdc8382c0381c4890a 100644 --- a/src/app/services/internationalisation/internationalisation.service.ts +++ b/src/app/services/internationalisation/internationalisation.service.ts @@ -9,56 +9,98 @@ import { HttpService } from "../http/http.service"; primary subcode : fr optional subcode : FR */ -export enum Language { +export enum LanguageCode { FRENCH, ENGLISH, } + +export class Language { + private _code: LanguageCode; + private _tag: string; + private _label: string; + + constructor(c: LanguageCode, t: string, l: string) { + this._code = c; + this._tag = t; + this._label = l; + } + + get code(): LanguageCode { + return this._code; + } + + get tag(): string { + return this._tag; + } + + get label(): string { + return this._label; + } +} + @Injectable() export class InternationalisationService { - private _lang: Language; + private _currLang: Language; private _sLang: string; private _errorMessages: { [key: string]: string }; - public constructor(private httpService: HttpService) { } + private _languages: Language[]; + + /** + * indique que la langue a été changée + */ + private _localeChanged: boolean = false; - public get lang() { - return this._lang; + public constructor(private httpService: HttpService) { + this._languages = []; + this._languages.push(new Language(LanguageCode.FRENCH, "fr", "Français")); + this._languages.push(new Language(LanguageCode.ENGLISH, "en", "English")); } - // public set lang(l: Language) { - // this._lang = l; - // this._sLang = Language[l]; - // } + public get languages() { + return this._languages; + } - public setLocale(tag: string) { - let l: string = tag.substr(0, 2).toLowerCase(); - if (l === "en") - this._lang = Language.ENGLISH; - else if (l === "fr") - this._lang = Language.FRENCH; - else { - let e = new ErrorMessage(ErrorCode.ERROR_LANG_UNSUPPORTED); - e.extraVar["locale"] = tag; - throw e; - } + public get currentLanguage() { + return this._currLang; + } - // this.loadErrorMessages(); - this.httpGetErrorMessages(); + private getLanguageFromCode(lc: LanguageCode) { + for (let l of this._languages) { + if (l.code == lc) + return l; + } + throw new ErrorMessage(ErrorCode.ERROR_LANG_UNSUPPORTED); } - get languageCode() { - switch (this._lang) { - case Language.ENGLISH: - return "en"; + private getLanguageFromTag(tag: string) { + for (let l of this._languages) { + if (l.tag === tag) + return l; + } + let e = new ErrorMessage(ErrorCode.ERROR_LANG_UNSUPPORTED); + e.extraVar["locale"] = tag; + throw e; + } - case Language.FRENCH: - return "fr"; + public setLocale(lng: string | LanguageCode) { + if (this._currLang != undefined) + var oldLang: LanguageCode = this._currLang.code; - default: - throw new ErrorMessage(ErrorCode.ERROR_LANG_UNSUPPORTED); + if (typeof lng === "string") { + let t: string = lng.substr(0, 2).toLowerCase(); + this._currLang = this.getLanguageFromTag(t); + } + else { + this._currLang = this.getLanguageFromCode(lng); } + this._localeChanged = this._currLang.code != oldLang; + + + // this.loadErrorMessages(); + this.httpGetErrorMessages(); } // private loadErrorMessages() { @@ -85,8 +127,8 @@ export class InternationalisationService { } let l; - switch (this.lang) { - case Language.FRENCH: + switch (this._currLang.code) { + case LanguageCode.FRENCH: l = "fr"; break; @@ -118,263 +160,11 @@ export class InternationalisationService { return m; } - /* - public localizeErrorMessage(r: ErrorMessage): string { - let m: string; - let sCode: string = ErrorCode[r.code]; - - switch (this.lang) { - case Language.ENGLISH: - switch (r.code) { - case ErrorCode.ERROR_DICHO_INIT_DOMAIN: - m = "Dichotomy : target " + r.extraVar["targetSymbol"]; - m += "=" + r.extraVar["targetValue"]; - m += " does not exist for variable " + r.extraVar["variableSymbol"]; - m += " valued in interval " + r.extraVar["variableInterval"]; - break; - - case ErrorCode.ERROR_DICHO_INITVALUE_HIGH: - case ErrorCode.ERROR_DICHO_INITVALUE_LOW: - m = "Dichotomy : initial value " + r.extraVar["variableSymbol"]; - m += "=" + r.extraVar["variableInitValue"]; - if (r.code == ErrorCode.ERROR_DICHO_INITVALUE_HIGH) - m += " is too high"; - else if (r.code == ErrorCode.ERROR_DICHO_INITVALUE_LOW) - m += " is too low"; - - m += " (target is " + r.extraVar["targetSymbol"]; - m += "=" + r.extraVar["targetValue"]; - m += ", " + r.extraVar["targetSymbol"]; - m += "(" + r.extraVar["variableSymbol"]; - m += "=" + r.extraVar["variableInitValue"] - m += ")=" + r.extraVar["initTarget"] + ")"; - break; - - - case ErrorCode.ERROR_DICHO_NULL_STEP: - m = "Dichotomy (initial interval search) : invalid null step"; - break; - - case ErrorCode.ERROR_DICHO_INVALID_STEP_GROWTH: - m = "Dichotomy (initial interval search) : invalid null step growth"; - break; - - case ErrorCode.ERROR_DICHO_FUNCTION_VARIATION: - m = "unable to determinate function direction of variation"; - break; - - case ErrorCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS: - m = "invalid "; - m += String(r.extraVar["minValue"]); - m += "/"; - m += String(r.extraVar["maxValue"]); - m += " min/max boundaries for 'interval' parameter definition domain"; - break; - - case ErrorCode.ERROR_PARAMDEF_CALC_UNDEFINED: - m = "calculability of '"; - m += r.extraVar["symbol"]; - m += "' parameter is undefined"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_UNDEFINED: - m = "value of '"; - m += r.extraVar["symbol"]; - m += "' parameter is undefined"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_FIXED: - m = "value of '"; - m += r.extraVar["symbol"]; - m += "' parameter cannot be changed"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_POS: - m = "value "; - m += String(r.extraVar["value"]); - m += " of '"; - m += r.extraVar["symbol"]; - m += "' parameter is invalid "; - m += " (cannot be <=0)"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_POSNULL: - m = "value "; - m += String(r.extraVar["value"]); - m += " of '"; - m += r.extraVar["symbol"]; - m += "' parameter is invalid "; - m += " (cannot be <0)"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_NULL: - m = "value of '"; - m += r.extraVar["symbol"]; - m += "' parameter cannot be 0"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_INTERVAL: - m = "parameter '"; - m += r.extraVar["symbol"]; - m += "' : value "; - m += r.extraVar["value"]; - m += " is out of ["; - m += r.extraVar["minValue"]; - m += ", "; - m += r.extraVar["maxValue"]; - m += "] interval"; - break; - - case ErrorCode.ERROR_PARAMDOMAIN_INVALID: - m = "parameter '"; - m += r.extraVar["symbol"]; - m += "' : non supported '"; - m += r.extraVar["domain"]; - m += "' definition domain"; - break; - - case ErrorCode.ERROR_INTERVAL_UNDEF: - m = "Interval : invalid 'undefined' value"; - break; - - case ErrorCode.ERROR_INTERVAL_OUTSIDE: - m = "Interval : value "; - m += r.extraVar["value"]; - m += " is outside of "; - m += r.extraVar["interval"]; - break; - - default: - throw "unprocessed ResultCode value " + sCode + " for language " + this._sLang; - } - break; - - case Language.FRENCH: - switch (r.code) { - case ErrorCode.ERROR_DICHO_INIT_DOMAIN: - m = "Dichotomie : la valeur cible " + r.extraVar["targetSymbol"]; - m += "=" + r.extraVar["targetValue"]; - m += " n'existe pas pour la variable " + r.extraVar["variableSymbol"] + " prise dans l'intervalle " + r.extraVar["variableInterval"]; - break; - - case ErrorCode.ERROR_DICHO_INITVALUE_HIGH: - case ErrorCode.ERROR_DICHO_INITVALUE_LOW: - m = "Dichotomie : la valeur initiale " + r.extraVar["variableSymbol"]; - m += "=" + r.extraVar["variableInitValue"]; - if (r.code == ErrorCode.ERROR_DICHO_INITVALUE_HIGH) - m += " est trop grande"; - else if (r.code == ErrorCode.ERROR_DICHO_INITVALUE_LOW) - m += " est trop petite"; - - m += " (la valeur cible est " + r.extraVar["targetSymbol"]; - m += "=" + r.extraVar["targetValue"]; - m += ", " + r.extraVar["targetSymbol"]; - m += "(" + r.extraVar["variableSymbol"]; - m += "=" + r.extraVar["variableInitValue"] - m += ")=" + r.extraVar["initTarget"] + ")"; - break; - - case ErrorCode.ERROR_DICHO_NULL_STEP: - m = "Dichotomie : le pas pour la recherche de l'intervalle de départ ne devrait pas être nul"; - break; - - case ErrorCode.ERROR_DICHO_INVALID_STEP_GROWTH: - m = "Dichotomie : l'augmentation du pas pour la recherche de l'intervalle de départ est incorrecte (=0)"; - break; - - case ErrorCode.ERROR_DICHO_FUNCTION_VARIATION: - m = "Dichotomie : impossible de determiner le sens de variation de la fonction"; - break; - - case ErrorCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS: - m = "Les bornes ("; - m += String(r.extraVar["minValue"]); - m += "/"; - m += String(r.extraVar["maxValue"]); - m += ") de l'intervalle sont incorrectes"; - break; - - case ErrorCode.ERROR_PARAMDEF_CALC_UNDEFINED: - m = "La calculabilité du paramètre "; - m += r.extraVar["symbol"]; - m += " n'est pas définie"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_UNDEFINED: - m = "La valeur du paramètre "; - m += r.extraVar["symbol"]; - m += " n'est pas définie"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_FIXED: - m = "La valeur du paramètre "; - m += r.extraVar["symbol"]; - m += " ne peut pas être changée"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_POS: - m = "La valeur "; - m += String(r.extraVar["value"]); - m += " du paramètre '"; - m += r.extraVar["symbol"]; - m += "' est incorrecte (<=0)"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_POSNULL: - m = "La valeur "; - m += String(r.extraVar["value"]); - m += " du paramètre '"; - m += r.extraVar["symbol"]; - m += "' est incorrecte (<0)"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_NULL: - m = "La valeur du paramètre '"; - m += r.extraVar["symbol"]; - m += "' ne peut pas être nulle"; - break; - - case ErrorCode.ERROR_PARAMDEF_VALUE_INTERVAL: - m = "Paramètre '"; - m += r.extraVar["symbol"]; - m += "' : la valeur "; - m += r.extraVar["value"]; - m += " est en dehors de l'intervalle ["; - m += r.extraVar["minValue"]; - m += ", "; - m += r.extraVar["maxValue"]; - m += "]"; - break; - - case ErrorCode.ERROR_PARAMDOMAIN_INVALID: - m = "Paramètre '"; - m += r.extraVar["symbol"]; - m += "' : le domaine de définition '"; - m += r.extraVar["domain"]; - m += "' est incorrect"; - break; - - case ErrorCode.ERROR_INTERVAL_UNDEF: - m = "Interval : valeur 'undefined' incorrecte"; - break; - - case ErrorCode.ERROR_INTERVAL_OUTSIDE: - m = "Interval : la valeur "; - m += r.extraVar["value"]; - m += " est hors de l'intervalle "; - m += r.extraVar["interval"]; - break; - - default: - throw "unprocessed ResultCode value " + sCode + " for language " + this._sLang; - } - break; - - default: - throw "unprocessed Language value " + this._sLang; - } + get localeChanged() { + return this._localeChanged; + } - return m; + public acknowledgeLocaleChanged() { + this._localeChanged = false; } - */ } diff --git a/src/app/services/ngparam.js b/src/app/services/ngparam.js deleted file mode 100644 index a82355c0ba35fb8b755e4b419c8d4475fdcff45f..0000000000000000000000000000000000000000 --- a/src/app/services/ngparam.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var NgParameter = (function () { - function NgParameter(_paramDef) { - this._paramDef = _paramDef; - } - Object.defineProperty(NgParameter.prototype, "symbol", { - get: function () { - return this._paramDef.symbol; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(NgParameter.prototype, "v", { - get: function () { - return this._paramDef.v; - }, - set: function (val) { - this._paramDef.v = val; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(NgParameter.prototype, "isDefined", { - get: function () { - return this._paramDef.isDefined; - }, - enumerable: true, - configurable: true - }); - NgParameter.prototype.checkValue = function (val) { - this._paramDef.checkValue(val); - }; - return NgParameter; -}()); -exports.NgParameter = NgParameter; -//# sourceMappingURL=ngparam.js.map \ No newline at end of file diff --git a/src/app/services/ngparam.js.map b/src/app/services/ngparam.js.map deleted file mode 100644 index 3247d9c03fbdb0ade47a8bbf709606c59509804d..0000000000000000000000000000000000000000 --- a/src/app/services/ngparam.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"ngparam.js","sourceRoot":"","sources":["ngparam.ts"],"names":[],"mappings":";;AAEA;IAGI,qBAAoB,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;IAC9C,CAAC;IAED,sBAAI,+BAAM;aAAV;YACI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACjC,CAAC;;;OAAA;IAED,sBAAI,0BAAC;aAAL;YACI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5B,CAAC;aAED,UAAM,GAAW;YACb,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC;QAC3B,CAAC;;;OAJA;IAMD,sBAAI,kCAAS;aAAb;YACI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACpC,CAAC;;;OAAA;IAEM,gCAAU,GAAjB,UAAkB,GAAW;QACzB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IACL,kBAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,kCAAW"} \ No newline at end of file diff --git a/src/app/services/ngparam.ts b/src/app/services/ngparam.ts index abe2224666c8dff1d3122c53fd352e4ccab54398..752d7801b811d04c2703de729ab8a6767d46c0d5 100644 --- a/src/app/services/ngparam.ts +++ b/src/app/services/ngparam.ts @@ -1,6 +1,10 @@ import { ParamDefinition } from 'jalhyd'; +/** + * class englobante de ParamDefinition (champs supplémentaires pour l'affichage, ...) + */ export class NgParameter { + public unit: string; public label: string; constructor(private _paramDef: ParamDefinition) { diff --git a/src/app/services/param/param.service.js b/src/app/services/param/param.service.js deleted file mode 100644 index d15c94d58193687cd75f8e54618c3fc2c8cfc279..0000000000000000000000000000000000000000 --- a/src/app/services/param/param.service.js +++ /dev/null @@ -1,52 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var jalhyd_1 = require("jalhyd"); -var ngparam_1 = require("../ngparam"); -var ParamService = (function () { - function ParamService() { - // this._params = [new ParamDefinition('Q', ParamDomainValue.POS_NULL), - // new ParamDefinition('Ks', ParamDomainValue.POS)]; - // for (let p of this._params) - // p.calculability = ParamCalculability.DICHO; - this._params = []; - // précision de calcul - var pr = new jalhyd_1.ParamDefinition('Pr', jalhyd_1.ParamDomainValue.POS, 0.001); - this._params.push(new ngparam_1.NgParameter(pr)); - this.addParameters("cond_distri"); - } - ParamService.prototype.hasParameter = function (symbol) { - for (var _i = 0, _a = this._params; _i < _a.length; _i++) { - var p = _a[_i]; - if (p.symbol === symbol) - return true; - } - return false; - }; - ParamService.prototype.addParameters = function (computeNodeName) { - var cdp = jalhyd_1.ComputeNodeParameters.getInstance().getComputeNodeParameters(computeNodeName); - // console.log(cdp); - for (var pi in cdp) { - var p = cdp[pi]; - if (!this.hasParameter(p.symbol)) - this._params.push(p); - } - }; - ParamService.prototype.getParameter = function (s) { - for (var _i = 0, _a = this._params; _i < _a.length; _i++) { - var p = _a[_i]; - if (p.symbol == s) - return p; - } - return undefined; - }; - ParamService.prototype.updateLocalisation = function (loc) { - for (var ki in loc) { - var p = this.getParameter(ki); - if (p != undefined) - p.label = loc[ki]; - } - }; - return ParamService; -}()); -exports.ParamService = ParamService; -//# sourceMappingURL=param.service.js.map \ No newline at end of file diff --git a/src/app/services/param/param.service.js.map b/src/app/services/param/param.service.js.map deleted file mode 100644 index f121bd692c00aa7108496535edcc601b2ec8c024..0000000000000000000000000000000000000000 --- a/src/app/services/param/param.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"param.service.js","sourceRoot":"","sources":["param.service.ts"],"names":[],"mappings":";;AAAA,iCAAuH;AAEvH,sCAAyC;AAEzC;IAII;QACI,uEAAuE;QACvE,oDAAoD;QACpD,8BAA8B;QAC9B,kDAAkD;QAElD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,sBAAsB;QACtB,IAAI,EAAE,GAAG,IAAI,wBAAe,CAAC,IAAI,EAAE,yBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAEO,mCAAY,GAApB,UAAqB,MAAc;QAC/B,GAAG,CAAC,CAAU,UAAY,EAAZ,KAAA,IAAI,CAAC,OAAO,EAAZ,cAAY,EAAZ,IAAY;YAArB,IAAI,CAAC,SAAA;YACN,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC;SACnB;QACD,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAEO,oCAAa,GAArB,UAAsB,eAAuB;QACzC,IAAI,GAAG,GAAoB,8BAAqB,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;QACzG,oBAAoB;QACpB,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,mCAAY,GAAZ,UAAa,CAAS;QAClB,GAAG,CAAC,CAAU,UAAY,EAAZ,KAAA,IAAI,CAAC,OAAO,EAAZ,cAAY,EAAZ,IAAY;YAArB,IAAI,CAAC,SAAA;YACN,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBACd,MAAM,CAAC,CAAC,CAAC;SAChB;QAED,MAAM,CAAC,SAAS,CAAC;IACrB,CAAC;IAED,yCAAkB,GAAlB,UAAmB,GAA8B;QAC7C,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC9B,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBACf,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IACL,mBAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,oCAAY"} \ No newline at end of file diff --git a/src/index.html b/src/index.html index 2387cacddfe8c3821e15a815639d592f43591274..5d72e6c8244a7cd40d44f4b726a829af36dedfff 100644 --- a/src/index.html +++ b/src/index.html @@ -17,7 +17,7 @@ <script src="systemjs.config.js"></script> <script> // Get the locale id somehow - // document.locale = 'fr-FR'; + // document.locale = 'fr'; document.locale = 'en'; // Map to the text plugin diff --git a/src/locale/messages.en.xlf b/src/locale/messages.en.xlf index 9c90b3e3516e03ea34495b398ed4efe687141406..ad17db1b5745332f3a346054976b401d626a3f81 100644 --- a/src/locale/messages.en.xlf +++ b/src/locale/messages.en.xlf @@ -5,6 +5,9 @@ <trans-unit id="titre_saisie_param" datatype="html"> <target>Parameter input</target> </trans-unit> + <trans-unit id="titre_cond_distri" datatype="html"> + <target>Distributor pipe</target> + </trans-unit> </body> </file> </xliff>