@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
67 lines • 10.2 kB
JavaScript
import { Injectable } from '@angular/core';
import { InventoryBinaryService } from '@c8y/client';
import { InventoryService } from '@c8y/client';
import { AlertService, FilesService, gettext } from '@c8y/ngx-components';
import { TranslateService } from '@ngx-translate/core';
import { defaultObjectPositionValue } from './image-widget.model';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/client";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@ngx-translate/core";
export class ImageWidgetService {
constructor(inventory, fileService, alert, translate, binary) {
this.inventory = inventory;
this.fileService = fileService;
this.alert = alert;
this.translate = translate;
this.binary = binary;
}
async getImageDetails(imageBinaryId) {
if (!imageBinaryId) {
return null;
}
try {
const { data: imageBinaryMo } = await this.inventory.detail(imageBinaryId);
const file = await this.fileService.getFile(imageBinaryMo);
const base64 = await this.fileService.toBase64(file);
return {
file,
base64: base64
};
}
catch (e) {
const text = this.translate.instant(gettext('Unable to retrieve image with id: {{ imageBinaryId }}'), { imageBinaryId });
this.alert.danger(text, e?.data);
}
return null;
}
async uploadFile(file, options = {}) {
const hash = await this.fileService.getHashSumOfFile(file);
const fileDetails = { c8y_SHA256: hash };
const globalImage = !options?.dashboardMoId || options?.isDeviceTypeDashboard;
const partialBinaryMo = !globalImage
? { ...fileDetails }
: { ...fileDetails, c8y_Global: {} };
const { data: mo } = await this.binary.create(file, partialBinaryMo);
if (options?.dashboardMoId) {
await this.inventory.childAdditionsAdd(mo, options?.dashboardMoId);
}
return mo.id;
}
getStyling(config) {
if (!config.styling?.objectFit || config.styling?.objectFit === 'full-width') {
return null;
}
return {
'object-fit': config.styling.objectFit,
'object-position': `${config.styling?.objectPositionX || defaultObjectPositionValue} ${config.styling?.objectPositionY || defaultObjectPositionValue}`
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageWidgetService, deps: [{ token: i1.InventoryService }, { token: i2.FilesService }, { token: i2.AlertService }, { token: i3.TranslateService }, { token: i1.InventoryBinaryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageWidgetService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageWidgetService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.InventoryService }, { type: i2.FilesService }, { type: i2.AlertService }, { type: i3.TranslateService }, { type: i1.InventoryBinaryService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Utd2lkZ2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9pbWFnZS9pbWFnZS13aWRnZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyRCxPQUFPLEVBQXdCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwwQkFBMEIsRUFHM0IsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFHOUIsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLFNBQTJCLEVBQzNCLFdBQXlCLEVBQ3pCLEtBQW1CLEVBQ25CLFNBQTJCLEVBQzNCLE1BQThCO1FBSjlCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFjO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7SUFDckMsQ0FBQztJQUVKLEtBQUssQ0FBQyxlQUFlLENBQUMsYUFBNEI7UUFDaEQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMzRSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGFBQXFDLENBQUMsQ0FBQztZQUNuRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELE9BQU87Z0JBQ0wsSUFBSTtnQkFDSixNQUFNLEVBQUUsTUFBZ0I7YUFDekIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQ2pDLE9BQU8sQ0FBQyx1REFBdUQsQ0FBQyxFQUNoRSxFQUFFLGFBQWEsRUFBRSxDQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FDZCxJQUFVLEVBQ1YsVUFHSSxFQUFFO1FBRU4sTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELE1BQU0sV0FBVyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sV0FBVyxHQUFHLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxPQUFPLEVBQUUscUJBQXFCLENBQUM7UUFDOUUsTUFBTSxlQUFlLEdBQTRCLENBQUMsV0FBVztZQUMzRCxDQUFDLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRTtZQUNwQixDQUFDLENBQUMsRUFBRSxHQUFHLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDdkMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRSxJQUFJLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUF5QjtRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxTQUFTLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDN0UsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTztZQUNMLFlBQVksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFDdEMsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLGVBQWUsSUFBSSwwQkFBMEIsSUFDakYsTUFBTSxDQUFDLE9BQU8sRUFBRSxlQUFlLElBQUksMEJBQ3JDLEVBQUU7U0FDSCxDQUFDO0lBQ0osQ0FBQzsrR0EvRFUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzs0RkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgSW52ZW50b3J5QmluYXJ5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0QmluYXJ5LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBGaWxlc1NlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIGRlZmF1bHRPYmplY3RQb3NpdGlvblZhbHVlLFxuICBJbWFnZVdpZGdldENvbmZpZyxcbiAgSW1hZ2VXaWRnZXRTdHlsZVxufSBmcm9tICcuL2ltYWdlLXdpZGdldC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSW1hZ2VXaWRnZXRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGJpbmFyeTogSW52ZW50b3J5QmluYXJ5U2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgZ2V0SW1hZ2VEZXRhaWxzKGltYWdlQmluYXJ5SWQ6IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPHsgZmlsZTogRmlsZTsgYmFzZTY0OiBzdHJpbmcgfT4ge1xuICAgIGlmICghaW1hZ2VCaW5hcnlJZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YTogaW1hZ2VCaW5hcnlNbyB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKGltYWdlQmluYXJ5SWQpO1xuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuZ2V0RmlsZShpbWFnZUJpbmFyeU1vIGFzIElNYW5hZ2VkT2JqZWN0QmluYXJ5KTtcbiAgICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UudG9CYXNlNjQoZmlsZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlLFxuICAgICAgICBiYXNlNjQ6IGJhc2U2NCBhcyBzdHJpbmdcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc3QgdGV4dCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoJ1VuYWJsZSB0byByZXRyaWV2ZSBpbWFnZSB3aXRoIGlkOiB7eyBpbWFnZUJpbmFyeUlkIH19JyksXG4gICAgICAgIHsgaW1hZ2VCaW5hcnlJZCB9XG4gICAgICApO1xuICAgICAgdGhpcy5hbGVydC5kYW5nZXIodGV4dCwgZT8uZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyB1cGxvYWRGaWxlKFxuICAgIGZpbGU6IEZpbGUsXG4gICAgb3B0aW9uczoge1xuICAgICAgZGFzaGJvYXJkTW9JZD86IHN0cmluZztcbiAgICAgIGlzRGV2aWNlVHlwZURhc2hib2FyZD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuZ2V0SGFzaFN1bU9mRmlsZShmaWxlKTtcbiAgICBjb25zdCBmaWxlRGV0YWlscyA9IHsgYzh5X1NIQTI1NjogaGFzaCB9O1xuICAgIGNvbnN0IGdsb2JhbEltYWdlID0gIW9wdGlvbnM/LmRhc2hib2FyZE1vSWQgfHwgb3B0aW9ucz8uaXNEZXZpY2VUeXBlRGFzaGJvYXJkO1xuICAgIGNvbnN0IHBhcnRpYWxCaW5hcnlNbzogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSAhZ2xvYmFsSW1hZ2VcbiAgICAgID8geyAuLi5maWxlRGV0YWlscyB9XG4gICAgICA6IHsgLi4uZmlsZURldGFpbHMsIGM4eV9HbG9iYWw6IHt9IH07XG4gICAgY29uc3QgeyBkYXRhOiBtbyB9ID0gYXdhaXQgdGhpcy5iaW5hcnkuY3JlYXRlKGZpbGUsIHBhcnRpYWxCaW5hcnlNbyk7XG4gICAgaWYgKG9wdGlvbnM/LmRhc2hib2FyZE1vSWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5LmNoaWxkQWRkaXRpb25zQWRkKG1vLCBvcHRpb25zPy5kYXNoYm9hcmRNb0lkKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vLmlkO1xuICB9XG5cbiAgZ2V0U3R5bGluZyhjb25maWc6IEltYWdlV2lkZ2V0Q29uZmlnKTogSW1hZ2VXaWRnZXRTdHlsZSB8IG51bGwge1xuICAgIGlmICghY29uZmlnLnN0eWxpbmc/Lm9iamVjdEZpdCB8fCBjb25maWcuc3R5bGluZz8ub2JqZWN0Rml0ID09PSAnZnVsbC13aWR0aCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgJ29iamVjdC1maXQnOiBjb25maWcuc3R5bGluZy5vYmplY3RGaXQsXG4gICAgICAnb2JqZWN0LXBvc2l0aW9uJzogYCR7Y29uZmlnLnN0eWxpbmc/Lm9iamVjdFBvc2l0aW9uWCB8fCBkZWZhdWx0T2JqZWN0UG9zaXRpb25WYWx1ZX0gJHtcbiAgICAgICAgY29uZmlnLnN0eWxpbmc/Lm9iamVjdFBvc2l0aW9uWSB8fCBkZWZhdWx0T2JqZWN0UG9zaXRpb25WYWx1ZVxuICAgICAgfWBcbiAgICB9O1xuICB9XG59XG4iXX0=