From ee871ba578f2ae292704774f2a5b565c542c6141 Mon Sep 17 00:00:00 2001 From: Eugenio Romano Date: Thu, 6 Jul 2017 10:43:13 +0200 Subject: [PATCH] [ADF-506] Unify thumbnail service (#2014) * move thumbnail service in core * fix folder --- demo-shell-ng2/config/webpack.common.js | 2 +- .../src/services/activiti-content-service.ts | 35 --- .../adf-process-attachment-list.component.ts | 9 +- .../adf-task-attachment-list.component.ts | 10 +- ng2-components/ng2-alfresco-core/index.ts | 4 +- .../src/assets/images/empty_doc_lib.svg | 208 ++++++++++++++++++ .../src/assets/images/ft_ic_archive.svg | 0 .../src/assets/images/ft_ic_audio.svg | 0 .../src/assets/images/ft_ic_database.svg | 0 .../src/assets/images/ft_ic_document.svg | 0 .../src/assets/images/ft_ic_ebook.svg | 0 .../src/assets/images/ft_ic_folder.svg | 0 .../src/assets/images/ft_ic_folder_empty.svg | 0 .../src/assets/images/ft_ic_form.svg | 0 .../src/assets/images/ft_ic_google_docs.svg | 0 .../assets/images/ft_ic_google_drawings.svg | 0 .../src/assets/images/ft_ic_google_forms.svg | 0 .../src/assets/images/ft_ic_google_sheets.svg | 0 .../src/assets/images/ft_ic_google_slides.svg | 0 .../src/assets/images/ft_ic_miscellaneous.svg | 0 .../src/assets/images/ft_ic_ms_excel.svg | 0 .../src/assets/images/ft_ic_ms_powerpoint.svg | 0 .../src/assets/images/ft_ic_ms_word.svg | 0 .../src/assets/images/ft_ic_pdf.svg | 0 .../src/assets/images/ft_ic_presentation.svg | 0 .../src/assets/images/ft_ic_raster_image.svg | 0 .../src/assets/images/ft_ic_spreadsheet.svg | 0 .../src/assets/images/ft_ic_vector_image.svg | 0 .../src/assets/images/ft_ic_video.svg | 0 .../src/assets/images/ft_ic_website.svg | 0 .../ng2-alfresco-core/src/services/index.ts | 1 + .../src/services/thumbnail.service.spec.ts | 80 +++++++ .../src/services/thumbnail.service.ts | 86 ++++++++ .../src/data/object-datatable-adapter.ts | 38 +--- .../ng2-alfresco-documentlist/README.md | 1 - .../src/assets/document-list.service.mock.ts | 6 +- .../src/assets/images/ft_ic_archive.svg | 144 ------------ .../src/assets/images/ft_ic_audio.svg | 143 ------------ .../src/assets/images/ft_ic_database.svg | 142 ------------ .../src/assets/images/ft_ic_document.svg | 143 ------------ .../src/assets/images/ft_ic_ebook.svg | 143 ------------ .../src/assets/images/ft_ic_folder.svg | 142 ------------ .../src/assets/images/ft_ic_folder_empty.svg | 143 ------------ .../src/assets/images/ft_ic_form.svg | 143 ------------ .../src/assets/images/ft_ic_google_docs.svg | 147 ------------- .../assets/images/ft_ic_google_drawings.svg | 147 ------------- .../src/assets/images/ft_ic_google_forms.svg | 147 ------------- .../src/assets/images/ft_ic_google_sheets.svg | 148 ------------- .../src/assets/images/ft_ic_google_slides.svg | 146 ------------ .../src/assets/images/ft_ic_miscellaneous.svg | 142 ------------ .../src/assets/images/ft_ic_ms_excel.svg | 157 ------------- .../src/assets/images/ft_ic_ms_powerpoint.svg | 152 ------------- .../src/assets/images/ft_ic_ms_word.svg | 151 ------------- .../src/assets/images/ft_ic_pdf.svg | 144 ------------ .../src/assets/images/ft_ic_presentation.svg | 142 ------------ .../src/assets/images/ft_ic_raster_image.svg | 143 ------------ .../src/assets/images/ft_ic_spreadsheet.svg | 151 ------------- .../src/assets/images/ft_ic_vector_image.svg | 144 ------------ .../src/assets/images/ft_ic_video.svg | 144 ------------ .../src/assets/images/ft_ic_website.svg | 142 ------------ .../src/components/document-list.component.ts | 3 - .../src/data/share-datatable-adapter.spec.ts | 153 +++++-------- .../src/data/share-datatable-adapter.ts | 18 +- .../services/document-list.service.spec.ts | 21 -- .../src/services/document-list.service.ts | 48 +--- ng2-components/ng2-alfresco-search/index.ts | 5 +- ...lfresco-search-autocomplete.component.html | 2 +- ...esco-search-autocomplete.component.spec.ts | 16 +- .../alfresco-search-autocomplete.component.ts | 28 +-- .../alfresco-search-control.component.spec.ts | 4 +- .../alfresco-thumbnail.service.spec.ts | 62 ------ .../services/alfresco-thumbnail.service.ts | 73 ------ 72 files changed, 477 insertions(+), 3926 deletions(-) create mode 100644 ng2-components/ng2-alfresco-core/src/assets/images/empty_doc_lib.svg rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_archive.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_audio.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_database.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_document.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_ebook.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_folder.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_folder_empty.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_form.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_google_docs.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_google_drawings.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_google_forms.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_google_sheets.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_google_slides.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_miscellaneous.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_ms_excel.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_ms_powerpoint.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_ms_word.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_pdf.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_presentation.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_raster_image.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_spreadsheet.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_vector_image.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_video.svg (100%) rename ng2-components/{ng2-alfresco-search => ng2-alfresco-core}/src/assets/images/ft_ic_website.svg (100%) create mode 100644 ng2-components/ng2-alfresco-core/src/services/thumbnail.service.spec.ts create mode 100644 ng2-components/ng2-alfresco-core/src/services/thumbnail.service.ts delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_archive.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_audio.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_database.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_document.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ebook.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder_empty.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_form.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_docs.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_drawings.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_forms.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_sheets.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_slides.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_miscellaneous.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_excel.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_powerpoint.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_word.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_pdf.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_presentation.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_raster_image.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_spreadsheet.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_vector_image.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_video.svg delete mode 100755 ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_website.svg delete mode 100644 ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.spec.ts delete mode 100644 ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.ts diff --git a/demo-shell-ng2/config/webpack.common.js b/demo-shell-ng2/config/webpack.common.js index 45f59af777..9b2be47ad9 100644 --- a/demo-shell-ng2/config/webpack.common.js +++ b/demo-shell-ng2/config/webpack.common.js @@ -87,7 +87,7 @@ module.exports = { emitErrors: true, licenseFile: path.resolve(__dirname, '../assets/license_header.txt') }, - exclude: [/node_modules/, /bundles/, /dist/, /demo/], + exclude: [/node_modules/, /bundles/, /dist/, /demo/] } ] }, diff --git a/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts b/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts index 9950b68eef..95bf66e097 100644 --- a/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts +++ b/ng2-components/ng2-activiti-form/src/services/activiti-content-service.ts @@ -24,36 +24,6 @@ export class ActivitiContentService { static UNKNOWN_ERROR_MESSAGE: string = 'Unknown error'; static GENERIC_ERROR_MESSAGE: string = 'Server error'; - static DEFAULT_MIME_TYPE_ICON: string = 'ft_ic_miscellaneous.svg'; - - mimeTypeIcons: any = { - 'image/png': 'ft_ic_raster_image.svg', - 'image/jpeg': 'ft_ic_raster_image.svg', - 'image/gif': 'ft_ic_raster_image.svg', - 'application/pdf': 'ft_ic_pdf.svg', - 'application/vnd.ms-excel': 'ft_ic_ms_excel.svg', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'ft_ic_ms_excel.svg', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': 'ft_ic_ms_excel.svg', - 'application/msword': 'ft_ic_ms_word.svg', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'ft_ic_ms_word.svg', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': 'ft_ic_ms_word.svg', - 'application/vnd.ms-powerpoint': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.template': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': 'ft_ic_ms_powerpoint.svg', - 'video/mp4': 'ft_ic_video.svg', - 'text/plain': 'ft_ic_document.svg', - 'application/x-javascript': 'ft_ic_document.svg', - 'application/json': 'ft_ic_document.svg', - 'image/svg+xml': 'ft_ic_vector_image.svg', - 'text/html': 'ft_ic_website.svg', - 'application/x-compressed': 'ft_ic_archive.svg', - 'application/x-zip-compressed': 'ft_ic_archive.svg', - 'application/zip': 'ft_ic_archive.svg', - 'application/vnd.apple.keynote': 'ft_ic_presentation.svg', - 'application/vnd.apple.pages': 'ft_ic_document.svg', - 'application/vnd.apple.numbers': 'ft_ic_spreadsheet.svg' - }; constructor(private apiService: AlfrescoApiService, private logService: LogService) { @@ -129,11 +99,6 @@ export class ActivitiContentService { return Observable.throw(errMsg); } - getMimeTypeIcon(mimeType: string): string { - let icon = this.mimeTypeIcons[mimeType]; - return icon || ActivitiContentService.DEFAULT_MIME_TYPE_ICON; - } - createTaskRelatedContent(taskId: string, file: any, opts?: any) { return Observable.fromPromise(this.apiService.getInstance().activiti.contentApi.createRelatedContentOnTask(taskId, file, opts)) .catch(err => this.handleError(err)); diff --git a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts index 0c8f1d4cba..e1386864c8 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/adf-process-attachment-list.component.ts @@ -16,7 +16,7 @@ */ import { Component, OnChanges, Input, SimpleChanges, Output, EventEmitter } from '@angular/core'; -import { AlfrescoTranslationService, ContentService } from 'ng2-alfresco-core'; +import { AlfrescoTranslationService, ContentService, ThumbnailService } from 'ng2-alfresco-core'; import { ActivitiContentService } from 'ng2-activiti-form'; @Component({ @@ -42,7 +42,8 @@ export class ActivitiProcessAttachmentListComponent implements OnChanges { constructor(private translateService: AlfrescoTranslationService, private activitiContentService: ActivitiContentService, - private contentService: ContentService) { + private contentService: ContentService, + private thumbnailService: ThumbnailService) { if (translateService) { translateService.addTranslationFolder('ng2-activiti-processlist', 'assets/ng2-activiti-processlist'); @@ -55,7 +56,7 @@ export class ActivitiProcessAttachmentListComponent implements OnChanges { } } - reset () { + reset() { this.attachments = []; } @@ -74,7 +75,7 @@ export class ActivitiProcessAttachmentListComponent implements OnChanges { name: content.name, created: content.created, createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName, - icon: this.activitiContentService.getMimeTypeIcon(content.mimeType) + icon: this.thumbnailService.getMimeTypeIcon(content.mimeType) }); }); this.success.emit(this.attachments); diff --git a/ng2-components/ng2-activiti-tasklist/src/components/adf-task-attachment-list.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/adf-task-attachment-list.component.ts index ff3911dace..ef51371800 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/adf-task-attachment-list.component.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/adf-task-attachment-list.component.ts @@ -16,7 +16,7 @@ */ import { Component, OnChanges, Input, Output, EventEmitter, SimpleChanges } from '@angular/core'; -import { AlfrescoTranslationService, ContentService } from 'ng2-alfresco-core'; +import { AlfrescoTranslationService, ContentService, ThumbnailService } from 'ng2-alfresco-core'; import { ActivitiContentService } from 'ng2-activiti-form'; @Component({ @@ -42,7 +42,8 @@ export class TaskAttachmentListComponent implements OnChanges { constructor(private translateService: AlfrescoTranslationService, private activitiContentService: ActivitiContentService, - private contentService: ContentService) { + private contentService: ContentService, + private thumbnailService: ThumbnailService) { if (translateService) { translateService.addTranslationFolder('ng2-activiti-tasklist', 'assets/ng2-activiti-tasklist'); @@ -74,14 +75,15 @@ export class TaskAttachmentListComponent implements OnChanges { name: content.name, created: content.created, createdBy: content.createdBy.firstName + ' ' + content.createdBy.lastName, - icon: this.activitiContentService.getMimeTypeIcon(content.mimeType) + icon: this.thumbnailService.getMimeTypeIcon(content.mimeType) }); }); this.success.emit(this.attachments); }, (err) => { this.error.emit(err); - }); } + }); + } } private deleteAttachmentById(contentId: string) { diff --git a/ng2-components/ng2-alfresco-core/index.ts b/ng2-components/ng2-alfresco-core/index.ts index c0156e408c..b641fa5272 100644 --- a/ng2-components/ng2-alfresco-core/index.ts +++ b/ng2-components/ng2-alfresco-core/index.ts @@ -47,7 +47,9 @@ import { LogServiceMock, NotificationService, ContentService, - AppConfigService, InitAppConfigServiceProvider + AppConfigService, + InitAppConfigServiceProvider, + ThumbnailService } from './src/services/index'; import { FileSizePipe } from './src/pipes/file-size.pipe'; diff --git a/ng2-components/ng2-alfresco-core/src/assets/images/empty_doc_lib.svg b/ng2-components/ng2-alfresco-core/src/assets/images/empty_doc_lib.svg new file mode 100644 index 0000000000..866acd527b --- /dev/null +++ b/ng2-components/ng2-alfresco-core/src/assets/images/empty_doc_lib.svg @@ -0,0 +1,208 @@ + + + + empty_doc_lib + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_archive.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_archive.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_archive.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_archive.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_audio.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_audio.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_audio.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_audio.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_database.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_database.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_database.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_database.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_document.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_document.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_document.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_document.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ebook.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ebook.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ebook.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ebook.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_folder.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_folder.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_folder.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_folder.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_folder_empty.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_folder_empty.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_folder_empty.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_folder_empty.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_form.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_form.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_form.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_form.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_docs.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_docs.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_docs.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_docs.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_drawings.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_drawings.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_drawings.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_drawings.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_forms.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_forms.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_forms.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_forms.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_sheets.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_sheets.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_sheets.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_sheets.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_slides.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_slides.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_google_slides.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_google_slides.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_miscellaneous.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_miscellaneous.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_miscellaneous.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_miscellaneous.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_excel.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_excel.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_excel.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_excel.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_powerpoint.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_powerpoint.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_powerpoint.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_powerpoint.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_word.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_word.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_ms_word.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_ms_word.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_pdf.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_pdf.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_pdf.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_pdf.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_presentation.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_presentation.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_presentation.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_presentation.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_raster_image.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_raster_image.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_raster_image.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_raster_image.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_spreadsheet.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_spreadsheet.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_spreadsheet.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_spreadsheet.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_vector_image.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_vector_image.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_vector_image.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_vector_image.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_video.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_video.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_video.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_video.svg diff --git a/ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_website.svg b/ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_website.svg similarity index 100% rename from ng2-components/ng2-alfresco-search/src/assets/images/ft_ic_website.svg rename to ng2-components/ng2-alfresco-core/src/assets/images/ft_ic_website.svg diff --git a/ng2-components/ng2-alfresco-core/src/services/index.ts b/ng2-components/ng2-alfresco-core/src/services/index.ts index bb45242230..2d7bda28fa 100644 --- a/ng2-components/ng2-alfresco-core/src/services/index.ts +++ b/ng2-components/ng2-alfresco-core/src/services/index.ts @@ -31,3 +31,4 @@ export * from './alfresco-authentication.service'; export * from './alfresco-translation.service'; export * from './alfresco-translate-loader.service'; export * from './app-config.service'; +export * from './thumbnail.service'; diff --git a/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.spec.ts b/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.spec.ts new file mode 100644 index 0000000000..7913cccb80 --- /dev/null +++ b/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.spec.ts @@ -0,0 +1,80 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { TestBed, async } from '@angular/core/testing'; +import { HttpModule } from '@angular/http'; +import { ThumbnailService } from './thumbnail.service'; +import { AlfrescoContentService } from './alfresco-content.service'; +import { AlfrescoAuthenticationService } from './alfresco-authentication.service'; +import { AlfrescoSettingsService } from './alfresco-settings.service'; +import { AppConfigService } from './app-config.service'; +import { LogService } from './log.service'; +import { AlfrescoApiService } from './alfresco-api.service'; +import { StorageService } from './storage.service'; +import { CookieService } from './cookie.service'; +import { CookieServiceMock } from './../assets/cookie.service.mock'; + +describe('ThumbnailService', () => { + + let service: ThumbnailService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + HttpModule + ], + providers: [ + AlfrescoAuthenticationService, + AlfrescoContentService, + AlfrescoSettingsService, + AppConfigService, + { provide: CookieService, useClass: CookieServiceMock }, + ThumbnailService, + AlfrescoApiService, + AlfrescoSettingsService, + StorageService, + LogService + ] + }).compileComponents(); + })); + + beforeEach(() => { + service = TestBed.get(ThumbnailService); + }); + + it('should return the correct icon for a plain text file', () => { + expect(service.getMimeTypeIcon('text/plain')).toContain('ft_ic_document'); + }); + + it('should return the correct icon for a PNG file', () => { + expect(service.getMimeTypeIcon('image/png')).toContain('ft_ic_raster_image'); + }); + + it('should return the correct icon for a MP4 video file', () => { + expect(service.getMimeTypeIcon('video/mp4')).toContain('ft_ic_video'); + }); + + it('should return a generic icon for an unknown file', () => { + expect(service.getMimeTypeIcon('x-unknown/yyy')).toContain('ft_ic_miscellaneous'); + }); + + it('should return the thumbnail URL for a content item', () => { + spyOn(service.contentService, 'getDocumentThumbnailUrl').and.returnValue('/fake-thumbnail.png'); + expect(service.getDocumentThumbnailUrl({})).toContain('/fake-thumbnail.png'); + }); + +}); diff --git a/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.ts b/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.ts new file mode 100644 index 0000000000..8599dfc710 --- /dev/null +++ b/ng2-components/ng2-alfresco-core/src/services/thumbnail.service.ts @@ -0,0 +1,86 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Injectable } from '@angular/core'; +import { AlfrescoContentService } from './alfresco-content.service'; + +@Injectable() +export class ThumbnailService { + + DEFAULT_ICON: string = require('../assets/images/ft_ic_miscellaneous.svg'); + + mimeTypeIcons: any = { + 'image/png': require('../assets/images/ft_ic_raster_image.svg'), + 'image/jpeg': require('../assets/images/ft_ic_raster_image.svg'), + 'image/gif': require('../assets/images/ft_ic_raster_image.svg'), + 'application/pdf': require('../assets/images/ft_ic_pdf.svg'), + 'application/vnd.ms-excel': require('../assets/images/ft_ic_ms_excel.svg'), + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': require('../assets/images/ft_ic_ms_excel.svg'), + 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': require('../assets/images/ft_ic_ms_excel.svg'), + 'application/msword': require('../assets/images/ft_ic_ms_word.svg'), + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': require('../assets/images/ft_ic_ms_word.svg'), + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': require('../assets/images/ft_ic_ms_word.svg'), + 'application/vnd.ms-powerpoint': require('../assets/images/ft_ic_ms_powerpoint.svg'), + 'application/vnd.openxmlformats-officedocument.presentationml.presentation': require('../assets/images/ft_ic_ms_powerpoint.svg'), + 'application/vnd.openxmlformats-officedocument.presentationml.template': require('../assets/images/ft_ic_ms_powerpoint.svg'), + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': require('../assets/images/ft_ic_ms_powerpoint.svg'), + 'video/mp4': require('../assets/images/ft_ic_video.svg'), + 'text/plain': require('../assets/images/ft_ic_document.svg'), + 'application/x-javascript': require('../assets/images/ft_ic_document.svg'), + 'application/json': require('../assets/images/ft_ic_document.svg'), + 'image/svg+xml': require('../assets/images/ft_ic_vector_image.svg'), + 'text/html': require('../assets/images/ft_ic_website.svg'), + 'application/x-compressed': require('../assets/images/ft_ic_archive.svg'), + 'application/x-zip-compressed': require('../assets/images/ft_ic_archive.svg'), + 'application/zip': require('../assets/images/ft_ic_archive.svg'), + 'application/vnd.apple.keynote': require('../assets/images/ft_ic_presentation.svg'), + 'application/vnd.apple.pages': require('../assets/images/ft_ic_document.svg'), + 'application/vnd.apple.numbers': require('../assets/images/ft_ic_spreadsheet.svg'), + 'folder': require('../assets/images/ft_ic_folder.svg') + }; + + constructor(public contentService: AlfrescoContentService) { + } + + /** + * Get thumbnail URL for the given document node. + * @param document Node to get URL for. + * @returns {string} URL address. + */ + public getDocumentThumbnailUrl(document: any): string { + let thumbnail = this.contentService.getDocumentThumbnailUrl(document); + return thumbnail || this.DEFAULT_ICON; + } + + /** + * Get mimeType SVG + * @param mimeType + * @returns {string} URL SVG address. + */ + public getMimeTypeIcon(mimeType: string): string { + let icon = this.mimeTypeIcons[mimeType]; + return (icon || this.DEFAULT_ICON); + } + + /** + * Get default SVG + * @returns {string} URL SVG default. + */ + public getDefaultMimeTypeIcon(): string { + return this.DEFAULT_ICON; + } +} diff --git a/ng2-components/ng2-alfresco-datatable/src/data/object-datatable-adapter.ts b/ng2-components/ng2-alfresco-datatable/src/data/object-datatable-adapter.ts index ed2acd5c84..ca89df52df 100644 --- a/ng2-components/ng2-alfresco-datatable/src/data/object-datatable-adapter.ts +++ b/ng2-components/ng2-alfresco-datatable/src/data/object-datatable-adapter.ts @@ -28,33 +28,6 @@ export class ObjectDataTableAdapter implements DataTableAdapter { private _sorting: DataSorting; private _rows: DataRow[]; private _columns: DataColumn[]; - private icons: string[] = [ - 'empty_doc_lib.svg', - 'ft_ic_archive.svg', - 'ft_ic_audio.svg', - 'ft_ic_database.svg', - 'ft_ic_document.svg', - 'ft_ic_ebook.svg', - 'ft_ic_folder.svg', - 'ft_ic_folder_empty.svg', - 'ft_ic_form.svg', - 'ft_ic_google_docs.svg', - 'ft_ic_google_drawings.svg', - 'ft_ic_google_forms.svg', - 'ft_ic_google_sheets.svg', - 'ft_ic_google_slides.svg', - 'ft_ic_miscellaneous.svg', - 'ft_ic_ms_excel.svg', - 'ft_ic_ms_powerpoint.svg', - 'ft_ic_ms_word.svg', - 'ft_ic_pdf.svg', - 'ft_ic_presentation.svg', - 'ft_ic_raster_image.svg', - 'ft_ic_spreadsheet.svg', - 'ft_ic_vector_image.svg', - 'ft_ic_video.svg', - 'ft_ic_website.svg' - ]; selectedRow: DataRow; @@ -142,20 +115,13 @@ export class ObjectDataTableAdapter implements DataTableAdapter { } if (col.type === 'icon') { - const iconName = row.getValue(col.key); - if (this.icons.indexOf(iconName) > -1) { - return this.getImagePath(iconName); - } - return this.getImagePath('ft_ic_miscellaneous.svg'); + const icon = row.getValue(col.key); + return icon; } return value; } - getImagePath(id: string): any { - return require('./../assets/images/' + id); - } - getSorting(): DataSorting { return this._sorting; } diff --git a/ng2-components/ng2-alfresco-documentlist/README.md b/ng2-components/ng2-alfresco-documentlist/README.md index 84267dbeb7..3bd3792129 100644 --- a/ng2-components/ng2-alfresco-documentlist/README.md +++ b/ng2-components/ng2-alfresco-documentlist/README.md @@ -91,7 +91,6 @@ The properties currentFolderId, folderNode and node are the entry initialization | navigate | boolean | true | Toggles navigation to folder content or file preview | | navigationMode | string (click,dblclick) | dblclick | User interaction for folder navigation or file preview | | thumbnails | boolean | false | Show document thumbnails rather than icons | -| fallbackThumbnail | string | | Path to fallback image to use if the row thumbnail is missing | | multiselect | boolean | false | Toggles multiselect mode | | contentActions | boolean | false | Toggles content actions for each row | | contentActionsPosition | string (left\|right) | right | Position of the content actions dropdown menu. | diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/document-list.service.mock.ts b/ng2-components/ng2-alfresco-documentlist/src/assets/document-list.service.mock.ts index 0fdfc469aa..eb9ec21867 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/document-list.service.mock.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/assets/document-list.service.mock.ts @@ -25,6 +25,7 @@ import { AlfrescoContentService, AlfrescoApiService, LogService + ThumbnailService } from 'ng2-alfresco-core'; export class DocumentListServiceMock extends DocumentListService { @@ -38,9 +39,10 @@ export class DocumentListServiceMock extends DocumentListService { authService?: AlfrescoAuthenticationService, contentService?: AlfrescoContentService, apiService?: AlfrescoApiService, - logService?: LogService + logService?: LogService, + thumbnailService?: ThumbnailService ) { - super(authService, contentService, apiService, logService); + super(authService, contentService, apiService, logService, thumbnailService); } getFolder(folder: string) { diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_archive.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_archive.svg deleted file mode 100755 index 46ede302c1..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_archive.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_audio.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_audio.svg deleted file mode 100755 index 2900811633..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_audio.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_database.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_database.svg deleted file mode 100755 index ceb52d33cc..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_database.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_document.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_document.svg deleted file mode 100755 index a4c7f8ab58..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_document.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ebook.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ebook.svg deleted file mode 100755 index c54f4cee66..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ebook.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder.svg deleted file mode 100755 index a4aed351b8..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder_empty.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder_empty.svg deleted file mode 100755 index c862a2a43b..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_folder_empty.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_form.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_form.svg deleted file mode 100755 index 19fbf2eec5..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_form.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_docs.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_docs.svg deleted file mode 100755 index 1278d3ca82..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_docs.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_drawings.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_drawings.svg deleted file mode 100755 index bbf792fc31..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_drawings.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_forms.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_forms.svg deleted file mode 100755 index 1efd176ecc..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_forms.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_sheets.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_sheets.svg deleted file mode 100755 index fcce83f9d9..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_sheets.svg +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_slides.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_slides.svg deleted file mode 100755 index f0e228f0c0..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_google_slides.svg +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_miscellaneous.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_miscellaneous.svg deleted file mode 100755 index 216bac4449..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_miscellaneous.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_excel.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_excel.svg deleted file mode 100755 index 2395571d71..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_excel.svg +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_powerpoint.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_powerpoint.svg deleted file mode 100755 index 66a8573881..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_powerpoint.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_word.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_word.svg deleted file mode 100755 index bf97e75633..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_ms_word.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_pdf.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_pdf.svg deleted file mode 100755 index dab3fcb118..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_pdf.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_presentation.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_presentation.svg deleted file mode 100755 index fa34514e60..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_presentation.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_raster_image.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_raster_image.svg deleted file mode 100755 index a5e0067b30..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_raster_image.svg +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_spreadsheet.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_spreadsheet.svg deleted file mode 100755 index 4109b571db..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_spreadsheet.svg +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_vector_image.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_vector_image.svg deleted file mode 100755 index cc9d3e83df..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_vector_image.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_video.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_video.svg deleted file mode 100755 index 05489013cf..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_video.svg +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_website.svg b/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_website.svg deleted file mode 100755 index 2f18354879..0000000000 --- a/ng2-components/ng2-alfresco-documentlist/src/assets/images/ft_ic_website.svg +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts index 31afe69472..540e6c1eeb 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/components/document-list.component.ts @@ -51,9 +51,6 @@ export class DocumentListComponent implements OnInit, OnChanges, AfterContentIni @ContentChild(DataColumnListComponent) columnList: DataColumnListComponent; - @Input() - fallbackThumbnail: string = require('../assets/images/ft_ic_miscellaneous.svg'); - @Input() navigate: boolean = true; diff --git a/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.spec.ts index b958d8c6bc..b44eaca5ad 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.spec.ts @@ -15,43 +15,56 @@ * limitations under the License. */ +import { TestBed, async } from '@angular/core/testing'; import { DataColumn, DataRow, DataSorting } from 'ng2-alfresco-datatable'; -import { DocumentListServiceMock } from './../assets/document-list.service.mock'; +import { DocumentListService } from './../services/document-list.service'; import { ShareDataTableAdapter, ShareDataRow } from './share-datatable-adapter'; -import { FileNode, FolderNode/*, PageNode*/ } from './../assets/document-library.model.mock'; +import { FileNode, FolderNode } from './../assets/document-library.model.mock'; +import { CoreModule } from 'ng2-alfresco-core'; describe('ShareDataTableAdapter', () => { - let documentListService: DocumentListServiceMock; + let documentListService: DocumentListService; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + CoreModule.forRoot() + ], + providers: [ + DocumentListService + ] + }).compileComponents(); + })); beforeEach(() => { - documentListService = new DocumentListServiceMock(); + documentListService = TestBed.get(DocumentListService); }); it('should setup rows and columns with constructor', () => { let schema = [ {}]; - let adapter = new ShareDataTableAdapter(null, schema); + let adapter = new ShareDataTableAdapter(documentListService, schema); expect(adapter.getRows()).toEqual([]); expect(adapter.getColumns()).toEqual(schema); }); it('should setup columns when constructor is missing schema', () => { - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); expect(adapter.getColumns()).toEqual([]); }); it('should set new columns', () => { let columns = [ {}, {}]; - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); adapter.setColumns(columns); expect(adapter.getColumns()).toEqual(columns); }); it('should reset columns', () => { let columns = [ {}, {}]; - let adapter = new ShareDataTableAdapter(null, columns); + let adapter = new ShareDataTableAdapter(documentListService, columns); expect(adapter.getColumns()).toEqual(columns); adapter.setColumns(null); @@ -60,7 +73,7 @@ describe('ShareDataTableAdapter', () => { it('should set new rows', () => { let rows = [ {}, {}]; - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); expect(adapter.getRows()).toEqual([]); adapter.setRows(rows); @@ -69,7 +82,7 @@ describe('ShareDataTableAdapter', () => { it('should reset rows', () => { let rows = [ {}, {}]; - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); adapter.setRows(rows); expect(adapter.getRows()).toEqual(rows); @@ -79,7 +92,7 @@ describe('ShareDataTableAdapter', () => { }); it('should sort new rows', () => { - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); spyOn(adapter, 'sort').and.callThrough(); let rows = [ {}]; @@ -89,48 +102,21 @@ describe('ShareDataTableAdapter', () => { }); it('should fail when getting value for missing row', () => { - let adapter = new ShareDataTableAdapter(null, null); - let check = () => { return adapter.getValue(null, {}); }; + let adapter = new ShareDataTableAdapter(documentListService, null); + let check = () => { + return adapter.getValue(null, {}); + }; expect(check).toThrowError(adapter.ERR_ROW_NOT_FOUND); }); it('should fail when getting value for missing column', () => { - let adapter = new ShareDataTableAdapter(null, null); - let check = () => { return adapter.getValue({}, null); }; + let adapter = new ShareDataTableAdapter(documentListService, null); + let check = () => { + return adapter.getValue({}, null); + }; expect(check).toThrowError(adapter.ERR_COL_NOT_FOUND); }); - /* - it('should require path to load data', () => { - spyOn(documentListService, 'getFolder').and.callThrough(); - - let adapter = new ShareDataTableAdapter(documentListService, null); - adapter.loadPath(null); - - expect(documentListService.getFolder).not.toHaveBeenCalled(); - }); - */ - - /* - it('should load data for path', () => { - let folder = new FolderNode(); - let path = '/some/path'; - let page = new PageNode([folder]); - - spyOn(documentListService, 'getFolder').and.callThrough(); - documentListService.getFolderResult = page; - - let adapter = new ShareDataTableAdapter(documentListService, null); - adapter.loadPath(path); - - expect(documentListService.getFolder).toHaveBeenCalledWith(path, jasmine.anything()); - - let rows = adapter.getRows(); - expect(rows.length).toBe(1); - expect((rows[0]).node).toBe(folder); - }); - */ - it('should covert cell value to formatted date', () => { let rawValue = new Date(2015, 6, 15, 21, 43, 11); // Wed Jul 15 2015 21:43:11 GMT+0100 (BST); let dateValue = 'Jul 15, 2015, 9:43:11 PM'; @@ -145,7 +131,7 @@ describe('ShareDataTableAdapter', () => { }; let row = new ShareDataRow(file); - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let value = adapter.getValue(row, col); expect(value).toBe(dateValue); @@ -165,7 +151,7 @@ describe('ShareDataTableAdapter', () => { }; let row = new ShareDataRow(file); - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let value = adapter.getValue(row, col); expect(value).toBe(dateValue); @@ -183,7 +169,7 @@ describe('ShareDataTableAdapter', () => { }; let row = new ShareDataRow(file); - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let value = adapter.getValue(row, col); expect(value).toBe(rawValue); @@ -201,7 +187,7 @@ describe('ShareDataTableAdapter', () => { }; let row = new ShareDataRow(file); - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); spyOn(console, 'error').and.stub(); let value = adapter.getValue(row, col); @@ -209,18 +195,6 @@ describe('ShareDataTableAdapter', () => { expect(console.error).toHaveBeenCalled(); }); - it('should generate fallback icon for a file thumbnail with unknown mime type', () => { - let adapter = new ShareDataTableAdapter(documentListService, null); - - let file = new FileNode('file', 'wrong-mime'); - let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; - - let value = adapter.getValue(row, col); - expect(value).toContain(`assets/images/ft_ic_miscellaneous`); - expect(value).toContain(`svg`); - }); - it('should generate fallback icon for a file thumbnail with missing mime type', () => { let adapter = new ShareDataTableAdapter(documentListService, null); @@ -228,7 +202,7 @@ describe('ShareDataTableAdapter', () => { file.entry.content.mimeType = null; let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; + let col = {type: 'image', key: '$thumbnail'}; let value = adapter.getValue(row, col); expect(value).toContain(`assets/images/ft_ic_miscellaneous`); @@ -242,20 +216,7 @@ describe('ShareDataTableAdapter', () => { file.entry.content = null; let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; - - let value = adapter.getValue(row, col); - expect(value).toContain(`assets/images/ft_ic_miscellaneous`); - expect(value).toContain(`svg`); - }); - - it('should generate fallback icon when document service fails to find one', () => { - spyOn(documentListService, 'getMimeTypeIcon').and.returnValue(null); - let adapter = new ShareDataTableAdapter(documentListService, null); - - let file = new FileNode(); - let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; + let col = {type: 'image', key: '$thumbnail'}; let value = adapter.getValue(row, col); expect(value).toContain(`assets/images/ft_ic_miscellaneous`); @@ -268,19 +229,19 @@ describe('ShareDataTableAdapter', () => { let file = new FileNode(); file.entry['icon'] = imageUrl; - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let row = new ShareDataRow(file); - let col = { type: 'image', key: 'icon' }; + let col = {type: 'image', key: 'icon'}; let value = adapter.getValue(row, col); expect(value).toBe(imageUrl); }); it('should resolve folder icon', () => { - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let row = new ShareDataRow(new FolderNode()); - let col = { type: 'image', key: '$thumbnail' }; + let col = {type: 'image', key: '$thumbnail'}; let value = adapter.getValue(row, col); expect(value).toContain(`assets/images/ft_ic_folder`); @@ -296,7 +257,7 @@ describe('ShareDataTableAdapter', () => { let file = new FileNode(); let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; + let col = {type: 'image', key: '$thumbnail'}; let value = adapter.getValue(row, col); expect(value).toBe(imageUrl); @@ -304,39 +265,27 @@ describe('ShareDataTableAdapter', () => { }); it('should resolve fallback file icon for unknown node', () => { - let adapter = new ShareDataTableAdapter(null, null); + let adapter = new ShareDataTableAdapter(documentListService, null); let file = new FileNode(); file.entry.isFile = false; file.entry.isFolder = false; let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; + let col = {type: 'image', key: '$thumbnail'}; let value = adapter.getValue(row, col); expect(value).toContain(`assets/images/ft_ic_miscellaneous`); expect(value).toContain(`svg`); }); - it('should require document service to resolve thumbnail', () => { - let adapter = new ShareDataTableAdapter(null, null); - adapter.thumbnails = true; - - let file = new FileNode(); - let row = new ShareDataRow(file); - let col = { type: 'image', key: '$thumbnail' }; - - let value = adapter.getValue(row, col); - expect(value).toBeNull(); - }); - it('should put folders on top upon sort', () => { let file1 = new FileNode('file1'); let file2 = new FileNode('file2'); let folder = new FolderNode(); - let col = { key: 'name' }; - let adapter = new ShareDataTableAdapter(null, [col]); + let col = {key: 'name'}; + let adapter = new ShareDataTableAdapter(documentListService, [col]); adapter.setSorting(new DataSorting('name', 'asc')); adapter.setRows([ @@ -358,8 +307,8 @@ describe('ShareDataTableAdapter', () => { let file2 = new FileNode('file2'); file2.entry['dateProp'] = new Date(2016, 6, 30, 13, 14, 2); - let col = { key: 'dateProp' }; - let adapter = new ShareDataTableAdapter(null, [col]); + let col = {key: 'dateProp'}; + let adapter = new ShareDataTableAdapter(documentListService, [col]); adapter.setRows([ new ShareDataRow(file2), @@ -388,7 +337,9 @@ describe('ShareDataRow', () => { }); it('should require object source', () => { - expect(() => { return new ShareDataRow(null); }).toThrowError(ShareDataRow.ERR_OBJECT_NOT_FOUND); + expect(() => { + return new ShareDataRow(null); + }).toThrowError(ShareDataRow.ERR_OBJECT_NOT_FOUND); }); it('should resolve value from node entry', () => { diff --git a/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.ts b/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.ts index 87febcd237..cd5559cee9 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/data/share-datatable-adapter.ts @@ -108,30 +108,23 @@ export class ShareDataTableAdapter implements DataTableAdapter { let node = ( row).node; if (node.entry.isFolder) { - return this.getImagePath('ft_ic_folder.svg'); + return this.documentListService.getMimeTypeIcon('folder'); } if (node.entry.isFile) { - if (this.thumbnails) { - if (this.documentListService) { - return this.documentListService.getDocumentThumbnailUrl(node); - } - return null; + return this.documentListService.getDocumentThumbnailUrl(node); } if (node.entry.content) { let mimeType = node.entry.content.mimeType; if (mimeType) { - let icon = this.documentListService.getMimeTypeIcon(mimeType); - if (icon) { - return this.getImagePath(icon); - } + return this.documentListService.getMimeTypeIcon(mimeType); } } } - return this.getImagePath('ft_ic_miscellaneous.svg'); + return this.documentListService.getDefaultMimeTypeIcon(); } } @@ -227,9 +220,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { this.rows = rows; } - getImagePath(id: string): any { - return require('../assets/images/' + id); - } } export class ShareDataRow implements DataRow { diff --git a/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.spec.ts b/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.spec.ts index 58ae5fb57f..70c6bca4b0 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.spec.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.spec.ts @@ -22,7 +22,6 @@ import { LogService, LogServiceMock } from 'ng2-alfresco-core'; -import { FileNode } from '../assets/document-library.model.mock'; import { CookieServiceMock } from '../../../ng2-alfresco-core/src/assets/cookie.service.mock'; import { DocumentListService } from './document-list.service'; @@ -115,26 +114,6 @@ describe('DocumentListService', () => { jasmine.Ajax.uninstall(); }); - it('should require node to get thumbnail url', () => { - expect(service.getDocumentThumbnailUrl(null)).toBeNull(); - }); - - it('should require content service to get thumbnail url', () => { - let file = new FileNode(); - expect(service.getDocumentThumbnailUrl(file)).not.toBeNull(); - }); - - it('should resolve fallback icon for mime type', () => { - let icon = service.getMimeTypeIcon('image/png'); - expect(icon).toBe(service.mimeTypeIcons['image/png']); - }); - - it('should resolve default icon for mime type', () => { - expect(service.getMimeTypeIcon(null)).toBe(DocumentListService.DEFAULT_MIME_TYPE_ICON); - expect(service.getMimeTypeIcon('')).toBe(DocumentListService.DEFAULT_MIME_TYPE_ICON); - expect(service.getMimeTypeIcon('missing/type')).toBe(DocumentListService.DEFAULT_MIME_TYPE_ICON); - }); - it('should create a folder in the path', () => { service.createFolder('fake-name', 'fake-path').subscribe( res => { diff --git a/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.ts b/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.ts index 5f57283614..ea220d1522 100644 --- a/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.ts +++ b/ng2-components/ng2-alfresco-documentlist/src/services/document-list.service.ts @@ -19,48 +19,18 @@ import { Injectable } from '@angular/core'; import { Response } from '@angular/http'; import { Observable } from 'rxjs/Rx'; import { NodePaging, MinimalNodeEntity, MinimalNodeEntryEntity } from 'alfresco-js-api'; -import { AlfrescoAuthenticationService, AlfrescoContentService, AlfrescoApiService, LogService } from 'ng2-alfresco-core'; +import { AlfrescoAuthenticationService, AlfrescoContentService, AlfrescoApiService, LogService, ThumbnailService } from 'ng2-alfresco-core'; @Injectable() export class DocumentListService { - static DEFAULT_MIME_TYPE_ICON: string = 'ft_ic_miscellaneous.svg'; - static ROOT_ID = '-root-'; - mimeTypeIcons: any = { - 'image/png': 'ft_ic_raster_image.svg', - 'image/jpeg': 'ft_ic_raster_image.svg', - 'image/gif': 'ft_ic_raster_image.svg', - 'application/pdf': 'ft_ic_pdf.svg', - 'application/vnd.ms-excel': 'ft_ic_ms_excel.svg', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'ft_ic_ms_excel.svg', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': 'ft_ic_ms_excel.svg', - 'application/msword': 'ft_ic_ms_word.svg', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'ft_ic_ms_word.svg', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': 'ft_ic_ms_word.svg', - 'application/vnd.ms-powerpoint': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.template': 'ft_ic_ms_powerpoint.svg', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': 'ft_ic_ms_powerpoint.svg', - 'video/mp4': 'ft_ic_video.svg', - 'text/plain': 'ft_ic_document.svg', - 'application/x-javascript': 'ft_ic_document.svg', - 'application/json': 'ft_ic_document.svg', - 'image/svg+xml': 'ft_ic_vector_image.svg', - 'text/html': 'ft_ic_website.svg', - 'application/x-compressed': 'ft_ic_archive.svg', - 'application/x-zip-compressed': 'ft_ic_archive.svg', - 'application/zip': 'ft_ic_archive.svg', - 'application/vnd.apple.keynote': 'ft_ic_presentation.svg', - 'application/vnd.apple.pages': 'ft_ic_document.svg', - 'application/vnd.apple.numbers': 'ft_ic_spreadsheet.svg' - }; - constructor(private authService: AlfrescoAuthenticationService, private contentService: AlfrescoContentService, private apiService: AlfrescoApiService, - private logService: LogService) { + private logService: LogService, + private thumbnailService: ThumbnailService) { } private getNodesPromise(folder: string, opts?: any): Promise { @@ -134,15 +104,15 @@ export class DocumentListService { * @returns {string} URL address. */ getDocumentThumbnailUrl(node: MinimalNodeEntity) { - if (node && this.contentService) { - return this.contentService.getDocumentThumbnailUrl(node); - } - return null; + return this.thumbnailService.getDocumentThumbnailUrl(node); } getMimeTypeIcon(mimeType: string): string { - let icon = this.mimeTypeIcons[mimeType]; - return icon || DocumentListService.DEFAULT_MIME_TYPE_ICON; + return this.thumbnailService.getMimeTypeIcon(mimeType); + } + + getDefaultMimeTypeIcon(): string { + return this.thumbnailService.getDefaultMimeTypeIcon(); } private handleError(error: Response) { diff --git a/ng2-components/ng2-alfresco-search/index.ts b/ng2-components/ng2-alfresco-search/index.ts index 6ac815eb1d..62629bdaa1 100644 --- a/ng2-components/ng2-alfresco-search/index.ts +++ b/ng2-components/ng2-alfresco-search/index.ts @@ -19,7 +19,6 @@ import { NgModule, ModuleWithProviders } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { CoreModule } from 'ng2-alfresco-core'; import { AlfrescoSearchService } from './src/services/alfresco-search.service'; -import { AlfrescoThumbnailService } from './src/services/alfresco-thumbnail.service'; import { AlfrescoSearchComponent } from './src/components/alfresco-search.component'; import { AlfrescoSearchControlComponent } from './src/components/alfresco-search-control.component'; import { AlfrescoSearchAutocompleteComponent } from './src/components/alfresco-search-autocomplete.component'; @@ -27,7 +26,6 @@ import { DocumentListModule } from 'ng2-alfresco-documentlist'; // services export * from './src/services/alfresco-search.service'; -export * from './src/services/alfresco-thumbnail.service'; export * from './src/components/alfresco-search.component'; export * from './src/components/alfresco-search-control.component'; export * from './src/components/alfresco-search-autocomplete.component'; @@ -39,8 +37,7 @@ export const ALFRESCO_SEARCH_DIRECTIVES: [any] = [ ]; export const ALFRESCO_SEARCH_PROVIDERS: [any] = [ - AlfrescoSearchService, - AlfrescoThumbnailService + AlfrescoSearchService ]; @NgModule({ diff --git a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.html b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.html index af3d623fc0..04e51ce444 100644 --- a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.html +++ b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.html @@ -9,7 +9,7 @@ (keyup.arrowup)="onRowArrowUp($event)" (keyup.escape)="onRowEscape($event)" attr.data-automation-id="autocomplete_result_for_{{result.entry.name}}"> - {{getMimeTypeKey(result)|translate}} + {{result.entry.name}}
{{result.entry.name}}
{{result.entry.createdByUser.displayName}}
diff --git a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.spec.ts b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.spec.ts index 3e2a83c70d..41f20b1e96 100644 --- a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.spec.ts +++ b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.spec.ts @@ -17,7 +17,7 @@ import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { AlfrescoSearchAutocompleteComponent } from './alfresco-search-autocomplete.component'; -import { AlfrescoThumbnailService } from './../services/alfresco-thumbnail.service'; +import { ThumbnailService } from 'ng2-alfresco-core'; import { TranslationMock } from './../assets/translation.service.mock'; import { result, results, folderResult, noResult, errorJson } from './../assets/alfresco-search.component.mock'; import { AlfrescoSearchService } from '../services/alfresco-search.service'; @@ -49,7 +49,7 @@ describe('AlfrescoSearchAutocompleteComponent', () => { declarations: [ AlfrescoSearchAutocompleteComponent ], // declare the test component providers: [ {provide: AlfrescoTranslationService, useClass: TranslationMock}, - AlfrescoThumbnailService, + ThumbnailService, AlfrescoSettingsService, AlfrescoApiService, AlfrescoAuthenticationService, @@ -130,19 +130,14 @@ describe('AlfrescoSearchAutocompleteComponent', () => { spyOn(searchService, 'getQueryNodesPromise') .and.returnValue(Promise.resolve(result)); - let thumbnailService = fixture.debugElement.injector.get(AlfrescoThumbnailService); + let thumbnailService = fixture.debugElement.injector.get(ThumbnailService); spyOn(thumbnailService, 'getMimeTypeIcon').and.returnValue('fake-type-icon.svg'); - spyOn(thumbnailService, 'getMimeTypeKey').and.returnValue('FAKE_TYPE'); - - let path = 'http://localhost/fake-type-icon.svg'; - spyOn(component, 'resolveIconPath').and.returnValue(path); component.resultsLoad.subscribe(() => { fixture.detectChanges(); let imgEl = element.querySelector('#result_row_0 img'); expect(imgEl).not.toBeNull(); - expect(imgEl.src).toBe(path); - expect(imgEl.alt).toBe('SEARCH.ICONS.FAKE_TYPE'); + expect(imgEl.src).toContain('fake-type-icon.svg'); done(); }); @@ -233,8 +228,7 @@ describe('AlfrescoSearchAutocompleteComponent', () => { it('should emit fileSelect event if when folder item clicked', (done) => { - spyOn(searchService, 'getQueryNodesPromise') - .and.returnValue(Promise.resolve(folderResult)); + spyOn(searchService, 'getQueryNodesPromise').and.returnValue(Promise.resolve(folderResult)); spyOn(component.fileSelect, 'emit'); component.resultsLoad.subscribe(() => { diff --git a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.ts b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.ts index 0e39a43c81..a4cdabb6aa 100644 --- a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.ts +++ b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-autocomplete.component.ts @@ -19,7 +19,7 @@ import { Component, ElementRef, EventEmitter, Input, OnInit, OnChanges, Output, import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { MinimalNodeEntity } from 'alfresco-js-api'; import { AlfrescoSearchService, SearchOptions } from './../services/alfresco-search.service'; -import { AlfrescoThumbnailService } from './../services/alfresco-thumbnail.service'; +import { ThumbnailService } from 'ng2-alfresco-core'; declare var require: any; @@ -71,7 +71,7 @@ export class AlfrescoSearchAutocompleteComponent implements OnInit, OnChanges { constructor(private searchService: AlfrescoSearchService, private translateService: AlfrescoTranslationService, - private thumbnailService: AlfrescoThumbnailService) { + private thumbnailService: ThumbnailService) { } ngOnInit(): void { @@ -124,30 +124,16 @@ export class AlfrescoSearchAutocompleteComponent implements OnInit, OnChanges { * @returns {string} URL address. */ getMimeTypeIcon(node: MinimalNodeEntity): string { + let mimeType; + if (node.entry.content && node.entry.content.mimeType) { - let icon = this.thumbnailService.getMimeTypeIcon(node.entry.content.mimeType); - return this.resolveIconPath(icon); + mimeType = node.entry.content.mimeType; } if (node.entry.isFolder) { - return require('../assets/images/ft_ic_folder.svg'); + mimeType = 'folder'; } - } - resolveIconPath(icon: string): string { - return require('../assets/images/' + icon); - } - - /** - * Gets thumbnail message key for the given document node, which can be used to look up alt text - * @param node Node to get URL for. - * @returns {string} URL address. - */ - getMimeTypeKey(node: MinimalNodeEntity): string { - if (node.entry.content && node.entry.content.mimeType) { - return 'SEARCH.ICONS.' + this.thumbnailService.getMimeTypeKey(node.entry.content.mimeType); - } else { - return ''; - } + return this.thumbnailService.getMimeTypeIcon(mimeType); } focusResult(): void { diff --git a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.spec.ts b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.spec.ts index 79ef73cb6a..0280d13b1b 100644 --- a/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.spec.ts +++ b/ng2-components/ng2-alfresco-search/src/components/alfresco-search-control.component.spec.ts @@ -18,7 +18,7 @@ import { ComponentFixture, TestBed, async } from '@angular/core/testing'; import { AlfrescoSearchControlComponent } from './alfresco-search-control.component'; import { AlfrescoSearchAutocompleteComponent } from './alfresco-search-autocomplete.component'; -import { AlfrescoThumbnailService } from './../services/alfresco-thumbnail.service'; +import { ThumbnailService } from 'ng2-alfresco-core'; import { TranslationMock } from './../assets/translation.service.mock'; import { result } from './../assets/alfresco-search.component.mock'; import { CoreModule, AlfrescoTranslationService } from 'ng2-alfresco-core'; @@ -43,7 +43,7 @@ describe('AlfrescoSearchControlComponent', () => { ], providers: [ {provide: AlfrescoTranslationService, useClass: TranslationMock}, - AlfrescoThumbnailService, + ThumbnailService, AlfrescoSearchService ] }).compileComponents().then(() => { diff --git a/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.spec.ts b/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.spec.ts deleted file mode 100644 index 8ad849eb14..0000000000 --- a/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { TestBed, async } from '@angular/core/testing'; -import { AlfrescoThumbnailService } from './alfresco-thumbnail.service'; -import { CoreModule } from 'ng2-alfresco-core'; - -describe('AlfrescoThumbnailService', () => { - - let service: AlfrescoThumbnailService; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - imports: [ - CoreModule.forRoot() - ], - providers: [ - AlfrescoThumbnailService - ] - }).compileComponents(); - })); - - beforeEach(() => { - service = TestBed.get(AlfrescoThumbnailService); - }); - - it('should return the correct icon for a plain text file', () => { - expect(service.getMimeTypeIcon('text/plain')).toBe('ft_ic_document.svg'); - }); - - it('should return the correct icon for a PNG file', () => { - expect(service.getMimeTypeIcon('image/png')).toBe('ft_ic_raster_image.svg'); - }); - - it('should return the correct icon for a MP4 video file', () => { - expect(service.getMimeTypeIcon('video/mp4')).toBe('ft_ic_video.svg'); - }); - - it('should return a generic icon for an unknown file', () => { - expect(service.getMimeTypeIcon('x-unknown/yyy')).toBe('ft_ic_miscellaneous.svg'); - }); - - it('should return the thumbnail URL for a content item', () => { - spyOn(service.contentService, 'getDocumentThumbnailUrl').and.returnValue('/fake-thumbnail.png'); - expect(service.getDocumentThumbnailUrl({})).toBe('/fake-thumbnail.png'); - }); - -}); diff --git a/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.ts b/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.ts deleted file mode 100644 index 6cec75e9e4..0000000000 --- a/ng2-components/ng2-alfresco-search/src/services/alfresco-thumbnail.service.ts +++ /dev/null @@ -1,73 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Injectable } from '@angular/core'; -import { AlfrescoContentService } from 'ng2-alfresco-core'; - -@Injectable() -export class AlfrescoThumbnailService { - - mimeTypeIcons: any = { - 'image/png': 'ft_ic_raster_image', - 'image/jpeg': 'ft_ic_raster_image', - 'image/gif': 'ft_ic_raster_image', - 'application/pdf': 'ft_ic_pdf', - 'application/vnd.ms-excel': 'ft_ic_ms_excel', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'ft_ic_ms_excel', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.template': 'ft_ic_ms_excel', - 'application/msword': 'ft_ic_ms_word', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'ft_ic_ms_word', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.template': 'ft_ic_ms_word', - 'application/vnd.ms-powerpoint': 'ft_ic_ms_powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'ft_ic_ms_powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.template': 'ft_ic_ms_powerpoint', - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': 'ft_ic_ms_powerpoint', - 'video/mp4': 'ft_ic_video', - 'text/plain': 'ft_ic_document', - 'application/x-javascript': 'ft_ic_document', - 'application/json': 'ft_ic_document', - 'image/svg+xml': 'ft_ic_vector_image', - 'text/html': 'ft_ic_website', - 'application/x-compressed': 'ft_ic_archive', - 'application/x-zip-compressed': 'ft_ic_archive', - 'application/zip': 'ft_ic_archive', - 'application/vnd.apple.keynote': 'ft_ic_presentation', - 'application/vnd.apple.pages': 'ft_ic_document', - 'application/vnd.apple.numbers': 'ft_ic_spreadsheet' - }; - - constructor(public contentService: AlfrescoContentService) { - } - - /** - * Get thumbnail URL for the given document node. - * @param document Node to get URL for. - * @returns {string} URL address. - */ - public getDocumentThumbnailUrl(document: any): string { - return this.contentService.getDocumentThumbnailUrl(document); - } - - public getMimeTypeKey(mimeType: string): string { - let icon = this.mimeTypeIcons[mimeType]; - return icon || 'ft_ic_miscellaneous'; - } - - public getMimeTypeIcon(mimeType: string): string { - return this.getMimeTypeKey(mimeType) + '.svg'; - } -}