Refaktorierung der Services in separate Dateien und Aktualisierung der Referenzen

- Aufteilung des `service` in `service/button` und `service/api` Dateien
- Aktualisierung aller Referenzen auf die neue Service-Dateistruktur
- Erstellung einer `BaseButtonService` Klasse und Verschiebung der gemeinsamen Button-Funktionalität
- Sicherstellung, dass Button-Services `BaseButtonService` erweitern, um gemeinsame Eigenschaften zu erben
This commit is contained in:
Developer 02 2024-08-08 10:52:41 +02:00
parent fbfe1f774c
commit 4a8b65a8d6
47 changed files with 94 additions and 71 deletions

View File

@ -5,7 +5,7 @@ import { provideClientHydration } from '@angular/platform-browser';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { provideHttpClient, withFetch } from '@angular/common/http';
import { APP_BASE_HREF } from '@angular/common';
import { UrlService } from './services/url.service';
import { UrlService } from './services/api/url.service';
import { API_URL } from './tokens';
export const appConfig: ApplicationConfig = {

View File

@ -1,7 +1,6 @@
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';
import { Observable, of } from 'rxjs';
import { AuthenticationService } from '../services/authentication.service'; // Adjust the path as necessary
import { AuthenticationService } from '../services/api/authentication.service'; // Adjust the path as necessary
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { LoginComponent } from '../components/login/login.component';

View File

@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { ColorModeService, GetLocalTheme, Theme } from '../../../services/color-mode.service';
import { ColorModeService, GetLocalTheme, Theme } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common'
@Component({

View File

@ -10,10 +10,10 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { UserGroupDirImportComponent } from "../../user-group-dir-import/user-group-dir-import.component";
import { UserService } from '../../../services/user.service';
import { RefreshService } from '../../../services/refresh.service';
import { UserService } from '../../../services/api/user.service';
import { RefreshService } from '../../../services/button/refresh.service';
import { GroupDirImportComponent } from "../../group-dir-import/group-dir-import.component";
import { GroupService } from '../../../services/group.service';
import { GroupService } from '../../../services/api/group.service';
import Swal from 'sweetalert2';
@Component({

View File

@ -9,8 +9,8 @@ import { MatButtonModule } from '@angular/material/button';
import { CommonModule } from '@angular/common';
import { MatTabsModule } from '@angular/material/tabs';
import { UserGroupDirImportComponent } from "../../user-group-dir-import/user-group-dir-import.component";
import { UserService } from '../../../services/user.service';
import { RefreshService } from '../../../services/refresh.service';
import { UserService } from '../../../services/api/user.service';
import { RefreshService } from '../../../services/button/refresh.service';
import Swal from 'sweetalert2';
@Component({

View File

@ -1,7 +1,7 @@
import { AfterViewInit, Component, Inject, OnInit, ViewChild } from '@angular/core';
import { Component, Inject, OnInit, ViewChild } from '@angular/core';
import { GuiRowSelection, GuiRowSelectionMode, GuiRowSelectionType } from '@generic-ui/ngx-grid';
import Swal from 'sweetalert2';
import { GroupService } from '../../services/group.service';
import { GroupService } from '../../services/api/group.service';
import { Observable, forkJoin, of } from 'rxjs';
import { catchError, finalize } from 'rxjs/operators';
import { DirGroupTableComponent } from '../tables/dir-group-table/dir-group-table.component';

View File

@ -1,5 +1,5 @@
import { Component, Inject, Input } from '@angular/core';
import { AuthenticationService } from '../../services/authentication.service';
import { AuthenticationService } from '../../services/api/authentication.service';
import Swal from 'sweetalert2';
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
import { CommonModule } from '@angular/common';

View File

@ -1,15 +1,15 @@
import { Component } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { AuthenticationService, IsLogedIn } from '../../services/authentication.service';
import { AuthenticationService, IsLogedIn } from '../../services/api/authentication.service';
import { LoginComponent } from '../login/login.component';
import { RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { ColorModeBttnComponent } from '../common/color-mode-bttn/color-mode-bttn.component';
import { MatIconModule } from '@angular/material/icon';
import { RefreshService } from '../../services/refresh.service';
import { CreationService } from '../../services/creation.service';
import { UpdateService, UpdateEvent } from '../../services/update.service';
import { TransferService } from '../../services/transfer.service';
import { RefreshService } from '../../services/button/refresh.service';
import { CreationService } from '../../services/button/creation.service';
import { UpdateService, UpdateEvent } from '../../services/button/update.service';
import { TransferService } from '../../services/button/transfer.service';
import { MatBadgeModule } from '@angular/material/badge';
import {
MatSlideToggleModule,

View File

@ -1,6 +1,6 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { BaseTableComponent } from './base-table.component';
import { ApiService } from '../../../services/user-management.api.service';
import { ApiService } from '../../../services/api/user-management.api.service';
import { NO_ERRORS_SCHEMA } from '@angular/core';
describe('BaseTableComponent', () => {

View File

@ -1,8 +1,8 @@
import { Component, Inject, Input, OnDestroy, OnInit, ViewChild, input } from '@angular/core';
import { ApiService } from '../../../services/user-management.api.service';
import { ApiService } from '../../../services/api/user-management.api.service';
import { GuiGridModule, GuiColumn, GuiColumnMenu, GuiSorting, GuiRowDetail, GuiPaging, GuiPagingDisplay, GuiSearching, GuiCellEdit, GuiInfoPanel, GuiTitlePanel, GuiRowSelection, GuiSelectedRow, GuiGridComponent, GuiGridApi, GuiTheme } from '@generic-ui/ngx-grid';
import { Subscription } from 'rxjs/internal/Subscription';
import { ColorModeService, Theme } from '../../../services/color-mode.service';
import { ColorModeService, Theme } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

View File

@ -1,13 +1,13 @@
import { Component, Inject } from '@angular/core';
import { BaseTableComponent } from '../base-table/base-table.component';
import { DirGroupService } from '../../../services/dir-group.service';
import { DirGroupService } from '../../../services/api/dir-group.service';
import { DirGroup } from '../../../models/user-management.api.models';
import { GuiGridModule } from '@generic-ui/ngx-grid';
import { ColorModeService } from '../../../services/color-mode.service';
import { ColorModeService } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';
import { GroupService } from '../../../services/group.service';
import { GroupService } from '../../../services/api/group.service';
import { firstValueFrom } from 'rxjs';
@Component({

View File

@ -1,13 +1,13 @@
import { Component, Inject } from '@angular/core';
import { DirUser } from '../../../models/user-management.api.models';
import { DirUserService } from '../../../services/dir-user.service';
import { DirUserService } from '../../../services/api/dir-user.service';
import { BaseTableComponent } from '../base-table/base-table.component';
import { GuiGridModule, GuiColumn } from '@generic-ui/ngx-grid';
import { ColorModeService } from '../../../services/color-mode.service';
import { ColorModeService } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';
import { UserService } from '../../../services/user.service';
import { UserService } from '../../../services/api/user.service';
import { firstValueFrom } from 'rxjs/internal/firstValueFrom';
@Component({

View File

@ -1,13 +1,13 @@
import { Component, Inject } from '@angular/core';
import { GroupService } from '../../../services/group.service';
import { GroupService } from '../../../services/api/group.service';
import { Group } from '../../../models/user-management.api.models';
import { GuiGridModule, GuiColumn } from '@generic-ui/ngx-grid';
import { BaseTableComponent } from '../base-table/base-table.component';
import { ColorModeService } from '../../../services/color-mode.service';
import { ColorModeService } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';
import { GroupOfUserService } from '../../../services/group-of-user.service';
import { GroupOfUserService } from '../../../services/api/group-of-user.service';
@Component({
standalone: true,

View File

@ -2,12 +2,12 @@ import { Component } from '@angular/core';
import { Module } from '../../../models/user-management.api.models';
import { GuiGridModule } from '@generic-ui/ngx-grid';
import { BaseTableComponent } from '../base-table/base-table.component';
import { ModuleService } from '../../../services/module.service'
import { ColorModeService } from '../../../services/color-mode.service';
import { ModuleService } from '../../../services/api/module.service'
import { ColorModeService } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';
import { ModuleOfUserService } from '../../../services/module-of-user.service';
import { ModuleOfUserService } from '../../../services/api/module-of-user.service';
@Component({
standalone: true,

View File

@ -1,9 +1,9 @@
import { Component, Inject } from '@angular/core';
import { UserRep } from '../../../models/user-management.api.models';
import { UserRepService } from '../../../services/user-representation.service';
import { UserRepService } from '../../../services/api/user-representation.service';
import { BaseTableComponent } from '../base-table/base-table.component';
import { GuiGridModule, GuiColumn } from '@generic-ui/ngx-grid';
import { ColorModeService } from '../../../services/color-mode.service';
import { ColorModeService } from '../../../services/button/color-mode.service';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';

View File

@ -1,11 +1,11 @@
import { Component, Inject, Input } from '@angular/core';
import { UserService } from '../../../services/user.service';
import { ModuleOfUserService } from '../../../services/module-of-user.service';
import { GroupOfUserService } from '../../../services/group-of-user.service';
import { Component } from '@angular/core';
import { UserService } from '../../../services/api/user.service';
import { ModuleOfUserService } from '../../../services/api/module-of-user.service';
import { GroupOfUserService } from '../../../services/api/group-of-user.service';
import { User } from '../../../models/user-management.api.models';
import { GuiGridModule, GuiColumn } from '@generic-ui/ngx-grid';
import { GuiGridModule } from '@generic-ui/ngx-grid';
import { BaseTableComponent } from '../base-table/base-table.component';
import { ColorModeService } from '../../../services/color-mode.service'
import { ColorModeService } from '../../../services/button/color-mode.service'
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { env } from '../../../../environments/environment';

View File

@ -1,14 +1,14 @@
import { AfterViewInit, Component, Inject, OnInit, ViewChild } from '@angular/core';
import { GuiRowSelection, GuiRowSelectionMode, GuiRowSelectionType, GuiSelectedRow } from '@generic-ui/ngx-grid';
import Swal from 'sweetalert2';
import { GroupService } from '../../services/group.service';
import { GroupService } from '../../services/api/group.service';
import { Observable, forkJoin, of } from 'rxjs';
import { catchError, finalize } from 'rxjs/operators';
import { DirGroupTableComponent } from '../tables/dir-group-table/dir-group-table.component';
import { DirUserTableComponent } from '../tables/dir-user-table/dir-user-table.component';
import { UserService } from '../../services/user.service';
import { UserService } from '../../services/api/user.service';
import { User } from '../../models/user-management.api.models'
import { RefreshService } from '../../services/refresh.service';
import { RefreshService } from '../../services/button/refresh.service';
@Component({
standalone: true,

View File

@ -1,8 +1,8 @@
import { Component, HostListener, inject } from '@angular/core';
import { RefreshService } from '../../services/refresh.service';
import { CreationService } from '../../services/creation.service';
import { UpdateService } from '../../services/update.service';
import { TransferService } from '../../services/transfer.service';
import { RefreshService } from '../../services/button/refresh.service';
import { CreationService } from '../../services/button/creation.service';
import { UpdateService } from '../../services/button/update.service';
import { TransferService } from '../../services/button/transfer.service';
@Component({
selector: 'app-base-page',

View File

@ -1,6 +1,5 @@
import { AfterViewInit, Component, ViewChild } from '@angular/core';
import { ModuleTableComponent } from '../../components/tables/module-table/module-table.component';
import { RefreshService } from '../../services/refresh.service';
import { MatTabsModule } from '@angular/material/tabs';
import { UserTableComponent } from '../../components/tables/user-table/user-table.component';
import { GuiSelectedRow } from '@generic-ui/ngx-grid';

View File

@ -3,7 +3,7 @@ import { GuiColumn, GuiSelectedRow } from '@generic-ui/ngx-grid/gui/grid/src/cor
import { UserTableComponent } from '../../components/tables/user-table/user-table.component';
import { UserRepTableComponent } from '../../components/tables/user-rep-table/user-rep-table.component';
import { GroupTableComponent } from '../../components/tables/group-table/group-table.component';
import { UserRepService } from '../../services/user-representation.service';
import { UserRepService } from '../../services/api/user-representation.service';
import Swal from 'sweetalert2';
import { MatTabsModule, MatTabGroup } from '@angular/material/tabs';
import { env } from '../../../environments/environment';

View File

@ -1,7 +1,7 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { firstValueFrom } from 'rxjs/internal/firstValueFrom';
import { env } from '../../environments/environment';
import { env } from '../../../environments/environment';
@Injectable({
providedIn: 'root'

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DirGroup, } from '../models/user-management.api.models';
import { DirGroup, } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable } from 'rxjs/internal/Observable';
import Swal from 'sweetalert2';

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { DirUser } from '../models/user-management.api.models';
import { DirUser } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable } from 'rxjs/internal/Observable';
import { UrlService } from './url.service';

View File

@ -1,7 +1,7 @@
import { HttpClient, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Inject, Injectable } from '@angular/core';
import { DirUser } from '../models/user-management.api.models';
import { DirUser } from '../../models/user-management.api.models';
import { UrlService } from './url.service';
@Injectable({

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { GroupOfUser } from '../models/user-management.api.models';
import { GroupOfUser } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable, firstValueFrom } from 'rxjs';
import { UrlService } from './url.service';

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DirGroup, Group, } from '../models/user-management.api.models';
import { DirGroup, Group, } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable } from 'rxjs/internal/Observable';
import { UrlService } from './url.service';

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ModuleOfUser } from '../models/user-management.api.models';
import { ModuleOfUser } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable, firstValueFrom } from 'rxjs';
import { UrlService } from './url.service';

View File

@ -1,7 +1,7 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { ApiService } from './user-management.api.service';
import { Module } from '../models/user-management.api.models';
import { Module } from '../../models/user-management.api.models';
import { UrlService } from './url.service';
@Injectable({

View File

@ -1,7 +1,7 @@
import { Injectable, Inject, inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { Meta } from '@angular/platform-browser';
import { env } from '../../environments/environment';
import { env } from '../../../environments/environment';
@Injectable({
providedIn: 'root'

View File

@ -1,5 +1,5 @@
import { Inject, Injectable } from "@angular/core";
import { UserRep } from "../models/user-management.api.models";
import { UserRep } from "../../models/user-management.api.models";
import { ApiService } from "./user-management.api.service";
import { HttpClient, HttpParams } from "@angular/common/http";
import { Observable } from "rxjs";

View File

@ -1,6 +1,6 @@
import { Injectable, Inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DirUser, User } from '../models/user-management.api.models';
import { DirUser, User } from '../../models/user-management.api.models';
import { ApiService } from './user-management.api.service';
import { Observable } from 'rxjs';
import { UrlService } from './url.service';

View File

@ -0,0 +1,16 @@
import { TestBed } from '@angular/core/testing';
import { BaseButtonService } from './base-button.service';
describe('BaseButtonService', () => {
let service: BaseButtonService;
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(BaseButtonService);
});
it('should be created', () => {
expect(service).toBeTruthy();
});
});

View File

@ -0,0 +1,4 @@
export class BaseButtonService {
public isVisible = true;
}

View File

@ -1,11 +1,12 @@
import { Injectable, Inject, Renderer2, RendererFactory2, PLATFORM_ID } from '@angular/core';
import { DOCUMENT } from '@angular/common';
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
import { BaseButtonService } from './base-button.service';
@Injectable({
providedIn: 'root'
})
export class ColorModeService {
export class ColorModeService extends BaseButtonService {
private readonly renderer: Renderer2;
@ -13,6 +14,7 @@ export class ColorModeService {
public themeChanges$ = this.themeSubject.asObservable();
constructor(@Inject(PLATFORM_ID) private platformId: object, private rendererFactory: RendererFactory2, @Inject(DOCUMENT) public document: Document) {
super()
this.renderer = rendererFactory.createRenderer(null, null);
}

View File

@ -1,16 +1,18 @@
import { Injectable } from '@angular/core';
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { ComponentType } from '@angular/cdk/portal';
import { BaseButtonService } from './base-button.service';
@Injectable({
providedIn: 'root'
})
export class CreationService {
export class CreationService extends BaseButtonService {
public component: ComponentType<unknown> | undefined
public width: string = "50vw";
constructor(private readonly dialog: MatDialog) {
super()
}
openDialog(): MatDialogRef<unknown, any> | undefined {

View File

@ -1,12 +1,15 @@
import { Injectable } from '@angular/core';
import { UpdateService } from './update.service';
import { BaseButtonService } from './base-button.service';
@Injectable({
providedIn: 'root'
})
export class RefreshService {
export class RefreshService extends BaseButtonService {
constructor(private updateService: UpdateService) { }
constructor(private updateService: UpdateService) {
super()
}
private actions: Array<() => void> = [];

View File

@ -1,11 +1,10 @@
import { Injectable } from '@angular/core';
import { BaseButtonService } from './base-button.service';
@Injectable({
providedIn: 'root'
})
export class TransferService {
constructor() { }
export class TransferService extends BaseButtonService {
private actions: Array<() => void> = [];

View File

@ -1,11 +1,10 @@
import { Injectable } from '@angular/core';
import { BaseButtonService } from './base-button.service';
@Injectable({
providedIn: 'root'
})
export class UpdateService {
constructor() { }
export class UpdateService extends BaseButtonService {
private async_actions: { [key: string]: () => Promise<void> } = {};
private actions: { [key: string]: () => void } = {};