Skip to content

Commit

Permalink
Story #13560: link from ingest to archive search
Browse files Browse the repository at this point in the history
  • Loading branch information
marob committed Feb 4, 2025
1 parent 3323a68 commit a42b050
Show file tree
Hide file tree
Showing 20 changed files with 164 additions and 173 deletions.
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
<div class="row">
<div class="arrow">
<button class="btn-circle" (click)="toggleShow()">
<i class="material-icons" [@rotateAnimation]="isShown ? 'collapse' : 'expand'">keyboard_arrow_down</i>
</button>
</div>

<div *ngIf="isShown" class="row container-fluid">
<div *ngFor="let event of events; let i = index">
<app-vitam-event-display [event]="event"></app-vitam-event-display>
</div>
</div>
<div class="text-right">
<button class="btn-circle" (click)="toggleShow()">
<i class="material-icons" [@rotateAnimation]="isShown ? 'collapse' : 'expand'">keyboard_arrow_down</i>
</button>
</div>

@if (isShown) {
@for (event of events; track event) {
<app-vitam-event-display [event]="event"></app-vitam-event-display>
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.arrow {
margin-inline-start: auto;
.text-right {
text-align: right;
}
.btn-circle {
background-color: var(--vitamui-primary);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,77 +1,61 @@
<div *ngIf="ingest">
<br />
<div class="row">
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.DEPOSIT_ID' | translate }}</label>
<div>{{ ingest?.obIdIn }}</div>
</div>
</div>
<div *ngIf="ingest" class="gap-2">
<vitamui-common-data [label]="'INGEST_DETAIL.DEPOSIT_ID' | translate" [value]="ingest.obIdIn"></vitamui-common-data>
<vitamui-common-data [label]="'INGEST_DETAIL.NAME' | translate" [value]="evDetDataDeflated?.EvDetailReq"></vitamui-common-data>
<vitamui-common-data
[label]="'INGEST_DETAIL.OPERATION_ID' | translate"
[value]="ingest.id"
[valueUrl]="getOpiUrl$() | async"
[valueTooltip]="'INGEST_DETAIL.OPERATION_ID_TOOLTIP' | translate"
[canCopyValue]="true"
></vitamui-common-data>

<div class="row">
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.NAME' | translate }}</label>
<div>{{ evDetDataDeflated?.EvDetailReq }}</div>
</div>
</div>
<div class="row gap-2">
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.START_DATE' | translate"
[value]="ingest?.evDateTime | dateTime: 'dd/MM/yyyy'"
></vitamui-common-data>
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.END_DATE' | translate"
[value]="ingestEndDate(ingest) | dateTime: 'dd/MM/yyyy'"
></vitamui-common-data>

<div class="row">
<div class="col-12 mb-3">
<label>{{ 'INGEST_DETAIL.OPERATION_ID' | translate }}</label>
<div>{{ ingest?.id }}</div>
</div>
<br />
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.PRODUCT_SERVICE' | translate"
[value]="agIdExtDeflated?.originatingAgency"
></vitamui-common-data>
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.VERSATILE_SERVICE' | translate"
[value]="agIdExtDeflated?.submissionAgency"
></vitamui-common-data>

<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.START_DATE' | translate }}</label>
<div>{{ ingest?.evDateTime | dateTime: 'dd/MM/yyyy' }}</div>
</div>
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.END_DATE' | translate }}</label>
<div>{{ ingestEndDate(ingest) | dateTime: 'dd/MM/yyyy' }}</div>
</div>
<br />
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.PRODUCT_SERVICE' | translate }}</label>
<div>{{ agIdExtDeflated?.originatingAgency }}</div>
</div>
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.VERSATILE_SERVICE' | translate }}</label>
<div>{{ agIdExtDeflated?.submissionAgency }}</div>
</div>
<br />
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.ENTRY_CONTRACT' | translate }}</label>
<div>{{ evDetDataDeflated?.ArchivalAgreement }}</div>
</div>
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.ARCHIVING_PROFIL' | translate }}</label>
<div>{{ evDetDataDeflated?.ArchivalProfile }}</div>
</div>
<br />
<div class="col-6 mb-3">
<label>{{ 'INGEST_DETAIL.STATUS' | translate }}</label>
<div>{{ evDetDataDeflated?.LegalStatus }}</div>
</div>
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.ENTRY_CONTRACT' | translate"
[value]="evDetDataDeflated?.ArchivalAgreement"
></vitamui-common-data>
<vitamui-common-data
class="col-6"
[label]="'INGEST_DETAIL.ARCHIVING_PROFIL' | translate"
[value]="evDetDataDeflated?.ArchivalProfile"
></vitamui-common-data>
</div>

<div class="row">
<div class="col-12 mb-3">
<label>{{ 'INGEST_DETAIL.MESSAGE' | translate }}</label>
<div class="vitamui-snack-bar-content" [ngSwitch]="getIngestStatus(ingest)">
<div *ngSwitchCase="'OK'" class="text success bold">{{ ingestMessage(ingest) }}</div>
<div *ngSwitchCase="'WARNING'" class="text warning bold">{{ ingestMessage(ingest) }}</div>
<div *ngSwitchCase="'KO'" class="text danger bold">{{ ingestMessage(ingest) }}</div>
<div *ngSwitchCase="'FATAL'" class="text danger bold">{{ ingestMessage(ingest) }}</div>
<div *ngSwitchCase="'En cours'" class="text light bold">{{ ingestMessage(ingest) }}</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 mb-3">
<label>{{ 'INGEST_DETAIL.OPERATION_DETAILS' | translate }}</label>
<div *ngIf="hasEvent()">
<app-ingest-event-detail [ingest]="ingest"></app-ingest-event-detail>
</div>
<vitamui-common-data [label]="'INGEST_DETAIL.STATUS' | translate" [value]="evDetDataDeflated?.LegalStatus"></vitamui-common-data>

<vitamui-common-data
[label]="'INGEST_DETAIL.MESSAGE' | translate"
[value]="ingestMessage()"
[valueCss]="'bold ' + getIngestStatusClass()"
></vitamui-common-data>

<div class="w-100">
<label class="text caption bold primary">{{ 'INGEST_DETAIL.OPERATION_DETAILS' | translate }}</label>
<div *ngIf="hasEvent()">
<app-ingest-event-detail [ingest]="ingest"></app-ingest-event-detail>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -1,24 +0,0 @@
@import 'variables/colors';

label {
font-size: 12px;
font-weight: 700;
color: var(--vitamui-primary);
font-family: Mulish;
box-sizing: inherit;
visibility: visible;
}

label + div {
font-size: 16px;
color: var(--vitamui-grey-900);
font-weight: 700;
display: block;
box-sizing: inherit;
display: block;
font-family: Mulish;
visibility: visible;
}
.status {
font-weight: bold;
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { ApplicationService } from 'vitamui-library';
import { VitamUICommonTestModule } from 'vitamui-library/testing';

import { IngestInformationTabComponent } from './ingest-information-tab.component';
import { of } from 'rxjs';

describe('IngestInformationTabComponent', () => {
let component: IngestInformationTabComponent;
Expand All @@ -50,6 +52,7 @@ describe('IngestInformationTabComponent', () => {
declarations: [IngestInformationTabComponent],
imports: [TranslateModule.forRoot(), VitamUICommonTestModule],
schemas: [NO_ERRORS_SCHEMA],
providers: [{ provide: ApplicationService, useValue: { getUrl$: () => of('') } }],
}).compileComponents();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,15 @@ import {
EvDetDataDeflateJson,
ingestHasEvents,
ingestLastEvent,
IngestStatus,
ingestStatus,
LogbookOperation,
} from '../../../models/logbook-event.interface';

import { ApplicationId, ApplicationService } from 'vitamui-library';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Component({
selector: 'app-ingest-information-tab',
templateUrl: './ingest-information-tab.component.html',
Expand All @@ -54,7 +59,7 @@ export class IngestInformationTabComponent implements OnChanges {
evDetDataDeflated: EvDetDataDeflateJson;
agIdExtDeflated: AgIdExtDeflateJson;

constructor() {}
constructor(private applicationService: ApplicationService) {}

ngOnChanges() {
this.evDetDataDeflated = this.deflateJsonEvDetData(this.ingest);
Expand All @@ -65,16 +70,26 @@ export class IngestInformationTabComponent implements OnChanges {
return ingestHasEvents(this.ingest);
}

ingestMessage(ingest: LogbookOperation): string {
return ingestHasEvents(ingest) ? ingestLastEvent(ingest).outMessg : ingest.outMessg;
ingestMessage(): string {
return ingestHasEvents(this.ingest) ? ingestLastEvent(this.ingest).outMessg : this.ingest.outMessg;
}

ingestEndDate(ingest: LogbookOperation): string {
return ingestHasEvents(ingest) ? ingestLastEvent(ingest).evDateTime : ingest.evDateTime;
}

getIngestStatus(ingest: LogbookOperation): string {
return ingestStatus(ingest);
getIngestStatusClass(): string {
switch (ingestStatus(this.ingest)) {
case IngestStatus.OK:
return 'success';
case IngestStatus.WARNING:
return 'warning';
case IngestStatus.KO:
case IngestStatus.FATAL:
return 'danger';
case IngestStatus.IN_PROGRESS:
return 'light';
}
}

private deflateJsonEvDetData(element: LogbookOperation): EvDetDataDeflateJson {
Expand All @@ -100,4 +115,10 @@ export class IngestInformationTabComponent implements OnChanges {
}
return element.agIdExt;
}

getOpiUrl$(): Observable<string> {
return this.applicationService
.getUrl$({ appId: ApplicationId.ARCHIVE_SEARCH_APP })
.pipe(map((appUrl) => `${appUrl}?guidopi=${this.ingest.id}`));
}
}
1 change: 1 addition & 0 deletions ui/ui-frontend/projects/ingest/src/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
"DETAILS": "Informations",
"DEPOSIT_ID": "The deposit identifier",
"OPERATION_ID": "The operation Identifier",
"OPERATION_ID_TOOLTIP": "Access deposit archives",
"NAME": "Entitled",
"START_DATE": "Deposit start date",
"END_DATE": "Deposit end date",
Expand Down
1 change: 1 addition & 0 deletions ui/ui-frontend/projects/ingest/src/assets/i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
"DETAILS": "Informations",
"DEPOSIT_ID": "Identifiant du message",
"OPERATION_ID": "Identifiant de l’opération",
"OPERATION_ID_TOOLTIP": "Accéder aux archives du versement",
"NAME": "Commentaire(s)",
"START_DATE": "Début de versement",
"END_DATE": "Fin de versement",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ describe('LogbookManagementOperationListComponent', () => {
fixture = TestBed.createComponent(LogbookManagementOperationListComponent);
component = fixture.componentInstance;
fixture.detectChanges();

component.searchOperationsList({});
});

it('should create', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,10 @@ export class ApplicationService {
});
}

public getUrl$({ appId, tenantIdentifier }: { appId: ApplicationId; tenantIdentifier?: number }): Observable<string> {
return this.getAppById(appId).pipe(map((app) => this.getApplicationUrl(app, tenantIdentifier)));
}

public getApplicationUrl(app: Application, tenantIdentifier?: number): string {
if (!tenantIdentifier) {
tenantIdentifier = this.tenantService.getSelectedTenant().identifier;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
<label class="text caption bold primary">{{ label | empty }}</label>
<div *ngIf="!isArray(value)" class="text medium">{{ value | empty }}</div>
<ul *ngIf="isArray(value)">
<li *ngFor="let item of value" class="text medium">{{ item | empty }}</li>
</ul>
@if (isArray(value)) {
<ul>
<li *ngFor="let item of value" class="text medium">{{ item | empty }}</li>
</ul>
} @else {
<div>
<span class="text medium" [class]="valueCss" [vitamuiTooltip]="valueTooltip" [outline]="true" vitamuiTooltipClass="secondary">
@if (valueUrl) {
<a [href]="valueUrl">{{ value | empty }}</a>
} @else {
{{ value | empty }}
}
</span>
<span
*ngIf="canCopyValue"
class="button-copy"
(click)="copyToClipboard(value)"
[vitamuiTooltip]="'COMMON.COPY' | translate"
[outline]="true"
vitamuiTooltipClass="secondary"
>
<i class="vitamui-icon vitamui-icon-content-copy"></i>
</span>
</div>
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,7 @@ ul {
li {
overflow-wrap: anywhere;
}

a {
color: var(--vitamui-secondary);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,32 @@
* knowledge of the CeCILL-C license and that you accept its terms.
*/
import { Component, Input } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PipesModule } from '../../pipes/pipes.module';
import { CommonTooltipModule } from '../common-tooltip/common-tooltip.module';
import { Clipboard } from '@angular/cdk/clipboard';
import { TranslateModule } from '@ngx-translate/core';

@Component({
selector: 'vitamui-common-data',
templateUrl: './data.component.html',
styleUrls: ['./data.component.scss'],
standalone: true,
imports: [CommonModule, PipesModule, CommonTooltipModule, TranslateModule],
})
export class DataComponent {
@Input() label: string;
@Input() value: string | string[];
@Input() valueCss?: string;
@Input() valueUrl?: string;
@Input() valueTooltip?: string;
@Input() canCopyValue = false;

constructor(private clipboard: Clipboard) {}

copyToClipboard(text: string) {
this.clipboard.copy(text);
}

readonly isArray = Array.isArray;
}
Loading

0 comments on commit a42b050

Please sign in to comment.