Web UI: Strict html index fallback. Fix scadaSymbolResolver -> api handle error and navigate to scada symbols.

This commit is contained in:
Igor Kulikov 2024-09-12 16:33:44 +03:00
parent 5f0af1de15
commit 4f0801ecb0
2 changed files with 29 additions and 6 deletions

View File

@ -23,6 +23,7 @@ import httpProxy from 'http-proxy';
import compression from 'compression';
import historyApiFallback from 'connect-history-api-fallback';
import { Socket } from 'net';
import { RequestHandler } from 'serve-static';
const logger = _logger('main');
@ -101,10 +102,17 @@ let connections: Socket[] = [];
const staticServe = express.static(root);
app.use(staticServe);
app.use((req, res, next) => {
const indexHtmlFallback: RequestHandler<any> = (req, res, next) => {
res.sendFile(path.join(root, 'index.html'));
});
};
app.use(staticServe);
const indexHtmlFallbackPaths = [
/^\/resources\/scada-symbols\/(?:system|tenant)\/[^/]+$/
];
app.use(indexHtmlFallbackPaths, indexHtmlFallback);
server.listen(bindPort, bindAddress, () => {
logger.info('==> 🌎 Listening on port %s.', bindPort);

View File

@ -15,14 +15,22 @@
///
import { inject, NgModule } from '@angular/core';
import { ActivatedRouteSnapshot, Resolve, ResolveFn, RouterModule, RouterStateSnapshot, Routes } from '@angular/router';
import {
ActivatedRouteSnapshot,
Resolve,
ResolveFn,
Router,
RouterModule,
RouterStateSnapshot,
Routes
} from '@angular/router';
import { MailServerComponent } from '@modules/home/pages/admin/mail-server.component';
import { ConfirmOnExitGuard } from '@core/guards/confirm-on-exit.guard';
import { Authority } from '@shared/models/authority.enum';
import { GeneralSettingsComponent } from '@modules/home/pages/admin/general-settings.component';
import { SecuritySettingsComponent } from '@modules/home/pages/admin/security-settings.component';
import { forkJoin } from 'rxjs';
import { forkJoin, of } from 'rxjs';
import { SmsProviderComponent } from '@home/pages/admin/sms-provider.component';
import { HomeSettingsComponent } from '@home/pages/admin/home-settings.component';
import { EntitiesTableComponent } from '@home/components/entity/entities-table.component';
@ -45,17 +53,24 @@ import { ScadaSymbolComponent } from '@home/pages/scada-symbol/scada-symbol.comp
import { ImageService } from '@core/http/image.service';
import { ScadaSymbolData } from '@home/pages/scada-symbol/scada-symbol-editor.models';
import { MenuId } from '@core/services/menu.models';
import { catchError } from 'rxjs/operators';
export const scadaSymbolResolver: ResolveFn<ScadaSymbolData> =
(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
router = inject(Router),
imageService = inject(ImageService)) => {
const type: ImageResourceType = route.params.type;
const key = decodeURIComponent(route.params.key);
return forkJoin({
imageResource: imageService.getImageInfo(type, key),
scadaSymbolContent: imageService.getImageString(`${IMAGES_URL_PREFIX}/${type}/${encodeURIComponent(key)}`)
});
}).pipe(
catchError(() => {
router.navigate(['/resources/scada-symbols']);
return of(null);
})
);
};
export const scadaSymbolBreadcumbLabelFunction: BreadCrumbLabelFunction<ScadaSymbolComponent>