Display frontend and backend version
All checks were successful
/ build (push) Successful in 29s

This commit is contained in:
phil 2024-12-25 17:09:41 +01:00
parent 5ff197ad49
commit 4c4dc3fc5c
4 changed files with 93 additions and 80 deletions

View file

@ -2,7 +2,7 @@
<mat-toolbar fxFlex="2em" id='top-toolbar'>
<span
style='font-family:GisafSymbols'
matTooltip="Gisaf v. {{ (configService.conf | async).bsData?.version }}"
matTooltip="Gisaf version: backend {{ version.backend }}, frontend {{ version.frontend }}"
matTooltipPosition="below"
class='gisafIcon'
>

View file

@ -1,5 +1,7 @@
import { Component, OnInit,
ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'
import {
Component, OnInit,
ChangeDetectionStrategy, ChangeDetectorRef
} from '@angular/core'
import { Title } from '@angular/platform-browser'
import { BootstrapService } from './_services/bootstrap.service'
import { ConfigService } from './_services/config.service'
@ -8,80 +10,87 @@ import { MatDialog, MatDialogRef } from '@angular/material/dialog'
import { AuthenticationService } from './_services/authentication.service'
import { LoginDialogComponent } from './login/login.component'
import versionJson from '../version.json'
export class Version {
public backend: string
public frontend: string
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent implements OnInit {
title = 'Gisaf'
version: string
title: string = 'Gisaf'
version: Version = new Version()
routes = [
{
'target': 'dashboard',
'icon': 'home',
'text': 'Home',
},
{
'target': 'map',
'icon': 'map',
'text': 'Map',
},
{
'target': 'measures',
'icon': 'insert_chart',
'text': 'Measures',
},
]
routes = [
{
'target': 'dashboard',
'icon': 'home',
'text': 'Home',
},
{
'target': 'map',
'icon': 'map',
'text': 'Map',
},
{
'target': 'measures',
'icon': 'insert_chart',
'text': 'Measures',
},
]
constructor(
public configService: ConfigService,
private titleService: Title,
private bootstrapService: BootstrapService,
public authenticationService: AuthenticationService,
private snackBar: MatSnackBar,
private cdr: ChangeDetectorRef,
public dialogRef: MatDialogRef<LoginDialogComponent>,
public dialog: MatDialog
) {}
constructor(
public configService: ConfigService,
private titleService: Title,
private bootstrapService: BootstrapService,
public authenticationService: AuthenticationService,
private snackBar: MatSnackBar,
private cdr: ChangeDetectorRef,
public dialogRef: MatDialogRef<LoginDialogComponent>,
public dialog: MatDialog
) { }
ngOnInit() {
// Bootstrap: set app wide configuration
this.bootstrapService.get().subscribe({
next: res => {
this.version = res.version
this.title = res.title || this.title
this.titleService.setTitle(res.windowTitle || this.title)
this.configService.setConf(res)
if (res.redirect && (window != window.top)) {
// Refusing to be embedded in an iframe
let loc = res.redirect + window.location.pathname
window.document.body.innerHTML = `
ngOnInit() {
// Bootstrap: set app wide configuration
this.bootstrapService.get().subscribe({
next: res => {
this.version.backend = res.version
this.version.frontend = versionJson["version"]
this.title = res.title || this.title
this.titleService.setTitle(res.windowTitle || this.title)
this.configService.setConf(res)
if (res.redirect && (window != window.top)) {
// Refusing to be embedded in an iframe
let loc = res.redirect + window.location.pathname
window.document.body.innerHTML = `
The web site you are visiting is trying to embed Gisaf (${this.title}) in an iFrame, it isn't a nice thing to do.</br>
Please click this link to go to the real site: <span style='cursor:pointer' onclick="window.open('${loc}')"><b>${loc}</b></span>
`
}
},
error: err => {
this.snackBar.open(
'Cannot connect to the server (' + err.statusText + '). Please retry later.',
'OK'
)
}
})
}
}
},
error: err => {
this.snackBar.open(
'Cannot connect to the server (' + err.statusText + '). Please retry later.',
'OK'
)
}
})
}
openLoginDialog() {
const dialogRef = this.dialog.open(LoginDialogComponent, {
height: '24em',
width: '21em'
})
openLoginDialog() {
const dialogRef = this.dialog.open(LoginDialogComponent, {
height: '24em',
width: '21em'
})
// dialogRef.afterClosed().subscribe(
// result => {}
// )
}
// dialogRef.afterClosed().subscribe(
// result => {}
// )
}
}

3
src/version.json Normal file
View file

@ -0,0 +1,3 @@
{
"version": "0.0.0"
}

View file

@ -1,24 +1,25 @@
{
"compileOnSave": false,
"compilerOptions": {
"importHelpers": true,
"module": "es2020",
"esModuleInterop": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"esModuleInterop": true,
"experimentalDecorators": true,
"target": "ES2022",
"typeRoots": [
"node_modules/@types",
"@types"
],
"importHelpers": true,
"lib": [
"es2019",
"dom",
"esnext.asynciterable"
],
"module": "es2020",
"moduleResolution": "node",
"resolveJsonModule": true,
"outDir": "./dist/out-tsc",
"sourceMap": true,
"target": "ES2022",
"typeRoots": [
"node_modules/@types",
"@types"
],
"useDefineForClassFields": false
},
"angularCompilerOptions": {