This is an automated email from the ASF dual-hosted git repository. dominikriemer pushed a commit to branch health-check-adapter in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 5e7e2ab660e6b632122dc8162b7129b640accc7a Merge: f232accb6e 1ad2fb2d58 Author: Dominik Riemer <[email protected]> AuthorDate: Sat Jun 20 17:21:00 2026 +0200 Merge branch 'dev' into health-check-adapter .asf.yaml | 5 + .../development/env => .devcontainer/.env.example | 29 +- .../development/env => .devcontainer/Dockerfile | 27 +- .devcontainer/README.md | 100 + .devcontainer/devcontainer-lock.json | 14 + .devcontainer/devcontainer.json | 73 + .devcontainer/docker-compose.yml | 118 + .github/dependabot.yml | 59 +- .github/workflows/build.yml | 2 +- .github/workflows/go-docs.yml | 2 +- .github/workflows/java-client-e2e-test.yml | 80 + .github/workflows/pr-labeler.yml | 3 +- .github/workflows/pr-validation.yml | 7 +- .github/workflows/pypi-deployment.yml | 2 +- .github/workflows/python-docs.yml | 2 +- .github/workflows/stale-bot.yml | 2 +- .gitignore | 4 +- .vscode/launch.json | 77 + .vscode/settings.json | 3 + .vscode/tasks.json | 66 + README.md | 240 +- docker-compose.yml | 5 +- images/connect-create-opcua-browser.png | Bin 0 -> 306234 bytes images/dashboard-create.png | Bin 0 -> 204723 bytes images/home-map.png | Bin 0 -> 878279 bytes images/pipeline-editor-example.png | Bin 0 -> 290137 bytes images/security-edit-user.png | Bin 0 -> 235039 bytes images/streampipes-connect.gif | Bin 949971 -> 0 bytes images/streampipes-data-explorer.gif | Bin 543486 -> 0 bytes images/streampipes-overview.png | Bin 661478 -> 0 bytes images/streampipes-pipelines.gif | Bin 1296806 -> 0 bytes .../connect-adapters-iiot/docker-compose.yml | 3 - .../standalone/connect-adapters/docker-compose.yml | 3 - .../deploy/standalone/opcua/docker-compose.dev.yml | 2 +- .../cli/deploy/standalone/opcua/docker-compose.yml | 5 +- pom.xml | 51 +- .../apache/streampipes/client/api/IAdminApi.java | 2 + .../streampipes/client/api/ICustomRequestApi.java | 14 + .../streampipes/client/api/IStreamPipesClient.java | 2 - streampipes-client-e2e/README.md | 29 +- ...-compose.yml => docker-compose-loadbalance.yml} | 99 +- streampipes-client-e2e/docker-compose.yml | 9 + streampipes-client-e2e/java-client-e2e/pom.xml | 87 + .../streampipes/client/e2e/JavaClientTest.java | 93 + .../streampipes/client/e2e/LoadBalanceTest.java | 120 + .../client/e2e/utils/ClientTestSupport.java | 340 ++ .../client/e2e/utils/PipelineTemplateHelper.java | 249 + .../client/e2e/utils/TestResourceHelper.java | 230 + streampipes-client-e2e/tool/install-element.sh | 47 +- streampipes-client-e2e/tool/java-client-e2e.sh | 79 + .../tool/start-streampipes-client-e2e.sh | 11 +- streampipes-client-go/docs/package-lock.json | 1532 +---- streampipes-client-go/docs/package.json | 2 +- streampipes-client-python/.pre-commit-config.yaml | 7 +- streampipes-client-python/DEVELOPMENT.md | 21 +- .../docs/getting-started/developing.md | 7 +- streampipes-client-python/poetry.lock | 1967 +++--- streampipes-client-python/pyproject.toml | 30 +- .../streampipes/endpoint/api/data_lake_measure.py | 38 +- .../streampipes/endpoint/api/version.py | 2 +- .../streampipes/endpoint/endpoint.py | 31 +- .../streampipes/functions/function_handler.py | 24 +- .../streampipes/model/common.py | 56 +- .../model/container/resource_container.py | 8 +- .../model/resource/data_lake_measure.py | 14 +- .../streampipes/model/resource/data_series.py | 8 +- .../streampipes/model/resource/data_stream.py | 30 +- .../model/resource/function_definition.py | 2 +- .../streampipes/model/resource/query_result.py | 4 +- .../streampipes/model/resource/resource.py | 6 +- .../streampipes/model/resource/version.py | 5 +- .../tests/client/test_endpoint.py | 26 +- .../tests/functions/test_function_handler.py | 71 +- .../tests/model/resource/test_data_stream.py | 4 +- .../streampipes/client/StreamPipesClient.java | 22 +- .../streampipes/client/api/AbstractClientApi.java | 19 + .../apache/streampipes/client/api/AdapterApi.java | 10 + .../apache/streampipes/client/api/AdminApi.java | 16 + .../streampipes/client/api/CustomRequestApi.java | 50 + .../streampipes/client/api/DataLakeMeasureApi.java | 7 + .../client/api/DataLakeResourceApi.java | 4 + .../streampipes/client/api/DataProcessorApi.java | 6 + .../apache/streampipes/client/api/DataSinkApi.java | 7 + .../streampipes/client/api/DataStreamApi.java | 6 + .../org/apache/streampipes/client/api/FileApi.java | 4 + .../apache/streampipes/client/api/PipelineApi.java | 10 + .../client/api/PipelineElementTemplateApi.java | 6 + .../http/DeleteRequestWithoutPayloadResponse.java | 49 + .../streampipes/client/http/HttpRequest.java | 37 +- .../client/http/PutRequestWithPayloadResponse.java | 60 + .../apache/streampipes/commons/constants/Envs.java | 3 + .../commons/environment/DefaultEnvironment.java | 10 + .../commons/environment/Environment.java | 4 + streampipes-connect-management/pom.xml | 5 + .../compact/generator/AdapterBasicsGenerator.java | 3 +- .../compact/generator/AdapterConfigGenerator.java | 3 +- .../compact/generator/AdapterModelGenerator.java | 3 +- .../compact/generator/AdapterSchemaGenerator.java | 7 +- .../management/AdapterUpdateManagement.java | 146 +- .../management/CompactAdapterManagement.java | 10 +- .../management/management/GuessManagement.java | 6 +- .../management/management/WorkerRestClient.java | 8 + .../ScriptTransformationPipelineElement.java | 11 +- streampipes-connect-transformer-groovy/pom.xml | 16 + .../transformer/groovy/GroovyScriptContext.java | 20 +- .../transformer/groovy/GroovyScriptEngine.java | 12 +- .../sandbox/RestrictedGroovyClassLoader.java | 59 + .../transformer/groovy/sandbox/SandboxPolicy.java | 187 + .../transformer/groovy/sandbox/ScriptSandbox.java | 51 + .../ast/AstChecksCompilationCustomizer.java | 26 +- .../groovy/sandbox/ast/AstChecksVisitor.java | 109 + .../sandbox/ast/SecureCustomizerFactory.java | 59 + .../error/SandboxCompilationMessageResolver.java | 112 + .../SandboxViolationClassNotFoundException.java | 21 +- .../sandbox/error/SandboxViolationException.java | 9 +- .../transformer/groovy/GroovyScriptEngineTest.java | 318 + streampipes-connect-transformer-js/pom.xml | 16 + .../transformer/js/GraalJsScriptContext.java | 28 +- .../transformer/js/GraalJsScriptEngine.java | 30 +- .../connect/transformer/js/GraalJsUtilities.java | 59 + .../transformer/js/PolyglotResultConverter.java | 88 - .../transformer/js/PolyglotTypeConverter.java | 168 + .../transformer/js/ScriptHostObjectAdapter.java | 299 + .../transformer/js/ScriptOutputCollector.java | 60 + .../transformer/js/GraalJsScriptEngineTest.java | 472 ++ .../influx/DataLakeInfluxQueryBuilder.java | 15 +- .../dataexplorer/influx/PropertyHandler.java | 3 +- .../influx/sanitize/InfluxNameSanitizer.java | 2 +- .../influx/DataLakeQueryBuilderTest.java | 25 + .../dataexplorer/influx/SelectQueryParamsTest.java | 140 +- .../influx/TimeSeriesStorageInfluxTest.java | 19 +- .../utils/ProvidedQueryParameterBuilder.java | 12 + .../dataexplorer/DataExplorerSchemaManagement.java | 33 + .../dataexplorer}/InfluxDbReservedKeywords.java | 2 +- .../param/ProvidedRestQueryParamConverter.java | 10 +- .../dataexplorer/param/model/FillClauseParams.java | 15 +- .../param/model/GroupByTagsClauseParams.java | 4 +- .../param/model/GroupByTimeClauseParams.java | 2 +- .../param/model/InfluxQueryParameterValidator.java | 72 + .../DataExplorerSchemaManagementTest.java | 42 +- .../model/InfluxQueryParameterValidatorTest.java | 78 + .../apache/streampipes/export/ExportManager.java | 19 + .../export/dataimport/ImportGenerator.java | 25 +- .../export/dataimport/PerformImportGenerator.java | 14 + .../export/dataimport/PreviewImportGenerator.java | 22 +- .../export/generator/ExportPackageGenerator.java | 56 + streampipes-extensions-management/pom.xml | 17 +- .../management/connect/PullAdapterScheduler.java | 3 +- .../connect/adapter/AdapterPipelineGenerator.java | 38 +- .../connect/adapter/ScriptContextResolver.java | 49 + .../adapter/model/pipeline/AdapterPipeline.java | 10 +- .../connect/PullAdapterSchedulerTest.java | 70 + streampipes-extensions/pom.xml | 4 +- .../iiot/protocol/stream/FileReplayAdapter.java | 147 +- .../protocol/stream/FileReplayAdapterTest.java | 32 +- .../streampipes-connect-adapters/development/env | 24 - .../pom.xml | 51 +- .../connectors/cdc/CdcConnectorsModuleExport.java} | 21 +- .../cdc/adapter/mssql/MsSqlCdcAdapter.java | 416 ++ .../cdc/adapter/mssql/MsSqlCdcAdapterConfig.java | 143 + .../cdc/adapter/mssql/MsSqlMetadataClient.java | 404 ++ .../documentation.md | 142 + .../icon.png | Bin 0 -> 58929 bytes .../strings.en | 47 + .../cdc/adapter/mssql/MsSqlCdcAdapterTest.java | 173 + .../pom.xml | 38 +- .../FileWatcherConnectorsModuleExport.java} | 24 +- .../adapter/WinCCAlarmArchiveAdapter.java | 285 + .../filewatcher/adapter/WinCCAlarmEventMapper.java | 137 + .../adapter/WinCCTimestampConverter.java | 128 + .../WinCCAlarmArchiveAdapterMigrationV1.java | 65 + .../WinCCAlarmArchiveAdapterMigrationV2.java | 58 + .../filewatcher/model/CsvParserSettings.java | 46 + .../filewatcher/model/FileFingerprint.java | 83 + .../filewatcher/model/FileGenerationState.java | 52 + .../filewatcher/model/FileWatcherCheckpoint.java | 58 + .../filewatcher/model/FileWatcherConfig.java | 27 +- .../filewatcher/runtime/CsvFileReader.java | 145 + .../filewatcher/runtime/EventDelayExecutor.java | 20 +- .../filewatcher/runtime/EventMapper.java | 22 +- .../filewatcher/runtime/FileSetWatcher.java | 386 ++ .../connectors/filewatcher/runtime/FileSlot.java | 19 +- .../filewatcher/runtime/FileWatchReadResult.java | 16 +- .../runtime/FileWatcherCheckpointStore.java | 74 + .../documentation.md | 57 + .../icon.png | Bin 0 -> 53630 bytes .../strings.en | 34 + .../adapter/WinCCAlarmArchiveAdapterTest.java | 111 + .../adapter/WinCCAlarmEventMapperTest.java | 75 + .../adapter/WinCCTimestampConverterTest.java | 59 + .../WinCCAlarmArchiveAdapterMigrationV1Test.java | 44 + .../WinCCAlarmArchiveAdapterMigrationV2Test.java | 45 + .../WinCCAlarmArchiveAdapterVersionedConfig.java | 112 + .../filewatcher/runtime/CsvFileReaderTest.java | 79 + .../filewatcher/runtime/FileSetWatcherTest.java | 295 + .../runtime/FileWatcherCheckpointStoreTest.java | 65 + .../connectors/kafka/sink/KafkaPublishSink.java | 4 + .../streampipes-connectors-opcua/pom.xml | 20 +- .../opcua/OpcUaConnectorsModuleExport.java | 4 +- .../connectors/opcua/adapter/OpcUaAdapter.java | 158 +- .../connectors/opcua/adapter/OpcUaNodeBrowser.java | 51 +- .../opcua/adapter/OpcUaNodeMetadataExtractor.java | 159 +- .../opcua/adapter/OpcUaSchemaProvider.java | 4 +- .../connectors/opcua/alarms/OpcUaAlarmAdapter.java | 135 + .../opcua/alarms/OpcUaAlarmAdapterConfig.java | 72 + .../opcua/alarms/OpcUaAlarmConfiguration.java | 96 + .../opcua/alarms/OpcUaAlarmEventFilter.java | 63 + .../opcua/alarms/OpcUaAlarmEventMapper.java | 155 + .../opcua/alarms/OpcUaAlarmEventSubscriber.java | 368 ++ .../connectors/opcua/alarms/OpcUaAlarmField.java | 212 + .../alarms/OpcUaAlarmSampleFallbackProvider.java | 196 + .../opcua/alarms/OpcUaAlarmSchemaProvider.java | 70 + .../opcua/alarms/OpcUaAlarmValueNormalizer.java | 56 + .../opcua/alarms/OpcUaEventFieldProvider.java | 249 + .../opcua/alarms/OpcUaEventTypeBrowser.java | 91 + .../opcua/alarms/OpcUaNotifierBrowser.java | 142 + .../opcua/client/ConnectedOpcUaClient.java | 123 +- .../opcua/client/OpcUaClientProvider.java | 29 +- .../connectors/opcua/client/SpOpcUaClient.java | 18 +- .../config/MiloOpcUaConfigurationProvider.java | 4 +- .../connectors/opcua/config/OpcUaConfig.java | 18 + .../opcua/config/SharedUserConfiguration.java | 21 +- .../opcua/config/SpOpcUaConfigExtractor.java | 62 +- .../config/identity/AnonymousIdentityConfig.java | 4 +- .../opcua/config/identity/IdentityConfig.java | 2 +- .../identity/UsernamePasswordIdentityConfig.java | 4 +- .../opcua/config/identity/X509IdentityConfig.java | 4 +- .../security/CompositeCertificateValidator.java | 108 +- .../opcua/config/security/KeyStoreLoader.java | 150 +- .../opcua/config/security/SecurityConfig.java | 22 +- .../connectors/opcua/model/OpcUaNodeFactory.java | 19 +- .../opcua/model/node/ExtensionObjectOpcUaNode.java | 91 - .../opcua/model/node/PrimitiveOpcUaNode.java | 90 - .../opcua/model/node/ScalarOpcUaNode.java | 200 + .../opcua/model/node/StructuredOpcUaNode.java | 247 + .../extensions/connectors/opcua/sink/OpcUa.java | 10 +- .../opcua/utils/ExceptionMessageExtractor.java | 36 + .../opcua/utils/OpcUaCertificateUtils.java | 48 +- .../connectors/opcua/utils/OpcUaTypes.java | 91 - .../connectors/opcua/utils/OpcUaUtils.java | 223 +- .../opcua/utils/OpcUaValueNormalizationUtils.java | 172 + .../documentation.md | 146 + .../icon.png | Bin 0 -> 5087 bytes .../strings.en | 100 + .../documentation.md | 12 +- .../documentation.md | 10 +- .../opcua/alarms/OpcUaAlarmEventFilterTest.java | 61 + .../opcua/alarms/OpcUaAlarmEventMapperTest.java | 292 + .../OpcUaAlarmSampleFallbackProviderTest.java | 96 + .../alarms/OpcUaAlarmValueNormalizerTest.java | 38 +- .../opcua/config/SpOpcUaConfigExtractorTest.java | 76 + .../opcua/config/security/KeyStoreLoaderTest.java | 135 + .../opcua/config/security/SecurityConfigTest.java | 71 + .../node/OpcUaNodeUnsignedNormalizationTest.java | 141 + .../opcua/utils/OpcUaCertificateUtilsTest.java | 71 + .../connectors/opcua/utils/OpcUaUtilTest.java | 43 + .../plc/cache/SpCachedPlcConnectionManager.java | 31 +- .../plc/cache/SpConnectionContainer.java | 50 +- .../plc/adapter/ConnectionContainerReproTest.java | 170 + .../streampipes-extensions-all-iiot/pom.xml | 15 +- .../extensions/all/iiot/AllExtensionsIIoTInit.java | 6 +- .../streampipes-extensions-all-jvm/pom.xml | 14 +- .../extensions/all/jvm/AllExtensionsInit.java | 4 + .../development/env | 19 - .../streampipes-sinks-databases-jvm/pom.xml | 3 +- .../jvm/jdbcclient/model/DbDataTypes.java | 20 + .../jvm/jdbcclient/model/TableDescription.java | 20 +- .../jvm/jdbcclient/model/DbDataTypesTest.java | 94 + .../jvm/InternalSinksExtensionModuleExports.java | 4 +- .../InternalStreamPipesNotificationSink.java | 120 - .../documentation.md | 57 - .../icon.png | Bin 11738 -> 0 bytes .../strings.en | 25 - streampipes-integration-tests/pom.xml | 6 + .../adapters/OpcUaAdapterIntegrationTest.java | 984 +++ .../adapters/opcua/OpcUaAdapterTestHarness.java | 117 + .../containers/OpcUaDemoServerContainer.java | 29 +- streampipes-maven-plugin/pom.xml | 2 +- .../smp/generator/SidebarConfigGenerator.java | 4 +- .../streampipes/messaging/ProtocolOverrides.java | 32 +- streampipes-model-client/pom.xml | 1 - .../model/shared/annotation/ExposedToScripts.java | 27 +- streampipes-model/pom.xml | 1 - .../org/apache/streampipes/model/Notification.java | 123 - .../streampipes/model/assets/AssetSummaryDto.java | 14 +- .../model/connect/adapter/AdapterSummaryDto.java | 20 +- ...eUpdateInfo.java => ChartSchemaUpdateInfo.java} | 58 +- .../model/connect/adapter/PipelineUpdateInfo.java | 11 + .../model/dashboard/DashboardSummaryDto.java | 18 +- .../model/datalake/ChartSummaryDto.java | 17 +- .../datalake/CriticalMeasurementFieldChange.java | 22 +- .../DataExplorerWidgetHealthStatus.java} | 8 +- .../model/datalake/DataExplorerWidgetModel.java | 22 + .../model/datalake/DatasetSummaryDto.java | 18 +- .../model/datalake/MeasurementUpdateInfo.java | 63 + .../model/datalake/RetentionExportConfig.java | 6 +- .../datalake/param/SupportedRestQueryParams.java | 2 + .../model/export/AssetExportConfiguration.java | 28 + .../model/export/ExportConfiguration.java | 14 + .../model/pipeline/PipelineHealthStatus.java | 1 + ...neHealthStatus.java => PipelineSummaryDto.java} | 16 +- .../model/resource/ResourceSummaryDto.java | 9 +- .../AdapterStateChangeOperationHandler.java | 13 +- .../execution/task/StorePipelineStatusTask.java | 14 +- .../matching/PipelineVerificationHandlerV2.java | 13 +- .../v2/pipeline/MeasurementChangeDetector.java | 111 + .../pipeline/MeasurementChangeValidationStep.java | 104 + .../v2/pipeline/PipelineValidationSteps.java | 1 + .../manager/matching/v2/pipeline/StorageType.java | 12 +- .../manager/pipeline/PipelineManager.java | 4 +- .../update/ChartSchemaUpdateCoordinator.java | 261 + .../update/DataStreamUpdateManagement.java | 47 + .../update/MeasurementUpdateManagement.java | 111 + .../pipeline/update/MeasurementUpdateUtils.java | 78 + .../pipeline/update/PipelineUpdateCoordinator.java | 255 + .../manager/setup/CouchDbInstallationStep.java | 49 - .../manager/template/CompactConfigGenerator.java | 10 +- .../v2/pipeline/MeasurementChangeDetectorTest.java | 121 + .../MeasurementChangeValidationStepTest.java | 125 + .../update/ChartSchemaUpdateCoordinatorTest.java | 280 + .../update/MeasurementUpdateManagementTest.java | 127 + .../update/PipelineUpdateCoordinatorTest.java | 421 ++ .../template/CompactConfigGeneratorTest.java | 86 + streampipes-resource-management/pom.xml | 10 + .../management/AdapterResourceManager.java | 33 + .../resource/management/AssetResourceManager.java | 62 + .../resource/management/CrudResourceManager.java | 3 + .../management/DataExplorerResourceManager.java | 45 + .../DataExplorerWidgetResourceManager.java | 83 +- .../management/DataLakeMeasureResourceManager.java | 158 + .../management/NotificationsResourceManager.java | 75 - .../management/PipelineResourceManager.java | 31 +- .../resource/management/SpResourceManager.java | 8 + .../permission}/SpPermissionEvaluator.java | 2 +- .../base/impl/AbstractAuthGuardedRestResource.java | 5 + .../rest/core/base/impl/AbstractRestResource.java | 5 - .../rest/event/AdapterDeletedEvent.java | 19 +- .../rest/event/AdapterUpdatedEvent.java | 19 +- .../rest/event/DataStreamDeletedEvent.java | 5 +- .../rest/event/DataStreamUpdatedEvent.java | 10 +- .../rest/impl/AdapterMonitoringResource.java | 2 +- .../rest/impl/AssetManagementResource.java | 13 + .../streampipes/rest/impl/FunctionsResource.java | 12 + .../rest/impl/NotificationResource.java | 99 - .../streampipes/rest/impl/PipelineResource.java | 26 + .../rest/impl/ResetEndpointEnabledCondition.java | 34 +- .../streampipes/rest/impl/ResetResource.java | 5 + .../rest/impl/connect/AdapterResource.java | 37 +- .../rest/impl/connect/CompactAdapterResource.java | 34 +- .../rest/impl/connect/GuessResource.java | 2 +- .../impl/dashboard/DataLakeDashboardResource.java | 8 + .../impl/datalake/AbstractDataLakeResource.java | 2 +- .../impl/datalake/DataLakeMeasureResource.java | 30 +- .../rest/impl/datalake/DataLakeWidgetResource.java | 24 +- .../importer/CsvDataLakeImportService.java | 91 +- .../datalake/importer/CsvImportColumnMapper.java | 111 + .../rest/impl/pe/DataStreamResource.java | 36 +- streampipes-service-base/pom.xml | 8 + .../service/base/StreamPipesPrometheusConfig.java | 12 + .../minimal/StreamPipesCoreApplicationMinimal.java | 2 +- streampipes-service-core/development/env | 21 - .../service/core/StreamPipesCoreApplication.java | 3 +- .../core/migrations/AvailableMigrations.java | 4 +- .../RemoveInternalNotificationSinkMigration.java | 155 + .../v099/connect/MigrateAdaptersToUseScript.java | 12 +- ...emoveInternalNotificationSinkMigrationTest.java | 122 + .../storage/api/core/INoSqlStorage.java | 3 - .../storage/api/system/IGenericStorage.java | 2 + .../storage/api/system/INotificationStorage.java | 46 - .../storage/couchdb/CouchDbStorageManager.java | 7 - .../couchdb/impl/system/GenericStorageImpl.java | 27 + .../impl/system/NotificationStorageImpl.java | 143 - .../streampipes/storage/couchdb/utils/Utils.java | 4 - .../standalone/function/StreamPipesFunction.java | 5 + .../standalone/manager/ProtocolManager.java | 18 +- tools/dev/create-pr-worktree.sh | 95 + ui/.eslintignore | 20 - ui/.eslintrc.json | 56 - ui/.lintstagedrc.json | 8 +- ui/AGENTS.md | 13 +- ui/angular.json | 28 +- ui/cypress/AGENTS.md | 9 + ui/cypress/README.md | 16 + .../1b666c03-c0a2-44e1-b1ef-9b5eeec62475.json | 101 + .../66cc0705-8816-4b31-86a2-1bcc9e8e2a7d.json | 101 + .../8be10578-81f9-46f7-8c1c-b13a21d6297d.json | 101 + .../assetResources/KsOpTyZgEzT6UpedeiofblZw.json | 165 + .../a70ea850-1a11-46a5-af43-e157948863f4.json | 101 + .../af5313b9-7cf9-4b7e-b73a-802d3d6782a3.json | 101 + .../cb1aba54-b132-4952-b868-b41c04e335e4.json | 101 + .../d4e104af-a98c-43b0-8bd3-b5df467d1e89.json | 101 + .../d60cf304-69bb-441a-ace4-abcadda0184d.json | 101 + .../e06d0ce24467785614676b465100e949.json | 7 + .../e06d0ce24467785614676b465100f7c7.json | 7 + .../e06d0ce24467785614676b465100fabc.json | 7 + .../e06d0ce24467785614676b465100fc0b.json | 13 + .../e06d0ce24467785614676b4651010165.json | 13 + .../e06d0ce24467785614676b4651010b49.json | 13 + .../f462bdbe-3746-4045-9c61-04255454a1a2.json | 101 + .../assetResources/kYthZXBMdSgTdihClTJyLbIG.json | 165 + .../assetResources/liqIcmkADqnKDRlfaF43HFDZ.json | 165 + ui/cypress/fixtures/assetResources/manifest.json | 77 + .../persist-adapter-1_0_asset-1_0-rq4f7m.json | 450 ++ ...sist-adapter-1_1_asset-1_0asset-1_1-98vfeq.json | 450 ++ ...sist-adapter-1_2_asset-1_0asset-1_2-0u13l8.json | 450 ++ .../persist-adapter-2_0_asset-2_0-ggaqfv.json | 450 ++ ...sist-adapter-2_1_asset-2_0asset-2_1-daygw6.json | 450 ++ ...sist-adapter-2_2_asset-2_0asset-2_2-ajm2kf.json | 450 ++ .../persist-adapter-3_0_asset-3_0-1iuopi.json | 450 ++ ...sist-adapter-3_1_asset-3_0asset-3_1-0ijrde.json | 450 ++ ...sist-adapter-3_2_asset-3_0asset-3_2-h7itcn.json | 450 ++ .../assetResources/spadapterdescriptionBdZLYE.json | 376 ++ .../assetResources/spadapterdescriptionDoKerB.json | 376 ++ .../assetResources/spadapterdescriptionEvSmOc.json | 376 ++ .../assetResources/spadapterdescriptionHQnIjw.json | 376 ++ .../assetResources/spadapterdescriptionLRYUMD.json | 376 ++ .../assetResources/spadapterdescriptionYhoGMR.json | 376 ++ .../assetResources/spadapterdescriptionZnFhKP.json | 376 ++ .../assetResources/spadapterdescriptionhpoLJw.json | 376 ++ .../assetResources/spadapterdescriptionjvrJRa.json | 376 ++ .../assetResources/spdashboardmodelEWbseB.json | 29 + .../assetResources/spdashboardmodelJKDStZ.json | 29 + .../assetResources/spdashboardmodelJptgDU.json | 29 + .../assetResources/spdashboardmodelKMNvrM.json | 29 + .../assetResources/spdashboardmodelKbQunt.json | 29 + .../assetResources/spdashboardmodelRaxUZu.json | 29 + .../assetResources/spdashboardmodelbOpOkq.json | 29 + .../assetResources/spdashboardmodelgeRBrk.json | 29 + .../assetResources/spdashboardmodelujvPqM.json | 29 + .../assetResources/spspdatastreamGfKHOr.json | 143 + .../assetResources/spspdatastreamPjKtIn.json | 143 + .../assetResources/spspdatastreamShPLfn.json | 143 + .../assetResources/spspdatastreamfuRSBb.json | 143 + .../assetResources/spspdatastreamiQYJDi.json | 143 + .../assetResources/spspdatastreamkcOONH.json | 143 + .../assetResources/spspdatastreamlUxdpQ.json | 143 + .../assetResources/spspdatastreamshyiYp.json | 143 + .../assetResources/spspdatastreamydxexG.json | 143 + .../fixtures/connect/valueRules/expected.csv | 4 +- ui/cypress/fixtures/connect/valueRules/input.csv | 4 +- .../fixtures/dataDownloadDialog/testCsvComma.csv | 8 +- .../dataDownloadDialog/testCsvSemicolon.csv | 8 +- .../fixtures/dataDownloadDialog/testJson.json | 8 +- .../testRemoveLinesWithMissingValues.csv | 6 +- .../fixtureGeneration/assetResources.ts} | 163 +- .../enrich-jvm/jsEvaluator1/description.json | 2 +- .../enrich-jvm/jsEvaluator2/description.json | 2 +- ui/cypress/plugins/index.ts | 29 +- ui/cypress/support/component.ts | 2 + ui/cypress/support/e2e.ts | 2 + ui/cypress/support/general/InitStreamPipesTest.ts | 2 + ui/cypress/support/general/dataCy.ts | 2 + .../support/general/importFixtureDirectory.ts | 309 + ui/cypress/support/general/login.ts | 2 + ui/cypress/support/general/logout.ts | 2 + ui/cypress/support/general/readDir.ts | 2 + .../support/general/removeDownloadDirectory.ts | 2 + ui/cypress/support/general/resetStreamPipes.ts | 2 + .../support/utils/DataDownloadDialogUtils.ts | 2 - ui/cypress/support/utils/GeneralUtils.ts | 29 +- .../support/utils/ProcessingElementTestUtils.ts | 10 +- .../support/utils/ThirdPartyIntegrationUtils.ts | 1 - ui/cypress/support/utils/UserUtils.ts | 2 +- ui/cypress/support/utils/asset/AssetBtns.ts | 4 + ui/cypress/support/utils/asset/AssetUtils.ts | 36 + ui/cypress/support/utils/chart/ChartBtns.ts | 184 +- ui/cypress/support/utils/chart/ChartUtils.ts | 245 +- .../support/utils/chart/ChartWidgetTableUtils.ts | 8 + .../utils/configuration/ConfigurationUtils.ts | 11 +- .../support/utils/configuration/SiteUtils.ts | 13 + ui/cypress/support/utils/connect/ConnectBtns.ts | 47 + .../utils/connect/ConnectEventSchemaUtils.ts | 23 +- ui/cypress/support/utils/connect/ConnectUtils.ts | 115 +- ui/cypress/support/utils/connect/OpcUaUtils.ts | 74 +- ui/cypress/support/utils/dataset/DatasetBtns.ts | 19 +- ui/cypress/support/utils/dataset/DatasetUtils.ts | 54 +- ui/cypress/support/utils/filter/FilterUtils.ts | 15 +- ui/cypress/support/utils/pipeline/PipelineBtns.ts | 76 + ui/cypress/support/utils/pipeline/PipelineUtils.ts | 7 +- ui/cypress/support/utils/shared/SharedUtils.ts | 4 + ui/cypress/support/utils/user/PermissionUtils.ts | 105 +- .../support/utils/userInput/StaticPropertyUtils.ts | 43 +- .../utils/userInput/TreeStaticPropertyUtils.ts | 66 +- .../tests/assetManagement/assetFilterTest.spec.ts | 390 +- .../assetManagement/generalAssetTest.smoke.spec.ts | 1 - .../tests/chart/addAssetToDashboard.smoke.spec.ts | 2 +- .../tests/chart/addAssetsToDataView.smoke.spec.ts | 11 +- .../chart/advancedFilterExpressions.smoke.spec.ts | 18 +- ui/cypress/tests/chart/autoAggregateTable.spec.ts | 7 +- ui/cypress/tests/chart/chart-types/heatmap.spec.ts | 1 - .../tests/chart/chart-types/histogram.spec.ts | 1 - .../tests/chart/chart-types/indicator.spec.ts | 5 +- ui/cypress/tests/chart/chart-types/map.spec.ts | 20 +- .../{indicator.spec.ts => progress-bar.spec.ts} | 36 +- .../tests/chart/chart-types/scatter.smoke.spec.ts | 1 - ui/cypress/tests/chart/chart-types/table.spec.ts | 19 +- .../tests/chart/chart-types/timeSeriesSave.spec.ts | 7 +- .../{indicator.spec.ts => value-card.spec.ts} | 32 +- .../tests/chart/chartDataPreview.smoke.spec.ts | 1 - .../tests/chart/deleteViewAndDashboard.spec.ts | 4 +- .../tests/chart/dynamicColumnFilter.smoke.spec.ts | 5 +- .../chart/filterNumericalStringProperties.spec.ts | 2 +- .../tests/chart/missingDataInDataLake.spec.ts | 6 +- ui/cypress/tests/chart/timeOrderDataView.spec.ts | 6 +- ui/cypress/tests/chart/timeRangeSelectors.spec.ts | 4 +- .../chart/widgetDataConfiguration.smoke.spec.ts | 10 +- .../tests/configuration/labels/labels.spec.ts | 2 +- ui/cypress/tests/configuration/sites/sites.spec.ts | 2 +- ui/cypress/tests/connect/adapterWithAssets.spec.ts | 1 - .../connect/compact/addCompactAdapter.spec.ts | 23 + ui/cypress/tests/connect/editAdapter.smoke.spec.ts | 15 +- .../editAdapterDataLakeSchemaUpdate.spec.ts | 149 + .../editAdapterSettingsAndPipeline.smoke.spec.ts | 15 +- ui/cypress/tests/connect/fileStream.spec.ts | 3 +- .../connect/machineDataSimulator.smoke.spec.ts | 1 - .../opcua/opcAdapterConfiguration.smoke.spec.ts | 62 +- .../opcua/startAndEditOpcAdapters.smoke.spec.ts | 23 +- .../connect/rules/deleteTransformationRule.spec.ts | 2 +- .../tests/connect/rules/schemaRules.smoke.spec.ts | 22 +- ui/cypress/tests/connect/rules/valueRules.spec.ts | 19 +- ui/cypress/tests/connect/scriptTemplate.spec.ts | 2 +- .../dataDownloadDialogTest.smoke.spec.ts | 7 +- ui/cypress/tests/dataset/csvImport.spec.ts | 6 +- .../tests/monitoring/prometheusEndpoint.spec.ts | 50 + ui/cypress/tests/pipeline/pipelineAsset.spec.ts | 1 - .../pipeline/pipelineDataLakeSchemaUpdate.spec.ts | 184 + .../resetResourceAuthorization.spec.ts | 51 + .../userManagement/testUserRoleAssets.spec.ts | 17 +- .../userManagement/testUserRoleCharts.spec.ts | 4 +- .../userManagement/testUserRoleDashboard.spec.ts | 10 +- .../userManagement/testUserRoleDataset.spec.ts | 14 +- ui/deployment/app.routes.mst | 6 +- ui/deployment/base-navigation.component.mst | 5 - ui/deployment/home.service.mst | 25 +- ui/deployment/i18n-validate.js | 112 + ui/deployment/i18n/de.json | 2277 ++++--- ui/deployment/i18n/en.json | 2271 ++++--- ui/deployment/i18n/pl.json | 2271 ++++--- ui/deployment/modules.yml | 8 +- ui/deployment/theme/_custom-variables.scss | 1 + ui/eslint.config.mjs | 129 + ui/package-lock.json | 6427 +++++++++----------- ui/package.json | 83 +- .../streampipes/platform-services/package.json | 8 +- .../src/lib/apis/adapter.service.ts | 35 +- .../src/lib/apis/asset-management.service.ts | 10 + .../src/lib/apis/chart.service.ts | 16 +- .../src/lib/apis/dashboard.service.ts | 14 + .../src/lib/apis/datalake-rest.service.ts | 48 +- .../src/lib/apis/pipeline.service.ts | 29 + .../lib/model/datalake/DatalakeQueryParameters.ts | 1 + .../model/datalake/data-lake-query-config.model.ts | 2 + .../src/lib/model/gen/streampipes-model-client.ts | 2 - .../src/lib/model/gen/streampipes-model.ts | 137 +- .../lib/model/resource/resource-summary.model.ts | 83 + .../src/lib/query/DatalakeQueryParameterBuilder.ts | 6 + .../lib/query/data-view-query-generator.service.ts | 4 + .../platform-services/src/public-api.ts | 1 + ui/projects/streampipes/shared-ui/package.json | 16 +- .../asset-browser-filter-type.component.ts | 6 +- .../asset-browser-filter.component.html | 38 +- .../asset-browser-filter.component.ts | 14 +- .../asset-browser/asset-browser.service.ts | 34 +- .../asset-link-configuration.component.html | 9 +- .../asset-link-configuration.component.ts | 17 +- .../basic-header-title/header-title.component.html | 4 +- .../basic-nav-tabs/basic-nav-tabs.component.ts | 6 +- .../components/basic-view/basic-view.component.ts | 6 +- .../element-id/element-id.component.html} | 26 +- .../element-id/element-id.component.scss | 41 + .../components/element-id/element-id.component.ts} | 31 +- .../feature-card-header.component.html | 61 +- .../feature-card-header.component.ts | 7 +- .../input-schema-property.component.ts | 8 +- .../pipeline-element-documentation.component.ts | 6 +- .../live-preview-table.component.html | 19 +- .../live-preview-table.component.scss | 7 + .../live-preview-table.component.ts | 4 +- .../pipeline-element-runtime-info.component.ts | 18 +- .../pipeline-element-runtime-info.model.ts | 3 +- .../property-scope-badge.component.html} | 13 +- .../property-scope-badge.component.scss} | 24 +- .../property-scope-badge.component.ts | 50 + .../exception-details-dialog.component.ts | 13 +- .../sp-exception-message.component.ts | 4 +- .../lib/components/sp-label/sp-label.component.ts | 7 +- .../sp-table-asset-context.service.ts | 20 +- .../sp-table/sp-paginator/sp-paginator.service.ts | 6 +- .../components/sp-table/sp-table.component.html | 96 +- .../components/sp-table/sp-table.component.scss | 16 +- .../lib/components/sp-table/sp-table.component.ts | 163 +- .../src/lib/components/sp-table/sp-table.model.ts | 6 + .../split-button/split-button.component.html | 83 + .../split-button/split-button.component.scss | 125 + .../split-button/split-button.component.ts | 118 + .../split-section/split-section.component.scss | 2 + .../time-selector/time-range-selector.component.ts | 5 +- .../custom-time-range-selection.component.ts | 21 +- .../time-selector-menu.component.ts | 11 +- .../lib/dialog/base-dialog/base-dialog.service.ts | 42 +- .../dialog/card-dialog/card-dialog.component.scss | 2 +- .../dialog/card-dialog/card-dialog.component.ts | 10 +- .../confirm-dialog/confirm-dialog.component.ts | 9 +- .../components/download/download.component.ts | 6 +- .../data-download-dialog.component.ts | 10 +- .../services/data-export.service.ts | 12 +- .../services/file-name.service.spec.ts | 5 +- .../model/object-manage-model.model.ts | 62 + .../object-manage-dialog.component.html | 415 ++ .../object-manage-dialog.component.scss} | 23 +- .../object-manage-dialog.component.ts | 820 +++ .../object-permission-dialog.component.ts | 4 +- .../panel-dialog/panel-dialog.component.scss | 2 +- .../dialog/panel-dialog/panel-dialog.component.ts | 10 +- .../pipeline-element-help.component.html | 42 +- .../pipeline-element-help.component.scss | 15 +- .../pipeline-element-help.component.ts | 35 +- .../standard-dialog/standard-dialog.component.scss | 2 +- .../standard-dialog/standard-dialog.component.ts | 11 +- .../lib/services/asset-configuration.service.ts | 123 +- .../src/lib/services/colorization.service.ts | 4 +- .../src/lib/services/current-user.service.ts | 4 +- .../src/lib/services/date-format.service.ts | 4 +- .../src/lib/services/keyboard-shortcut.service.ts | 105 + .../streampipes/shared-ui/src/public-api.ts | 10 + ui/src/app/apidocs/apidocs.component.ts | 4 +- ui/src/app/app.component.ts | 14 +- ui/src/app/assets/assets.routes.ts | 2 + .../asset-details-basics.component.ts | 5 +- .../asset-details-labels.component.ts | 9 +- .../asset-location/asset-location.component.ts | 6 +- .../asset-details-links.component.ts | 17 +- .../edit-asset/asset-details.component.html | 29 +- .../edit-asset/asset-details.component.ts | 225 +- .../view-assset-basics.component.ts | 14 +- .../view-asset-labels.component.ts | 5 +- .../asset-link-table-additional-data.component.ts | 2 +- .../asset-link-table/asset-link-table.component.ts | 4 +- .../asset-overview/asset-overview.component.html | 13 +- .../asset-overview/asset-overview.component.ts | 135 +- .../assets/dialog/base-asset-links.directive.ts | 22 +- .../create-asset/create-asset-dialog.component.ts | 11 +- .../edit-asset-link-dialog.component.ts | 41 +- .../manage-asset-links-dialog.component.ts | 41 +- .../color-mapping-options-config.component.html | 30 +- .../color-mapping-options-config.component.ts | 11 +- ...echarts-widget-appearance-config.component.html | 3 + .../echarts-widget-appearance-config.component.ts | 17 +- .../field-order-config.component.html | 90 + .../field-order-config.component.scss | 70 + .../field-order-config.component.ts | 105 + .../number-format-config.component.html} | 31 +- .../number-format-config.component.ts | 77 + .../select-color-properties-config.component.ts | 15 +- .../time-series-item-config.component.html | 72 +- .../time-series-item-config.component.ts | 124 +- .../chart-container/chart-container.component.html | 35 +- .../chart-container/chart-container.component.scss | 10 + .../chart-container/chart-container.component.ts | 67 +- .../components/chart-container/chart.directive.ts | 4 +- .../components/charts/base/base-widget-config.ts | 10 +- .../charts/base/echarts-widget.component.ts | 2 +- .../charts/density/density-renderer.service.ts | 20 +- .../config/gauge-widget-config.component.html | 218 +- .../gauge/config/gauge-widget-config.component.ts | 75 +- .../charts/gauge/gauge-renderer.service.ts | 171 +- .../charts/gauge/model/gauge-widget.model.ts | 10 + .../config/heatmap-widget-config.component.ts | 9 - .../charts/heatmap/heatmap-renderer.service.ts | 3 +- .../charts/histogram/histogram-renderer.service.ts | 49 +- .../charts/image/image-widget.component.ts | 4 +- .../indicator-appearance-config.component.ts | 8 +- .../map/config/map-widget-config.component.html | 16 +- .../map/config/map-widget-config.component.ts | 9 - .../components/charts/map/map-widget.component.ts | 26 +- .../config/pie-chart-widget-config.component.html | 234 +- .../config/pie-chart-widget-config.component.ts | 26 +- .../charts/pie/model/pie-chart-widget.model.ts | 17 + .../components/charts/pie/pie-renderer.service.ts | 159 +- .../progress-bar-appearance-config.component.html | 46 + .../progress-bar-appearance-config.component.scss} | 24 +- .../progress-bar-appearance-config.component.ts} | 61 +- .../progress-bar-widget-config.component.html | 171 + .../config/progress-bar-widget-config.component.ts | 154 + .../model/progress-bar-widget.model.ts} | 42 +- .../progress-bar-widget.component.html | 130 + .../progress-bar-widget.component.scss | 107 + .../progress-bar/progress-bar-widget.component.ts | 376 ++ .../charts/scatter/scatter-renderer.service.ts | 18 + .../status-heatmap-widget-config.component.ts | 9 - .../config/status-widget-config.component.ts | 9 - .../charts/status/status-widget.component.ts | 2 +- .../table-widget-appearance-config.component.html} | 7 +- .../table-widget-appearance-config.component.ts} | 24 +- .../config/table-widget-config.component.html | 18 + .../table/config/table-widget-config.component.ts | 51 +- .../charts/table/model/table-widget.model.ts | 1 + .../charts/table/table-widget.component.html | 64 +- .../charts/table/table-widget.component.scss | 51 +- .../charts/table/table-widget.component.ts | 216 +- .../time-series-appearance-config.component.ts | 8 +- .../time-series-chart-widget-config.component.ts | 39 +- .../model/time-series-chart-widget.model.ts | 10 + .../sp-timeseries-renderer.service.ts | 52 +- .../traffic-light-widget-config.component.ts | 8 - .../traffic-light-widget.component.html | 12 +- .../traffic-light-widget.component.scss | 26 +- .../traffic-light-widget.component.ts | 92 +- .../value-card-appearance-config.component.html | 50 + .../value-card-appearance-config.component.ts} | 39 +- .../config/value-card-widget-config.component.html | 89 + .../config/value-card-widget-config.component.ts | 133 + .../model/value-card-widget.model.ts} | 27 +- .../value-card/value-card-widget.component.html | 109 + .../value-card/value-card-widget.component.scss | 118 + .../value-card/value-card-widget.component.ts | 371 ++ .../value-heatmap-renderer.service.ts | 5 +- .../echarts-renderer/base-echarts-renderer.ts | 35 + .../base-single-field-echarts-renderer.ts | 4 +- .../models/dataview-dashboard.model.ts | 11 +- .../registry/chart-registry.service.ts | 80 +- .../services/chart-colorization.service.ts | 106 +- .../services/chart-field-provider.service.ts | 19 +- .../chart-shared/services/chart-routing.service.ts | 6 +- .../chart-shared/services/field-update.service.ts | 2 +- .../chart-shared/services/result-label.service.ts | 70 + .../chart-shared/services/widget-render.utils.ts | 79 + .../chart-feature-card.component.html | 4 +- .../chart-overview-table.component.html | 284 +- .../chart-overview-table.component.ts | 266 +- .../chart-overview/chart-overview.component.html | 2 + .../chart-overview/chart-overview.component.scss | 5 + .../chart-overview/chart-overview.component.ts | 2 +- .../chart-view/chart-view.component.html | 33 + .../components/chart-view/chart-view.component.ts | 333 +- .../chart-appearance-settings.component.ts | 12 +- .../aggregate-configuration.component.html | 15 +- .../aggregate-configuration.component.ts | 14 +- .../chart-data-settings.component.html | 112 +- .../data-settings/chart-data-settings.component.ts | 247 +- .../field-selection-panel.component.ts | 17 +- .../field-selection/field-selection.component.ts | 13 +- .../fill-configuration.component.html | 68 + .../fill-configuration.component.scss} | 2 +- .../fill-configuration.component.ts | 115 + ...ction-panel-row-value-autocomplete.component.ts | 13 +- ...er-selection-panel-row-value-input.component.ts | 13 +- .../filter-selection-panel.component.ts | 18 +- .../group-selection-panel.component.ts | 10 +- .../order-selection-panel.component.ts | 6 +- .../result-label-configuration.component.html | 53 + .../result-label-configuration.component.scss} | 2 +- .../result-label-configuration.component.ts | 93 + .../chart-visualisation-settings.component.ts | 9 +- .../toolbar/chart-view-toolbar.component.html | 97 +- .../toolbar/chart-view-toolbar.component.ts | 20 +- .../extensions-installation.component.ts | 13 +- .../extensions-service-details-dialog.component.ts | 9 +- .../file-rename/file-rename-dialog.component.ts | 8 +- .../file-upload/file-upload-dialog.component.ts | 8 +- .../manage-site/manage-site-dialog.component.ts | 2 +- .../email-configuration.component.ts | 18 +- .../email-template-configuration.component.ts | 8 +- .../export/data-export-import.component.html | 18 + .../export/data-export-import.component.ts | 140 +- .../configuration/export/data-export.service.ts | 8 +- .../data-export-dialog.component.html | 221 +- .../export-dialog/data-export-dialog.component.ts | 257 +- .../data-import-dialog.component.html | 39 +- .../import-dialog/data-import-dialog.component.ts | 22 +- .../endpoint-item/endpoint-item.component.ts | 30 +- .../extensions-installation.component.ts | 18 +- .../extensions-installation.service.ts | 8 +- .../extensions-service-configuration.component.ts | 6 +- .../service-configs-boolean.component.ts | 5 +- .../service-configs-number.component.ts | 5 +- .../service-configs-password.component.ts | 6 +- .../service-configs-text.component.ts | 5 +- .../extensions-service-management.component.ts | 10 +- .../registered-extensions-services.component.ts | 12 +- .../files/file-overview/file-overview.component.ts | 14 +- ui/src/app/configuration/files/files.component.ts | 14 +- .../general-configuration.component.ts | 22 +- .../edit-label/edit-label.component.html | 19 +- .../edit-label/edit-label.component.ts | 79 +- .../label-configuration.component.html | 11 +- .../label-configuration.component.ts | 88 +- .../authentication-configuration.component.ts | 4 +- .../edit-group-dialog.component.ts | 20 +- .../edit-role-dialog/edit-role-dialog.component.ts | 14 +- .../edit-user-dialog/edit-user-dialog.component.ts | 32 +- .../role-configuration.component.ts | 16 +- .../user-group-configuration.component.ts | 22 +- .../configuration/shared/configuration.service.ts | 226 +- .../location-features-configuration.component.ts | 14 +- .../site-area-configuration.component.html | 1 - .../site-area-configuration.component.ts | 84 +- .../adapter-code-panel.component.ts | 6 +- .../adapter-configuration.component.ts | 5 +- .../adapter-event-preview-node.component.html | 136 +- .../adapter-event-preview-node.component.ts | 3 +- .../adapter-event-preview.component.html | 66 +- .../adapter-event-preview.component.ts | 4 +- .../adapter-deployment-settings.component.ts | 13 +- .../configuration-group.component.ts | 6 +- .../event-property-row.component.html | 1 + .../event-property-scope.component.html | 2 +- .../event-property-scope.component.ts | 13 + .../adapter-script-editor.component.html | 8 + .../adapter-script-editor.component.ts | 66 +- .../start-adapter-configuration.component.ts | 6 +- .../abstract-adapter-details.directive.ts | 18 +- .../adapter-details-data.component.html | 5 + .../adapter-details-data.component.ts | 28 +- .../adapter-details-logs.component.ts | 29 +- .../adapter-details-metrics.component.ts | 29 +- .../connect-feature-card.component.html | 4 +- .../create-adapter/create-adapter.component.ts | 12 +- .../existing-adapters.component.html | 10 +- .../existing-adapters.component.ts | 130 +- .../filter-toolbar/filter-toolbar.component.scss | 2 +- .../adapter-documentation-dialog.component.ts | 9 +- .../adapter-started-dialog.component.html | 14 +- .../adapter-started-dialog.component.ts | 6 + .../adapter-started-preview.component.ts | 10 +- ...adapter-started-update-migration.component.html | 179 +- ...adapter-started-update-migration.component.scss | 88 +- .../adapter-started-update-migration.component.ts | 13 +- .../adapter-template-dialog.component.ts | 12 +- .../delete-adapter-dialog.component.ts | 21 +- .../edit-schema-transformation.component.ts | 19 +- .../all-adapter-actions-dialog.component.ts | 26 +- ...tion-script-documentation-dialog.component.html | 121 + ...tion-script-documentation-dialog.component.scss | 82 + ...mation-script-documentation-dialog.component.ts | 139 + ui/src/app/connect/filter/adapter-filter.pipe.ts | 13 +- ui/src/app/connect/model/ConfigurationInfo.ts | 1 + .../adapter-asset-configuration.service.ts | 342 -- .../connect/services/adapter-template.service.ts | 4 +- ui/src/app/connect/services/rest.service.ts | 8 +- .../services/static-value-transform.service.ts | 1 - .../echarts-transform/pie-aggregate.transform.ts | 116 + .../pipeline-element-template-config.component.ts | 12 +- .../pipeline-started-status.component.html | 4 +- .../base/abstract-static-property.ts | 1 - .../static-alternatives.component.ts | 7 +- .../static-code-input.component.ts | 71 +- .../add-to-collection.component.ts | 6 +- .../static-collection.component.ts | 4 +- .../static-color-picker.component.ts | 8 +- .../static-file-input.component.ts | 14 +- .../static-free-input.component.ts | 2 +- .../static-mapping-nary.component.ts | 12 +- .../static-mapping-unary.component.scss | 2 +- .../static-mapping-unary.component.ts | 2 +- .../static-property-util.service.ts | 10 +- ...tic-runtime-resolvable-any-input.component.html | 6 +- ...tatic-runtime-resolvable-any-input.component.ts | 5 - .../static-runtime-resolvable-group.component.ts | 7 +- .../base-runtime-resolvable-input.ts | 36 +- .../base-runtime-resolvable-selection-input.ts | 1 - .../runtime-resolvable.service.ts | 8 +- ...tic-runtime-resolvable-oneof-input.component.ts | 6 +- ...ic-runtime-resolvable-tree-input.component.html | 157 +- ...ic-runtime-resolvable-tree-input.component.scss | 215 +- ...atic-runtime-resolvable-tree-input.component.ts | 170 +- .../static-tree-input-browse-nodes.component.html | 79 +- .../static-tree-input-browse-nodes.component.scss | 29 +- .../static-tree-input-browse-nodes.component.ts | 53 +- .../static-tree-input-button-menu.component.html | 46 +- .../static-tree-input-button-menu.component.ts | 17 +- .../static-tree-input-node-details.component.html | 40 +- .../static-tree-input-node-details.component.scss} | 13 +- .../static-tree-input-node-details.component.ts | 20 +- ...static-tree-input-selected-nodes.component.html | 63 +- ...static-tree-input-selected-nodes.component.scss | 37 +- .../static-tree-input-selected-nodes.component.ts | 8 + .../static-secret-input.component.ts | 8 +- .../static-slide-toggle.component.ts | 2 +- ui/src/app/core-ui/topics/topics.component.ts | 4 +- .../guards/auth.can-activate-children.guard.ts | 4 +- .../auth/guards/page-auth.can-activate.guard.ts | 6 +- .../core/components/iconbar/iconbar.component.scss | 5 + .../streampipes/streampipes.component.ts | 13 +- .../core/components/toolbar/toolbar.component.html | 52 +- .../core/components/toolbar/toolbar.component.ts | 72 +- ui/src/app/core/navigation/page-name.enum.ts | 7 - .../already-configured.can-activate.guard.ts | 7 +- .../guards/base-configured.can-activate.guard.ts | 13 +- .../setup/guards/configured.can-activate.guard.ts | 7 +- .../registration-allowed.can-activate.guard.ts | 16 +- .../restore-password-allowed.can-activate.guard.ts | 18 +- .../guards/terms.can-activate-children.guard.ts | 6 +- .../components/kiosk/dashboard-kiosk.component.ts | 2 +- .../chart-view/abstract-chart-view.directive.ts | 30 +- .../grid-view/dashboard-grid-view.component.html | 1 - .../grid-view/dashboard-grid-view.component.ts | 10 +- .../slide-view/dashboard-slide-view.component.html | 2 +- .../slide-view/dashboard-slide-view.component.ts | 8 +- .../dashboard-shared/services/dashboard.service.ts | 8 +- .../dashboard-feature-card.component.html | 4 +- .../dashboard-overview-table.component.html | 40 +- .../dashboard-overview-table.component.ts | 160 +- .../overview/dashboard-overview.component.ts | 47 +- .../chart-selection-panel.component.html | 2 +- .../chart-selection-panel.component.scss | 5 + .../chart-selection-panel.component.ts | 8 +- .../chart-preview/chart-preview.component.html | 64 +- .../chart-preview/chart-preview.component.scss | 140 +- .../chart-preview/chart-preview.component.ts | 50 +- .../chart-selection/chart-selection.component.html | 156 +- .../chart-selection/chart-selection.component.scss | 105 +- .../chart-selection/chart-selection.component.ts | 177 +- .../chart-selection/chart-selection.model.ts} | 11 +- .../panel/dashboard-panel.component.html | 264 +- .../panel/dashboard-panel.component.scss | 42 + .../components/panel/dashboard-panel.component.ts | 427 +- .../dashboard-toolbar.component.html | 38 +- .../dashboard-toolbar.component.ts | 6 + .../clone-dashboard-dialog.component.html | 87 +- .../clone-dashboard-dialog.component.ts | 71 +- .../edit-dashboard-dialog.component.html | 17 + .../edit-dashboard-dialog.component.ts | 6 + .../datalake-configuration-entry.ts | 9 +- .../datalake-configuration.component.html | 218 +- .../datalake-configuration.component.ts | 216 +- .../dataset-feature-card.component.html | 42 +- .../dataset-feature-card.component.scss | 27 +- .../dataset-feature-card.component.ts | 37 +- .../csv-import-dialog.component.html | 5 +- .../csv-import-dialog.component.scss | 33 - .../csv-import-dialog.component.ts | 16 +- .../csv-import-preview-table.component.html | 2 + .../csv-import-preview-table.component.scss | 3 +- .../csv-import-preview-table.component.ts | 3 +- .../csv-import-upload-state.component.ts | 2 - .../data-retention-dialog.component.ts | 8 +- .../data-retention-now-dialog.component.ts | 2 +- .../delete-datalake-index-dialog.component.ts | 4 +- .../delete-export-provider-dialog.component.ts | 2 +- .../export-provider-dialog.component.ts | 2 +- .../output-strategy/base/BaseOutputStrategy.ts | 1 - .../custom-output-strategy.component.ts | 10 +- .../property-selection.component.ts | 2 +- .../user-defined-output.component.ts | 6 +- ...ine-assembly-drawing-area-pan-zoom.component.ts | 9 +- .../pipeline-assembly-drawing-area.component.ts | 17 +- ...-assembly-options-pipeline-cache.component.html | 1 + ...ne-assembly-options-pipeline-cache.component.ts | 10 +- .../pipeline-assembly-options.component.ts | 17 +- .../pipeline-assembly.component.ts | 51 +- .../pipeline-element-icon-stand-row.component.html | 16 + .../pipeline-element-icon-stand-row.component.scss | 1 - .../pipeline-element-icon-stand-row.component.ts | 38 +- .../pipeline-element-icon-stand.component.ts | 12 +- .../pipeline-element-options.component.ts | 19 +- .../pipeline-element-preview.component.ts | 6 +- .../components/pipeline/pipeline.component.ts | 56 +- .../add-template-dialog.component.ts | 11 +- .../compatible-elements.component.ts | 13 +- .../editor/dialog/customize/customize.component.ts | 29 +- .../matching-error/matching-error.component.ts | 6 +- .../missing-elements-for-tutorial.component.ts | 9 +- .../pipeline-element-discovery.component.ts | 13 +- .../save-pipeline-update-migration.component.html | 191 + .../save-pipeline-update-migration.component.scss | 115 + .../save-pipeline-update-migration.component.ts} | 61 +- .../save-pipeline/save-pipeline.component.html | 22 +- .../save-pipeline/save-pipeline.component.ts | 62 +- ui/src/app/editor/editor.component.ts | 22 +- ui/src/app/editor/services/editor.service.ts | 14 +- .../editor/services/jsplumb-endpoint.service.ts | 4 +- .../app/editor/services/jsplumb-factory.service.ts | 12 +- ui/src/app/editor/services/jsplumb.service.ts | 12 +- .../app/editor/services/object-provider.service.ts | 8 +- .../services/pipeline-positioning.service.ts | 10 +- .../app/editor/services/pipeline-style.service.ts | 8 +- .../editor/services/pipeline-validation.service.ts | 6 +- ui/src/app/editor/utils/style-sanitizer.ts | 4 +- .../documentation/documentation.component.html} | 44 +- .../documentation/documentation.component.ts} | 21 +- .../components/info/info.component.html} | 18 +- .../app/help/components/info/info.component.ts} | 19 +- .../info/versions/service/system-info.model.ts | 0 .../info/versions/service/version-info.model.ts | 0 .../info/versions/versions.component.html | 42 +- .../info/versions/versions.component.ts | 19 +- .../components/shortcuts/shortcuts.component.html | 44 + .../components/shortcuts/shortcuts.component.scss | 93 + .../components/shortcuts/shortcuts.component.ts | 119 + ui/src/app/help/help.component.html | 65 + .../pipeline-model.ts => help/help.component.scss} | 5 +- ui/src/app/help/help.component.ts | 85 + .../asset-map-popup/asset-map-popup.component.html | 128 +- .../asset-map-popup/asset-map-popup.component.scss | 23 + .../asset-map-popup/asset-map-popup.component.ts | 76 +- .../asset-map/home-asset-map-marker.utils.ts | 100 + .../asset-map/home-asset-map-popup.service.ts | 93 + .../asset-map/home-asset-map.component.html | 28 +- .../asset-map/home-asset-map.component.scss | 58 + .../asset-map/home-asset-map.component.ts | 344 +- .../components/asset-map/home-asset-map.types.ts} | 26 +- .../components/asset-map/home-asset-map.utils.ts | 120 + .../asset-table/home-asset-table.component.ts | 2 +- ui/src/app/home/components/status.component.ts | 2 +- .../welcome-tour/welcome-tour.component.html | 45 +- .../welcome-tour/welcome-tour.component.scss | 10 + .../dialog/welcome-tour/welcome-tour.component.ts | 143 +- ui/src/app/home/home.component.ts | 156 +- ui/src/app/http-interceptor.ts | 4 +- ui/src/app/info/info.component.ts | 36 - .../activate-account/activate-account.component.ts | 4 +- .../components/auth-box/auth-box.component.ts | 6 +- .../login/components/base-login-page.directive.ts | 4 +- .../app/login/components/login/login.component.ts | 2 +- .../components/register/register.component.ts | 2 +- .../restore-password/restore-password.component.ts | 4 +- .../set-new-password/set-new-password.component.ts | 8 +- .../login/components/startup/startup.component.ts | 12 +- .../login/services/account-activation.service.ts | 8 +- ...vation.service.ts => login-settings.service.ts} | 33 +- ui/src/app/login/services/login.service.ts | 24 +- .../app/login/services/restore-password.service.ts | 8 +- .../components/notification-item.component.html | 29 - .../components/notification-item.component.scss | 53 - .../components/notification-item.component.ts | 40 - .../app/notifications/model/notifications.model.ts | 39 - .../app/notifications/notifications.component.html | 148 - .../app/notifications/notifications.component.scss | 120 - .../app/notifications/notifications.component.ts | 334 - .../notifications/service/notifications.service.ts | 98 - .../app/notifications/utils/notifications.utils.ts | 34 - .../actions/pipeline-actions.component.html | 4 +- .../actions/pipeline-actions.component.ts | 17 +- .../pipeline-element-details-row.component.ts | 6 +- .../status/pipeline-status.component.ts | 6 +- .../pipeline-details-toolbar.component.html | 32 + .../pipeline-details-toolbar.component.ts | 15 +- .../preview/pipeline-preview.component.ts | 5 +- .../pipeline-code-dialog.component.ts | 11 +- .../pipeline-logs-dialog.component.ts | 7 +- .../pipeline-details.component.html | 2 + .../pipeline-details/pipeline-details.component.ts | 95 +- .../functions-overview.component.ts | 6 +- .../pipeline-feature-card.component.html | 4 +- .../pipeline-preview-meta.component.ts | 5 +- .../pipeline-overview.component.html | 26 +- .../pipeline-overview.component.ts | 19 +- .../delete-pipeline-dialog.component.html | 8 +- .../delete-pipeline-dialog.component.ts | 23 +- .../measurement-update-dialog.component.html | 161 + .../measurement-update-dialog.component.scss} | 25 +- .../measurement-update-dialog.component.ts} | 49 +- .../pipeline-notifications.component.html | 42 +- .../pipeline-notifications.component.ts | 33 +- .../pipeline-status-dialog.component.ts | 6 +- .../start-all-pipelines-dialog.component.ts | 23 +- ui/src/app/pipelines/model/pipeline-model.ts | 2 + ui/src/app/pipelines/pipelines.component.ts | 11 +- .../services/pipeline-operations.service.ts | 39 +- .../profile/components/basic-profile-settings.ts | 12 +- .../general-profile-settings.component.html | 10 - .../general/general-profile-settings.component.ts | 23 +- .../token/token-management-settings.component.ts | 2 +- .../change-email-dialog.component.html | 121 +- .../change-email/change-email-dialog.component.ts | 34 +- .../change-password-dialog.component.html | 116 +- .../change-password-dialog.component.ts | 35 +- ui/src/app/profile/profile.component.ts | 6 +- ui/src/app/profile/profile.service.ts | 8 +- ui/src/app/services/auth.service.ts | 20 +- ui/src/app/services/available-roles.service.ts | 6 +- .../app/services/editor-autocompletion.service.ts | 364 ++ ui/src/app/services/notification-count-service.ts | 54 - ui/src/app/services/rest-api.service.ts | 14 +- ui/src/app/services/secure.pipe.ts | 10 +- ui/src/app/services/tour/shepherd.service.ts | 12 +- ui/src/main.ts | 11 +- ui/src/scss/sp/main.scss | 22 +- ui/src/scss/sp/sp-theme.scss | 52 +- ui/tsconfig.eslint.json | 9 + 1081 files changed, 58516 insertions(+), 18439 deletions(-) diff --cc streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java index df57142c60,33571ec394..aeef17d7c9 --- a/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java +++ b/streampipes-extensions/streampipes-connectors-opcua/src/main/java/org/apache/streampipes/extensions/connectors/opcua/adapter/OpcUaAdapter.java @@@ -49,9 -47,8 +49,9 @@@ import org.apache.streampipes.sdk.helpe import org.apache.streampipes.sdk.helpers.Labels; import org.apache.streampipes.sdk.helpers.Locales; - import org.eclipse.milo.opcua.sdk.client.api.subscriptions.UaMonitoredItem; + import org.eclipse.milo.opcua.sdk.client.subscriptions.OpcUaMonitoredItem; import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue; +import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId; import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode; import org.eclipse.milo.opcua.stack.core.types.enumerated.TimestampsToReturn; import org.slf4j.Logger; diff --cc ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts index 4f95f8ef76,25c7340a41..f9a0a31090 --- a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts +++ b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts @@@ -45,21 -45,18 +45,19 @@@ import SpBreadcrumbService, SpExceptionDetailsDialogComponent, SpLabelComponent, ++ SpTableActionsDirective, SpTableAssetContextConfig, ++ SpTableComponent, SpTableMultiActionExecuteEvent, SpTableMultiActionOption, -- SpTableActionsDirective, -- SpTableComponent, } from '@streampipes/shared-ui'; import { DeleteAdapterDialogComponent } from '../../dialog/delete-adapter-dialog/delete-adapter-dialog.component'; import { AllAdapterActionsComponent } from '../../dialog/start-all-adapters/all-adapter-actions-dialog.component'; import { MatSort, MatSortHeader } from '@angular/material/sort'; import { Router } from '@angular/router'; - import { AdapterFilterSettingsModel } from '../../model/adapter-filter-settings.model'; +import { AdapterHealthStatus } from '../../model/adapter-health-status.model'; - import { AdapterFilterPipe } from '../../filter/adapter-filter.pipe'; import { SpConnectRoutes } from '../../connect.breadcrumb'; -import { Subscription } from 'rxjs'; +import { interval, Subscription } from 'rxjs'; import { ShepherdService } from '../../../services/tour/shepherd.service'; import { TranslatePipe, TranslateService } from '@ngx-translate/core'; import { @@@ -196,36 -184,44 +189,48 @@@ export class ExistingAdaptersComponent } return adapter[column]; }; + + this.healthPoll$ = interval(5000).subscribe(() => { + this.loadHealthStatuses(); + }); } - startAdapter(adapter: AdapterDescription) { + startAdapter(adapter: AdapterSummaryDto): void { this.operationInProgressAdapterId = adapter.elementId; - this.adapterService.startAdapter(adapter).subscribe( - _ => { - this.getAdaptersRunning(); - }, - error => { - this.operationInProgressAdapterId = undefined; - this.openAdapterStatusErrorDialog(adapter, error.error, true); - }, - ); + this.adapterService + .startAdapterByElementId(adapter.elementId) + .subscribe( + _ => { + this.getAdaptersRunning(); + }, + error => { + this.operationInProgressAdapterId = undefined; + this.openAdapterStatusErrorDialog( + adapter, + error.error, + true, + ); + }, + ); } - stopAdapter(adapter: AdapterDescription, forceStop = false) { + stopAdapter(adapter: AdapterSummaryDto, forceStop = false): void { this.operationInProgressAdapterId = adapter.elementId; - this.adapterService.stopAdapter(adapter, forceStop).subscribe( - _ => { - this.getAdaptersRunning(); - }, - error => { - this.operationInProgressAdapterId = undefined; - this.openAdapterStatusErrorDialog(adapter, error.error, false); - }, - ); + this.adapterService + .stopAdapterByElementId(adapter.elementId, forceStop) + .subscribe( + _ => { + this.getAdaptersRunning(); + }, + error => { + this.operationInProgressAdapterId = undefined; + this.openAdapterStatusErrorDialog( + adapter, + error.error, + false, + ); + }, + ); } startStopSelectedAdapters( @@@ -367,39 -363,24 +372,37 @@@ this.existingAdapters.sort((a, b) => a.name.localeCompare(b.name)); this.applyAdapterFilters(this.currentFilterIds); this.operationInProgressAdapterId = undefined; - this.getMonitoringInfos(adapters); + this.getMonitoringInfos(this.existingAdapters); + this.loadHealthStatuses(); setTimeout(() => { this.dataSource.sort = this.sort; }); }); } + loadHealthStatuses(): void { + this.adapterHealthService.getAllHealthStatuses().subscribe(statuses => { + this.adapterHealthStatuses = statuses; + }); + } + - getHealthStatus(adapter: AdapterDescription): AdapterHealthStatus | null { ++ getHealthStatus(adapter: AdapterSummaryDto): AdapterHealthStatus | null { + return adapter.running + ? this.adapterHealthStatuses.get(adapter.elementId) || null + : null; + } + applyAdapterFilters(elementIds: Set<string>): void { this.currentFilterIds = elementIds; - this.filteredAdapters = this.adapterFilter - .transform(this.existingAdapters, this.currentFilter) - .filter(a => { - if (elementIds === undefined) { - return false; - } else if (elementIds.size === 0) { - return true; - } else { - return elementIds.has(a.elementId); - } - }); + this.filteredAdapters = this.existingAdapters.filter(a => { + if (elementIds === undefined) { + return false; + } else if (elementIds.size === 0) { + return true; + } else { + return elementIds.has(a.elementId); + } + }); this.dataSource.data = this.filteredAdapters; }
