@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
75 lines • 9.2 kB
JavaScript
import { Pipe } from '@angular/core';
import { FilesService, GENERIC_FILE_TYPE } from './files.service';
import * as i0 from "@angular/core";
import * as i1 from "./files.service";
/**
* Returns a generic file icon name matching the extension of the given File object.
* One of the following icon names may be returned: file-archive-o, file-audio-o,
* document-with-code, file, file-excel-o, file-image-o, pdf-2, file-powerpoint-o,
* file-text, file-video-o, file-word-o, file, or unknown.
*
* ```html
* <div *ngFor="let file of droppedFiles">
* <i class="icon" [c8yIcon]="file | fileIcon"></i>
* </div>
* ```
*/
export class GenericFileIconPipe {
constructor(filesService) {
this.filesService = filesService;
}
transform(file) {
const genericType = this.getGenericType(file);
return this.getIcon(genericType);
}
getGenericType(file) {
const extension = this.filesService.getFileExtension(file);
for (const val of Object.values(GENERIC_FILE_TYPE)) {
const type = this.matchGenericType(val, extension);
if (type) {
return type;
}
}
return 'unknown';
}
getIcon(genericType) {
switch (genericType) {
case GENERIC_FILE_TYPE.ARCHIVE:
return 'file-archive-o';
case GENERIC_FILE_TYPE.AUDIO:
return 'file-audio-o';
case GENERIC_FILE_TYPE.CODE:
return 'document-with-code';
case GENERIC_FILE_TYPE.EPL:
return 'file';
case GENERIC_FILE_TYPE.EXCEL:
return 'file-excel-o';
case GENERIC_FILE_TYPE.IMAGE:
return 'file-image-o';
case GENERIC_FILE_TYPE.PDF:
return 'pdf-2';
case GENERIC_FILE_TYPE.POWERPOINT:
return 'file-powerpoint-o';
case GENERIC_FILE_TYPE.TEXT:
return 'file-text';
case GENERIC_FILE_TYPE.VIDEO:
return 'file-video-o';
case GENERIC_FILE_TYPE.WORD:
return 'file-word-o';
default:
return 'file';
}
}
matchGenericType(type, ext) {
const fileTypesMap = this.filesService.fileTypeExtensionsMap;
const extensions = fileTypesMap[type].exts;
return extensions.includes(ext) ? type : undefined;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GenericFileIconPipe, deps: [{ token: i1.FilesService }], target: i0.ɵɵFactoryTarget.Pipe }); }
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GenericFileIconPipe, name: "fileIcon" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GenericFileIconPipe, decorators: [{
type: Pipe,
args: [{ name: 'fileIcon' }]
}], ctorParameters: () => [{ type: i1.FilesService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1maWxlLWljb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL2dlbmVyaWMtZmlsZS1pY29uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFbEU7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQW1CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUVqRCxTQUFTLENBQUMsSUFBVTtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVU7UUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFbkQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sQ0FBQyxXQUEwQztRQUNoRCxRQUFRLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssaUJBQWlCLENBQUMsT0FBTztnQkFDNUIsT0FBTyxnQkFBZ0IsQ0FBQztZQUMxQixLQUFLLGlCQUFpQixDQUFDLEtBQUs7Z0JBQzFCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQkFDekIsT0FBTyxvQkFBb0IsQ0FBQztZQUM5QixLQUFLLGlCQUFpQixDQUFDLEdBQUc7Z0JBQ3hCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUssaUJBQWlCLENBQUMsS0FBSztnQkFDMUIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUMxQixPQUFPLGNBQWMsQ0FBQztZQUN4QixLQUFLLGlCQUFpQixDQUFDLEdBQUc7Z0JBQ3hCLE9BQU8sT0FBTyxDQUFDO1lBQ2pCLEtBQUssaUJBQWlCLENBQUMsVUFBVTtnQkFDL0IsT0FBTyxtQkFBbUIsQ0FBQztZQUM3QixLQUFLLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3pCLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLEtBQUssaUJBQWlCLENBQUMsS0FBSztnQkFDMUIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJO2dCQUN6QixPQUFPLGFBQWEsQ0FBQztZQUN2QjtnQkFDRSxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQVVPLGdCQUFnQixDQUN0QixJQUFPLEVBQ1AsR0FBVztRQUVYLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7UUFDN0QsTUFBTSxVQUFVLEdBQTBCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEUsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRCxDQUFDOytHQWpFVSxtQkFBbUI7NkdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlc1NlcnZpY2UsIEdFTkVSSUNfRklMRV9UWVBFIH0gZnJvbSAnLi9maWxlcy5zZXJ2aWNlJztcblxuLyoqXG4gKiBSZXR1cm5zIGEgZ2VuZXJpYyBmaWxlIGljb24gbmFtZSBtYXRjaGluZyB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiBGaWxlIG9iamVjdC5cbiAqIE9uZSBvZiB0aGUgZm9sbG93aW5nIGljb24gbmFtZXMgbWF5IGJlIHJldHVybmVkOiBmaWxlLWFyY2hpdmUtbywgZmlsZS1hdWRpby1vLFxuICogZG9jdW1lbnQtd2l0aC1jb2RlLCBmaWxlLCBmaWxlLWV4Y2VsLW8sIGZpbGUtaW1hZ2UtbywgcGRmLTIsIGZpbGUtcG93ZXJwb2ludC1vLFxuICogZmlsZS10ZXh0LCBmaWxlLXZpZGVvLW8sIGZpbGUtd29yZC1vLCBmaWxlLCBvciB1bmtub3duLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZHJvcHBlZEZpbGVzXCI+XG4gKlx0PGkgY2xhc3M9XCJpY29uXCIgW2M4eUljb25dPVwiZmlsZSB8IGZpbGVJY29uXCI+PC9pPlxuICogPC9kaXY+XG4gKiBgYGBcbiAqL1xuQFBpcGUoeyBuYW1lOiAnZmlsZUljb24nIH0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY0ZpbGVJY29uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKGZpbGU6IEZpbGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdlbmVyaWNUeXBlID0gdGhpcy5nZXRHZW5lcmljVHlwZShmaWxlKTtcbiAgICByZXR1cm4gdGhpcy5nZXRJY29uKGdlbmVyaWNUeXBlKTtcbiAgfVxuXG4gIGdldEdlbmVyaWNUeXBlKGZpbGU6IEZpbGUpOiBHRU5FUklDX0ZJTEVfVFlQRSB8ICd1bmtub3duJyB7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5maWxlc1NlcnZpY2UuZ2V0RmlsZUV4dGVuc2lvbihmaWxlKTtcblxuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC52YWx1ZXMoR0VORVJJQ19GSUxFX1RZUEUpKSB7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5tYXRjaEdlbmVyaWNUeXBlKHZhbCwgZXh0ZW5zaW9uKTtcblxuICAgICAgaWYgKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAndW5rbm93bic7XG4gIH1cblxuICBnZXRJY29uKGdlbmVyaWNUeXBlOiBHRU5FUklDX0ZJTEVfVFlQRSB8ICd1bmtub3duJyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChnZW5lcmljVHlwZSkge1xuICAgICAgY2FzZSBHRU5FUklDX0ZJTEVfVFlQRS5BUkNISVZFOlxuICAgICAgICByZXR1cm4gJ2ZpbGUtYXJjaGl2ZS1vJztcbiAgICAgIGNhc2UgR0VORVJJQ19GSUxFX1RZUEUuQVVESU86XG4gICAgICAgIHJldHVybiAnZmlsZS1hdWRpby1vJztcbiAgICAgIGNhc2UgR0VORVJJQ19GSUxFX1RZUEUuQ09ERTpcbiAgICAgICAgcmV0dXJuICdkb2N1bWVudC13aXRoLWNvZGUnO1xuICAgICAgY2FzZSBHRU5FUklDX0ZJTEVfVFlQRS5FUEw6XG4gICAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLkVYQ0VMOlxuICAgICAgICByZXR1cm4gJ2ZpbGUtZXhjZWwtbyc7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLklNQUdFOlxuICAgICAgICByZXR1cm4gJ2ZpbGUtaW1hZ2Utbyc7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLlBERjpcbiAgICAgICAgcmV0dXJuICdwZGYtMic7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLlBPV0VSUE9JTlQ6XG4gICAgICAgIHJldHVybiAnZmlsZS1wb3dlcnBvaW50LW8nO1xuICAgICAgY2FzZSBHRU5FUklDX0ZJTEVfVFlQRS5URVhUOlxuICAgICAgICByZXR1cm4gJ2ZpbGUtdGV4dCc7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLlZJREVPOlxuICAgICAgICByZXR1cm4gJ2ZpbGUtdmlkZW8tbyc7XG4gICAgICBjYXNlIEdFTkVSSUNfRklMRV9UWVBFLldPUkQ6XG4gICAgICAgIHJldHVybiAnZmlsZS13b3JkLW8nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmaWxlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hdGNoR2VuZXJpY1R5cGU8VCBleHRlbmRzIGtleW9mIEZpbGVzU2VydmljZVsnZmlsZVR5cGVFeHRlbnNpb25zTWFwJ10+KFxuICAgIHR5cGU6IFQsXG4gICAgZXh0OiBGaWxlc1NlcnZpY2VbJ2ZpbGVUeXBlRXh0ZW5zaW9uc01hcCddW1RdWydleHRzJ11bbnVtYmVyXVxuICApOiBUO1xuICBwcml2YXRlIG1hdGNoR2VuZXJpY1R5cGU8VCBleHRlbmRzIGtleW9mIEZpbGVzU2VydmljZVsnZmlsZVR5cGVFeHRlbnNpb25zTWFwJ10+KFxuICAgIHR5cGU6IFQsXG4gICAgZXh0OiBzdHJpbmdcbiAgKTogVCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBtYXRjaEdlbmVyaWNUeXBlPFQgZXh0ZW5kcyBrZXlvZiBGaWxlc1NlcnZpY2VbJ2ZpbGVUeXBlRXh0ZW5zaW9uc01hcCddPihcbiAgICB0eXBlOiBULFxuICAgIGV4dDogc3RyaW5nXG4gICk6IEdFTkVSSUNfRklMRV9UWVBFIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmaWxlVHlwZXNNYXAgPSB0aGlzLmZpbGVzU2VydmljZS5maWxlVHlwZUV4dGVuc2lvbnNNYXA7XG4gICAgY29uc3QgZXh0ZW5zaW9uczogUmVhZG9ubHlBcnJheTxzdHJpbmc+ID0gZmlsZVR5cGVzTWFwW3R5cGVdLmV4dHM7XG4gICAgcmV0dXJuIGV4dGVuc2lvbnMuaW5jbHVkZXMoZXh0KSA/IHR5cGUgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==