Compare commits
17 Commits
84878fdd95
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| ff361495b5 | |||
| 489b08ddf7 | |||
| 2bd38f43bb | |||
| 05ba7bda45 | |||
| 990be3d786 | |||
| 003fa07151 | |||
| a2e9469498 | |||
| aa91b15547 | |||
| 3031a9e10b | |||
| 6eaeaaa658 | |||
| cee99688ae | |||
| f9e0bb526f | |||
| 745996f864 | |||
| 13f43d4575 | |||
| fe1bbc136f | |||
| 643c58b161 | |||
| 292dec587c |
@@ -7,7 +7,7 @@ server {
|
|||||||
try_files $uri $uri/ /index.html;
|
try_files $uri $uri/ /index.html;
|
||||||
}
|
}
|
||||||
|
|
||||||
location /ProductsRequest {
|
location /produktApi/ProductsRequest {
|
||||||
proxy_pass http://192.168.2.186:9090/ProductsRequest;
|
proxy_pass http://192.168.2.186:9090/ProductsRequest;
|
||||||
|
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
@@ -15,7 +15,7 @@ server {
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
}
|
}
|
||||||
location /CalculateRequest {
|
location /produktApi/CalculateRequest {
|
||||||
proxy_pass http://192.168.2.186:9090/CalculateRequest;
|
proxy_pass http://192.168.2.186:9090/CalculateRequest;
|
||||||
|
|
||||||
proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';
|
import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection } from '@angular/core';
|
||||||
import { provideRouter } from '@angular/router';
|
import {provideRouter, RouteReuseStrategy} from '@angular/router';
|
||||||
|
|
||||||
import { routes } from './app.routes';
|
import { routes } from './app.routes';
|
||||||
import {provideHttpClient} from '@angular/common/http';
|
import {provideHttpClient} from '@angular/common/http';
|
||||||
|
import {CustomRouteReuseStrategy} from './route-reuse.strategy';
|
||||||
|
|
||||||
export const appConfig: ApplicationConfig = {
|
export const appConfig: ApplicationConfig = {
|
||||||
providers: [
|
providers: [
|
||||||
provideBrowserGlobalErrorListeners(),
|
provideBrowserGlobalErrorListeners(),
|
||||||
provideZoneChangeDetection({ eventCoalescing: true }),
|
provideZoneChangeDetection({ eventCoalescing: true }),
|
||||||
provideRouter(routes),
|
provideRouter(routes),
|
||||||
provideHttpClient()
|
provideHttpClient(),
|
||||||
|
{ provide: RouteReuseStrategy, useClass: CustomRouteReuseStrategy }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4,7 +4,8 @@ import { RisikoobjektView} from './risikoobjektView/risikoobjektView';
|
|||||||
import {Produktbaum} from './produktbaum/produktbaum';
|
import {Produktbaum} from './produktbaum/produktbaum';
|
||||||
|
|
||||||
export const routes: Routes = [
|
export const routes: Routes = [
|
||||||
{ path: '', redirectTo: '/produktbaum', pathMatch: 'full' },
|
// { path: '', redirectTo: '/produktbaum', pathMatch: 'full' },
|
||||||
{ path: 'produktbaum', component: Produktbaum },
|
{ path: '', component: Produktbaum },
|
||||||
|
// { path: 'produktbaum', component: Produktbaum },
|
||||||
{ path: 'risikoobjekte', component: RisikoobjektView },
|
{ path: 'risikoobjekte', component: RisikoobjektView },
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -54,9 +54,9 @@
|
|||||||
<strong> {{meldung.errorMsg}} </strong>
|
<strong> {{meldung.errorMsg}} </strong>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="risikoobjekte.length > 0" class="risikoobjekt-container">
|
<div *ngIf="risikoobjektService.risikoobjekte().length > 0" class="risikoobjekt-container">
|
||||||
<strong>Mit dem Baustein assoziiertes Risikoobjekt</strong>
|
<strong>Mit dem Baustein assoziiertes Risikoobjekt</strong>
|
||||||
<div *ngFor="let ro of risikoobjekte" class="risikoobjekt-item-container">
|
<div *ngFor="let ro of risikoobjektService.risikoobjekte()" class="risikoobjekt-item-container">
|
||||||
<label [for]="'check-' + '{{ro.id}}'">
|
<label [for]="'check-' + '{{ro.id}}'">
|
||||||
{{ro.handelsbezeichnung}} ({{ro.baujahr}})
|
{{ro.handelsbezeichnung}} ({{ro.baujahr}})
|
||||||
</label>
|
</label>
|
||||||
|
|||||||
@@ -85,8 +85,8 @@ interface Plausi {
|
|||||||
})
|
})
|
||||||
@Injectable({providedIn: 'root'})
|
@Injectable({providedIn: 'root'})
|
||||||
export class Produktbaum {
|
export class Produktbaum {
|
||||||
private risikoobjektService = inject(RisikoobjektService);
|
protected risikoobjektService = inject(RisikoobjektService);
|
||||||
risikoobjekte = this.risikoobjektService.risikoobjekte();
|
risikoobjekte = this.risikoobjektService.risikoobjekte;
|
||||||
|
|
||||||
protected readonly title = signal('OMDSAngularWebClient');
|
protected readonly title = signal('OMDSAngularWebClient');
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ export class Produktbaum {
|
|||||||
meldungen : Meldung[] = []
|
meldungen : Meldung[] = []
|
||||||
aprioriProdukte : Produktbaustein[] = [];
|
aprioriProdukte : Produktbaustein[] = [];
|
||||||
apriori(){
|
apriori(){
|
||||||
this.http.post<any[]>('/ProductsRequest', { "stichtag": "2022-02-11" })
|
this.http.post<any[]>('/produktApi/ProductsRequest', { "stichtag": "2022-02-11" })
|
||||||
.subscribe(result => {
|
.subscribe(result => {
|
||||||
this.produkte = [];
|
this.produkte = [];
|
||||||
this.attribute = [];
|
this.attribute = [];
|
||||||
@@ -361,7 +361,7 @@ export class Produktbaum {
|
|||||||
for (const v of values) {
|
for (const v of values) {
|
||||||
const value = this.extractValue(v);
|
const value = this.extractValue(v);
|
||||||
|
|
||||||
const ro = this.risikoobjekte.find(
|
const ro = this.risikoobjektService.risikoobjekte().find(
|
||||||
r => r.id === value.substring(24)
|
r => r.id === value.substring(24)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -417,15 +417,14 @@ export class Produktbaum {
|
|||||||
produkt.unterbausteine = [];
|
produkt.unterbausteine = [];
|
||||||
produkt.attribute = [];
|
produkt.attribute = [];
|
||||||
|
|
||||||
produkt.actualOcc = {value: 1};
|
produkt.occByParent = (produkt.parent === undefined || produkt.minOcc > 0) ? 1 : 0;
|
||||||
produkt.occByParent = 1;
|
produkt.actualOcc = { value: produkt.occByParent };
|
||||||
|
|
||||||
return produkt as Produktbaustein;
|
return produkt as Produktbaustein;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTree() {
|
buildTree() {
|
||||||
|
|
||||||
this.addMissingAprioriItems();
|
|
||||||
|
|
||||||
for (const baustein of this.produkte) {
|
for (const baustein of this.produkte) {
|
||||||
if (baustein.parent !== undefined){
|
if (baustein.parent !== undefined){
|
||||||
@@ -438,6 +437,7 @@ export class Produktbaum {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.addMissingAprioriItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
async addProdukt(produkt : Produktbaustein) {
|
async addProdukt(produkt : Produktbaustein) {
|
||||||
@@ -644,7 +644,7 @@ export class Produktbaum {
|
|||||||
async calculate(verkaufsprodukt: Produktbaustein) {
|
async calculate(verkaufsprodukt: Produktbaustein) {
|
||||||
const request = (await this.modelToJsonld(await this.buildRDFModel(verkaufsprodukt)));
|
const request = (await this.modelToJsonld(await this.buildRDFModel(verkaufsprodukt)));
|
||||||
this.produkte = [];
|
this.produkte = [];
|
||||||
this.http.post<any[]>('/CalculateRequest', request )
|
this.http.post<any[]>('/produktApi/CalculateRequest', request )
|
||||||
.subscribe(result => {
|
.subscribe(result => {
|
||||||
this.produkte = [];
|
this.produkte = [];
|
||||||
this.attribute = [];
|
this.attribute = [];
|
||||||
@@ -668,7 +668,7 @@ export class Produktbaum {
|
|||||||
const fahrzeug = this.buildFahrzeug(p);
|
const fahrzeug = this.buildFahrzeug(p);
|
||||||
|
|
||||||
let fahrzeugAlt =
|
let fahrzeugAlt =
|
||||||
this.risikoobjekte.find(r =>
|
this.risikoobjektService.risikoobjekte().find(r =>
|
||||||
r.handelsbezeichnung === fahrzeug.handelsbezeichnung
|
r.handelsbezeichnung === fahrzeug.handelsbezeichnung
|
||||||
&& new Date(r.erstzulassung).getTime() === fahrzeug.erstzulassung.getTime())
|
&& new Date(r.erstzulassung).getTime() === fahrzeug.erstzulassung.getTime())
|
||||||
|
|
||||||
@@ -678,7 +678,7 @@ export class Produktbaum {
|
|||||||
fahrzeugAlt.baujahr = fahrzeug.baujahr;
|
fahrzeugAlt.baujahr = fahrzeug.baujahr;
|
||||||
} else {
|
} else {
|
||||||
console.log("neues fahrzeug")
|
console.log("neues fahrzeug")
|
||||||
this.risikoobjekte.push(fahrzeug);
|
this.risikoobjektService.addRisikoobjekt(fahrzeug);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
27
src/app/route-reuse.strategy.ts
Normal file
27
src/app/route-reuse.strategy.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';
|
||||||
|
|
||||||
|
export class CustomRouteReuseStrategy implements RouteReuseStrategy {
|
||||||
|
private handlers: { [key: string]: DetachedRouteHandle } = {};
|
||||||
|
|
||||||
|
// Soll die Route gespeichert werden?
|
||||||
|
shouldDetach(route: ActivatedRouteSnapshot): boolean {
|
||||||
|
// Hier kannst du filtern, welche Route gespeichert werden soll (z.B. 'produktbaum')
|
||||||
|
return route.routeConfig?.path === 'produktbaum';
|
||||||
|
}
|
||||||
|
|
||||||
|
store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {
|
||||||
|
this.handlers[route.routeConfig?.path!] = handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
shouldAttach(route: ActivatedRouteSnapshot): boolean {
|
||||||
|
return !!this.handlers[route.routeConfig?.path!];
|
||||||
|
}
|
||||||
|
|
||||||
|
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {
|
||||||
|
return this.handlers[route.routeConfig?.path!];
|
||||||
|
}
|
||||||
|
|
||||||
|
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
|
||||||
|
return future.routeConfig === curr.routeConfig;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>OMDSAngularWebClient</title>
|
<title>OMDSAngularWebClient</title>
|
||||||
<base href="./">
|
<base href="/produktwissen-app/">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"/ProductsRequest": {
|
"/produktApi/ProductsRequest": {
|
||||||
"target": "http://192.168.2.186:9090",
|
"target": "http://localhost:9090",
|
||||||
"secure": false,
|
"secure": false,
|
||||||
"logLevel": "debug"
|
"logLevel": "debug"
|
||||||
},
|
},
|
||||||
"/CalculateRequest": {
|
"/produktApi/CalculateRequest": {
|
||||||
"target": "http://192.168.2.186:9090",
|
"target": "http://localhost:9090",
|
||||||
"secure": false,
|
"secure": false,
|
||||||
"logLevel": "debug"
|
"logLevel": "debug"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user