From 54da3c1d86c7df439f53209affc09d80f9c3dc27 Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Mon, 1 Jul 2019 16:48:14 +0200 Subject: [PATCH] Style link on the app Add dialog to see detail of file Style file tree --- .../components/footer/footer.component.scss | 7 +- .../language-selector.component.scss | 8 + .../main-toolbar-mobile.component.scss | 8 + .../main-toolbar/main-toolbar.component.scss | 8 + .../file-tree/file-tree.component.html | 24 +- .../file-tree/file-tree.component.scss | 33 ++ .../file-tree/file-tree.component.ts | 19 +- src/app/deposit/deposit.module.ts | 6 +- .../file-detail/file-detail.dialog.html | 109 ++++++ .../file-detail/file-detail.dialog.scss | 24 ++ .../dialogs/file-detail/file-detail.dialog.ts | 27 ++ src/app/material.module.ts | 11 +- .../breadcrumb/breadcrumb.component.scss | 10 - src/assets/i18n/de.json | 319 ++++++++++-------- src/assets/i18n/en.json | 319 ++++++++++-------- src/assets/i18n/fr.json | 23 ++ src/environments/environment.ts | 2 +- src/sass/abstracts/_variables.scss | 1 + src/sass/main.scss | 27 +- src/sass/themes/dlcm-theme.scss | 1 + src/sass/themes/yareta-theme.scss | 1 + 21 files changed, 669 insertions(+), 318 deletions(-) create mode 100644 src/app/deposit/dialogs/file-detail/file-detail.dialog.html create mode 100644 src/app/deposit/dialogs/file-detail/file-detail.dialog.scss create mode 100644 src/app/deposit/dialogs/file-detail/file-detail.dialog.ts diff --git a/src/app/components/footer/footer.component.scss b/src/app/components/footer/footer.component.scss index c18d8a956..fc906c2dd 100644 --- a/src/app/components/footer/footer.component.scss +++ b/src/app/components/footer/footer.component.scss @@ -26,7 +26,10 @@ $height: 40px; font-weight: bold; &:hover { - color: white; - text-decoration: underline; + color: $white; + } + + &:before { + background-color: $white; } } diff --git a/src/app/components/language-selector/language-selector.component.scss b/src/app/components/language-selector/language-selector.component.scss index 9c0892acc..bb229a67e 100644 --- a/src/app/components/language-selector/language-selector.component.scss +++ b/src/app/components/language-selector/language-selector.component.scss @@ -7,3 +7,11 @@ .is-active { color: $primary-color; } + +a { + color: $white; + + &:hover { + color: $primary-color; + } +} diff --git a/src/app/components/main-toolbar-mobile/main-toolbar-mobile.component.scss b/src/app/components/main-toolbar-mobile/main-toolbar-mobile.component.scss index d4cb3e324..d3b04c161 100644 --- a/src/app/components/main-toolbar-mobile/main-toolbar-mobile.component.scss +++ b/src/app/components/main-toolbar-mobile/main-toolbar-mobile.component.scss @@ -9,6 +9,14 @@ color: $white; } +a { + color: $white; + + &:hover { + color: $primary-color; + } +} + .unige-logo { max-height: 50px; } diff --git a/src/app/components/main-toolbar/main-toolbar.component.scss b/src/app/components/main-toolbar/main-toolbar.component.scss index 90686701d..44053c96e 100644 --- a/src/app/components/main-toolbar/main-toolbar.component.scss +++ b/src/app/components/main-toolbar/main-toolbar.component.scss @@ -10,6 +10,14 @@ color: $white; } +a { + color: $white; + + &:hover { + color: $primary-color; + } +} + .logo { align-self: center; } diff --git a/src/app/deposit/components/file-tree/file-tree.component.html b/src/app/deposit/components/file-tree/file-tree.component.html index c6b424136..307d63e72 100644 --- a/src/app/deposit/components/file-tree/file-tree.component.html +++ b/src/app/deposit/components/file-tree/file-tree.component.html @@ -6,8 +6,26 @@ <mat-tree-node *matTreeNodeDef="let node" matTreeNodeToggle> <li class="mat-tree-node"> <!-- use a disabled button to provide padding for tree leaf --> - <button mat-icon-button disabled></button> - <a href="{{getSourceData(node)}}" target="_blank">{{node.name}}</a> - {{getStatus(node)}} + <!-- <button mat-icon-button disabled></button>--> + <mat-card class="file"> + <span> + <fa-icon class="ico-file" icon="file"></fa-icon> + <a href="{{getSourceData(node)}}" target="_blank">{{node.name}}</a> + </span> + <div class="right-part"> + <span *ngIf="isInError(node)" + [matTooltip]="'deposit.file.tree.error' | translate" + class="status"> + <fa-icon icon="exclamation-triangle"></fa-icon> + </span> + <button mat-icon-button + class="more" + (click)="openDetailDialog(node)" + [matTooltip]="'deposit.file.tree.details' | translate"> + <fa-icon icon="ellipsis-v"></fa-icon> + </button> + </div> + </mat-card> </li> </mat-tree-node> @@ -17,7 +35,7 @@ <div class="mat-tree-node"> <button mat-icon-button matTreeNodeToggle [attr.aria-label]="'toggle ' + node.name"> - <fa-icon [icon]="treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'"></fa-icon> + <fa-icon [icon]="treeControl.isExpanded(node) ? 'folder-open' : 'folder'"></fa-icon> </button> {{node.name}} </div> diff --git a/src/app/deposit/components/file-tree/file-tree.component.scss b/src/app/deposit/components/file-tree/file-tree.component.scss index 6ceec9236..c74d85490 100644 --- a/src/app/deposit/components/file-tree/file-tree.component.scss +++ b/src/app/deposit/components/file-tree/file-tree.component.scss @@ -15,3 +15,36 @@ $line-item-size: 30px; line-height: $line-item-size; } } + +.file { + width: 100%; + padding: 5px 8px; + margin: 4px 1px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.ico-file { + padding-right: 10px; +} + +.right-part { + width: 60px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.status { + padding-top: 2px; + color: $red; +} + +a { + position: initial; + + &:before { + bottom: 0; + } +} diff --git a/src/app/deposit/components/file-tree/file-tree.component.ts b/src/app/deposit/components/file-tree/file-tree.component.ts index 498d829e8..3f3efdd33 100644 --- a/src/app/deposit/components/file-tree/file-tree.component.ts +++ b/src/app/deposit/components/file-tree/file-tree.component.ts @@ -1,6 +1,7 @@ import {NestedTreeControl} from "@angular/cdk/tree"; import {ChangeDetectionStrategy, Component, Input} from "@angular/core"; -import {MatTreeNestedDataSource} from "@angular/material"; +import {MatDialog, MatTreeNestedDataSource} from "@angular/material"; +import {FileDetailDialog} from "@app/deposit/dialogs/file-detail/file-detail.dialog"; import {DepositDataFileModel} from "@app/deposit/models/deposit-data-file.model"; import {StringUtil} from "@app/shared/utils/string.util"; @@ -22,6 +23,8 @@ export class FileTreeComponent { @Input() readonly: boolean; + readonly inErrorStatus: string = "IN_ERROR"; + @Input() set listDepositDataFile(val: DepositDataFileModel[]) { this._listDepositDataFile = val; @@ -41,7 +44,7 @@ export class FileTreeComponent { private readonly SEPARATOR = "/"; private readonly ROOT = this.SEPARATOR; - constructor() { + constructor(public dialog: MatDialog) { } adaptListDepositDataFileToTree(): void { @@ -133,4 +136,16 @@ export class FileTreeComponent { getSourceData(node: FileNode): string { return node.file.sourceData; } + + isInError(node: FileNode): boolean { + return node.file.status === this.inErrorStatus; + } + + openDetailDialog(node: FileNode) { + const dialogRef = this.dialog.open(FileDetailDialog, { + data: node.file, + height: "400px", + width: "600px", + }); + } } diff --git a/src/app/deposit/deposit.module.ts b/src/app/deposit/deposit.module.ts index 3884cf537..ba4a3717a 100644 --- a/src/app/deposit/deposit.module.ts +++ b/src/app/deposit/deposit.module.ts @@ -4,16 +4,17 @@ import {FileContainer} from "@app/deposit/containers/file/file.container"; import {DepositRoutingModule} from "@app/deposit/deposit-routing.module"; import {DepositState} from "@app/deposit/deposit.state"; import {DeleteDialog} from "@app/deposit/dialogs/delete/delete.dialog"; +import {FileDetailDialog} from "@app/deposit/dialogs/file-detail/file-detail.dialog"; import {DepositService} from "@app/deposit/services/deposit.service"; import {EditView} from "@app/deposit/views/edit/edit.view"; import {ListView} from "@app/deposit/views/list/list.view"; import {SharedModule} from "@app/shared/shared.module"; import {TranslateModule} from "@ngx-translate/core"; import {NgxsModule} from "@ngxs/store"; +import {FileTreeComponent} from "./components/file-tree/file-tree.component"; +import {FileUploadComponent} from "./components/file-upload/file-upload.component"; import {CreateView} from "./views/create/create.view"; import {DetailView} from "./views/detail/detail.view"; -import { FileTreeComponent } from './components/file-tree/file-tree.component'; -import { FileUploadComponent } from './components/file-upload/file-upload.component'; const views = [ ListView, @@ -26,6 +27,7 @@ const containers = [ ]; const dialogs = [ DeleteDialog, + FileDetailDialog, ]; const components = [ FormComponent, diff --git a/src/app/deposit/dialogs/file-detail/file-detail.dialog.html b/src/app/deposit/dialogs/file-detail/file-detail.dialog.html new file mode 100644 index 000000000..d5d6f33e4 --- /dev/null +++ b/src/app/deposit/dialogs/file-detail/file-detail.dialog.html @@ -0,0 +1,109 @@ +<h1 mat-dialog-title>{{'deposit.file.details.title' | translate:paramMessage}}</h1> +<mat-list> + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.createDate' | translate}}</span> + <span class="value">{{data.creation.when | date}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.status' | translate}}</span> + <span class="value">{{data.status}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.statusMessage' | translate}}</span> + <span class="value">{{data.statusMessage}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.category' | translate}}</span> + <span class="value">{{data.dataCategory}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.type' | translate}}</span> + <span class="value">{{data.dataType}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.complianceLevel' | translate}}</span> + <span class="value">{{data.complianceLevel}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.smartSize' | translate}}</span> + <span class="value">{{data.smartSize}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.available' | translate}}</span> + <span class="value">{{data.available}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.fileFormat' | translate}}</span> + <span class="value">{{data.fileFormat}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.virusCheck' | translate}}</span> + <span class="value">{{data.virusCheck}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.initialPath' | translate}}</span> + <span class="value">{{data.initialPath}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.fileSize' | translate}}</span> + <span class="value">{{data.fileSize}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> + + <mat-list-item> + <div class="item-content"> + <span class="key">{{'deposit.file.detail.data.checksums' | translate}}</span> + <span class="value">{{data.checksums | json}}</span> + </div> + </mat-list-item> + <mat-divider></mat-divider> +</mat-list> +<div mat-dialog-actions> + <button mat-button cdkFocusInitial (click)="close()">{{'deposit.file.details.close' | translate}}</button> +</div> diff --git a/src/app/deposit/dialogs/file-detail/file-detail.dialog.scss b/src/app/deposit/dialogs/file-detail/file-detail.dialog.scss new file mode 100644 index 000000000..29df397b5 --- /dev/null +++ b/src/app/deposit/dialogs/file-detail/file-detail.dialog.scss @@ -0,0 +1,24 @@ +@import "abstracts/variables"; +@import "abstracts/mixins"; + +.item-content { + display: flex; + justify-content: flex-end; + width: 100%; + flex-wrap: wrap; + + @include respond-to('sm') { + justify-content: space-between; + } +} + +.key { + flex-basis: 100%; + color: $light-grey; + + @include respond-to('sm') { + flex-basis: auto; + color: initial; + } +} + diff --git a/src/app/deposit/dialogs/file-detail/file-detail.dialog.ts b/src/app/deposit/dialogs/file-detail/file-detail.dialog.ts new file mode 100644 index 000000000..3a6606d22 --- /dev/null +++ b/src/app/deposit/dialogs/file-detail/file-detail.dialog.ts @@ -0,0 +1,27 @@ +import {ChangeDetectionStrategy, Component, Inject, OnInit} from "@angular/core"; +import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material"; +import {DepositDataFileModel} from "@app/deposit/models/deposit-data-file.model"; +import {BaseDirective} from "@app/shared/directives/base.directive"; + +@Component({ + selector: "dlcm-file-detail-dialog", + templateUrl: "./file-detail.dialog.html", + styleUrls: ["./file-detail.dialog.scss"], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class FileDetailDialog extends BaseDirective implements OnInit { + paramMessage = {name: ""}; + + constructor(protected dialogRef: MatDialogRef<FileDetailDialog>, + @Inject(MAT_DIALOG_DATA) public data: DepositDataFileModel) { + super(); + } + + ngOnInit() { + this.paramMessage.name = this.data.fileName; + } + + close() { + this.dialogRef.close(); + } +} diff --git a/src/app/material.module.ts b/src/app/material.module.ts index 6f7b5a533..44eea37c9 100644 --- a/src/app/material.module.ts +++ b/src/app/material.module.ts @@ -1,10 +1,14 @@ import {NgModule} from "@angular/core"; import { MatButtonModule, + MatCardModule, MatCheckboxModule, MatDatepickerModule, MatDialogModule, + MatDividerModule, + MatExpansionModule, MatInputModule, + MatListModule, MatNativeDateModule, MatPaginatorModule, MatProgressSpinnerModule, @@ -12,7 +16,8 @@ import { MatSnackBarModule, MatTabsModule, MatToolbarModule, - MatTooltipModule, MatTreeModule, + MatTooltipModule, + MatTreeModule, } from "@angular/material"; const modules = [ @@ -23,6 +28,7 @@ const modules = [ MatButtonModule, MatSnackBarModule, MatDialogModule, + MatDividerModule, MatDatepickerModule, MatNativeDateModule, MatSelectModule, @@ -30,6 +36,9 @@ const modules = [ MatPaginatorModule, MatTooltipModule, MatTreeModule, + MatExpansionModule, + MatCardModule, + MatListModule, ]; @NgModule({ diff --git a/src/app/shared/components/breadcrumb/breadcrumb.component.scss b/src/app/shared/components/breadcrumb/breadcrumb.component.scss index a177177e1..114543451 100644 --- a/src/app/shared/components/breadcrumb/breadcrumb.component.scss +++ b/src/app/shared/components/breadcrumb/breadcrumb.component.scss @@ -18,13 +18,3 @@ li + li:before { color: $dark-grey; content: "/\00a0"; } - -a { - color: $primary-color; - text-decoration: none; - - &:hover { - color: $accent-color; - text-decoration: underline; - } -} diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 285536710..01eebe58c 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -1,105 +1,128 @@ { - "access": { - "organizationalUnitNotFound": "Unable to get data", - "table": { - "header": { - "accessLevel": "Access Level", - "organizationalUnit": "Organizational Unit", - "title": "Title", - "yearPublicationDate": "Publication Year" - } - } - }, - "app": { - "login": { - "loginButton": "Log in", - "loginMessage": "You are currently not connected, please log in to continue." - }, - "toolbar": { - "deposit": "Deposits", - "home": "Home", - "login": "Log in", - "logout": "Log out", - "organizationalUnit": "Organizational Units" - } - }, - "breadcrumb": { - "access": { - "root": "Access", - "search": "Search" - }, - "deposit": { - "create": "Create", - "detail": "Detail", - "edit": "Edit", - "list": "List", - "root": "Deposits" - }, - "home": "Home", - "organizationalUnit": { - "create": "Create", - "detail": "Detail", - "edit": "Edit", - "list": "List", - "root": "Organizational Units" - } - }, - "deposit": { - "accessLevel": "Access Level", - "author": "Author", - "collectionBegin": "Data Collection Start Date", - "collectionEnd": "Data Collection End Date", - "delete": "Delete", - "description": "Description", - "dialog": { - "delete": { - "cancel": "Cancel", - "confirm": "Yes", - "message": "Are you sure you want to delete the deposit '{{name}}'?", - "title": "Confirm deletion" - } - }, - "edit": "Edit", - "file": { - "search": "Choose file", - "tree": { - "label": "" - }, - "uploadButton": "Upload" - }, - "hasEmbargo": "The deposit has an embargo", - "hint": { - "author": "Author" - }, - "language": "Language", - "license": "License", - "new": "Create deposit", - "organizationUnit": "Organizational Unit", - "preservationPolicy": "Preservation Policy", - "publicationDate": "Publication Date", - "refresh": "Refresh", - "submissionPolicy": "Submission Policy", - "submit": "Submit", - "tab": { - "datafiles": "Data Files", - "details": "Details" - }, - "table": { - "header": { - "creation": { - "when": "Created" - }, - "lastUpdate": { - "when": "Last updated" - }, - "publicationDate": "Publication date", - "status": "Status", - "title": "Title" - } - }, - "title": "Title" - }, - "error": { + "access": { + "organizationalUnitNotFound": "Unable to get data", + "table": { + "header": { + "accessLevel": "Access Level", + "organizationalUnit": "Organizational Unit", + "title": "Title", + "yearPublicationDate": "Publication Year" + } + } + }, + "app": { + "login": { + "loginButton": "Log in", + "loginMessage": "You are currently not connected, please log in to continue." + }, + "toolbar": { + "deposit": "Deposits", + "home": "Home", + "login": "Log in", + "logout": "Log out", + "organizationalUnit": "Organizational Units" + } + }, + "breadcrumb": { + "access": { + "root": "Access", + "search": "Search" + }, + "deposit": { + "create": "Create", + "detail": "Detail", + "edit": "Edit", + "list": "List", + "root": "Deposits" + }, + "home": "Home", + "organizationalUnit": { + "create": "Create", + "detail": "Detail", + "edit": "Edit", + "list": "List", + "root": "Organizational Units" + } + }, + "deposit": { + "accessLevel": "Access Level", + "author": "Author", + "collectionBegin": "Data Collection Start Date", + "collectionEnd": "Data Collection End Date", + "delete": "Delete", + "description": "Description", + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete the deposit '{{name}}'?", + "title": "Confirm deletion" + } + }, + "edit": "Edit", + "file": { + "detail": { + "data": { + "available": "Available", + "category": "Category", + "checksums": "Checksums", + "complianceLevel": "Compliance level", + "createDate": "Creation date", + "fileFormat": "File format", + "fileSize": "File size", + "initialPath": "Initial path", + "smartSize": "Smart size", + "status": "Status", + "statusMessage": "Status message", + "type": "Type", + "virusCheck": "Virus check" + } + }, + "details": { + "close": "Close", + "title": "Details of file \"{{name}}\"" + }, + "search": "Choose file", + "tree": { + "details": "Details", + "error": "The file is in error state", + "label": "List of files :" + }, + "uploadButton": "Upload" + }, + "hasEmbargo": "The deposit has an embargo", + "hint": { + "author": "Author" + }, + "language": "Language", + "license": "License", + "new": "Create deposit", + "organizationUnit": "Organizational Unit", + "preservationPolicy": "Preservation Policy", + "publicationDate": "Publication Date", + "refresh": "Refresh", + "submissionPolicy": "Submission Policy", + "submit": "Submit", + "tab": { + "datafiles": "Data Files", + "details": "Details" + }, + "table": { + "header": { + "creation": { + "when": "Created" + }, + "lastUpdate": { + "when": "Last updated" + }, + "publicationDate": "Publication date", + "status": "Status", + "title": "Title" + } + }, + "title": "Title" + }, + "error": { "http": { "forbidden": "You can't do this action", "notFound": "The resource requested not exist", @@ -114,51 +137,51 @@ } }, "organizationalUnit": { - "closingDate": "Closing Date", - "delete": "Delete", - "description": "Description", - "dialog": { - "delete": { - "cancel": "Cancel", - "confirm": "Yes", - "message": "Are you sure you want to delete the organizational unit '{{name}}'?", - "title": "Confirm deletion" - } - }, - "edit": "Edit", - "isEmpty": "Is Empty", - "name": "Name", - "new": "Create new organizational unit", - "open": "Open", - "openingDate": "Opening Date", - "refresh": "Refresh", - "submissionPolicy": "Submission policy", - "submit": "Submit", - "table": { - "header": { - "creation": { - "when": "Created" - }, - "description": "Description", - "name": "Name" - } - } - }, - "required": "This field is required", - "search": "Search", - "table": { - "nodata": "No data has been found", - "paginator": { - "firstPage": "First page", - "itemPerPage": "Items per page", - "lastPage": "Last page", - "nextPage": "Next page", - "ofLabel": "of", - "previousPage": "Previous page" - } - }, - "tooltip": { - "other": "other", - "others": "others" - } + "closingDate": "Closing Date", + "delete": "Delete", + "description": "Description", + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete the organizational unit '{{name}}'?", + "title": "Confirm deletion" + } + }, + "edit": "Edit", + "isEmpty": "Is Empty", + "name": "Name", + "new": "Create new organizational unit", + "open": "Open", + "openingDate": "Opening Date", + "refresh": "Refresh", + "submissionPolicy": "Submission policy", + "submit": "Submit", + "table": { + "header": { + "creation": { + "when": "Created" + }, + "description": "Description", + "name": "Name" + } + } + }, + "required": "This field is required", + "search": "Search", + "table": { + "nodata": "No data has been found", + "paginator": { + "firstPage": "First page", + "itemPerPage": "Items per page", + "lastPage": "Last page", + "nextPage": "Next page", + "ofLabel": "of", + "previousPage": "Previous page" + } + }, + "tooltip": { + "other": "other", + "others": "others" + } } diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 55e7b7875..d85bab74a 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1,105 +1,128 @@ { - "access": { - "organizationalUnitNotFound": "Unable to get data", - "table": { - "header": { - "accessLevel": "Access Level", - "organizationalUnit": "Organizational Unit", - "title": "Title", - "yearPublicationDate": "Publication Year" - } - } - }, - "app": { - "login": { - "loginButton": "Log in", - "loginMessage": "You are currently not connected, please log in to continue." - }, - "toolbar": { - "deposit": "Deposits", - "home": "Home", - "login": "Log in", - "logout": "Log out", - "organizationalUnit": "Organizational Units" - } - }, - "breadcrumb": { - "access": { - "root": "Access", - "search": "Search" - }, - "deposit": { - "create": "Create", - "detail": "Detail", - "edit": "Edit", - "list": "List", - "root": "Deposits" - }, - "home": "Home", - "organizationalUnit": { - "create": "Create", - "detail": "Detail", - "edit": "Edit", - "list": "List", - "root": "Organizational Units" - } - }, - "deposit": { - "accessLevel": "Access Level", - "author": "Author", - "collectionBegin": "Data Collection Start Date", - "collectionEnd": "Data Collection End Date", - "delete": "Delete", - "description": "Description", - "dialog": { - "delete": { - "cancel": "Cancel", - "confirm": "Yes", - "message": "Are you sure you want to delete the deposit '{{name}}'?", - "title": "Confirm deletion" - } - }, - "edit": "Edit", - "file": { - "search": "Choose file", - "tree": { - "label": "List of files :" - }, - "uploadButton": "Upload" - }, - "hasEmbargo": "The deposit has an embargo", - "hint": { - "author": "Author" - }, - "language": "Language", - "license": "License", - "new": "Create deposit", - "organizationUnit": "Organizational Unit", - "preservationPolicy": "Preservation Policy", - "publicationDate": "Publication Date", - "refresh": "Refresh", - "submissionPolicy": "Submission Policy", - "submit": "Submit", - "tab": { - "datafiles": "Data Files", - "details": "Details" - }, - "table": { - "header": { - "creation": { - "when": "Created" - }, - "lastUpdate": { - "when": "Last updated" - }, - "publicationDate": "Publication date", - "status": "Status", - "title": "Title" - } - }, - "title": "Title" - }, - "error": { + "access": { + "organizationalUnitNotFound": "Unable to get data", + "table": { + "header": { + "accessLevel": "Access Level", + "organizationalUnit": "Organizational Unit", + "title": "Title", + "yearPublicationDate": "Publication Year" + } + } + }, + "app": { + "login": { + "loginButton": "Log in", + "loginMessage": "You are currently not connected, please log in to continue." + }, + "toolbar": { + "deposit": "Deposits", + "home": "Home", + "login": "Log in", + "logout": "Log out", + "organizationalUnit": "Organizational Units" + } + }, + "breadcrumb": { + "access": { + "root": "Access", + "search": "Search" + }, + "deposit": { + "create": "Create", + "detail": "Detail", + "edit": "Edit", + "list": "List", + "root": "Deposits" + }, + "home": "Home", + "organizationalUnit": { + "create": "Create", + "detail": "Detail", + "edit": "Edit", + "list": "List", + "root": "Organizational Units" + } + }, + "deposit": { + "accessLevel": "Access Level", + "author": "Author", + "collectionBegin": "Data Collection Start Date", + "collectionEnd": "Data Collection End Date", + "delete": "Delete", + "description": "Description", + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete the deposit '{{name}}'?", + "title": "Confirm deletion" + } + }, + "edit": "Edit", + "file": { + "detail": { + "data": { + "available": "Available", + "category": "Category", + "checksums": "Checksums", + "complianceLevel": "Compliance level", + "createDate": "Creation date", + "fileFormat": "File format", + "fileSize": "File size", + "initialPath": "Initial path", + "smartSize": "Smart size", + "status": "Status", + "statusMessage": "Status message", + "type": "Type", + "virusCheck": "Virus check" + } + }, + "details": { + "close": "Close", + "title": "Details of file \"{{name}}\"" + }, + "search": "Choose file", + "tree": { + "details": "Details", + "error": "The file is in error state", + "label": "List of files :" + }, + "uploadButton": "Upload" + }, + "hasEmbargo": "The deposit has an embargo", + "hint": { + "author": "Author" + }, + "language": "Language", + "license": "License", + "new": "Create deposit", + "organizationUnit": "Organizational Unit", + "preservationPolicy": "Preservation Policy", + "publicationDate": "Publication Date", + "refresh": "Refresh", + "submissionPolicy": "Submission Policy", + "submit": "Submit", + "tab": { + "datafiles": "Data Files", + "details": "Details" + }, + "table": { + "header": { + "creation": { + "when": "Created" + }, + "lastUpdate": { + "when": "Last updated" + }, + "publicationDate": "Publication date", + "status": "Status", + "title": "Title" + } + }, + "title": "Title" + }, + "error": { "http": { "forbidden": "You can't do this action", "notFound": "The resource requested not exist", @@ -114,51 +137,51 @@ } }, "organizationalUnit": { - "closingDate": "Closing Date", - "delete": "Delete", - "description": "Description", - "dialog": { - "delete": { - "cancel": "Cancel", - "confirm": "Yes", - "message": "Are you sure you want to delete the organizational unit '{{name}}'?", - "title": "Confirm deletion" - } - }, - "edit": "Edit", - "isEmpty": "Is Empty", - "name": "Name", - "new": "Create new organizational unit", - "open": "Open", - "openingDate": "Opening Date", - "refresh": "Refresh", - "submissionPolicy": "Submission policy", - "submit": "Submit", - "table": { - "header": { - "creation": { - "when": "Created" - }, - "description": "Description", - "name": "Name" - } - } - }, - "required": "This field is required", - "search": "Search", - "table": { - "nodata": "No data has been found", - "paginator": { - "firstPage": "First page", - "itemPerPage": "Items per page", - "lastPage": "Last page", - "nextPage": "Next page", - "ofLabel": "of", - "previousPage": "Previous page" - } - }, - "tooltip": { - "other": "other", - "others": "others" - } + "closingDate": "Closing Date", + "delete": "Delete", + "description": "Description", + "dialog": { + "delete": { + "cancel": "Cancel", + "confirm": "Yes", + "message": "Are you sure you want to delete the organizational unit '{{name}}'?", + "title": "Confirm deletion" + } + }, + "edit": "Edit", + "isEmpty": "Is Empty", + "name": "Name", + "new": "Create new organizational unit", + "open": "Open", + "openingDate": "Opening Date", + "refresh": "Refresh", + "submissionPolicy": "Submission policy", + "submit": "Submit", + "table": { + "header": { + "creation": { + "when": "Created" + }, + "description": "Description", + "name": "Name" + } + } + }, + "required": "This field is required", + "search": "Search", + "table": { + "nodata": "No data has been found", + "paginator": { + "firstPage": "First page", + "itemPerPage": "Items per page", + "lastPage": "Last page", + "nextPage": "Next page", + "ofLabel": "of", + "previousPage": "Previous page" + } + }, + "tooltip": { + "other": "other", + "others": "others" + } } diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json index 197a182c1..689cb7b79 100644 --- a/src/assets/i18n/fr.json +++ b/src/assets/i18n/fr.json @@ -61,8 +61,31 @@ }, "edit": "Modifier", "file": { + "detail": { + "data": { + "available": "Disponible", + "category": "Catégorie", + "checksums": "Checksums", + "complianceLevel": "Compliance level", + "createDate": "Date de création", + "fileFormat": "Format de fichier", + "fileSize": "Taille du fichier", + "initialPath": "Chemin initial", + "smartSize": "Smart size", + "status": "Statut", + "statusMessage": "Message du statut", + "type": "Type", + "virusCheck": "Vérification virus" + } + }, + "details": { + "close": "Fermer", + "title": "Détails du fichier \"{{name}}\"" + }, "search": "Choisir fichier", "tree": { + "details": "Détails", + "error": "Le fichier est en état d'erreur", "label": "Liste des fichiers :" }, "uploadButton": "Téléverser" diff --git a/src/environments/environment.ts b/src/environments/environment.ts index fdbb6e39f..f99516721 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -8,7 +8,7 @@ import {defaultEnvironment} from "./environment.defaults"; export const environment = { ...defaultEnvironment, - theme: ThemeEnum.yareta, + theme: ThemeEnum.dlcm, oauthTokenEndpoint: "http://localhost/dlcm-authorization/oauth/token", oauthDummyClientSecret: "123abc", oauthClientId: "local-dev-angular", diff --git a/src/sass/abstracts/_variables.scss b/src/sass/abstracts/_variables.scss index 937b9dbc2..9c67ca6f8 100644 --- a/src/sass/abstracts/_variables.scss +++ b/src/sass/abstracts/_variables.scss @@ -1,5 +1,6 @@ $primary-color: var(--primary-color); $primary-color-lighter: var(--primary-color-lighter); +$primary-color-darker: var(--primary-color-darker); $accent-color: var(--accent-color); $red: #f44336; $background-grey: #f5f5f5; diff --git a/src/sass/main.scss b/src/sass/main.scss index 54211da19..ce68d491c 100644 --- a/src/sass/main.scss +++ b/src/sass/main.scss @@ -20,9 +20,34 @@ a { cursor: pointer; text-decoration: none; + color: $primary-color; + position: relative; + -webkit-transition: all 0.2s ease-in-out 0s; + transition: all 0.2s ease-in-out 0s; &:hover { - color: $primary-color; + color: $primary-color-darker; + } + + &:before { + content: ""; + position: absolute; + width: 100%; + height: 2px; + bottom: -2px; + left: 0; + background-color: $primary-color-darker; + visibility: hidden; + -webkit-transform: scaleX(0); + transform: scaleX(0); + -webkit-transition: all 0.2s ease-in-out 0s; + transition: all 0.2s ease-in-out 0s; + } + + &:hover:before { + visibility: visible; + -webkit-transform: scaleX(1); + transform: scaleX(1); } } diff --git a/src/sass/themes/dlcm-theme.scss b/src/sass/themes/dlcm-theme.scss index 5d22e7d70..fbc205c06 100644 --- a/src/sass/themes/dlcm-theme.scss +++ b/src/sass/themes/dlcm-theme.scss @@ -20,4 +20,5 @@ $dlcm-theme: mat-light-theme( //--primary-color: mat-color($primary-palette, default, 1.0); --primary-color: #03A9F4; // Should be equal to $mat-yareta-primary : 500 --primary-color-lighter: #7dc9f4; + --primary-color-darker: #0381c9; } diff --git a/src/sass/themes/yareta-theme.scss b/src/sass/themes/yareta-theme.scss index fd59b2ab0..9e916618c 100644 --- a/src/sass/themes/yareta-theme.scss +++ b/src/sass/themes/yareta-theme.scss @@ -93,4 +93,5 @@ $yareta-theme: mat-light-theme( @include angular-material-theme($yareta-theme); --primary-color: #a2c252; // Should be equal to $mat-yareta-primary : 500 --primary-color-lighter: #b5c787; + --primary-color-darker: #7a9a4d; } -- GitLab