Skip to content

Commit c05cf8f

Browse files
mschwrdtnrDanielHabenicht
authored andcommitted
feat(release-notification): update-notification-badge (#139)
* enhance: redesign first popup - style notification dialog - add mixin for mat-icon - use mixin in whole project * enhance(welcome-popup): disable hover effect - Hover effect disabled - change border and header color to theme primary - renamed classname in `interactive-attribute-field` * feat(welcome-popup): change styles and positions * remove "Du wirst es nicht bereuen" * feat(release-notification): notification badge * fix: bugfix increment won't noticed / displayReleaseDialog apparently `case VersionIncrement.feature || VersionIncrement.bugfix` does not increment the bugfix number * resolve failed merge * rename and translate Menu Item + set displayReleaseNotification private * add Release Notes to burger menu * remove newUpdate = true on first start * Update Phonebook.Frontend/src/app/shared/components/navigation/navigation.component.html
1 parent 684a6ee commit c05cf8f

File tree

9 files changed

+110
-59
lines changed

9 files changed

+110
-59
lines changed

.azure/pipelines/Phonebook.preview.yml

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -206,18 +206,16 @@ jobs:
206206
urlSuffix: 'repos/T-Systems-MMS/phonebook/issues/$(System.PullRequest.PullRequestNumber)/comments'
207207
waitForCompletion: 'false'
208208

209-
210209
- job: delete_preview_delay
211210
displayName: 'Delay Deletion of Preview Environment'
212211
pool: server
213212
dependsOn: deploy_preview
214213
timeoutInMinutes: 725
215214
cancelTimeoutInMinutes: 725
216-
steps:
217-
- task: Delay@1
218-
inputs:
219-
delayForMinutes: '720'
220-
215+
steps:
216+
- task: Delay@1
217+
inputs:
218+
delayForMinutes: '720'
221219

222220
- job: delete_preview
223221
dependsOn:
@@ -229,26 +227,26 @@ jobs:
229227
variables:
230228
namespace: $(image_tag)
231229
steps:
232-
- task: Kubernetes@1
233-
displayName: 'Delete Namespace'
234-
inputs:
235-
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
236-
namespace: 'kube-public'
237-
command: delete
238-
arguments: 'namespace $(namespace)'
239-
240-
- task: Kubernetes@1
241-
displayName: 'Delete Clusterrole'
242-
inputs:
243-
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
244-
namespace: 'kube-public'
245-
command: delete
246-
arguments: 'clusterrole phonebook-$(image_tag)-traefik'
247-
248-
- task: Kubernetes@1
249-
displayName: 'Delete Clusterrolebinding'
250-
inputs:
251-
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
252-
namespace: 'kube-public'
253-
command: delete
254-
arguments: 'clusterrolebinding phonebook-$(image_tag)-traefik'
230+
- task: Kubernetes@1
231+
displayName: 'Delete Namespace'
232+
inputs:
233+
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
234+
namespace: 'kube-public'
235+
command: delete
236+
arguments: 'namespace $(namespace)'
237+
238+
- task: Kubernetes@1
239+
displayName: 'Delete Clusterrole'
240+
inputs:
241+
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
242+
namespace: 'kube-public'
243+
command: delete
244+
arguments: 'clusterrole phonebook-$(image_tag)-traefik'
245+
246+
- task: Kubernetes@1
247+
displayName: 'Delete Clusterrolebinding'
248+
inputs:
249+
kubernetesServiceEndpoint: 'Phonebook Kubernetes Demo Cluster'
250+
namespace: 'kube-public'
251+
command: delete
252+
arguments: 'clusterrolebinding phonebook-$(image_tag)-traefik'

Phonebook.Frontend/src/app/app.module.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin';
1010
import { NgxsLoggerPluginModule } from '@ngxs/logger-plugin';
1111
import { NgxsRouterPluginModule } from '@ngxs/router-plugin';
1212
import { NgxsStoragePluginModule } from '@ngxs/storage-plugin';
13+
import { MatBadgeModule } from '@angular/material';
1314
// NGXS States
1415
import { NgxsModule } from '@ngxs/store';
1516
//Custom Imports
@@ -40,7 +41,14 @@ import { ErrorHandlerModule } from 'src/app/shared/error/error.module';
4041
// Modules
4142
import { MaterialModule } from 'src/app/shared/material.module';
4243
import { WINDOW_PROVIDER } from 'src/app/shared/providers/window.provider';
43-
import { AppState, BookmarksState, CommonPersonsState, LastPersonsState, SearchState, TableState } from 'src/app/shared/states';
44+
import {
45+
AppState,
46+
BookmarksState,
47+
CommonPersonsState,
48+
LastPersonsState,
49+
SearchState,
50+
TableState
51+
} from 'src/app/shared/states';
4452
import { environment } from 'src/environments/environment';
4553
// Services
4654
import { FloorplanService } from './services/floorplan.service';
@@ -64,6 +72,7 @@ declare const require;
6472
FeatureFlagModule.forRoot(),
6573
NotImplementedModule,
6674
FeedbackDrawerModule,
75+
MatBadgeModule,
6776
NgxsModule.forRoot([AppState, BookmarksState, LastPersonsState, CommonPersonsState, SearchState, TableState], {
6877
// TODO: Fix https://github.com/T-Systems-MMS/phonebook/issues/95 first.
6978
// developmentMode: !environment.production

Phonebook.Frontend/src/app/services/release-info.service.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { VERSION } from 'src/environments/version';
1212
providedIn: 'root'
1313
})
1414
export class ReleaseInfoService {
15+
public newUpdate: boolean = false; //shows that the application was updated
1516
constructor(
1617
private dialog: MatDialog,
1718
private snackBar: MatSnackBar,
@@ -28,22 +29,25 @@ export class ReleaseInfoService {
2829
switch (versionIncrement) {
2930
case VersionIncrement.breaking:
3031
this.displayReleaseDialog();
32+
this.newUpdate = true;
3133
this.store.dispatch(new SetVersion(VERSION));
3234
break;
3335
case VersionIncrement.feature:
34-
this.displayReleaseDialog();
36+
this.displayReleaseNotification();
37+
this.newUpdate = true;
3538
this.store.dispatch(new SetVersion(VERSION));
3639
break;
3740
case VersionIncrement.bugfix:
3841
this.displayReleaseNotification();
42+
this.newUpdate = true;
3943
this.store.dispatch(new SetVersion(VERSION));
4044
break;
4145
default:
4246
break;
4347
}
4448
}
4549

46-
private displayReleaseDialog() {
50+
public displayReleaseDialog() {
4751
let text = 'Changelog could not be loaded.';
4852
this.httpClient
4953
.get('changelog.md', {
@@ -82,7 +86,7 @@ export class ReleaseInfoService {
8286
)
8387
.onAction()
8488
.subscribe(clicked => {
85-
window.open('changelog.md', '_blank');
89+
this.displayReleaseDialog();
8690
});
8791
}
8892

Phonebook.Frontend/src/app/shared/components/navigation/navigation.component.html

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<span i18n="NavigationComponent|Link to the users profile@@NavigationComponentMyProfile">My profile</span>
3434
</button>
3535
</mat-list-item>
36+
<mat-divider></mat-divider>
3637
<mat-list-item>
3738
<button mat-menu-item focus [routerLink]="['/settings']" (click)="sidenav.close()">
3839
<mat-icon>settings</mat-icon>
@@ -51,6 +52,20 @@
5152
<span i18n="NavigationComponent|Link to Information page@@NavigationComponentInformation">Information</span>
5253
</button>
5354
</mat-list-item>
55+
<mat-list-item>
56+
<button mat-menu-item>
57+
<mat-icon>new_releases</mat-icon>
58+
<span
59+
matBadge="!"
60+
matBadgeColor="accent"
61+
matBadgeSize="small"
62+
[matBadgeHidden]="!releaseInfoService.newUpdate"
63+
(click)="sidenav.close(); releaseInfoService.displayReleaseDialog()"
64+
i18n="NavigationComponent|Release Notes Menu Item@@NavigationComponentReleaseNotes"
65+
>Release Notes</span
66+
>
67+
</button>
68+
</mat-list-item>
5469
<mat-list-item>
5570
<button
5671
mat-menu-item
@@ -105,7 +120,13 @@
105120
Rooms
106121
</button>
107122
<button mat-icon-button [matMenuTriggerFor]="personalmenu">
108-
<mat-icon>person</mat-icon>
123+
<mat-icon
124+
matBadge="!"
125+
matBadgeColor="accent"
126+
matBadgeSize="small"
127+
[matBadgeHidden]="!releaseInfoService.newUpdate"
128+
>person</mat-icon
129+
>
109130
</button>
110131
<mat-menu #personalmenu>
111132
<button mat-menu-item (click)="navigateToOwnProfile()" *ngIf="currentUser != null">
@@ -125,15 +146,33 @@
125146
<mat-icon>info_outline</mat-icon>
126147
<span i18n="@@NavigationComponentInformation">Information</span>
127148
</button>
149+
<button mat-menu-item>
150+
<mat-icon>new_releases</mat-icon>
151+
<span
152+
matBadge="!"
153+
matBadgeColor="accent"
154+
matBadgeSize="small"
155+
[matBadgeHidden]="!releaseInfoService.newUpdate"
156+
(click)="releaseInfoService.displayReleaseDialog()"
157+
i18n="@@NavigationComponentReleaseNotes"
158+
>Release Notes</span
159+
>
160+
</button>
128161
<button mat-menu-item feedbackDrawer>
129162
<mat-icon>bug_report</mat-icon>
130163
<span i18n="@@NavigationComponentBug">Report a Bug</span>
131164
</button>
132165
</mat-menu>
133166
</div>
134167
<div class="pb-hide-on-med-and-up">
135-
<button mat-button (click)="sidenav.toggle()">
136-
<mat-icon>menu</mat-icon>
168+
<button mat-icon-button (click)="sidenav.toggle()">
169+
<mat-icon
170+
matBadge="!"
171+
matBadgeColor="accent"
172+
matBadgeSize="small"
173+
[matBadgeHidden]="!releaseInfoService.newUpdate"
174+
>menu</mat-icon
175+
>
137176
</button>
138177
</div>
139178
</mat-toolbar-row>

Phonebook.Frontend/src/app/shared/components/navigation/navigation.component.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import { untilComponentDestroyed } from 'ng2-rx-componentdestroyed';
77
import { Observable } from 'rxjs';
88
import { filter, map } from 'rxjs/operators';
99
import { FeatureFlagService } from 'src/app/modules/feature-flag/feature-flag.service';
10+
import { MatBadgeModule } from '@angular/material/badge';
11+
import { ReleaseInfoService } from 'src/app/services/release-info.service';
1012
import { TableSettingsDialog } from 'src/app/modules/table/dialogs/table-settings-dialog/table-settings.dialog';
1113
import { CurrentUserService } from 'src/app/services/api/current-user.service';
1214
import { Person } from 'src/app/shared/models';
@@ -40,7 +42,9 @@ export class NavigationComponent implements OnInit, OnDestroy {
4042
private router: Router,
4143
public dialog: MatDialog,
4244
public i18n: I18n,
43-
public featureFlagService: FeatureFlagService
45+
public featureFlagService: FeatureFlagService,
46+
public badge: MatBadgeModule,
47+
public releaseInfoService: ReleaseInfoService
4448
) {}
4549

4650
public ngOnInit() {

Phonebook.Frontend/src/i18n/messages.de.xlf

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,13 +258,12 @@
258258
<target state="translated">Phonebook</target>
259259
<note priority="1" from="description">Application Name</note>
260260
<note priority="1" from="meaning">NavigationBar</note>
261+
</trans-unit><trans-unit id="NavigationComponentReleaseNotes" datatype="html">
262+
<source>Release Notes</source><target state="translated">Release Notes</target>
263+
<note priority="1" from="description">Release Notes Menu Item</note>
264+
<note priority="1" from="meaning">NavigationComponent</note>
261265
</trans-unit>
262-
<trans-unit id="navigationBarApplicationNameTag" datatype="html">
263-
<source>Preview</source>
264-
<target state="translated">Vorschau</target>
265-
<note priority="1" from="description">Tag on Application Name</note>
266-
<note priority="1" from="meaning">NavigationBar</note>
267-
</trans-unit>
266+
268267
<trans-unit id="navigationBarGreetingsMessage" datatype="html">
269268
<source>Have a nice day</source>
270269
<target state="translated">Hab einen schönen Tag</target>

Phonebook.Frontend/src/i18n/messages.en.xlf

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,13 +279,12 @@
279279
<target state="final">Phonebook</target>
280280
<note priority="1" from="description">Application Name</note>
281281
<note priority="1" from="meaning">NavigationBar</note>
282+
</trans-unit><trans-unit id="NavigationComponentReleaseNotes" datatype="html">
283+
<source>Release Notes</source><target state="final">Release Notes</target>
284+
<note priority="1" from="description">Release Notes Menu Item</note>
285+
<note priority="1" from="meaning">NavigationComponent</note>
282286
</trans-unit>
283-
<trans-unit id="navigationBarApplicationNameTag" datatype="html">
284-
<source>Preview</source>
285-
<target state="final">Preview</target>
286-
<note priority="1" from="description">Tag on Application Name</note>
287-
<note priority="1" from="meaning">NavigationBar</note>
288-
</trans-unit>
287+
289288
<trans-unit id="navigationBarGreetingsMessage" datatype="html">
290289
<source>Have a nice day</source>
291290
<target state="final">Have a nice day</target>

Phonebook.Frontend/src/i18n/messages.test.xlf

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,12 @@
3939
<target state="final">TEST</target>
4040
<note priority="1" from="description">Application Name</note>
4141
<note priority="1" from="meaning">NavigationBar</note>
42+
</trans-unit><trans-unit id="NavigationComponentReleaseNotes" datatype="html">
43+
<source>Release Notes</source><target state="final">TEST</target>
44+
<note priority="1" from="description">Release Notes Menu Item</note>
45+
<note priority="1" from="meaning">NavigationComponent</note>
4246
</trans-unit>
43-
<trans-unit id="navigationBarApplicationNameTag" datatype="html">
44-
<source>Preview</source>
45-
<target state="final">TEST</target>
46-
<note priority="1" from="description">Tag on Application Name</note>
47-
<note priority="1" from="meaning">NavigationBar</note>
48-
</trans-unit>
47+
4948
<trans-unit id="navigationBarGreetingsMessage" datatype="html">
5049
<source>Have a nice day</source>
5150
<target state="translated">TEST</target>

Phonebook.Frontend/src/i18n/messages.xlf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,10 @@
434434
<source>Phonebook</source>
435435
<note priority="1" from="description">Application Name</note>
436436
<note priority="1" from="meaning">NavigationBar</note>
437-
</trans-unit><trans-unit id="navigationBarApplicationNameTag" datatype="html">
438-
<source>Preview</source>
439-
<note priority="1" from="description">Tag on Application Name</note>
440-
<note priority="1" from="meaning">NavigationBar</note>
437+
</trans-unit><trans-unit id="NavigationComponentReleaseNotes" datatype="html">
438+
<source>Release Notes</source>
439+
<note priority="1" from="description">Release Notes Menu Item</note>
440+
<note priority="1" from="meaning">NavigationComponent</note>
441441
</trans-unit><trans-unit id="TableComponentResultCount" datatype="html">
442442
<source>
443443
<x id="INTERPOLATION" equiv-text="{{ tableResultCount$ | async }}"/> Results

0 commit comments

Comments
 (0)