RED-4718: use initials avatar & user button from common-ui

This commit is contained in:
Dan Percic 2022-07-28 02:08:22 +03:00
parent 66df9552bb
commit 2e34c6b2c7
116 changed files with 211 additions and 419 deletions

View File

@ -14,6 +14,7 @@
"@services/**", "@services/**",
"@components/**", "@components/**",
"@guards/**", "@guards/**",
"@users/**",
"@i18n/**", "@i18n/**",
"@utils/**", "@utils/**",
"@models/**", "@models/**",

View File

@ -1,6 +1,6 @@
import { AuthErrorComponent } from '@components/auth-error/auth-error.component'; import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
import { AuthGuard, CompositeRouteGuard, CustomRouteReuseStrategy } from '@iqser/common-ui'; import { CompositeRouteGuard, CustomRouteReuseStrategy, IqserAuthGuard } from '@iqser/common-ui';
import { RedRoleGuard } from './modules/auth/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
import { BaseScreenComponent } from '@components/base-screen/base-screen.component'; import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
import { RouteReuseStrategy, RouterModule, Routes } from '@angular/router'; import { RouteReuseStrategy, RouterModule, Routes } from '@angular/router';
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
@ -44,7 +44,7 @@ const routes: Routes = [
loadChildren: () => import('./modules/dashboard/dashboard.module').then(m => m.DashboardModule), loadChildren: () => import('./modules/dashboard/dashboard.module').then(m => m.DashboardModule),
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, DossierTemplatesGuard, DashboardGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, DossierTemplatesGuard, DashboardGuard],
requiredRoles: ['RED_USER'], requiredRoles: ['RED_USER'],
}, },
}, },
@ -53,7 +53,7 @@ const routes: Routes = [
component: DownloadsListScreenComponent, component: DownloadsListScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -61,7 +61,7 @@ const routes: Routes = [
loadChildren: () => import('./modules/search/search.module').then(m => m.SearchModule), loadChildren: () => import('./modules/search/search.module').then(m => m.SearchModule),
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_USER'], requiredRoles: ['RED_USER'],
}, },
}, },
@ -70,7 +70,7 @@ const routes: Routes = [
loadChildren: () => import('./modules/trash/trash.module').then(m => m.TrashModule), loadChildren: () => import('./modules/trash/trash.module').then(m => m.TrashModule),
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, DossiersGuard, TrashGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, DossiersGuard, TrashGuard],
requiredRoles: ['RED_USER'], requiredRoles: ['RED_USER'],
dossiersService: ACTIVE_DOSSIERS_SERVICE, dossiersService: ACTIVE_DOSSIERS_SERVICE,
}, },
@ -134,7 +134,7 @@ const routes: Routes = [
], ],
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, DossierTemplatesGuard, DashboardGuard, DossierTemplateExistsGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, DossierTemplatesGuard, DashboardGuard, DossierTemplateExistsGuard],
requiredRoles: ['RED_USER'], requiredRoles: ['RED_USER'],
}, },
}, },
@ -143,7 +143,7 @@ const routes: Routes = [
{ {
path: 'auth-error', path: 'auth-error',
component: AuthErrorComponent, component: AuthErrorComponent,
canActivate: [AuthGuard], canActivate: [IqserAuthGuard],
}, },
{ {
path: '**', path: '**',

View File

@ -1,10 +1,10 @@
import { Component, Inject, Renderer2, ViewContainerRef } from '@angular/core'; import { Component, Inject, Renderer2, ViewContainerRef } from '@angular/core';
import { RouterHistoryService } from '@services/router-history.service'; import { RouterHistoryService } from '@services/router-history.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { REDDocumentViewer } from './modules/pdf-viewer/services/document-viewer.service'; import { REDDocumentViewer } from './modules/pdf-viewer/services/document-viewer.service';
import { DossiersChangesService } from '@services/dossiers/dossier-changes.service'; import { DossiersChangesService } from '@services/dossiers/dossier-changes.service';
import { DOCUMENT } from '@angular/common'; import { DOCUMENT } from '@angular/common';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
@Component({ @Component({
selector: 'redaction-root', selector: 'redaction-root',
@ -20,10 +20,10 @@ export class AppComponent {
private readonly _userPreferenceService: UserPreferenceService, private readonly _userPreferenceService: UserPreferenceService,
readonly documentViewer: REDDocumentViewer, readonly documentViewer: REDDocumentViewer,
private readonly _dossierChangesService: DossiersChangesService, private readonly _dossierChangesService: DossiersChangesService,
@Inject(DOCUMENT) private document: Document, @Inject(DOCUMENT) private readonly _document: Document,
private renderer: Renderer2, private readonly _renderer: Renderer2,
) { ) {
this.renderer.addClass(this.document.body, _userPreferenceService.getTheme()); this._renderer.addClass(this._document.body, _userPreferenceService.getTheme());
// TODO: Find a better place to initialize dossiers refresh // TODO: Find a better place to initialize dossiers refresh
if (_userService.currentUser?.isUser) { if (_userService.currentUser?.isUser) {
_dossierChangesService.initializeRefresh(); _dossierChangesService.initializeRefresh();

View File

@ -1,4 +1,4 @@
import { BrowserModule, Title } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core'; import { APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
@ -7,11 +7,11 @@ import { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common
import { BaseScreenComponent } from '@components/base-screen/base-screen.component'; import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { MissingTranslationHandler, TranslateCompiler, TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { import {
AuthModule as IqserAuthModule,
BASE_HREF, BASE_HREF,
CachingModule, CachingModule,
CommonUiModule, CommonUiModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule,
LanguageService, LanguageService,
MAX_RETRIES_ON_SERVER_ERROR, MAX_RETRIES_ON_SERVER_ERROR,
SERVER_ERROR_SKIP_PATHS, SERVER_ERROR_SKIP_PATHS,
@ -42,8 +42,8 @@ import * as links from '../assets/help-mode/links.json';
import { KeycloakService } from 'keycloak-angular'; import { KeycloakService } from 'keycloak-angular';
import { GeneralSettingsService } from '@services/general-settings.service'; import { GeneralSettingsService } from '@services/general-settings.service';
import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component'; import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service'; import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service';
import { FeaturesService } from '@services/features.service'; import { FeaturesService } from '@services/features.service';
@ -56,7 +56,7 @@ import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module';
import { LicenseService } from '@services/license.service'; import { LicenseService } from '@services/license.service';
import { TenantIdInterceptor } from '@utils/tenant-id-interceptor'; import { TenantIdInterceptor } from '@utils/tenant-id-interceptor';
import { UI_CACHES } from '@utils/constants'; import { UI_CACHES } from '@utils/constants';
import { RedRoleGuard } from './modules/auth/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
export function httpLoaderFactory(httpClient: HttpClient, configService: ConfigService): PruningTranslationLoader { export function httpLoaderFactory(httpClient: HttpClient, configService: ConfigService): PruningTranslationLoader {
return new PruningTranslationLoader(httpClient, '/assets/i18n/', `.json?version=${configService.values.FRONTEND_APP_VERSION}`); return new PruningTranslationLoader(httpClient, '/assets/i18n/', `.json?version=${configService.values.FRONTEND_APP_VERSION}`);
@ -82,7 +82,7 @@ export const appModuleFactory = (config: AppConfig) => {
configService: ConfigService, configService: ConfigService,
configServiceFactory: () => new ConfigService(config), configServiceFactory: () => new ConfigService(config),
}), }),
IqserAuthModule.forRoot({ IqserUsersModule.forRoot({
existingUserService: UserService, existingUserService: UserService,
existingRoleGuard: RedRoleGuard, existingRoleGuard: RedRoleGuard,
}), }),
@ -168,7 +168,6 @@ export const appModuleFactory = (config: AppConfig) => {
deps: [ deps: [
BASE_HREF, BASE_HREF,
KeycloakService, KeycloakService,
Title,
ConfigService, ConfigService,
SystemPreferencesService, SystemPreferencesService,
FeaturesService, FeaturesService,

View File

@ -1,5 +1,5 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { ConfigService } from '@services/config.service'; import { ConfigService } from '@services/config.service';
@Component({ @Component({

View File

@ -28,7 +28,7 @@
<redaction-notifications [iqserHelpMode]="'open_notifications'"></redaction-notifications> <redaction-notifications [iqserHelpMode]="'open_notifications'"></redaction-notifications>
</div> </div>
<redaction-user-button [matMenuTriggerFor]="userMenu" [userId]="currentUser.id" id="userMenu"></redaction-user-button> <iqser-user-button [matMenuTriggerFor]="userMenu" id="userMenu"></iqser-user-button>
<mat-menu #userMenu="matMenu" xPosition="before"> <mat-menu #userMenu="matMenu" xPosition="before">
<ng-container *ngFor="let item of userMenuItems; trackBy: trackByName"> <ng-container *ngFor="let item of userMenuItems; trackBy: trackByName">

View File

@ -1,6 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { NavigationStart, Router } from '@angular/router'; import { NavigationStart, Router } from '@angular/router';
import { Title } from '@angular/platform-browser'; import { Title } from '@angular/platform-browser';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';

View File

@ -23,7 +23,8 @@
class="notification" class="notification"
mat-menu-item mat-menu-item
> >
<redaction-initials-avatar [user]="notification.userId"></redaction-initials-avatar> <iqser-initials-avatar [user]="notification.userId"></iqser-initials-avatar>
<div class="notification-content"> <div class="notification-content">
<div [innerHTML]="notification.message"></div> <div [innerHTML]="notification.message"></div>
<div class="small-label mt-2">{{ notification.time }}</div> <div class="small-label mt-2">{{ notification.time }}</div>

View File

@ -1,7 +1,7 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { AuthGuard, CompositeRouteGuard } from '@iqser/common-ui'; import { CompositeRouteGuard, IqserAuthGuard } from '@iqser/common-ui';
import { RedRoleGuard } from '../auth/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component'; import { BaseAccountScreenComponent } from './base-account-screen/base-account-screen-component';
const routes: Routes = [ const routes: Routes = [
@ -11,7 +11,7 @@ const routes: Routes = [
component: BaseAccountScreenComponent, component: BaseAccountScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
loadChildren: () => import('./screens/user-profile/user-profile.module').then(m => m.UserProfileModule), loadChildren: () => import('./screens/user-profile/user-profile.module').then(m => m.UserProfileModule),
}, },
@ -20,7 +20,7 @@ const routes: Routes = [
component: BaseAccountScreenComponent, component: BaseAccountScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_USER'], requiredRoles: ['RED_USER'],
}, },
loadChildren: () => import('./screens/notifications/notifications.module').then(m => m.NotificationsModule), loadChildren: () => import('./screens/notifications/notifications.module').then(m => m.NotificationsModule),

View File

@ -1,6 +1,6 @@
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ChangeDetectionStrategy, Component } from '@angular/core'; import { ChangeDetectionStrategy, Component } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
interface NavItem { interface NavItem {
readonly label: string; readonly label: string;

View File

@ -6,10 +6,10 @@ import { BaseFormComponent, LanguageService, LoadingService } from '@iqser/commo
import { IProfile } from '@red/domain'; import { IProfile } from '@red/domain';
import { languagesTranslations } from '@translations/languages-translations'; import { languagesTranslations } from '@translations/languages-translations';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { ConfigService } from '@services/config.service'; import { ConfigService } from '@services/config.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
@Component({ @Component({
selector: 'redaction-user-profile-screen', selector: 'redaction-user-profile-screen',

View File

@ -1,6 +1,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { AuthGuard, CompositeRouteGuard } from '@iqser/common-ui'; import { CompositeRouteGuard, IqserAuthGuard } from '@iqser/common-ui';
import { RedRoleGuard } from '../auth/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component'; import { EntitiesListingScreenComponent } from './screens/entities-listing/entities-listing-screen.component';
import { PendingChangesGuard } from '@guards/can-deactivate.guard'; import { PendingChangesGuard } from '@guards/can-deactivate.guard';
import { FileAttributesListingScreenComponent } from './screens/file-attributes-listing/file-attributes-listing-screen.component'; import { FileAttributesListingScreenComponent } from './screens/file-attributes-listing/file-attributes-listing-screen.component';
@ -36,7 +36,7 @@ const dossierTemplateIdRoutes: Routes = [
component: EntitiesListingScreenComponent, component: EntitiesListingScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -45,7 +45,7 @@ const dossierTemplateIdRoutes: Routes = [
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
loadChildren: () => import('./screens/entities/entities.module').then(m => m.EntitiesModule), loadChildren: () => import('./screens/entities/entities.module').then(m => m.EntitiesModule),
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, EntityExistsGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, EntityExistsGuard],
}, },
}, },
], ],
@ -55,7 +55,7 @@ const dossierTemplateIdRoutes: Routes = [
component: BaseDossierTemplateScreenComponent, component: BaseDossierTemplateScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule), loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule),
}, },
@ -64,7 +64,7 @@ const dossierTemplateIdRoutes: Routes = [
component: FileAttributesListingScreenComponent, component: FileAttributesListingScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -77,7 +77,7 @@ const dossierTemplateIdRoutes: Routes = [
component: BaseDossierTemplateScreenComponent, component: BaseDossierTemplateScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
loadChildren: () => import('./screens/reports/reports.module').then(m => m.ReportsModule), loadChildren: () => import('./screens/reports/reports.module').then(m => m.ReportsModule),
}, },
@ -86,7 +86,7 @@ const dossierTemplateIdRoutes: Routes = [
component: DossierAttributesListingScreenComponent, component: DossierAttributesListingScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -94,7 +94,7 @@ const dossierTemplateIdRoutes: Routes = [
component: DossierStatesListingScreenComponent, component: DossierStatesListingScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -102,7 +102,7 @@ const dossierTemplateIdRoutes: Routes = [
component: DefaultColorsScreenComponent, component: DefaultColorsScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -120,7 +120,7 @@ const dossierTemplatesRoutes: Routes = [
component: BaseAdminScreenComponent, component: BaseAdminScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
loadChildren: () => loadChildren: () =>
import('./screens/dossier-templates-listing/dossier-templates-listing.module').then(m => m.DossierTemplatesListingModule), import('./screens/dossier-templates-listing/dossier-templates-listing.module').then(m => m.DossierTemplatesListingModule),
@ -140,7 +140,7 @@ const routes: Routes = [
children: dossierTemplatesRoutes, children: dossierTemplatesRoutes,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, DossierTemplatesGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, DossierTemplatesGuard],
requiredRoles: ['RED_MANAGER', 'RED_ADMIN'], requiredRoles: ['RED_MANAGER', 'RED_ADMIN'],
}, },
}, },
@ -155,7 +155,7 @@ const routes: Routes = [
], ],
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_USER_ADMIN'], requiredRoles: ['RED_USER_ADMIN'],
}, },
}, },
@ -164,7 +164,7 @@ const routes: Routes = [
component: BaseAdminScreenComponent, component: BaseAdminScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, PermissionsGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, PermissionsGuard],
requiredRoles: ['RED_ADMIN'], requiredRoles: ['RED_ADMIN'],
permissionsObject: 'Dossier', permissionsObject: 'Dossier',
}, },
@ -175,7 +175,7 @@ const routes: Routes = [
component: BaseAdminScreenComponent, component: BaseAdminScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_ADMIN'], requiredRoles: ['RED_ADMIN'],
}, },
loadChildren: () => import('./screens/license/license.module').then(m => m.LicenseModule), loadChildren: () => import('./screens/license/license.module').then(m => m.LicenseModule),
@ -191,7 +191,7 @@ const routes: Routes = [
], ],
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_ADMIN'], requiredRoles: ['RED_ADMIN'],
}, },
}, },
@ -206,7 +206,7 @@ const routes: Routes = [
], ],
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_ADMIN'], requiredRoles: ['RED_ADMIN'],
}, },
}, },
@ -222,7 +222,7 @@ const routes: Routes = [
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
canDeactivate: [PendingChangesGuard], canDeactivate: [PendingChangesGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
requiredRoles: ['RED_ADMIN'], requiredRoles: ['RED_ADMIN'],
}, },
}, },

View File

@ -1,8 +1,8 @@
import { Component, HostBinding, Input, OnInit } from '@angular/core'; import { Component, HostBinding, Input, OnInit } from '@angular/core';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { adminSideNavTranslations } from '@translations/admin-side-nav-translations'; import { adminSideNavTranslations } from '@translations/admin-side-nav-translations';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { AdminSideNavType, AdminSideNavTypes, ENTITY_TYPE } from '@red/domain'; import { AdminSideNavType, AdminSideNavTypes, ENTITY_TYPE } from '@red/domain';

View File

@ -45,6 +45,7 @@ import { SystemPreferencesFormComponent } from './screens/general-config/system-
import { ConfigureCertificateDialogComponent } from './dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component'; import { ConfigureCertificateDialogComponent } from './dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component';
import { PkcsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component'; import { PkcsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/pkcs-signature-configuration/pkcs-signature-configuration.component';
import { KmsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component'; import { KmsSignatureConfigurationComponent } from './dialogs/configure-digital-signature-dialog/form/kms-signature-configuration/kms-signature-configuration.component';
import { IqserUsersModule } from '@iqser/common-ui';
const dialogs = [ const dialogs = [
AddEditCloneDossierTemplateDialogComponent, AddEditCloneDossierTemplateDialogComponent,
@ -97,6 +98,6 @@ const components = [
@NgModule({ @NgModule({
declarations: [...components], declarations: [...components],
providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, SmtpConfigService], providers: [AdminDialogService, AuditService, DigitalSignatureService, RulesService, SmtpConfigService],
imports: [CommonModule, SharedModule, AdminRoutingModule, SharedAdminModule, A11yModule], imports: [CommonModule, SharedModule, AdminRoutingModule, SharedAdminModule, A11yModule, IqserUsersModule],
}) })
export class AdminModule {} export class AdminModule {}

View File

@ -1,6 +1,6 @@
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Component, EventEmitter, Input, Output } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { LoadingService, Toaster } from '@iqser/common-ui'; import { LoadingService, Toaster } from '@iqser/common-ui';
import { User } from '@red/domain'; import { User } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';

View File

@ -5,7 +5,7 @@ import { BaseFormComponent, IconButtonTypes, IProfileUpdateRequest, LoadingServi
import { rolesTranslations } from '@translations/roles-translations'; import { rolesTranslations } from '@translations/roles-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { User } from '@red/domain'; import { User } from '@red/domain';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { HttpStatusCode } from '@angular/common/http'; import { HttpStatusCode } from '@angular/common/http';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';

View File

@ -1,7 +1,7 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { UntypedFormGroup, Validators } from '@angular/forms'; import { UntypedFormGroup, Validators } from '@angular/forms';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { ISmtpConfiguration } from '@red/domain'; import { ISmtpConfiguration } from '@red/domain';
import { BaseDialogComponent } from '@iqser/common-ui'; import { BaseDialogComponent } from '@iqser/common-ui';

View File

@ -38,19 +38,18 @@
<mat-form-field class="no-label"> <mat-form-field class="no-label">
<mat-select (selectionChange)="filterChange()" formControlName="userId"> <mat-select (selectionChange)="filterChange()" formControlName="userId">
<mat-select-trigger> <mat-select-trigger>
<redaction-initials-avatar <iqser-initials-avatar
*ngIf="form.get('userId').value !== ALL_USERS" *ngIf="form.get('userId').value !== ALL_USERS"
[user]="form.get('userId').value" [user]="form.get('userId').value"
[withName]="true" [withName]="true"
></redaction-initials-avatar> ></iqser-initials-avatar>
<div *ngIf="form.get('userId').value === ALL_USERS" [translate]="ALL_USERS"></div> <div *ngIf="form.get('userId').value === ALL_USERS" [translate]="ALL_USERS"></div>
</mat-select-trigger> </mat-select-trigger>
<mat-option *ngFor="let userId of userIds" [value]="userId"> <mat-option *ngFor="let userId of userIds" [value]="userId">
<redaction-initials-avatar <iqser-initials-avatar *ngIf="userId !== ALL_USERS" [user]="userId" [withName]="true"></iqser-initials-avatar>
*ngIf="userId !== ALL_USERS"
[user]="userId"
[withName]="true"
></redaction-initials-avatar>
<div *ngIf="userId === ALL_USERS" [translate]="ALL_USERS"></div> <div *ngIf="userId === ALL_USERS" [translate]="ALL_USERS"></div>
</mat-option> </mat-option>
</mat-select> </mat-select>
@ -91,7 +90,7 @@
</div> </div>
<div class="user-column cell"> <div class="user-column cell">
<redaction-initials-avatar [user]="log.userId" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="log.userId" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell">{{ (translations[log.category] | translate) || log.category | humanize }}</div> <div class="cell">{{ (translations[log.category] | translate) || log.category | humanize }}</div>

View File

@ -4,7 +4,7 @@ import { applyIntervalConstraints } from '@utils/date-inputs-utils';
import { ListingComponent, listingProvidersFactory, LoadingService, TableColumnConfig } from '@iqser/common-ui'; import { ListingComponent, listingProvidersFactory, LoadingService, TableColumnConfig } from '@iqser/common-ui';
import { auditCategoriesTranslations } from '@translations/audit-categories-translations'; import { auditCategoriesTranslations } from '@translations/audit-categories-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { Audit, IAudit, IAuditResponse, IAuditSearchRequest } from '@red/domain'; import { Audit, IAudit, IAuditResponse, IAuditSearchRequest } from '@red/domain';
import { AuditService } from '../../services/audit.service'; import { AuditService } from '../../services/audit.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';

View File

@ -4,7 +4,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
import { CircleButtonTypes, getParam, IListable, ListingComponent, listingProvidersFactory, TableColumnConfig } from '@iqser/common-ui'; import { CircleButtonTypes, getParam, IListable, ListingComponent, listingProvidersFactory, TableColumnConfig } from '@iqser/common-ui';
import { defaultColorsTranslations } from '@translations/default-colors-translations'; import { defaultColorsTranslations } from '@translations/default-colors-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { combineLatest } from 'rxjs'; import { combineLatest } from 'rxjs';
import { map, tap } from 'rxjs/operators'; import { map, tap } from 'rxjs/operators';
import { DefaultColorsService } from '@services/entity-services/default-colors.service'; import { DefaultColorsService } from '@services/entity-services/default-colors.service';

View File

@ -1,7 +1,7 @@
import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core'; import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui'; import { IconButtonTypes, LoadingService, Toaster } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { RouterHistoryService } from '@services/router-history.service'; import { RouterHistoryService } from '@services/router-history.service';
import { DigitalSignatureService } from '../../services/digital-signature.service'; import { DigitalSignatureService } from '../../services/digital-signature.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';

View File

@ -12,7 +12,7 @@ import { AdminDialogService } from '../../services/admin-dialog.service';
import { DossierAttributesService } from '@services/entity-services/dossier-attributes.service'; import { DossierAttributesService } from '@services/entity-services/dossier-attributes.service';
import { dossierAttributeTypesTranslations } from '@translations/dossier-attribute-types-translations'; import { dossierAttributeTypesTranslations } from '@translations/dossier-attribute-types-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { DOSSIER_TEMPLATE_ID, DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain'; import { DOSSIER_TEMPLATE_ID, DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { AdminDialogService } from '../../../services/admin-dialog.service'; import { AdminDialogService } from '../../../services/admin-dialog.service';
import { DossierTemplate } from '@red/domain'; import { DossierTemplate } from '@red/domain';
import { import {
@ -10,7 +10,7 @@ import {
LoadingService, LoadingService,
TableColumnConfig, TableColumnConfig,
} from '@iqser/common-ui'; } from '@iqser/common-ui';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { RouterHistoryService } from '@services/router-history.service'; import { RouterHistoryService } from '@services/router-history.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';

View File

@ -5,11 +5,12 @@ import { SharedModule } from '@shared/shared.module';
import { TableItemComponent } from './table-item/table-item.component'; import { TableItemComponent } from './table-item/table-item.component';
import { DossierTemplatesListingScreenComponent } from './dossier-templates-listing-screen/dossier-templates-listing-screen.component'; import { DossierTemplatesListingScreenComponent } from './dossier-templates-listing-screen/dossier-templates-listing-screen.component';
import { SharedAdminModule } from '../../shared/shared-admin.module'; import { SharedAdminModule } from '../../shared/shared-admin.module';
import { IqserUsersModule } from '@iqser/common-ui';
const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }]; const routes = [{ path: '', component: DossierTemplatesListingScreenComponent }];
@NgModule({ @NgModule({
declarations: [TableItemComponent, DossierTemplatesListingScreenComponent], declarations: [TableItemComponent, DossierTemplatesListingScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule, SharedAdminModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, SharedAdminModule, IqserUsersModule],
}) })
export class DossierTemplatesListingModule {} export class DossierTemplatesListingModule {}

View File

@ -11,11 +11,11 @@
</div> </div>
<div class="cell user-column"> <div class="cell user-column">
<redaction-initials-avatar <iqser-initials-avatar
[defaultValue]="'unknown' | translate" [defaultValue]="'unknown' | translate"
[user]="dossierTemplate.createdBy || 'system'" [user]="dossierTemplate.createdBy || 'system'"
[withName]="true" [withName]="true"
></redaction-initials-avatar> ></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router';
import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component'; import { DictionaryManagerComponent } from '@shared/components/dictionary-manager/dictionary-manager.component';
import { DictionaryService } from '@services/entity-services/dictionary.service'; import { DictionaryService } from '@services/entity-services/dictionary.service';
import { List, LoadingService } from '@iqser/common-ui'; import { List, LoadingService } from '@iqser/common-ui';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { BehaviorSubject, firstValueFrom } from 'rxjs';
import { DICTIONARY_TO_ENTRY_TYPE_MAP, DICTIONARY_TYPE_KEY_MAP, DictionaryType, DOSSIER_TEMPLATE_ID, ENTITY_TYPE, User } from '@red/domain'; import { DICTIONARY_TO_ENTRY_TYPE_MAP, DICTIONARY_TYPE_KEY_MAP, DictionaryType, DOSSIER_TEMPLATE_ID, ENTITY_TYPE, User } from '@red/domain';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';

View File

@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@an
import { Dictionary, DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain'; import { Dictionary, DOSSIER_TEMPLATE_ID, ENTITY_TYPE } from '@red/domain';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component'; import { AddEditEntityComponent } from '@shared/components/add-edit-entity/add-edit-entity.component';
import { IqserEventTarget } from '@iqser/common-ui'; import { IqserEventTarget } from '@iqser/common-ui';

View File

@ -11,7 +11,7 @@ import {
Toaster, Toaster,
} from '@iqser/common-ui'; } from '@iqser/common-ui';
import { fileAttributeTypesTranslations } from '@translations/file-attribute-types-translations'; import { fileAttributeTypesTranslations } from '@translations/file-attribute-types-translations';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { DOSSIER_TEMPLATE_ID, FileAttributeConfig, IFileAttributeConfig, IFileAttributesConfig } from '@red/domain'; import { DOSSIER_TEMPLATE_ID, FileAttributeConfig, IFileAttributeConfig, IFileAttributesConfig } from '@red/domain';
import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { FileAttributesService } from '@services/entity-services/file-attributes.service';

View File

@ -1,5 +1,5 @@
import { AfterViewInit, Component, inject, ViewChild } from '@angular/core'; import { AfterViewInit, Component, inject, ViewChild } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { GeneralConfigFormComponent } from './general-config-form/general-config-form.component'; import { GeneralConfigFormComponent } from './general-config-form/general-config-form.component';
import { SmtpFormComponent } from './smtp-form/smtp-form.component'; import { SmtpFormComponent } from './smtp-form/smtp-form.component';
import { BaseFormComponent } from '@iqser/common-ui'; import { BaseFormComponent } from '@iqser/common-ui';

View File

@ -3,11 +3,12 @@ import { CommonModule } from '@angular/common';
import { DossierTemplateInfoScreenComponent } from './info-screen/dossier-template-info-screen.component'; import { DossierTemplateInfoScreenComponent } from './info-screen/dossier-template-info-screen.component';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { IqserUsersModule } from '@iqser/common-ui';
const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }]; const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }];
@NgModule({ @NgModule({
declarations: [DossierTemplateInfoScreenComponent], declarations: [DossierTemplateInfoScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, IqserUsersModule],
}) })
export class DossierTemplateInfoModule {} export class DossierTemplateInfoModule {}

View File

@ -4,11 +4,7 @@
<div class="all-caps-label mt-24 mb-8" translate="dossier-template-info-screen.created-by"></div> <div class="all-caps-label mt-24 mb-8" translate="dossier-template-info-screen.created-by"></div>
<redaction-initials-avatar <iqser-initials-avatar [user]="dossierTemplate.createdBy || 'system'" [withName]="true" size="large"></iqser-initials-avatar>
[user]="dossierTemplate.createdBy || 'system'"
[withName]="true"
size="large"
></redaction-initials-avatar>
<div class="small-label stats-subtitle"> <div class="small-label stats-subtitle">
<div> <div>

View File

@ -12,8 +12,8 @@ import {
import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain'; import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain';
import { JustificationsService } from '@services/entity-services/justifications.service'; import { JustificationsService } from '@services/entity-services/justifications.service';
import { JustificationsDialogService } from '../justifications-dialog.service'; import { JustificationsDialogService } from '../justifications-dialog.service';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';
@Component({ @Component({

View File

@ -2,8 +2,8 @@ import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core
import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain'; import { DOSSIER_TEMPLATE_ID, Justification } from '@red/domain';
import { CircleButtonTypes, getParam } from '@iqser/common-ui'; import { CircleButtonTypes, getParam } from '@iqser/common-ui';
import { JustificationsDialogService } from '../justifications-dialog.service'; import { JustificationsDialogService } from '../justifications-dialog.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
@Component({ @Component({
selector: 'redaction-table-item', selector: 'redaction-table-item',

View File

@ -3,10 +3,10 @@ import { ConfigService } from '@services/config.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { ButtonConfig, IconButtonTypes, LoadingService } from '@iqser/common-ui'; import { ButtonConfig, IconButtonTypes, LoadingService } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { RouterHistoryService } from '@services/router-history.service'; import { RouterHistoryService } from '@services/router-history.service';
import { LicenseService } from '../../../../../services/license.service'; import { LicenseService } from '@services/license.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
@Component({ @Component({

View File

@ -11,7 +11,7 @@ import { firstValueFrom } from 'rxjs';
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { permissionsTranslations } from '@translations/permissions-translations'; import { permissionsTranslations } from '@translations/permissions-translations';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { RouterHistoryService } from '@services/router-history.service'; import { RouterHistoryService } from '@services/router-history.service';
@UntilDestroy() @UntilDestroy()

View File

@ -42,7 +42,7 @@
<ng-template #tableItemTemplate let-entity="entity"> <ng-template #tableItemTemplate let-entity="entity">
<div *ngIf="cast(entity) as user"> <div *ngIf="cast(entity) as user">
<div class="cell"> <div class="cell">
<redaction-initials-avatar [showYou]="true" [user]="user" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [showYou]="true" [user]="user" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -1,5 +1,5 @@
import { Component, inject, OnInit } from '@angular/core'; import { Component, inject, OnInit } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { AdminDialogService } from '../../services/admin-dialog.service'; import { AdminDialogService } from '../../services/admin-dialog.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { DonutChartConfig, User, UserTypes } from '@red/domain'; import { DonutChartConfig, User, UserTypes } from '@red/domain';

View File

@ -11,7 +11,7 @@ import { WatermarkService } from '@services/entity-services/watermark.service';
import { firstValueFrom, Observable, of } from 'rxjs'; import { firstValueFrom, Observable, of } from 'rxjs';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { LicenseService } from '@services/license.service'; import { LicenseService } from '@services/license.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { WatermarksMapService } from '@services/entity-services/watermarks-map.service'; import { WatermarksMapService } from '@services/entity-services/watermarks-map.service';

View File

@ -4,8 +4,8 @@ import { RouterModule } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { WatermarkScreenComponent } from './watermark-screen/watermark-screen.component'; import { WatermarkScreenComponent } from './watermark-screen/watermark-screen.component';
import { WatermarksListingScreenComponent } from './watermarks-listing/watermarks-listing-screen.component'; import { WatermarksListingScreenComponent } from './watermarks-listing/watermarks-listing-screen.component';
import { AuthGuard, CompositeRouteGuard } from '@iqser/common-ui'; import { CompositeRouteGuard, IqserAuthGuard, IqserUsersModule } from '@iqser/common-ui';
import { RedRoleGuard } from '../../../auth/red-role.guard'; import { RedRoleGuard } from '@users/red-role.guard';
import { WATERMARK_ID } from '@red/domain'; import { WATERMARK_ID } from '@red/domain';
import { WatermarkExistsGuard } from '@guards/watermark-exists.guard'; import { WatermarkExistsGuard } from '@guards/watermark-exists.guard';
@ -15,7 +15,7 @@ const routes = [
component: WatermarksListingScreenComponent, component: WatermarksListingScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -23,7 +23,7 @@ const routes = [
component: WatermarkScreenComponent, component: WatermarkScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard], routeGuards: [IqserAuthGuard, RedRoleGuard],
}, },
}, },
{ {
@ -31,13 +31,13 @@ const routes = [
component: WatermarkScreenComponent, component: WatermarkScreenComponent,
canActivate: [CompositeRouteGuard], canActivate: [CompositeRouteGuard],
data: { data: {
routeGuards: [AuthGuard, RedRoleGuard, WatermarkExistsGuard], routeGuards: [IqserAuthGuard, RedRoleGuard, WatermarkExistsGuard],
}, },
}, },
]; ];
@NgModule({ @NgModule({
declarations: [WatermarkScreenComponent, WatermarksListingScreenComponent], declarations: [WatermarkScreenComponent, WatermarksListingScreenComponent],
imports: [RouterModule.forChild(routes), CommonModule, SharedModule], imports: [RouterModule.forChild(routes), CommonModule, SharedModule, IqserUsersModule],
}) })
export class WatermarkModule {} export class WatermarkModule {}

View File

@ -32,10 +32,7 @@
</div> </div>
<div class="cell user-column"> <div class="cell user-column">
<redaction-initials-avatar <iqser-initials-avatar [defaultValue]="'unknown' | translate" [user]="entity.createdBy || 'system'"></iqser-initials-avatar>
[defaultValue]="'unknown' | translate"
[user]="entity.createdBy || 'system'"
></redaction-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -11,7 +11,7 @@ import {
Toaster, Toaster,
} from '@iqser/common-ui'; } from '@iqser/common-ui';
import { DOSSIER_TEMPLATE_ID, Watermark } from '@red/domain'; import { DOSSIER_TEMPLATE_ID, Watermark } from '@red/domain';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';
import { WatermarkService } from '@services/entity-services/watermark.service'; import { WatermarkService } from '@services/entity-services/watermark.service';

View File

@ -25,7 +25,7 @@ import { ConfirmDeleteDossierStateDialogComponent } from '../dialogs/confirm-del
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { firstValueFrom, forkJoin } from 'rxjs'; import { firstValueFrom, forkJoin } from 'rxjs';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { IDossierAttributeConfig, IFileAttributeConfig, IReportTemplate } from '@red/domain'; import { IDossierAttributeConfig, IFileAttributeConfig, IReportTemplate } from '@red/domain';
import { ReportTemplateService } from '@services/report-template.service'; import { ReportTemplateService } from '@services/report-template.service';
import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component'; import { ConfigureCertificateDialogComponent } from '../dialogs/configure-digital-signature-dialog/configure-certificate-dialog.component';

View File

@ -2,7 +2,7 @@ import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { AdminDialogService } from '../../../services/admin-dialog.service'; import { AdminDialogService } from '../../../services/admin-dialog.service';
import { CircleButtonTypes, LoadingService } from '@iqser/common-ui'; import { CircleButtonTypes, LoadingService } from '@iqser/common-ui';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';
import { DOSSIER_TEMPLATE_ID } from '@red/domain'; import { DOSSIER_TEMPLATE_ID } from '@red/domain';

View File

@ -6,14 +6,14 @@ import { TableItemComponent } from './components/table-item/table-item.component
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { ConfigService } from './services/config.service'; import { ConfigService } from './services/config.service';
import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module'; import { SharedDossiersModule } from '../shared-dossiers/shared-dossiers.module';
import { IqserHelpModeModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui';
const components = [TableItemComponent]; const components = [TableItemComponent];
const screens = [ArchivedDossiersScreenComponent]; const screens = [ArchivedDossiersScreenComponent];
@NgModule({ @NgModule({
declarations: [...components, ...screens], declarations: [...components, ...screens],
imports: [CommonModule, ArchiveRoutingModule, SharedModule, SharedDossiersModule, IqserHelpModeModule], imports: [CommonModule, ArchiveRoutingModule, SharedModule, SharedDossiersModule, IqserHelpModeModule, IqserUsersModule],
providers: [ConfigService], providers: [ConfigService],
}) })
export class ArchiveModule {} export class ArchiveModule {}

View File

@ -7,7 +7,7 @@
</div> </div>
<div class="cell user-column"> <div class="cell user-column">
<redaction-initials-avatar [user]="dossier.ownerId" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="dossier.ownerId" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -4,7 +4,7 @@ import { BehaviorSubject, Observable } from 'rxjs';
import { DossierStatsService } from '@services/dossiers/dossier-stats.service'; import { DossierStatsService } from '@services/dossiers/dossier-stats.service';
import { switchMap } from 'rxjs/operators'; import { switchMap } from 'rxjs/operators';
import { CircleButtonTypes, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui'; import { CircleButtonTypes, ScrollableParentView, ScrollableParentViews } from '@iqser/common-ui';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service'; import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
@Component({ @Component({

View File

@ -3,7 +3,7 @@ import { IFilterGroup, keyChecker, NestedFilter, TableColumnConfig } from '@iqse
import { Dossier, User } from '@red/domain'; import { Dossier, User } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { dossierMemberChecker, dossierTemplateChecker } from '@utils/index'; import { dossierMemberChecker, dossierTemplateChecker } from '@utils/index';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';

View File

@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service'; import { DashboardStatsService } from '@services/dossier-templates/dashboard-stats.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
@Component({ @Component({
selector: 'redaction-dashboard-screen', selector: 'redaction-dashboard-screen',

View File

@ -4,7 +4,7 @@ import { Action, ActionTypes, Dossier, File } from '@red/domain';
import { CircleButtonType, CircleButtonTypes, ListingModes, Required } from '@iqser/common-ui'; import { CircleButtonType, CircleButtonTypes, ListingModes, Required } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { LongPressEvent } from '@shared/directives/long-press.directive'; import { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { BulkActionsService } from '../../services/bulk-actions.service'; import { BulkActionsService } from '../../services/bulk-actions.service';
import { ConfigService } from '../../config.service'; import { ConfigService } from '../../config.service';

View File

@ -15,7 +15,7 @@
<div class="all-caps-label" translate="dossier-details.owner"></div> <div class="all-caps-label" translate="dossier-details.owner"></div>
<div class="mt-12 d-flex"> <div class="mt-12 d-flex">
<ng-container *ngIf="!editingOwner; else editOwner"> <ng-container *ngIf="!editingOwner; else editOwner">
<redaction-initials-avatar [user]="dossier.ownerId" [withName]="true" color="gray" size="large"></redaction-initials-avatar> <iqser-initials-avatar [user]="dossier.ownerId" [withName]="true" color="gray" size="large"></iqser-initials-avatar>
<iqser-circle-button <iqser-circle-button
(action)="editingOwner = true" (action)="editingOwner = true"

View File

@ -11,7 +11,7 @@ import {
User, User,
} from '@red/domain'; } from '@red/domain';
import { TranslateChartService } from '@services/translate-chart.service'; import { TranslateChartService } from '@services/translate-chart.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { FilterService, getParam, ProgressBarConfigModel, shareLast, Toaster } from '@iqser/common-ui'; import { FilterService, getParam, ProgressBarConfigModel, shareLast, Toaster } from '@iqser/common-ui';
import { workflowFileStatusTranslations } from '@translations/file-status-translations'; import { workflowFileStatusTranslations } from '@translations/file-status-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';

View File

@ -16,7 +16,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { ReanalysisService } from '@services/reanalysis.service'; import { ReanalysisService } from '@services/reanalysis.service';
import { map, take } from 'rxjs/operators'; import { map, take } from 'rxjs/operators';
import { saveAsCSV } from '@utils/csv-utils'; import { saveAsCSV } from '@utils/csv-utils';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { ConfigService } from '../../config.service'; import { ConfigService } from '../../config.service';
import { firstValueFrom } from 'rxjs'; import { firstValueFrom } from 'rxjs';
import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service'; import { PrimaryFileAttributeService } from '@services/primary-file-attribute.service';

View File

@ -1,6 +1,6 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { annotationDefaultColorConfig, DefaultBasedColorType, File } from '@red/domain'; import { annotationDefaultColorConfig, DefaultBasedColorType, File } from '@red/domain';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { DossiersService } from '@services/dossiers/dossiers.service'; import { DossiersService } from '@services/dossiers/dossiers.service';
import { DefaultColorsService } from '@services/entity-services/default-colors.service'; import { DefaultColorsService } from '@services/entity-services/default-colors.service';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';

View File

@ -25,7 +25,7 @@
</div> </div>
<div class="user-column cell"> <div class="user-column cell">
<redaction-initials-avatar [user]="file.assignee" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="file.assignee" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -9,7 +9,7 @@
</div> </div>
<div class="user"> <div class="user">
<redaction-initials-avatar [user]="file.assignee"></redaction-initials-avatar> <iqser-initials-avatar [user]="file.assignee"></iqser-initials-avatar>
</div> </div>
</div> </div>

View File

@ -27,7 +27,7 @@ import { workflowFileStatusTranslations } from '@translations/file-status-transl
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { DossiersDialogService } from '../shared-dossiers/services/dossiers-dialog.service'; import { DossiersDialogService } from '../shared-dossiers/services/dossiers-dialog.service';
import { annotationFilterChecker, RedactionFilterSorter } from '../../utils'; import { annotationFilterChecker, RedactionFilterSorter } from '../../utils';
import { workloadTranslations } from '@translations/workload-translations'; import { workloadTranslations } from '@translations/workload-translations';
@ -38,7 +38,7 @@ import dayjs from 'dayjs';
import { DefaultColorsService } from '@services/entity-services/default-colors.service'; import { DefaultColorsService } from '@services/entity-services/default-colors.service';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
@Injectable() @Injectable()
export class ConfigService { export class ConfigService {

View File

@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
import { IqserHelpModeModule, IqserIconsModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DossierOverviewScreenComponent } from './screen/dossier-overview-screen.component'; import { DossierOverviewScreenComponent } from './screen/dossier-overview-screen.component';
import { DossierOverviewBulkActionsComponent } from './components/bulk-actions/dossier-overview-bulk-actions.component'; import { DossierOverviewBulkActionsComponent } from './components/bulk-actions/dossier-overview-bulk-actions.component';
@ -46,6 +46,7 @@ const routes: Routes = [
IqserIconsModule, IqserIconsModule,
TranslateModule, TranslateModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule,
], ],
}) })
export class DossierOverviewModule {} export class DossierOverviewModule {}

View File

@ -31,7 +31,7 @@ import { NavigationEnd, Router } from '@angular/router';
import { FileAttributesService } from '@services/entity-services/file-attributes.service'; import { FileAttributesService } from '@services/entity-services/file-attributes.service';
import { ConfigService } from '../config.service'; import { ConfigService } from '../config.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { FilesMapService } from '@services/files/files-map.service'; import { FilesMapService } from '@services/files/files-map.service';
import { FilesService } from '@services/files/files.service'; import { FilesService } from '@services/files/files.service';
import { BulkActionsService } from '../services/bulk-actions.service'; import { BulkActionsService } from '../services/bulk-actions.service';

View File

@ -1,11 +1,11 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { CircleButtonTypes, List, ScrollableParentView, ScrollableParentViews, StatusBarConfig } from '@iqser/common-ui'; import { CircleButtonTypes, List, ScrollableParentView, ScrollableParentViews, StatusBarConfig } from '@iqser/common-ui';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { Dossier, DossierStats, File } from '@red/domain'; import { Dossier, DossierStats, File } from '@red/domain';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service'; import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
import { LongPressEvent } from '@shared/directives/long-press.directive'; import { LongPressEvent } from '@shared/directives/long-press.directive';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { FilesMapService } from '@services/files/files-map.service'; import { FilesMapService } from '@services/files/files-map.service';
import { ReanalysisService } from '@services/reanalysis.service'; import { ReanalysisService } from '@services/reanalysis.service';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';

View File

@ -12,7 +12,7 @@
</div> </div>
<div class="cell user-column"> <div class="cell user-column">
<redaction-initials-avatar [user]="dossier.ownerId" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="dossier.ownerId" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell status-container"> <div class="cell status-container">

View File

@ -11,8 +11,8 @@ import {
} from '@red/domain'; } from '@red/domain';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { workflowFileStatusTranslations } from '@translations/file-status-translations'; import { workflowFileStatusTranslations } from '@translations/file-status-translations';
import { dossierMemberChecker, dossierStateChecker, RedactionFilterSorter } from '../../utils'; import { dossierMemberChecker, dossierStateChecker, RedactionFilterSorter } from '../../utils';
import { workloadTranslations } from '@translations/workload-translations'; import { workloadTranslations } from '@translations/workload-translations';

View File

@ -1,6 +1,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { IqserHelpModeModule, IqserIconsModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component'; import { DossiersListingScreenComponent } from './screen/dossiers-listing-screen.component';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
@ -40,6 +40,7 @@ const routes: Routes = [
IqserIconsModule, IqserIconsModule,
TranslateModule, TranslateModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule,
], ],
}) })
export class DossiersListingModule {} export class DossiersListingModule {}

View File

@ -7,7 +7,7 @@ import { ConfigService } from '../config.service';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { SharedDialogService } from '@shared/services/dialog.service'; import { SharedDialogService } from '@shared/services/dialog.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';

View File

@ -13,7 +13,7 @@ import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { FilterService, HasScrollbarDirective, IqserEventTarget } from '@iqser/common-ui'; import { FilterService, HasScrollbarDirective, IqserEventTarget } from '@iqser/common-ui';
import { MultiSelectService } from '../../services/multi-select.service'; import { MultiSelectService } from '../../services/multi-select.service';
import { AnnotationReferencesService } from '../../services/annotation-references.service'; import { AnnotationReferencesService } from '../../services/annotation-references.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { ViewModeService } from '../../services/view-mode.service'; import { ViewModeService } from '../../services/view-mode.service';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject } from 'rxjs';
import { TextHighlightsGroup } from '@red/domain'; import { TextHighlightsGroup } from '@red/domain';

View File

@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnInit, ViewChild } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Input, OnInit, ViewChild } from '@angular/core';
import { Dossier, File, IComment } from '@red/domain'; import { Dossier, File, IComment } from '@red/domain';
import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { InputWithActionComponent, LoadingService, trackByFactory, ContextComponent } from '@iqser/common-ui'; import { InputWithActionComponent, LoadingService, trackByFactory, ContextComponent } from '@iqser/common-ui';
import { firstValueFrom, Observable } from 'rxjs'; import { firstValueFrom, Observable } from 'rxjs';

View File

@ -6,13 +6,13 @@
<span *ngIf="file.isUnderReview || file.isUnderApproval">{{ 'by' | translate }}:</span> <span *ngIf="file.isUnderReview || file.isUnderApproval">{{ 'by' | translate }}:</span>
</div> </div>
<redaction-initials-avatar <iqser-initials-avatar
*ngIf="(editingReviewer$ | async) === false" *ngIf="(editingReviewer$ | async) === false"
[id]="'assignee'" [id]="'assignee'"
[tooltipPosition]="'below'" [tooltipPosition]="'below'"
[user]="file.assignee" [user]="file.assignee"
[withName]="!!file.assignee" [withName]="!!file.assignee"
></redaction-initials-avatar> ></iqser-initials-avatar>
<div <div
(click)="editingReviewer$.next(true)" (click)="editingReviewer$.next(true)"

View File

@ -4,7 +4,7 @@ import { List, LoadingService, Toaster } from '@iqser/common-ui';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { workflowFileStatusTranslations } from '@translations/file-status-translations'; import { workflowFileStatusTranslations } from '@translations/file-status-translations';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { FilesService } from '@services/files/files.service'; import { FilesService } from '@services/files/files.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, combineLatest, combineLatestWith, firstValueFrom, Observable, switchMap } from 'rxjs'; import { BehaviorSubject, combineLatest, combineLatestWith, firstValueFrom, Observable, switchMap } from 'rxjs';

View File

@ -12,13 +12,15 @@
<ng-container *ngIf="permissionsService.isApprover(dossier) && !!file.lastReviewer"> <ng-container *ngIf="permissionsService.isApprover(dossier) && !!file.lastReviewer">
<div class="vertical-line"></div> <div class="vertical-line"></div>
<div class="all-caps-label mr-16 ml-8"> <div class="all-caps-label mr-16 ml-8">
{{ 'file-preview.last-assignee' | translate: { status: file.workflowStatus } }} {{ 'file-preview.last-assignee' | translate: { status: file.workflowStatus } }}
</div> </div>
<redaction-initials-avatar
<iqser-initials-avatar
[user]="file.isApproved ? file.lastApprover : file.lastReviewer" [user]="file.isApproved ? file.lastApprover : file.lastReviewer"
[withName]="true" [withName]="true"
></redaction-initials-avatar> ></iqser-initials-avatar>
</ng-container> </ng-container>
<div class="vertical-line"></div> <div class="vertical-line"></div>

View File

@ -23,7 +23,7 @@ import { AnnotationProcessingService } from './services/annotation-processing.se
import { Dictionary, File, ViewMode, ViewModes } from '@red/domain'; import { Dictionary, File, ViewMode, ViewModes } from '@red/domain';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { combineLatest, firstValueFrom, from, of, pairwise } from 'rxjs'; import { combineLatest, firstValueFrom, from, of, pairwise } from 'rxjs';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { byId, byPage, download, handleFilterDelta, hasChanges } from '../../utils'; import { byId, byPage, download, handleFilterDelta, hasChanges } from '../../utils';
import { FilesService } from '@services/files/files.service'; import { FilesService } from '@services/files/files.service';
import { FileManagementService } from '@services/files/file-management.service'; import { FileManagementService } from '@services/files/file-management.service';

View File

@ -1,6 +1,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { IqserHelpModeModule, IqserIconsModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserIconsModule, IqserUsersModule } from '@iqser/common-ui';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
@ -94,6 +94,7 @@ const components = [
TranslateModule, TranslateModule,
OverlayModule, OverlayModule,
IqserHelpModeModule, IqserHelpModeModule,
IqserUsersModule,
], ],
providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard], providers: [FilePreviewDialogService, ManualRedactionService, DocumentUnloadedGuard],
}) })

View File

@ -5,7 +5,7 @@ import { RedactionLogEntry } from '@models/file/redaction-log.entry';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { FilePreviewStateService } from './file-preview-state.service'; import { FilePreviewStateService } from './file-preview-state.service';
import { ViewedPagesService } from '@services/files/viewed-pages.service'; import { ViewedPagesService } from '@services/files/viewed-pages.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service';
import { map, switchMap, tap, withLatestFrom } from 'rxjs/operators'; import { map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';

View File

@ -8,7 +8,7 @@ import {
ManualRedactionEntryWrapper, ManualRedactionEntryWrapper,
} from '@models/file/manual-redaction-entry.wrapper'; } from '@models/file/manual-redaction-entry.wrapper';
import { AnnotationDrawService } from '../../pdf-viewer/services/annotation-draw.service'; import { AnnotationDrawService } from '../../pdf-viewer/services/annotation-draw.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { BASE_HREF_FN, BaseHrefFn, shareDistinctLast } from '@iqser/common-ui'; import { BASE_HREF_FN, BaseHrefFn, shareDistinctLast } from '@iqser/common-ui';
import { toPosition } from '../utils/pdf-calculation.utils'; import { toPosition } from '../utils/pdf-calculation.utils';
import { MultiSelectService } from './multi-select.service'; import { MultiSelectService } from './multi-select.service';

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Core } from '@pdftron/webviewer'; import { Core } from '@pdftron/webviewer';
import { hexToRgb } from '@utils/functions'; import { hexToRgb } from '@utils/functions';
import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { AnnotationWrapper } from '@models/file/annotation.wrapper';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { RedactionLogService } from '@services/files/redaction-log.service'; import { RedactionLogService } from '@services/files/redaction-log.service';
import { IRectangle, ISectionGrid, ISectionRectangle } from '@red/domain'; import { IRectangle, ISectionGrid, ISectionRectangle } from '@red/domain';

View File

@ -5,7 +5,7 @@ import { fromEvent, merge, Observable } from 'rxjs';
import { debounceTime, filter, map, tap } from 'rxjs/operators'; import { debounceTime, filter, map, tap } from 'rxjs/operators';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { PdfViewer } from './pdf-viewer.service'; import { PdfViewer } from './pdf-viewer.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { log, shareLast } from '@iqser/common-ui'; import { log, shareLast } from '@iqser/common-ui';
import { stopAndPrevent, stopAndPreventIfNotAllowed } from '../utils/functions'; import { stopAndPrevent, stopAndPreventIfNotAllowed } from '../utils/functions';
import { RotationType, RotationTypes } from '@red/domain'; import { RotationType, RotationTypes } from '@red/domain';

View File

@ -12,7 +12,7 @@ import { Rgb } from '../utils/types';
import { asList } from '../utils/functions'; import { asList } from '../utils/functions';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { LicenseService } from '@services/license.service'; import { LicenseService } from '@services/license.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import TextTool = Core.Tools.TextTool; import TextTool = Core.Tools.TextTool;
import Annotation = Core.Annotations.Annotation; import Annotation = Core.Annotations.Annotation;
import TextHighlightAnnotation = Core.Annotations.TextHighlightAnnotation; import TextHighlightAnnotation = Core.Annotations.TextHighlightAnnotation;

View File

@ -1,5 +1,5 @@
import { Inject, Injectable } from '@angular/core'; import { Inject, Injectable } from '@angular/core';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { HeaderElements } from '../../file-preview/utils/constants'; import { HeaderElements } from '../../file-preview/utils/constants';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';

View File

@ -57,7 +57,7 @@
</div> </div>
<div class="cell"> <div class="cell">
<redaction-initials-avatar [user]="item.assignee" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="item.assignee" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

View File

@ -32,7 +32,7 @@ import { PlatformSearchService } from '@services/entity-services/platform-search
import { FeaturesService } from '@services/features.service'; import { FeaturesService } from '@services/features.service';
import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service'; import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
@Component({ @Component({
templateUrl: './search-screen.component.html', templateUrl: './search-screen.component.html',

View File

@ -2,13 +2,13 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { SearchScreenComponent } from './search-screen/search-screen.component'; import { SearchScreenComponent } from './search-screen/search-screen.component';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { CommonUiModule } from '@iqser/common-ui'; import { CommonUiModule, IqserUsersModule } from '@iqser/common-ui';
import { SharedModule } from '@shared/shared.module'; import { SharedModule } from '@shared/shared.module';
const routes = [{ path: '', component: SearchScreenComponent }]; const routes = [{ path: '', component: SearchScreenComponent }];
@NgModule({ @NgModule({
declarations: [SearchScreenComponent], declarations: [SearchScreenComponent],
imports: [CommonModule, RouterModule.forChild(routes), CommonUiModule, SharedModule], imports: [CommonModule, RouterModule.forChild(routes), CommonUiModule, SharedModule, IqserUsersModule],
}) })
export class SearchModule {} export class SearchModule {}

View File

@ -21,8 +21,8 @@ import {
Toaster, Toaster,
} from '@iqser/common-ui'; } from '@iqser/common-ui';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { LongPressEvent } from '@shared/directives/long-press.directive'; import { LongPressEvent } from '@shared/directives/long-press.directive';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { FileManagementService } from '@services/files/file-management.service'; import { FileManagementService } from '@services/files/file-management.service';

View File

@ -1,6 +1,6 @@
import { Component, Inject } from '@angular/core'; import { Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { LoadingService, Toaster } from '@iqser/common-ui'; import { LoadingService, Toaster } from '@iqser/common-ui';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Dossier, File, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain'; import { Dossier, File, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';

View File

@ -13,7 +13,7 @@ import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component'; import { EditDossierTeamComponent } from './edit-dossier-team/edit-dossier-team.component';
import { PermissionsService } from '@services/permissions.service'; import { PermissionsService } from '@services/permissions.service';
import { getCurrentUser } from '@services/user.service'; import { getCurrentUser } from '@users/user.service';
import { DossiersService } from '@services/dossiers/dossiers.service'; import { DossiersService } from '@services/dossiers/dossiers.service';
import { dossiersServiceProvider } from '@services/entity-services/dossiers.service.provider'; import { dossiersServiceProvider } from '@services/entity-services/dossiers.service.provider';

View File

@ -2,7 +2,7 @@
<div class="iqser-input-group w-300 required"> <div class="iqser-input-group w-300 required">
<mat-form-field floatLabel="always"> <mat-form-field floatLabel="always">
<mat-label>{{ 'assign-dossier-owner.dialog.single-user' | translate }}</mat-label> <mat-label>{{ 'assign-dossier-owner.dialog.single-user' | translate }}</mat-label>
<mat-select formControlName="owner" id="editDossierOwnerSelect" (valueChange)="onChangeOwner($event)"> <mat-select (valueChange)="onChangeOwner($event)" formControlName="owner" id="editDossierOwnerSelect">
<mat-option *ngFor="let userId of ownersSelectOptions; let index = index" [id]="'mat-option-' + index" [value]="userId"> <mat-option *ngFor="let userId of ownersSelectOptions; let index = index" [id]="'mat-option-' + index" [value]="userId">
{{ userId | name }} {{ userId | name }}
</mat-option> </mat-option>
@ -38,7 +38,7 @@
></redaction-team-members> ></redaction-team-members>
<ng-container *ngIf="!(selectedReviewers$ | async)?.length"> <ng-container *ngIf="!(selectedReviewers$ | async)?.length">
<div id="no-reviewers-label" class="info mt-4">{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}</div> <div class="info mt-4" id="no-reviewers-label">{{ 'assign-dossier-owner.dialog.no-reviewers' | translate }}</div>
</ng-container> </ng-container>
<ng-container *ngIf="hasOwner"> <ng-container *ngIf="hasOwner">
@ -58,7 +58,8 @@
[class.selected]="isMemberSelected(userId)" [class.selected]="isMemberSelected(userId)"
[id]="'member-' + index" [id]="'member-' + index"
> >
<redaction-initials-avatar [user]="userId" [withName]="true" size="large"></redaction-initials-avatar> <iqser-initials-avatar [user]="userId" [withName]="true" size="large"></iqser-initials-avatar>
<div class="actions"> <div class="actions">
<div <div
(click)="!disabled && toggleApprover(userId, $event)" (click)="!disabled && toggleApprover(userId, $event)"
@ -68,10 +69,10 @@
<iqser-round-checkbox <iqser-round-checkbox
[active]="isApprover(userId)" [active]="isApprover(userId)"
[disabled]="disabled" [disabled]="disabled"
class="mr-8"
[id]="'round-checkbox-' + index" [id]="'round-checkbox-' + index"
> class="mr-8"
</iqser-round-checkbox> ></iqser-round-checkbox>
<span <span
[translate]="disabled ? 'assign-dossier-owner.dialog.approver' : 'assign-dossier-owner.dialog.make-approver'" [translate]="disabled ? 'assign-dossier-owner.dialog.approver' : 'assign-dossier-owner.dialog.make-approver'"
></span> ></span>

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';
import { Dossier, IDossierRequest } from '@red/domain'; import { Dossier, IDossierRequest } from '@red/domain';
import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { EditDossierSaveResult, EditDossierSectionInterface } from '../edit-dossier-section.interface';

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain'; import { Dossier, File, User, WorkflowFileStatus, WorkflowFileStatuses } from '@red/domain';
import { DossiersDialogService } from './dossiers-dialog.service'; import { DossiersDialogService } from './dossiers-dialog.service';
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';

View File

@ -13,7 +13,7 @@ import { EditDossierTeamComponent } from './dialogs/edit-dossier-dialog/edit-dos
import { DateColumnComponent } from './components/date-column/date-column.component'; import { DateColumnComponent } from './components/date-column/date-column.component';
import { FileAssignService } from './services/file-assign.service'; import { FileAssignService } from './services/file-assign.service';
import { DictionaryDetailsDialogComponent } from './dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component'; import { DictionaryDetailsDialogComponent } from './dialogs/edit-dossier-dialog/dictionary/dictionary-details-dialog/dictionary-details-dialog.component';
import { IqserHelpModeModule } from '@iqser/common-ui'; import { IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui';
const components = [ const components = [
FileActionsComponent, FileActionsComponent,
@ -32,6 +32,6 @@ const services = [DossiersDialogService, FileAssignService];
declarations: [...components, ...dialogs], declarations: [...components, ...dialogs],
exports: [...components, ...dialogs], exports: [...components, ...dialogs],
providers: [...services], providers: [...services],
imports: [CommonModule, SharedModule, IqserHelpModeModule], imports: [CommonModule, SharedModule, IqserHelpModeModule, IqserUsersModule],
}) })
export class SharedDossiersModule {} export class SharedDossiersModule {}

View File

@ -29,5 +29,5 @@
</div> </div>
<ng-template #avatar let-userId="userId"> <ng-template #avatar let-userId="userId">
<redaction-initials-avatar [user]="userId" [withName]="true" color="gray"></redaction-initials-avatar> <iqser-initials-avatar [user]="userId" [withName]="true" color="gray"></iqser-initials-avatar>
</ng-template> </ng-template>

View File

@ -1,5 +1,5 @@
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { User } from '@red/domain'; import { User } from '@red/domain';
import { List } from '@iqser/common-ui'; import { List } from '@iqser/common-ui';

View File

@ -1,5 +0,0 @@
<button [class.overlay]="showDot" [iqserHelpMode]="'open_usermenu'" mat-button>
<redaction-initials-avatar [user]="userService.currentUser$ | async" [withName]="true"></redaction-initials-avatar>
<mat-icon svgIcon="iqser:arrow-down"></mat-icon>
</button>
<div *ngIf="showDot" class="dot"></div>

View File

@ -1,25 +0,0 @@
@use 'common-buttons';
@use 'variables';
:host {
@extend .user-button;
min-width: fit-content;
button {
padding: 0 10px 0 5px;
mat-icon {
width: 14px;
}
}
&[aria-expanded='true'] {
button {
background: rgba(variables.$primary, 0.1);
}
}
.dot {
left: -2px;
}
}

View File

@ -1,15 +0,0 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { UserService } from '@services/user.service';
@Component({
selector: 'redaction-user-button',
templateUrl: './user-button.component.html',
styleUrls: ['./user-button.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class UserButtonComponent {
@Input() userId: string;
@Input() showDot = false;
constructor(readonly userService: UserService) {}
}

View File

@ -1,6 +1,6 @@
import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'; import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { Debounce, List, OnChange } from '@iqser/common-ui'; import { Debounce, List, OnChange } from '@iqser/common-ui';
import { UserPreferenceService } from '@services/user-preference.service'; import { UserPreferenceService } from '@users/user-preference.service';
import { EditorThemeService } from '@services/editor-theme.service'; import { EditorThemeService } from '@services/editor-theme.service';
import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions; import IStandaloneEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;
import ICodeEditor = monaco.editor.ICodeEditor; import ICodeEditor = monaco.editor.ICodeEditor;

View File

@ -1,12 +0,0 @@
<div *ngIf="_user && _user | name: namePipeOptions as userName" class="wrapper">
<div
[className]="colorClass + ' oval ' + size + (hasBorder ? ' border' : '')"
[matTooltipPosition]="tooltipPosition"
[matTooltip]="userName"
>
{{ _user | name: { showInitials: true } }}
</div>
<div *ngIf="withName" [class.disabled]="disabled" class="clamp-1 username" id="avatarUsername">
{{ userName }}
</div>
</div>

View File

@ -1,17 +0,0 @@
.wrapper {
display: flex;
align-items: center;
width: fit-content;
.username {
margin-left: 6px;
&.disabled {
opacity: 0.7;
}
}
}
.border {
border: 1px solid var(--iqser-grey-7);
}

View File

@ -1,81 +0,0 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';
import { UserService } from '@services/user.service';
import { User } from '@red/domain';
import { TranslateService } from '@ngx-translate/core';
import { NamePipeOptions } from '@shared/pipes/name.pipe';
@Component({
selector: 'redaction-initials-avatar',
templateUrl: './initials-avatar.component.html',
styleUrls: ['./initials-avatar.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class InitialsAvatarComponent implements OnInit, OnChanges {
@Input() color = 'lightgray';
@Input() size: 'small' | 'large' = 'small';
@Input() withName = false;
@Input() showYou = false;
@Input() tooltipPosition: 'below' | 'above' = 'above';
@Input() defaultValue = this._translateService.instant('initials-avatar.unassigned');
colorClass: string;
namePipeOptions: NamePipeOptions;
constructor(private readonly _userService: UserService, private readonly _translateService: TranslateService) {}
_user: User;
@Input()
set user(user: User | string) {
if (typeof user === 'string') {
this._user = this._userService.find(user);
} else {
this._user = user;
}
}
get hasBorder(): boolean {
return !!this._user && !this.isCurrentUser && this._user.isManager;
}
get disabled(): boolean {
return this._user && !this._isSystemUser && !this._user.hasAnyRole;
}
get isCurrentUser(): boolean {
return this._userService.currentUser.id === this._user?.id;
}
private get _colorClass() {
if (this.isCurrentUser) {
return 'primary-white';
}
if (this.disabled) {
return 'inactive';
}
if (this.color.includes('-')) {
return this.color;
}
return `${this.color}-dark`;
}
private get _isSystemUser() {
return this._user?.id?.toLowerCase() === 'system';
}
ngOnChanges(): void {
if (this._isSystemUser) {
this.colorClass = 'primary-white primary';
return;
}
this.colorClass = this._colorClass;
}
ngOnInit(): void {
this.namePipeOptions = {
showYou: this.showYou,
defaultValue: this.defaultValue,
};
}
}

View File

@ -6,7 +6,7 @@
[class.large-spacing]="largeSpacing" [class.large-spacing]="largeSpacing"
class="member" class="member"
> >
<redaction-initials-avatar [user]="userId" color="gray" size="large"></redaction-initials-avatar> <iqser-initials-avatar [user]="userId" color="gray" size="large"></iqser-initials-avatar>
<div *ngIf="canRemoveMember(userId)" class="remove"> <div *ngIf="canRemoveMember(userId)" class="remove">
<mat-icon svgIcon="iqser:close"></mat-icon> <mat-icon svgIcon="iqser:close"></mat-icon>

View File

@ -1,6 +1,6 @@
import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'; import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';
import { CircleButtonTypes, List } from '@iqser/common-ui'; import { CircleButtonTypes, List } from '@iqser/common-ui';
import { UserService } from '@services/user.service'; import { UserService } from '@users/user.service';
import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service'; import { DossiersDialogService } from '../../../shared-dossiers/services/dossiers-dialog.service';
@Component({ @Component({

View File

@ -1,59 +0,0 @@
import { Pipe, PipeTransform } from '@angular/core';
import { UserService } from '@services/user.service';
import { TranslateService } from '@ngx-translate/core';
import { User } from '@red/domain';
function getInitials(name: string) {
if (name.toLowerCase() === 'system') {
return 'SY';
}
const splittedName = name.split(' ').filter(value => value !== ' ' && value !== '');
return splittedName
.filter((_value, index) => index < 2)
.map(str => str[0])
.join('');
}
export interface NamePipeOptions {
showYou?: boolean;
showInitials?: boolean;
defaultValue?: string;
}
@Pipe({
name: 'name',
})
export class NamePipe implements PipeTransform {
private readonly _defaultOptions: NamePipeOptions = { defaultValue: this._translateService.instant('unknown') };
constructor(private readonly _userService: UserService, private readonly _translateService: TranslateService) {}
transform(value?: User | string, options = this._defaultOptions): string {
let name;
if (!value && options?.showInitials) {
return '?';
}
name = this._getName(value) || options?.defaultValue;
if (options?.showYou && this._isCurrentUser(value)) {
name = `${name} (${this._translateService.instant('initials-avatar.you')})`;
}
return options?.showInitials ? getInitials(name) : name;
}
private _isCurrentUser(user: User | string): boolean {
const userId = typeof user === 'string' ? user : user.id;
return this._userService.currentUser.id === userId;
}
private _getName(user: User | string): string | undefined {
if (!user) {
return undefined;
}
return typeof user === 'string' ? this._userService.getName(user) : user.name;
}
}

View File

@ -1,16 +1,14 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { InitialsAvatarComponent } from './components/initials-avatar/initials-avatar.component';
import { ScrollingModule } from '@angular/cdk/scrolling'; import { ScrollingModule } from '@angular/cdk/scrolling';
import { PaginationComponent } from './components/pagination/pagination.component'; import { PaginationComponent } from './components/pagination/pagination.component';
import { FileDownloadBtnComponent } from './components/buttons/file-download-btn/file-download-btn.component'; import { FileDownloadBtnComponent } from './components/buttons/file-download-btn/file-download-btn.component';
import { UserButtonComponent } from './components/buttons/user-button/user-button.component';
import { MatConfigModule } from '../mat-config/mat-config.module'; import { MatConfigModule } from '../mat-config/mat-config.module';
import { IconsModule } from '../icons/icons.module'; import { IconsModule } from '../icons/icons.module';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AnnotationIconComponent } from './components/annotation-icon/annotation-icon.component'; import { AnnotationIconComponent } from './components/annotation-icon/annotation-icon.component';
import { DonutChartComponent } from './components/donut-chart/donut-chart.component'; import { DonutChartComponent } from './components/donut-chart/donut-chart.component';
import { CommonUiModule, IqserHelpModeModule } from '@iqser/common-ui'; import { CommonUiModule, IqserHelpModeModule, IqserUsersModule } from '@iqser/common-ui';
import { SelectComponent } from './components/select/select.component'; import { SelectComponent } from './components/select/select.component';
import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive'; import { NavigateLastDossiersScreenDirective } from './directives/navigate-last-dossiers-screen.directive';
import { DictionaryManagerComponent } from './components/dictionary-manager/dictionary-manager.component'; import { DictionaryManagerComponent } from './components/dictionary-manager/dictionary-manager.component';
@ -18,7 +16,6 @@ import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
import { AssignUserDropdownComponent } from './components/assign-user-dropdown/assign-user-dropdown.component'; import { AssignUserDropdownComponent } from './components/assign-user-dropdown/assign-user-dropdown.component';
import { DatePipe } from './pipes/date.pipe'; import { DatePipe } from './pipes/date.pipe';
import { LongPressDirective } from './directives/long-press.directive'; import { LongPressDirective } from './directives/long-press.directive';
import { NamePipe } from './pipes/name.pipe';
import { TypeFilterComponent } from './components/type-filter/type-filter.component'; import { TypeFilterComponent } from './components/type-filter/type-filter.component';
import { TeamMembersComponent } from './components/team-members/team-members.component'; import { TeamMembersComponent } from './components/team-members/team-members.component';
import { EditorComponent } from './components/editor/editor.component'; import { EditorComponent } from './components/editor/editor.component';
@ -38,10 +35,9 @@ import { AddEditEntityComponent } from './components/add-edit-entity/add-edit-en
import { ColorPickerModule } from 'ngx-color-picker'; import { ColorPickerModule } from 'ngx-color-picker';
import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component'; import { WatermarkSelectorComponent } from './components/dossier-watermark-selector/watermark-selector.component';
const buttons = [FileDownloadBtnComponent, UserButtonComponent]; const buttons = [FileDownloadBtnComponent];
const components = [ const components = [
InitialsAvatarComponent,
PaginationComponent, PaginationComponent,
AnnotationIconComponent, AnnotationIconComponent,
DonutChartComponent, DonutChartComponent,
@ -64,7 +60,7 @@ const components = [
...buttons, ...buttons,
]; ];
const utils = [DatePipe, NamePipe, NavigateLastDossiersScreenDirective, LongPressDirective]; const utils = [DatePipe, NavigateLastDossiersScreenDirective, LongPressDirective];
const services = [SharedDialogService]; const services = [SharedDialogService];
@ -72,7 +68,16 @@ const modules = [MatConfigModule, ScrollingModule, IconsModule, FormsModule, Rea
@NgModule({ @NgModule({
declarations: [...components, ...utils, EditorComponent], declarations: [...components, ...utils, EditorComponent],
imports: [CommonModule, CommonUiModule, ...modules, MonacoEditorModule, TranslateModule, RouterModule, IqserHelpModeModule], imports: [
CommonModule,
CommonUiModule,
...modules,
MonacoEditorModule,
TranslateModule,
RouterModule,
IqserHelpModeModule,
IqserUsersModule,
],
exports: [...modules, CommonUiModule, ...components, ...utils], exports: [...modules, CommonUiModule, ...components, ...utils],
providers: [ providers: [
...services, ...services,

View File

@ -16,7 +16,7 @@
</div> </div>
<div class="cell user-column"> <div class="cell user-column">
<redaction-initials-avatar [user]="item.ownerId" [withName]="true"></redaction-initials-avatar> <iqser-initials-avatar [user]="item.ownerId" [withName]="true"></iqser-initials-avatar>
</div> </div>
<div class="cell"> <div class="cell">

Some files were not shown because too many files have changed in this diff Show More