diff --git a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.html b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.html index b8e38d6590b3a4d718ee90d7ae60fe5c0e8f4b49..80194727368301a38715e0f8fb29a527d7a9eae0 100644 --- a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.html +++ b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.html @@ -11,6 +11,17 @@ <mat-spinner style="margin:auto;"></mat-spinner> </div> <mat-card *ngIf="!loading" class="card-app-content"> + <div style="display: flex;"> + <mat-form-field> + <mat-label>{{lang.category_id}}</mat-label> + <mat-select name="category" [(ngModel)]="indexingModel.category" [placeholder]="lang.category_id" + required> + <mat-option *ngFor="let category of categoriesList;let i=index" [value]="category.id"> + {{category.label}} + </mat-option> + </mat-select> + </mat-form-field> + </div> <div style="display: flex;"> <div style="flex:1;"> <mat-form-field class="indexingModelLabel" appearance="outline"> @@ -26,7 +37,8 @@ </div> <mat-tab-group> <mat-tab [label]="lang.indexingForm"> - <app-indexing-form #indexingForm [indexingFormId]="indexingModel.id" [admin]="true"></app-indexing-form> + <app-indexing-form #indexingForm [indexingFormId]="indexingModel.id" [admin]="true"> + </app-indexing-form> <div class="col-md-12 text-center"> <button mat-raised-button color="primary" (click)="onSubmit()" [disabled]="(!indexingForm.isModified() && !isModified()) || indexingModel.label === ''">{{creationMode ? lang.save : lang.update}}</button> diff --git a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts index 408935517bb991c4cfd581c33d9cc1a3b61727dd..9d9fbbfdd753a312d13966b0962fa31f743bbac1 100644 --- a/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts +++ b/src/frontend/app/administration/indexingModel/indexing-model-administration.component.ts @@ -6,7 +6,7 @@ import { HeaderService } from '../../../service/header.service'; import { MatDialog } from '@angular/material/dialog'; import { MatSidenav } from '@angular/material/sidenav'; import { AppService } from '../../../service/app.service'; -import { tap, catchError, finalize } from 'rxjs/operators'; +import { tap, catchError, finalize, exhaustMap } from 'rxjs/operators'; import { of } from 'rxjs'; import { SortPipe } from '../../../plugins/sorting.pipe'; import { IndexingFormComponent } from '../../indexation/indexing-form/indexing-form.component'; @@ -37,6 +37,7 @@ export class IndexingModelAdministrationComponent implements OnInit { indexingModel: any = { id: 0, label: '', + category: 'incoming', default: false, owner: 0, private: false @@ -81,7 +82,9 @@ export class IndexingModelAdministrationComponent implements OnInit { } ]; - availableCustomFields: any[] = [] + availableCustomFields: any[] = []; + + categoriesList: any []; constructor( public http: HttpClient, @@ -101,11 +104,21 @@ export class IndexingModelAdministrationComponent implements OnInit { this.route.params.subscribe((params) => { if (typeof params['id'] == "undefined") { + this.creationMode = true; + this.headerService.setHeader(this.lang.indexingModelCreation); + this.http.get('../../rest/categories').pipe( + tap((data: any) => { + this.categoriesList = data.categories; + }), + finalize(() => this.loading = false), + catchError((err: any) => { + this.notify.handleErrors(err); + return of(false); + }) + ).subscribe(); this.indexingModelClone = JSON.parse(JSON.stringify(this.indexingModel)); - this.creationMode = true; - this.loading = false; } else { this.creationMode = false; @@ -119,6 +132,10 @@ export class IndexingModelAdministrationComponent implements OnInit { this.indexingModelClone = JSON.parse(JSON.stringify(this.indexingModel)); }), + exhaustMap(() => this.http.get('../../rest/categories')), + tap((data: any) => { + this.categoriesList = data.categories; + }), finalize(() => this.loading = false), catchError((err: any) => { this.notify.handleErrors(err); diff --git a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.html b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.html index b1fdc0d6ebdb54df8677c9d57cd6468df1eb34bb..f04f5079ce39fd07f11401e20b42e6c7ae5ac36d 100644 --- a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.html +++ b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.html @@ -33,20 +33,26 @@ </div> </div> <mat-table #table [dataSource]="dataSource" matSort matSortActive="label" matSortDirection="asc"> + <ng-container matColumnDef="category"> + <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.category_id}}</mat-header-cell> + <mat-cell *matCellDef="let element"> {{lang[element.category]}} </mat-cell> + </ng-container> <ng-container matColumnDef="label"> - <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.label}}</mat-header-cell> - <mat-cell *matCellDef="let element"> {{element.label}} </mat-cell> + <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">{{lang.label}}</mat-header-cell> + <mat-cell *matCellDef="let element" style="flex:2"> {{element.label}} </mat-cell> </ng-container> <ng-container matColumnDef="private"> <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.perimeter}}</mat-header-cell> <mat-cell *matCellDef="let element"> - <span [ngClass]="{'dataLabelWarn': element.private, 'dataLabelPrimary': !element.private}" class="label">{{element.private ? lang.private : lang.public}}</span> + <span [ngClass]="{'dataLabelWarn': element.private, 'dataLabelPrimary': !element.private}" + class="label">{{element.private ? lang.private : lang.public}}</span> </mat-cell> </ng-container> <ng-container matColumnDef="default"> <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.default}}</mat-header-cell> <mat-cell *matCellDef="let element"> - <span [ngClass]="{'dataLabelWarn': !element.default, 'dataLabelPrimary': element.default}" class="label">{{element.default ? lang.yes : lang.no}}</span> + <span [ngClass]="{'dataLabelWarn': !element.default, 'dataLabelPrimary': element.default}" + class="label">{{element.default ? lang.yes : lang.no}}</span> </mat-cell> </ng-container> <ng-container matColumnDef="actions"> diff --git a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts index 90a5f18d8f49a08dcccd6447e7ce2e1c794354e4..c5928e931ded149b0026b45ddbd9f1f277cf0a85 100644 --- a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts +++ b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts @@ -33,7 +33,7 @@ export class IndexingModelsAdministrationComponent implements OnInit { loading: boolean = false; - displayedColumns = ['label', 'private', 'default', 'actions']; + displayedColumns = ['category', 'label', 'private', 'default', 'actions']; dataSource = new MatTableDataSource(this.indexingModels); diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.html b/src/frontend/app/indexation/indexing-form/indexing-form.component.html index 714dd11e6c11ecd00678bdef3b8dcbb7fc4e1d10..d63b2850bd5207bfc093d3830ded9d18a6599039 100644 --- a/src/frontend/app/indexation/indexing-form/indexing-form.component.html +++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.html @@ -3,6 +3,7 @@ </div> <ng-container *ngIf="!loading"> <div *ngIf="!adminMode" style="display: flex;align-items: center;justify-content: flex-end;"> + <span class="categoryLabel">{{lang[currentCategory]}}</span> <button mat-icon-button> <mat-icon color="primary" class="far fa-star" style="font-size: 20px;"></mat-icon> </button> diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.scss b/src/frontend/app/indexation/indexing-form/indexing-form.component.scss index 2a5d8652106a765e3c3b319e3be843eecbea645d..c1f5dcb8021d4d4c3c5054dd87327a38766b826c 100644 --- a/src/frontend/app/indexation/indexing-form/indexing-form.component.scss +++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.scss @@ -386,4 +386,9 @@ .checkboxInput { display: block; +} + +.categoryLabel { + color: $secondary; + font-weight: bold; } \ No newline at end of file diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts index 5b62cc55dd7130219f6e7ebf537f39d566a082c9..d0595e58cf9ec032aac37de2fd8cf23674ef37e1 100644 --- a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts +++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts @@ -31,16 +31,6 @@ export class IndexingFormComponent implements OnInit { fieldCategories: any[] = ['mail', 'contact', 'process', 'classement']; indexingModelsCore: any[] = [ - { - identifier: 'category_id', - label: this.lang.category_id, - unit: 'mail', - type: 'select', - system: true, - mandatory: true, - default_value: '', - values: [] - }, { identifier: 'doctype', label: this.lang.doctype, @@ -165,6 +155,8 @@ export class IndexingFormComponent implements OnInit { arrFormControl: any = {}; + currentCategory: string = ''; + constructor( public http: HttpClient, private notify: NotificationService, @@ -486,6 +478,8 @@ export class IndexingFormComponent implements OnInit { }), exhaustMap((data) => this.http.get("../../rest/indexingModels/" + indexModelId)), tap((data: any) => { + + this.currentCategory = data.indexingModel.category; let fieldExist: boolean; if (data.indexingModel.fields.length === 0) { this.fieldCategories.forEach(element => {