raain-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +12 -0
- package/RELEASE.md +3 -0
- package/cache.service.d.ts +9 -0
- package/esm2020/cache.service.mjs +33 -0
- package/esm2020/fidj-storage.model.mjs +162 -0
- package/esm2020/index.mjs +18 -0
- package/esm2020/profile.service.mjs +881 -0
- package/esm2020/raain-app.mjs +5 -0
- package/esm2020/raain-compare/raain-compare.component.mjs +106 -0
- package/esm2020/raain-compare-stack/raain-compare-stack.component.mjs +27 -0
- package/esm2020/raain-configuration/raain-configuration.component.mjs +97 -0
- package/esm2020/raain-date-focus/raain-date-focus.component.mjs +94 -0
- package/esm2020/raain-map/raain-map.component.mjs +295 -0
- package/esm2020/raain-speed/raain-speed.component.mjs +83 -0
- package/esm2020/raain-test/raain-test.component.mjs +17 -0
- package/esm2020/radar.service.mjs +91 -0
- package/esm2020/shared.const.mjs +25 -0
- package/esm2020/shared.module.mjs +142 -0
- package/esm2020/shared.pipe.mjs +203 -0
- package/esm2020/storage.service.mjs +17 -0
- package/esm2020/tools/CompareManager.mjs +248 -0
- package/esm2020/tools/FrameSet.mjs +10 -0
- package/esm2020/tools/GaugeNodeFilter.mjs +19 -0
- package/esm2020/tools/RefreshManager.mjs +202 -0
- package/esm2020/tools/index.mjs +5 -0
- package/esm2020/xytype.mjs +10 -0
- package/fesm2015/raain-app.mjs +2871 -0
- package/fesm2015/raain-app.mjs.map +1 -0
- package/fesm2020/raain-app.mjs +2707 -0
- package/fesm2020/raain-app.mjs.map +1 -0
- package/fidj-storage.model.d.ts +23 -0
- package/index.d.ts +17 -0
- package/package.json +58 -0
- package/profile.service.d.ts +114 -0
- package/raain-compare/raain-compare.component.d.ts +33 -0
- package/raain-compare-stack/raain-compare-stack.component.d.ts +20 -0
- package/raain-configuration/raain-configuration.component.d.ts +29 -0
- package/raain-date-focus/raain-date-focus.component.d.ts +36 -0
- package/raain-map/raain-map.component.d.ts +58 -0
- package/raain-speed/raain-speed.component.d.ts +25 -0
- package/raain-test/raain-test.component.d.ts +6 -0
- package/radar.service.d.ts +19 -0
- package/shared.const.d.ts +23 -0
- package/shared.module.d.ts +17 -0
- package/shared.pipe.d.ts +69 -0
- package/storage.service.d.ts +7 -0
- package/tools/CompareManager.d.ts +49 -0
- package/tools/FrameSet.d.ts +14 -0
- package/tools/GaugeNodeFilter.d.ts +9 -0
- package/tools/RefreshManager.d.ts +49 -0
- package/tools/index.d.ts +4 -0
- package/xytype.d.ts +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raain-app.mjs","sources":["../../src/app/shared/raain-map/raain-map.component.ts","../../src/app/shared/raain-map/raain-map.component.html","../../src/app/shared/raain-compare/raain-compare.component.ts","../../src/app/shared/raain-compare/raain-compare.component.html","../../src/app/shared/xytype.ts","../../src/app/shared/raain-configuration/raain-configuration.component.ts","../../src/app/shared/raain-configuration/raain-configuration.component.html","../../src/app/shared/raain-date-focus/raain-date-focus.component.ts","../../src/app/shared/raain-date-focus/raain-date-focus.component.html","../../src/app/shared/raain-speed/raain-speed.component.ts","../../src/app/shared/raain-speed/raain-speed.component.html","../../src/app/shared/raain-compare-stack/raain-compare-stack.component.ts","../../src/app/shared/raain-compare-stack/raain-compare-stack.component.html","../../src/app/shared/raain-test/raain-test.component.ts","../../src/app/shared/tools/CompareManager.ts","../../src/app/shared/tools/FrameSet.ts","../../src/app/shared/tools/GaugeNodeFilter.ts","../../src/app/shared/tools/RefreshManager.ts","../../src/app/shared/cache.service.ts","../../src/app/shared/fidj-storage.model.ts","../../src/app/shared/storage.service.ts","../../src/app/shared/profile.service.ts","../../src/app/shared/radar.service.ts","../../src/app/shared/shared.const.ts","../../src/app/shared/shared.pipe.ts","../../src/app/shared/shared.module.ts","../../src/app/shared/raain-app.ts"],"sourcesContent":["import {\n AfterViewChecked,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {IconOptions} from 'leaflet';\nimport {CartesianMapValue, ElementsFactory, FrameContainer, MapElement, MapLatLng, TimeframeContainers} from 'raain-ui';\n\n@Component({\n selector: 'raain-map',\n templateUrl: './raain-map.component.html',\n styleUrls: ['./raain-map.component.scss'],\n})\nexport class RaainMapComponent implements AfterViewChecked, OnDestroy, OnChanges {\n\n @Input()\n public coordinates: MapLatLng;\n @Input()\n public markers: {\n gauges: MapLatLng[],\n selectedGauges: MapLatLng[],\n pixels: MapLatLng[],\n borders: MapLatLng[],\n gaugesInCompare: MapLatLng[],\n pixelsSolution: MapLatLng[],\n };\n @Input()\n public timeframeContainers: TimeframeContainers;\n @Input()\n public autoplay = false;\n @Input()\n public showMarkers = true;\n @Input()\n public currentHeight: number;\n public currentWidth: number;\n\n @Input()\n public timeframeDates: Date[] = [];\n @Input()\n public defaultDate: Date;\n\n @Output()\n public selectedMarker = new EventEmitter<MapLatLng>();\n\n @Output()\n public changedDate = new EventEmitter<Date>();\n\n public mcText;\n public nextDate: Date;\n public possibleNames: string[];\n public possibleDates: Date[];\n public dateToShow: Date;\n public dateToShowAsString: string;\n public timeframeNameToShow: string;\n protected currentFrameContainer: FrameContainer;\n\n @ViewChild('primaryMap')\n protected mapDivRef: ElementRef;\n\n private mapElement: MapElement;\n private onSizeChanged;\n private created;\n private iconOptions: {\n gauges: IconOptions,\n selectedGauges: IconOptions,\n pixels: IconOptions,\n borders: IconOptions,\n gaugesInCompare: IconOptions,\n pixelsSolution: IconOptions,\n };\n\n constructor(private ngZone: NgZone) {\n this.delete();\n\n // shadowUrl ?\n const iconSize = [40, 40]; // size of the icon\n const iconAnchor = [20, 20]; // point of the icon which will correspond to marker's location\n const pixelSize = [41, 41];\n const pixelAnchor = [20, 20];\n const popupAnchor = [0, -20]; // point from which the popup should open relative to the iconAnchor\n this.iconOptions = {\n gauges: {iconUrl: './assets/maps/marker-pluvio.png', iconSize, iconAnchor, popupAnchor},\n gaugesInCompare: {iconUrl: './assets/maps/marker-pluvio-diag.png', iconSize, iconAnchor, popupAnchor},\n selectedGauges: {iconUrl: './assets/maps/marker-pluvio-diag-select.png', iconSize, iconAnchor, popupAnchor},\n pixels: {iconUrl: './assets/maps/marker-rain.png', iconSize, iconAnchor, popupAnchor},\n pixelsSolution: {iconUrl: './assets/maps/marker-rain2.png', iconSize: pixelSize, iconAnchor: pixelAnchor, popupAnchor},\n borders: {iconUrl: './assets/maps/marker-shadow.png', iconSize, iconAnchor, popupAnchor},\n };\n }\n\n public ngAfterViewChecked(): void {\n this.create();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.change(changes);\n }\n\n public ngOnDestroy(): void {\n this.delete();\n }\n\n public showTimeframe(force = false) {\n\n // const {frameContainer, layer} = this.timeframeContainers.showTimeframe(this.timeframeNameToShow);\n // this.currentFrameContainer = frameContainer;\n\n if (!this.dateToShowAsString\n || (!force && new Date(this.dateToShowAsString).getTime() === this.dateToShow?.getTime())) {\n return;\n }\n\n this.dateToShow = new Date(this.dateToShowAsString);\n this.changedDate.emit(this.dateToShow);\n }\n\n public next() {\n if (!this.possibleDates || this.possibleDates.length === 0) {\n return;\n }\n\n const index = this.getDateToShowIndex();\n this.dateToShow = (index + 1) < this.possibleDates.length ? this.possibleDates[index + 1] : this.possibleDates[0];\n this.dateToShowAsString = this.dateToShow.toISOString();\n\n this.showTimeframe(true);\n if (this.autoplay) {\n window.setTimeout(() => this.next(), 2000);\n }\n }\n\n public previous() {\n this.stop();\n if (!this.possibleDates || this.possibleDates.length === 0) {\n return;\n }\n\n const index = this.getDateToShowIndex();\n this.dateToShow = index > 0 ? this.possibleDates[index - 1] : this.possibleDates[0];\n this.dateToShowAsString = this.dateToShow.toISOString();\n\n this.showTimeframe(true);\n }\n\n public play() {\n this.autoplay = true;\n this.next();\n }\n\n public stop() {\n this.autoplay = false;\n }\n\n public changeShowMarkers() {\n if (!this.mapElement?.markersLayer || !this.mapElement?.mapLeaflet) {\n return;\n }\n\n if (this.showMarkers) {\n this.mapElement.markersLayer.addToMap(this.mapElement.mapLeaflet);\n } else {\n this.mapElement.markersLayer.removeFromMap(this.mapElement.mapLeaflet);\n }\n }\n\n private create() {\n\n const created = this.created;\n if (created) {\n return;\n }\n this.created = true;\n const markers = [\n {iconsLatLng: this.markers.gauges, iconsOptions: this.iconOptions.gauges},\n {iconsLatLng: this.markers.selectedGauges, iconsOptions: this.iconOptions.selectedGauges},\n {iconsLatLng: this.markers.gaugesInCompare, iconsOptions: this.iconOptions.gaugesInCompare},\n {iconsLatLng: this.markers.pixels, iconsOptions: this.iconOptions.pixels},\n {iconsLatLng: this.markers.pixelsSolution, iconsOptions: this.iconOptions.pixelsSolution},\n // {iconsLatLng: this.markers.borders, iconsOptions: this.iconOptions.borders},\n ];\n\n const factory = new ElementsFactory(this.coordinates, true);\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n\n const createdOutside = this.created;\n if (!createdOutside) {\n return;\n }\n\n this.mapElement = factory.createMap(this.mapDivRef.nativeElement, {timeframeContainers: this.timeframeContainers, markers});\n\n this.mapElement.mapLeaflet?.on('mousemove', (evt) => this.onMapMouseMove(evt));\n this.mapElement.markersProduced?.forEach(m => m.on('click', evt => this.onMapClick(evt)));\n this.onSizeChanged = () => {\n this.mapElement.markersLayer?.setCurrentWidth(this.currentWidth);\n this.mapElement.markersLayer?.setCurrentHeight(this.currentHeight);\n this.mapElement.compositeLayer?.setCurrentWidth(this.currentWidth);\n this.mapElement.compositeLayer?.setCurrentHeight(this.currentHeight);\n this.mapElement.mapLeaflet?.invalidateSize({animate: true});\n }\n this.updateMapSize();\n // this.timeframeNameToShow = this.possibleNames.length > 0 ? this.possibleNames[0] : null;\n // this.toggleHideMarkers(!this.hideMarkers);\n this.changeNavigation(this.defaultDate);\n }, 100);\n });\n\n }\n\n private delete() {\n this.mapElement?.mapLeaflet?.remove();\n this.mapElement = undefined;\n this.mcText = '';\n this.nextDate = undefined;\n this.possibleNames = [];\n this.possibleDates = [];\n this.timeframeNameToShow = undefined;\n this.dateToShow = undefined;\n this.dateToShowAsString = undefined;\n this.onSizeChanged = () => {\n };\n this.currentFrameContainer = null;\n\n this.created = false;\n }\n\n private change(changes: SimpleChanges) {\n // console.log('map changes', changes);\n\n let possibleNewDefaultDate: Date;\n if (changes.defaultDate) {\n if (new Date(changes.defaultDate.currentValue).getTime() === new Date(changes.defaultDate.previousValue).getTime()) {\n return;\n }\n possibleNewDefaultDate = this.defaultDate;\n }\n\n if (changes.markers && this.mapElement?.markersLayer) {\n\n const markers = [\n {iconsLatLng: this.markers.gauges, iconOptions: this.iconOptions.gauges},\n {iconsLatLng: this.markers.selectedGauges, iconOptions: this.iconOptions.selectedGauges},\n {iconsLatLng: this.markers.gaugesInCompare, iconOptions: this.iconOptions.gaugesInCompare},\n {iconsLatLng: this.markers.pixels, iconOptions: this.iconOptions.pixels},\n {iconsLatLng: this.markers.pixelsSolution, iconOptions: this.iconOptions.pixelsSolution},\n // {iconsLatLng: this.markers.borders, iconOptions: this.iconOptions.borders},\n ];\n const markersProduced = this.mapElement.markersLayer.render(markers).markers;\n if (markersProduced) {\n markersProduced.forEach(m => m.on('click', evt => this.onMapClick(evt)));\n if (this.showMarkers) {\n this.mapElement.markersLayer.removeFromMap(this.mapElement.mapLeaflet);\n this.mapElement.markersLayer.addToMap(this.mapElement.mapLeaflet);\n }\n }\n }\n\n if (changes.markers && this.markers.selectedGauges.length === 1) {\n const selectedGauge = this.markers.selectedGauges[0];\n this.mapElement.mapLeaflet.setView(selectedGauge, 10);\n }\n\n if (this.mapElement && changes.timeframeContainers) {\n this.mapElement.updateMapTimeframe(this.timeframeContainers);\n this.currentFrameContainer = this.timeframeContainers?.containers[0]?.timeframe[0];\n }\n\n this.changeNavigation(possibleNewDefaultDate);\n }\n\n private changeNavigation(defaultDate?: Date) {\n // update possible names\n if (this.timeframeContainers && this.timeframeContainers.containers.length) {\n this.possibleNames = [];\n this.timeframeContainers?.containers.forEach(c => {\n if (this.possibleNames.indexOf(c.name) < 0) {\n this.possibleNames.push(c.name);\n }\n });\n this.timeframeNameToShow = this.possibleNames.length > 0 ? this.possibleNames[0] : null;\n }\n\n // update possible dates\n this.possibleDates = this.timeframeDates;\n if (!this.possibleDates || this.possibleDates.length === 0) {\n return;\n }\n\n // update dateToShow\n if (defaultDate && this.possibleDates.filter(d => d.getTime() === defaultDate.getTime()).length === 1) {\n this.dateToShow = defaultDate;\n }\n if (!this.dateToShow && this.possibleDates.length > 0 &&\n this.possibleDates.filter(d => d.getTime() === this.dateToShow?.getTime()).length !== 1) {\n this.dateToShow = this.possibleDates[0];\n }\n this.dateToShowAsString = this.dateToShow.toISOString();\n }\n\n private getDateToShowIndex(): number {\n\n let index = 0;\n for (const date of this.possibleDates) {\n if (date.toISOString().substring(0, 19) === this.dateToShowAsString.substring(0, 19)) {\n break;\n }\n index++;\n }\n return index;\n }\n\n private onMapMouseMove(evt: { latlng: { lat: number, lng: number } }): void {\n\n const lat: string = evt.latlng.lat.toFixed(3);\n const lng: string = evt.latlng.lng.toFixed(3);\n\n let value = NaN;\n let valueLat = NaN, valueLng = NaN, valueLat2 = NaN, valueLng2 = NaN;\n if (this.currentFrameContainer) {\n const valueSelected = (this.currentFrameContainer.values as CartesianMapValue[])\n .filter((v: CartesianMapValue) => {\n return v.lat <= evt.latlng.lat && evt.latlng.lat < v.lat2 &&\n v.lng <= evt.latlng.lng && evt.latlng.lng < v.lng2;\n });\n\n if (valueSelected.length === 1) {\n value = Math.round(valueSelected[0].value * 1000) / 1000;\n valueLat = Math.round(valueSelected[0].lat * 1000) / 1000;\n valueLng = Math.round(valueSelected[0].lng * 1000) / 1000;\n valueLat2 = Math.round(valueSelected[0].lat2 * 1000) / 1000;\n valueLng2 = Math.round(valueSelected[0].lng2 * 1000) / 1000;\n } else {\n // console.warn('valueSelected issue ?', valueSelected);\n }\n }\n\n this.ngZone.run(() => {\n this.mcText = `Latitude: ${lat} Longitude: ${lng} Value: [${valueLat} ${valueLng} | ${valueLat2} ${valueLng2}] ${value}`;\n });\n }\n\n private onMapClick(evt: any): void {\n this.selectedMarker.emit(new MapLatLng(\n evt.latlng?.lat, evt.latlng?.lng, undefined,\n evt.id, evt.name));\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(event: any): void {\n this.updateMapSize();\n }\n\n private updateMapSize(): void {\n\n const mapDivWidth = this.mapDivRef.nativeElement.parentNode?.parentNode['clientWidth'];\n const padding = 21;\n let currentWidth = mapDivWidth ||\n (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);\n const currentHeight = this.currentHeight ||\n (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);\n currentWidth -= padding;\n this.currentWidth = currentWidth;\n this.currentHeight = currentHeight;\n\n this.ngZone.run(() => {\n this.onSizeChanged();\n });\n }\n\n}\n","<ion-grid>\n\n <ion-row class=\"ion-align-items-end\">\n <ion-col id=\"map-buttons\" size-sm=\"3\">\n <ion-button (click)=\"previous()\" color=\"medium\" fill=\"outline\" shape=\"round\">\n <ion-icon name=\"play-back\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n <!--\n <ion-button (click)=\"play()\" [hidden]=\"autoplay\" color=\"medium\" fill=\"outline\"\n shape=\"round\">\n <ion-icon name=\"play\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n -->\n <ion-button (click)=\"stop()\" [hidden]=\"!autoplay\" color=\"medium\" fill=\"outline\"\n shape=\"round\">\n <ion-icon name=\"stop\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n\n <ion-button (click)=\"next()\" color=\"medium\" fill=\"outline\" shape=\"round\">\n <ion-icon name=\"play-forward\" slot=\"icon-only\"></ion-icon>\n </ion-button>\n </ion-col>\n\n <!--\n <ion-col id=\"map-timeframe\" size-sm=\"4\">\n <ion-select (ionChange)=\"showTimeframe()\" [(ngModel)]=\"timeframeNameToShow\" [value]=\"timeframeNameToShow\"\n interface=\"popover\" placeholder=\"Name\">\n <ion-select-option *ngFor=\"let name of possibleNames\" [value]=\"name\">{{ name }}</ion-select-option>\n </ion-select>\n </ion-col> -->\n\n <ion-col class=\"ion-text-start\" id=\"map-date\">\n <ion-select (ionDismiss)=\"showTimeframe()\" [(ngModel)]=\"dateToShowAsString\" interface=\"popover\"\n placeholder=\"Period\" value=\"{{dateToShowAsString}}\">\n <ion-select-option *ngFor=\"let dateToSelect of possibleDates\" value=\"{{dateToSelect.toISOString()}}\">\n {{ dateToSelect | date:'yyyy-MM-dd HH:mm' }}\n </ion-select-option>\n </ion-select>\n </ion-col>\n <ion-col>\n <ion-toggle (ionChange)=\"changeShowMarkers()\" [(ngModel)]=\"showMarkers\" [checked]=\"showMarkers\"></ion-toggle>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <div id=\"map-container\">\n <div #primaryMap id=\"map-div\"></div>\n </div>\n </ion-col>\n <ion-col class=\"ion-hide-xl-down\">\n <ion-img id=\"map-range\" src=\"assets/r2r_range.svg\"/>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size-sm=\"9\">\n <span [innerHTML]=\"mcText\"></span>\n </ion-col>\n <ion-col size-sm=\"3\">\n <ion-button disabled=\"true\" fill=\"clear\">ISO: {{ dateToShow?.toISOString() }}</ion-button>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n","import {\n AfterViewChecked,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {CompareElement, CompareElementInput, ElementsFactory} from 'raain-ui';\nimport {XYType} from '../xytype';\n\n@Component({\n selector: 'raain-compare',\n templateUrl: './raain-compare.component.html',\n styleUrls: ['./raain-compare.component.scss'],\n})\nexport class RaainCompareComponent implements AfterViewChecked, OnDestroy, OnChanges {\n\n @Input()\n public points: Array<XYType>;\n\n @Input()\n public pointMax: XYType;\n\n @Input()\n public remarks: string;\n\n @Input()\n public compareIndex: number;\n\n @Input()\n public currentHeight: number;\n\n @Input()\n public currentWidth: number;\n\n @Output()\n public selectedPoint = new EventEmitter<{ point: XYType, compareIndex: number }>();\n\n @ViewChild('canvasElement')\n protected canvasElement: ElementRef;\n\n private compareElement: CompareElement;\n private onSizeChanged;\n private created;\n\n constructor(private ngZone: NgZone) {\n this.onSizeChanged = () => {\n };\n }\n\n public ngAfterViewChecked(): void {\n this.create();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.change(changes);\n }\n\n public ngOnDestroy(): void {\n this.delete();\n }\n\n protected onClick(point: XYType): void {\n this.selectedPoint.emit({point, compareIndex: this.compareIndex});\n }\n\n protected changeData(newData: XYType[], newMaxLine?: XYType[]) {\n\n let changed = false;\n const dataset = this.compareElement?.chart?.data?.datasets[0];\n if (dataset) {\n dataset.data = newData;\n changed = true;\n }\n\n const line = this.compareElement?.chart?.data?.datasets[1];\n if (line) {\n line.data = newMaxLine;\n changed = true;\n }\n\n if (changed) {\n this.compareElement?.chart?.update();\n }\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(event: any): void {\n this.updateMapSize();\n }\n\n private create() {\n if (this.created) {\n return;\n }\n this.created = true;\n\n const factory = new ElementsFactory();\n this.compareElement = factory.createCompare(this.canvasElement.nativeElement,\n new CompareElementInput(this.points.map(p => {\n return {x: p.x, y: p.y, r: p.r, name: p.name, id: p.id};\n }),\n this.pointMax, this.onClick.bind(this)));\n }\n\n private delete() {\n if (this.compareElement) {\n this.compareElement?.chart?.destroy();\n }\n this.created = false;\n }\n\n private change(changes: SimpleChanges) {\n if (changes.points) {\n this.changeData(this.points, [{x: 0, y: 0}, this.pointMax]);\n }\n }\n\n private updateMapSize(): void {\n\n const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];\n const padding = 20;\n let currentWidth = mapDivWidth ||\n (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);\n const currentHeight = this.currentHeight ||\n (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);\n currentWidth -= padding;\n this.currentWidth = currentWidth;\n this.currentHeight = currentHeight;\n\n this.ngZone.run(() => {\n this.onSizeChanged();\n });\n }\n\n}\n","<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div id=\"canvas-container\">\n <h1 *ngIf=\"remarks\">{{ remarks }}</h1>\n\n <!-- [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" [width]=\"currentWidth\" [height]=\"currentHeight\"-->\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n </ion-row>\n</ion-grid>\n","export class XYType {\n constructor(public x: number,\n public y: number,\n public r?: number,\n public name?: string,\n public id?: string) {\n }\n}\n\n","import {\n AfterViewChecked,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {ConfigurationElement, ConfigurationElementInput, ElementsFactory} from 'raain-ui';\nimport {XYType} from '../xytype';\n\n@Component({\n selector: 'raain-configuration',\n templateUrl: './raain-configuration.component.html',\n styleUrls: ['./raain-configuration.component.scss'],\n})\nexport class RaainConfigurationComponent implements AfterViewChecked, OnDestroy, OnChanges {\n\n @Input()\n public points: XYType[];\n\n @Output()\n public changedPoints = new EventEmitter<XYType[]>();\n\n @Input()\n public currentHeight: number;\n public currentWidth: number;\n\n @Input()\n public minPoint: XYType = {x: 0, y: 0};\n\n @Input()\n public maxPoint: XYType = {x: 300, y: 100};\n\n @ViewChild('canvasElement')\n protected canvasElement: ElementRef;\n\n private configurationElement: ConfigurationElement;\n private onDrag;\n private onSizeChanged;\n private created;\n\n constructor(private ngZone: NgZone) {\n this.onSizeChanged = () => {\n };\n this.onDrag = (e: any) => {\n this.changedPoints.emit(this.points);\n }\n }\n\n public ngAfterViewChecked(): void {\n this.create();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.change(changes);\n }\n\n public ngOnDestroy(): void {\n this.delete();\n }\n\n async reset(count = 4) {\n const points = [];\n for (let c = 0; c < count; c++) {\n points.push(new XYType((c + 1) * 10, (c + 1) * 10));\n }\n this.points = points;\n\n await this.delete();\n this.create();\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(event: any): void {\n // this.updateMapSize();\n }\n\n private create() {\n if (this.created) {\n return;\n }\n this.created = true;\n\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n const factory = new ElementsFactory();\n this.configurationElement = factory.createConfiguration(this.canvasElement.nativeElement,\n new ConfigurationElementInput(this.points,\n this.minPoint,\n this.maxPoint,\n this.onDrag));\n }, 10);\n });\n\n }\n\n private async delete() {\n await this.configurationElement?.chart?.destroy();\n this.created = false;\n }\n\n private async change(changes: SimpleChanges) {\n // console.log('changed', changes);\n // await this.delete();\n // this.create();\n }\n\n private updateMapSize(): void {\n\n const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];\n const padding = 20;\n let currentWidth = mapDivWidth ||\n (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);\n const currentHeight = this.currentHeight ||\n (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);\n currentWidth -= padding;\n this.currentWidth = currentWidth;\n this.currentHeight = currentHeight;\n\n this.ngZone.run(() => {\n this.onSizeChanged();\n });\n }\n}\n","<ion-grid>\n <ion-row>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n <ion-button (click)=\"reset(2)\">reset (2 points)</ion-button>\n <ion-button (click)=\"reset(4)\">reset (4 points)</ion-button>\n <ion-button (click)=\"reset(6)\">reset (6 points)</ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n","import {\n AfterViewChecked,\n Component,\n ElementRef,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {DateRange, DateStatusElement, DateStatusElementInput, ElementsFactory} from 'raain-ui';\n\n@Component({\n selector: 'raain-date-focus',\n templateUrl: './raain-date-focus.component.html',\n styleUrls: ['./raain-date-focus.component.scss'],\n})\nexport class RaainDateFocusComponent implements AfterViewChecked, OnDestroy, OnChanges {\n\n @Input()\n public points: {\n label: string,\n style: string,\n values: { date: Date, value: number }[],\n }[];\n\n @Input()\n public focusDate: Date;\n @Input()\n public focusRange: DateRange;\n\n @Input()\n public currentHeight: number;\n public currentWidth: number;\n\n @ViewChild('canvasElement')\n protected canvasElement: ElementRef;\n\n private dateStatusElement: DateStatusElement;\n private onSizeChanged;\n private created: boolean;\n\n constructor(private ngZone: NgZone) {\n this.focusDate = new Date()\n this.focusRange = DateRange.CENTURY;\n this.onSizeChanged = () => {\n };\n }\n\n public ngAfterViewChecked(): void {\n this.create();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.change(changes);\n }\n\n public ngOnDestroy(): void {\n this.delete();\n }\n\n focusPrevious() {\n this.dateStatusElement.focusPrevious();\n }\n\n focusReset() {\n this.dateStatusElement.focusReset();\n }\n\n focusNext() {\n this.dateStatusElement.focusNext();\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(event: any): void {\n this.updateMapSize();\n }\n\n private create() {\n if (this.created) {\n return;\n }\n this.created = true;\n\n // this.ngZone.runOutsideAngular(() => {\n // setTimeout(() => {\n const factory = new ElementsFactory();\n try {\n this.dateStatusElement = factory.createDateStatus(this.canvasElement.nativeElement,\n new DateStatusElementInput(this.points, this.focusDate, this.focusRange));\n } catch (e) {\n console.warn('focus creation issue', e);\n }\n // }, 50);\n // });\n\n }\n\n private async delete() {\n await this.dateStatusElement?.chart?.destroy();\n this.created = false;\n }\n\n private async change(changes: SimpleChanges) {\n await this.delete();\n this.create();\n }\n\n private updateMapSize(): void {\n\n const mapDivWidth = this.canvasElement.nativeElement.parentNode?.parentNode['clientWidth'];\n const padding = 20;\n let currentWidth = mapDivWidth ||\n (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);\n const currentHeight = this.currentHeight ||\n (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);\n currentWidth -= padding;\n this.currentWidth = currentWidth;\n this.currentHeight = currentHeight;\n\n this.ngZone.run(() => {\n this.onSizeChanged();\n });\n }\n}\n","<ion-grid>\n\n <ion-row>\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusReset()\">\n View all dates\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-end\">\n <ion-col class=\"ion-text-left\" size-sm=\"1\">\n <ion-button (click)=\"focusPrevious()\">\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n <ion-col id=\"col-container\">\n <div [style.height.px]=\"currentHeight\" [style.width.px]=\"currentWidth\" id=\"canvas-container\">\n <canvas #canvasElement></canvas>\n </div>\n </ion-col>\n <ion-col class=\"ion-text-left\">\n <ion-button (click)=\"focusNext()\">\n <ion-icon name=\"chevron-forward-outline\"></ion-icon>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-grid>\n","import {\n AfterViewChecked,\n Component,\n ElementRef,\n HostListener,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport {ElementsFactory, SpeedMatrixElementInput} from 'raain-ui';\nimport {PositionValue} from 'raain-model';\n\n@Component({\n selector: 'raain-speed',\n templateUrl: './raain-speed.component.html',\n styleUrls: ['./raain-speed.component.scss'],\n})\nexport class RaainSpeedComponent implements AfterViewChecked, OnDestroy, OnChanges {\n\n @Input()\n public compareSpeedMatrix: PositionValue[];\n\n @Input()\n public compareTrustedIndicator: number;\n\n @Input()\n public currentHeight: number;\n public currentWidth: number;\n public hide = false;\n @ViewChild('canvasSpeedElement')\n protected canvasSpeedElement: ElementRef;\n private onSizeChanged;\n private created;\n\n constructor(private ngZone: NgZone) {\n this.delete();\n this.onSizeChanged = () => {\n };\n }\n\n public ngAfterViewChecked(): void {\n this.create();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.change(changes);\n }\n\n public ngOnDestroy(): void {\n this.delete();\n }\n\n @HostListener('window:resize', ['$event'])\n private onResize(event: any): void {\n this.updateMapSize();\n }\n\n private create() {\n if (this.created || !this.compareSpeedMatrix?.length) {\n return;\n }\n this.created = true;\n\n // this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n const factory = new ElementsFactory();\n factory.createSpeedMatrixIndicator(this.canvasSpeedElement.nativeElement,\n new SpeedMatrixElementInput(this.compareSpeedMatrix, this.compareTrustedIndicator));\n }, 10);\n // });\n\n }\n\n private delete() {\n this.created = false;\n this.hide = false;\n }\n\n private change(changes: SimpleChanges) {\n if (changes.compareSpeedMatrix) {\n if (!this.compareSpeedMatrix?.length) {\n this.hide = true;\n return;\n }\n }\n\n setTimeout(() => {\n this.delete();\n this.create();\n }, 10);\n }\n\n private updateMapSize(): void {\n\n const mapDivWidth = this.canvasSpeedElement.nativeElement.parentNode?.parentNode['clientWidth'];\n\n const currentWidth = mapDivWidth ||\n (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);\n const currentHeight = this.currentHeight ||\n (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);\n this.currentWidth = currentWidth;\n this.currentHeight = currentHeight;\n\n this.ngZone.run(() => {\n this.onSizeChanged();\n });\n }\n}\n","<div id=\"container\">\n <div id=\"canvas-speed-matrix\">\n <div [hidden]=\"hide\">\n <canvas #canvasSpeedElement id=\"indic1\"></canvas>\n </div>\n <div [hidden]=\"!hide\">\n <span id=\"hiddenSquare\"> </span>\n </div>\n <!-- <span>compareTrustedIndicator {{ compareTrustedIndicator }}</span> -->\n </div>\n</div>\n","import {Component, EventEmitter, Input, NgZone, Output} from '@angular/core';\nimport {XYType} from '../xytype';\nimport {CompareManager} from '../tools/CompareManager';\n\n@Component({\n selector: 'raain-compare-stack',\n templateUrl: './raain-compare-stack.component.html',\n styleUrls: ['./raain-compare-stack.component.scss'],\n})\nexport class RaainCompareStackComponent {\n\n @Input()\n public compareManager: CompareManager;\n\n @Input()\n public currentHeight: number;\n\n @Output()\n public selectedPoint = new EventEmitter<{ point: XYType, compareIndex: number }>();\n\n\n constructor(private ngZone: NgZone) {\n }\n\n protected onClick(e: { point: XYType, compareIndex: number }): void {\n this.selectedPoint.emit({point: e.point, compareIndex: e.compareIndex});\n }\n\n\n}\n","<ion-grid>\n <ion-row>\n\n <!--\n <ion-col>\n <ion-card id=\"card-matrix\">\n <div *ngIf=\"compareManager?.compareNames?.length\">\n <raain-speed [compareSpeedMatrix]=\"compareManager.compareSpeedMatrix\"\n [compareTrustedIndicator]=\"compareManager.compareTrustedIndicator\"\n [currentHeight]=\"300\"\n ></raain-speed>\n </div>\n <ion-card-content>\n {{ compareManager?.compareVersion }}\n </ion-card-content>\n </ion-card>\n </ion-col> -->\n\n <ion-col *ngFor=\"let compare of compareManager?.compares; index as compareIndex\" size=\"12\" size-md=\"6\">\n <ion-card class=\"card-compare\">\n <ion-card-header>{{ compare.name }} {{ compare.remarks }}\n </ion-card-header>\n <ion-card-content *ngIf=\"compare.comparePoints?.length\">\n <raain-compare\n (selectedPoint)=\"onClick($event)\"\n [compareIndex]=\"compareIndex\"\n [currentHeight]=\"500\"\n [pointMax]=\"compare.comparePointsMax\"\n [points]=\"compare.comparePoints\"></raain-compare>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <!--\n <ion-card id=\"card-selected-gauge\" slot=\"end\">\n <ion-card-content>\n <ion-accordion-group>\n\n <ion-accordion value=\"selected\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>debug</ion-label>\n </ion-item>\n\n <div class=\"ion-padding\" slot=\"content\">\n date: {{ currentTimeframeTarget.date | date:'yyyy-MM-dd HH:mm:ss' }}<br>\n radarMeasureId: {{ currentTimeframeTarget.radarMeasureId }}<br>\n rainComputationId: {{ currentTimeframeTarget.rainComputationId }}<br>\n rainComputationVersion: {{ currentTimeframeTarget.rainComputationVersion }}<br>\n rainComputationQualities :\n <ul>\n <li *ngFor=\"let rcq of currentTimeframeTarget.rainComputationQualities\">\n {{ rcq.version }} - {{ rcq.id }}\n </li>\n </ul>\n </div>\n\n </ion-accordion>\n <ion-accordion *ngIf=\"selectedGauge\" value=\"context\">\n <ion-item color=\"light\" slot=\"header\">\n <ion-label>{{ selectedGaugeInPointsDetail }}</ion-label>\n </ion-item>\n <div [innerHTML]=\"formatLabelOfSelectedGauge(selectedGaugeInPoints)\" class=\"ion-padding\"\n slot=\"content\"></div>\n </ion-accordion>\n </ion-accordion-group>\n </ion-card-content>\n </ion-card>\n -->\n </ion-row>\n</ion-grid>\n","import {Component} from '@angular/core';\n\nconsole.log('Component:', Component);\n\n@Component({\n selector: 'raain-test',\n template: '<h2>test1</h2>',\n})\nexport class RaainTestComponent {// implements AfterViewChecked, OnDestroy, OnChanges {\n\n constructor(\n // private ngZone: NgZone\n ) {\n\n }\n\n}\n","import {MapLatLng} from 'raain-ui';\nimport {PositionValue, QualityPoint, RainComputationQuality, RainNode} from 'raain-model';\nimport {XYType} from '../xytype';\nimport {ProfileService} from '../profile.service';\nimport {FrameSet} from './FrameSet';\n\nexport class CompareManager {\n\n // public computed$: Observable<boolean>;\n\n public gaugesInCompare: MapLatLng[];\n public selectedGauges: MapLatLng[];\n public selectedPixels: MapLatLng[];\n public pixelsSolutions: MapLatLng[][];\n\n public compareNames: string[];\n public compares: {\n name: string;\n comparePoints: XYType[];\n comparePointsMax: XYType;\n comparePointsHistory: QualityPoint[];\n remarks: string;\n }[];\n public compareSpeedMatrix: PositionValue[];\n public compareVersion: string;\n public compareTrustedIndicator: number;\n\n public currentQualityDoneDate: Date;\n public currentQualityLaunchedBy: string;\n public currentQualityVersion: string;\n public currentQualityTimeSpentInMs: number;\n\n private selectedGauge: QualityPoint;\n private selectedGaugeInPoints: QualityPoint;\n private selectedGaugeInPointsDetail: string;\n private rainComputationQualities: any;\n\n constructor(\n private rainNode: RainNode,\n private profileService: ProfileService,\n public onChanges: () => void = () => {\n }\n ) {\n this.cleanAll();\n }\n\n private static CompareDate(date1: string, date2: string, minutes: number): boolean {\n\n const date1AsDate: Date = new Date(parseInt(date1, 10));\n const date2Diff = new Date(parseInt(date2, 10));\n date2Diff.setMinutes(date2Diff.getMinutes() + minutes);\n const diff = Math.round((date1AsDate.getTime() - date2Diff.getTime()) / (60 * 1000));\n return diff === 0;\n }\n\n public cleanAll() {\n this.gaugesInCompare = [];\n this.selectedGauges = [];\n this.selectedPixels = [];\n this.pixelsSolutions = [];\n\n this.selectedGauge = null;\n this.selectedGaugeInPoints = null;\n this.cleanCompareQuality('no compare');\n }\n\n async refreshCompareQuality(frameSet: FrameSet,\n targets: { date: Date; rainComputationId: string; rainComputationQualityId: string }[],\n withCompareDuplicate: boolean) {\n\n const targetsOrdered = targets\n .sort((a, b) => a.date.getTime() - b.date.getTime())\n .map(t => {\n return {date: '' + t.date.getTime(), rainComputationId: t.rainComputationId, rainComputationQualityId: t.rainComputationQualityId};\n });\n\n const currentTarget = targetsOrdered.filter(t => t.date === '' + frameSet.date.getTime())[0];\n const currentPos = targetsOrdered.indexOf(currentTarget);\n const previousTarget = currentPos >= 0 ? targetsOrdered[currentPos - 1] : null;\n const nextTarget = currentPos >= 0 && currentPos < targetsOrdered.length - 1 ? targetsOrdered[currentPos + 1] : null;\n\n await this.fetchRainComputationQualities(targetsOrdered);\n\n const currentQuality: RainComputationQuality = this.rainComputationQualities[currentTarget?.date];\n if (!currentQuality) {\n this.cleanCompareQuality('no current quality ' + Object.keys(this.rainComputationQualities));\n return;\n }\n\n this.currentQualityDoneDate = currentQuality.isDoneDate;\n this.currentQualityTimeSpentInMs = currentQuality.timeSpentInMs;\n this.currentQualityLaunchedBy = currentQuality.launchedBy;\n this.currentQualityVersion = currentQuality.version;\n\n const previousQuality: RainComputationQuality = previousTarget &&\n CompareManager.CompareDate(previousTarget.date, currentTarget.date, -5) ?\n this.rainComputationQualities[previousTarget.date] : null;\n const nextQuality: RainComputationQuality = nextTarget\n && CompareManager.CompareDate(nextTarget.date, currentTarget.date, +5) ?\n this.rainComputationQualities[nextTarget.date] : null;\n\n const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;\n\n this.compareNames = qualitySpeedMatrixContainer.getMatrices()\n .map(m => m.name)\n .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));\n this.compareVersion = currentQuality.getVersion();\n this.compareSpeedMatrix = qualitySpeedMatrixContainer.renderMergedMatrix({normalize: true});\n this.compareTrustedIndicator = qualitySpeedMatrixContainer.getTrustedIndicators()[0];\n this.compares = this.buildCompares(currentQuality, previousQuality, nextQuality, withCompareDuplicate);\n this.onChanges();\n }\n\n async setGauges() {\n // console.log('setGauges');\n\n const qualityPoints: QualityPoint[] = [];\n for (const compare of this.compares) {\n for (const qualityPoint of compare.comparePointsHistory) {\n const alreadyAdded = qualityPoints.filter(p => p?.gaugeId === qualityPoint.gaugeId);\n if (alreadyAdded.length === 0) {\n qualityPoints.push(qualityPoint);\n }\n }\n }\n\n this.gaugesInCompare = qualityPoints.map(p => {\n return new MapLatLng(p.gaugeCartesianValue.lat, p.gaugeCartesianValue.lng, 0,\n p.gaugeId, p.gaugeLabel + '>' + p.getGaugeValue(),\n p.getGaugeValue());\n });\n\n this.resetSelectedGauges();\n }\n\n async selectGauge(gaugeId: string, compareIndex: number) {\n // console.log('selectGauge', gaugeId, compareIndex);\n\n if (gaugeId) {\n const xys = this.getCurrentQualityPoints(compareIndex).filter(p => p.gaugeId === gaugeId);\n this.selectedGauge = xys.length === 1 ? xys[0] : null;\n } else {\n this.selectedGauge = null;\n }\n\n if (!this.selectedGauge) {\n return this.resetSelectedGauges();\n }\n\n const selectedGaugeInPoints = this.getCurrentQualityPoints(compareIndex).filter(p => p.gaugeId === this.selectedGauge.gaugeId);\n let pixelsSolutions: MapLatLng[][] = [];\n\n if (selectedGaugeInPoints.length === 1) {\n const remarks = JSON.parse(selectedGaugeInPoints[0].remark)\n .sort((a, b) => a.criteriaAttemptedToBeMinimum - b.criteriaAttemptedToBeMinimum);\n console.log(remarks);\n pixelsSolutions = remarks\n .map(remark => remark.solutionForGauge.pixels\n .map(p => new MapLatLng(p.y + 0.005, p.x + 0.01, 0, '' + !remark.notPossible, '' + !remark.notPossible, 1)));\n\n const timeDeltaInMinutes = selectedGaugeInPoints[0].getTimeDeltaInMinutes();\n this.selectedGaugeInPointsDetail = '' + selectedGaugeInPoints[0].gaugeLabel + ' > '\n + Math.round(selectedGaugeInPoints[0].getGaugeValue() * 100) / 100 + ' / '\n + Math.round(selectedGaugeInPoints[0].getRainValue() * 100) / 100\n + ' dT=' + timeDeltaInMinutes;\n\n this.selectedGaugeInPoints = selectedGaugeInPoints[0];\n\n } else {\n this.selectedGaugeInPoints = null;\n this.selectedGauges = [];\n this.selectedPixels = [];\n this.pixelsSolutions = [];\n return;\n }\n\n this.selectedGauges = [\n new MapLatLng(this.selectedGaugeInPoints.gaugeCartesianValue.lat, this.selectedGaugeInPoints.gaugeCartesianValue.lng, undefined,\n this.selectedGaugeInPoints.gaugeId,\n this.selectedGaugeInPoints.gaugeLabel + '>' + this.selectedGaugeInPoints.gaugeCartesianValue.value,\n this.selectedGaugeInPoints.gaugeCartesianValue.value),\n ];\n\n this.selectGaugeInCompare();\n\n const pixels: MapLatLng[] = [];\n for (const rainCartesianValue of this.selectedGaugeInPoints.rainCartesianValues) {\n pixels.push(new MapLatLng(rainCartesianValue.lat + 0.005, rainCartesianValue.lng + 0.01));\n }\n this.selectedPixels = pixels;\n\n this.pixelsSolutions = pixelsSolutions;\n }\n\n private getCurrentQualityPoints(compareIndex: number) {\n if (compareIndex < 0 || this.compareNames.length < compareIndex) {\n return [];\n }\n\n return this.compares[compareIndex].comparePointsHistory;\n }\n\n private cleanCompareQuality(details?: string) {\n this.compareVersion = details;\n this.compareNames = [];\n this.compares = [];\n this.rainComputationQualities = {};\n }\n\n private async fetchRainComputationQualities(targetsOrdered: {\n date: string;\n rainComputationId: string;\n rainComputationQualityId: string\n }[]) {\n\n for (const key of Object.keys(this.rainComputationQualities)) {\n const found = targetsOrdered.filter(t => t.date === key);\n if (found.length < 0) {\n delete this.rainComputationQualities[key];\n }\n }\n\n for (const target of targetsOrdered) {\n if (!this.rainComputationQualities[target.date] && target.rainComputationQualityId) {\n try {\n this.rainComputationQualities[target.date] = await this.profileService\n .getRainCompareById(this.rainNode.getId(), target.rainComputationId, target.rainComputationQualityId);\n } catch (e) {\n console.log(e);\n }\n }\n }\n }\n\n private buildCompares(currentQuality: RainComputationQuality,\n previousQuality: RainComputationQuality,\n nextQuality: RainComputationQuality,\n withCompareDuplicate: boolean) {\n const compares = [];\n const qualitySpeedMatrixContainer = currentQuality.qualitySpeedMatrixContainer;\n for (const [index, name] of this.compareNames.entries()) {\n\n const comparePointsHistory = qualitySpeedMatrixContainer.getQualityPoints(name);\n const maxValue = Math.max(qualitySpeedMatrixContainer.getMaxGauge(), qualitySpeedMatrixContainer.getMaxRain());\n const remarks = qualitySpeedMatrixContainer.getMatrix(index)?.remarks;\n\n const delta = parseInt(name, 10);\n let renamed = new Date(currentQuality.date.getTime() - delta * 60 * 1000).toLocaleString();\n renamed += delta > 0 ? ' since ' : ' in ';\n renamed += Math.abs(delta) + ' minutes';\n\n console.log('index:', index, 'delta:', delta, 'renamed:', renamed);\n\n // remove previous or next better values from comparePoints\n let qualityPoints = comparePointsHistory.filter((p: any) => p); // no real filter\n\n const removeDuplicates = !withCompareDuplicate;\n if (removeDuplicates) {\n if (index === this.compareNames.length - 1) {\n if (!previousQuality?.qualitySpeedMatrixContainer) {\n qualityPoints = [];\n } else {\n qualityPoints = qualityPoints.filter((p: QualityPoint) => {\n const previousQPs = previousQuality.qualitySpeedMatrixContainer\n .getQualityPointsByHistoricalPosition(0)\n .filter(previousQP => p.gaugeId === previousQP.gaugeId);\n\n // better before ?\n const betterBefore = (previousQPs.length === 1 && p.getDelta() > previousQPs[0].getDelta());\n if (betterBefore) {\n console.log('removed from', renamed, p.gaugeLabel, previousQuality.date.toISOString(),\n p.getDelta(),\n previousQPs.length === 1 ? previousQPs[0].getDelta() + ' dated ' + previousQPs[0].gaugeDate.toISOString() : 0);\n return false; // => remove it\n }\n return true;\n });\n }\n } else if (index === 0) {\n if (!nextQuality?.qualitySpeedMatrixContainer) {\n qualityPoints = [];\n } else {\n qualityPoints = qualityPoints.filter((p: QualityPoint) => {\n const nextQPs = nextQuality.qualitySpeedMatrixContainer\n .getQualityPointsByHistoricalPosition(1)\n .filter(nextQP => p.gaugeId === nextQP.gaugeId);\n\n // better after ?\n const betterAfter = (nextQPs.length === 1 && p.getDelta() > nextQPs[0].getDelta());\n if (betterAfter) {\n console.log('removed from', renamed, p.gaugeLabel, nextQuality.date.toISOString(),\n p.getDelta(),\n nextQPs.length === 1 ? nextQPs[0].getDelta() + ' dated ' + nextQPs[0].gaugeDate.toISOString() : 0);\n return false; // => remove it\n }\n return true;\n });\n }\n }\n }\n\n const comparePoints = qualityPoints.map((qualityPoint: QualityPoint) =>\n new XYType(qualityPoint.getGaugeValue(), qualityPoint.getRainValue(), 2, qualityPoint.gaugeLabel, qualityPoint.gaugeId));\n\n const compare = {\n name: renamed,\n comparePointsHistory,\n comparePoints,\n maxValue,\n comparePointsMax: new XYType(maxValue + 20, maxValue + 20),\n remarks,\n };\n\n compares.push(compare);\n }\n\n return compares;\n }\n\n private selectGaugeInCompare() {\n for (const compare of this.compares) {\n const comparePoints = JSON.parse(JSON.stringify(compare.comparePoints));\n comparePoints.forEach(p => {\n if (p.id === this.selectedGaugeInPoints?.gaugeId) {\n p.r = 10;\n } else {\n p.r = 3;\n }\n });\n compare.comparePoints = comparePoints;\n }\n }\n\n private resetSelectedGauges() {\n // console.log('resetSelectedGauges reset');\n this.selectedGauge = null;\n this.selectedGaugeInPoints = null;\n this.selectedGauges = [];\n this.selectedPixels = [];\n this.pixelsSolutions = [];\n this.selectGaugeInCompare();\n }\n}\n","export class FrameSet {\n constructor(public date: Date,\n public radarMeasureIds: string[] = [],\n public rainComputationId: string = null,\n public rainComputationVersion: string = null,\n public rainComputationQualities: {\n version: string,\n id: string\n }[] = []) {\n }\n}\n","import {GaugeNode, LatLng} from 'raain-model';\n\nexport class GaugeNodeFilter extends GaugeNode {\n\n public isIn = true;\n public distance = 0;\n\n constructor(json: any) {\n super(json);\n }\n\n approxDistanceFrom(center: LatLng): number {\n this.distance = Math.round((Math.pow(this.latitude - center.lat, 2) + Math.pow(this.longitude - center.lng, 2)) * 100 * 100) / 100;\n return this.distance;\n }\n\n add() {\n this.isIn = true;\n }\n\n remove() {\n this.isIn = false;\n }\n}\n","import {FrameSet} from './FrameSet';\nimport {Subject, takeUntil, timer} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\nimport {GaugeNode, RainNode} from 'raain-model';\nimport {FrameContainer, IconMapValue, TimeframeContainer, TimeframeContainers} from 'raain-ui';\nimport {RadarService} from '../radar.service';\nimport {ProfileService} from '../profile.service';\nimport {CompareManager} from './CompareManager';\n\nexport class RefreshManager {\n\n public rainComputationMapDate: Date;\n public rainComputationMapDoneDate: Date;\n public rainComputationMapLaunchedBy: string;\n public rainComputationMapTimeSpentInMs: number;\n\n protected closeRefreshTimer: Subject<any>;\n protected countsPeriod: any;\n protected timeframesFromRadars: FrameSet[];\n protected timeframesFromRadarsExtended: FrameSet[];\n protected timeframeDates: Date[];\n protected begin: Date;\n protected end: Date;\n\n constructor(\n protected rainNode: RainNode,\n protected radarService: RadarService,\n protected profileService: ProfileService,\n protected compareManager: CompareManager,\n protected onRefreshInProgress: (countPeriods: any, timeframeDates: Date[]) => Promise<void>,\n protected onRefreshDone: (timeframeDates: Date[]) => Promise<void>,\n protected onFetchDone: (timeframeContainers: TimeframeContainers) => Promise<void>,\n ) {\n this.closeRefreshTimer = new Subject<any>();\n this.cleanAll();\n }\n\n public static Delay(ms: number) {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n cleanAll() {\n\n this.countsPeriod = {};\n this.timeframesFromRadars = [];\n this.timeframesFromRadarsExtended = [];\n this.timeframeDates = [];\n this.closeRefreshTimer?.next(null);\n }\n\n async fetch(dateShown: Date, withGaugesMeasures: boolean, withCompareDuplicate: boolean): Promise<FrameSet> {\n // set the target\n const currents = this.timeframesFromRadarsExtended.filter(t => t.date.getTime() === dateShown.getTime());\n if (currents.length !== 1) {\n console.log('no correct dateShown', dateShown, this.timeframesFromRadarsExtended);\n return;\n }\n\n // build [current, previous, next] targets\n const current: FrameSet = currents[0];\n const position = this.timeframesFromRadarsExtended.indexOf(current);\n let previous: FrameSet = null, next: FrameSet = null;\n const positionNames: string[] = ['' + current.date.getTime()];\n const frameSets = {};\n frameSets['' + current.date.getTime()] = current;\n if (position > 0) {\n previous = this.timeframesFromRadarsExtended[position - 1];\n positionNames.push('' + previous.date.getTime());\n frameSets['' + previous.date.getTime()] = previous;\n }\n if (position < this.timeframesFromRadarsExtended.length) {\n next = this.timeframesFromRadarsExtended[position + 1];\n if (next?.date) {\n positionNames.push('' + next.date.getTime());\n frameSets['' + next.date.getTime()] = next;\n }\n }\n\n // align Map with targets\n const targets: {\n date: Date,\n rainComputationId: string,\n rainComputationQualityId: string,\n }[] = [];\n for (const positionName of positionNames) {\n if (frameSets[positionName]) {\n const target = frameSets[positionName];\n target.rainComputationQualityId = this.getRainComputationQualityTarget(target);\n target.withGauge = withGaugesMeasures;\n targets.push(target);\n\n const timeframeContainers = await this.refreshMapTimeframeContainers(target);\n\n if (positionName === ('' + current.date.getTime())) {\n this.onFetchDone(timeframeContainers).then(ignored => {\n });\n }\n }\n }\n\n // align Compare with targets\n this.refreshCompareQuality(current, targets, withCompareDuplicate).then((ignored) => {\n });\n\n return current;\n }\n\n async stopAll() {\n this.closeRefreshTimer.next(null); // <-- stop polling\n await this.profileService.stopAll(this.rainNode.id);\n await this.onRefreshDone(this.timeframeDates);\n }\n\n async setPeriod(begin: Date, end: Date) {\n this.begin = begin;\n this.end = end;\n\n return this.refreshCounts();\n }\n\n async refresh(launchQualityAfter: boolean) {\n\n if (!this.begin || !this.end) {\n throw new Error('need a period');\n }\n\n this.compareManager.cleanAll();\n let refreshInProgress = false;\n let refreshDone = false;\n\n timer(1000, 15000)\n .pipe(\n switchMap(async () => {\n if (refreshInProgress) {\n return refreshDone;\n }\n\n refreshInProgress = true;\n this.onRefreshInProgress(await this.refreshCounts(), this.timeframeDates).then(ignored => {\n });\n refreshDone = await this.refreshPeriodInsidePolling();\n if (!refreshDone) {\n refreshInProgress = false;\n }\n return refreshDone;\n }),\n takeUntil(this.closeRefreshTimer),\n )\n .subscribe({\n next: async (refreshFinished: boolean) => {\n console.log('refreshFinished', refreshFinished, launchQualityAfter);\n if (refreshFinished) {\n this.closeRefreshTimer.next(null);\n await this.onRefreshDone(this.timeframeDates);\n }\n },\n error: (error: any) => {\n console.error('error in refresh', error);\n }\n });\n\n }\n\n async selectGauge(gaugeId: string, compareIndex: number) {\n return this.compareManager.selectGauge(gaugeId, compareIndex);\n }\n\n protected async refreshCounts() {\n const counts = await this.profileService.getCounts(this.rainNode.id, this.begin, this.end, true);\n this.countsPeriod = {\n radarMeasures: counts.radarMeasures.reduce((partialSum, a) => partialSum + a.x, 0),\n gaugeMeasures: counts.gaugeMeasures.reduce((partialSum, a) => partialSum + a.x, 0),\n computationsByTeam: counts.computationsByTeam.reduce((partialSum, a) => partialSum + a.x, 0),\n computationsByR2R: counts.computationsByR2R.reduce((partialSum, a) => partialSum + a.x, 0),\n computationsUnderProcessing: counts.computationsUnderProcessing.reduce((partialSum, a) => partialSum + a.x, 0),\n gaugeIntensity: counts.gaugeIntensity.reduce((partialSum, a) => partialSum + a.x, 0),\n queueStoreSize: counts.queueStoreSize,\n queueWaiting: counts.queueWaiting,\n queueRunning: counts.queueRunning,\n qualitiesInternal: counts.qualitiesInternal.reduce((partialSum, a) => partialSum + a.x, 0),\n qualitiesInternalInProgress: counts.qualitiesInternalInProgress.reduce((partialSum, a) => partialSum + a.x, 0),\n };\n return this.countsPeriod;\n }\n\n protected getRainComputationQualityTarget(frameset: FrameSet): string {\n if (frameset.rainComputationQualities.length <= 0) {\n return undefined;\n }\n return frameset.rainComputationQualities[0].id;\n }\n\n protected async refreshPeriodInsidePolling(): Promise<boolean> {\n\n // await RefreshManager.Delay(1000);\n\n await this.refreshTimeframesFromRadars();\n\n // if (this.countsPeriod.queueRunning === 0) {\n // return true;\n // }\n\n if (this.countsPeriod.computationsUnderProcessing > 0) {\n return false; // => continue\n }\n\n if (this.countsPeriod.qualitiesInternalInProgress > 0) {\n return false; // => continue\n }\n\n console.log('refreshPeriodInsidePolling', this.countsPeriod.computationsByR2R, this.countsPeriod.radarMeasures)\n // return this.countsPeriod.qualitiesInternal >= this.countsPeriod.radarMeasures;\n const done = this.countsPeriod.computationsByR2R === this.countsPeriod.radarMeasures;\n return done;\n }\n\n protected async refreshTimeframesFromRadars() {\n\n const beginExtended = new Date(this.begin);\n const endExtended = new Date(this.end);\n beginExtended.setMinutes(beginExtended.getMinutes() - 7);\n endExtended.setMinutes(endExtended.getMinutes() + 7);\n this.rainNode = await this.profileService.getRainTimeframe(this.rainNode.getId(), beginExtended, endExtended);\n\n this.timeframesFromRadarsExtended = await this.radarService.getTimeline(this.rainNode);\n this.timeframesFromRadars = this.timeframesFromRadarsExtended\n .filter((frameSet) => this.begin.getTime() <= frameSet.date.getTime() && frameSet.date.getTime() <= this.end.getTime())\n .sort((a, b) => a.date.getTime() - b.date.getTime());\n\n // console.log('timeframesFromRadarsExtended:', this.timeframesFromRadarsExtended);\n\n this.timeframeDates = this.timeframesFromRadars.map(frameSet => frameSet.date);\n return this.timeframesFromRadars;\n }\n\n protected async refreshMapTimeframeContainers(target: {\n date: Date,\n rainComputationId: string,\n withGauge: boolean\n }) {\n if (!target || !target.rainComputationId) {\n console.warn('Pb with refreshMapTimeframeContainers insights');\n return;\n }\n\n const rainNode = this.rainNode;\n const containers: TimeframeContainer[] = [];\n const newCreatedTimeframeContainers = new TimeframeContainers(containers);\n try {\n const rainNodeCartesianMap = await this.profileService\n .getRainComputationCartesianMapById(rainNode.getId(), target.rainComputationId);\n if (rainNodeCartesianMap) {\n newCreatedTimeframeContainers.addFromRainComputationMap(rainNodeCartesianMap, false);\n\n this.rainComputationMapDate = rainNodeCartesianMap.date;\n this.rainComputationMapDoneDate = rainNodeCartesianMap.isDoneDate;\n this.rainComputationMapLaunchedBy = rainNodeCartesianMap.launchedBy;\n this.rainComputationMapTimeSpentInMs = rainNodeCartesianMap.timeSpentInMs;\n }\n } catch (e) {\n console.warn('Pb with computations for id:', target.rainComputationId, e);\n }\n\n return newCreatedTimeframeContainers;\n }\n\n protected async refreshCompareQuality(frameSet: FrameSet, targets: {\n date: Date,\n rainComputationId: string,\n rainComputationQualityId: string,\n }[],\n withCompareDuplicate: boolean) {\n await this.compareManager.refreshCompareQuality(frameSet, targets, withCompareDuplicate);\n await this.compareManager.setGauges();\n }\n\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Cache {\n\n private readonly _cache: any;\n\n constructor() {\n this._cache = {};\n }\n\n public async getValue(key: string, asyncGetter): Promise<any> {\n if (!this._cache.hasOwnProperty(key)) {\n console.log('cache not done: ', key);\n this.putValue(key, await asyncGetter());\n } else {\n console.log('cache done: ', key);\n }\n return this._cache[key];\n }\n\n public putValue(key: string, value: any): void {\n this._cache[key] = value;\n\n const length = Object.getOwnPropertyNames(this._cache).length;\n if (length > 30) {\n console.warn('cache size exceed ? do a restart ?', length);\n }\n }\n\n}\n","import {FidjService} from 'fidj';\nimport {EventNode, GaugeNode, Link, PeopleNode, RadarNode, RainNode} from 'raain-model';\nimport {Storage} from './storage.service';\n\nexport class FidjStorageNode {\n\n public radars: RadarNode[] = [];\n public rains: RainNode[] = [];\n public gauges: GaugeNode[] = [];\n public team: PeopleNode;\n public events: EventNode[] = [];\n\n public infos: any = {};\n\n static getEmptyNode() {\n return new FidjStorageNode();\n }\n\n static getDemoNode() {\n const demoNode = new FidjStorageNode();\n const link = new Link('rain', 'https://demo/api/rains/2');\n /*\n demoNode.radars = [\n new RadarNode({\n id: '5efd04569cb1f4161bd69dc7',\n name: 'demo radar A',\n links: [link],\n latitude: 48.774569,\n longitude: 2.008407\n }),\n new RadarNode({\n id: 'dr2',\n name: 'demo radar B',\n links: [link],\n latitude: 0.11,\n longitude: -0.753\n }),\n new RadarNode({\n id: 'dr3',\n name: 'demo radar C',\n latitude: 0.13,\n longitude: -0.753,\n links: []\n }),\n new RadarNode({\n id: 'dr4',\n name: 'demo radar D',\n latitude: 0.14,\n longitude: -0.74,\n links: []\n })];\n demoNode.rains = [\n new RainNode({\n id: '5efd04569cb1f4161bd69dc8',\n name: 'Demo rain zone A',\n links: [new Link('radar', 'https://demo/api/radars/5efcfe619cb1f4161bd69dc3')],\n status: 0,\n quality: 75,\n latitude: 48.774569,\n longitude: 2.008407\n }),\n new RainNode({\n id: 'dz2',\n name: 'Demo rain zone B',\n radars: [demoNode.radars[0], demoNode.radars[1]],\n status: 1,\n quality: 50,\n latitude: 48.774569,\n longitude: 2.008407\n }),\n new RainNode({\n id: 'dz3',\n name: 'Demo rain zone C',\n radars: [demoNode.radars[0], demoNode.radars[1]],\n status: 2,\n quality: 75,\n latitude: 48.774569,\n longitude: 2.008407\n }),\n new RainNode({\n id: 'dz4',\n name: 'Demo rain zone D',\n radars: [demoNode.radars[0], demoNode.radars[1]],\n status: 3,\n quality: 95,\n latitude: 48.774569,\n longitude: 2.008407\n })];\n\n demoNode.gauges = [\n new GaugeNode({\n id: 'g1',\n name: 'Gauge A',\n latitude: 48.7748,\n longitude: 2.28407,\n }),\n new GaugeNode({\n id: 'g2',\n name: 'Gauge B',\n latitude: 48.874569,\n longitude: 2.108407,\n })];\n demoNode.events = [{\n id: 'e2',\n title: 'Need support ?',\n status: 0,\n red: false,\n description: 'This area is dedicated to support you and your team. Support is made on Radar or Rain quality, ' +\n 'or any feedback we can have about your production system. Our goal : improving your data.',\n created: new Date(),\n modified: new Date()\n }];\n demoNode.team = {\n id: 'p1',\n email: 'demo@demo.com',\n name: 'demo guy',\n description: 'the demo guy'\n };\n\n */\n return demoNode;\n }\n}\n\nclass FidjStorageResult {\n data: FidjStorageNode;\n}\n\nexport class FidjStorage {\n\n private isDemoMode: boolean;\n private node: FidjStorageNode = FidjStorageNode.getEmptyNode();\n private fidjMetaResult: FidjStorageResult = {data: new FidjStorageNode()};\n\n constructor(private storage: Storage) {\n }\n\n public async storeData(fidjAngularService: FidjService, data) {\n this.node = JSON.parse(JSON.stringify(data));\n this.fidjMetaResult.data = this.node;\n\n if (this.isDemoMode) {\n this.storage.set('fidjMetaResult', JSON.stringify(this.fidjMetaResult));\n return;\n }\n\n await fidjAngularService.put(this.fidjMetaResult);\n }\n\n public async getRefreshedNodeCopy(fidjAngularService: FidjService): Promise<FidjStorageNode> {\n\n if (this.isDemoMode) {\n const fidjMetaResult = this.storage.get('fidjMetaResult');\n if (fidjMetaResult) {\n this.fidjMetaResult = JSON.parse(fidjMetaResult);\n this.node = this.fidjMetaResult.data;\n }\n return JSON.parse(JSON.stringify(this.node));\n }\n\n const firstDemoData = () => {\n this.node = FidjStorageNode.getDemoNode();\n this.storeData(fidjAngularService, this.node);\n };\n\n await fidjAngularService.sync(firstDemoData);\n const fidjFindAllResults: any = await fidjAngularService.findAll();\n\n if (fidjFindAllResults && fidjFindAllResults.length > 0) {\n if (fidjFindAllResults[0].data) {\n this.fidjMetaResult = fidjFindAllResults[0];\n this.node = this.fidjMetaResult.data;\n }\n }\n\n return JSON.parse(JSON.stringify(this.node));\n }\n\n setDemoMode(isDemo: boolean) {\n this.isDemoMode = isDemo;\n }\n}\n","import {Injectable} from '@angular/core';\nimport {LocalStorage} from 'fidj';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Storage extends LocalStorage {\n\n constructor() {\n super(window.localStorage, 'R2R_back.');\n }\n}\n","import {Injectable} from '@angular/core';\nimport {HttpClient} from '@angular/common/http';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {\n EventNode,\n GaugeMeasure,\n GaugeNode,\n RadarMeasure,\n RadarNode,\n RadarNodeMap,\n RainComputation,\n RainComputationMap,\n RainComputationQuality,\n RainNode,\n SpeedMatrixContainer,\n TeamNode\n} from 'raain-model';\n\nimport {Storage} from './storage.service';\n\nimport {FidjStorage, FidjStorageNode} from './fidj-storage.model';\nimport {FidjService} from 'fidj';\nimport {XYType} from './xytype';\nimport {GaugeNodeFilter} from './tools';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProfileService {\n public readyForSync: BehaviorSubject<boolean>;\n public asTeamId: string;\n\n protected email: string;\n protected isDemo: boolean;\n protected roles: Array<string>;\n protected nodeData: FidjStorageNode;\n protected fidjStorage: FidjStorage;\n\n constructor(protected storage: Storage,\n protected fidjAngularService: FidjService,\n protected http: HttpClient) {\n this.email = this.storage.get('email') || null;\n this.asTeamId = this.storage.get('asTeamId') || null;\n this.readyForSync = new BehaviorSubject<boolean>(false);\n this.roles = [];\n this.fidjStorage = new FidjStorage(storage);\n this.isDemoMode = false;\n }\n\n protected _defaultUrlForAPI: string;\n\n get defaultUrlForAPI(): string {\n return this._defaultUrlForAPI;\n }\n\n set defaultUrlForAPI(value: string) {\n this._defaultUrlForAPI = value;\n }\n\n get isDemoMode() {\n return this.isDemo;\n }\n\n set isDemoMode(mode) {\n this.isDemo = mode ? mode : true;\n this.fidjStorage.setDemoMode(this.isDemo);\n }\n\n async refreshProfile(): Promise<FidjStorageNode> {\n this.nodeData = await this.fidjStorage.getRefreshedNodeCopy(this.fidjAngularService);\n this.setRoles(await this.fidjAngularService.getRoles());\n return this.nodeData;\n }\n\n getEmail() {\n return this.email;\n }\n\n setEmail(email: string) {\n this.email = email;\n this.storage.set('email', this.email);\n }\n\n logout() {\n this.storage.remove('email');\n }\n\n isLoggedIn() {\n return this.fidjAngularService.isLoggedIn();\n }\n\n isReady(): Observable<boolean> {\n return this.readyForSync.asObservable();\n }\n\n getRoles(): Array<string> {\n return this.roles;\n }\n\n actAsTheTeam(teamId) {\n this.asTeamId = teamId;\n this.storage.set('asTeamId', teamId);\n }\n\n async getStatus(): Promise<any> {\n let status = {};\n try {\n const res = await this.fidjAngularService.sendOnEndpoint({\n verb: 'GET',\n key: 'status',\n defaultKeyUrl: this._defaultUrlForAPI + '/status/'\n });\n const result = res.data;\n status = {\n errors: result.errors,\n results: result.results,\n version: result.version,\n url: result.url,\n };\n } catch (e) {\n console.error('getStatus error:', e);\n }\n return status;\n }\n\n async getStatusInternal(): Promise<any> {\n let status = {};\n try {\n status = await this.fidjAngularService.sendOnEndpoint({\n verb: 'GET',\n key: 'status-internal',\n defaultKeyUrl: this._defaultUrlForAPI + '/status-internal/'\n });\n } catch (e) {\n console.error('getStatusInternal error:', e);\n }\n return status;\n }\n\n async storeAll() {\n return this.fidjStorage.storeData(this.fidjAngularService, this.nodeData);\n }\n\n // === Notifications ===\n\n async createNotification(rainId: string, message: string) {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'notifications',\n verb: 'POST',\n defaultKeyUrl: this._defaultUrlForAPI + '/notifications',\n data: {\n rain: rainId,\n message,\n },\n });\n return new EventNode(resp);\n } catch (e) {\n console.error('createNotification error:', e);\n }\n\n return null;\n }\n\n async getNotifications(rainId: string) {\n try {\n const args = '?rain=' + rainId;\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'notifications',\n verb: 'GET',\n relativePath: args,\n defaultKeyUrl: this._defaultUrlForAPI + '/notifications',\n });\n\n return resp.notifications.map(n => new EventNode(n));\n } catch (e) {\n console.error('createNotification error:', e);\n }\n\n return null;\n }\n\n async getAllNotifications(): Promise<EventNode[]> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'notifications',\n verb: 'GET',\n defaultKeyUrl: this._defaultUrlForAPI + '/notifications',\n });\n\n return resp.notifications.map(n => new EventNode(n));\n } catch (e) {\n console.error('createNotification error:', e);\n }\n\n return [];\n }\n\n // === Teams ===\n\n async createTeam(teamName: string, email: string) {\n // TODO sync with fidj domains because creating a team implies fidj access for team members !\n // this.fidjAngularService.createDomain\n\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'teams',\n verb: 'POST',\n defaultKeyUrl: this._defaultUrlForAPI + '/teams',\n data: {\n name: teamName,\n contracts: ['arctos'],\n email,\n },\n });\n return new RadarNode(resp);\n } catch (e) {\n console.error('addRadar error:', e);\n }\n\n return null;\n }\n\n async getTeams(): Promise<Array<TeamNode>> {\n const teams = [];\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'teams_all',\n verb: 'GET',\n defaultKeyUrl: this._defaultUrlForAPI + '/teams_all'\n });\n for (const team of resp.teams) {\n teams.push(new TeamNode(team));\n }\n } catch (e) {\n console.error('getTeams error:', e);\n }\n return teams;\n }\n\n async getTeam(id): Promise<TeamNode> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'teams',\n verb: 'GET',\n relativePath: id,\n defaultKeyUrl: this._defaultUrlForAPI + '/teams'\n });\n return new TeamNode(resp);\n } catch (e) {\n console.error('getRadars error:', e);\n }\n\n return null;\n }\n\n async putTeam(teamNode: TeamNode) {\n try {\n await this.fidjAngularService.sendOnEndpoint({\n key: 'teams',\n relativePath: teamNode.id,\n verb: 'PUT',\n data: {\n name: teamNode.name,\n contracts: teamNode.contracts,\n },\n defaultKeyUrl: this._defaultUrlForAPI + '/teams/'\n });\n } catch (e) {\n console.error('putTeam error:', e);\n }\n }\n\n // === Radars ===\n\n async getRadars(teamId: string): Promise<Array<RadarNode>> {\n const radars = [];\n const url = this._defaultUrlForAPI + '/radars' + '?teamId=' + teamId;\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n defaultKeyUrl: url,\n });\n for (const r of resp.radars) {\n const radar = new RadarNode(r);\n radars.push(radar);\n }\n } catch (e) {\n console.error('getRadars error:', e);\n }\n return radars;\n }\n\n async getRadar(id: string): Promise<RadarNode> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n relativePath: id,\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n return new RadarNode(resp);\n } catch (e) {\n console.error('getRadars error:', e);\n }\n\n return null;\n }\n\n async postRadarDemo(id: string): Promise<RadarMeasure> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'POST',\n relativePath: id + '/demo',\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n return new RadarMeasure(resp);\n } catch (e) {\n console.error('getRadars error:', e);\n }\n\n return null;\n }\n\n async addRadar(radarName: string): Promise<RadarNode> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'POST',\n defaultKeyUrl: this._defaultUrlForAPI + '/radars',\n data: {\n name: radarName,\n latitude: 50,\n longitude: -75,\n team: this.asTeamId\n },\n });\n return new RadarNode(resp);\n } catch (e) {\n console.error('addRadar error:', e);\n }\n\n return null;\n }\n\n async removeRadar(id: string): Promise<void> {\n try {\n await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n relativePath: id,\n verb: 'DELETE',\n defaultKeyUrl: this._defaultUrlForAPI + '/radars/'\n });\n } catch (e) {\n console.error('removeRadar error:', e);\n }\n }\n\n async putRadar(radarNode: RadarNode, configuration?: any) {\n const data = {\n name: radarNode.name,\n };\n\n if (configuration) {\n data['configurationAsJSON'] = configuration;\n }\n\n try {\n await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n relativePath: radarNode.id,\n verb: 'PUT',\n data,\n defaultKeyUrl: this._defaultUrlForAPI + '/radars/'\n });\n } catch (e) {\n console.error('removeRadar error:', e);\n }\n }\n\n async getLonelyRadars(rains: RainNode[]): Promise<RadarNode[]> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n const lonelyRadars: RadarNode[] = [];\n const radars = resp.radars;\n radars.forEach(radar => {\n let found = false;\n rains.forEach(rain => {\n const rdId = rain.getLinkId('radar', 0);\n if (rdId === radar.id) {\n found = true;\n }\n });\n if (!found) {\n lonelyRadars.push(radar);\n }\n });\n return lonelyRadars;\n } catch (e) {\n console.error('getLonelyRadars error:', e);\n }\n return [];\n }\n\n async getRainTimeframe(rainId: string, begin: Date, end: Date): Promise<RainNode> {\n try {\n let queryPath = '' + rainId + '?format=timeframe';\n if (begin) {\n queryPath += '&begin=' + begin.toISOString();\n }\n if (end) {\n queryPath += '&end=' + end.toISOString();\n }\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n const rainNode = new RainNode(resp['timeframe']);\n rainNode.name += '.radar.timeframe';\n return rainNode;\n } catch (e) {\n console.error('getRadarTimeframe error:', e);\n }\n return null;\n }\n\n async getRadarPolarMap(radarId: string, begin?: Date, end?: Date): Promise<RadarNodeMap> {\n let queryPath = '' + radarId + '?format=polar-map';\n if (begin) {\n queryPath += '&begin=' + begin.toISOString();\n }\n if (end) {\n queryPath += '&end=' + end.toISOString();\n }\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n const radarNodeMap = new RadarNodeMap(resp['polar-map']);\n radarNodeMap.name += '.rad_ar_without_optim.polar-map';\n return radarNodeMap;\n }\n\n async getRadarMeasureById(radarId: string, radarMeasureId: string): Promise<RadarMeasure> {\n const queryPath = '' + radarId + '/measures/' + radarMeasureId;\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n // const radarNodeMap = new RadarNodeMap(resp['polar-map']);\n return new RadarMeasure(resp);\n }\n\n async getRadarCartesianMap(radarId: string, begin?: Date, end?: Date): Promise<RadarNodeMap> {\n try {\n let queryPath = '' + radarId + '?format=cartesian-map';\n if (begin) {\n queryPath += '&begin=' + begin.toISOString();\n }\n if (end) {\n queryPath += '&end=' + end.toISOString();\n }\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'radars',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/radars'\n });\n const radarNodeMap = new RadarNodeMap(resp['cartesian-map']);\n radarNodeMap.name += '.radar.cartesian-map';\n return radarNodeMap;\n } catch (e) {\n console.error('getRadarPolarMap error:', e);\n }\n return null;\n }\n\n // === Rains ===\n\n async getRains(teamId: string): Promise<Array<RainNode>> {\n const rains = [];\n const url = this._defaultUrlForAPI + '/rains?teamId=' + teamId;\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n defaultKeyUrl: url,\n });\n for (const rain of resp.rains) {\n rains.push(new RainNode(rain));\n }\n } catch (e) {\n console.error('getRains error:', e);\n }\n return rains;\n }\n\n async getRain(id: string): Promise<RainNode> {\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: id,\n verb: 'GET',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n return new RainNode(resp);\n } catch (e) {\n console.error('getRains error:', e);\n }\n return null;\n }\n\n async removeRain(id: string): Promise<void> {\n /*if (this.isDemoMode) {\n return;\n }*/\n try {\n await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: id,\n verb: 'DELETE',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n } catch (e) {\n console.error('removeRain error:', e);\n }\n }\n\n async putRain(rainNode: RainNode, configuration?: any) {\n const data = {\n name: rainNode.name,\n radars: rainNode.getLinkIds('radar'),\n gauges: rainNode.getLinkIds('gauge'),\n };\n\n if (configuration) {\n data['configurationAsJSON'] = configuration;\n }\n\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainNode.id,\n verb: 'PUT',\n data,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n return new RainNode(resp);\n } catch (e) {\n console.error(e);\n }\n }\n\n async setRainEchoes(rainId: string, radarMeasuresToIdentifyEchoes: string[]): Promise<{ status: number, node: RadarNodeMap }> {\n try {\n const data = {\n radarMeasuresToIdentifyEchoes,\n };\n\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainId,\n verb: 'PUT',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/',\n data,\n });\n\n return {status: resp.status, node: resp.data};\n } catch (e) {\n console.error('setRainEchoes error:', e);\n }\n return null;\n }\n\n async prepareRain(rainId: string, force?: boolean): Promise<{ status: number, node: RadarNodeMap }> {\n try {\n const data = {};\n if (force) {\n data['force'] = true; // force preparing again\n }\n\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainId + '/prepare',\n verb: 'POST',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/',\n data,\n });\n\n return {status: resp.status, node: resp.data};\n } catch (e) {\n console.error('error:', e);\n }\n return null;\n }\n\n async validateRain(id: string): Promise<void> {\n try {\n await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: id + '/validate',\n verb: 'POST',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n } catch (e) {\n console.error('validateRain error:', e);\n }\n }\n\n async changeRainCompareConfDirection(rainId: string,\n begin: Date, end: Date,\n launchedByCustomer: boolean, angle: number, speed: number): Promise<void> {\n\n const conf = {gauge_measure: {default: {angle: 0, speed: 0}, admin: {angle: 0, speed: 0}}};\n if (launchedByCustomer) {\n conf.gauge_measure.default.angle = angle;\n conf.gauge_measure.default.speed = speed;\n } else {\n conf.gauge_measure.admin.angle = angle;\n conf.gauge_measure.admin.speed = speed;\n }\n\n const configurationAsJSON = JSON.stringify(conf);\n const data = {\n begin,\n end,\n configurationAsJSON\n };\n\n await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainId + '/gauge_measures_conf',\n verb: 'POST',\n data,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n }\n\n async changeRainCompareConfTrust(rainId: string, begin: Date, end: Date, launchedByCustomer: boolean,\n gauges: { gaugeId: string, trust: boolean }[]): Promise<void> {\n\n gauges.forEach(g => g['rainId'] = rainId);\n\n // TODO synchronized with api / GaugeMeasureConfiguration\n const data = {\n begin,\n end,\n configuration: {\n launchedByCustomer,\n gauges\n },\n };\n\n await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainId + '/compare_conf',\n verb: 'POST',\n data,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n }\n\n async stopAll(rainId: string): Promise<boolean> {\n let stopped = false;\n try {\n const res = await this.fidjAngularService.sendOnEndpoint({\n verb: 'POST',\n key: 'stop_forced',\n relativePath: rainId + '/stop_forced',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/'\n });\n stopped = res.stopped;\n } catch (e) {\n console.error('stopAll error:', e);\n }\n return stopped;\n }\n\n // === Count\n\n async getCounts(rainId: string,\n periodBegin?: Date,\n periodEnd?: Date,\n withQualities?: boolean): Promise<{\n radarMeasures: XYType[],\n gaugeMeasures: XYType[],\n computationsByTeam: XYType[],\n computationsByR2R: XYType[],\n computationsUnderProcessing: XYType[],\n gaugeIntensity: XYType[],\n qualitiesInternal: XYType[],\n qualitiesInternalInProgress: XYType[],\n queueStoreSize: number,\n queueWaiting: number,\n queueRunning: number,\n }> {\n try {\n\n let args = '';\n if (periodBegin && periodEnd) {\n args = '?periodBegin=' + periodBegin.toISOString() + '&periodEnd=' + periodEnd.toISOString();\n }\n if (withQualities) {\n args += '&withQualities=' + withQualities;\n }\n\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n relativePath: rainId + '/counts' + args,\n verb: 'GET',\n defaultKeyUrl: this._defaultUrlForAPI + '/rains/',\n });\n\n const counts = resp.counts;\n const radarMeasures: XYType[] = [],\n gaugeMeasures: XYType[] = [],\n computationsByTeam: XYType[] = [],\n computationsByR2R: XYType[] = [],\n computationsUnderProcessing: XYType[] = [],\n gaugeIntensity: XYType[] = [],\n qualitiesInternal: XYType[] = [],\n qualitiesInternalInProgress: XYType[] = [];\n\n counts.forEach(c => {\n radarMeasures.push(new XYType(1, NaN, NaN, c._id));\n gaugeMeasures.push(new XYType(c.gaugeMeasures, NaN, NaN, c._id));\n computationsByTeam.push(new XYType(c.computationsByTeam, NaN, NaN, c._id));\n computationsByR2R.push(new XYType(c.computationsInternal, NaN, NaN, c._id));\n computationsUnderProcessing.push(new XYType(c.computationsUnderProcessing, NaN, NaN, c._id));\n gaugeIntensity.push(new XYType(c.gaugeIntensity / 10, NaN, NaN, c._id));\n qualitiesInternal.push(new XYType(c.qualitiesInternal, NaN, NaN, c._id));\n qualitiesInternalInProgress.push(new XYType(c.qualitiesInternalInProgress, NaN, NaN, c._id));\n });\n\n return {\n radarMeasures,\n gaugeMeasures,\n computationsByTeam,\n computationsByR2R,\n computationsUnderProcessing,\n gaugeIntensity,\n queueStoreSize: resp.queueStoreSize,\n queueWaiting: resp.queueWaiting,\n queueRunning: resp.queueRunning,\n qualitiesInternal,\n qualitiesInternalInProgress\n };\n } catch (e) {\n console.error('getRains error:', e);\n }\n return null;\n }\n\n // === Computing ===\n\n async launchRainComputations(rainId: string,\n date: Date): Promise<RainComputation[]> {\n const response = await this.fidjAngularService.sendOnEndpoint({\n verb: 'POST',\n key: 'rains',\n relativePath: '' + rainId + '/computations',\n data: {\n date: date.toISOString(),\n },\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n\n return response.computations?.map(c => new RainComputation(c));\n }\n\n async launchRainComputationsForced(rainId: string,\n periodBegin: Date,\n periodEnd: Date): Promise<RainComputation[]> {\n\n const response = await this.fidjAngularService.sendOnEndpoint({\n verb: 'POST',\n key: 'rains',\n relativePath: '' + rainId + '/computations_forced',\n data: {\n periodBegin: periodBegin.toISOString(),\n periodEnd: periodEnd.toISOString()\n },\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n\n return response.computations?.map(c => new RainComputation(c));\n }\n\n async getRainComputationsId(rainId: string, periodBegin: Date, periodEnd: Date): Promise<RainComputation[]> {\n const getResp = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: rainId + '/computations?format=id&periodBegin=' + periodBegin.toISOString() + '&periodEnd=' + periodEnd.toISOString(),\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n\n return getResp.computations.map(computation => {\n const node = new RainComputation(computation as any);\n node.date = new Date(node.date);\n return node;\n });\n }\n\n async getRainComputationPolarMap(rainId: string, begin: Date, end: Date, force = false, config = {}): Promise<RainComputationMap> {\n const queryPath = '' + rainId + '/computations/?format=polar-map&periodBegin='\n + begin.toISOString() + '&periodEnd=' + end.toISOString() + '&force=' + force + '&config=' + JSON.stringify(config);\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n if (!response['polar-map']) {\n return null;\n }\n\n const rainComputationMap = new RainComputationMap(response['polar-map']);\n rainComputationMap.name = rainId + '.rain.polar-map';\n return rainComputationMap;\n }\n\n async getRainComputationCartesianMap(rainId: string, begin: Date, end: Date, force = false, config = {}): Promise<RainComputationMap> {\n const queryPath = '' + rainId + '/computations/?format=cartesian-map&periodBegin='\n + begin.toISOString() + '&periodEnd=' + end.toISOString() + '&force=' + force + '&config=' + JSON.stringify(config);\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n if (!response['cartesian-map']) {\n return null;\n }\n\n const rainComputationMap = new RainComputationMap(response['cartesian-map']);\n rainComputationMap.name = rainId + '.rain.cartesian-map';\n return rainComputationMap;\n }\n\n async getRainComputationCartesianMapById(rainId: string, rainComputationId: string): Promise<RainComputationMap> {\n const queryPath = '' + rainId + '/computations/' + rainComputationId + '?format=cartesian-map';\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains'\n });\n if (!response['cartesian-map']) {\n return null;\n }\n\n const rainComputationMap = new RainComputationMap(response['cartesian-map']);\n rainComputationMap.name = rainId + '.rain.cartesian-map';\n return rainComputationMap;\n }\n\n async getRainCompareByDate(rainId: string, begin: Date, end: Date, configuration: any, forced: boolean): Promise<RainComputationQuality> {\n let queryPath = '' + rainId + '/computations?format=compare&periodBegin=' + begin.toISOString() + '&periodEnd=' + end.toISOString();\n if (configuration) {\n queryPath += '&configuration=' + JSON.stringify(configuration);\n }\n if (forced) {\n queryPath += '&forced=true';\n }\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains',\n // timeout: 200000,\n });\n if (!response['compare']) {\n return null;\n }\n\n const quality = response.compare?.quality;\n const rainComputationQuality = new RainComputationQuality(quality);\n rainComputationQuality.qualitySpeedMatrixContainer =\n SpeedMatrixContainer.CreateFromJson(rainComputationQuality.qualitySpeedMatrixContainer);\n return rainComputationQuality;\n }\n\n async getRainCompares(rainId: string, rainComputationId: string): Promise<{ id: string, version: string }[]> {\n const queryPath = '' + rainId + '/computations/' + rainComputationId;\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains',\n // timeout: 200000,\n });\n\n const rainComputation = new RainComputation(response);\n const links = rainComputation.getLinks();\n const rainComputationQualities = [];\n for (const link of links) {\n if (link.href.indexOf('/compares/') > 0) {\n const id = link.getId();\n const version = link.href.substring(link.href.indexOf('version/') + 8, link.href.indexOf('/' + id));\n rainComputationQualities.push({id, version});\n }\n }\n return rainComputationQualities;\n }\n\n async getRainCompareById(rainId: string,\n rainComputationId: string,\n rainComputationQualityId: string): Promise<RainComputationQuality> {\n const queryPath = '' + rainId + '/computations/' + rainComputationId + '/compares/' + rainComputationQualityId;\n const response = await this.fidjAngularService.sendOnEndpoint({\n key: 'rains',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/rains',\n // timeout: 200000,\n });\n\n const rainComputationQuality = new RainComputationQuality(response);\n rainComputationQuality.qualitySpeedMatrixContainer = SpeedMatrixContainer.CreateFromJson(\n rainComputationQuality.qualitySpeedMatrixContainer);\n return rainComputationQuality;\n }\n\n // === Gauges ===\n\n async getGauge(gaugeId: string): Promise<GaugeNode> {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'gauges',\n verb: 'GET',\n relativePath: gaugeId,\n defaultKeyUrl: this._defaultUrlForAPI + '/gauges'\n });\n return new GaugeNode(resp);\n }\n\n async getGauges(rainId?: string): Promise<Array<GaugeNodeFilter>> {\n let queryPath = '';\n if (this.asTeamId) {\n queryPath += '?teamId=' + this.asTeamId;\n }\n if (rainId) {\n if (queryPath) {\n queryPath += '&';\n } else {\n queryPath += '?';\n }\n queryPath += 'rainId=' + rainId;\n }\n\n const gauges = [];\n try {\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'gauges',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/gauges'\n });\n\n for (const gauge of resp.gauges) {\n gauges.push(new GaugeNodeFilter(gauge));\n }\n } catch (e) {\n console.error('getGauges error:', e);\n }\n return gauges;\n }\n\n async getGaugeMeasures(gaugeId: string, begin: Date, end: Date): Promise<GaugeMeasure[]> {\n const queryPath = '' + gaugeId + '/measures?begin=' + begin.toISOString() + '&end=' + end.toISOString();\n const resp = await this.fidjAngularService.sendOnEndpoint({\n key: 'gauges',\n verb: 'GET',\n relativePath: queryPath,\n defaultKeyUrl: this._defaultUrlForAPI + '/gauges'\n });\n\n const gaugeMeasures: GaugeMeasure[] = [];\n for (const gaugeMeasure of resp.gaugeMeasures) {\n gaugeMeasures.push(new GaugeMeasure(gaugeMeasure));\n }\n return gaugeMeasures;\n }\n\n /**\n * TODO raain-model to add Diag =\n * {indicator: number,\n * max: {x: number, y: number},\n * vector: {angleDegrees: number,\n * speedMetersPerSec: number},\n * points: [{x: number, y: number}]}>\n */\n\n\n // === Private ===\n\n protected setRoles(roles: Array<string>): void {\n this.roles = roles;\n }\n\n // async getDomains() {\n // await this.fidjAngularService.getDomain(); // with owner & members & roles\n // }\n\n // async updateDomain(team: Domain) {\n // await this.fidjAngularService.updateDomain(team);\n // }\n\n}\n","import {Injectable} from '@angular/core';\nimport {MeasureValuePolarContainer, RadarPolarMeasureValue, RainNode, RainPolarMeasureValue} from 'raain-model';\nimport {PolarMapValue} from 'raain-ui';\nimport {ProfileService} from './profile.service';\nimport {FrameSet} from './tools';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RadarService {\n\n\n constructor(\n private profileService: ProfileService,\n ) {\n }\n\n static getGeoValuesFromRainMeasures(measureValue: RainPolarMeasureValue, rain: RainNode): PolarMapValue[] {\n return this.computeValues(measureValue.getPolars(), rain);\n }\n\n static getGeoValuesFromRadarMeasures(measureValue: RadarPolarMeasureValue, rain: RainNode): PolarMapValue[] {\n return this.computeValues(measureValue.getPolars(), rain);\n }\n\n private static computeValues(polarMeasureValues: MeasureValuePolarContainer[], rain: RainNode) {\n const values: PolarMapValue[] = [];\n polarMeasureValues.forEach(p => {\n const azimuth = p.azimuth;\n let distance = 0;\n const polarEdges = p.polarEdges;\n polarEdges.forEach(e => {\n const pmv = new PolarMapValue(e, azimuth, distance);\n\n // TODO rainNode.latLngRectsAsJSON\n // pmv.setCenter(rain);\n\n values.push(pmv);\n distance += p.distance;\n });\n });\n\n return values;\n }\n\n async getTimeline(rainNode: RainNode): Promise<FrameSet[]> {\n const timeline: FrameSet[] = [];\n const links = rainNode.getLinks();\n const rainId = rainNode.getId();\n\n // dates and radar measures\n for (const link of links) {\n const measureIndex = link.href.indexOf('measures/');\n if (measureIndex >= 0) {\n const start = measureIndex + 9;\n const str1 = link.href.substring(start);\n if (str1) {\n const end = str1.indexOf('/');\n const dateStr = str1.substring(0, end);\n const idStr = str1.substring(end + 1);\n\n const frameDate = new Date(dateStr);\n const existingTargets = timeline.filter(t => t.date.getTime() === frameDate.getTime());\n if (existingTargets.length) {\n existingTargets[0].radarMeasureIds.push(idStr);\n } else {\n timeline.push(new FrameSet(frameDate, [idStr]));\n }\n }\n }\n }\n\n // rain computations\n for (const link of links) {\n const computationIndex = link.href.indexOf('computations/');\n if (computationIndex >= 0) {\n const start = computationIndex + 13;\n const str1 = link.href.substring(start);\n if (str1) {\n const splitted = str1.split('/');\n const date = new Date(splitted[0]);\n const version = splitted[1];\n const rainComputationId = splitted[2];\n const existingTargets = timeline.filter(t => t.date.getTime() === date.getTime());\n for (const target of existingTargets) {\n target.rainComputationId = rainComputationId;\n target.rainComputationVersion = version;\n target.rainComputationQualities = await this.getBuilds(rainId, rainComputationId);\n }\n }\n }\n }\n\n return timeline;\n }\n\n async getBuilds(rainId: string, rainComputationId: string): Promise<{ id: string, version: string, }[]> {\n return await this.profileService.getRainCompares(rainId, rainComputationId);\n }\n}\n","// TODO remove constants but preferred progress indicator [0 to 1]\nexport const CONSTANTS = {\n\n _RAIN_STATUS_0_NOT_STARTED: 0,\n _RAIN_STATUS_0_WAIT_FOR_ECHOES: 0.1,\n _RAIN_STATUS_0_WAIT_FOR_INPUT: 0.2,\n _RAIN_STATUS_0_WAIT_FOR_INTERNAL_VALIDATION: 0.3,\n _RAIN_STATUS_0_READY_TO_BUILD: 0.4,\n _RAIN_STATUS_1_BUILDING: 0.5,\n _RAIN_STATUS_1_READY_TO_COMPUTE: 0.6,\n\n _RAIN_COMPUTATION_IS_READY: 0,\n _RAIN_COMPUTATION_IN_PROGRESS: 0.5,\n _RAIN_COMPUTATION_DONE: 1,\n\n _INPUT_VALIDITY_NOT_CHECKED_YET: -1,\n _INPUT_VALIDITY_CHECK_IN_PROGRESS: -0.5,\n _INPUT_VALIDITY_NOT_VALID: 0,\n _INPUT_VALIDITY_NOT_CONFIDENT: 0.5,\n _INPUT_VALIDITY_VALID: 1,\n\n _VERIFY_STATUS_FIND_RADARS: 0.3,\n _VERIFY_STATUS_FIND_SIMILAR: 0.6,\n _VERIFY_STATUS_FIND_GAUGES: 0.7,\n\n _COMPUTATION_STATUS_UNKNOWN: 0,\n _COMPUTATION_STATUS_IN_PROGRESS: 0.4,\n _COMPUTATION_STATUS_FINISHED: 1,\n\n};\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {EventNode, RainNode} from 'raain-model';\nimport {CONSTANTS} from './shared.const';\nimport {FrameSet} from './tools';\n\n@Pipe({name: 'areStopped'})\nexport class AreStopped implements PipeTransform {\n transform(rains: RainNode[]): RainNode[] {\n return rains.filter((rain) => (rain.status <= CONSTANTS._RAIN_STATUS_0_NOT_STARTED));\n }\n}\n\n@Pipe({name: 'areInProgress'})\nexport class AreInProgressPipe implements PipeTransform {\n transform(rains: RainNode[]): RainNode[] {\n return rains.filter((rain) => (\n CONSTANTS._RAIN_STATUS_0_NOT_STARTED < rain.status && rain.status < CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE\n ));\n }\n}\n\n@Pipe({name: 'areReady'})\nexport class AreReady implements PipeTransform {\n transform(rains: RainNode[]): RainNode[] {\n return rains.filter((rain) => (\n rain.status >= CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE && rain.quality > CONSTANTS._INPUT_VALIDITY_NOT_CONFIDENT\n ));\n }\n}\n\n@Pipe({name: 'isReady'})\nexport class IsReady implements PipeTransform {\n transform(rain: RainNode): RainNode {\n if (rain.status >= CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE) {\n return rain;\n }\n return null;\n }\n}\n\n@Pipe({name: 'isNotReady'})\nexport class IsNotReady implements PipeTransform {\n transform(rain: RainNode): RainNode {\n if (rain.status < CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE) {\n return rain;\n }\n return null;\n }\n}\n\n@Pipe({name: 'waitForValidation'})\nexport class WaitForValidation implements PipeTransform {\n transform(rain: RainNode): RainNode {\n if (rain.status === CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE) {\n return rain;\n }\n return null;\n }\n}\n\n@Pipe({name: 'hasGoodQuality'})\nexport class HasGoodQuality implements PipeTransform {\n transform(rain: RainNode): RainNode {\n if (rain.quality > CONSTANTS._INPUT_VALIDITY_NOT_CONFIDENT) {\n return rain;\n }\n return null;\n }\n}\n\n@Pipe({name: 'hasNotGoodQuality'})\nexport class HasNotGoodQuality implements PipeTransform {\n transform(rain: RainNode): RainNode {\n if (rain.quality < CONSTANTS._INPUT_VALIDITY_VALID) {\n return rain;\n }\n return null;\n }\n}\n\n@Pipe({name: 'progressValue'})\nexport class ProgressValue implements PipeTransform {\n transform(rain: RainNode): number {\n if (rain.status < 0) {\n return 0;\n }\n\n // const value = (rain.progressIngest + rain.progressComputing) / 2;\n const value = rain.status / 2; // 0\n // if (rain.status === CONSTANTS._RAIN_STATUS_0_READY_TO_BUILD) {\n // value = 0.3;\n // } else if (rain.status === CONSTANTS._RAIN_STATUS_1_BUILDING) {\n // value = 0.6;\n // } else if (rain.status === CONSTANTS._RAIN_STATUS_1_READY_TO_COMPUTE) {\n // value = 1;\n // }\n return value;\n }\n}\n\n@Pipe({name: 'progressBuffer'})\nexport class ProgressBuffer implements PipeTransform {\n transform(rain: RainNode): number {\n if (rain.quality < 0) {\n return 0;\n }\n\n const value = rain.quality / 2;\n return value;\n }\n}\n\n@Pipe({name: 'timeframeComputationProgress'})\nexport class TimeframeComputationProgress implements PipeTransform {\n transform(frameSets: FrameSet[]): number {\n let progress = 0;\n if (!frameSets || frameSets.length === 0) {\n return 1;\n }\n\n for (const frameset of frameSets) {\n if (frameset.radarMeasureIds.length && frameset.rainComputationId) {\n progress++;\n }\n }\n\n return progress / frameSets.length;\n }\n}\n\n@Pipe({name: 'timeframeQualityProgress'})\nexport class TimeframeQualityProgress implements PipeTransform {\n transform(frameSets: FrameSet[]): number {\n let progress = 0;\n if (!frameSets || frameSets.length === 0) {\n return 1;\n }\n\n for (const frameset of frameSets) {\n const qualities = frameset.rainComputationQualities ? frameset.rainComputationQualities : [];\n const atLeastOneIsNotOutdated = qualities\n .filter(q => q.version.indexOf('outdated') < 0);\n if (frameset.radarMeasureIds.length && frameset.rainComputationId && atLeastOneIsNotOutdated.length) {\n progress++;\n }\n }\n\n return progress / frameSets.length;\n }\n}\n\n@Pipe({\n name: 'haveNotBeenRed',\n pure: false\n})\nexport class HaveNotBeenRed implements PipeTransform {\n transform(events: EventNode[]): EventNode[] {\n const haveNotBeenRed = events.filter((event) => (!event.red));\n return haveNotBeenRed;\n }\n}\n","import {CommonModule, NgOptimizedImage, NgStyle} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {ProfileService} from './profile.service';\nimport {Storage} from './storage.service';\nimport {RadarService} from './radar.service';\nimport {Cache} from './cache.service';\nimport {IonicModule, IonRange} from '@ionic/angular';\nimport {\n AreInProgressPipe,\n AreReady,\n AreStopped,\n HasGoodQuality,\n HasNotGoodQuality,\n HaveNotBeenRed,\n IsNotReady,\n IsReady,\n ProgressBuffer,\n ProgressValue,\n TimeframeComputationProgress,\n TimeframeQualityProgress,\n WaitForValidation\n} from './shared.pipe';\nimport {RaainMapComponent} from './raain-map/raain-map.component';\nimport {RaainCompareComponent} from './raain-compare/raain-compare.component';\nimport {RaainConfigurationComponent} from './raain-configuration/raain-configuration.component';\nimport {RaainDateFocusComponent} from './raain-date-focus/raain-date-focus.component';\nimport {RaainSpeedComponent} from './raain-speed/raain-speed.component';\nimport {RaainCompareStackComponent} from './raain-compare-stack/raain-compare-stack.component';\nimport {RaainTestComponent} from './raain-test/raain-test.component';\n\n@NgModule({\n declarations: [\n RaainTestComponent,\n RaainMapComponent,\n RaainCompareComponent,\n RaainCompareStackComponent,\n RaainDateFocusComponent,\n RaainConfigurationComponent,\n RaainSpeedComponent,\n\n AreStopped,\n AreInProgressPipe,\n AreReady,\n IsReady,\n IsNotReady,\n WaitForValidation,\n HasGoodQuality,\n HasNotGoodQuality,\n ProgressValue,\n ProgressBuffer,\n HaveNotBeenRed,\n TimeframeComputationProgress,\n TimeframeQualityProgress,\n ],\n imports: [\n CommonModule,\n FormsModule,\n IonicModule,\n NgOptimizedImage,\n ],\n providers: [\n Storage,\n RadarService,\n ProfileService,\n Cache,\n IonRange,\n TimeframeComputationProgress,\n TimeframeQualityProgress,\n ],\n exports: [\n CommonModule,\n NgStyle,\n\n RaainTestComponent,\n RaainMapComponent,\n RaainCompareComponent,\n RaainCompareStackComponent,\n RaainDateFocusComponent,\n RaainConfigurationComponent,\n RaainSpeedComponent,\n\n AreStopped,\n AreInProgressPipe,\n AreReady,\n IsReady,\n IsNotReady,\n WaitForValidation,\n HasGoodQuality,\n HasNotGoodQuality,\n ProgressValue,\n ProgressBuffer,\n HaveNotBeenRed,\n TimeframeComputationProgress,\n TimeframeQualityProgress,\n ]\n})\nexport class SharedModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3.RaainCompareComponent","i1.Storage","i3","i1.ProfileService"],"mappings":"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"}
|