From 403476ab4b4e88f911220cd555ef0de7abc5fa7f Mon Sep 17 00:00:00 2001 From: Florent POITTEVIN <poittevin.florent@gmail.com> Date: Thu, 4 Feb 2021 17:16:00 +0100 Subject: [PATCH] feat: 262 dedicated component for access level with embargo on deposit document file list --- package-lock.json | 6 +-- package.json | 2 +- .../deposit-document-file.container.ts | 28 +---------- ...ess-level-with-embargo.presentational.html | 20 ++++++++ ...ess-level-with-embargo.presentational.scss | 14 ++++++ ...ccess-level-with-embargo.presentational.ts | 46 +++++++++++++++++++ .../shared/enums/data-table-component.enum.ts | 1 + .../helpers/data-table-component.helper.ts | 26 +++++++++++ src/app/shared/shared.module.ts | 2 + 9 files changed, 115 insertions(+), 30 deletions(-) create mode 100644 src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.html create mode 100644 src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.scss create mode 100644 src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.ts diff --git a/package-lock.json b/package-lock.json index acedb42dc..122f950bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14836,9 +14836,9 @@ } }, "solidify-frontend": { - "version": "1.1.18", - "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-1.1.18.tgz", - "integrity": "sha512-p+2z11gj9VAgBFYzRNMrtYOsURi4/W0+y4KUX5LEvBSsjhqbi6kXSQJG7zKMoI7eZRjoDWDt7Pyi+m3fCcVk0g==", + "version": "1.1.19", + "resolved": "https://nexus.unige.ch/repository/npm-all/solidify-frontend/-/solidify-frontend-1.1.19.tgz", + "integrity": "sha512-S2FS4tWkAkj7N5dIuVgg1k/rLJ60hGEcY+TlXv56ivHCspsVe+9pUcBbZYRoSHcDoZ8fBjuDAe0L8OkkBkVsiQ==", "requires": { "tslib": "^2.0.0" } diff --git a/package.json b/package.json index 1e7678a96..4036bd59c 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "normalize.css": "8.0.1", "patch-package": "6.2.2", "rxjs": "6.6.0", - "solidify-frontend": "1.1.18", + "solidify-frontend": "1.1.19", "streamsaver": "2.0.4", "sync-pom-version-to-package": "1.5.0", "ts-key-enum": "2.0.3", diff --git a/src/app/features/deposit/components/containers/deposit-document-file/deposit-document-file.container.ts b/src/app/features/deposit/components/containers/deposit-document-file/deposit-document-file.container.ts index 6d399e548..f2c6523ee 100644 --- a/src/app/features/deposit/components/containers/deposit-document-file/deposit-document-file.container.ts +++ b/src/app/features/deposit/components/containers/deposit-document-file/deposit-document-file.container.ts @@ -206,13 +206,12 @@ export class DepositDocumentFileContainer extends SharedAbstractRoutable impleme protected readonly _securityService: SecurityService /*@Inject(FILE_VISUALIZERS) private readonly _fileVisualizers: AbstractFileVisualizer[]*/) { super(); + this._defineColumns(); } ngOnInit(): void { super.ngOnInit(); - this._defineColumns(); - if (this.canEdit) { this._createPollingListenerForFileReady(); } @@ -241,30 +240,7 @@ export class DepositDocumentFileContainer extends SharedAbstractRoutable impleme isFilterable: true, translate: true, filterEnum: Enums.DocumentFile.AccessLevelEnumTranslate, - component: DataTableComponentHelper.get(DataTableComponentEnum.accessLevel), - }, - { - field: "embargoAccessLevel", - header: LabelTranslateEnum.embargoAccessLevel, - type: DataTableFieldTypeEnum.singleSelect, - order: OrderEnum.none, - filterableField: "embargoAccessLevel" as any, - sortableField: "embargoAccessLevel" as any, - isSortable: true, - isFilterable: true, - translate: true, - filterEnum: Enums.DocumentFile.AccessLevelEnumTranslate, - component: DataTableComponentHelper.get(DataTableComponentEnum.accessLevel), - }, - { - field: "embargoEndDate", - header: LabelTranslateEnum.embargoEndDate, - type: DataTableFieldTypeEnum.date, - order: OrderEnum.none, - filterableField: "embargoEndDate" as any, - sortableField: "embargoEndDate" as any, - isSortable: true, - isFilterable: false, + component: DataTableComponentHelper.get(DataTableComponentEnum.accessLevelWithEmbargo), }, { field: "documentFileType.value", diff --git a/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.html b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.html new file mode 100644 index 000000000..4cd078a08 --- /dev/null +++ b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.html @@ -0,0 +1,20 @@ +<ng-template [ngIf]="embargoAccessLevel | isNotNullNorUndefined"> + <aou-shared-access-level [accessLevel]="embargoAccessLevel" + [withTooltip]="withTooltip" + [size]="size" + ></aou-shared-access-level> + <solidify-icon [iconName]="iconNameEnum.next" + class="xs" + ></solidify-icon> +</ng-template> + +<aou-shared-access-level [accessLevel]="accessLevel" + [withTooltip]="withTooltip" + [size]="size" +></aou-shared-access-level> + +<span *ngIf="(embargoAccessLevel | isNotNullNorUndefined) && (embargoEndDate | isNotNullNorUndefined)" + class="date" +> + {{dateUtil.convertDateToDateString(embargoEndDate)}} +</span> diff --git a/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.scss b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.scss new file mode 100644 index 000000000..037f54b80 --- /dev/null +++ b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.scss @@ -0,0 +1,14 @@ +:host { + display: grid; + grid-template-columns: min-content min-content min-content max-content; + align-items: center; + grid-gap: 4px; + + .date { + padding-left: 5px; + } +} + +:host(:not(.have-embargo)) { + grid-template-columns: 1fr; +} diff --git a/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.ts b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.ts new file mode 100644 index 000000000..ef752f288 --- /dev/null +++ b/src/app/shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational.ts @@ -0,0 +1,46 @@ +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + HostBinding, + Input, +} from "@angular/core"; +import {Enums} from "@enums"; +import {SharedAbstractPresentational} from "@shared/components/presentationals/shared-abstract/shared-abstract.presentational"; +import {IconNameEnum} from "@shared/enums/icon-name.enum"; +import { + DateUtil, + EnumUtil, +} from "solidify-frontend"; + +@Component({ + selector: "aou-shared-access-level-with-embargo", + templateUrl: "./shared-access-level-with-embargo.presentational.html", + styleUrls: ["./shared-access-level-with-embargo.presentational.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class SharedAccessLevelWithEmbargoPresentational extends SharedAbstractPresentational { + @Input() + accessLevel: Enums.DocumentFile.AccessLevelEnum; + + @Input() + @HostBinding("class.have-embargo") + embargoAccessLevel: Enums.DocumentFile.AccessLevelEnum; + + @Input() + embargoEndDate: Date; + + @Input() + size: string = "xlg"; + + @Input() + withTooltip: boolean = false; + + get dateUtil(): typeof DateUtil { + return DateUtil; + } + + constructor(private readonly _changeDetector: ChangeDetectorRef) { + super(); + } +} diff --git a/src/app/shared/enums/data-table-component.enum.ts b/src/app/shared/enums/data-table-component.enum.ts index 130fe7d39..ef0bf6f42 100644 --- a/src/app/shared/enums/data-table-component.enum.ts +++ b/src/app/shared/enums/data-table-component.enum.ts @@ -4,6 +4,7 @@ enum DataTableComponentExtendEnum { status = "status", logo = "logo", accessLevel = "accessLevel", + accessLevelWithEmbargo = "accessLevelWithEmbargo", documentFileQuickStatus = "documentFileQuickStatus", } diff --git a/src/app/shared/helpers/data-table-component.helper.ts b/src/app/shared/helpers/data-table-component.helper.ts index 0c219bf01..d10a666b6 100644 --- a/src/app/shared/helpers/data-table-component.helper.ts +++ b/src/app/shared/helpers/data-table-component.helper.ts @@ -1,4 +1,5 @@ import {SharedLogoWrapperContainer} from "@shared/components/containers/shared-logo-wrapper/shared-logo-wrapper.container"; +import {SharedAccessLevelWithEmbargoPresentational} from "@shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational"; import {SharedAccessLevelPresentational} from "@shared/components/presentationals/shared-access-level/shared-access-level.presentational"; import {SharedDocumentFileQuickStatusPresentational} from "@shared/components/presentationals/shared-document-file-quick-status/shared-document-file-quick-status.presentational"; import {DataTableComponentEnum} from "@shared/enums/data-table-component.enum"; @@ -10,6 +11,7 @@ import { StatusPresentational, ValueType, } from "solidify-frontend"; +import {DataTableComponentInput} from "../../../../../Solidify-Frontend/projects/solidify-frontend"; export class DataTableComponentHelper<TResource> extends DataTableComponentPartialHelper { static listComponent: MappingObject<DataTableComponent> | any = { @@ -75,6 +77,30 @@ export class DataTableComponentHelper<TResource> extends DataTableComponentParti }, ], }, + [DataTableComponentEnum.accessLevelWithEmbargo]: { + componentType: SharedAccessLevelWithEmbargoPresentational, + inputs: [ + { + key: "accessLevel", + valueType: ValueType.isColData, + }, + { + key: "withTooltip", + valueType: ValueType.isStatic, + staticValue: true, + }, + { + key: "embargoAccessLevel", + valueType: ValueType.isOtherColData, + dataCol: "embargoAccessLevel", + } as DataTableComponentInput, + { + key: "embargoEndDate", + valueType: ValueType.isOtherColData, + dataCol: "embargoEndDate", + } as DataTableComponentInput, + ], + }, [DataTableComponentEnum.documentFileQuickStatus]: { componentType: SharedDocumentFileQuickStatusPresentational, inputs: [ diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 9a163b155..543d550f3 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -30,6 +30,7 @@ import {SharedImageUploadWrapperContainer} from "@shared/components/containers/s import {SharedLogoWrapperContainer} from "@shared/components/containers/shared-logo-wrapper/shared-logo-wrapper.container"; import {SharedUserguideSidebarContainer} from "@shared/components/containers/shared-userguide-sidebar/shared-userguide-sidebar.container"; import {SharedUploadImageDialog} from "@shared/components/dialogs/shared-upload-image/shared-upload-image.dialog"; +import {SharedAccessLevelWithEmbargoPresentational} from "@shared/components/presentationals/shared-access-level-with-embargo/shared-access-level-with-embargo.presentational"; import {SharedAccessLevelPresentational} from "@shared/components/presentationals/shared-access-level/shared-access-level.presentational"; import {SharedAvatarPresentational} from "@shared/components/presentationals/shared-avatar/shared-avatar.presentational"; import {SharedDocumentFileQuickStatusPresentational} from "@shared/components/presentationals/shared-document-file-quick-status/shared-document-file-quick-status.presentational"; @@ -78,6 +79,7 @@ const contents = []; const presentationals = [ SharedAvatarPresentational, SharedAccessLevelPresentational, + SharedAccessLevelWithEmbargoPresentational, SharedTocPresentational, SharedErrorPresentational, SharedPersonFormPresentational, -- GitLab