Skip to content
Snippets Groups Projects
Commit 4b7371c6 authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-4994 OZG-5078 add navi element with number of Vorgänge...

Merge pull request 'OZG-4994 OZG-5078 add navi element with number of Vorgänge with unread messages' (#423) from OZG-4994-5078-add-ungelesene-nachrichten-navi into OZG-4994-ansicht-vorgaenge-mit-ungelesene-nachrichten

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/alfa/pulls/423
parents b8dea016 51b36a59
Branches
Tags
No related merge requests found
...@@ -51,6 +51,9 @@ export enum ApiRootLinkRel { ...@@ -51,6 +51,9 @@ export enum ApiRootLinkRel {
ALL_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_all', ALL_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_all',
MY_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_my', MY_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_my',
UNASSIGNED_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_unassigned', UNASSIGNED_WIEDERVORLAGEN = 'vorgaenge_wiedervorlagen_unassigned',
ALL_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_all',
MY_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_my',
UNASSIGNED_UNGELESENE_NACHRICHTEN = 'vorgaenge_ungelesene_nachrichten_unassigned',
ALLE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_all', ALLE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_all',
MEINE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_my', MEINE_VORGAENGE_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_my',
UNASSIGNED_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_unassigned', UNASSIGNED_ZU_LOESCHEN = 'vorgaenge_zu_loeschen_unassigned',
......
...@@ -143,6 +143,7 @@ function createEmptyVorgangStatistic(): VorgangStatistic { ...@@ -143,6 +143,7 @@ function createEmptyVorgangStatistic(): VorgangStatistic {
}, },
wiedervorlagen: null, wiedervorlagen: null,
existsWiedervorlageOverdue: false, existsWiedervorlageOverdue: false,
ungeleseneNachrichten: 0,
}; };
} }
......
...@@ -109,6 +109,7 @@ export interface VorgangStatistic { ...@@ -109,6 +109,7 @@ export interface VorgangStatistic {
byStatus: ByStatus; byStatus: ByStatus;
wiedervorlagen: number; wiedervorlagen: number;
existsWiedervorlageOverdue: boolean; existsWiedervorlageOverdue: boolean;
ungeleseneNachrichten: number;
} }
export interface ByStatus { export interface ByStatus {
...@@ -163,6 +164,7 @@ export enum VorgangView { ...@@ -163,6 +164,7 @@ export enum VorgangView {
WIEDERVORLAGEN, WIEDERVORLAGEN,
SEARCH, SEARCH,
ZU_LOESCHEN, ZU_LOESCHEN,
UNGELESENE_NACHRICHTEN,
} }
export interface StatusCommandMap { export interface StatusCommandMap {
......
...@@ -145,6 +145,7 @@ export function createVorgangStatistic(): VorgangStatistic { ...@@ -145,6 +145,7 @@ export function createVorgangStatistic(): VorgangStatistic {
byStatus: createByStatus(), byStatus: createByStatus(),
wiedervorlagen: faker.datatype.number(), wiedervorlagen: faker.datatype.number(),
existsWiedervorlageOverdue: false, existsWiedervorlageOverdue: false,
ungeleseneNachrichten: faker.datatype.number(),
}; };
} }
......
...@@ -130,6 +130,22 @@ ...@@ -130,6 +130,22 @@
> >
<div class="dot zu-loeschen"></div> <div class="dot zu-loeschen"></div>
</alfa-vorgang-view-item-container> </alfa-vorgang-view-item-container>
<alfa-vorgang-view-item-container
*ngIf="
apiRootResource
| hasAnyLink
: apiRootLinkRel.ALL_UNGELESENE_NACHRICHTEN
: apiRootLinkRel.MY_UNGELESENE_NACHRICHTEN
: apiRootLinkRel.UNASSIGNED_UNGELESENE_NACHRICHTEN
"
data-test-id="vorgang-ungelesene-nachrichten-view"
label="Ungelesen"
[view]="vorgangView.UNGELESENE_NACHRICHTEN"
[count]="statistic.ungeleseneNachrichten"
class="top-border"
>
<ozgcloud-postfach-icon [showBadge]="true"></ozgcloud-postfach-icon>
</alfa-vorgang-view-item-container>
<alfa-vorgang-view-item-container <alfa-vorgang-view-item-container
*ngIf=" *ngIf="
apiRootResource apiRootResource
...@@ -142,7 +158,6 @@ ...@@ -142,7 +158,6 @@
label="Wiedervorlagen" label="Wiedervorlagen"
[view]="vorgangView.WIEDERVORLAGEN" [view]="vorgangView.WIEDERVORLAGEN"
[count]="statistic.wiedervorlagen" [count]="statistic.wiedervorlagen"
class="top-border"
> >
<alfa-wiedervorlage-icon <alfa-wiedervorlage-icon
[isOverdue]="statistic.existsWiedervorlageOverdue" [isOverdue]="statistic.existsWiedervorlageOverdue"
......
...@@ -70,6 +70,7 @@ body.dark :host { ...@@ -70,6 +70,7 @@ body.dark :host {
} }
} }
ozgcloud-icon { ozgcloud-icon,
ozgcloud-postfach-icon {
margin-right: 6px; margin-right: 6px;
} }
...@@ -25,7 +25,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; ...@@ -25,7 +25,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ApiRootLinkRel } from '@alfa-client/api-root-shared'; import { ApiRootLinkRel } from '@alfa-client/api-root-shared';
import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared'; import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
import { OzgcloudIconComponent } from '@alfa-client/ui'; import { OzgcloudIconComponent, PostfachIconComponent } from '@alfa-client/ui';
import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe'; import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe';
import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
...@@ -48,6 +48,7 @@ describe('VorgangViewsMenuComponent', () => { ...@@ -48,6 +48,7 @@ describe('VorgangViewsMenuComponent', () => {
const abgeschlossenView: string = getDataTestIdOf('vorgang-abgeschlossen-view'); const abgeschlossenView: string = getDataTestIdOf('vorgang-abgeschlossen-view');
const verworfenView: string = getDataTestIdOf('vorgang-verworfen-view'); const verworfenView: string = getDataTestIdOf('vorgang-verworfen-view');
const wiedervorlagenView: string = getDataTestIdOf('vorgang-wiedervorlagen-view'); const wiedervorlagenView: string = getDataTestIdOf('vorgang-wiedervorlagen-view');
const ungeleseneNachrichtenView: string = getDataTestIdOf('vorgang-ungelesene-nachrichten-view');
const vorgangListView: string = getDataTestIdOf('vorgang-vorgang-list-view'); const vorgangListView: string = getDataTestIdOf('vorgang-vorgang-list-view');
const searchView: string = getDataTestIdOf('vorgang-search-view'); const searchView: string = getDataTestIdOf('vorgang-search-view');
...@@ -62,6 +63,7 @@ describe('VorgangViewsMenuComponent', () => { ...@@ -62,6 +63,7 @@ describe('VorgangViewsMenuComponent', () => {
MockComponent(VorgangViewItemComponent), MockComponent(VorgangViewItemComponent),
MockComponent(VorgangSearchViewItemContainerComponent), MockComponent(VorgangSearchViewItemContainerComponent),
MockComponent(OzgcloudIconComponent), MockComponent(OzgcloudIconComponent),
MockComponent(PostfachIconComponent),
], ],
}).compileComponents(); }).compileComponents();
...@@ -215,6 +217,26 @@ describe('VorgangViewsMenuComponent', () => { ...@@ -215,6 +217,26 @@ describe('VorgangViewsMenuComponent', () => {
}); });
}); });
describe('ungelesene nachrichten view', () => {
it.each([
ApiRootLinkRel.ALL_UNGELESENE_NACHRICHTEN,
ApiRootLinkRel.MY_UNGELESENE_NACHRICHTEN,
ApiRootLinkRel.UNASSIGNED_UNGELESENE_NACHRICHTEN,
])('should show if %s link exists', (linkRel: string) => {
component.apiRootResource = createApiRootResource([linkRel]);
fixture.detectChanges();
existsAsHtmlElement(fixture, ungeleseneNachrichtenView);
});
it('should hide if link not exists', () => {
component.apiRootResource = createApiRootResource();
fixture.detectChanges();
notExistsAsHtmlElement(fixture, ungeleseneNachrichtenView);
});
});
describe('vorgangList view', () => { describe('vorgangList view', () => {
it.each([ it.each([
ApiRootLinkRel.ALLE_VORGAENGE, ApiRootLinkRel.ALLE_VORGAENGE,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment