UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

137 lines 18.7 kB
import { NgModule } from '@angular/core'; import { gettext, hookPatternMessages, ProviderConfigurationModule } from '@c8y/ngx-components'; import { get } from 'lodash-es'; import { MESSAGES_CONNECTIVITY_SIM } from './pattern-messages.data'; import { SimGuard } from './sim.guard'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components"; export async function encodeFiles(model, fields) { const result = { ...model }; const fileFields = (get(fields, '[0].fieldGroup') || []).filter((field) => { return field.type === 'file' && field.templateOptions.contentEncoding === 'base64'; }); for (const fileField of fileFields) { const files = model[fileField.key]; if (files && Array.isArray(files) && files.length) { if (fileField.templateOptions.maxAllowedFiles === 1) { result[fileField.key] = (await files[0].readAsDataURL()).replace(/data:\S+;base64,/gi, ''); } else { const encodedFileContent = []; for (const file of files) { encodedFileContent.push((await file.readAsDataURL()).replace(/data:\S+;base64,/gi, '')); } result[fileField.key] = encodedFileContent; } } else if (typeof files === 'string' || files instanceof String) { result[fileField.key] = files; } } return result; } export class SimModule { static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SimModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SimModule, imports: [i1.ProviderConfigurationModule] }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SimModule, providers: [SimGuard, hookPatternMessages(MESSAGES_CONNECTIVITY_SIM)], imports: [ProviderConfigurationModule.config([ { navigation: { label: gettext('Connectivity'), path: 'connectivitySettings', icon: 'plug', parent: gettext('Settings'), priority: 1000, preventDuplicates: true }, tab: { path: 'sim_provider_settings', label: 'SIM provider settings', icon: 'mobile', canActivate: [SimGuard] }, layout: { pageTitle: gettext('Connectivity'), cardTitle: gettext('Settings'), description: gettext(`In order to see the 'Connectivity' tab in device details, the user needs to have 'Read' permission for 'Connectivity'. To change SIM card status and send text messages, the user needs to have 'Admin' permission for 'Connectivity'.`), providerName: gettext('Provider'), providerNamePlaceholder: gettext('Select or type to filter providers'), providerNameNoMatchesHint: gettext('Select one of the existing providers.'), deleteRoles: ['ROLE_CONNECTIVITY_ADMIN'], deleteBtnLabel: gettext('Delete'), saveRoles: ['ROLE_CONNECTIVITY_ADMIN'], saveBtnLabel: gettext('Save'), beforeSaveHook: encodeFiles, configurationUpdatedSuccessMsg: gettext('Settings updated.'), deleteConfigurationModalTitle: gettext('Delete settings'), deleteConfigurationModalBody: gettext(`You are about to delete SIM provider settings. Do you want to proceed?`), deleteConfigurationModalOkBtnLabel: gettext('Delete'), configurationDeletedSuccessMsg: gettext('Settings deleted.') }, endpoint: { definitionsEndpoint: { baseUrl: 'service/connectivity/metadata', listUrl: 'definitions' }, configurationEndpoint: { baseUrl: 'service/connectivity/metadata', listUrl: 'sim/provider' } } } ])] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SimModule, decorators: [{ type: NgModule, args: [{ providers: [SimGuard, hookPatternMessages(MESSAGES_CONNECTIVITY_SIM)], imports: [ ProviderConfigurationModule.config([ { navigation: { label: gettext('Connectivity'), path: 'connectivitySettings', icon: 'plug', parent: gettext('Settings'), priority: 1000, preventDuplicates: true }, tab: { path: 'sim_provider_settings', label: 'SIM provider settings', icon: 'mobile', canActivate: [SimGuard] }, layout: { pageTitle: gettext('Connectivity'), cardTitle: gettext('Settings'), description: gettext(`In order to see the 'Connectivity' tab in device details, the user needs to have 'Read' permission for 'Connectivity'. To change SIM card status and send text messages, the user needs to have 'Admin' permission for 'Connectivity'.`), providerName: gettext('Provider'), providerNamePlaceholder: gettext('Select or type to filter providers'), providerNameNoMatchesHint: gettext('Select one of the existing providers.'), deleteRoles: ['ROLE_CONNECTIVITY_ADMIN'], deleteBtnLabel: gettext('Delete'), saveRoles: ['ROLE_CONNECTIVITY_ADMIN'], saveBtnLabel: gettext('Save'), beforeSaveHook: encodeFiles, configurationUpdatedSuccessMsg: gettext('Settings updated.'), deleteConfigurationModalTitle: gettext('Delete settings'), deleteConfigurationModalBody: gettext(`You are about to delete SIM provider settings. Do you want to proceed?`), deleteConfigurationModalOkBtnLabel: gettext('Delete'), configurationDeletedSuccessMsg: gettext('Settings deleted.') }, endpoint: { definitionsEndpoint: { baseUrl: 'service/connectivity/metadata', listUrl: 'definitions' }, configurationEndpoint: { baseUrl: 'service/connectivity/metadata', listUrl: 'sim/provider' } } } ]) ] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Nvbm5lY3Rpdml0eS9zaW0vc2ltLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFFTCxPQUFPLEVBQ1AsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUU1QixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBRXZDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixLQUF5QixFQUN6QixNQUEyQjtJQUUzQixNQUFNLE1BQU0sR0FBdUIsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQ2hELE1BQU0sVUFBVSxHQUF3QixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ2xGLENBQUMsS0FBd0IsRUFBRSxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDO0lBQ3JGLENBQUMsQ0FDRixDQUFDO0lBRUYsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBa0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFhLENBQUMsQ0FBQztRQUM1RCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsRCxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsZUFBZSxL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QUFDO29DQUM3QixjQUFjLEVBQUUsV0FBVztvQ0FDM0IsOEJBQThCLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDO29DQUM1RCw2QkFBNkIsRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7b0NBQ3pELDRCQUE0QixFQUFFLE9BQU8sQ0FDbkMsd0VBQXdFLENBQ3pFO29DQUNELGtDQUFrQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7b0NBQ3JELDhCQUE4QixFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztpQ0FDN0Q7Z0NBQ0QsUUFBUSxFQUFFO29DQUNSLG1CQUFtQixFQUFFO3dDQUNuQixPQUFPLEVBQUUsK0JBQStCO3dDQUN4QyxPQUFPLEVBQUUsYUFBYTtxQ0FDdkI7b0NBQ0QscUJBQXFCLEVBQUU7d0NBQ3JCLE9BQU8sRUFBRSwrQkFBK0I7d0NBQ3hDLE9BQU8sRUFBRSxjQUFjO3FDQUN4QjtpQ0FDRjs2QkFDRjt5QkFDRixDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERyb3BwZWRGaWxlLFxuICBnZXR0ZXh0LFxuICBob29rUGF0dGVybk1lc3NhZ2VzLFxuICBQcm92aWRlckNvbmZpZ3VyYXRpb25Nb2R1bGUsXG4gIFByb3ZpZGVyUHJvcGVydGllc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgTUVTU0FHRVNfQ09OTkVDVElWSVRZX1NJTSB9IGZyb20gJy4vcGF0dGVybi1tZXNzYWdlcy5kYXRhJztcbmltcG9ydCB7IFNpbUd1YXJkIH0gZnJvbSAnLi9zaW0uZ3VhcmQnO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jb2RlRmlsZXMoXG4gIG1vZGVsOiBQcm92aWRlclByb3BlcnRpZXMsXG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXVxuKTogUHJvbWlzZTxQcm92aWRlclByb3BlcnRpZXM+IHtcbiAgY29uc3QgcmVzdWx0OiBQcm92aWRlclByb3BlcnRpZXMgPSB7IC4uLm1vZGVsIH07XG4gIGNvbnN0IGZpbGVGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSAoZ2V0KGZpZWxkcywgJ1swXS5maWVsZEdyb3VwJykgfHwgW10pLmZpbHRlcihcbiAgICAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGQudHlwZSA9PT0gJ2ZpbGUnICYmIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5jb250ZW50RW5jb2RpbmcgPT09ICdiYXNlNjQnO1xuICAgIH1cbiAgKTtcblxuICBmb3IgKGNvbnN0IGZpbGVGaWVsZCBvZiBmaWxlRmllbGRzKSB7XG4gICAgY29uc3QgZmlsZXM6IERyb3BwZWRGaWxlW10gPSBtb2RlbFtmaWxlRmllbGQua2V5IGFzIHN0cmluZ107XG4gICAgaWYgKGZpbGVzICYmIEFycmF5LmlzQXJyYXkoZmlsZXMpICYmIGZpbGVzLmxlbmd0aCkge1xuICAgICAgaWYgKGZpbGVGaWVsZC50ZW1wbGF0ZU9wdGlvbnMubWF4QWxsb3dlZEZpbGVzID09PSAxKSB7XG4gICAgICAgIHJlc3VsdFtmaWxlRmllbGQua2V5IGFzIHN0cmluZ10gPSAoYXdhaXQgZmlsZXNbMF0ucmVhZEFzRGF0YVVSTCgpKS5yZXBsYWNlKFxuICAgICAgICAgIC9kYXRhOlxcUys7YmFzZTY0LC9naSxcbiAgICAgICAgICAnJ1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZW5jb2RlZEZpbGVDb250ZW50OiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgIGVuY29kZWRGaWxlQ29udGVudC5wdXNoKChhd2FpdCBmaWxlLnJlYWRBc0RhdGFVUkwoKSkucmVwbGFjZSgvZGF0YTpcXFMrO2Jhc2U2NCwvZ2ksICcnKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHRbZmlsZUZpZWxkLmtleSBhcyBzdHJpbmddID0gZW5jb2RlZEZpbGVDb250ZW50O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpbGVzID09PSAnc3RyaW5nJyB8fCBmaWxlcyBpbnN0YW5jZW9mIFN0cmluZykge1xuICAgICAgcmVzdWx0W2ZpbGVGaWVsZC5rZXkgYXMgc3RyaW5nXSA9IGZpbGVzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtTaW1HdWFyZCwgaG9va1BhdHRlcm5NZXNzYWdlcyhNRVNTQUdFU19DT05ORUNUSVZJVFlfU0lNKV0sXG4gIGltcG9ydHM6IFtcbiAgICBQcm92aWRlckNvbmZpZ3VyYXRpb25Nb2R1bGUuY29uZmlnKFtcbiAgICAgIHtcbiAgICAgICAgbmF2aWdhdGlvbjoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdDb25uZWN0aXZpdHknKSxcbiAgICAgICAgICBwYXRoOiAnY29ubmVjdGl2aXR5U2V0dGluZ3MnLFxuICAgICAgICAgIGljb246ICdwbHVnJyxcbiAgICAgICAgICBwYXJlbnQ6IGdldHRleHQoJ1NldHRpbmdzJyksXG4gICAgICAgICAgcHJpb3JpdHk6IDEwMDAsXG4gICAgICAgICAgcHJldmVudER1cGxpY2F0ZXM6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgdGFiOiB7XG4gICAgICAgICAgcGF0aDogJ3NpbV9wcm92aWRlcl9zZXR0aW5ncycsXG4gICAgICAgICAgbGFiZWw6ICdTSU0gcHJvdmlkZXIgc2V0dGluZ3MnLFxuICAgICAgICAgIGljb246ICdtb2JpbGUnLFxuICAgICAgICAgIGNhbkFjdGl2YXRlOiBbU2ltR3VhcmRdXG4gICAgICAgIH0sXG4gICAgICAgIGxheW91dDoge1xuICAgICAgICAgIHBhZ2VUaXRsZTogZ2V0dGV4dCgnQ29ubmVjdGl2aXR5JyksXG4gICAgICAgICAgY2FyZFRpdGxlOiBnZXR0ZXh0KCdTZXR0aW5ncycpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KFxuICAgICAgICAgICAgYEluIG9yZGVyIHRvIHNlZSB0aGUgJ0Nvbm5lY3Rpdml0eScgdGFiIGluIGRldmljZSBkZXRhaWxzLCB0aGUgdXNlciBuZWVkcyB0byBoYXZlICdSZWFkJyBwZXJtaXNzaW9uIGZvciAnQ29ubmVjdGl2aXR5Jy4gVG8gY2hhbmdlIFNJTSBjYXJkIHN0YXR1cyBhbmQgc2VuZCB0ZXh0IG1lc3NhZ2VzLCB0aGUgdXNlciBuZWVkcyB0byBoYXZlICdBZG1pbicgcGVybWlzc2lvbiBmb3IgJ0Nvbm5lY3Rpdml0eScuYFxuICAgICAgICAgICksXG4gICAgICAgICAgcHJvdmlkZXJOYW1lOiBnZXR0ZXh0KCdQcm92aWRlcicpLFxuICAgICAgICAgIHByb3ZpZGVyTmFtZVBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdTZWxlY3Qgb3IgdHlwZSB0byBmaWx0ZXIgcHJvdmlkZXJzJyksXG4gICAgICAgICAgcHJvdmlkZXJOYW1lTm9NYXRjaGVzSGludDogZ2V0dGV4dCgnU2VsZWN0IG9uZSBvZiB0aGUgZXhpc3RpbmcgcHJvdmlkZXJzLicpLFxuICAgICAgICAgIGRlbGV0ZVJvbGVzOiBbJ1JPTEVfQ09OTkVDVElWSVRZX0FETUlOJ10sXG4gICAgICAgICAgZGVsZXRlQnRuTGFiZWw6IGdldHRleHQoJ0RlbGV0ZScpLFxuICAgICAgICAgIHNhdmVSb2xlczogWydST0xFX0NPTk5FQ1RJVklUWV9BRE1JTiddLFxuICAgICAgICAgIHNhdmVCdG5MYWJlbDogZ2V0dGV4dCgnU2F2ZScpLFxuICAgICAgICAgIGJlZm9yZVNhdmVIb29rOiBlbmNvZGVGaWxlcyxcbiAgICAgICAgICBjb25maWd1cmF0aW9uVXBkYXRlZFN1Y2Nlc3NNc2c6IGdldHRleHQoJ1NldHRpbmdzIHVwZGF0ZWQuJyksXG4gICAgICAgICAgZGVsZXRlQ29uZmlndXJhdGlvbk1vZGFsVGl0bGU6IGdldHRleHQoJ0RlbGV0ZSBzZXR0aW5ncycpLFxuICAgICAgICAgIGRlbGV0ZUNvbmZpZ3VyYXRpb25Nb2RhbEJvZHk6IGdldHRleHQoXG4gICAgICAgICAgICBgWW91IGFyZSBhYm91dCB0byBkZWxldGUgU0lNIHByb3ZpZGVyIHNldHRpbmdzLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP2BcbiAgICAgICAgICApLFxuICAgICAgICAgIGRlbGV0ZUNvbmZpZ3VyYXRpb25Nb2RhbE9rQnRuTGFiZWw6IGdldHRleHQoJ0RlbGV0ZScpLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb25EZWxldGVkU3VjY2Vzc01zZzogZ2V0dGV4dCgnU2V0dGluZ3MgZGVsZXRlZC4nKVxuICAgICAgICB9LFxuICAgICAgICBlbmRwb2ludDoge1xuICAgICAgICAgIGRlZmluaXRpb25zRW5kcG9pbnQ6IHtcbiAgICAgICAgICAgIGJhc2VVcmw6ICdzZXJ2aWNlL2Nvbm5lY3Rpdml0eS9tZXRhZGF0YScsXG4gICAgICAgICAgICBsaXN0VXJsOiAnZGVmaW5pdGlvbnMnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb25maWd1cmF0aW9uRW5kcG9pbnQ6IHtcbiAgICAgICAgICAgIGJhc2VVcmw6ICdzZXJ2aWNlL2Nvbm5lY3Rpdml0eS9tZXRhZGF0YScsXG4gICAgICAgICAgICBsaXN0VXJsOiAnc2ltL3Byb3ZpZGVyJ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2ltTW9kdWxlIHt9XG4iXX0=