Index

core/i18n/gettext.ts

_
Default value : (str) => str

core/router/router.service.ts

__MODE__
Type : string
HOOK_ONCE_ROUTE
: Use HOOK_ROUTE
Default value : new InjectionToken('RouteFactory')

A hook to use for Multi Provider extension.

HOOK_ROUTE
Default value : new InjectionToken<RouteFactory>('HookRoute')

A hook to use for Multi Provider extension.

upgrade/ng1/downgraded.services.ts

absoluteDateService
Default value : downgradeInjectable(AbsoluteDateService)
alertsService
Default value : downgradeInjectable(AlertService)
apiService
Default value : downgradeInjectable(ApiService)
appStateService
Default value : downgradeInjectable(AppStateService)
authBridgeService
Default value : downgradeInjectable(AuthBridgeService)
bridgeService
Default value : downgradeInjectable(BridgeService)
cachedLocaleDictionaryService
Default value : downgradeInjectable(CachedLocaleDictionaryService)
docsService
Default value : downgradeInjectable(DocsService)
filesService
Default value : downgradeInjectable(FilesService)
gainsightService
Default value : downgradeInjectable(GainsightService)
headerService
Default value : downgradeInjectable(HeaderService)
modalService
Default value : downgradeInjectable(ModalService)
passwordService
Default value : downgradeInjectable(PasswordService)
serverMessagesService
Default value : downgradeInjectable(ServerMessagesService)
translateService
Default value : downgradeInjectable(TranslateService)
userMenuService
Default value : downgradeInjectable(UserMenuService)

upgrade/absolute-date.service.ts

absoluteDateServiceProvider
Type : object
Default value : { provide: AbsoluteDateService, useFactory: absoluteDateServiceFactory, deps: [DatePipe] }

icon-selector/icon-selector.component.ts

allIconCategory
Type : IconCategory
Default value : { name: 'all', displayName: 'All' }

protocol-opcua/ng1/index.ts

angularJsModule
Default value : angular .module(NAME, []) .directive('c8yOpcuaAddressSpaceTree', opcuaAddressSpaceTreeComponent)
NAME
Type : string
Default value : 'c8y.upgrade.opcua'
ng1Modules
Type : []
Default value : [NAME]

reports/ng1/index.ts

angularJsModule
Default value : angular .module(NAME, []) .directive('c8yExportSchedules', exportSchedulesComponent) .service('c8yReportsService', reportsService)
NAME
Type : string
Default value : 'c8y.upgrade.reports'
ng1Modules
Type : []
Default value : [NAME]

core/i18n/i18n.module.ts

angularLocalesLanguageMap
Type : object
Default value : { en: 'en-GB', 'en-EN': 'en-GB' }

ecosystem/ecosystem.constants.ts

APP_STATE
Type : object
Default value : { SUBSCRIBED: { label: gettext('Subscribed`application`'), class: 'label-primary' }, CUSTOM: { label: gettext('Custom`application`'), class: 'label-info' }, EXTERNAL: { label: gettext('External`application`'), class: 'label-warning' }, UNPACKED: { label: gettext('Unpacked`application`'), class: 'label-success' }, PACKAGE_BLUEPRINT: { label: gettext('Blueprint'), class: 'label-success' }, PACKAGE_PLUGIN: { label: gettext('Plugins'), class: 'label-info' } }
ERROR_MESSAGES
Type : object
Default value : { [ERROR_TYPE.TYPE_VALIDATION]: gettext( 'Wrong file format. Expected a *.zip file with a valid manifest.' ), [ERROR_TYPE.ALREADY_SUBSCRIBED]: gettext( 'Could not subscribe to the microservice because another application with the same context path is already subscribed.' ), [ERROR_TYPE.NO_MANIFEST_FILE]: gettext('Could not find a manifest.'), [ERROR_TYPE.INVALID_PACKAGE]: gettext('You have not uploaded a valid package.'), [ERROR_TYPE.INVALID_APPLICATION]: gettext('You have not uploaded a valid application.'), [ERROR_TYPE.INTERNAL_ERROR]: gettext('An internal error occurred, try to upload again.') }
packageProperties
Type : PropertiesListItem[]
Default value : [ { label: gettext('Version'), key: 'version' }, { label: gettext('Author'), key: 'author' }, { label: gettext('Keywords'), key: 'keywords' }, { label: gettext('Source'), key: 'repository', transform: (repository: any) => (repository?.url ? repository.url : repository), type: 'link', action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer') }, { label: gettext('Homepage'), key: 'homepage', type: 'link', action: (e, link: string) => window.open(link, '_blank', 'noopener,noreferrer') }, { label: gettext('Required platform version'), key: 'requiredPlatformVersion' }, { label: gettext('License'), key: 'license' } ]

ecosystem/ecosystem.module.ts

applicationDetailsRoutes
Type : Route[]
Default value : [ { path: 'properties', component: ApplicationPropertiesComponent, icon: 'list', label: gettext('Properties'), context: ViewContext.Application, priority: 5, canActivate: [ApplicationPropertiesGuard] }, { path: 'plugins', component: ApplicationPluginsComponent, icon: 'plugin', label: gettext('Plugins'), context: ViewContext.Application, priority: 3, canActivate: [ApplicationPluginsGuard, EcosystemGuard] }, { path: 'package-details', component: PackageDetailsComponent, icon: 'big-parcel', label: gettext('Info'), context: ViewContext.Application, priority: 10, canActivate: [PackageGuard, EcosystemGuard] }, { path: 'package-archives', component: PackageArchivesComponent, icon: 'c8y-archive', label: gettext('Archives'), context: ViewContext.Application, priority: 5, canActivate: [PackageGuard, EcosystemGuard] }, { path: 'properties', component: ApplicationPropertiesComponent, icon: 'list', label: gettext('Properties'), context: ViewContext.Microservice, priority: 5, canActivate: [ApplicationPropertiesGuard] } ]
ecosystemMainRoutes
Type : Route[]
Default value : [ { path: 'ecosystem/applications', component: ApplicationListComponent }, { path: 'ecosystem/package-list', component: PackagesListComponent, canActivate: [EcosystemGuard] }, { path: 'ecosystem/features', component: FeatureListComponent }, { path: 'ecosystem', redirectTo: 'ecosystem/applications' }, { path: 'microservices', component: MicroserviceListComponent } ]

ecosystem/application-properties/application-properties.component.ts

APPLICATIONS_BASE_PATH
Type : string
Default value : '/ecosystem'
MICROSERVICES_BASE_PATH
Type : string
Default value : '/microservices'

upgrade/ng1/downgraded.components.ts

appLogsAutoRefreshComponent
Default value : downgradeComponent({ component: AppLogsAutoRefreshComponent })
bootstrapComponent
Default value : downgradeComponent({ component: BootstrapComponent })
dataGridComponent
Default value : downgradeComponent({ component: DataGridComponent })
datapointSelectionListComponent
Default value : downgradeComponent({ component: DatapointSelectionListComponent })
emptyStateComponent
Default value : downgradeComponent({ component: EmptyStateComponent })
helpComponent
Default value : downgradeComponent({ component: HelpComponent })
highlightComponent
Default value : downgradeComponent({ component: HighlightComponent, inputs: ['pattern', 'text'] })
loadingComponent
Default value : downgradeComponent({ component: LoadingComponent })
rangeDisplayComponent
Default value : downgradeComponent({ component: RangeDisplayComponent })
userTotpComponent
Default value : downgradeComponent({ component: UserTotpRevokeComponent })

assets-navigator/asset-node-config.model.ts

ASSET_NAVIGATOR_CONFIG
Default value : new InjectionToken<AssetNavigatorConfig>('AssetNodeConfig')

upgrade/auth-bridge.service.ts

authBridgeServiceProvider
Type : object
Default value : { provide: AuthBridgeService, useFactory: authBridgeServiceFactory, deps: ['$injector', BasicAuth, FetchClient, AppStateService, TenantUiService] }

datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.ts

AXIS_TYPES
Default value : [ { val: undefined, text: gettext('Auto') }, { val: 'left', text: gettext('Left') }, { val: 'right', text: gettext('Right') } ] as const
CHART_LINE_TYPES
Default value : [ { val: 'line', text: gettext('Line') }, { val: 'points', text: gettext('Points') }, { val: 'linePoints', text: gettext('Line and points') }, { val: 'bars', text: gettext('Bars') }, { val: 'step-before', text: gettext('Step before') }, { val: 'step-after', text: gettext('Step after') } ] as const
CHART_RENDER_TYPES
Default value : [ { val: 'min', text: gettext('Minimum') }, { val: 'max', text: gettext('Maximum') }, { val: 'area', text: gettext('Minimum and maximum') } ] as const

operations/bulk-operations-service/bulk-operations.service.ts

baseUrl
Type : string
Default value : 'devicecontrol/bulk/creation/'
HOOK_LIST_BULK_TYPE
Default value : new InjectionToken<OperationType | OperationType[]>( 'LIST_BULK_TYPE' )

upgrade/bridge.service.ts

bridgeServiceProvider
Type : object
Default value : { provide: BridgeService, useFactory: bridgeServiceFactory, deps: ['$injector', AppStateService, Router, NgZone, RouterService, ActionService] }

operations/bulk-operation-list-item/bulk-operation-list-item.model.ts

BULK_OPERATION_STATUS_LABELS
Type : object
Default value : { SCHEDULED: gettext('Scheduled'), EXECUTING: gettext('Executing'), CANCELED: gettext('Canceled'), FAILED: gettext('Completed with failures'), SUCCESSFUL: gettext('Completed successfully'), DELETED: gettext('Deleted') }
BULK_OPERATION_STATUS_OPTIONS
Type : OperationStatusOptionsMap
Default value : { SCHEDULED: { label: BULK_OPERATION_STATUS_LABELS.SCHEDULED, generalStatuses: [OperationBulkGeneralStatus.SCHEDULED], icon: 'calendar', styleClass: 'text-info' }, EXECUTING: { label: BULK_OPERATION_STATUS_LABELS.EXECUTING, generalStatuses: [ OperationBulkGeneralStatus.EXECUTING, OperationBulkGeneralStatus.EXECUTING_WITH_ERROR ], icon: 'refresh', styleClass: 'text-primary' }, DELETED: { label: BULK_OPERATION_STATUS_LABELS.DELETED, generalStatuses: [OperationBulkGeneralStatus.DELETED], icon: 'delete-document', styleClass: 'text-muted' }, CANCELED: { label: BULK_OPERATION_STATUS_LABELS.CANCELED, generalStatuses: [OperationBulkGeneralStatus.CANCELED], icon: 'ban', styleClass: 'text-primary' }, FAILED: { label: BULK_OPERATION_STATUS_LABELS.FAILED, generalStatuses: [OperationBulkGeneralStatus.FAILED], icon: 'exclamation-triangle', styleClass: 'text-danger' }, SUCCESSFUL: { label: BULK_OPERATION_STATUS_LABELS.SUCCESSFUL, generalStatuses: [OperationBulkGeneralStatus.SUCCESSFUL], icon: 'check-circle', styleClass: 'text-success' } }

core/i18n/pattern-messages.data.ts

bulkOperationAuditLogTextPlaceholders
Type : object
Default value : { updatesList: { capture: '$1', translate: { "status='(.+?)'": { gettext: gettext('status: "{{ status | translate }}"'), placeholders: { status: '$1' } }, "generalStatus='(.+?)'": { gettext: gettext('general status: "{{ generalStatus | translate }}"'), placeholders: { generalStatus: '$1' } }, "progress='(.+?)'": { gettext: gettext('progress: "{{ progress }}"'), placeholders: { progress: '$1' } }, 'note=(.+?)': { gettext: gettext('note: "{{ note }}"'), placeholders: { note: '$1' } } } } }
MESSAGES
Type : object
Default value : { '^Access is denied$': { gettext: gettext('Access denied.') }, '^Alarm created$': { gettext: gettext('Alarm created') }, '^Alarm updated$': { gettext: gettext('Alarm updated') }, '^API is not available with the new domain$': { gettext: gettext('Could not activate custom domain. DNS setup is incorrect.') }, '^Application with given name already exist$': { gettext: gettext('Application with given name already exists.') }, '^Application with id (.+?) is already assigned to the tenant (.+?)$': { gettext: gettext('This application is already assigned to tenant "{{tenant}}".'), placeholders: { tenant: '$2' } }, '^Apply software changes: (.+?)\\.?$': { gettext: gettext('Apply software changes: {{ softwareChanges }}'), placeholders: { softwareChanges: { capture: '$1', translate: { 'install "(.+?)" \\(version: (.+?)\\)': { gettext: gettext('install "{{ softwareName }}" (version: {{ softwareVersion }})'), placeholders: { softwareName: '$1', softwareVersion: '$2' } }, 'install "([^"]+)"(?! \\(version: .+?\\))': { gettext: gettext('install "{{ softwareName }}"'), placeholders: { softwareName: '$1' } }, 'delete "(.+?)" \\(version: (.+?)\\)': { gettext: gettext('delete "{{ softwareName }}" (version: {{ softwareVersion }})'), placeholders: { softwareName: '$1', softwareVersion: '$2' } }, 'delete "([^"]+)"(?! \\(version: .+?\\))': { gettext: gettext('delete "{{ softwareName }}"'), placeholders: { softwareName: '$1' } } } } } }, '^Assign device profile (.+?) to device (.+?)$': { gettext: gettext('Assign device profile {{profileName}} to device {{deviceName}}'), placeholders: { profileName: '$1', deviceName: '$2' } }, '^(.+)pplication for tenant (.+) with properties \\( (.+?) \\) already exists$': { gettext: gettext( 'Application for tenant "{{tenant}}" with the following values ({{valuesList}}) already exists.' ), placeholders: { tenant: '$2', valuesList: '$3' } }, '^Authentication failed! : User account is locked$': { gettext: gettext('Authentication failed due to: user account is locked.') }, '^Availability monitoring record$': { gettext: gettext('Availability monitoring record') }, '^Can not activate a certificate which is either expired or not yet valid$': { gettext: gettext('Cannot activate a certificate which is either expired or not yet valid.') }, '^Cannot add certificate - certificate with (.+?) fingerprint already exists. : Certificate with (.+?) fingerprint already exists.': { gettext: gettext( 'Could not add certificate. Certificate with {{fingerprint}} fingerprint already exists.' ), placeholders: { fingerprint: '$1' } }, '^Cannot change password. : Provided token does not exist.$': { gettext: gettext('Cannot change password: provided token is invalid.') }, '^Cannot deploy module (.*)$': { gettext: gettext('Cannot deploy module due to error: "{{ errorMessage | translate }}".'), placeholders: { errorMessage: '$1' } }, "^Cannot deploy module (.+?)! : Compilation failed in module '(.+?)' in expression '(.+?)' : Incorrect syntax near '(.+?)' at line (\\d+) column (\\d+) \\[([\\S\\s]+?)\\]$": { gettext: gettext( 'Could not deploy module "{{moduleName}}". Compilation failed in expression "{{expression}}": incorrect syntax near "{{incorrectExpression}}" at line {{line}} column {{column}}.' ), placeholders: { moduleName: '$1', expression: '$3', incorrectExpression: '$4', line: '$5', column: '$6' } }, "^Cannot deploy module (.+?)! : Compilation failed in module '(.+?)' in expression '(.+?)' : Incorrect syntax near '(.+?)' at line (\\d+) column (\\d+) near reserved keyword '(.+?)' \\[([\\S\\s]+?)\\]$": { gettext: gettext( 'Could not deploy module "{{moduleName}}". Compilation failed in expression "{{expression}}": incorrect syntax near "{{incorrectExpression}}" at line {{line}} column {{column}} near reserved keyword "{{keyword}}".' ), placeholders: { moduleName: '$1', expression: '$3', incorrectExpression: '$4', line: '$5', column: '$6', keyword: '$7' } }, "^Cannot deploy module (.+?)! : Compilation failed in module '(.+?)' in expression '(.+?)' : Incorrect syntax near '(.+?)' at line (\\d+) column (\\d+), please check the where clause \\[([\\S\\s]+?)\\]$": { gettext: gettext( 'Could not deploy module "{{moduleName}}". Compilation failed in expression "{{expression}}": incorrect syntax near "{{incorrectExpression}}" at line {{line}} column {{column}}, check "where" clause.' ), placeholders: { moduleName: '$1', expression: '$3', incorrectExpression: '$4', line: '$5', column: '$6' } }, "^Cannot deploy module (.+?)! : Deployment failed in module '(.+?)' in expression '(.+?)' : Exception compiling script '(.+?)' of dialect '(.+?)': missing (.+?) before statement \\((.+?)\\) \\[([\\S\\s]+?)\\]$": { gettext: gettext( 'Could not deploy module "{{moduleName}}". Compilation failed in expression "{{expression}}": exception compiling script "{{scriptName}}" of dialect "{{scriptDialect}}": missing "{{missingSyntax}}" before statement "{{affectedStatement}}".' ), placeholders: { moduleName: '$1', expression: '$3', scriptName: '$4', scriptDialect: '$5', missingSyntax: '$6', affectedStatement: '$7' } }, "^Cannot execute bulk operation on empty group. Group with id='(\\d+?)' doesn't have child assets.$": { gettext: gettext( 'Could not execute bulk operation on an empty group. Group with ID "{{groupId}}" has no child assets.' ), placeholders: { groupId: '$1' } }, "^Cannot execute bulk operation on empty group. DynamicGroup with id='(\\d+?)' doesn't have child assets$": { gettext: gettext( 'Could not execute bulk operation on an empty group. Smart group with ID "{{groupId}}" has no child assets.' ), placeholders: { groupId: '$1' } }, '^Cannot parse X509 certificate. : Could not parse certificate: (.+?)$': { gettext: gettext('Could not parse X.509 certificate: {{ failureReason | translate }}.'), placeholders: { failureReason: '$1' } }, '^Cannot reschedule bulk operation. All its operations are successful$': { gettext: gettext('Cannot reschedule bulk operation. All its operations are already successful.') }, '^Cannot reset user password : Cannot find user with such email.$': { gettext: gettext('Cannot reset password for user with such email: email not found.') }, '^Cannot update/delete application binary via this endpoint$': { gettext: gettext('Cannot update/delete application binary via this endpoint') }, "^Can't delete user because it is used by another managed object$": { gettext: gettext( 'Cannot delete device with associated device owner because this owner is still assigned to other device(s). Try to remove only the device.' ) }, '^Cep module created$': { gettext: gettext('CEP module created') }, '^Cep module updated$': { gettext: gettext('CEP module updated') }, '^Cep module deleted$': { gettext: gettext('CEP module deleted') }, '^Cep module "(.+?)" created$': { gettext: gettext('CEP module "{{name}}" created'), placeholders: { name: '$1' } }, '^Cep module "(.+?)" updated$': { gettext: gettext('CEP module "{{name}}" updated'), placeholders: { name: '$1' } }, '^Cep module "(.+?)" deleted$': { gettext: gettext('CEP module "{{name}}" deleted'), placeholders: { name: '$1' } }, '^Command state is invalid: (.+)$': { gettext: gettext('Command state is invalid: {{violations}}'), placeholders: { violations: { capture: '$1', translate: { '(\\w+?) - may not be null': { gettext: gettext('"{{field}}" must not be null'), placeholders: { field: '$1' } } } } } }, '^Could not connect to endpoint (.+)\\. Could not verify `(.+)` host key with fingerprint `(.+)` for `(.+)` on port (.+)\\. If you expected that key, please remove the previous one from configuration to allow for connection\\.$': { gettext: gettext( 'Could not connect to endpoint "{{endpointName}}". Could not verify {{keyType}} host key with fingerprint {{fingerprint}} for host {{host}} on port {{port}}. If you expected this key, please remove the previous one from configuration to allow for connection.' ), placeholders: { endpointName: '$1', keyType: '$2', fingerprint: '$3', host: '$4', port: '$5' } }, '^Could not login to ssh server on endpoint "(.+)"\\. Provided credential for user "(.+)" is incorrect\\.$': { gettext: gettext( 'Could not access SSH server on endpoint "{{endpointName}}". Provided credentials for user "{{userName}}" are incorrect.' ), placeholders: { endpointName: '$1', userName: '$2' } }, '^Could not save object remoteAccessUpdate: (.+)$': { gettext: '{{errorMessages}}', placeholders: { errorMessages: { capture: '$1', translate: { 'Could not recognize host-key format': { gettext: gettext('Could not recognize "Host key" format') }, 'Could not recognize key-pair format': { gettext: gettext('Could not recognize the format of "Public key" or "Private key"') } } } } }, '^Could not update user. : Error persisting user (.+?)!$': { gettext: gettext('Could not update user "{{username}}".'), placeholders: { username: '$1' } }, '^Create bulk operation$': { gettext: gettext('Create bulk operation') }, '^Create bulk operation: (.+)$': { gettext: gettext('Create bulk operation: {{updatesList}}'), placeholders: bulkOperationAuditLogTextPlaceholders }, '^Creation ramp must be greater than (\\d+?)$': { gettext: gettext('Bulk operation delay must be greater than {{minSeconds}} seconds.'), placeholders: { minSeconds: '$1' } }, '^Created container$': { gettext: gettext('Container created.') }, '^Created pod: (.+)$': { gettext: gettext('Pod "{{imageName}}" created.'), placeholders: { imageName: '$1' } }, '^Creating device on LoRa platform failed$': { gettext: gettext('Could not create the device in the LoRa platform.') }, '^CSV file contained empty dataset$': { gettext: gettext('No entries found in uploaded CSV file.') }, '^Cycle detected for route (.+?)!$': { gettext: gettext('Cycle detected for route {{route}}.'), placeholders: { route: '$1' } }, '^Data broker processing is currently overloaded and may stop forwarding your data\\. Please contact support\\.$': { gettext: gettext( 'Data broker processing is currently overloaded and may stop forwarding your data. Please contact support.' ) }, '^Data broker processing is not able to connect do destination tenant, thus data forwarding is not working\\. Please contact support\\.$': { gettext: gettext( 'Data broker processing is not able to connect to destination tenant, thus data forwarding is not working. Please contact support.' ) }, // DataHub global roles' names: '^DATAHUB_ADMINISTRATOR$': { gettext: gettext('DataHub Administrator') }, '^DATAHUB_MANAGER$': { gettext: gettext('DataHub Manager') }, '^DATAHUB_READER$': { gettext: gettext('DataHub Reader') }, '^Delete bulk operation$': { gettext: gettext('Delete bulk operation') }, '^Delete bulk operation: (.+)$': { gettext: gettext('Delete bulk operation: {{updatesList}}'), placeholders: bulkOperationAuditLogTextPlaceholders }, "^Device id '(.+?)' contains '(.+?)' character which is not permitted.$": { gettext: gettext('ID "{{deviceId}}" contains invalid character: "{{invalidCharacter}}".'), placeholders: { deviceId: '$1', invalidCharacter: '$2' } }, "^Device name: '(.+?)', alarm text: '(.+?)'$": { gettext: gettext('Device name: "{{deviceName}}", alarm text: "{{alarmText | translate}}"'), placeholders: { deviceName: '$1', alarmText: '$2' } }, '^Device (.+?) already registered to a tenant.$': { gettext: gettext('Device {{ devEUI }} is already registered in your tenant or in another tenant in the platform.'), placeholders: { devEUI: '$1' } }, '^Display name$': { gettext: gettext('Login alias') }, '^Domain name in uploaded certificate differs from the one in use$': { gettext: gettext( 'Domain name in uploaded certificate differs from the one in use. Please deactivate the custom domain before uploading new certificate.' ) }, '^Domain name is already in use by another tenant!$': { gettext: gettext('Domain name is already used by another tenant.') }, '^Duplicated connector for instanceUrl (.+?)!$': { gettext: gettext('Target URL {{targetUrl}} already used by another connector.'), placeholders: { targetUrl: '$1' } }, '^Duplicated connector for name (.+?)!$': { gettext: gettext('Connector name "{{name}}" already used by another connector.'), placeholders: { name: '$1' } }, '^Entry is outside of the target dir: (.+)$': { gettext: gettext('File entry outside of the target directory: "{{path}}".'), placeholders: { path: '$1' } }, '^Error during password validation. : Password must have at least (\\d+?) characters and no more than (\\d+?) and must contain only Latin1 characters.$': { gettext: gettext( 'Password is invalid. It must have at least {{minCharactersCount}} and no more than {{maxCharactersCount}} characters.' ), placeholders: { minCharactersCount: '$1', maxCharactersCount: '$2' } }, '^Error during password validation. : Your password has been used already. Choose another.$': { gettext: gettext('This password has already been used earlier. Use a different one.') }, "^Error in statement (.+?):(.+?)! : Incorrect syntax near '(.+?)' near reserved keyword '(.+?)' \\[([\\S\\s]+?)\\]$": { gettext: gettext( 'Error in statement {{moduleName}}:{{statementNumber}}. Incorrect syntax near expression "{{expression}}" near reserved keyword "{{keyword}}".' ), placeholders: { moduleName: '$1', statementNumber: '$2', expression: '$3', keyword: '$4' } }, '^External id not found; external id = ID \\[type=(.+?), value=(.+?)\\]$': { gettext: gettext('External ID not found for type "{{type}}" and value "{{value}}".'), placeholders: { type: '$1', value: '$2' } }, '^Error occurred when trying to find an Application for id ID (.+) : Could not find application by ID (\\d+)$': { gettext: gettext('Could not find application by ID {{applicationId}}.'), placeholders: { applicationId: '$2' } }, '^Http status code: 404\n{error="options/Not Found",message="Unable to find option by given key: sigfox-agent/provider.token",info="https://www.cumulocity.com/guides/reference-guide/#error_reporting",details="null"}': { gettext: gettext('Unable to find option by given key: sigfox-agent/provider.token') }, '^Failed to delete application. : Cannot remove application assigned to other tenants.$': { gettext: gettext('Could not delete application assigned to other tenants.') }, '^Failed to extract certificate from PKCS12$': { gettext: gettext('Failed to extract certificate from PKCS12.') }, '^Failed to update domain at the platform$': { gettext: gettext('Failed to update domain at the platform.') }, "^Finding device data from database failed : No managedObject for id '(.+?)'!$": { gettext: gettext('Could not find managed object with ID "{{deviceId}}".'), placeholders: { deviceId: '$1' } }, '^Following mandatory fields should be included: (.+?)$': { gettext: gettext('Following mandatory fields should be included: {{fields}}'), placeholders: { fields: '$1' } }, '^Global Role updated$': { gettext: gettext('Global role updated') }, '^Global Role (.+?) updated$': { gettext: gettext('Global role "{{name}}" updated'), placeholders: { name: '$1' } }, '^Global Role (.+?) updated: (.+)$': { gettext: gettext('Global role "{{name}}" updated: {{updatesList}}'), placeholders: { name: '$1', updatesList: { capture: '$2', translate: { 'applications \\[([^\\]]+?)\\] added': { gettext: gettext('applications {{list}} added'), placeholders: { list: '$1' } }, 'applications \\[([^\\]]+?)\\] removed': { gettext: gettext('applications {{list}} removed'), placeholders: { list: '$1' } }, 'roles \\[([^\\]]+?)\\] added': { gettext: gettext('roles {{list}} added'), placeholders: { list: '$1' } }, 'roles \\[([^\\]]+?)\\] removed': { gettext: gettext('roles {{list}} removed'), placeholders: { list: '$1' } } } } } }, '^Global Roles$': { gettext: gettext('Global roles') }, '^Operation updated: (.+)$': { gettext: gettext('Operation updated: {{updatesList}}'), placeholders: { updatesList: { capture: '$1', translate: { "status='(.+?)'": { gettext: gettext('status: "{{ status | translate }}"'), placeholders: { status: '$1' } }, "description='(.+?)'": { gettext: gettext('description: "{{ description | translate }}"'), placeholders: { description: '$1' } }, "device name='(.+?)'": { gettext: gettext('device name: "{{ deviceName }}"'), placeholders: { deviceName: '$1' } }, "failure reason='(.+?)'": { gettext: gettext('failure reason: "{{ failureReason | translate }}"'), placeholders: { failureReason: '$1' } } } } } }, '^ID \\[type=(.+?), value=(.+?)\\] was already bound to different Global ID.$': { gettext: gettext('External ID "{{value}}" of the type "{{type}}" already exists.'), placeholders: { type: '$1', value: '$2' } }, '^Invalid credentials! : Bad credentials$': { gettext: gettext('Invalid credentials.') }, '^Invalid credentials! : No phone number provided$': { gettext: gettext('Log into the management tenant first and enter your phone number.') }, '^Inventory Role removed$': { gettext: gettext('Inventory role removed') }, '^Inventory Role (.+?) removed': { gettext: gettext('Inventory role "{{name}}" deleted.'), placeholders: { name: '$1' } }, '^Inventory Role updated$': { gettext: gettext('Inventory role updated') }, '^Inventory Role (.+?) updated': { gettext: gettext('Inventory role "{{name}}" updated.'), placeholders: { name: '$1' } }, '^I/O error: Connection refused; nested exception is Connection refused : Connection refused': { gettext: gettext('Connection refused') }, '^I/O error: Read timed out; nested exception is Read timed out : Read timed out': { gettext: gettext('Read timed out') }, '^Log file requested$': { gettext: gettext('Log file requested.') }, '^Managed object deleted$': { gettext: gettext('Managed object deleted') }, '^Managed object "(.+?)" deleted$': { gettext: gettext('Managed object "{{name}}" deleted'), placeholders: { name: '$1' } }, '^Maximum file size exceeded$': { gettext: gettext('Maximum file size exceeded.') }, "^Message with ID (.+?) doesn't exist in smart rest template (.+?)$": { gettext: gettext( 'Message with ID "{{messageId}}" doesn\'t exist in SmartREST template with ID "{{templateId}}"' ), placeholders: { messageId: '$1', templateId: '$2' } }, '^name of Application cannot start with \'(.+)\' prefix.$': { gettext: gettext('Application name must not start with "{{ prefix }}".'), placeholders: { prefix: '$1' } }, '^NewDeviceRequest for id = (.+?) already exists.$': { gettext: gettext('Device registration request with ID {{id}} already exists.'), placeholders: { id: '$1' } }, '^NewDeviceRequest for device id (.+?) is in state BLOCKED, not PENDING_ACCEPTANCE.$': { gettext: gettext( 'Device registration request with ID "{{deviceId}}" is in state "Blocked", not "Pending acceptance". Remove this registration request and start over.' ), placeholders: { deviceId: '$1' } }, '^No communication with device since (.+?)$': { gettext: gettext('No communication with device since {{timestamp | absoluteDate}}.'), placeholders: { timestamp: '$1' } }, '^No data received from device within required interval.$': { gettext: gettext('No data received from device within required interval.') }, '^No LoRa provider settings are found. Please configure the connectivity settings.$': { gettext: gettext( 'No LoRa provider settings are found. Please configure the connectivity settings.' ) }, '^Not within any context!$': { gettext: gettext('A problem occurred with microservice subscription.') }, '^Maximum age cannot be bigger than 10 years.$': { gettext: gettext('Maximum age cannot be bigger than 10 years.') }, '^Microservice application name incorrect. Please use only lower-case letters, digits and dashes. Maximum length is (\\d+) characters.$': { gettext: gettext( 'Microservice application name is incorrect: only lower case letters, digits and dashes allowed. Maximum length: {{maxLength}}.' ), placeholders: { maxLength: '$1' } }, '^Microservice not available.*$': { gettext: gettext('Microservice is not available.') }, '^Operation created$': { gettext: gettext('Operation created.') }, '^Operation updated$': { gettext: gettext('Operation updated.') }, "^Operation created: status='(.+?)'.": { gettext: gettext('Operation created: status: "{{ status | translate }}".'), placeholders: { status: '$1' } }, '^Option created$': { gettext: gettext('Option created.') }, '^Option "(.+?)" created$': { gettext: gettext('Option "{{option}}" created.'), placeholders: { option: '$1' } }, '^Option deleted$': { gettext: gettext('Option deleted.') }, '^Option "(.+?)" deleted$': { gettext: gettext('Option "{{option}}" deleted.'), placeholders: { option: '$1' } }, '^Owner field error. : Cannot introduce cyclic dependency.': { gettext: gettext('Could not introduce cyclic ownership dependency.') }, '^Password change is temporary blocked.$': { gettext: gettext('Password change is temporarily blocked.') }, '^Password cipher does not match': { gettext: gettext('Password cipher does not match.') }, '^Platform application cannot be added to, nor removed from any tenant.$': { gettext: gettext('Platform application cannot be added to, nor removed from any tenant.') }, '^Private key must be provided in KEY_PAIR credentials$': { gettext: gettext('Private key must be provided when "Public/private keys" option is selected.') }, '^Private key cipher does not match': { gettext: gettext('Private key cipher does not match') }, '^Protocol "(.+?)" does not support "(.+?)" credentials type$': { gettext: gettext( 'Protocol "{{protocol}}" does not support "{{credentialsType}}" credentials type.' ), placeholders: { protocol: '$1', credentialsType: '$2' } }, '^Provided security key does not match key stored for device (.+?).$': { gettext: gettext( 'Provided security token does not match the security token stored for this device "{{deviceId}}".' ), placeholders: { deviceId: '$1' } }, '^Provided security key does not match key stored for device (.+?).Reached maximum number of failed attempts while trying to register this device. Request will now be blocked and has to be removed manually to restart the process.$': { gettext: gettext( 'The provided security token does not match the token stored for device "{{deviceId}}". You have reached the maximum number of failed attempts while trying to register this device. The request will now be blocked and must be removed manually to restart the process.' ), placeholders: { deviceId: '$1' } }, '^pulling image "(.+)"$': { gettext: gettext('Pulling image: "{{imageName}}".'), placeholders: { imageName: '$1' } }, '^Real-time event processing is currently overloaded and may stop processing your events\\. Please contact support\\.$': { gettext: gettext( 'Real-time event processing is currently overloaded and may stop processing your events. Please contact support.' ) }, '^Resource ID \\[type=com_cumulocity_model_idtype_GId, value=(.+?)\\] for this request not found.$': { gettext: gettext('Could not find the resource with ID "{{id}}".'), placeholders: { id: '$1' } }, '^Retrieve configuration snapshot from device (.+?)': { gettext: gettext('Retrieve configuration snapshot from device {{deviceName}}'), placeholders: { deviceName: '$1' } }, '^Retrieve (.+?) configuration snapshot from device (.+?)': { gettext: gettext( 'Retrieve {{configurationType}} configuration snapshot from device {{deviceName}}' ), placeholders: { configurationType: '$1', deviceName: '$2' } }, '^Scaled up replica set (.+) to (\\d+)$': { gettext: gettext('Replica set "{{replicaSetName}}" scaled up to "{{scaleNumber}}".'), placeholders: { replicaSetName: '$1', scaleNumber: '$2' } }, '^Send configuration snapshot (.+?) of configuration type (.+?) to device (.+?)': { gettext: gettext( 'Send configuration snapshot {{snapshotName}} of configuration type {{configurationType}} to device {{deviceName}}' ), placeholders: { snapshotName: '$1', configurationType: '$2', deviceName: '$3' } }, '^Send configuration snapshot (.+?) to device (.+?)': { gettext: gettext('Send configuration snapshot {{snapshotName}} to device {{deviceName}}'), placeholders: { snapshotName: '$1', deviceName: '$2' } }, '^Simulator state is invalid: (.+)$': { gettext: gettext('Simulator state is invalid: {{violations}}'), placeholders: { violations: { capture: '$1', translate: { '(\\w+?) - may not be null': { gettext: gettext('"{{field}}" should not be null'), placeholders: { field: '$1' } }, '(\\w+?) - must be less than or equal to (\\d+)': { gettext: gettext('"{{field}}" must be less than or equal to {{maxValue}}'), placeholders: { field: '$1', maxValue: '$2' } }, '(\\w+?) - should not contain null values': { gettext: gettext('"{{field}}" should not contain null values'), placeholders: { field: '$1' } } } } } }, "^Smart rest template (.+?) doesn't exist$": { gettext: gettext('SmartREST template with id "{{templateId}}" doesn\'t exist.'), placeholders: { templateId: '$1' } }, '^Smart rule created$': { gettext: gettext('Smart rule created.') }, '^Smart rule updated$': { gettext: gettext('Smart rule updated.') }, '^Smart rule enabled$': { gettext: gettext('Smart rule activated.') }, '^Smart rule disabled$': { gettext: gettext('Smart rule deactivated.') }, '^Smart rule deleted$': { gettext: gettext('Smart rule deleted.') }, '^Smart rule "(.+?)" created$': { gettext: gettext('Smart rule "{{name}}" created.'), placeholders: { name: '$1' } }, '^Smart rule "(.+?)" updated$': { gettext: gettext('Smart rule "{{name}}" updated.'), placeholders: { name: '$1' } }, '^Smart rule "(.+?)" enabled$': { gettext: gettext('Smart rule "{{name}}" activated.'), placeholders: { name: '$1' } }, '^Smart rule "(.+?)" disabled$': { gettext: gettext('Smart rule "{{name}}" deactivated.'), placeholders: { name: '$1' } }, '^Smart rule "(.+?)" deleted$': { gettext: gettext('Smart rule "{{name}}" deleted.'), placeholders: { name: '$1' } }, '^Started container$': { gettext: gettext('Container started.') }, '^Successfully assigned (.+) to (.+)$': { gettext: gettext('"{{imageName}}" assigned to "{{address}}".'), placeholders: { imageName: '$1', address: '$2' } }, '^Successfully pulled image "(.+)"$': { gettext: gettext('Image "{{imageName}}" pulled.'), placeholders: { imageName: '$1' } }, '^Tenant creation failed. : Tenant with given id already exists.$': { gettext: gettext('Could not create a tenant. Tenant with given domain/URL already exists.') }, '^Tenant id cannot be a reserved sql keyword "(.+?)".$': { gettext: gettext('Could not use a reserved SQL keyword "{{tenantId}}" as a domain name.'), placeholders: { tenantId: '$1' } }, '^Tenant "(.+?)" activated$': { gettext: gettext('Tenant "{{tenant}}" activated.'), placeholders: { tenant: '$1' } }, '^Tenant (.+?) has sub-tenants, please remove them first!$': { gettext: gettext('Could not remove tenant "{{tenant}}". Remove its subtenants first.'), placeholders: { tenant: '$1' } }, '^Tenant activated$': { gettext: gettext('Tenant activated.') }, '^Tenant "(.+?)" created$': { gettext: gettext('Tenant "{{tenant}}" created.'), placeholders: { tenant: '$1' } }, '^Tenant created$': { gettext: gettext('Tenant created.') }, '^Tenant "(.+?)" deleted$': { gettext: gettext('Tenant "{{tenant}}" deleted.'), placeholders: { tenant: '$1' } }, '^Tenant deleted$': { gettext: gettext('Tenant deleted.') }, '^Tenant "(.+?)" suspended$': { gettext: gettext('Tenant "{{tenant}}" suspended.'), placeholders: { tenant: '$1' } }, '^Tenant suspended$': { gettext: gettext('Tenant suspended') }, '^Tenant "(.+?)" updated: (.+?)$': { gettext: gettext('Tenant "{{tenant}}" updated: {{properties}}.'), placeholders: { tenant: '$1', properties: '$2' } }, '^Tenant updated$': { gettext: gettext('Tenant updated.') }, '^Too Many Requests$': { gettext: gettext('Too many requests. Try again later.') }, "^User alias equals username '(.+)'$": { gettext: gettext('Username and login alias must be different.') }, '^User created$': { gettext: gettext('User created') }, '^User (.+?) created$': { gettext: gettext('User "{{name}}" created'), placeholders: { name: '$1' } }, '^User deleted$': { gettext: gettext('User deleted') }, '^User (.+?) deleted$': { gettext: gettext('User "{{name}}" deleted'), placeholders: { name: '$1' } }, '^User logout$': { gettext: gettext('User logout') }, '^(.+?) user logout$': { gettext: gettext('"{{name}}" user logout'), placeholders: { name: '$1' } }, '^(.+?) user logged in to the platform with OAuth internal login mode$': { gettext: gettext('"{{name}}" user logged in to the platform with OAI-Secure login mode'), placeholders: { name: '$1' } }, '^(.+?) user login with OAuth internal mode failed$': { gettext: gettext('"{{name}}" user login with OAI-Secure mode failed'), placeholders: { name: '$1' } }, '^User updated$': { gettext: gettext('User updated') }, '^User (.+?) updated: (.+)$': { gettext: gettext('User "{{name}}" updated: {{updatesList}}'), placeholders: { name: '$1', updatesList: { capture: '$2', translate: { "delegatedBy='(.+?)'": { gettext: gettext('delegated by: "{{delegate}}"'), placeholders: { delegate: '$1' } }, "owner='(.+?)'": { gettext: gettext('owner: "{{owner}}"'), placeholders: { owner: '$1' } }, 'inventory assignment \\[(.+?)\\] added': { gettext: gettext('inventory assignment [{{inventoryAssignment}}] added'), placeholders: { inventoryAssignment: '$1' } }, 'inventory assignment \\[(.+?)\\] removed': { gettext: gettext('inventory assignment [{{inventoryAssignment}}] removed'), placeholders: { inventoryAssignment: '$1' } }, 'applications \\[(.+?)\\] added$': { gettext: gettext('applications [{{applicationsList}}] added'), placeholders: { applicationsList: '$1' } }, 'applications \\[(.+?)\\] removed$': { gettext: gettext('applications [{{applicationsList}}] removed'), placeholders: { applicationsList: '$1' } }, 'global roles \\[(.+?)\\] added$': { gettext: gettext('global roles [{{globalRolesList}}] added'), placeholders: { globalRolesList: '$1' } }, 'global roles \\[(.+?)\\] removed$': { gettext: gettext('global roles [{{globalRolesList}}] removed'), placeholders: { globalRolesList: '$1' } } } } } }, "^User with username '(.+?)' already exists! : Duplicated: (.+?)$": { gettext: gettext('User "{{username}}" already exists.'), placeholders: { username: '$1' } }, "^User with username or alias '(.+)' already exists! : Duplicated: (.+)$": { gettext: gettext('User with username or login alias "{{usernameOrAlias}}" already exists.'), placeholders: { usernameOrAlias: '$1' } }, "^User with email '(.+?)' already exists! : Duplicated: (.+?)$": { gettext: gettext('User with email "{{email}}" already exists.'), placeholders: { email: '$1' } }, '^unable to find option with given key (.+?) : Could not find entity Option by ID (.+?)!$': { gettext: gettext('Unable to get tenant option: "{{option}}".'), placeholders: { option: '$2' } }, '^unable to find option with given key (.+?) : There is no system property for key (.+?)$': { gettext: gettext('Unable to get system option: "{{option}}".'), placeholders: { option: '$2' } }, '^Write failed with error code 16733 and error message \'trying to index text where term list is too big, max is 4mb _id: "(.+?)"\'$': { gettext: gettext( 'The uploaded image cannot be bigger than 4 MB. Please upload a smaller one.' ) }, '^Write failed with error code 17280 and error message \'WiredTigerIndex::insert: key too large to index, failing (.+?) { : "(.+?)" }\'$': { gettext: gettext('The selected name is too long. Please try a shorter one.') }, '^You have reached devices limit. No more devices can be registered.$': { gettext: gettext('You reached devices limit. No more devices can be registered.') }, '^(.+) succeeded for volume "(.+)"': { gettext: gettext('Operation "{{operation}}" succeeded for volume "{{volume}}".'), placeholders: { operation: '$1', volume: '$2' } }, "^Exception on tenant (.+) in statement '(.+)': Invocation exception when invoking method '(.+)' of class '(.+)' passing parameters \\[(.+)\\] for statement '(.+)': (.+) : (.+)$": { gettext: gettext( 'Exception on tenant {{tenantId}} in statement "{{moduleName}}": Invocation exception when invoking method "{{methodName}}" of class "{{classPath}}" passing parameters [{{parameters}}] for statement "{{statement}}": {{exceptionType}} : {{exceptionMessage}}.' ), placeholders: { tenantId: '$1', moduleName: '$2', methodName: '$3', classPath: '$4', parameters: '$5', statement: '$6', exceptionType: '$7', exceptionMessage: '$8' } }, '^No nodes are available that match all of the predicates: (.+).$': { gettext: gettext('No nodes are available that match all of the predicates: [{{predicates}}].'), placeholders: { predicates: '$1' } }, '^Readiness probe failed: (.+) (.+): (.+): request canceled while waiting for connection \\(Client.Timeout exceeded while awaiting headers\\)$': { gettext: gettext( 'Readiness probe failed: {{requestMethod}} {{uri}}: {{protocol}}: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).' ), placeholders: { requestMethod: '$1', uri: '$2', protocol: '$3' } }, '^Liveness probe failed: (.+) (.+): (.+): request canceled while waiting for connection \\(Client.Timeout exceeded while awaiting headers\\)$': { gettext: gettext( 'Liveness probe failed: {{requestMethod}} {{uri}}: {{protocol}}: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).' ), placeholders: { requestMethod: '$1', uri: '$2', protocol: '$3' } }, '^Error syncing pod$': { gettext: gettext('Pod synchronization error.') }, '^Failed create pod sandbox.$': { gettext: gettext('Pod sandbox creation failed.') }, '^Exception on tenant (.+) in statement \'(.+)\': Http status code: (\\d+) \\{error="alarm/Unprocessable Entity",message="(.+)",info="https://www.cumulocity.com/guides/reference-guide/#error_reporting",details="null"\\}$': { gettext: gettext( 'Exception on tenant {{tenantId}} in statement "{{statement}}": HTTP status code: {{httpStatusCode}} : {{message | translate}}' ), placeholders: { tenantId: '$1', statement: '$2', httpStatusCode: '$3', message: '$4' } }, "^User '(.+)' is managed by a remote identity management service defined by an administrator, direct update is forbidden$": { gettext: gettext( 'User "{{userName}}" is managed by a remote identity management service defined by an administrator, direct update is forbidden.' ), placeholders: { userName: '$1' } }, '^Added new child device to "(.+)" \\(ID: (.+)\\).$': { gettext: gettext('Added new child device to "{{parentDeviceName}}" (ID: {{parentDeviceId}}).'), placeholders: { parentDeviceName: '$1', parentDeviceId: '$2' } }, '^Updated child device of "(.+)" \\(ID: (.+)\\).$': { gettext: gettext('Updated child device of "{{parentDeviceName}}" (ID: {{parentDeviceId}}).'), placeholders: { parentDeviceName: '$1', parentDeviceId: '$2' } }, '^Added child device "(.+)" \\(ID: (.+)\\).$': { gettext: gettext('Added child device "{{name}}" (ID: {{id}}).'), placeholders: { name: '$1', id: '$2' } }, '^Removed child device "(.+)" \\(ID: (.+)\\).$': { gettext: gettext('Removed child device "{{name}}" (ID: {{id}}).'), placeholders: { name: '$1', id: '$2' } }, '^Change value of "(.+)" to (.+) (.+).$': { gettext: gettext('Change value of "{{name}}" to {{value}}{{unit}}.'), placeholders: { name: '$1', value: '$2', unit: '$3' } }, '^Change value of "(.+)" to (.+).$': { gettext: gettext('Change value of "{{name}}" to {{value}}.'), placeholders: { name: '$1', value: '$2' } }, '^Change status of "(.+)" to "(.+)".$': { gettext: gettext('Change status of "{{name}}" to "{{label}}".'), placeholders: { name: '$1', label: '$2' } }, '^Send message "(.+)".$': { gettext: gettext('Send message "{{str}}".'), placeholders: { str: '$1' } }, '^Close relay (.+).$': { gettext: gettext('Close relay {{number}}.'), placeholders: { number: '$1' } }, '^Open relay (.+).$': { gettext: gettext('Open relay {{number}}.'), placeholders: { number: '$1' } }, '^Change trace status to (.+).$': { gettext: gettext('Change trace status to {{state | translate}}.'), placeholders: { state: '$1' } }, '^Change relay status to (.+).$': { gettext: gettext('Change relay status to {{status | translate}}.'), placeholders: { status: '$1' } }, '^Closing relay (.+).$': { gettext: gettext('Closing relay {{number}}.'), placeholders: { number: '$1' } }, '^Opening relay (.+).$': { gettext: gettext('Opening relay {{number}}.'), placeholders: { number: '$1' } }, '^Update bulk operation$': { gettext: gettext('Update bulk operation') }, '^Update bulk operation: (.+)$': { gettext: gettext('Update bulk operation: {{updatesList}}'), placeholders: bulkOperationAuditLogTextPlaceholders }, '^Update firmware to: "?(.+?)"? \\(version: (.+)\\)\\.?$': { gettext: gettext('Update firmware to: "{{ name }}" (version: {{ version }})'), placeholders: { name: '$1', version: '$2' } }, '^Update firmware to: "?(.+?)"?\\.?$': { gettext: gettext('Update firmware to: "{{ name }}"'), placeholders: { name: '$1' } }, '^Update configuration to (.+).$': { gettext: gettext('Update configuration to: {{ name }}.'), placeholders: { name: '$1' } }, '^Apply device profile: (.+).?$': { gettext: gettext('Apply device profile: {{ name }}'), placeholders: { name: '$1' } }, '^Execute generic command: (.+).?$': { gettext: gettext('Execute generic command: {{command}}'), placeholders: { command: '$1' } }, '^Failed to refresh application. : Cannot refresh non local-hosted application.$': { gettext: gettext('Could not reactivate the application as it is not hosted locally.') }, '^Failed to refresh application. : Cannot refresh application without active version id.$': { gettext: gettext('Could not reactivate the application as it has no active version.') }, // TODO: remove if we decide not to translate such messages: // '^Killing container with id (.+):Need to kill Pod$': { // gettext: gettext('Killing container with ID "{{containerId}}". Need to kill Pod.'), // placeholders: { // containerId: '$1' // } // }, '^Scaled down replica set (.+) to (\\d+)$': { gettext: gettext('Replica set "{{replicaSetName}}" scaled down to "{{scaleNumber}}".'), placeholders: { replicaSetName: '$1', scaleNumber: '$2' } }, '^Deleted pod: (.+)$': { gettext: gettext('Pod "{{imageName}}" deleted.'), placeholders: { imageName: '$1' } }, '^Container image "(.+)" already present on machine$': { gettext: gettext('Container image "{{imageName}}" already exists.'), placeholders: { imageName: '$1' } }, '^Error updating tenant! Cannot insert second configuration for Password code grant internal/Bad Request$': { gettext: gettext( 'This login mode was already set by another administrator. Refresh the page to update the data.' ) }, '^Authentication with id: (.+?) configuration updated.$': { gettext: gettext( 'Authentication configuration with id "{{id}}" updated.' ), placeholders: { id: '$1' } }, '^Authentication configuration with id: (.+?) added.$': { gettext: gettext( 'Authentication configuration with id "{{id}}" added.' ), placeholders: { id: '$1' } }, '^Configuration type: basic.$': { gettext: gettext('Configuration type: Basic Auth.') }, '^Configuration type: oauth2_internal.$': { gettext: gettext('Configuration type: OAI-Secure.') }, '^Configuration type: oauth2.$': { gettext: gettext('Configuration type: Single sign-on.') }, '^Application activated$': { gettext: gettext('Application activated') }, '^Hosted application \"(.+?)\" activated: activeVersionId \\[(.+?)\\] added$': { gettext: gettext('Hosted application "{{appName}}" activated: activeVersionId "{{activeVersionId}}" added'), placeholders: { appName: '$1', activeVersionId: '$2' } }, '^Application deleted$': { gettext: gettext('Application deleted') }, '^Hosted application \"(.+?)\" deleted for tenant \"(.+?)\"$': { gettext: gettext('Hosted application "{{appName}}" deleted from tenant "{{tenant}}"'), placeholders: { appName: '$1', tenant: '$2' } }, // LWM2M strings (move to submodule when it's migrated from ng1) '^LWM2M device type$': { gettext: gettext('LWM2M device type') }, '^LWM2M server URI$': { gettext: gettext('LWM2M server URI') }, '^coaps://<LWM2M-server-domain>:<coaps-port>$': { gettext: gettext('coaps://<LWM2M-server-domain>:<coaps-port>') }, '^CREATE$': { gettext: gettext('CREATE') }, '^DELETE$': { gettext: gettext('DELETE') }, '^Endpoint client ID$': { gettext: gettext('Endpoint client ID') }, '^Server public key$': { gettext: gettext('Server public key') }, '^Generate bootstrap server config$': { gettext: gettext('Generate bootstrap server config') }, '^LWM2M bootstrap short server ID$': { gettext: gettext('LWM2M bootstrap short server ID') }, '^LWM2M short server ID$': { gettext: gettext('LWM2M short server ID') }, '^Registration lifetime$': { gettext: gettext('Registration lifetime') }, '^in seconds$': { gettext: gettext('in seconds') }, '^Security instance offset$': { gettext: gettext('Security instance offset') }, '^Default minimum period$': { gettext: gettext('Default minimum period') }, '^Default maximum period$': { gettext: gettext('Default maximum period') }, '^Binding mode$': { gettext: gettext('Binding mode') }, '^applicable for LWM2M 1\\.0$': { gettext: gettext('applicable for LWM2M 1.0') }, '^Awake time registration parameter$': { gettext: gettext('Awake time registration parameter') }, '^in milliseconds, 0 means device is always online$': { gettext: gettext('in milliseconds, 0 means device is always online') }, '^Use common timestamp resources 5518 and 6050 or object specific timestamp for object 6 reported by the device if available$': { gettext: gettext( 'Use common timestamp resources 5518 and 6050 or object specific timestamp for object 6 reported by the device if available' ) }, '^Notification storing when disabled or offline$': { gettext: gettext('Notification storing when disabled or offline') }, '^Disable timeout$': { gettext: gettext('Disable timeout') }, '^LWM2M request timeout$': { gettext: gettext('LWM2M request timeout') }, '^in milliseconds$': { gettext: gettext('in milliseconds') }, '^Binary delivery encoding$': { gettext: gettext('Binary delivery encoding') }, '^Firmware update delivery method$': { gettext: gettext('Firmware update delivery method') }, '^Firmware update supported device protocol$': { gettext: gettext('Firmware update supported device protocol') }, '^Firmware update reset mechanism$': { gettext: gettext('Firmware update reset mechanism') }, '^Firmware update URL$': { gettext: gettext('Firmware update URL') }, '^Failed to find operation data in the internal memory store\\. Try again!$': { gettext: gettext('Failed to find operation data in the internal memory store. Try again!') }, '^Security mode$': { gettext: gettext('Security mode') }, '^Bootstrap PSK ID$': { gettext: gettext('Bootstrap PSK ID') }, '^Bootstrap pre-shared key$': { gettext: gettext('Bootstrap pre-shared key') }, '^LWM2M PSK ID$': { gettext: gettext('LWM2M PSK ID') }, '^LWM2M pre-shared key$': { gettext: gettext('LWM2M pre-shared key') }, '^LWM2M bulk device upload operation$': { gettext: gettext('LWM2M bulk device upload operation') }, '^This operation is only triggered by the agent when user uploads a CSV file with all required information to register new LWM2M devices\\. The source of the operation is the LWM2M device connector\\. Users are not able to trigger this operation using the shell command\\.$': { gettext: gettext( 'This operation is only triggered by the agent when user uploads a CSV file with all required information to register new LWM2M devices. The source of the operation is the LWM2M device connector. Users are not able to trigger this operation using the shell command.' ) }, '^Write$': { gettext: gettext('Write') }, '^Execute$': { gettext: gettext('Execute') }, '^Execute with parameters$': { gettext: gettext('Execute with parameters') }, '^Delete Instance$': { gettext: gettext('Delete instance') }, '^Create Instance$': { gettext: gettext('Create instance') }, '^Read Object$': { gettext: gettext('Read object') }, '^Read Instance$': { gettext: gettext('Read instance') }, '^LWM2M bulk device removal operation$': { gettext: gettext('LWM2M bulk device removal operation') }, '^This operation is only triggered by the agent when user uploads a CSV file with a list of endpoint IDs to delete from C8Y\\.The source of the operation is the LWM2M device connector\\. Users are not able to trigger this operation using the shell command\\.$': { gettext: gettext( 'This operation is only triggered by the agent when user uploads a CSV file with a list of endpoint IDs to delete from the platform. The source of the operation is the LWM2M device connector. Users are not able to trigger this operation using the shell command.' ) }, '^Could not find device$': { gettext: gettext('Could not find device') }, '^Exception occurred while removing device (.+?)$': { gettext: gettext('Exception occurred while removing device: {{ exceptionMessage }}'), placeholders: { exceptionMessage: '$1' } }, '^This command can be used to migrate LWM2M devices which are created in a non-standard way\\. It can take comma-separated device managed object IDs as parameters\\. If the IDs are specified then the migration will be done only for those devices\\. If the command is sent without any parameters then the agent will look up for possible Lwm2m devices that are not created in a standard way and try to migrate them\\. Usage: migrateLwm2mDevices 1122,3344 or migrateLwm2mDevices$': { gettext: gettext( 'This command can be used to migrate LWM2M devices which are created in a non-standard way. It can take comma-separated device managed object IDs as parameters. If the IDs are specified then the migration will be done only for those devices. If the command is sent without any parameters then the agent will look up for possible LWM2M devices that are not created in a standard way and try to migrate them. Usage: migrateLwm2mDevices 1122,3344 or migrateLwm2mDevices' ) }, '^Unable to migrate devices$': { gettext: gettext('Unable to migrate devices') }, '^Error while processing report$': { gettext: gettext('Error while processing report') }, '^Expected 1 endpointId argument$': { gettext: gettext('Expected 1 endpointId argument') }, '^LWM2M device registration$': { gettext: gettext('LWM2M device registration') }, '^The required and optional properties to register and setup LWM2M Devices$': { gettext: gettext('The required and optional properties to register and setup LWM2M devices') }, '^Bootstrap$': { gettext: gettext('Bootstrap') }, '^Advanced$': { gettext: gettext('Advanced') }, '^Bulk LWM2M device registration$': { gettext: gettext('Bulk LWM2M device registration') }, '^This command returns a list of shell commands with description that can be created for the Lwm2m device connector\\.$': { gettext: gettext( 'This command returns a list of shell commands with description that can be created for the LWM2M device connector.' ) }, '^The following operations are supported:': { gettext: gettext('The following operations are supported:') }, '^PSK template$': { gettext: gettext('PSK template') }, '^A bulk registration CSV template showing all mandatory fields$': { gettext: gettext('A bulk registration CSV template showing all mandatory fields') }, '^Mandatory fields template$': { gettext: gettext('Mandatory fields template') }, '^General template$': { gettext: gettext('General template') }, '^A bulk registration CSV template for NO_SEC devices with all optional fields$': { gettext: gettext('A bulk registration CSV template for NO_SEC devices with all optional fields') }, '^A general bulk registration CSV template showing all possible fields$': { gettext: gettext('A general bulk registration CSV template showing all possible fields') }, '^A bulk registration CSV template for PSK devices with all optional fields$': { gettext: gettext('A bulk registration CSV template for PSK devices with all optional fields') }, '^NO_SEC template$': { gettext: gettext('NO_SEC template') } }

operations/bulk-operation-from-single/bulk-operation-from-single.module.ts

bulkOperationCreateSingleRoutes
Type : Route[]
Default value : [ { path: 'devicecontrol/single/create-bulk/:operationId', component: BulkOperationFromSingleComponent } ]

operations/bulk-operations-list/bulk-operations-list.module.ts

bulkOperationListRoutes
Type : Route[]
Default value : [ { path: 'devicecontrol/bulk', component: BulkOperationsListComponent } ]

operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.ts

bulkOperatioStepperRoutes
Type : Route[]
Default value : [ { path: 'devicecontrol/bulk/creation/:type', component: BulkOperationsStepperContainerComponent } ]

register-device/bulk/bulk-device-registration-modal.component.ts

bulkSchema
Type : object
Default value : { $schema: 'https://json-schema.org/draft/2019-09/schema', type: 'object', properties: { csvBulkFile: { type: 'string', title: gettext('CSV file upload'), description: gettext( 'You can use file upload component to let users send files. This input accepts only a single CSV file.' ), contentEncoding: 'base64', contentMediaType: 'csv' } }, required: ['csvBulkFile'], additionalProperties: false }
fullCsvHeaders
Type : string[]
Default value : [ 'ID', 'CREDENTIALS', 'TYPE', 'NAME', 'ICCID', 'IDTYPE', 'PATH', 'SHELL', 'AUTH_TYPE' ]
simpleCsvHeaders
Type : string[]
Default value : ['ID', 'PATH']

register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.ts

bulkSchema
Type : object
Default value : { $schema: 'https://json-schema.org/draft/2019-09/schema', type: 'object', properties: { csvBulkFile: { type: 'string', title: gettext('CSV file upload'), description: gettext( 'You can use file upload component to let users send files. This input accepts only a single CSV file.' ), contentEncoding: 'base64', contentMediaType: 'csv' } }, required: ['csvBulkFile'], additionalProperties: false }

core/i18n/load-locale.ts

cache
Default value : new Map()

icon-selector/icon-constant.ts

cityIcons
Type : []
Default value : [ 'hospital-o', 'h-square', 'institution', 'ios-themes', 'building', 'apartment', 'department1', 'organization', 'office', 'company', 'warehouse', 'shop', 'work-from-home', 'house', 'dog-house', 'home-automation', 'garage-door', 'depot', 'garage', 'open-garage-door', 'close-garage-door', 'barn', 'bungalow', 'exterior', 'heating-room', 'mortgage', 'home-safety', 'travel-agency', 'department-shop', 'book-shelf', 'emergency-exit', 'stairs', 'stairs-down', 'stairs-up', 'temperature-inside', 'treehouse', 'water-heater', 'magic', 'parking' ]
devicesAndSensorsIcons
Type : []
Default value : [ 'thermometer', 'sensor', 'package', 'packages', 'blockly', 'objects', 'monitoring', 'qr-code', 'online', 'temperature', 'air-conditioner', 'air-shaft', 'fan', 'light', 'light-automation', 'light-off', 'reflector-bulb', 'spiral-bulb', 'mirrored-reflector-bulb', 'light-bulb', 'light-on', 'plumbing', 'wi-fi-router', 'gas-bottle', 'grater', 'air-quality', 'central-heating', 'light-dimmer', 'radio-station', 'relay-home-automation', 'remote-control', 'tv-off', 'wall-socket', 'washing-machine', 'light-dimming-10-percent', 'work-light', 'plug', 'electrical', 'water-pipe', 'thermometer-automation', 'fire-extinguisher', 'temperature-sensitive', 'calculator', 'humidity', 'system-information', 'system-report', 'system-task', 'imac-clock', 'imac-exit', 'imac-settings', 'macbook-settings', 'connected', 'disconnected', 'mobile', 'multiple-devices', 'client-management', 'nfc', 'mobile-email', 'empty-battery', 'low-battery', 'battery-level', 'charged-battery', 'full-battery', 'no-battery', 'charging-battery', 'no-connection', 'low-connection', 'signal', 'factory', 'robot', 'bot', 'fork-lift', 'gear-complex', 'cogs', 'automatic', 'electronics', 'gas', 'water', 'greentech', 'radio-tower', 'industrial-scales', 'iphone', 'smartphone-approve', 'smartphone-decline', 'phonelink-lock', 'tablet', 'devices', 'desktop', 'desktop1', 'monitor', 'laptop', 'checked-laptop', 'laptop-alert', 'laptop-error', 'computer-support', 'programming', 'keyboard', 'video-conference', 'remote-desktop', 'workspace', 'workstation', 'microchip', 'processor', 'smartphone-ram', 'bios', 'micro-sd', 'hdd', 'presentation', 'room-finder', 'statistics', 'server', 'stack', 'critical-thinking', 'environment1', 'network-card', 'network-cable', 'usb-on', 'ssd', 'asterisk', 'end-button', 'hub', 'individual-server', 'data-center', 'root-server', 'switch', 'nas', 'shutdown', 'hibernate', 'phone', 'no-idea', 'network', 'mind-map', 'centralized-network' ]
iconsByCategory
Type : DefaultIcons
Default value : { city: { label: gettext('City`icons-category`'), icons: cityIcons }, devicesAndSensors: { label: gettext('Devices and sensors`icons-category`'), icons: devicesAndSensorsIcons }, location: { label: gettext('Location`icons-category`'), icons: locationIcons }, office: { label: gettext('Office`icons-category`'), icons: officeIcons }, security: { label: gettext('Security`icons-category`'), icons: securityIcons }, transport: { label: gettext('Transport`icons-category`'), icons: transportIcons }, userInterface: { label: gettext('User interface`icons-category`'), icons: userInterfaceIcons }, weather: { label: gettext('Weather`icons-category`'), icons: weatherIcons } }
locationIcons
Type : []
Default value : [ 'globe', 'location', 'globe1', 'compass', 'marker', 'map-marker', 'marker-off', 'find-clinic', 'tesla-supercharger-pin', 'address', 'cab-stand', 'map', 'map-editing', 'quest', 'waypoint-map', 'anchor-nodes', 'map-pin', 'map-signs', 'gps', 'location-arrow', 'navigation', 'target1', 'hunt', 'location-off', 'location-update', 'layers', 'journey', 'street-view' ]
officeIcons
Type : []
Default value : [ 'medkit', 'fax', 'beer', 'department', 'tty', 'target', 'accuracy', 'goal', 'address-book', 'attract-customers', 'bullhorn', 'announcement', 'podium', 'time-card', 'change', 'applicant', 'download-resume', 'submit-resume', 'briefcase', 'new-job', 'job-seeker', 'business-building', 'dossier', 'alarms', 'project', 'important-book', 'important-note', 'id-badge', 'assignment-return', 'note-taking', 'audit', 'badge', 'new-contact', 'contact-details', 'phone-contact', 'inspection', 'clipboard-with-a-tick', 'survey', 'no-data-available', 'task-planning', 'invoice', 'summary-list', 'study', 'card', 'job', 'print', 'communication-internet', 'language-skill', 'language', 'window-close', 'new-slide', 'web-analytics', 'planner', 'rescheduling-a-task', 'resume-website', 'product-documents', 'resume-template', 'rubber-stamp', 'stamp', 'video-projector', 'management1', 'legal' ]
securityIcons
Type : []
Default value : [ 'shield', 'protect', 'warning-shield', 'free-forever', 'identification-documents', 'id-verified', 'fingerprint', 'pin-code', 'password', 'lock', 'unlock', 'privacy', 'lock-outline', 'lock-open', 'key', 'access', 'lock11', 'realtime', 'smart-home-connection', 'smart-home-checked', 'smart-home-error', 'smart-home-remove', 'smart-home-shield', 'voice-id', 'copyright', 'spy', 'bug1', 'stethoscope' ]
transportIcons
Type : []
Default value : [ 'space-shuttle', 'ambulance', 'car', 'taxi', 'truck', 'file-delivery', 'in-transit', 'bus', 'train', 'tram', 'scooter', 'bicycle', 'motorcycle', 'plane', 'ship', 'rocket', 'wrench1', 'road', 'flag-outline', 'software' ]
userInterfaceIcons
Type : []
Default value : [ 'newspaper-o', 'creative-commons', 'spinner', 'trademark', 'toggle-on', 'toggle-off', 'ticket', 'spoon', 'sort-numeric-desc', 'sort-numeric-asc', 'snowflake-o', 'shower', 'percent', 'paw', 'mouse-pointer', 'lemon-o', 'leaf', 'diamond', 'braille', 'bomb', 'binoculars', 'eject', 'touch-app', 'soccer', 'mood', 'deaf', 'cc', 'anchor', 'accessibility-settings', 'info', 'warning', 'exclamation-circle', 'high-priority', 'spam', 'help', 'help-outline', 'approval', 'unverified-account', 'user-manual', 'stages1', 'menu', 'menu-vertical', 'app-switcher', 'menu-horizontal', 'plus-math', 'subtract', 'clear', 'equals', 'exclamation', 'check', 'upvote-downvote', 'math', 'less-than1', 'more-than', 'circled-notch', 'inactive-state', 'storage1', 'lifebuoy', 'wait', 'block', 'clone', 'clipboard', 'search-more', 'search', 'search-plus', 'mobile-zoom-out', 'product1', 'trash-can', 'editing-trash', 'delete-bin', 'eye', 'visibility-off', 'double-tap', 'heart', 'unheart', 'science', 'school', 'badge1', 'data-quality', 'brightness-low', 'bedtime', 'add-identity-provider', 'bookmark-outline', 'bookmark', 'check-box', 'add-box', 'indeterminate-check-box', 'duplicate', 'check-box-outline-blank', 'checkbox-unselected', 'add-new', 'negative', 'multiplication', 'ratio', 'circle', 'contrast1', 'connection-status-on', 'ok', 'cross-circle', 'add', 'minus-circle', 'radio-button-unchecked', 'add-circle-outline', 'local-fire-department', 'outlined-flag', 'flag', 'flash-on', 'quick-mode-on', 'quick-mode-off', 'videogame-asset', 'portraits', 'extension', 'star-outline', 'star-half', 'star', 'home-page', 'attach', 'link1', 'unlink1', 'online1', 'offline', 'notification', 'alarm', 'no-reminders', 'medium-priority', 'sliders1', 'tune', 'button', 'breadcrumb', 'window-minimize', 'versions', 'pages', 'change-theme', 'landing-page', 'continuous-mode', 'ruler-pencil', 'header1', 'body', 'footer', 'logs', 'overview', 'tab', 'cursor-in-window', 'advertisement-page', 'external-link', 'level-up', 'trigger', 'rules1', 'email', 'form', 'language1', 'loading-bar', 'output', 'save1', 'single-choice', 'single-page-mode', 'skip', 'support', 'maintenance', 'themes', 'book1', 'top-menu', 'user-menu-male', 'hint', 'xlarge-icons1', 'circled-menu', 'keypad', 'cake', 'intelligence1', 'beginner', 'restaurant', 'local-cafe', 'wine-bar', 'espresso-cup', 'broom', 'buy-upgrade', 'speedometer', 'dashboard', 'palette', 'car-battery', 'magnetic', 'right-navigation-toolbar', 'tilt', 'clear-symbol', 'settings', 'advanced-search', 'installing-updates', 'heating-automation', 'impressum' ]
weatherIcons
Type : []
Default value : [ 'sun', 'sunlight', 'cloud1', 'rain', 'winter', 'storm', 'keep-dry', 'umbrella' ]

operations/shared/operations.model.ts

CLEAN_KEYS
Type : []
Default value : ['creationTime', 'deviceExternalIDs', 'id', 'self']
CLEAN_KEYS_UPDATE
Type : []
Default value : ['deviceId', 'deviceName', 'bulkOperationId']
OPERATION_STATUS_LABELS
Type : object
Default value : { PENDING: gettext('Pending'), EXECUTING: gettext('Executing'), FAILED: gettext('Failed'), SUCCESSFUL: gettext('Successful') }
OPERATION_STATUS_OPTIONS_MAP
Type : OperationStatusOptionsMap
Default value : { PENDING: { label: OPERATION_STATUS_LABELS.PENDING, status: OperationStatus.PENDING, icon: 'clock-o', styleClass: '' } as unknown as StatusOption, EXECUTING: { label: OPERATION_STATUS_LABELS.EXECUTING, status: OperationStatus.EXECUTING, icon: 'refresh', styleClass: 'text-info' } as unknown as StatusOption, SUCCESSFUL: { label: OPERATION_STATUS_LABELS.SUCCESSFUL, status: OperationStatus.SUCCESSFUL, icon: 'check-circle', styleClass: 'text-success' } as unknown as StatusOption, FAILED: { label: OPERATION_STATUS_LABELS.FAILED, status: OperationStatus.FAILED, icon: 'exclamation-circle', styleClass: 'text-danger' } as unknown as StatusOption }
RESERVED_KEYS
Default value : CLEAN_KEYS.concat(['deviceId', 'deviceName', 'bulkOperationId'])
STANDARD_KEYS
Type : object
Default value : { failureReason: gettext('Failure reason'), description: gettext('Description'), status: gettext('Status') }

cockpit-config/cockpit-config.model.ts

COCKPIT_CONFIG_PATH
Type : string
Default value : 'cockpit-application-configuration'
DEFAULT_CONFIG
Type : CockpitConfig
Default value : { rootNodes: [], features: { alarms: true, dataExplorer: true, groups: true, reports: true, exports: true, dataPointLibrary: true, globalSmartRules: true, smartRules: true, subassets: true, search: true }, hideNavigator: false, homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME, userSpecificHomeDashboard: false }
DEFAULT_HOME_DASHBOARD_NAME
Type : string
Default value : 'home-cockpit1'
USER_HOME_DASHBOARD_NAME
Type : string
Default value : 'home-cockpit-user'

context-dashboard/cockpit-dashboard/cockpit-dashboard.model.ts

COCKPIT_HOME_DASHBOARD_CONFIG
Default value : new InjectionToken( 'CockpitHomeDashboardConfig' )

A hook to define the default widgets of the home dashboard in the cockpit app.

DEFAULT_COCKPIT_HOME_WIDGETS
Default value : [ { name: 'cockpit.welcome.widget', title: gettext(''), _x: 0, _y: 0, _height: 5, _width: 12, classes: { 'panel-title-hidden': true } }, { name: 'Asset Alarms', title: gettext('Active, critical alarms'), _x: 0, _y: 5, _height: 4, _width: 6 }, { name: 'Recent Alarms', title: gettext('Recent alarms'), _x: 0, _y: 9, _height: 4, _width: 6 }, { name: 'Map', title: gettext('Map'), _x: 6, _y: 5, _height: 8, _width: 6 } ] as Widget[]

An array of widgets that is per default placed on the home dashboard of the cockpit app.

assets-navigator/asset-selector/asset-selector.model.ts

CONFIG_OPTIONS_DEFAULT
Type : AssetSelectorOptions
Default value : { label: gettext('Asset selection'), multi: false, showFilter: false, columnHeaders: false, singleColumn: false, modelMode: 'simple', groupsOnly: false, groupsSelectable: false, search: false, showUnassignedDevices: false, view: 'tree', showChildDevices: false }

test/test-config.helper.ts

configureTests
Default value : (configure: ConfigureFn, compilerOptions: CompilerOptions = {}) => { const compilerConfig: CompilerOptions = { preserveWhitespaces: false, ...compilerOptions }; const configuredTestBed = TestBed.configureCompiler(compilerConfig); configure(configuredTestBed); return configuredTestBed.compileComponents().then(() => configuredTestBed); }

connectivity/connectivity.module.ts

connectivityRoutes
Type : Route[]
Default value : [ { path: 'connectivitySettings', component: ConditionalTabsOutletComponent } ]

context-dashboard/context-dashboard.model.ts

CONTEXT_DASHBOARD_CONFIG
Default value : new InjectionToken<any>('ContextDashboardConfig')
DASHBOARD_THEME_CLASSES
Type : []
Default value : [ { label: gettext('Light`theme`'), class: 'dashboard-theme-light', description: gettext('The dashboard is styled with a light background and has low contrast.') }, { label: gettext('Dark`theme`'), class: 'dashboard-theme-dark', description: gettext('The dashboard is styled with a dark background and has high contrast.') }, { label: gettext('Transparent`theme`'), class: 'dashboard-theme-transparent', description: gettext( 'The dashboard is styled with a transparent background and therefore is border-less.' ) }, { label: gettext('Branded`theme`'), class: 'dashboard-theme-branded', description: gettext('The dashboard is styled with the main brand color.') } ]
STYLING_CLASS_PREFIXES
Type : []
Default value : ['dashboard-theme-', 'panel-title-', 'panel-content-']
WIDGET_CONTENT_CLASSES
Type : []
Default value : [ { label: gettext('Light`style`'), class: 'panel-content-light', description: gettext('The widget is styled with a light background and has low contrast.') }, { label: gettext('Dark`style`'), class: 'panel-content-dark', description: gettext('The widget is styled with a dark background and has high contrast.') }, { label: gettext('Transparent`style`'), class: 'panel-content-transparent', description: gettext( 'The widget is styled with a transparent background and therefore is border-less.' ) }, { label: gettext('Branded`style`'), class: 'panel-content-branded', description: gettext('The widget is styled with the main brand color.') } ]
WIDGET_HEADER_CLASSES
Type : []
Default value : [ { label: gettext('Regular`style`'), class: 'panel-title-regular', description: gettext('The widget has no border between header and content.') }, { label: gettext('Border`style`'), class: 'panel-title-border', description: gettext('The widget has a small separation border between header and content.') }, { label: gettext('Overlay`style`'), class: 'panel-title-overlay', description: gettext('The widget content overlays the header.') }, { label: gettext('Hidden`style`'), class: 'panel-title-hidden', description: gettext('The widget header is not shown.') } ]

ecosystem/ecosystem.service.ts

CUMULOCITY_JSON
Type : string
Default value : 'cumulocity.json'

datapoint-library/datapoint-library.model.ts

DATAPOINT_LIBRARY_CONFIG
Default value : new InjectionToken<DatapointLibraryOptions>( 'DatapointLibraryOptions' )
pathToDatapointLibrary
Type : string
Default value : 'datapointlibrary'

datapoint-selector/datapoint-selection.model.ts

DATAPOINT_LIBRARY_FRAGMENT
Type : string
Default value : 'c8y_Kpi'

context-dashboard/context-dashboard.module.ts

defaultConfig
Type : object
Default value : { allowFullscreen: true, widgetFilter({ data }) { return !(data && data.settings && data.settings.noNewWidgets); }, routes: [ { path: 'dashboard/:dashboardId', component: ContextDashboardComponent, canActivate: [DeviceDashboardGuard], context: ViewContext.Device }, { path: 'dashboard/:dashboardId', component: ContextDashboardComponent, canActivate: [GroupDashboardGuard], context: ViewContext.Group } ] }

device-shell/device-shell.module.ts

DEVICE_SHELL_ROUTE
Type : Route
Default value : { path: 'shell', context: ViewContext.Device, component: DeviceShellComponent, label: gettext('Shell'), icon: 'terminal', canActivate: [DeviceShellGuard] }

core/device-status/device-availability.ts

deviceAvailabilityIconMap
Type : object
Default value : { sendData: { [SendStatus.AVAILABLE]: { icon: 'long-arrow-right', class: 'statusOk' }, [SendStatus.UNAVAILABLE]: { icon: 'long-arrow-right', class: 'statusNok' }, [SendStatus.UNKNOWN]: { icon: 'long-arrow-right', class: 'statusUnknown' }, [SendStatus.NOT_MONITORED]: { icon: 'long-arrow-right', class: 'statusUnknown' } }, push: { [PushStatus.CONNECTED]: { icon: 'long-arrow-left', class: 'statusOk' }, [PushStatus.DISCONNECTED]: { icon: 'long-arrow-left', class: 'statusUnknown' }, [PushStatus.UNKNOWN]: { icon: 'long-arrow-left', class: 'statusUnknown' }, [PushStatus.MAINTENANCE]: { icon: 'wrench', class: 'statusAlert' } }, device: { MAINTENANCE: { icon: 'wrench', class: 'statusAlert' } } }
tooltips
Type : object
Default value : { sendStatusConnected: (lastMessage, translateService) => { const date = formatDate( new Date(lastMessage), 'medium', translateService.currentLang || TranslateService.defaultLang() ); return translateService.instant(gettext('Device last request:\n{{date}}'), { date }); }, sendStatusDisconnected: gettext('Connection not monitored'), pushStatusConnected: gettext('Connection to device established'), pushStatusDisconnected: gettext( 'Connection to device not established (not supported by device or no connectivity)' ), maintenance: gettext('Device is under maintenance') }

device-profile/device-profile.module.ts

deviceProfilesRoutes
Type : Route[]
Default value : [ { path: 'device-profiles/:id', component: DeviceProfileComponent }, { path: 'device-profiles', component: DeviceProfileListComponent } ]
deviceTabProfileRoutes
Type : any[]
Default value : [ { context: ViewContext.Device, path: 'device-profile', component: DeviceTabProfileComponent, label: gettext('Device profile'), icon: 'c8y-device-profile', canActivate: [DeviceProfileGuard] } ]

protocol-opcua/opcua-protocol.module.ts

deviceProtocolRoutes
Type : Route[]
Default value : [ { path: 'deviceprotocols/opcuaV2/:id', component: OpcuaDeviceProtocolDetailComponent } ]
routes
Type : Route[]
Default value : [ { context: ViewContext.Device, path: 'opcua-servers', component: OpcuaServersComponent, label: gettext('OPC UA server'), icon: 'server', canActivate: [OpcuaAgentGuard, OpcuaMicroserviceGuard] }, { context: ViewContext.Device, path: 'address-space', component: OpcuaAddressSpaceComponent, label: gettext('Address space'), icon: 'cloud-network', canActivate: [OpcuaServerGuard, OpcuaMicroserviceGuard] } ]

core/docs/defaults.items.ts

documentationItems
Type : []
Default value : [ { icon: 'c8y-c8y-data', // double c8y- is correct! label: gettext('Concepts guide`KEEP_ORIGINAL`'), url: '/concepts/introduction', type: 'doc' }, { icon: 'c8y-user', label: gettext('User guide`KEEP_ORIGINAL`'), url: '/users-guide/getting-started', type: 'doc' }, { icon: 'c8y-device-management', label: gettext('Device integration tutorial`KEEP_ORIGINAL`'), url: '/device-tutorials/tutorials-introduction', type: 'doc' }, { icon: 'c8y-book', label: gettext('Cumulocity IoT Edge`KEEP_ORIGINAL`'), url: '/edge/overview', type: 'doc' }, { icon: 'c8y-tools', label: gettext('Microservice SDK guide`KEEP_ORIGINAL`'), url: '/microservice-sdk/introduction', type: 'doc' }, { icon: 'c8y-tools', label: gettext('Device SDK guide`KEEP_ORIGINAL`'), url: '/device-sdk/introduction', type: 'doc' }, { icon: 'c8y-smart-rest', label: gettext('Web SDK guide`KEEP_ORIGINAL`'), url: '/web/introduction', type: 'doc' }, { icon: 'c8y-data-explorer', label: gettext('Streaming analytics guide`KEEP_ORIGINAL`'), url: '/apama/introduction', type: 'doc' }, { icon: 'c8y-bookmark', label: gettext('Reference guide`KEEP_ORIGINAL`'), url: '/reference/rest-implementation', type: 'doc' }, { icon: 'gavel', label: gettext('Legal notices'), url: 'https://documentation.softwareag.com/legal/', type: 'doc' } ]

core/common/date.pipe.ts

ES_MAX_TIME_MILLISECONDS
Type : number
Default value : 8640000000000000

The range of times supported by ECMAScript Date objects in milliseconds.

reports/ng1/downgraded.components.ts

exportSchedulesComponent
Default value : downgradeComponent({ component: ExportSchedulesComponent })

core/dynamic-forms/dynamic-forms-ui-theme.module.ts

FIELD_TYPES
Type : Array<Type<FieldType>>
Default value : [ FieldCheckbox, ArrayTypeComponent, WrapperFormField, FieldFile, FieldInput, FieldRadio, ObjectTypeComponent, FieldDate, FieldDateTime, TypeaheadTypeComponent ]

repository/firmware/device-tab/firmware-device-tab.guard.ts

FIRMWARE_FRAGMENT
Type : string
Default value : 'c8y_Firmware'
SUPPORTED_OPERATIONS_FRAGMENT
Type : string
Default value : 'c8y_SupportedOperations'

core/action/action.service.ts

HOOK_ACTION
Default value : new InjectionToken('ActionFactory')

A hook to add an action using the multi-provider extension concept.

core/action-bar/action-bar.service.ts

HOOK_ACTION_BAR
Default value : new InjectionToken<ActionBarExtension>('ActionBarFactory')

A hook to add ActionBarItems using the multi provider extension concept.

core/breadcrumb/breadcrumb.service.ts

HOOK_BREADCRUMB
Default value : new InjectionToken('BreadcrumbFactory')

core/dynamic-component/dynamic-component.model.ts

HOOK_COMPONENTS
Default value : new InjectionToken<DynamicComponentExtension[]>( 'Hook Dynamic Component' )

A hook to add dynamic components to the UI (e.g. widgets).

RESOLVING_COMPONENT_WAIT_TIME
Default value : new InjectionToken<number>( 'RESOLVING_COMPONENT_WAIT_TIME' )

Time the hook waits until it emits an undefined value. Used for not defined widgets -> by default after 5s we show an error that the widget could not be loaded.

register-device/dropdown/register-device-extension.service.ts

HOOK_DEVICE_REGISTRATION
Default value : new InjectionToken<RegisterDeviceExtension>('RegisterDevicesFactory')

core/docs/docs.models.ts

HOOK_DOCS
Default value : new InjectionToken<DocLinkExtension[]>('Hook docs')

core/provider-configuration/provider-configuration-hook.ts

HOOK_DYNAMIC_PROVIDER_CONFIG
Default value : new InjectionToken('Dynamic Provider Config')

core/navigator/navigator.service.ts

HOOK_NAVIGATOR_NODES
Default value : new InjectionToken<NavigatorExtension[]>( 'NavigatorNodesFactory' )

A hook to use for Multi Provider extension.

core/common/options.service.ts

HOOK_OPTIONS
Default value : new InjectionToken<ExtensionFactory<ApplicationOptions>>('App options')

core/i18n/patterns-message.hook.ts

HOOK_PATTERN_MESSAGES
Default value : new InjectionToken('Pattern Messages')

core/search/search.service.ts

HOOK_SEARCH
Default value : new InjectionToken('SearchFactory')

A hook to use for Multi Provider extension.

services/status-options/status-options.model.ts

HOOK_SERVICE_STATUS
Default value : new InjectionToken<StatusOption | StatusOption[]>( 'SERVICE_STATUS' )

Extension hook allowing to register custom service statuses and configure their visual presentation.

SERVICE_STATUS_OPTIONS
Type : StatusOption[]
Default value : [ { key: 'up', label: gettext('Up'), icon: 'check-circle', class: 'text-success' }, { key: 'down', label: gettext('Down'), icon: 'exclamation-circle', class: 'text-danger' }, { key: 'unknown', label: gettext('Unknown'), icon: 'inactive-state' } ]

Standard status options supported by the platform.

core/stepper/stepper.service.ts

HOOK_STEPPER
Default value : new InjectionToken<StepperExtension[]>('HookStepper')

A hook to use for Multi Provider extension.

core/tabs/tabs.service.ts

HOOK_TABS
Default value : new InjectionToken<TabExtension[]>('TabsFactory')

A hook to use for Multi Provider extension.

core/wizard/wizard.model.ts

HOOK_WIZARD
Default value : new InjectionToken<WizardExtension[]>('Generic wizard')

A hook to add wizard entries.

core/common/common.module.ts

ICON_LIST
Default value : new InjectionToken('iconList')

core/common/icon.directive.ts

ICONS
Type : []
Default value : [ 'home', 'th', 'bar-chart-o', 'tasks', 'tachometer', 'bell', 'puzzle-piece', 'map-marker', 'location-arrow', 'globe', 'power-off', 'desktop', 'laptop', 'mobile', 'signal', 'qrcode', 'file', 'file-text', 'folder', 'folder-open', 'archive', 'ssd', 'book', 'bookmark', 'tag', 'flag', 'search', 'heart', 'star', 'bolt', 'cog', 'cogs', 'wrench', 'ban', 'user', 'users', 'sign-in', 'sign-out', 'upload', 'download', 'cloud-upload', 'cloud-download', 'cloud', 'hourglass', 'refresh', 'repeat', 'undo', 'lock', 'unlock', 'info', 'question-circle', 'exclamation-circle', 'bug', 'calendar', 'random', 'asterisk', 'key', 'link', 'chain-broken', 'external-link', 'picture-o', 'comment', 'bullhorn', 'phone', 'lightbulb-o', 'flask', 'cloud-network', 'exchange', 'code-fork', 'keyboard-o', 'terminal', 'code', 'clipboard', 'pencil', 'envelope', 'inbox', 'reply', 'share', 'thumbs-up', 'thumbs-down', 'check', 'plus', 'expand', 'compress', 'arrows', 'arrow-up', 'arrow-down', 'arrow-left', 'arrow-right', 'th-list', 'bars', 'table', 'columns', 'filter', 'sort', 'sort-up', 'sort-down', 'ellipsis-h', 'ellipsis-v', 'rss' ]

connectivity/impact/impact.module.ts

impactRoutes
Type : Route[]
Default value : [ { path: 'connectivitySettings/impact_provider_settings', component: ImpactProviderSettingsComponent, canActivate: [ImpactGuard] } ]

core/i18n/languages.ts

LANGUAGES
Default value : new InjectionToken('Languages')

core/i18n/locale.path.ts

LOCALE_PATH
Default value : new InjectionToken('Locale path')

core/common/common.constants.ts

MAX_PAGE_SIZE
Type : number
Default value : 2000

The maximum pageSize used in API queries to c8y.

sms-gateway/pattern-messages.data.ts

MESSAGES
Type : object
Default value : { '^Sender name$': { gettext: gettext('Sender name') }, '^Sender name used for sent SMS$': { gettext: gettext('Sender name used for sent SMS') }, '^Sender address$': { gettext: gettext('Sender address') }, '^Sender address used for sent SMS$': { gettext: gettext('Sender address used for sent SMS') }, '^Username$': { gettext: gettext('Username') }, '^Password$': { gettext: gettext('Password') }, '^Licence key$': { gettext: gettext('License key') }, '^Key$': { gettext: gettext('Key') }, '^API base URL$': { gettext: gettext('API base URL') }, '^API URL$': { gettext: gettext('API URL') }, '^oauth$': { gettext: gettext('OAuth') }, '^basic$': { gettext: gettext('Basic') }, '^Authentication method$': { gettext: gettext('Authentication method') }, '^Defines which authentication method is used with the provider$': { gettext: gettext('Defines which authentication method is used with the provider') }, '^Static headers$': { gettext: gettext('Static headers') }, '^Static headers that should be added to requests towards the provider$': { gettext: gettext('Static headers that should be added to requests towards the provider') }, '^OAuth token URL$': { gettext: gettext('OAuth token URL') }, '^URL where the OAuth token is requested from (required if OAuth method is chosen)$': { gettext: gettext( 'URL where the OAuth token is requested from (required if OAuth method is selected)' ) }, '^OAuth toke mime type$': { gettext: gettext('OAuth token mime type') }, '^Overrides the OAuth token response mime type$': { gettext: gettext('Overrides the OAuth token response mime type') }, '^OAuth access toke type$': { gettext: gettext('OAuth access token type') }, '^Overrides the OAuth access token type$': { gettext: gettext('Overrides the OAuth access token type') }, '^Global configuration$': { gettext: gettext('Global configuration') }, '^Enables or disables if the settings may be used globally for all tenants (Only possible in management tenant)$': { gettext: gettext( 'Enables or disables the settings globally for all tenants (only possible in management tenant)' ) }, '^API key$': { gettext: gettext('API key') }, '^Inherit to subtenants$': { gettext: gettext('Inherit to subtenants') }, "^Enables or disables if this tenant's configuration may be inherited to subtenants$": { gettext: gettext( 'Enables or disables the option to inherit the tenant configuration to subtenants' ) }, '^Login$': { gettext: gettext('Login') }, '^Source business unit ID$': { gettext: gettext('Source business unit ID') }, '^Client ID$': { gettext: gettext('Client ID') }, '^Client secret$': { gettext: gettext('Client secret') } }

core/data-grid/data-grid.model.ts

minColumnGridTrackSize
Type : number
Default value : 80
ratiosByColumnTypes
Type : object
Default value : { /** The width ration for icon column type. */ icon: 1, /** The width ration for numeric column type. */ numeric: 1, /** The width ration for short text column type. */ 'text-short': 1.67, /** The width ration for long text column type. */ 'text-long': 3.33 }

Maps column types to relative widths.

assets-navigator/group.service.ts

MO_TYPES
Default value : [ 'asset', 'dynamicGroup', 'brokerSource', 'brokerSourceInactive', 'group', 'other' ] as const

test/jest-global-mocks.ts

mock
Default value : () => { let storage = {}; return { getItem: ( key ) => key in storage ? storage[ key ] : null, setItem: (key, value) => storage[ key ] = value || '', removeItem: ( key ) => delete storage[ key ], clear: () => storage = {}, }; }

upgrade/ng1/index.ts

NAME
Type : string
Default value : 'c8y.upgrade'
ng1Modules
Type : []
Default value : ['app', NAME]

core/setup/setup.model.ts

NEEDED_ROLE_FOR_SETUP
Type : string
Default value : 'ROLE_APPLICATION_MANAGEMENT_ADMIN'
SETUP_FINISHED_STEP_ID
Type : string
Default value : 'c8ySetupFinished'

core/common/number.pipe.ts

NUMBER_FORMAT_REGEXP
Default value : /^(\d+)?\.((\d+)(-(\d+))?)?$/

protocol-opcua/ng1/downgraded.components.ts

opcuaAddressSpaceTreeComponent
Default value : downgradeComponent({ component: OpcuaAddressSpaceTreeComponent, inputs: ['moId'], outputs: ['selectedNode'] })

core/common/status.model.ts

operationStatusClasses
Type : object
Default value : { [OperationStatus.PENDING]: 'text-info', [OperationStatus.EXECUTING]: 'text-info', [OperationStatus.SUCCESSFUL]: 'text-success', [OperationStatus.FAILED]: 'text-danger' }
operationStatusIcons
Type : object
Default value : { [OperationStatus.PENDING]: 'clock-o', [OperationStatus.EXECUTING]: 'refresh', [OperationStatus.SUCCESSFUL]: 'check-circle', [OperationStatus.FAILED]: 'exclamation-circle' }
statusAlert
Type : object
Default value : { [Status.SUCCESS]: `alert-${Status.SUCCESS}`, [Status.WARNING]: `alert-${Status.WARNING}`, [Status.DANGER]: `alert-${Status.DANGER}`, [Status.INFO]: `alert-${Status.INFO}` }
statusClasses
Type : object
Default value : { [Status.SUCCESS]: `text-${Status.SUCCESS}`, [Status.WARNING]: `text-${Status.WARNING}`, [Status.DANGER]: `text-${Status.DANGER}`, [Status.INFO]: `text-${Status.INFO}` }
statusIcons
Type : object
Default value : { [Status.SUCCESS]: 'check-circle', [Status.WARNING]: 'exclamation-triangle', [Status.DANGER]: 'exclamation-circle', [Status.INFO]: 'info-circle' }

context-dashboard/cockpit-dashboard/cockpit-dashboard.module.ts

previewImage
Type : string
Default value : ''

widgets/kpi-widget/kpi-widget.module.ts

previewImage
Type : string
Default value : ''

api/data.module.ts

providers
Type : any[]
Default value : (Object.keys(services).map((k) => toProvider(services[k])) as any[]) .concat([ { provide: ApiService, useClass: ApiService, deps: [FetchClient] } ])

context-dashboard/report-dashboard/report-dashboard-navigation.factory.ts

REPORT_DEFAULT_NAVIGATION_NODE_PRIORITY
Type : number
Default value : 30
REPORTS_NAVIGATOR_NODE_PRIORITY
Type : number
Default value : 40

reports/ng1/downgraded.services.ts

reportsService
Default value : downgradeInjectable(ReportsService)

repository/shared/repository.model.ts

REPOSITORY_BINARY_TYPES
Type : object
Default value : { [RepositoryType.SOFTWARE]: 'c8y_SoftwareBinary', [RepositoryType.FIRMWARE]: 'c8y_FirmwareBinary', [RepositoryType.CONFIGURATION]: 'c8y_ConfigurationDumpBinary' }

upgrade/ng1/root.component.ts

rootComponent
Type : object
Default value : { template: ` <c8y-bootstrap> <div id="c8y-legacy-view"> <div ng-view ng-if="vm.widthSet && vm.authState.hasAuth"></div> </div> </c8y-bootstrap>`, controller: c8yUiRootController, controllerAs: 'vm' }

device-list/device-list.module.ts

routes
Type : Route[]
Default value : [ { path: 'device', component: DeviceListComponent } ]

device-grid-example/device-grid-example.module.ts

routes
Type : Route[]
Default value : [ { path: 'grids/device-grid', component: DeviceGridExampleComponent, canActivate: [DeviceGridExampleGuard] } ]

operations/operations.module.ts

routes
Type : Route[]
Default value : [ { path: 'devicecontrol', redirectTo: 'devicecontrol/single', pathMatch: 'full' } ]

protocol-lpwan/lpwan-protocol.module.ts

routes
Type : Route[]
Default value : [ { context: ViewContext.Device, path: 'assign-protocol', component: LpwanAssignDeviceProtocolComponent, label: gettext('LPWAN'), icon: 'c8y-device-protocols', canActivate: [LpwanAgentGuard] } ]

core/router/router.module.ts

routes
Type : Route[]
Default value : [{ path: 'users/new', component: EmptyComponent }, { path: 'tenants/new', component: EmptyComponent }]

services/services-device-tab/services-device-tab.component.ts

SERVICE_FRAGMENT
Type : string
Default value : 'c8y_Service'

services/services-device-tab/services-device-tab.guard.ts

SERVICE_FRAGMENT
Type : string
Default value : 'c8y_Service'

protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.ts

settingsRoutes
Type : Route[]
Default value : [ { path: 'connectivitySettings/multiple_lns_connectors_sigfox', component: SigfoxMultipleLnsConnectorComponent }, { path: 'connectivitySettings/multiple_lns_connectors_actility', component: ActilityMultipleLnsConnectorComponent } ]

operations/operations-list/operations-list.module.ts

singleOperationListRoutes
Type : Route[]
Default value : [ { path: 'devicecontrol/single', component: OperationsListComponent } ]

upgrade/smart-rules.service.ts

smartRulesServiceProvider
Type : object
Default value : { provide: Ng1SmartRulesService, useFactory: SmartRulesServiceFactory, deps: ['$injector'] }

tenants/tenants.model.ts

TENANTS_MODULE_CONFIG
Default value : new InjectionToken<TenantsModuleConfig>('TenantsModuleConfig')

trusted-certificates/trusted-certificates.module.ts

trustedCertificatesRoutes
Type : Route[]
Default value : [ { path: 'trusted-certificates', component: TrustedCertificatesComponent } ]

upgrade/upgrade.routes.ts

UPGRADE_ROUTES
Type : []
Default value : [ { path: '**', component: EmptyComponent} ]

core/common/zip.service.ts

zip
Type : any

results matching ""

    No results matching ""