@c8y/ngx-components 1023.14.70 → 1023.14.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/ai/agent-chat/index.d.ts +1 -1
  2. package/ai/agent-chat/index.d.ts.map +1 -1
  3. package/ai/index.d.ts +1 -0
  4. package/ai/index.d.ts.map +1 -1
  5. package/asset-properties/index.d.ts +20 -2
  6. package/asset-properties/index.d.ts.map +1 -1
  7. package/cockpit-config/index.d.ts.map +1 -1
  8. package/echart/index.d.ts.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +19 -2
  10. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +2 -2
  12. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  14. package/fesm2022/c8y-ngx-components-asset-properties.mjs +36 -12
  15. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -7
  17. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  18. package/fesm2022/c8y-ngx-components-echart.mjs +47 -16
  19. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  20. package/fesm2022/c8y-ngx-components-global-context.mjs +40 -17
  21. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  22. package/fesm2022/c8y-ngx-components-services.mjs +2 -2
  23. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components-tenants.mjs +3 -3
  25. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  26. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -2
  27. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  28. package/fesm2022/c8y-ngx-components-upgrade.mjs +13 -1
  29. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  30. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  31. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
  33. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  34. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +5 -0
  35. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  36. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +3 -5
  37. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +4 -0
  39. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components.mjs +30 -5
  41. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  42. package/global-context/index.d.ts +11 -2
  43. package/global-context/index.d.ts.map +1 -1
  44. package/index.d.ts +13 -2
  45. package/index.d.ts.map +1 -1
  46. package/locales/de.po +392 -102
  47. package/locales/es.po +337 -100
  48. package/locales/fr.po +400 -131
  49. package/locales/ja_JP.po +395 -168
  50. package/locales/ko.po +341 -80
  51. package/locales/locales.pot +10 -13
  52. package/locales/nl.po +326 -60
  53. package/locales/pl.po +331 -66
  54. package/locales/pt_BR.po +332 -67
  55. package/locales/zh_CN.po +340 -77
  56. package/locales/zh_TW.po +349 -80
  57. package/package.json +1 -1
  58. package/upgrade/index.d.ts.map +1 -1
  59. package/widgets/implementations/alarms/index.d.ts.map +1 -1
  60. package/widgets/implementations/html-widget/index.d.ts +2 -2
  61. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
  62. package/widgets/implementations/info-gauge/index.d.ts.map +1 -1
  63. package/widgets/implementations/three-d-rotation/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation.mjs","sources":["../../widgets/implementations/three-d-rotation/three-d-rotation/three-d-rotation.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation/three-d-rotation.component.html","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.html","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-config/three-d-rotation-widget-config.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-config/three-d-rotation-widget-config.component.html","../../widgets/implementations/three-d-rotation/c8y-ngx-components-widgets-implementations-three-d-rotation.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { combineLatest, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { loadThree } from '@c8y/ngx-components/lazy/three';\nimport { ThreeDRotationWidgetRotate } from '../three-d-rotation.model';\nimport { loadOrbitControls } from '@c8y/ngx-components/lazy/three-orbit-controls';\nimport type * as THREE from 'three';\nimport type { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\n\n@Component({\n selector: 'c8y-three-d-rotation',\n templateUrl: './three-d-rotation.component.html',\n standalone: true,\n imports: []\n})\nexport class ThreeDRotationComponent implements AfterViewInit, OnInit, OnDestroy {\n @ViewChild('canvas')\n private canvasRef: ElementRef;\n\n @Input() angles$: Observable<ThreeDRotationWidgetRotate> = of({ x: 0, y: 0, z: 0 });\n @Input() modelObj$: Observable<any>;\n @Input() cameraType$: Observable<string> = of('PC');\n @Input() isWireframe$: Observable<boolean> = of(true);\n\n get canvas(): HTMLCanvasElement | null {\n return this.canvasRef?.nativeElement;\n }\n\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera | THREE.OrthographicCamera;\n model: THREE.Object3D;\n private renderer: THREE.WebGLRenderer;\n\n private afterViewInit$ = new Subject<void>();\n\n private renderSubscription: Subscription;\n private controls: OrbitControls;\n\n ngOnInit() {\n const three$ = from(loadThree()).pipe(shareReplay(1));\n const model$ = combineLatest([three$, this.modelObj$]).pipe(\n filter(([, modelObj]) => !!modelObj),\n switchMap(([three, modelObj]) => this.loadModel(modelObj, three))\n );\n const modelWithWireframe$ = combineLatest([model$, this.isWireframe$]).pipe(\n map(([model, isWireframe]) => this.setWireframe(model, isWireframe))\n );\n\n const rotatedModel$ = combineLatest([modelWithWireframe$, this.angles$]).pipe(\n filter(([, angles]) => !!angles),\n map(([model, angles]) => {\n Object.assign(model.rotation, angles);\n return model;\n })\n );\n\n const cameraType$ = this.cameraType$.pipe(\n filter(type => !!type),\n distinctUntilChanged()\n );\n\n let previousCameraType: string;\n this.renderSubscription = combineLatest([\n three$,\n rotatedModel$,\n cameraType$,\n this.afterViewInit$\n ])\n .pipe(filter(([, model]) => !!model))\n .subscribe(async ([three, model, cameraType]) => {\n if (model !== this.model || previousCameraType !== cameraType) {\n this.model = model;\n previousCameraType = cameraType;\n this.createScene(three, model, cameraType);\n }\n if (!this.renderer) {\n await this.setupRenderer(three);\n }\n this.render();\n });\n }\n\n ngOnDestroy(): void {\n this.renderSubscription?.unsubscribe();\n this.controls?.dispose();\n }\n\n ngAfterViewInit() {\n this.afterViewInit$.next();\n }\n\n async loadModel(\n modelObj: any,\n three: typeof THREE\n ): Promise<THREE.Object3D<THREE.Object3DEventMap>> {\n const loader = new three.ObjectLoader();\n const parsedModel = await loader.parse(modelObj);\n return parsedModel;\n }\n\n async setupRenderer(three: typeof THREE) {\n //* Renderer\n // Use canvas element in template\n this.renderer = new three.WebGLRenderer({ canvas: this.canvas });\n this.renderer.setPixelRatio(devicePixelRatio);\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n\n const OrbitControls = await loadOrbitControls();\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n this.controls.enableDamping = true;\n this.controls.dampingFactor = 0.25;\n this.controls.rotateSpeed = 0.35;\n this.controls.addEventListener('change', () => this.render());\n }\n\n setWireframe(parsedModel: THREE.Object3D, isWireframe: boolean) {\n parsedModel.children.forEach((child: any) => {\n if (child.material) {\n child.material.wireframe = isWireframe;\n }\n });\n return parsedModel;\n }\n\n private render(): void {\n this.renderer?.render(this.scene, this.camera);\n }\n\n private createScene(three: typeof THREE, model: THREE.Object3D, cameraType: string) {\n //* Scene\n this.scene = new three.Scene();\n this.scene.background = new three.Color(0xffffff);\n this.scene.add(model);\n\n const light = new three.AmbientLight(0xffffff, 0.5);\n const lightDirectional = new three.DirectionalLight(0xffffff);\n const lightDirectional2 = new three.DirectionalLight(0xffffff);\n\n lightDirectional.position.set(20, 25, 30);\n lightDirectional2.position.set(-20, -25, -30);\n this.scene.add(lightDirectional);\n this.scene.add(lightDirectional2);\n this.scene.add(light);\n\n this.camera = this.createCamera(three, cameraType);\n }\n\n private createCamera(three: typeof THREE, cameraType: string) {\n let camera: THREE.OrthographicCamera | THREE.PerspectiveCamera;\n switch (cameraType) {\n case 'OC':\n camera = new three.OrthographicCamera(30 / -2, 30 / 2, 30 / 2, 30 / -2, 1, 1000);\n break;\n case 'PC':\n default:\n camera = new three.PerspectiveCamera(30, this.getAspectRatio(), 0.1, 1000);\n break;\n }\n\n camera.rotateX(Math.PI / 2);\n camera.rotateY(Math.PI / 2);\n\n camera.position.z = 23;\n camera.position.x = 14;\n camera.position.y = 7;\n\n return camera;\n }\n\n private getAspectRatio() {\n return this.canvas.clientWidth / this.canvas.clientHeight;\n }\n}\n","<canvas #canvas class=\"fit-w fit-h\"></canvas>\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n Optional,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport {\n DynamicComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n MeasurementRealtimeService\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap\n} from 'rxjs/operators';\nimport { ThreeDRotationWidgetConfig, ThreeDRotationWidgetRotate } from '../three-d-rotation.model';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { loadBoxModel } from '@c8y/ngx-components/widgets/implementations/three-d-rotation/lazy-box-model';\nimport { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { loadPhoneModel } from '@c8y/ngx-components/widgets/implementations/three-d-rotation/lazy-phone-model';\nimport { ThreeDRotationComponent } from '../three-d-rotation/three-d-rotation.component';\n\n@Component({\n selector: 'c8y-three-d-rotation-widget-view',\n templateUrl: './three-d-rotation-widget-view.component.html',\n providers: [MeasurementRealtimeService],\n standalone: true,\n imports: [ThreeDRotationComponent]\n})\nexport class ThreeDRotationWidgetViewComponent implements OnChanges, OnInit, DynamicComponent {\n @Input() config: ThreeDRotationWidgetConfig;\n alerts = new DynamicComponentAlertAggregator();\n webGLAvailable = signal(true);\n angles$: Observable<ThreeDRotationWidgetRotate>;\n modelObj$: Observable<any>;\n deviceId$ = new BehaviorSubject<string>(null);\n modelName$ = new BehaviorSubject<string>(null);\n cameraType$ = new BehaviorSubject<string>('PC');\n isWireframe$ = new BehaviorSubject<boolean>(true);\n\n private webGLErrorText = gettext(\n 'WebGL is not available. Hardware acceleration may be disabled in your browser. Enable it in browser settings to use this widget.'\n );\n\n constructor(\n private measurementRealtime: MeasurementRealtimeService,\n @Optional() private dashboard: ContextDashboardComponent\n ) {\n this.modelObj$ = this.modelName$.pipe(\n filter(name => !!name),\n distinctUntilChanged(),\n switchMap(name => this.getModelUrl(name)),\n shareReplay(1)\n );\n this.angles$ = this.deviceId$.pipe(\n filter(id => !!id),\n distinctUntilChanged(),\n switchMap(id => this.getAnglesOfDevice$(id)),\n startWith({ x: 0, y: 0, z: 0 })\n );\n }\n\n ngOnInit(): void {\n if (!this.isWebGLAvailable()) {\n this.webGLAvailable.set(false);\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text: this.webGLErrorText\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.config && this.config) {\n this.onConfigChange();\n }\n }\n\n private onConfigChange() {\n if (this.config.device?.id) {\n this.deviceId$.next(`${this.config.device.id}`);\n } else if (this.dashboard?.context?.id) {\n this.deviceId$.next(`${this.dashboard.context?.id}`);\n }\n\n if (this.config.objectModel) {\n this.modelName$.next(this.config.objectModel);\n }\n\n if (this.config.cameraType) {\n this.cameraType$.next(this.config.cameraType);\n }\n\n if (this.config.isWireframe !== undefined) {\n this.isWireframe$.next(this.config.isWireframe);\n }\n }\n\n private async getModelUrl(model: string): Promise<any> {\n // The name *.min.json still exist for backwards compatibility\n // it might be stored in certain widget configs.\n if (model === 'box.min.json') {\n return await loadBoxModel();\n } else {\n return await loadPhoneModel();\n }\n }\n\n private getAnglesOfDevice$(deviceId: string): Observable<ThreeDRotationWidgetRotate> {\n const fragment = 'c8y_Acceleration';\n const series = ['accelerationX', 'accelerationY', 'accelerationZ'];\n return this.measurementRealtime\n .latestValueOfSpecificMeasurement$(fragment, series[0], deviceId, 1)\n .pipe(\n filter(m => !!m && m[fragment] && series.every(axisSeries => m[fragment][axisSeries])),\n map(measurement => {\n const [xAxisValue, yAxisValue, zAxisValue] = series.map(axisSeries =>\n Math.round(measurement[fragment][axisSeries].value)\n );\n return this.convertValues(xAxisValue, yAxisValue, zAxisValue);\n })\n );\n }\n\n private convertValues(x: number, y: number, z: number): ThreeDRotationWidgetRotate {\n let rotateX = Math.atan2(y, z);\n let rotateY = Math.atan2(x, Math.sqrt(y * y + z * z));\n rotateX = rotateX ? rotateX % (Math.PI * 2) : 0;\n rotateY = rotateY ? rotateY % (Math.PI * 2) : 0;\n\n return {\n x: rotateX,\n y: 0,\n z: rotateY\n };\n }\n\n private isWebGLAvailable(): boolean {\n try {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n return !!context;\n } catch {\n return false;\n }\n }\n}\n","@if (webGLAvailable()) {\n <c8y-three-d-rotation\n [modelObj$]=\"modelObj$\"\n [angles$]=\"angles$\"\n [cameraType$]=\"cameraType$\"\n [isWireframe$]=\"isWireframe$\"\n ></c8y-three-d-rotation>\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ControlContainer, FormBuilder, NgForm, Validators } from '@angular/forms';\nimport { CoreModule, OnBeforeSave } from '@c8y/ngx-components';\nimport { Observable } from 'rxjs';\nimport { ThreeDRotationWidgetConfig } from '../three-d-rotation.model';\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\n\n@Component({\n selector: 'c8y-three-d-rotation-widget-config',\n templateUrl: './three-d-rotation-widget-config.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n standalone: true,\n imports: [CoreModule, ButtonsModule]\n})\nexport class ThreeDRotationWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: ThreeDRotationWidgetConfig;\n formGroup: ReturnType<ThreeDRotationWidgetConfigComponent['createForm']>;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm\n ) {}\n\n onBeforeSave(\n config?: ThreeDRotationWidgetConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n ngOnInit() {\n this.initForm();\n }\n\n private initForm(): void {\n this.formGroup = this.createForm(this.formBuilder);\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm(formBuilder: FormBuilder) {\n return formBuilder.group({\n objectModel: ['box.min.json', [Validators.minLength(1)]],\n isWireframe: [true, []],\n cameraType: ['PC', [Validators.minLength(2), Validators.maxLength(2)]]\n });\n }\n}\n","<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Rendering' | translate }}</legend>\n<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Select object model for rendering</label>\n <div class=\"input-group input-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select class=\"form-control\" formControlName=\"objectModel\">\n <option value=\"box.min.json\" translate>Box model</option>\n <option value=\"phoneModel.min.json\" translate>Phone model</option>\n </select>\n </div>\n <span class=\"input-group-addon bg-level-0\">\n <label class=\"c8y-switch\">\n <input type=\"checkbox\" formControlName=\"isWireframe\" />\n <span></span>\n <span translate>Wireframe</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Camera type</label>\n <div class=\"c8y-select-wrapper\">\n <select class=\"form-control\" formControlName=\"cameraType\">\n <option value=\"OC\" translate>Orthographic camera</option>\n <option value=\"PC\" translate>Perspective camera</option>\n </select>\n </div>\n </c8y-form-group>\n</form>\n</fieldset>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-implementations-three-d-rotation.mjs","sources":["../../widgets/implementations/three-d-rotation/three-d-rotation/three-d-rotation.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation/three-d-rotation.component.html","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.html","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-config/three-d-rotation-widget-config.component.ts","../../widgets/implementations/three-d-rotation/three-d-rotation-widget-config/three-d-rotation-widget-config.component.html","../../widgets/implementations/three-d-rotation/c8y-ngx-components-widgets-implementations-three-d-rotation.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { combineLatest, from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { loadThree } from '@c8y/ngx-components/lazy/three';\nimport { ThreeDRotationWidgetRotate } from '../three-d-rotation.model';\nimport { loadOrbitControls } from '@c8y/ngx-components/lazy/three-orbit-controls';\nimport type * as THREE from 'three';\nimport type { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';\n\n@Component({\n selector: 'c8y-three-d-rotation',\n templateUrl: './three-d-rotation.component.html',\n standalone: true,\n imports: []\n})\nexport class ThreeDRotationComponent implements AfterViewInit, OnInit, OnDestroy {\n @ViewChild('canvas')\n private canvasRef: ElementRef;\n\n @Input() angles$: Observable<ThreeDRotationWidgetRotate> = of({ x: 0, y: 0, z: 0 });\n @Input() modelObj$: Observable<any>;\n @Input() cameraType$: Observable<string> = of('PC');\n @Input() isWireframe$: Observable<boolean> = of(true);\n\n get canvas(): HTMLCanvasElement | null {\n return this.canvasRef?.nativeElement;\n }\n\n scene: THREE.Scene;\n camera: THREE.PerspectiveCamera | THREE.OrthographicCamera;\n model: THREE.Object3D;\n private renderer: THREE.WebGLRenderer;\n\n private afterViewInit$ = new Subject<void>();\n\n private renderSubscription: Subscription;\n private controls: OrbitControls;\n\n ngOnInit() {\n const three$ = from(loadThree()).pipe(shareReplay(1));\n const model$ = combineLatest([three$, this.modelObj$]).pipe(\n filter(([, modelObj]) => !!modelObj),\n switchMap(([three, modelObj]) => this.loadModel(modelObj, three))\n );\n const modelWithWireframe$ = combineLatest([model$, this.isWireframe$]).pipe(\n map(([model, isWireframe]) => this.setWireframe(model, isWireframe))\n );\n\n const rotatedModel$ = combineLatest([modelWithWireframe$, this.angles$]).pipe(\n filter(([, angles]) => !!angles),\n map(([model, angles]) => {\n Object.assign(model.rotation, angles);\n return model;\n })\n );\n\n const cameraType$ = this.cameraType$.pipe(\n filter(type => !!type),\n distinctUntilChanged()\n );\n\n let previousCameraType: string;\n this.renderSubscription = combineLatest([\n three$,\n rotatedModel$,\n cameraType$,\n this.afterViewInit$\n ])\n .pipe(filter(([, model]) => !!model))\n .subscribe(async ([three, model, cameraType]) => {\n if (model !== this.model || previousCameraType !== cameraType) {\n this.model = model;\n previousCameraType = cameraType;\n this.createScene(three, model, cameraType);\n }\n if (!this.renderer) {\n await this.setupRenderer(three);\n }\n this.render();\n });\n }\n\n ngOnDestroy(): void {\n this.renderSubscription?.unsubscribe();\n this.controls?.dispose();\n }\n\n ngAfterViewInit() {\n this.afterViewInit$.next();\n }\n\n async loadModel(\n modelObj: any,\n three: typeof THREE\n ): Promise<THREE.Object3D<THREE.Object3DEventMap>> {\n const loader = new three.ObjectLoader();\n const parsedModel = await loader.parse(modelObj);\n return parsedModel;\n }\n\n async setupRenderer(three: typeof THREE) {\n //* Renderer\n // Use canvas element in template\n this.renderer = new three.WebGLRenderer({ canvas: this.canvas });\n this.renderer.setPixelRatio(devicePixelRatio);\n this.renderer.setSize(this.canvas.clientWidth, this.canvas.clientHeight);\n\n const OrbitControls = await loadOrbitControls();\n this.controls = new OrbitControls(this.camera, this.renderer.domElement);\n this.controls.enableDamping = true;\n this.controls.dampingFactor = 0.25;\n this.controls.rotateSpeed = 0.35;\n this.controls.minDistance = 20;\n this.controls.maxDistance = 50;\n this.controls.minZoom = 0.5;\n this.controls.maxZoom = 2;\n this.controls.addEventListener('change', () => this.render());\n }\n\n setWireframe(parsedModel: THREE.Object3D, isWireframe: boolean) {\n parsedModel.children.forEach((child: any) => {\n if (child.material) {\n child.material.wireframe = isWireframe;\n }\n });\n return parsedModel;\n }\n\n private render(): void {\n this.renderer?.render(this.scene, this.camera);\n }\n\n private createScene(three: typeof THREE, model: THREE.Object3D, cameraType: string) {\n //* Scene\n this.scene = new three.Scene();\n this.scene.background = new three.Color(0xffffff);\n this.scene.add(model);\n\n const light = new three.AmbientLight(0xffffff, 0.5);\n const lightDirectional = new three.DirectionalLight(0xffffff);\n const lightDirectional2 = new three.DirectionalLight(0xffffff);\n\n lightDirectional.position.set(20, 25, 30);\n lightDirectional2.position.set(-20, -25, -30);\n this.scene.add(lightDirectional);\n this.scene.add(lightDirectional2);\n this.scene.add(light);\n\n this.camera = this.createCamera(three, cameraType);\n }\n\n private createCamera(three: typeof THREE, cameraType: string) {\n let camera: THREE.OrthographicCamera | THREE.PerspectiveCamera;\n switch (cameraType) {\n case 'OC':\n camera = new three.OrthographicCamera(30 / -2, 30 / 2, 30 / 2, 30 / -2, 1, 1000);\n break;\n case 'PC':\n default:\n camera = new three.PerspectiveCamera(30, this.getAspectRatio(), 0.1, 1000);\n break;\n }\n\n camera.rotateX(Math.PI / 2);\n camera.rotateY(Math.PI / 2);\n\n camera.position.z = 23;\n camera.position.x = 14;\n camera.position.y = 7;\n\n return camera;\n }\n\n private getAspectRatio() {\n return this.canvas.clientWidth / this.canvas.clientHeight;\n }\n}\n","<canvas #canvas class=\"fit-w fit-h\"></canvas>\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n Optional,\n signal,\n SimpleChanges\n} from '@angular/core';\nimport {\n DynamicComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n MeasurementRealtimeService\n} from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n filter,\n map,\n shareReplay,\n startWith,\n switchMap\n} from 'rxjs/operators';\nimport { ThreeDRotationWidgetConfig, ThreeDRotationWidgetRotate } from '../three-d-rotation.model';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { loadBoxModel } from '@c8y/ngx-components/widgets/implementations/three-d-rotation/lazy-box-model';\nimport { ContextDashboardComponent } from '@c8y/ngx-components/context-dashboard';\n// eslint-disable-next-line @typescript-eslint/no-restricted-imports\nimport { loadPhoneModel } from '@c8y/ngx-components/widgets/implementations/three-d-rotation/lazy-phone-model';\nimport { ThreeDRotationComponent } from '../three-d-rotation/three-d-rotation.component';\n\n@Component({\n selector: 'c8y-three-d-rotation-widget-view',\n templateUrl: './three-d-rotation-widget-view.component.html',\n providers: [MeasurementRealtimeService],\n standalone: true,\n imports: [ThreeDRotationComponent]\n})\nexport class ThreeDRotationWidgetViewComponent implements OnChanges, OnInit, DynamicComponent {\n @Input() config: ThreeDRotationWidgetConfig;\n alerts = new DynamicComponentAlertAggregator();\n webGLAvailable = signal(true);\n angles$: Observable<ThreeDRotationWidgetRotate>;\n modelObj$: Observable<any>;\n deviceId$ = new BehaviorSubject<string>(null);\n modelName$ = new BehaviorSubject<string>(null);\n cameraType$ = new BehaviorSubject<string>('PC');\n isWireframe$ = new BehaviorSubject<boolean>(true);\n\n private webGLErrorText = gettext(\n 'WebGL is not available. Hardware acceleration may be disabled in your browser. Enable it in browser settings to use this widget.'\n );\n\n constructor(\n private measurementRealtime: MeasurementRealtimeService,\n @Optional() private dashboard: ContextDashboardComponent\n ) {\n this.modelObj$ = this.modelName$.pipe(\n filter(name => !!name),\n distinctUntilChanged(),\n switchMap(name => this.getModelUrl(name)),\n shareReplay(1)\n );\n this.angles$ = this.deviceId$.pipe(\n filter(id => !!id),\n distinctUntilChanged(),\n switchMap(id => this.getAnglesOfDevice$(id)),\n startWith({ x: 0, y: 0, z: 0 })\n );\n }\n\n ngOnInit(): void {\n if (!this.isWebGLAvailable()) {\n this.webGLAvailable.set(false);\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text: this.webGLErrorText\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.config && this.config) {\n this.onConfigChange();\n }\n }\n\n private onConfigChange() {\n if (this.config.device?.id) {\n this.deviceId$.next(`${this.config.device.id}`);\n } else if (this.dashboard?.context?.id) {\n this.deviceId$.next(`${this.dashboard.context?.id}`);\n }\n\n if (this.config.objectModel) {\n this.modelName$.next(this.config.objectModel);\n }\n\n if (this.config.cameraType) {\n this.cameraType$.next(this.config.cameraType);\n }\n\n if (this.config.isWireframe !== undefined) {\n this.isWireframe$.next(this.config.isWireframe);\n }\n }\n\n private async getModelUrl(model: string): Promise<any> {\n // The name *.min.json still exist for backwards compatibility\n // it might be stored in certain widget configs.\n if (model === 'box.min.json') {\n return await loadBoxModel();\n } else {\n return await loadPhoneModel();\n }\n }\n\n private getAnglesOfDevice$(deviceId: string): Observable<ThreeDRotationWidgetRotate> {\n const fragment = 'c8y_Acceleration';\n const series = ['accelerationX', 'accelerationY', 'accelerationZ'];\n return this.measurementRealtime\n .latestValueOfSpecificMeasurement$(fragment, series[0], deviceId, 1)\n .pipe(\n filter(m => !!m && m[fragment] && series.every(axisSeries => m[fragment][axisSeries])),\n map(measurement => {\n const [xAxisValue, yAxisValue, zAxisValue] = series.map(axisSeries =>\n Math.round(measurement[fragment][axisSeries].value)\n );\n return this.convertValues(xAxisValue, yAxisValue, zAxisValue);\n })\n );\n }\n\n private convertValues(x: number, y: number, z: number): ThreeDRotationWidgetRotate {\n let rotateX = Math.atan2(y, z);\n let rotateY = Math.atan2(x, Math.sqrt(y * y + z * z));\n rotateX = rotateX ? rotateX % (Math.PI * 2) : 0;\n rotateY = rotateY ? rotateY % (Math.PI * 2) : 0;\n\n return {\n x: rotateX,\n y: 0,\n z: rotateY\n };\n }\n\n private isWebGLAvailable(): boolean {\n try {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n return !!context;\n } catch {\n return false;\n }\n }\n}\n","@if (webGLAvailable()) {\n <c8y-three-d-rotation\n [modelObj$]=\"modelObj$\"\n [angles$]=\"angles$\"\n [cameraType$]=\"cameraType$\"\n [isWireframe$]=\"isWireframe$\"\n ></c8y-three-d-rotation>\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ControlContainer, FormBuilder, NgForm, Validators } from '@angular/forms';\nimport { CoreModule, OnBeforeSave } from '@c8y/ngx-components';\nimport { Observable } from 'rxjs';\nimport { ThreeDRotationWidgetConfig } from '../three-d-rotation.model';\nimport { ButtonsModule } from 'ngx-bootstrap/buttons';\n\n@Component({\n selector: 'c8y-three-d-rotation-widget-config',\n templateUrl: './three-d-rotation-widget-config.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n standalone: true,\n imports: [CoreModule, ButtonsModule]\n})\nexport class ThreeDRotationWidgetConfigComponent implements OnInit, OnBeforeSave {\n @Input() config: ThreeDRotationWidgetConfig;\n formGroup: ReturnType<ThreeDRotationWidgetConfigComponent['createForm']>;\n\n constructor(\n private formBuilder: FormBuilder,\n private form: NgForm\n ) {}\n\n onBeforeSave(\n config?: ThreeDRotationWidgetConfig\n ): boolean | Promise<boolean> | Observable<boolean> {\n if (this.formGroup.valid) {\n Object.assign(config, this.formGroup.value);\n return true;\n }\n return false;\n }\n\n ngOnInit() {\n this.initForm();\n }\n\n private initForm(): void {\n this.formGroup = this.createForm(this.formBuilder);\n this.form.form.addControl('config', this.formGroup);\n this.formGroup.patchValue(this.config);\n }\n\n private createForm(formBuilder: FormBuilder) {\n return formBuilder.group({\n objectModel: ['box.min.json', [Validators.minLength(1)]],\n isWireframe: [true, []],\n cameraType: ['PC', [Validators.minLength(2), Validators.maxLength(2)]]\n });\n }\n}\n","<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Rendering' | translate }}</legend>\n<form [formGroup]=\"formGroup\">\n <c8y-form-group class=\"form-group-sm m-b-8\">\n <label translate>Select object model for rendering</label>\n <div class=\"input-group input-group-sm\">\n <div class=\"c8y-select-wrapper\">\n <select class=\"form-control\" formControlName=\"objectModel\">\n <option value=\"box.min.json\" translate>Box model</option>\n <option value=\"phoneModel.min.json\" translate>Phone model</option>\n </select>\n </div>\n <span class=\"input-group-addon bg-level-0\">\n <label class=\"c8y-switch\">\n <input type=\"checkbox\" formControlName=\"isWireframe\" />\n <span></span>\n <span translate>Wireframe</span>\n </label>\n </span>\n </div>\n </c8y-form-group>\n\n <c8y-form-group class=\"form-group-sm\">\n <label translate>Camera type</label>\n <div class=\"c8y-select-wrapper\">\n <select class=\"form-control\" formControlName=\"cameraType\">\n <option value=\"OC\" translate>Orthographic camera</option>\n <option value=\"PC\" translate>Perspective camera</option>\n </select>\n </div>\n </c8y-form-group>\n</form>\n</fieldset>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -6721,16 +6721,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6721
6721
  }], ctorParameters: () => [{ type: FilesService }] });
6722
6722
 
6723
6723
  class GetGroupIconPipe {
6724
- constructor(groupService) {
6724
+ constructor(groupService, inventoryService) {
6725
6725
  this.groupService = groupService;
6726
+ this.inventoryService = inventoryService;
6726
6727
  }
6727
- async transform(mo, open = false, defaultIcon) {
6728
+ async transform(moOrId, open = false, defaultIcon) {
6729
+ let mo;
6730
+ if (typeof moOrId === 'string') {
6731
+ try {
6732
+ const { data } = await this.inventoryService.detail(moOrId);
6733
+ mo = data;
6734
+ }
6735
+ catch {
6736
+ return 'c8y-group';
6737
+ }
6738
+ }
6739
+ else {
6740
+ mo = moOrId;
6741
+ }
6728
6742
  if (!mo.c8y_IsDevice) {
6729
6743
  return this.groupService.getIcon(mo, open, 'c8y-group-open');
6730
6744
  }
6731
6745
  return this.groupService.getIcon(mo, open, defaultIcon);
6732
6746
  }
6733
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetGroupIconPipe, deps: [{ token: GroupService }], target: i0.ɵɵFactoryTarget.Pipe }); }
6747
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetGroupIconPipe, deps: [{ token: GroupService }, { token: i1.InventoryService }], target: i0.ɵɵFactoryTarget.Pipe }); }
6734
6748
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: GetGroupIconPipe, isStandalone: true, name: "getGroupIcon" }); }
6735
6749
  }
6736
6750
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: GetGroupIconPipe, decorators: [{
@@ -6739,7 +6753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
6739
6753
  name: 'getGroupIcon',
6740
6754
  standalone: true
6741
6755
  }]
6742
- }], ctorParameters: () => [{ type: GroupService }] });
6756
+ }], ctorParameters: () => [{ type: GroupService }, { type: i1.InventoryService }] });
6743
6757
 
6744
6758
  const internalApps = {
6745
6759
  administration: gettext$1('Administration'),
@@ -10630,7 +10644,8 @@ class DatapointSyncService {
10630
10644
  text,
10631
10645
  allowHtml: true,
10632
10646
  type: 'danger',
10633
- unresolvedData: entity.__target
10647
+ unresolvedData: entity.__target,
10648
+ dismissStrategy: DismissAlertStrategy.TEMPORARY
10634
10649
  });
10635
10650
  alert.retrievalError = error;
10636
10651
  return alert;
@@ -27823,6 +27838,11 @@ class DynamicComponentAlertAggregator {
27823
27838
  if (!this.aggregatedAlertsData.get(alert.type)) {
27824
27839
  this.aggregatedAlertsData.get(alert.type).alerts = [];
27825
27840
  }
27841
+ // If alert specifies its own dismiss strategy, apply it to the group
27842
+ if (alert.dismissStrategy) {
27843
+ this.aggregatedAlertsData.get(alert.type).alertDismissal.dismissStrategy =
27844
+ alert.dismissStrategy;
27845
+ }
27826
27846
  this.aggregatedAlertsData.get(alert.type).alerts.push(alert);
27827
27847
  });
27828
27848
  this.onDataChanged();
@@ -31447,6 +31467,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
31447
31467
  class WidgetTimeContextMediatorService {
31448
31468
  constructor() {
31449
31469
  this.globalUpdate = signal(null, ...(ngDevMode ? [{ debugName: "globalUpdate" }] : []));
31470
+ /**
31471
+ * Flag indicating the current update originated from a slider zoom interaction.
31472
+ * Used to prevent resetting initialTimeRange when syncing zoom across widgets.
31473
+ */
31474
+ this.isSliderZoomUpdate = signal(false, ...(ngDevMode ? [{ debugName: "isSliderZoomUpdate" }] : []));
31450
31475
  }
31451
31476
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WidgetTimeContextMediatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
31452
31477
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: WidgetTimeContextMediatorService, providedIn: 'root' }); }