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

OZG-4949 define settingsService

parent cb27f874
Branches
Tags
No related merge requests found
Showing
with 117 additions and 13 deletions
......@@ -2,13 +2,18 @@
<header class="flex items-center justify-between bg-white p-6" data-test-id="admin-header">
<div class="text-ozgblue font-extrabold">OZG-Cloud Administration</div>
<div>
<user-profile-button-container data-test-id="user-profile-button"></user-profile-button-container>
<user-profile-button-container
data-test-id="user-profile-button"
></user-profile-button-container>
</div>
</header>
<div class="relative flex w-full flex-auto justify-center">
<div class="w-60 bg-slate-100 p-6">
<nav>
<postfach-navigation-item data-test-id="postfach-navigation-item"></postfach-navigation-item>
<admin-navigation-container></admin-navigation-container>
<postfach-navigation-item
data-test-id="postfach-navigation-item"
></postfach-navigation-item>
</nav>
</div>
<main class="flex-auto bg-slate-200 p-6">
......
......@@ -10,9 +10,8 @@ import { of } from 'rxjs';
import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { MockComponent } from 'ng-mocks';
import { UserProfileButtonContainerComponent } from '../common/user-profile-button-container/user-profile.button-container.component';
import {
PostfachNavigationItemComponent
} from '../pages/postfach/postfach-navigation-item/postfach-navigation-item.component';
import { PostfachNavigationItemComponent } from '../pages/postfach/postfach-navigation-item/postfach-navigation-item.component';
import { NavigationContainerComponent } from '@admin-client/admin-settings';
describe('AppComponent', () => {
let component: AppComponent;
......@@ -32,6 +31,7 @@ describe('AppComponent', () => {
AppComponent,
MockComponent(UserProfileButtonContainerComponent),
MockComponent(PostfachNavigationItemComponent),
MockComponent(NavigationContainerComponent),
],
imports: [RouterTestingModule],
providers: [
......
......@@ -2,3 +2,4 @@ export * from './lib/admin-settings.module';
export * from './lib/postfach/postfach.module';
export * from './lib/postfach/postfach-container/postfach-container.component';
export * from './lib/shared/navigation-item/navigation-item.component';
export * from './lib/navigation-container/navigation-container.component';
import { ApiRootResource, ApiRootService } from '@alfa-client/api-root-shared';
import { InjectionToken, Provider } from '@angular/core';
import { ResourceListService } from 'libs/tech-shared/src/lib/resource/list-resource.service';
import { ListResourceServiceConfig } from 'libs/tech-shared/src/lib/resource/resource.model';
import { SettingsItemResource, SettingsListLinkRel, SettingsListResource } from './settings.model';
import { ResourceRepository } from 'libs/tech-shared/src/lib/resource/resource.repository';
export const SettingServiceToken: InjectionToken<
ResourceListService<ApiRootResource, SettingsListResource, SettingsItemResource>
> = new InjectionToken(null);
export const SettingsServiceProvider: Provider = {
provide: SettingServiceToken,
useFactory: (
apiRootService: ApiRootService,
repository: ResourceRepository<SettingsListResource>,
) => new ResourceListService(createSettingsServiceConfig(apiRootService), repository),
deps: [ApiRootService, ResourceRepository],
};
export function createSettingsServiceConfig(
apiRootService: ApiRootService,
): ListResourceServiceConfig<ApiRootResource> {
console.info('create service Config');
return {
baseResource: apiRootService.getApiRoot(),
createLinkRel: SettingsListLinkRel.CREATE,
listLinkRel: SettingsListLinkRel.LIST,
};
}
......@@ -4,10 +4,13 @@ import { PostfachModule } from './postfach/postfach.module';
import { TechSharedModule } from '@alfa-client/tech-shared';
import { NavigationItemComponent } from './shared/navigation-item/navigation-item.component';
import { RouterModule } from '@angular/router';
import { NavigationContainerComponent } from './navigation-container/navigation-container.component';
import { SettingsServiceProvider } from './admin-settings-provider';
@NgModule({
declarations: [NavigationItemComponent],
declarations: [NavigationItemComponent, NavigationContainerComponent],
imports: [CommonModule, TechSharedModule, RouterModule],
exports: [PostfachModule, NavigationItemComponent],
exports: [PostfachModule, NavigationItemComponent, NavigationContainerComponent],
providers: [SettingsServiceProvider],
})
export class AdminSettingsModule {}
<div *ngIf="settingsList$ | async as settingsStateResource">
SettingsList: {{ settingsStateResource.resource | json }}
<!--Durchiterieren der Liste-->
<!--Bei dem entsprechenden Namen des Items die entsprechende Componente nutzen-->
<!--Beim auswählen das select vom Service mit der Uri aufrufen-->
</div>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NavigationContainerComponent } from './navigation-container.component';
describe('NavigationContainerComponent', () => {
let component: NavigationContainerComponent;
let fixture: ComponentFixture<NavigationContainerComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [NavigationContainerComponent],
}).compileComponents();
fixture = TestBed.createComponent(NavigationContainerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { ListResource, StateResource } from '@alfa-client/tech-shared';
import { Component, Inject, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { SettingsService } from '../settings.model';
import { SettingServiceToken } from '../admin-settings-provider';
@Component({
selector: 'admin-navigation-container',
templateUrl: './navigation-container.component.html',
styleUrls: ['./navigation-container.component.scss'],
})
export class NavigationContainerComponent implements OnInit {
constructor(@Inject(SettingServiceToken) private settingsService: SettingsService) {}
settingsList$: Observable<StateResource<ListResource>>;
ngOnInit(): void {
this.settingsList$ = this.settingsService.getList();
}
}
......@@ -23,9 +23,26 @@
*/
import { Resource } from '@ngxp/rest';
import { Postfach } from './postfach/postfach.model';
import { ListResource } from '@alfa-client/tech-shared';
import { ListItemResource } from 'libs/tech-shared/src/lib/resource/resource.model';
import { ResourceListService } from 'libs/tech-shared/src/lib/resource/list-resource.service';
import { ApiRootResource } from '@alfa-client/api-root-shared';
export interface AdminSettings {
postfach: Postfach;
}
export interface AdminSettingsResource extends AdminSettings, Resource {}
export interface SettingsListResource extends ListResource, AdminSettings {}
export interface SettingsItemResource extends ListItemResource {}
export enum SettingsListLinkRel {
CREATE = '', //entsprechend anpassen
LIST = 'configuration', //entsprechend anpassen
}
export declare type SettingsService = ResourceListService<
ApiRootResource,
SettingsListResource,
ListItemResource
>;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment