diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7fc3f02b0..462642588 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,49 @@ The changelog format is based on [Keep a Changelog](https://keepachangelog.com/e
## [Unreleased]
+## [released]
+## [v3.1.0] - 19-06-2024
+### Added
+
+- Added a new file `LICENSE_non-code` file in root level with the contents of the CC-BY-4.0 license
+- Added dpp-tutorial to step-by-step guide (readme files) of DPP worksession at the Tractus-X Community Days:
+ - deployment.md
+ - data-provision.md
+ - aspect-model.md
+ - data-consumption.md
+ - digital-twin-provision.md
+ - qr-code.md
+
+
+### Updated
+
+- Updated the contents of "Project Licenses" and "Terms of Use" sections to the `CONTRIBUTING.md` file
+- Updated "Declared Project License" section in `NOTICE.md`.
+- Updated the license header and notices to following readme files:
+ - main README.md
+ - /docs/*
+ - /dpp-backend/*
+ - /dpp-tutorial/*
+ - /deployment/*
+ - /dpp-verification/*
+ - AUTHORS.md
+ - SECURITY.md
+ - INSTALL.md
+ - NOTICE.md
+ - CONTRIBUTING.md
+ - CHANGELOG.md
+- Updated dpp-frontend to support the following new models:
+ - Digital Product Pass `v5.0.0`
+ - Battery Pass `6.0.0`
+ - Transmission Pass `3.0.0`
+- Updated EDC version `v0.7.0`
+- Updated IRS version `v7.1.3`
+
+ ### Issues Fixed
+ - Fixed token refresh for keycloak plugin in frontend
+ - Fixed IRS configuration keys in docker entrypoint script for frotnend
+ - Fixed CORS issue in frontend #274
+
## [released]
## [v3.0.0] - 13-05-2024
diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND
index 0dce085d4..d455c577a 100644
--- a/DEPENDENCIES_BACKEND
+++ b/DEPENDENCIES_BACKEND
@@ -1,14 +1,14 @@
-maven/mavencentral/ch.qos.logback/logback-classic/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3435
-maven/mavencentral/ch.qos.logback/logback-core/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3373
-maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.4, Apache-2.0, approved, #7947
-maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.4, MIT AND Apache-2.0, approved, #7932
-maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.4, Apache-2.0, approved, #7934
-maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.4, Apache-2.0, approved, #8802
-maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.15.4, Apache-2.0, approved, #8808
-maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.4, Apache-2.0, approved, #7930
-maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.15.4, Apache-2.0, approved, #8803
+maven/mavencentral/ch.qos.logback/logback-classic/1.4.14, EPL-1.0 AND LGPL-2.1-only, approved, #15230
+maven/mavencentral/ch.qos.logback/logback-core/1.4.14, EPL-1.0 AND LGPL-2.1-only, approved, #15209
+maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.4, Apache-2.0, approved, #15260
+maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.4, , approved, #15194
+maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.4, Apache-2.0, approved, #15199
+maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.4, Apache-2.0, approved, #15207
+maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.15.4, Apache-2.0, approved, #15281
+maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.4, Apache-2.0, approved, #15189
+maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.15.4, Apache-2.0, approved, #15219
maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949
-maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20
+maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, CC-BY-2.5, approved, #15220
maven/mavencentral/com.google.code.gson/gson/2.10, Apache-2.0, approved, #6159
maven/mavencentral/com.google.errorprone/error_prone_annotations/2.18.0, Apache-2.0, approved, clearlydefined
maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654
@@ -22,7 +22,7 @@ maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.24.4, Apache-2.0, approved, cl
maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/9.43.3, Apache-2.0, approved, clearlydefined
maven/mavencentral/com.opencsv/opencsv/5.7.1, Apache-2.0, approved, clearlydefined
maven/mavencentral/commons-beanutils/commons-beanutils/1.9.4, Apache-2.0, approved, CQ12654
-maven/mavencentral/commons-collections/commons-collections/3.2.2, Apache-2.0, approved, CQ10385
+maven/mavencentral/commons-collections/commons-collections/3.2.2, Apache-2.0, approved, #15185
maven/mavencentral/commons-lang/commons-lang/2.6, Apache-2.0, approved, CQ6183
maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ10162
maven/mavencentral/commons-net/commons-net/3.9.0, Apache-2.0, approved, clearlydefined
@@ -64,7 +64,7 @@ maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved
maven/mavencentral/org.apache.commons/commons-text/1.10.0, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.apache.logging.log4j/log4j-api/2.21.1, Apache-2.0 AND (Apache-2.0 AND LGPL-2.0-or-later), approved, #11079
maven/mavencentral/org.apache.logging.log4j/log4j-core/2.21.1, Apache-2.0 AND (Apache-2.0 AND LGPL-2.0-or-later), approved, #12592
-maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.21.1, Apache-2.0, approved, #11919
+maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.21.1, Apache-2.0, approved, #15262
maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.20, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949
maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.20, Apache-2.0, approved, #6997
maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.20, Apache-2.0, approved, #7920
@@ -75,7 +75,7 @@ maven/mavencentral/org.bouncycastle/bcutil-jdk15on/1.69, MIT, approved, clearlyd
maven/mavencentral/org.checkerframework/checker-qual/3.33.0, MIT, approved, clearlydefined
maven/mavencentral/org.codehaus.plexus/plexus-utils/3.2.1, , approved, CQ20774
maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776
-maven/mavencentral/org.projectlombok/lombok/1.18.32, MIT AND LicenseRef-Public-Domain, approved, CQ23907
+maven/mavencentral/org.projectlombok/lombok/1.18.32, MIT, approved, #15192
maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332
maven/mavencentral/org.slf4j/jul-to-slf4j/2.0.13, MIT, approved, #7698
maven/mavencentral/org.slf4j/slf4j-api/2.0.13, MIT, approved, #5915
@@ -102,7 +102,7 @@ maven/mavencentral/org.springframework.cloud/spring-cloud-commons/3.1.5, Apache-
maven/mavencentral/org.springframework.cloud/spring-cloud-context/3.1.5, Apache-2.0, approved, #4722
maven/mavencentral/org.springframework.cloud/spring-cloud-starter-bootstrap/3.1.5, Apache-2.0, approved, clearlydefined
maven/mavencentral/org.springframework.cloud/spring-cloud-starter/3.1.5, Apache-2.0, approved, #4723
-maven/mavencentral/org.springframework.data/spring-data-commons/3.2.5, Apache-2.0, approved, #11917
+maven/mavencentral/org.springframework.data/spring-data-commons/3.2.5, Apache-2.0, approved, #15202
maven/mavencentral/org.springframework.data/spring-data-rest-core/4.2.5, Apache-2.0, approved, #12591
maven/mavencentral/org.springframework.data/spring-data-rest-webmvc/4.2.5, Apache-2.0, approved, #12595
maven/mavencentral/org.springframework.hateoas/spring-hateoas/2.2.2, Apache-2.0, approved, #11883
@@ -117,17 +117,17 @@ maven/mavencentral/org.springframework.security/spring-security-rsa/1.0.11.RELEA
maven/mavencentral/org.springframework.security/spring-security-web/6.2.4, Apache-2.0, approved, #11911
maven/mavencentral/org.springframework.session/spring-session-core/3.2.2, Apache-2.0, approved, #12588
maven/mavencentral/org.springframework.session/spring-session-jdbc/3.2.2, Apache-2.0, approved, #12596
-maven/mavencentral/org.springframework/spring-aop/6.1.6, Apache-2.0, approved, #11755
-maven/mavencentral/org.springframework/spring-beans/6.1.6, Apache-2.0, approved, #11754
-maven/mavencentral/org.springframework/spring-context/6.1.6, Apache-2.0, approved, #11753
-maven/mavencentral/org.springframework/spring-core/6.1.6, Apache-2.0 AND BSD-3-Clause, approved, #11750
-maven/mavencentral/org.springframework/spring-expression/6.1.6, Apache-2.0, approved, #11747
-maven/mavencentral/org.springframework/spring-jcl/6.1.6, Apache-2.0, approved, #11749
-maven/mavencentral/org.springframework/spring-jdbc/6.1.6, Apache-2.0, approved, #11897
-maven/mavencentral/org.springframework/spring-tx/6.1.6, Apache-2.0, approved, #11901
-maven/mavencentral/org.springframework/spring-web/6.1.6, Apache-2.0, approved, #11748
+maven/mavencentral/org.springframework/spring-aop/6.1.6, Apache-2.0, approved, #15221
+maven/mavencentral/org.springframework/spring-beans/6.1.6, Apache-2.0, approved, #15213
+maven/mavencentral/org.springframework/spring-context/6.1.6, Apache-2.0, approved, #15261
+maven/mavencentral/org.springframework/spring-core/6.1.6, Apache-2.0 AND BSD-3-Clause, approved, #15206
+maven/mavencentral/org.springframework/spring-expression/6.1.6, Apache-2.0, approved, #15264
+maven/mavencentral/org.springframework/spring-jcl/6.1.6, Apache-2.0, approved, #15266
+maven/mavencentral/org.springframework/spring-jdbc/6.1.6, Apache-2.0, approved, #15191
+maven/mavencentral/org.springframework/spring-tx/6.1.6, Apache-2.0, approved, #15229
+maven/mavencentral/org.springframework/spring-web/6.1.6, Apache-2.0, approved, #15188
maven/mavencentral/org.springframework/spring-webflux/6.1.6, Apache-2.0, approved, #12593
-maven/mavencentral/org.springframework/spring-webmvc/6.1.6, Apache-2.0, approved, #11879
+maven/mavencentral/org.springframework/spring-webmvc/6.1.6, Apache-2.0, approved, #15182
maven/mavencentral/org.webjars/swagger-ui/4.15.5, Apache-2.0 AND MIT, approved, #5921
maven/mavencentral/org.webjars/webjars-locator-core/0.55, MIT, approved, clearlydefined
maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275
diff --git a/DEPENDENCIES_BACKEND_SCRIPTS b/DEPENDENCIES_BACKEND_SCRIPTS
new file mode 100644
index 000000000..5437fe7c5
--- /dev/null
+++ b/DEPENDENCIES_BACKEND_SCRIPTS
@@ -0,0 +1 @@
+pypi/pypi/-/requests/2.31.0, Apache-2.0 AND MIT AND Apache-2.0, approved, #13074
diff --git a/DEPENDENCIES_FRONTEND b/DEPENDENCIES_FRONTEND
index d2961c9b8..d574de5ec 100644
--- a/DEPENDENCIES_FRONTEND
+++ b/DEPENDENCIES_FRONTEND
@@ -1,7 +1,7 @@
npm/npmjs/-/acorn-jsx/5.3.2, MIT, approved, clearlydefined
npm/npmjs/-/acorn/7.4.1, MIT, approved, clearlydefined
npm/npmjs/-/acorn/8.8.2, MIT, approved, #6951
-npm/npmjs/-/ajv/6.12.6, MIT, approved, #979
+npm/npmjs/-/ajv/6.12.6, MIT, approved, #15286
npm/npmjs/-/ajv/8.12.0, MIT AND OFL-1.1 AND (EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0), approved, #6025
npm/npmjs/-/ansi-colors/4.1.3, MIT, approved, clearlydefined
npm/npmjs/-/ansi-regex/5.0.1, MIT, approved, clearlydefined
@@ -18,7 +18,7 @@ npm/npmjs/-/binary-extensions/2.2.0, MIT, approved, clearlydefined
npm/npmjs/-/boolbase/1.0.0, ISC, approved, clearlydefined
npm/npmjs/-/brace-expansion/1.1.11, MIT, approved, clearlydefined
npm/npmjs/-/brace-expansion/2.0.1, MIT, approved, clearlydefined
-npm/npmjs/-/braces/3.0.2, MIT, approved, clearlydefined
+npm/npmjs/-/braces/3.0.2, MIT, approved, #14866
npm/npmjs/-/callforth/0.3.1, MIT, approved, clearlydefined
npm/npmjs/-/callsites/3.1.0, MIT, approved, clearlydefined
npm/npmjs/-/chalk/2.4.2, MIT, approved, clearlydefined
@@ -57,7 +57,7 @@ npm/npmjs/-/eslint-config-prettier/8.5.0, MIT, approved, clearlydefined
npm/npmjs/-/eslint-plugin-vue/9.9.0, MIT, approved, #7089
npm/npmjs/-/eslint-scope/5.1.1, BSD-2-Clause, approved, clearlydefined
npm/npmjs/-/eslint-scope/7.1.1, BSD-2-Clause, approved, clearlydefined
-npm/npmjs/-/eslint-utils/2.1.0, MIT, approved, #2498
+npm/npmjs/-/eslint-utils/2.1.0, MIT, approved, #15320
npm/npmjs/-/eslint-utils/3.0.0, MIT, approved, #2431
npm/npmjs/-/eslint-visitor-keys/1.3.0, Apache-2.0, approved, #2501
npm/npmjs/-/eslint-visitor-keys/2.1.0, Apache-2.0, approved, #2433
@@ -68,23 +68,23 @@ npm/npmjs/-/espree/9.4.1, BSD-2-Clause AND BSD-3-Clause AND MIT AND BSD-2-Clause
npm/npmjs/-/esprima/4.0.1, BSD-2-Clause, approved, #995
npm/npmjs/-/esquery/1.4.0, BSD-3-Clause, approved, #1100
npm/npmjs/-/esrecurse/4.3.0, BSD-2-Clause, approved, clearlydefined
-npm/npmjs/-/estraverse/4.3.0, BSD-2-Clause, approved, #518
+npm/npmjs/-/estraverse/4.3.0, BSD-2-Clause AND MIT AND BSD-2-Clause, approved, #15352
npm/npmjs/-/estraverse/5.3.0, BSD-2-Clause AND MIT, approved, #1557
npm/npmjs/-/estree-walker/2.0.2, MIT, approved, clearlydefined
npm/npmjs/-/esutils/2.0.3, BSD-2-Clause AND BSD-3-Clause, approved, #120
npm/npmjs/-/fast-deep-equal/3.1.3, MIT, approved, clearlydefined
npm/npmjs/-/fast-json-stable-stringify/2.1.0, MIT, approved, clearlydefined
-npm/npmjs/-/fast-levenshtein/2.0.6, MIT, approved, #2428
+npm/npmjs/-/fast-levenshtein/2.0.6, MIT, approved, #15236
npm/npmjs/-/file-entry-cache/6.0.1, MIT, approved, clearlydefined
npm/npmjs/-/fill-range/7.0.1, MIT, approved, clearlydefined
npm/npmjs/-/find-cache-dir/3.3.2, MIT, approved, clearlydefined
npm/npmjs/-/find-up/4.1.0, MIT, approved, clearlydefined
npm/npmjs/-/flat-cache/3.0.4, MIT, approved, clearlydefined
-npm/npmjs/-/flatted/3.2.7, ISC AND (ISC AND MIT), approved, #2430
+npm/npmjs/-/flatted/3.2.7, ISC AND (ISC AND MIT), approved, #15360
npm/npmjs/-/follow-redirects/1.15.6, MIT, approved, #10782
npm/npmjs/-/form-data/4.0.0, MIT, approved, clearlydefined
npm/npmjs/-/fs.realpath/1.0.0, ISC, approved, clearlydefined
-npm/npmjs/-/fsevents/2.3.3, MIT, approved, #2967
+npm/npmjs/-/fsevents/2.3.3, MIT, approved, #15309
npm/npmjs/-/functional-red-black-tree/1.0.1, MIT, approved, clearlydefined
npm/npmjs/-/get-caller-file/2.0.5, ISC, approved, clearlydefined
npm/npmjs/-/glob-parent/5.1.2, ISC, approved, clearlydefined
@@ -145,7 +145,7 @@ npm/npmjs/-/path-exists/4.0.0, MIT, approved, clearlydefined
npm/npmjs/-/path-is-absolute/1.0.1, MIT, approved, clearlydefined
npm/npmjs/-/path-key/3.1.1, MIT, approved, clearlydefined
npm/npmjs/-/path/0.12.7, MIT, approved, clearlydefined
-npm/npmjs/-/picocolors/1.0.0, ISC, approved, clearlydefined
+npm/npmjs/-/picocolors/1.0.0, ISC, approved, #14718
npm/npmjs/-/picomatch/2.3.1, MIT, approved, clearlydefined
npm/npmjs/-/pkg-dir/4.2.0, MIT, approved, clearlydefined
npm/npmjs/-/popper.js/1.16.1, MIT, approved, CQ22353
@@ -156,7 +156,7 @@ npm/npmjs/-/process/0.11.10, MIT, approved, CQ23452
npm/npmjs/-/progress/2.0.3, MIT, approved, clearlydefined
npm/npmjs/-/proxy-from-env/1.1.0, MIT, approved, clearlydefined
npm/npmjs/-/punycode/2.3.0, MIT, approved, #6373
-npm/npmjs/-/readdirp/3.6.0, MIT, approved, #2977
+npm/npmjs/-/readdirp/3.6.0, MIT, approved, #15328
npm/npmjs/-/regexpp/3.2.0, MIT, approved, clearlydefined
npm/npmjs/-/require-directory/2.1.1, MIT, approved, clearlydefined
npm/npmjs/-/require-from-string/2.0.2, MIT, approved, clearlydefined
@@ -174,7 +174,7 @@ npm/npmjs/-/shebang-command/2.0.0, MIT, approved, clearlydefined
npm/npmjs/-/shebang-regex/3.0.0, MIT, approved, clearlydefined
npm/npmjs/-/shvl/2.0.3, MIT, approved, clearlydefined
npm/npmjs/-/slice-ansi/4.0.0, MIT, approved, clearlydefined
-npm/npmjs/-/source-map-js/1.0.2, BSD-3-Clause, approved, #2412
+npm/npmjs/-/source-map-js/1.0.2, BSD-3-Clause, approved, #15401
npm/npmjs/-/source-map/0.6.1, BSD-3-Clause, approved, #2417
npm/npmjs/-/source-map/0.7.4, BSD-3-Clause, approved, #2416
npm/npmjs/-/sourcemap-codec/1.4.8, MIT, approved, clearlydefined
@@ -198,7 +198,7 @@ npm/npmjs/-/util/0.10.4, MIT, approved, clearlydefined
npm/npmjs/-/v8-compile-cache/2.3.0, MIT, approved, clearlydefined
npm/npmjs/-/vite-plugin-vuetify/1.0.2, MIT, approved, #7100
npm/npmjs/-/vite/4.5.2, MIT, approved, clearlydefined
-npm/npmjs/-/vue-chartjs/5.3.0, MIT, approved, clearlydefined
+npm/npmjs/-/vue-chartjs/5.3.1, MIT, approved, clearlydefined
npm/npmjs/-/vue-eslint-parser/9.1.0, MIT, approved, #7091
npm/npmjs/-/vue-i18n/9.2.2, MIT, approved, clearlydefined
npm/npmjs/-/vue-router/4.0.13, MIT, approved, clearlydefined
diff --git a/README.md b/README.md
index f38aaabb5..09345a7da 100644
--- a/README.md
+++ b/README.md
@@ -43,9 +43,9 @@ In particular, the appliction is used to access the battery passport data provid
### Software Version
#### Helm Chart Version
-
3.0.0
+3.1.0
#### Application Version
-v3.0.0
+v3.1.0
diff --git a/charts/digital-product-pass/Chart.yaml b/charts/digital-product-pass/Chart.yaml
index bdfca876c..2fc0ee8ed 100644
--- a/charts/digital-product-pass/Chart.yaml
+++ b/charts/digital-product-pass/Chart.yaml
@@ -42,10 +42,10 @@ type: application
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
-version: 3.0.0
+version: 3.1.0
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
-appVersion: "3.0.0"
+appVersion: "3.1.0"
diff --git a/charts/digital-product-pass/README.md b/charts/digital-product-pass/README.md
index dd8e9aaf3..c71e0d544 100644
--- a/charts/digital-product-pass/README.md
+++ b/charts/digital-product-pass/README.md
@@ -1,6 +1,6 @@
# digital-product-pass
-![Version: 3.0.0](https://img.shields.io/badge/Version-3.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.0.0](https://img.shields.io/badge/AppVersion-3.0.0-informational?style=flat-square)
+![Version: 3.1.0](https://img.shields.io/badge/Version-3.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.1.0](https://img.shields.io/badge/AppVersion-3.1.0-informational?style=flat-square)
A Helm chart for Tractus-X Digital Product Pass Kubernetes
@@ -31,7 +31,7 @@ helm install digital-product-pass tractusx/digital-product-pass
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| affinity | object | `{}` | |
-| backend | object | `{"digitalTwinRegistry":{"endpoints":{"digitalTwin":"/shell-descriptors","search":"/lookup/shells","subModel":"/submodel-descriptors"},"policyCheck":{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.core.digitalTwinRegistry:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false},"temporaryStorage":{"enabled":true,"lifetime":12},"timeouts":{"digitalTwin":40,"negotiation":60,"search":50,"transfer":20}},"discovery":{"bpnDiscovery":{"key":"manufacturerPartId","path":"/api/v1.0/administration/connectors/bpnDiscovery/search"},"edcDiscovery":{"key":"bpn"},"hostname":""},"edc":{"apis":{"catalog":"/catalog/request","management":"/management/v2","negotiation":"/contractnegotiations","readiness":"/api/check/readiness","transfer":"/transferprocesses"},"delay":100,"hostname":"","participantId":"","xApiKey":""},"hostname":"","image":{"pullPolicy":"IfNotPresent","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"annotations":{"ingressClassName":"nginx","nginx.ingress.kubernetes.io/backend-protocol":"HTTP","nginx.ingress.kubernetes.io/force-ssl-redirect":"true","nginx.ingress.kubernetes.io/ssl-passthrough":"false"},"enabled":false,"hosts":[{"host":"","paths":[{"path":"/","pathType":"Prefix"}]}]},"irs":{"enabled":false,"hostname":""},"logging":{"level":{"root":"INFO","utils":"INFO"}},"maxRetries":5,"name":"dpp-backend","passport":{"aspects":["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass","urn:samm:io.catenax.generic.digital_product_passport:2.0.0#DigitalProductPassport"],"policyCheck":{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"circulareconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false}},"podSecurityContext":{"fsGroup":3000,"runAsGroup":3000,"runAsUser":1000,"seccompProfile":{"type":"RuntimeDefault"}},"process":{"encryptionKey":""},"securityCheck":{"bpn":false,"edc":false},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"add":[],"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":1000},"serverPort":8888,"service":{"port":8888,"type":"ClusterIP"},"singleApi":{"delay":1000,"maxRetries":30},"volumeMounts":[{"mountPath":"/app/config","name":"backend-config"},{"mountPath":"/app/data/process","name":"pvc-backend","subPath":"data/process"},{"mountPath":"/app/log","name":"tmpfs","subPath":"log"},{"mountPath":"/tmp","name":"tmpfs"},{"mountPath":"/app/data/VaultConfig","name":"tmpfs","subPath":"VaultConfig/vault.token.yml"},{"mountPath":"/app/tmp","name":"tmpfs"}],"volumes":[{"configMap":{"name":"{{ .Release.Name }}-backend-config"},"name":"backend-config"},{"name":"pvc-backend","persistentVolumeClaim":{"claimName":"{{ .Release.Name }}-pvc-data"}},{"emptyDir":{},"name":"tmpfs"}]}` | Backend configuration |
+| backend | object | `{"digitalTwinRegistry":{"endpoints":{"digitalTwin":"/shell-descriptors","search":"/lookup/shells","subModel":"/submodel-descriptors"},"policyCheck":{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.core.digitalTwinRegistry:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false},"temporaryStorage":{"enabled":true,"lifetime":12},"timeouts":{"digitalTwin":40,"negotiation":60,"search":50,"transfer":20}},"discovery":{"bpnDiscovery":{"key":"manufacturerPartId","path":"/api/v1.0/administration/connectors/bpnDiscovery/search"},"edcDiscovery":{"key":"bpn"},"hostname":""},"edc":{"apis":{"catalog":"/catalog/request","management":"/management/v2","negotiation":"/contractnegotiations","readiness":"/api/check/readiness","transfer":"/transferprocesses"},"delay":100,"hostname":"","participantId":"","xApiKey":""},"hostname":"","image":{"pullPolicy":"IfNotPresent","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"annotations":{"ingressClassName":"nginx","nginx.ingress.kubernetes.io/backend-protocol":"HTTP","nginx.ingress.kubernetes.io/force-ssl-redirect":"true","nginx.ingress.kubernetes.io/ssl-passthrough":"false"},"enabled":false,"hosts":[{"host":"","paths":[{"path":"/","pathType":"Prefix"}]}]},"irs":{"enabled":false,"hostname":""},"logging":{"level":{"root":"INFO","utils":"INFO"}},"maxRetries":5,"name":"dpp-backend","passport":{"aspects":["urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport","urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass","urn:samm:io.catenax.battery.battery_pass:6.0.0#BatteryPass","urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass","urn:samm:io.catenax.transmission.transmission_pass:3.0.0#TransmissionPass","urn:samm:io.catenax.generic.digital_product_passport:2.0.0#DigitalProductPassport","urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport"],"policyCheck":{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"CircularEconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false}},"podSecurityContext":{"fsGroup":3000,"runAsGroup":3000,"runAsUser":1000,"seccompProfile":{"type":"RuntimeDefault"}},"process":{"encryptionKey":""},"securityCheck":{"bpn":false,"edc":false},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"add":[],"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":3000,"runAsNonRoot":true,"runAsUser":1000},"serverPort":8888,"service":{"port":8888,"type":"ClusterIP"},"singleApi":{"delay":1000,"maxRetries":30},"volumeMounts":[{"mountPath":"/app/config","name":"backend-config"},{"mountPath":"/app/data/process","name":"pvc-backend","subPath":"data/process"},{"mountPath":"/app/log","name":"tmpfs","subPath":"log"},{"mountPath":"/tmp","name":"tmpfs"},{"mountPath":"/app/data/VaultConfig","name":"tmpfs","subPath":"VaultConfig/vault.token.yml"},{"mountPath":"/app/tmp","name":"tmpfs"}],"volumes":[{"configMap":{"name":"{{ .Release.Name }}-backend-config"},"name":"backend-config"},{"name":"pvc-backend","persistentVolumeClaim":{"claimName":"{{ .Release.Name }}-pvc-data"}},{"emptyDir":{},"name":"tmpfs"}]}` | Backend configuration |
| backend.digitalTwinRegistry.policyCheck | object | `{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.core.digitalTwinRegistry:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false}` | policy configuration for the digital twin assets in the edc catalog |
| backend.digitalTwinRegistry.policyCheck.enabled | bool | `true` | condition to enable and disable the policy check |
| backend.digitalTwinRegistry.policyCheck.policies | list | `[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.core.digitalTwinRegistry:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}]` | list of allowed policies that can be selected from the edc catalog in negotiations |
@@ -56,9 +56,9 @@ helm install digital-product-pass tractusx/digital-product-pass
| backend.logging.level.root | string | `"INFO"` | general logging level |
| backend.logging.level.utils | string | `"INFO"` | logging for the util components |
| backend.maxRetries | int | `5` | max retries for the backend services |
-| backend.passport.policyCheck | object | `{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"circulareconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false}` | configuration for policies to filter in the digital product pass asset negotiation |
+| backend.passport.policyCheck | object | `{"enabled":true,"policies":[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"CircularEconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}],"strictMode":false}` | configuration for policies to filter in the digital product pass asset negotiation |
| backend.passport.policyCheck.enabled | bool | `true` | condition to enable and disable the policy check |
-| backend.passport.policyCheck.policies | list | `[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"circulareconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}]` | list of allowed policies that can be selected from the edc catalog in negotiations |
+| backend.passport.policyCheck.policies | list | `[{"obligation":[],"permission":[{"action":"USE","constraints":[{"leftOperand":"cx-policy:Membership","operator":"odrl:eq","rightOperand":"active"},{"leftOperand":"cx-policy:FrameworkAgreement","operator":"odrl:eq","rightOperand":"CircularEconomy:1.0"},{"leftOperand":"cx-policy:UsagePurpose","operator":"odrl:eq","rightOperand":"cx.circular.dpp:1"}],"logicalConstraint":"odrl:and"}],"prohibition":[]}]` | list of allowed policies that can be selected from the edc catalog in negotiations |
| backend.passport.policyCheck.strictMode | bool | `false` | the strict mode is quicker (uses hashes) and requires less computation complexity, the default mode is comparing against every single object value |
| backend.podSecurityContext | object | `{"fsGroup":3000,"runAsGroup":3000,"runAsUser":1000,"seccompProfile":{"type":"RuntimeDefault"}}` | The [pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) defines privilege and access control settings for a Pod within the deployment |
| backend.podSecurityContext.fsGroup | int | `3000` | The owner for volumes and any files created within volumes will belong to this guid |
diff --git a/charts/digital-product-pass/templates/deployment-frontend.yaml b/charts/digital-product-pass/templates/deployment-frontend.yaml
index 60bf24d5a..53b1c3a33 100644
--- a/charts/digital-product-pass/templates/deployment-frontend.yaml
+++ b/charts/digital-product-pass/templates/deployment-frontend.yaml
@@ -104,10 +104,10 @@ spec:
- name: "API_MAX_RETRIES"
value: "{{ .Values.frontend.api.max_retries }}"
- - name: "IRS_DELAY"
+ - name: "APP_IRS_DELAY"
value: "{{ .Values.frontend.irs.requestDelay }}"
- - name: "IRS_MAX_WAITING_TIME"
+ - name: "APP_IRS_WAITING_TIME"
value: "{{ .Values.frontend.irs.maxWaitingTime }}"
- name: "API_DELAY"
diff --git a/deployment/infrastructure/data-consumer/edc-consumer/Chart.yaml b/deployment/infrastructure/data-consumer/edc-consumer/Chart.yaml
index 331c129be..17bd0bdf2 100644
--- a/deployment/infrastructure/data-consumer/edc-consumer/Chart.yaml
+++ b/deployment/infrastructure/data-consumer/edc-consumer/Chart.yaml
@@ -28,15 +28,15 @@ description: |
A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mock that can be used as edc consumer for the DPP applicatiton.
type: application
version: 0.3.3
-appVersion: "0.6.0"
+appVersion: "0.7.0"
home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector
sources:
- https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector
urls:
- - https://github.com/eclipse-tractusx/tractusx-edc/releases/download/tractusx-connector-0.5.0/tractusx-connector-0.5.0.tgz
+ - https://github.com/eclipse-tractusx/tractusx-edc/releases/download/tractusx-connector-0.7.0/tractusx-connector-0.7.0.tgz
dependencies:
- name: tractusx-connector
- version: "0.6.0"
+ version: "0.7.0"
repository: https://eclipse-tractusx.github.io/charts/dev
condition: enabled
- name: postgresql
@@ -44,7 +44,7 @@ dependencies:
version: 12.1.6
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- - name: irs-helm
+ - name: item-relationship-service
repository: https://eclipse-tractusx.github.io/item-relationship-service
- version: 6.14.0
- condition: irs-helm.enabled
+ version: 7.1.3
+ condition: item-relationship-service.enabled
diff --git a/deployment/infrastructure/data-consumer/edc-consumer/values-int.yaml b/deployment/infrastructure/data-consumer/edc-consumer/values-int.yaml
index 335e8cf3a..9850fdeea 100644
--- a/deployment/infrastructure/data-consumer/edc-consumer/values-int.yaml
+++ b/deployment/infrastructure/data-consumer/edc-consumer/values-int.yaml
@@ -37,6 +37,20 @@ tractusx-connector:
participant:
id: ""
+ iatp:
+ # Decentralized IDentifier
+ id: "did:web:portal-backend.int.demo.catena-x.net:api:administration:staticdata:did:BPNL0073928UJ879"
+ trustedIssuers: # array [] that needs to be expand but likely like (sorry unconfirmed on how this is done, as I also would need to check)
+ - "did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp"
+ sts:
+ dim:
+ url: "https://dis-integration-service-prod.eu10.dim.cloud.sap/api/v2.0.0/iatp/catena-x-portal"
+ oauth:
+ token_url: "https://bpnl0073928uj879-dpp.authentication.eu10.hana.ondemand.com/oauth/token"
+ client:
+ id: ""
+ secret_alias: "int-client-secret"
+
controlplane:
enabled: true
endpoints:
@@ -72,33 +86,13 @@ tractusx-connector:
port: 9090
# -- path for incoming api calls
path: /consumer/metrics
- # -- observability api with unsecured access, must not be internet facing
- observability:
- # -- port for incoming API calls
- port: 8099
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /consumer/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
-
- ssi:
- miw:
- url: ""
- authorityId: ""
- oauth:
- tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"
- client:
- id: ""
- secretAlias: "int-client-secret"
- endpoint:
- audience: https://materialpass.int.demo.catena-x.net/consumer
## Ingress declaration to expose the network service.
ingresses:
## Public / Internet facing Ingress
- enabled: true
# -- The hostname to be used to precisely map incoming traffic onto the underlying network service
- hostname: "materialpass.int.demo.catena-x.net"
+ hostname: "dpp.int.demo.catena-x.net"
# -- Additional ingress annotations to add
annotations: {}
# -- EDC endpoints exposed by this ingress resource
@@ -126,23 +120,36 @@ tractusx-connector:
public:
port: 8081
path: /consumer/api/public
+ signaling:
+ port: 8083
+ path: /api/signaling
control:
port: 8083
path: /consumer/api/dataplane/control
proxy:
port: 8186
path: /consumer/proxy
+ authKey:
observability:
# -- port for incoming API calls
port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /consumer/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
metrics:
port: 9090
path: /consumer/metrics
+ token:
+ refresh:
+ expiry_seconds: 300
+ expiry_tolerance_seconds: 10
+ # optional URL that can be provided where clients go to refresh tokens.
+ refresh_endpoint:
+ signer:
+ # alias under which the private key is stored in the vault (JWK or PEM format)
+ privatekey_alias: ids-daps_key
+ verifier:
+ # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format)
+ publickey_alias: ids-daps_crt
+
## Ingress declaration to expose the network service.
ingresses:
## Public / Internet facing Ingress
@@ -193,11 +200,11 @@ postgresql:
username:
password:
-irs-helm:
+item-relationship-service:
enabled: true
bpn:
- irsUrl: "https://materialpass-irs.int.demo.catena-x.net"
+ irsUrl: "https://dpp-irs.int.demo.catena-x.net"
apiKeyAdmin:
apiKeyRegular:
@@ -209,18 +216,18 @@ irs-helm:
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/ssl-passthrough: 'false'
hosts:
- - host: "materialpass-irs.int.demo.catena-x.net"
+ - host: "dpp-irs.int.demo.catena-x.net"
paths:
- path: /
pathType: Prefix
tls:
- hosts:
- - "materialpass-irs.int.demo.catena-x.net"
+ - "dpp-irs.int.demo.catena-x.net"
secretName: tls-secret
digitalTwinRegistry:
type: decentral
- url: https://materialpass.int.demo.catena-x.net/semantics/registry/api/v3.0
+ url: https://dpp-registry.int.demo.catena-x.net/semantics/registry/api/v3.0
discovery:
oAuthClientId: discovery # ID of the OAuth2 client registration to use, see config spring.security.oauth2.client
@@ -256,15 +263,21 @@ irs-helm:
edc:
catalog:
acceptedPolicies:
- - leftOperand: "FrameworkAgreement.sustainability"
- operator: "eq"
- rightOperand: "active"
- - leftOperand: "Membership"
+ - leftOperand: "cx-policy:FrameworkAgreement"
+ operator: "eq"
+ rightOperand: "CircularEconomy:1.0"
+ - leftOperand: "cx-policy:Membership"
operator: "eq"
rightOperand: "active"
+ - leftOperand: "cx-policy:UsagePurpose"
+ operator: "eq"
+ rightOperand: "cx.circular.dpp:1"
+ - leftOperand: "cx-policy:UsagePurpose"
+ operator: "eq"
+ rightOperand: "cx.core.digitalTwinRegistry:1"
controlplane:
endpoint:
- data: https://materialpass.int.demo.catena-x.net/consumer/management
+ data: https://dpp.int.demo.catena-x.net/consumer/management
apikey:
header: "X-Api-Key"
secret:
diff --git a/deployment/infrastructure/data-consumer/edc-consumer/values.yaml b/deployment/infrastructure/data-consumer/edc-consumer/values.yaml
index 4e3d94f59..2b64835a4 100644
--- a/deployment/infrastructure/data-consumer/edc-consumer/values.yaml
+++ b/deployment/infrastructure/data-consumer/edc-consumer/values.yaml
@@ -47,6 +47,20 @@ tractusx-connector:
participant:
id: ""
+ iatp:
+ # Decentralized IDentifier
+ id: "did:web:portal-backend.int.demo.catena-x.net:api:administration:staticdata:did:BPNL0073928UJ879"
+ trustedIssuers: # array [] that needs to be expand but likely like (sorry unconfirmed on how this is done, as I also would need to check)
+ - "did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp"
+ sts:
+ dim:
+ url: "https://dis-integration-service-prod.eu10.dim.cloud.sap/api/v2.0.0/iatp/catena-x-portal"
+ oauth:
+ token_url: "https://bpnl0073928uj879-dpp.authentication.eu10.hana.ondemand.com/oauth/token"
+ client:
+ id: ""
+ secret_alias: "dev-client-secret"
+
controlplane:
enabled: true
image:
@@ -119,30 +133,17 @@ tractusx-connector:
port: 9090
# -- path for incoming api calls
path: /consumer/metrics
- # -- observability api with unsecured access, must not be internet facing
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /consumer/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
+
businessPartnerValidation:
log:
agreementValidation: true
- # SSI configuration
- ssi:
- miw:
- url: ""
- authorityId: ""
- oauth:
- tokenurl: "https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"
- client:
- id: ""
- secretAlias: "dev-client-secret"
- endpoint:
- audience: https://materialpass.dev.demo.catena-x.net/consumer
-
+ bdrs:
+ # time that a cached BPN/DID resolution map is valid in seconds, default is 10 min
+ cache_validity_seconds: 600
+ server:
+ # URL of the BPN/DID Resolution Service - required:
+ url: "https://bpn-did-resolution-service.int.demo.catena-x.net/api/directory"
+
service:
# -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service.
type: ClusterIP
@@ -179,8 +180,11 @@ tractusx-connector:
# -- The container's process will run with the specified uid
runAsUser: 10001
# Extra environment variables that will be pass onto deployment pods
- env: {}
- # ENV_NAME: value
+ env:
+ # ENV_NAME: value
+ # workaround till 0.7.1 chart
+ EDC_IAM_TRUSTED-ISSUER_ISSUER1_ID: did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp
+
# "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
# ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
@@ -305,7 +309,7 @@ tractusx-connector:
affinity: {}
url:
# -- Explicitly declared url for reaching the ids api (e.g. if ingresses not used)
- ids: ""
+ protocol: ""
dataplane:
enabled: true
image:
@@ -355,22 +359,33 @@ tractusx-connector:
public:
port: 8081
path: /consumer/api/public
+ signaling:
+ port: 8083
+ path: /api/signaling
control:
port: 8083
path: /consumer/api/dataplane/control
proxy:
port: 8186
path: /consumer/proxy
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /consumer/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
+ authKey:
metrics:
port: 9090
path: /consumer/metrics
+
+ token:
+ refresh:
+ expiry_seconds: 300
+ expiry_tolerance_seconds: 10
+ # optional URL that can be provided where clients go to refresh tokens.
+ refresh_endpoint:
+ signer:
+ # alias under which the private key is stored in the vault (JWK or PEM format)
+ privatekey_alias: daps-key-dev
+ verifier:
+ # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format)
+ publickey_alias: daps-crt-dev
+
aws:
endpointOverride: ""
accessKeyId: ""
@@ -407,8 +422,11 @@ tractusx-connector:
# -- The container's process will run with the specified uid
runAsUser: 10001
# Extra environment variables that will be pass onto deployment pods
- env: {}
- # ENV_NAME: value
+ env:
+ # ENV_NAME: value
+ # workaround till 0.7.1 chart
+ EDC_IAM_TRUSTED-ISSUER_ISSUER1_ID: did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp
+
# "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
# ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
@@ -466,12 +484,12 @@ tractusx-connector:
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
- # limits:
- # cpu: 100m
- # memory: 128Mi
- # requests:
- # cpu: 100m
- # memory: 128Mi
+ limits:
+ cpu: 1.5
+ memory: 1024Mi
+ requests:
+ cpu: 500m
+ memory: 128Mi
replicaCount: 1
autoscaling:
# -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/)
@@ -590,7 +608,7 @@ postgresql:
username:
password:
-irs-helm:
+item-relationship-service:
enabled: true
bpn:
diff --git a/deployment/infrastructure/data-provider/edc-provider/Chart.yaml b/deployment/infrastructure/data-provider/edc-provider/Chart.yaml
index f392f2405..15c16de82 100644
--- a/deployment/infrastructure/data-provider/edc-provider/Chart.yaml
+++ b/deployment/infrastructure/data-provider/edc-provider/Chart.yaml
@@ -29,13 +29,13 @@ description: |
A Helm chart for Tractus-X Eclipse Data Space Connector. This chart is a test mock that can be used as edc provider for the DPP applicatiton.
type: application
version: 0.3.3
-appVersion: "0.6.0"
+appVersion: "0.7.0"
home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector
sources:
- https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector
dependencies:
- name: tractusx-connector
- version: "0.6.0"
+ version: "0.7.0"
repository: https://eclipse-tractusx.github.io/charts/dev
condition: enabled
- name: postgresql
diff --git a/deployment/infrastructure/data-provider/edc-provider/values-int.yaml b/deployment/infrastructure/data-provider/edc-provider/values-int.yaml
index 93224e5f1..dc97c71e1 100644
--- a/deployment/infrastructure/data-provider/edc-provider/values-int.yaml
+++ b/deployment/infrastructure/data-provider/edc-provider/values-int.yaml
@@ -32,6 +32,20 @@ tractusx-connector:
participant:
id: ""
+ iatp:
+ # Decentralized IDentifier
+ id: "did:web:portal-backend.int.demo.catena-x.net:api:administration:staticdata:did:BPNL0073928UJ879"
+ trustedIssuers: # array [] that needs to be expand but likely like (sorry unconfirmed on how this is done, as I also would need to check)
+ - "did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp"
+ sts:
+ dim:
+ url: "https://dis-integration-service-prod.eu10.dim.cloud.sap/api/v2.0.0/iatp/catena-x-portal"
+ oauth:
+ token_url: "https://bpnl0073928uj879-dpp.authentication.eu10.hana.ondemand.com/oauth/token"
+ client:
+ id: ""
+ secret_alias: "int-client-secret"
+
controlplane:
enabled: true
endpoints:
@@ -67,26 +81,6 @@ tractusx-connector:
port: 9090
# -- path for incoming api calls
path: /BPNL000000000000/metrics
- # -- observability api with unsecured access, must not be internet facing
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /BPNL000000000000/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
-
- ssi:
- miw:
- url: ""
- authorityId: ""
- oauth:
- tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"
- client:
- id: ""
- secretAlias: "int-client-secret"
- endpoint:
- audience: https://materialpass.int.demo.catena-x.net/BPNL000000000000
## Ingress declaration to expose the network service.
ingresses:
@@ -121,22 +115,33 @@ tractusx-connector:
public:
port: 8081
path: /BPNL000000000000/api/public
+ signaling:
+ port: 8083
+ path: /api/signaling
control:
port: 8083
path: /BPNL000000000000/api/dataplane/control
proxy:
port: 8186
path: /BPNL000000000000/proxy
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /BPNL000000000000/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
+ authKey:
metrics:
port: 9090
path: /BPNL000000000000/metrics
+
+ token:
+ refresh:
+ expiry_seconds: 300
+ expiry_tolerance_seconds: 10
+ # optional URL that can be provided where clients go to refresh tokens.
+ refresh_endpoint:
+ signer:
+ # alias under which the private key is stored in the vault (JWK or PEM format)
+ privatekey_alias: ids-daps_key
+ verifier:
+ # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format)
+ publickey_alias: ids-daps_crt
+
## Ingress declaration to expose the network service.
ingresses:
## Public / Internet facing Ingress
diff --git a/deployment/infrastructure/data-provider/edc-provider/values.yaml b/deployment/infrastructure/data-provider/edc-provider/values.yaml
index a7124399b..c43602a4c 100644
--- a/deployment/infrastructure/data-provider/edc-provider/values.yaml
+++ b/deployment/infrastructure/data-provider/edc-provider/values.yaml
@@ -43,6 +43,20 @@ tractusx-connector:
participant:
id: ""
+ iatp:
+ # Decentralized IDentifier
+ id: "did:web:portal-backend.int.demo.catena-x.net:api:administration:staticdata:did:BPNL0073928UJ879"
+ trustedIssuers: # array [] that needs to be expand but likely like (sorry unconfirmed on how this is done, as I also would need to check)
+ - "did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp"
+ sts:
+ dim:
+ url: "https://dis-integration-service-prod.eu10.dim.cloud.sap/api/v2.0.0/iatp/catena-x-portal"
+ oauth:
+ token_url: "https://bpnl0073928uj879-dpp.authentication.eu10.hana.ondemand.com/oauth/token"
+ client:
+ id: ""
+ secret_alias: "dev-client-secret"
+
controlplane:
enabled: true
image:
@@ -115,30 +129,17 @@ tractusx-connector:
port: 9090
# -- path for incoming api calls
path: /BPNL000000000000/metrics
- # -- observability api with unsecured access, must not be internet facing
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /BPNL000000000000/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
+
businessPartnerValidation:
log:
agreementValidation: true
+ bdrs:
+ # time that a cached BPN/DID resolution map is valid in seconds, default is 10 min
+ cache_validity_seconds: 600
+ server:
+ # URL of the BPN/DID Resolution Service - required:
+ url: "https://bpn-did-resolution-service.int.demo.catena-x.net/api/directory"
- ssi:
- miw:
- url: ""
- authorityId: ""
- oauth:
- tokenurl: "https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token"
- client:
- id: ""
- secretAlias: "dev-client-secret"
- endpoint:
- audience: https://materialpass.dev.demo.catena-x.net/consumer
-
service:
# -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service.
type: ClusterIP
@@ -175,8 +176,10 @@ tractusx-connector:
# -- The container's process will run with the specified uid
runAsUser: 10001
# Extra environment variables that will be pass onto deployment pods
- env: {}
- # ENV_NAME: value
+ env:
+ # ENV_NAME: value
+ # workaround till 0.7.1 chart
+ EDC_IAM_TRUSTED-ISSUER_ISSUER1_ID: did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp
# "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
# ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
@@ -301,7 +304,7 @@ tractusx-connector:
affinity: {}
url:
# -- Explicitly declared url for reaching the ids api (e.g. if ingresses not used)
- ids: ""
+ protocol: ""
dataplane:
enabled: true
image:
@@ -351,22 +354,33 @@ tractusx-connector:
public:
port: 8081
path: /BPNL000000000000/api/public
+ signaling:
+ port: 8083
+ path: /api/signaling
control:
port: 8083
path: /BPNL000000000000/api/dataplane/control
proxy:
port: 8186
path: /BPNL000000000000/proxy
- observability:
- # -- port for incoming API calls
- port: 8085
- # -- observability api, provides /health /readiness and /liveness endpoints
- path: /BPNL000000000000/observability
- # -- allow or disallow insecure access, i.e. access without authentication
- insecure: true
+ authKey:
metrics:
port: 9090
path: /BPNL000000000000/metrics
+
+ token:
+ refresh:
+ expiry_seconds: 300
+ expiry_tolerance_seconds: 10
+ # optional URL that can be provided where clients go to refresh tokens.
+ refresh_endpoint:
+ signer:
+ # alias under which the private key is stored in the vault (JWK or PEM format)
+ privatekey_alias: daps-key-dev
+ verifier:
+ # alias under which the public key is stored in the vault, that belongs to the private key ("privatekey_alias", JWK or PEM format)
+ publickey_alias: daps-crt-dev
+
aws:
endpointOverride: ""
accessKeyId: ""
@@ -403,8 +417,11 @@ tractusx-connector:
# -- The container's process will run with the specified uid
runAsUser: 10001
# Extra environment variables that will be pass onto deployment pods
- env: {}
- # ENV_NAME: value
+ env:
+ # ENV_NAME: value
+ # workaround till 0.7.1 chart
+ EDC_IAM_TRUSTED-ISSUER_ISSUER1_ID: did:web:dim-static-prod.dis-cloud-prod.cfapps.eu10-004.hana.ondemand.com:dim-hosted:2f45795c-d6cc-4038-96c9-63cedc0cd266:holder-iatp
+
# "valueFrom" environment variable references that will be added to deployment pods. Name is templated.
# ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core
@@ -502,19 +519,6 @@ tractusx-connector:
# -- Explicitly declared url for reaching the public api (e.g. if ingresses not used)
public: ""
- # postgresql:
- # jdbcUrl: "jdbc:postgresql://postgresqlprovider:5432/edc"
- # primary:
- # persistence:
- # enabled: false
- # readReplicas:
- # persistence:
- # enabled: false
- # auth:
- # database: "edc"
- # username:
- # password:
-
postgresql:
jdbcUrl: "jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc"
fullnameOverride: ""
diff --git a/docs/RELEASE_USER.md b/docs/RELEASE_USER.md
index c7b74e74d..fb251a51b 100644
--- a/docs/RELEASE_USER.md
+++ b/docs/RELEASE_USER.md
@@ -22,7 +22,27 @@ SPDX-License-Identifier: CC-BY-4.0
-->
# Release Notes Digital Product Pass Application
-User friendly relase notes without especific technical details.
+User friendly relase notes without specific technical details.
+
+
+
+**June 19 2024 (Version 3.1.0)**
+*19.06.2024*
+
+### Updated
+
+#### Support of new data models:
+
+The frontend component from the Digital Product Pass application is now adapted to support the following new models:
+- Digital Product Pass `v2.0.0` to `v5.0.0`
+- Battery Pass `v3.0.1` to `6.0.0`
+- Transmission Pass `v1.0.0` to `3.0.0`
+
+This adaption deprecates and removed the retro-compatibility from the old models.
+
+#### Update licensing for the non-code licensed documentation
+
+There was a change from legal documentation. Instead of Apache-2.0 licensing in documentation, it now supports non-code licensing in license headers and NOTICE sections. This is a default license from the Creative Commons Attribution 4.0 International (CC-BY-4.0).
**May 13 2024 (Version 3.0.0)**
diff --git a/dpp-backend/scripts/logging.ini b/dpp-backend/scripts/logging.ini
index faf2e0712..9273f945e 100644
--- a/dpp-backend/scripts/logging.ini
+++ b/dpp-backend/scripts/logging.ini
@@ -46,3 +46,4 @@ args=(sys.stdout,)
format=%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)s] - %(message)s
;datefmt=%Y-%m-%d %H:%M:%S
datefmt=%H:%M:%S
+
diff --git a/dpp-backend/scripts/requirements.txt b/dpp-backend/scripts/requirements.txt
new file mode 100644
index 000000000..077c95d8a
--- /dev/null
+++ b/dpp-backend/scripts/requirements.txt
@@ -0,0 +1 @@
+requests==2.31.0
\ No newline at end of file
diff --git a/dpp-frontend/entrypoint.sh b/dpp-frontend/entrypoint.sh
index 688f797e3..2488ff6cf 100644
--- a/dpp-frontend/entrypoint.sh
+++ b/dpp-frontend/entrypoint.sh
@@ -38,6 +38,8 @@ do
sed -i 's|API_DECLINE_TIMEOUT|'${API_DECLINE_TIMEOUT}'|g' $file
sed -i 's|APP_API_DELAY|'${API_DELAY}'|g' $file
sed -i 's|APP_API_MAX_RETRIES|'${API_MAX_RETRIES}'|g' $file
+ sed -i 's|APP_IRS_DELAY|'${IRS_DELAY}'|g' $file
+ sed -i 's|APP_IRS_WAITING_TIME|'${IRS_MAX_WAITING_TIME}'|g' $file
sed -i 's|KEYCLOAK_CLIENTID|'${KEYCLOAK_CLIENTID}'|g' $file
sed -i 's|KEYCLOAK_REALM|'${KEYCLOAK_REALM}'|g' $file
sed -i 's|KEYCLOAK_ONLOAD|'${KEYCLOAK_ONLOAD}'|g' $file
diff --git a/dpp-frontend/package-lock.json b/dpp-frontend/package-lock.json
index f41f662dd..d2ab44ce9 100644
--- a/dpp-frontend/package-lock.json
+++ b/dpp-frontend/package-lock.json
@@ -1,17 +1,18 @@
{
"name": "digital-product-pass-frontend",
- "version": "3.0.0",
+ "version": "3.1.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "digital-product-pass-frontend",
- "version": "3.0.0",
+ "version": "3.1.0",
"dependencies": {
"@mdi/font": "5.9.55",
"@popperjs/core": "^2.11.2",
"@vitejs/plugin-vue": "^4.0.0",
"axios": ">=1.6.7",
+ "chart.js": "^4.4.2",
"clipboard": "^2.0.11",
"core-js": "^3.8.3",
"crypto-js": "^4.2.0",
@@ -23,7 +24,7 @@
"vite": ">=4.5.2",
"vite-plugin-vuetify": "^1.0.2",
"vue": "^3.2.47",
- "vue-chartjs": "^5.3.0",
+ "vue-chartjs": "^5.3.1",
"vue-i18n": "9.2.2",
"vue-router": "^4.0.13",
"vue3-json-viewer": "^2.2.2",
@@ -525,8 +526,7 @@
"node_modules/@kurkle/color": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
- "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
- "peer": true
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"node_modules/@mdi/font": {
"version": "5.9.55",
@@ -900,12 +900,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"devOptional": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -940,7 +940,6 @@
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.2.tgz",
"integrity": "sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==",
- "peer": true,
"dependencies": {
"@kurkle/color": "^0.3.0"
},
@@ -1613,9 +1612,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"devOptional": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -2852,9 +2851,9 @@
}
},
"node_modules/vue-chartjs": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.0.tgz",
- "integrity": "sha512-8XqX0JU8vFZ+WA2/knz4z3ThClduni2Nm0BMe2u0mXgTfd9pXrmJ07QBI+WAij5P/aPmPMX54HCE1seWL37ZdQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz",
+ "integrity": "sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A==",
"peerDependencies": {
"chart.js": "^4.1.1",
"vue": "^3.0.0-0 || ^2.7.0"
@@ -3454,8 +3453,7 @@
"@kurkle/color": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz",
- "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==",
- "peer": true
+ "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw=="
},
"@mdi/font": {
"version": "5.9.55"
@@ -3764,12 +3762,12 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"devOptional": true,
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"callforth": {
@@ -3794,7 +3792,6 @@
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.2.tgz",
"integrity": "sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==",
- "peer": true,
"requires": {
"@kurkle/color": "^0.3.0"
}
@@ -4282,9 +4279,9 @@
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"devOptional": true,
"requires": {
"to-regex-range": "^5.0.1"
@@ -5111,9 +5108,9 @@
}
},
"vue-chartjs": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.0.tgz",
- "integrity": "sha512-8XqX0JU8vFZ+WA2/knz4z3ThClduni2Nm0BMe2u0mXgTfd9pXrmJ07QBI+WAij5P/aPmPMX54HCE1seWL37ZdQ==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.1.tgz",
+ "integrity": "sha512-rZjqcHBxKiHrBl0CIvcOlVEBwRhpWAVf6rDU3vUfa7HuSRmGtCslc0Oc8m16oAVuk0erzc1FCtH1VCriHsrz+A==",
"requires": {}
},
"vue-eslint-parser": {
diff --git a/dpp-frontend/package.json b/dpp-frontend/package.json
index 973718f20..e26b6195d 100644
--- a/dpp-frontend/package.json
+++ b/dpp-frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "digital-product-pass-frontend",
- "version": "3.0.0",
+ "version": "3.1.0",
"private": true,
"scripts": {
"serve": "vite --host localhost",
@@ -16,6 +16,7 @@
"@popperjs/core": "^2.11.2",
"@vitejs/plugin-vue": "^4.0.0",
"axios": ">=1.6.7",
+ "chart.js": "^4.4.2",
"clipboard": "^2.0.11",
"core-js": "^3.8.3",
"crypto-js": "^4.2.0",
@@ -27,7 +28,7 @@
"vite": ">=4.5.2",
"vite-plugin-vuetify": "^1.0.2",
"vue": "^3.2.47",
- "vue-chartjs": "^5.3.0",
+ "vue-chartjs": "^5.3.1",
"vue-i18n": "9.2.2",
"vue-router": "^4.0.13",
"vue3-json-viewer": "^2.2.2",
diff --git a/dpp-frontend/src/assets/styles/components/passport/batteryGraph.scss b/dpp-frontend/src/assets/styles/components/passport/batteryGraph.scss
index 6dbb60374..b2cf51747 100644
--- a/dpp-frontend/src/assets/styles/components/passport/batteryGraph.scss
+++ b/dpp-frontend/src/assets/styles/components/passport/batteryGraph.scss
@@ -26,14 +26,12 @@
display: flex;
flex-direction: column;
align-items: center;
- width: 380px;
+ width: 80%;
padding: 7px;
display: flex;
background-color: #f5f5f5;
border-radius: 8px;
- // margin-left: 6px;
- // margin-bottom: 12px;
- margin: 6px 0 12px 6px;
+ margin: 6px 0 12px 12px;
@include background-image(
$background-image-url,
$background-color,
@@ -95,3 +93,10 @@
font-weight: 600;
}
}
+
+@media (max-width: 960px) {
+ .battery-graph {
+ width: 60%;
+ margin: 0 20% 30px 20%;
+ }
+}
diff --git a/dpp-frontend/src/assets/styles/components/passport/cards.scss b/dpp-frontend/src/assets/styles/components/passport/cards.scss
index 105681d1c..eb19c839b 100644
--- a/dpp-frontend/src/assets/styles/components/passport/cards.scss
+++ b/dpp-frontend/src/assets/styles/components/passport/cards.scss
@@ -151,7 +151,7 @@
}
.material-value {
position: absolute;
- font-size: 18px;
+ font-size: 16px;
font-weight: 600;
top: 20px;
left: 50%;
@@ -183,6 +183,11 @@
.card-container {
.materials-container {
width: 50%;
+ .material-container {
+ .material-value {
+ font-size: 14px;
+ }
+ }
}
.co2-container {
width: 30%;
@@ -220,7 +225,7 @@
font-size: 10px;
font-weight: 600;
top: 6px;
- left: 50%;
+ left: 75%;
transform: translate(-50%, 0);
}
}
diff --git a/dpp-frontend/src/assets/styles/components/passport/sections.scss b/dpp-frontend/src/assets/styles/components/passport/sections.scss
index e81af2279..e88938f0b 100644
--- a/dpp-frontend/src/assets/styles/components/passport/sections.scss
+++ b/dpp-frontend/src/assets/styles/components/passport/sections.scss
@@ -104,5 +104,9 @@
.container-width-50 {
width: 100%;
}
+ .chart {
+ padding: 0 10% 20px 10%;
+ }
}
}
+
diff --git a/dpp-frontend/src/components/general/RecursiveAdditionalData.vue b/dpp-frontend/src/components/general/RecursiveAdditionalData.vue
index 293fcc450..6b4170613 100644
--- a/dpp-frontend/src/components/general/RecursiveAdditionalData.vue
+++ b/dpp-frontend/src/components/general/RecursiveAdditionalData.vue
@@ -1,27 +1,3 @@
-
-
@@ -29,7 +5,7 @@
- {{
- section.label.includes("passportView")
- ? $t(`${section.label}`)
- : semanticId ===
- "urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass"
- ? $t(`passportView.tppComponentsNames.${section.label}`)
- : $t(`passportView.dppComponentsNames.${section.label}`)
- }}
+ {{ $t(`passportView.componentsNames.${section.label}`) }}
@@ -48,7 +41,11 @@
:key="index"
:value="section.component"
>
-
+
@@ -57,10 +54,8 @@
\ No newline at end of file
+
diff --git a/dpp-frontend/src/components/passport/BatteryCards.vue b/dpp-frontend/src/components/passport/BatteryCards.vue
index aef6a7e5d..3ab5ddfc5 100644
--- a/dpp-frontend/src/components/passport/BatteryCards.vue
+++ b/dpp-frontend/src/components/passport/BatteryCards.vue
@@ -63,13 +63,15 @@
{{ $t(card.secondLabel) }}
-
-
-
+
+
+
+
+
@@ -144,30 +146,32 @@ export default {
setup() {
return {
- noCollection,
Battery00,
BatteryCd,
+ noCollection,
BatteryHg,
BatteryPb,
};
},
data() {
return {
- separateCollectionImage: "BATTERY_CD",
currentValue:
- this.$props.data.aspect.batteryCycleLife.cycleLifeTestDepthOfDischarge,
- maxValue: this.$props.data.aspect.batteryCycleLife.expectedLifetime,
+ this.$props.data.aspect.performance.rated.lifetime.cycleLifeTesting
+ .depthOfDischarge,
+ maxValue:
+ this.$props.data.aspect.performance.rated.lifetime.cycleLifeTesting
+ .cycles,
cards: [
{
title: "batteryCards.titleGeneral",
label: "batteryCards.labelGeneral",
secondLabel: "batteryCards.secondLabelGeneral",
icon: "general",
- value: this.$props.data.aspect.batteryIdentification
- ? this.$props.data.aspect.batteryIdentification.batteryType
+ value: this.$props.data.aspect.identification
+ ? this.$props.data.aspect.identification.chemistry
: "-",
- secondValue: this.$props.data.aspect.batteryIdentification
- ? this.$props.data.aspect.batteryIdentification.batteryModel
+ secondValue: this.$props.data.aspect.identification
+ ? this.$props.data.aspect.identification.category
: "-",
},
{
@@ -175,14 +179,11 @@ export default {
label: "batteryCards.labelPerformance",
secondLabel: "batteryCards.secondLabelPerformance",
icon: "performance",
- value:
- this.$props.data.aspect.electrochemicalProperties.ratedCapacity,
+ value: this.$props.data.aspect.performance.rated.capacity.value,
valueUnits: "kWh",
secondValueUnits: "kW",
- secondValue: this.$props.data.aspect.electrochemicalProperties
- .batteryPower
- ? this.$props.data.aspect.electrochemicalProperties.batteryPower
- .originalPowerCapability
+ secondValue: this.$props.data.aspect.performance.rated.power
+ ? this.$props.data.aspect.performance.rated.power.value
: "-",
description: {
title: "batteryCards.descriptionPerformanceTitle",
@@ -194,8 +195,9 @@ export default {
label: "batteryCards.labelHealth",
secondLabel: "batteryCards.secondLabelHealth",
icon: "health",
- value: this.$props.data.aspect.stateOfBattery
- ? this.$props.data.aspect.stateOfBattery.stateOfHealth
+ value: this.$props.data.aspect.performance?.rated?.roundTripEfficiency
+ ? this.$props.data.aspect.performance.rated.roundTripEfficiency
+ .depthOfDischarge
: "-",
valueUnits: "%",
secondValue: this.$props.data.aspect.batteryIdentification
@@ -210,37 +212,11 @@ export default {
title: "batteryCards.titleSustainability",
icon: "sustainability",
secondLabel: "batteryCards.secondLabelSustainability",
-
- value: [
- {
- materialPercentageMassFraction: 47,
- materialName: "Ni",
- materialWeight: 2.5,
- },
- {
- materialPercentageMassFraction: 9,
- materialName: "Co",
- materialWeight: 2.5,
- },
- {
- materialPercentageMassFraction: 19,
- materialName: "Li",
- materialWeight: 2.5,
- },
- {
- materialPercentageMassFraction: 0,
- materialName: "Pb",
- materialWeight: 2.5,
- },
- ],
- cathodeCompositionOther: [
- {
- materialPercentageMassFraction: 19,
- materialName: "Pb",
- materialWeight: 2.5,
- },
- ],
- secondValue: this.$props.data.aspect.cO2FootprintTotal,
+ value: this.$props.data.aspect.materials.active,
+ secondValue:
+ this.$props.data.aspect.sustainability.carbonFootprint.length > 0
+ ? this.$props.data.aspect.sustainability.carbonFootprint[0].value
+ : "-",
description: {
title: "batteryCards.descriptionHSustainabilityTitle",
value: "batteryCards.descriptionSustainabilityValue",
@@ -251,14 +227,20 @@ export default {
},
methods: {
- getImageByKey(key) {
+ getImageByKey() {
+ const firstHazardousKey = Object.keys(
+ this.$props.data.aspect.materials.hazardous
+ )[0].toUpperCase();
+
const imageMap = {
- BATTERY_00: this.Battery00,
- BATTERY_CD: this.BatteryCd,
- BATTERY_HG: this.BatteryHg,
- BATTERY_PB: this.BatteryPb,
+ CADMIUM: this.BatteryCd,
+ LEAD: this.BatteryPb,
+ MERCURY: this.BatteryHg,
+ OTHER: this.Battery00,
+ NO_COLLECTION: this.noCollection,
};
- return imageMap.hasOwnProperty(key) ? imageMap[key] : this.noCollection;
+
+ return imageMap[firstHazardousKey] || this.noCollection;
},
callIconFinder(icon) {
return passportUtil.iconFinder(icon);
diff --git a/dpp-frontend/src/components/passport/ElementChart.vue b/dpp-frontend/src/components/passport/ElementChart.vue
index 905dfbd5d..26fa85d03 100644
--- a/dpp-frontend/src/components/passport/ElementChart.vue
+++ b/dpp-frontend/src/components/passport/ElementChart.vue
@@ -27,13 +27,11 @@
- {{ material.materialName }}
-
- {{ material.materialPercentageMassFraction }}%
-
+ {{ key }}
+ {{ material.recycled }}%
@@ -46,8 +44,32 @@ export default {
props: {
data: {
type: Object,
- default: Object,
+ default: () => ({}),
},
},
+ data() {
+ return {
+ propsData: this.$props.data,
+ activeComposition: {},
+ };
+ },
+
+ methods: {
+ parseActiveComposition(activeData) {
+ const data = JSON.parse(JSON.stringify(activeData)); // Clone to avoid direct mutation
+
+ // Filter out top-level array properties
+ Object.keys(data).forEach((key) => {
+ if (Array.isArray(data[key])) {
+ delete data[key]; // Remove array properties
+ }
+ });
+
+ this.activeComposition = data; // Assign the filtered data to activeComposition
+ },
+ },
+ mounted() {
+ this.parseActiveComposition(this.propsData);
+ },
};
diff --git a/dpp-frontend/src/components/passport/Field.vue b/dpp-frontend/src/components/passport/Field.vue
index 6620516ea..cace84f01 100644
--- a/dpp-frontend/src/components/passport/Field.vue
+++ b/dpp-frontend/src/components/passport/Field.vue
@@ -133,4 +133,3 @@ export default {
},
};
-
diff --git a/dpp-frontend/src/components/passport/GeneralCards.vue b/dpp-frontend/src/components/passport/GeneralCards.vue
index f7f0a9455..1af66d502 100644
--- a/dpp-frontend/src/components/passport/GeneralCards.vue
+++ b/dpp-frontend/src/components/passport/GeneralCards.vue
@@ -21,7 +21,6 @@
SPDX-License-Identifier: Apache-2.0
-->
-
@@ -100,11 +99,11 @@ export default {
label: "generalCards.productName",
secondLabel: "generalCards.productType",
icon: "mdi-pound",
- value: this.$props.data.aspect.typology
- ? this.$props.data.aspect.typology.shortName
+ value: this.$props.data.aspect.identification
+ ? this.$props.data.aspect.identification.type.nameAtManufacturer
: "-",
- secondValue: this.$props.data.aspect.typology
- ? this.$props.data.aspect.typology.class.code
+ secondValue: this.$props.data.aspect.identification
+ ? this.$props.data.aspect.identification.type.manufacturerPartId
: "-",
},
{
@@ -140,15 +139,12 @@ export default {
label: "generalCards.totalCo2Footprint",
secondLabel: "generalCards.warrantyPeriod",
icon: "mdi-leaf",
- value:
- this.$props.data.aspect.sustainability &&
- this.$props.data.aspect.sustainability["PEF"] &&
- this.$props.data.aspect.sustainability["PEF"].carbon
- ? this.$props.data.aspect.sustainability["PEF"].carbon[0].value
- : "-",
- valueUnits: (this.$props.data.aspect.sustainability["PEF"].carbon[0].unit !== ""
- ? this.$props.data.aspect.sustainability["PEF"].carbon[0].unit
- : "t CO₂") + " Total",
+ value: this.$props.data.aspect.sustainability?.productFootprint
+ ?.carbon
+ ? this.$props.data.aspect.sustainability?.productFootprint
+ ?.carbon[0].value
+ : "-",
+ valueUnits: "kg CO2 / kWh",
secondValue: this.$props.data.aspect.commercial
? this.$props.data.aspect.commercial.warranty
: "-",
diff --git a/dpp-frontend/src/components/passport/TransmissionCards.vue b/dpp-frontend/src/components/passport/TransmissionCards.vue
index be44094e7..87f33c294 100644
--- a/dpp-frontend/src/components/passport/TransmissionCards.vue
+++ b/dpp-frontend/src/components/passport/TransmissionCards.vue
@@ -21,7 +21,6 @@
SPDX-License-Identifier: Apache-2.0
-->
-
@@ -98,26 +97,26 @@ export default {
{
title: "generalCards.titleGeneral",
label: "generalCards.productName",
- secondLabel: "generalCards.productType",
+ secondLabel: "transmissionCards.partID",
icon: "mdi-pound",
- value: this.$props.data.aspect.generalInformation
- ? this.$props.data.aspect.generalInformation.productDescription
- : "-",
- secondValue: this.$props.data.aspect.generalInformation
- ? this.$props.data.aspect.generalInformation.productType
- : "-",
+ value:
+ this.$props.data.aspect.generic?.identification?.type
+ ?.nameAtManufacturer,
+ secondValue:
+ this.$props.data.aspect.generic?.identification?.type
+ ?.manufacturerPartId,
},
{
title: "generalCards.titleManufacturing",
label: "generalCards.manufacturerId",
secondLabel: "generalCards.dateOfManufacturing",
icon: "mdi-chart-timeline-variant-shimmer",
- value: this.$props.data.aspect.identification
- ? this.$props.data.aspect.identification.manufacturerId
- : "-",
- secondValue: this.$props.data.aspect.identification
- ? this.$props.data.aspect.identification.dataMatrixCode
- : "-",
+ value:
+ this.$props.data.aspect.generic?.operation?.manufacturer
+ ?.manufacturer,
+ secondValue:
+ this.$props.data.aspect.generic?.operation?.manufacturer
+ ?.manufacturingDate,
description: {
title: "Manufacturing",
value: "Description of the manufacturing",
@@ -128,9 +127,8 @@ export default {
label: "transmissionCards.driveType",
secondLabel: "transmissionCards.oilType",
icon: "mdi-aspect",
- value: this.$props.data.aspect.productSpecificParameters.driveType,
- secondValue:
- this.$props.data.aspect.productSpecificParameters.oilType,
+ value: this.$props.data.aspect.specific?.driveType?.[0],
+ secondValue: this.$props.data.aspect.specific?.oil?.oilType?.[0],
description: {
title: "Specific parameters",
value: "Description of the Specific parameters",
@@ -138,20 +136,20 @@ export default {
},
{
title: "generalCards.titleSustainability",
- label: "generalCards.totalCo2Footprint",
+ label: "transmissionCards.carbonFootprint",
secondLabel: "generalCards.warrantyPeriod",
icon: "mdi-leaf",
value:
- this.$props.data.aspect.sustainability &&
- this.$props.data.aspect.sustainability.carbonFootprint
- ? this.$props.data.aspect.sustainability.carbonFootprint
- .co2FootprintTotal
- : "-",
- valueUnits: "t CO₂ Total",
+ this.$props.data.aspect.generic?.sustainability?.productFootprint
+ ?.carbon?.[0]?.value,
+
+ valueUnits:
+ this.$props.data.aspect.generic?.sustainability?.productFootprint
+ ?.carbon?.[0]?.unit,
secondValue:
- this.$props.data.aspect.generalInformation.warrantyPeriod,
- secondValueUnits: this.$props.data.aspect.generalInformation
- .warrantyPeriodUnits
+ this.$props.data.aspect.generic?.characteristics?.warranty,
+ secondValueUnits: this.$props.data.aspect.generic?.characteristics
+ ?.warranty
? "months"
: "",
description: {
diff --git a/dpp-frontend/src/components/passport/sections/Characteristics.vue b/dpp-frontend/src/components/passport/sections/Characteristics.vue
index 5b30ad12f..ece603d81 100644
--- a/dpp-frontend/src/components/passport/sections/Characteristics.vue
+++ b/dpp-frontend/src/components/passport/sections/Characteristics.vue
@@ -26,13 +26,13 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -131,13 +192,28 @@ export default {
},
data() {
return {
- propsData: this.$props.data.aspect.characteristics,
+ propsData: this.$props.data.aspect?.characteristics || {},
+ tppData: this.$props.data.aspect?.generic?.characteristics || {},
};
},
+ computed: {
+ callCurrentData() {
+ return passportUtil.currentData(this.tppData, this.propsData);
+ },
+ },
methods: {
+ callIsObject(value) {
+ return passportUtil.isObject(value);
+ },
callIconFinder(unit) {
return passportUtil.iconFinder(unit);
},
+ callHasContent(data) {
+ return passportUtil.hasContent(data);
+ },
+ callIsString(value) {
+ return passportUtil.isString(value);
+ },
},
};
diff --git a/dpp-frontend/src/components/passport/sections/Commercial.vue b/dpp-frontend/src/components/passport/sections/Commercial.vue
index 1219b261e..1fb400658 100644
--- a/dpp-frontend/src/components/passport/sections/Commercial.vue
+++ b/dpp-frontend/src/components/passport/sections/Commercial.vue
@@ -27,11 +27,22 @@
-
+
+
+
+
+
+
+
+
@@ -55,9 +66,15 @@ export default {
},
data() {
return {
- propsData: this.$props.data.aspect.commercial,
+ propsData: this.$props.data.aspect.commercial || {},
+ tppData: this.$props.data.aspect.generic?.commercial || {},
};
},
+ computed: {
+ callCurrentData() {
+ return passportUtil.currentData(this.tppData, this.propsData);
+ },
+ },
methods: {
callIconFinder(unit) {
return passportUtil.iconFinder(unit);
diff --git a/dpp-frontend/src/components/passport/sections/Conformity.vue b/dpp-frontend/src/components/passport/sections/Conformity.vue
new file mode 100644
index 000000000..76378c7d9
--- /dev/null
+++ b/dpp-frontend/src/components/passport/sections/Conformity.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/Handling.vue b/dpp-frontend/src/components/passport/sections/Handling.vue
index 389a80f28..dcc3b5c42 100644
--- a/dpp-frontend/src/components/passport/sections/Handling.vue
+++ b/dpp-frontend/src/components/passport/sections/Handling.vue
@@ -26,98 +26,38 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
@@ -141,9 +81,15 @@ export default {
},
data() {
return {
- propsData: this.$props.data.aspect.handling,
+ propsData: this.$props.data.aspect.handling || {},
+ tppData: this.$props.data.aspect?.generic?.handling || {},
};
},
+ computed: {
+ callCurrentData() {
+ return passportUtil.currentData(this.tppData, this.propsData);
+ },
+ },
methods: {
callIconFinder(icon) {
return passportUtil.iconFinder(icon);
diff --git a/dpp-frontend/src/components/passport/sections/Identification.vue b/dpp-frontend/src/components/passport/sections/Identification.vue
index 9de6ca364..77ceb7cf8 100644
--- a/dpp-frontend/src/components/passport/sections/Identification.vue
+++ b/dpp-frontend/src/components/passport/sections/Identification.vue
@@ -21,82 +21,285 @@
SPDX-License-Identifier: Apache-2.0
-->
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+ {{ $t("sections.identification.description") }}
+
+
+ {{ attr.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.identification.description") }}
+
+
+ {{ attr.classificationDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+ {{ $t("sections.identification.description") }}
+
+
+ {{ attr.description }}
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/Materials.vue b/dpp-frontend/src/components/passport/sections/Materials.vue
new file mode 100644
index 000000000..49865ca6d
--- /dev/null
+++ b/dpp-frontend/src/components/passport/sections/Materials.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.materials.hazardous") }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.materials.exemption") }}
+
+
+ {{ attr.exemption }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.materials.statement") }}
+
+
+ {{ attr.hazardClassification.statement }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.materials.composition") }}
+
+
+
+
+
+
+
+
+
+ mdi-battery-outline
+
+
+
+
+
+ {{ detail.location }}
+
+
+
+
+
+ {{ component.label }}
+
+
+
+
+
+
+ {{ chemistry }}
+
+
+
+
+
+
+
+ {{ $t("sections.materials.recyclateContent") }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/Metadata.vue b/dpp-frontend/src/components/passport/sections/Metadata.vue
index 21ab8e5a5..c8be0ad11 100644
--- a/dpp-frontend/src/components/passport/sections/Metadata.vue
+++ b/dpp-frontend/src/components/passport/sections/Metadata.vue
@@ -21,53 +21,131 @@
SPDX-License-Identifier: Apache-2.0
-->
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
@@ -91,13 +169,22 @@ export default {
},
data() {
return {
- propsData: this.$props.data.aspect.metadata,
+ propsData: this.$props.data.aspect?.metadata || {},
+ tppData: this.$props.data.aspect?.generic?.metadata || {},
};
},
+ computed: {
+ callCurrentData() {
+ return passportUtil.currentData(this.tppData, this.propsData);
+ },
+ },
methods: {
callIconFinder(unit) {
return passportUtil.iconFinder(unit);
},
+ callHasContent(data) {
+ return passportUtil.hasContent(data);
+ },
},
};
diff --git a/dpp-frontend/src/components/passport/sections/Operation.vue b/dpp-frontend/src/components/passport/sections/Operation.vue
index c2fdf0d43..a4e282d1d 100644
--- a/dpp-frontend/src/components/passport/sections/Operation.vue
+++ b/dpp-frontend/src/components/passport/sections/Operation.vue
@@ -26,36 +26,110 @@
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -81,21 +155,24 @@ export default {
},
data() {
return {
- propsData: this.$props.data.aspect.operation,
+ propsData: this.$props.data.aspect.operation || {},
+ tppData: this.$props.data.aspect.generic?.operation || {},
};
},
+ computed: {
+ callCurrentData() {
+ return passportUtil.currentData(this.tppData, this.propsData);
+ },
+ },
methods: {
+ callHasContent(...args) {
+ return passportUtil.hasContent(...args);
+ },
callIconFinder(unit) {
return passportUtil.iconFinder(unit);
},
- processDateTime(dateTimeString) {
- // Check if the string contains 'T'
- if (dateTimeString.includes("T")) {
- // Replace 'T' with ', time: ' and return the new string
- return dateTimeString.replace("T", ", time: ");
- }
- // Return the original string if 'T' is not found
- return dateTimeString;
+ callProcessDateTime(dateTimeString) {
+ return passportUtil.processDateTime(dateTimeString);
},
},
};
diff --git a/dpp-frontend/src/components/passport/sections/Performance.vue b/dpp-frontend/src/components/passport/sections/Performance.vue
new file mode 100644
index 000000000..a7059e80b
--- /dev/null
+++ b/dpp-frontend/src/components/passport/sections/Performance.vue
@@ -0,0 +1,674 @@
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.rated") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.lifetime") }}
+
+
+
+
+
+
+ {{ $t("sections.performance.cycleLifeTesting") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.power") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.voltage") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.energy") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.capacity") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.dynamic") }}
+
+
+
+
+
+
+ {{ $t("sections.performance.roundTripEfficiency") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.operatingEnvironment") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.performanceDocument") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.power") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.negativeEvents") }}
+
+
+
+
+
+
+
+ {{ $t("sections.performance.resistance") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.capacity") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.performance.energy") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/ProductSpecificParameters.vue b/dpp-frontend/src/components/passport/sections/ProductSpecificParameters.vue
index 84bcd35d5..919114196 100644
--- a/dpp-frontend/src/components/passport/sections/ProductSpecificParameters.vue
+++ b/dpp-frontend/src/components/passport/sections/ProductSpecificParameters.vue
@@ -26,8 +26,44 @@
-
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
- {{ $t('sections.productSpecificParameters.standardGearRatio') }}
+
+
+ {{ $t("sections.productSpecificParameters.standardGearRatio") }}
+
-
-
+
+
+
+
- {{ $t('sections.productSpecificParameters.speedResistance') }}
+
+ {{ $t("sections.productSpecificParameters.speedResistance") }}
+
-
-
+
+
+
+
-
-
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.torque") }}
+
+
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.power") }}
+
+
+
+
+
+
+
+
+
+
+
@@ -154,6 +297,9 @@ export default {
callIconFinder(property) {
return passportUtil.iconFinder(property);
},
+ callHasContent(data) {
+ return passportUtil.hasContent(data);
+ },
},
};
diff --git a/dpp-frontend/src/components/passport/sections/Safety.vue b/dpp-frontend/src/components/passport/sections/Safety.vue
new file mode 100644
index 000000000..fdb6a2afc
--- /dev/null
+++ b/dpp-frontend/src/components/passport/sections/Safety.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/Sources.vue b/dpp-frontend/src/components/passport/sections/Sources.vue
index 8ec57576c..171e6e245 100644
--- a/dpp-frontend/src/components/passport/sections/Sources.vue
+++ b/dpp-frontend/src/components/passport/sections/Sources.vue
@@ -26,10 +26,10 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.standardGearRatio") }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.speedResistance") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.torque") }}
+
+
+
+
+
+
+
+ {{ $t("sections.productSpecificParameters.power") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dpp-frontend/src/components/passport/sections/Sustainability.vue b/dpp-frontend/src/components/passport/sections/Sustainability.vue
index 653f52abd..c4246e328 100644
--- a/dpp-frontend/src/components/passport/sections/Sustainability.vue
+++ b/dpp-frontend/src/components/passport/sections/Sustainability.vue
@@ -23,12 +23,50 @@
-->
-
+
-
-
-
+
+
+
+ {{ $t("sections.sustainability.material") }}
+
+
+
+
+ {{ $t("sections.sustainability.documents") }}
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.sustainability.carbon") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -107,8 +277,8 @@
-
-
+
+
+
+
+ {{ $t("sections.sustainability.environmental") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t("sections.sustainability.status") }}
+
+
+
+
+
+
-
+
+
+ {{ $t("sections.sustainability.carbonFootprint") }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -154,20 +459,23 @@
/>
-
+
-
@@ -182,8 +490,8 @@
-
-
+
+
+
diff --git a/dpp-frontend/src/config/templates/passports.json b/dpp-frontend/src/config/templates/passports.json
index d8e1949fb..26d0d0480 100644
--- a/dpp-frontend/src/config/templates/passports.json
+++ b/dpp-frontend/src/config/templates/passports.json
@@ -1,35 +1,28 @@
{
- "urn:samm:io.catenax.generic.digital_product_passport:2.0.0#DigitalProductPassport": {
- "typology": {
- "shortName": null,
- "class": {
- "definition": null,
- "code": null
- },
- "longName": null
- },
+ "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport": {
"metadata": {
+ "backupReference": null,
+ "registrationIdentifier": null,
+ "economicOperatorId": null,
+ "lastModification": null,
"predecessor": null,
"issueDate": null,
"version": null,
- "economicOperator": {
- "legitimization": null,
- "identification": null
- },
+ "passportIdentifier": null,
"status": null,
"expirationDate": null
},
"characteristics": {
+ "generalPerformanceClass": null,
+ "physicalState": null,
"physicalDimension": {
- "grossWeight": {
+ "volume": {
"value": null,
"unit": null
},
- "weightOrVolume": {
- "left": {
- "value": null,
- "unit": null
- }
+ "grossWeight": {
+ "value": null,
+ "unit": null
},
"diameter": {
"value": null,
@@ -47,6 +40,10 @@
"value": null,
"unit": null
},
+ "weight": {
+ "value": null,
+ "unit": null
+ },
"height": {
"value": null,
"unit": null
@@ -58,18 +55,37 @@
"unit": null,
"key": null
}
- ],
- "physicalState": null
+ ]
},
"commercial": {
- "placedOnMarket": null
+ "placedOnMarket": null,
+ "purpose": [null]
},
"identification": {
- "localIdentifier": {
- "value": null,
- "key": null
+ "batch": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "codes": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "type": {
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
},
- "additionalCode": [
+ "classification": [
+ {
+ "classificationStandard": null,
+ "classificationID": null,
+ "classificationDescription": null
+ }
+ ],
+ "serial": [
{
"value": null,
"key": null
@@ -80,594 +96,1232 @@
"carrierLayout": null
}
},
- "sources": [],
- "handling": {
- "spareParts": {
- "left": {
- "producer": [
- {
- "id": null
- }
- ],
- "part": [
- {
- "name": null,
- "gtin": null
- }
- ]
- }
- },
- "substanceOfConcern": {
- "left": [
+ "sources": [
+ {
+ "header": null,
+ "category": null,
+ "type": null,
+ "content": null
+ }
+ ],
+ "materials": {
+ "substancesOfConcern": {
+ "applicable": null,
+ "content": [
{
- "name": {
- "name": null,
- "type": null
- },
- "location": null,
"unit": null,
- "concentration": {
- "left": [
- {
- "max": null,
- "min": null
- }
- ]
+ "hazardClassification": {
+ "category": null,
+ "statement": null,
+ "class": null
},
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentrationRange": [
+ {
+ "max": null,
+ "min": null
+ }
+ ],
+ "location": null,
+ "concentration": null,
"exemption": null,
"id": [
{
"type": null,
+ "name": null,
"id": null
}
]
}
]
- }
- },
- "additionalData": [],
- "sustainability": {
- "PEF": {
- "carbon": [
- {
- "lifecycle": null,
- "rulebook": null,
- "unit": null,
- "type": null,
- "value": null
- }
- ],
- "carbon2": {
- "lifecycle": null,
- "rulebook": null,
- "unit": null,
- "type": null,
- "value": null
- },
- "environmental": [
- {
- "lifecycle": null,
- "rulebook": null,
- "unit": null,
- "type": null,
- "value": null
- }
- ]
},
- "state": null,
- "material": {
- "left": [
+ "materialComposition": {
+ "applicable": null,
+ "content": [
{
- "name": {
- "name": null,
- "type": null
- },
"unit": null,
"recycled": null,
+ "critical": null,
+ "renewable": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentration": null,
"id": [
{
"type": null,
+ "name": null,
"id": null
}
- ],
- "value": null,
- "renewable": null
+ ]
}
]
- },
- "critical": {
- "left": [
- null
+ }
+ },
+ "handling": {
+ "applicable": null,
+ "content": {
+ "producer": [
+ {
+ "id": null
+ }
+ ],
+ "sparePart": [
+ {
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
+ }
]
}
},
+ "additionalData": [
+ {
+ "description": null,
+ "label": null,
+ "type": {
+ "typeUnit": null,
+ "dataType": null
+ },
+ "data": null,
+ "children": [
+ {
+ "description": null,
+ "label": null,
+ "type": {
+ "typeUnit": null,
+ "dataType": null
+ },
+ "data": null
+ }
+ ]
+ }
+ ],
"operation": {
- "importer": {
- "left": {
+ "import": {
+ "applicable": null,
+ "content": {
"eori": null,
"id": null
}
},
+ "other": {
+ "id": null,
+ "role": null
+ },
"manufacturer": {
- "facility": null,
+ "facility": [
+ {
+ "facility": null
+ }
+ ],
"manufacturingDate": null,
"manufacturer": null
}
+ },
+ "sustainability": {
+ "reparabilityScore": null,
+ "productFootprint": {
+ "material": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "carbon": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "environmental": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ]
+ },
+ "status": null,
+ "durabilityScore": null
}
},
- "urn:bamm:io.catenax.transmission.transmission_pass:1.0.0#TransmissionPass": {
- "productSpecificParameters": {
- "torqueConverter": null,
- "driveType": null,
- "oilType": null,
- "spreading": null,
- "torque": null,
- "power": null,
- "standardGearRatio": {
- "gear": null,
- "ratio": null
- },
- "oilCapacity": null,
- "electricPerformance": null,
- "speedResistance": {
- "speed": null,
- "gear": null
- }
- },
- "instructions": {
- "packagingInstructions": [
- {
- "documentTitle": null,
- "documentLink": null
- }
- ],
- "transportationInstructions": [
+ "urn:samm:io.catenax.transmission.transmission_pass:3.0.0#TransmissionPass": {
+ "specific": {
+ "serviceHistory": [
{
- "documentTitle": null,
- "documentLink": null
+ "contentType": null,
+ "header": null,
+ "content": null
}
],
- "dismantlingProcedure": [
+ "oil": {
+ "oilType": [null],
+ "oilCapacity": null
+ },
+ "torqueConverter": [null],
+ "driveType": [null],
+ "spreading": null,
+ "torque": null,
+ "power": null,
+ "standardGearRatio": [
{
- "documentTitle": null,
- "documentLink": null
+ "gearRatio": null,
+ "gear": null
}
],
- "safetyMeasures": [
+ "speedResistance": [
{
- "documentTitle": null,
- "documentLink": null
+ "ratedSpeed": null,
+ "gear": null
}
],
- "vehicleDismantlingProcedure": [
- {
- "documentTitle": null,
- "documentLink": null
- }
- ]
- },
- "identification": {
- "manufacturerId": null,
- "localIdentifiers": [
- {
- "value": null,
- "key": null
+ "electricalPerformance": {
+ "applicable": null,
+ "electricalMachine": {
+ "torque": {
+ "max": null,
+ "maximumAvailability": null,
+ "continuous": null
+ },
+ "power": {
+ "max": null,
+ "continuous": null,
+ "maximumAvailability": null
+ },
+ "speed": null,
+ "voltage": null
}
- ],
- "dataMatrixCode": null
- },
- "sparePartSupplier": [
- {
- "supplierContact": {
- "faxNumber": null,
- "website": null,
- "phoneNumber": null,
- "email": null
- },
- "supplierId": null,
- "sparePartName": null
}
- ],
- "stateOfHealth": {
- "serviceHistory": null,
- "expectedLifespan": null,
- "remanufacturing": {
- "remanufacturingDate": null,
- "productStatusValue": null
- }
- },
- "generalInformation": {
- "additionalInformation": null,
- "physicalDimensionsProperty": {
- "width": null,
- "length": null,
- "weight": null,
- "diameter": null,
- "height": null
- },
- "warrantyPeriod": null,
- "productDescription": null,
- "productType": null
},
- "sustainability": {
- "substancesOfConcern": null,
- "responsibleSourcingDocument": [
- {
- "documentTitle": null,
- "documentLink": null
- }
- ],
- "recyclateContent": {
- "nickel": null,
- "lithium": null,
- "cobalt": null,
- "otherSubstance": [
- {
- "substancePercentage": null,
- "substanceName": null
+ "generic": {
+ "characteristics": {
+ "physicalDimension": {
+ "volume": {
+ "value": null,
+ "unit": null
+ },
+ "grossWeight": {
+ "value": null,
+ "unit": null
+ },
+ "diameter": {
+ "value": null,
+ "unit": null
+ },
+ "grossVolume": {
+ "value": null,
+ "unit": null
+ },
+ "width": {
+ "value": null,
+ "unit": null
+ },
+ "length": {
+ "value": null,
+ "unit": null
+ },
+ "weight": {
+ "value": null,
+ "unit": null
+ },
+ "height": {
+ "value": null,
+ "unit": null
}
- ]
+ },
+ "warranty": null,
+ "lifeTime": null
+ },
+ "metadata": {
+ "backupReference": null,
+ "registrationIdentifier": null,
+ "economicOperatorId": null,
+ "lastModification": null,
+ "predecessor": null,
+ "issueDate": null,
+ "version": null,
+ "passportIdentifier": null,
+ "status": null,
+ "expirationDate": null
},
- "criticalRawMaterials": null,
- "carbonFootprint": {
- "crossSectoralStandardsUsed": [
+ "commercial": {
+ "placedOnMarket": null,
+ "purpose": [null]
+ },
+ "identification": {
+ "batch": [
{
- "crossSectoralStandard": null
+ "value": null,
+ "key": null
}
],
- "co2FootprintTotal": null,
- "productOrSectorSpecificRules": [
+ "codes": [
{
- "operator": null,
- "ruleNames": null,
- "otherOperatorName": null
+ "value": null,
+ "key": null
}
- ]
- }
- }
- },
- "urn:bamm:io.catenax.battery.battery_pass:3.0.1#BatteryPass": {
- "electrochemicalProperties": {
- "ratedCapacity": null,
- "batteryEnergy": {
- "energyRoundtripEfficiencyChange": null,
- "maximumAllowedBatteryEnergy": null,
- "energyRoundtripEfficiency": null
- },
- "ratioMaximumAllowedBatteryPowerAndMaximumAllowedBatteryEnergy": null,
- "batteryVoltage": {
- "nominalVoltage": null,
- "maxVoltage": null,
- "minVoltage": null
- },
- "internalResistance": {
- "cellInternalResistance": null,
- "packInternalResistanceIncrease": null,
- "packInternalResistance": null
- },
- "capacityThresholdExhaustion": null,
- "batteryPower": {
- "powerFade": null,
- "originalPowerCapability": null,
- "originalPowerCapabilityLimits": null,
- "maximumAllowedBatteryPower": null,
- "powerCapabilityAt20Charge": null,
- "powerCapabilityAt80Charge": null
- },
- "capacityFade": null
- },
- "document": {
- "responsibleSourcing": [
- {
- "title": null,
- "fileLocation": null
- },
- {
- "title": null,
- "fileLocation": null
- },
- {
- "title": null,
- "fileLocation": null
- },
- {
- "title": null,
- "fileLocation": null
- },
- {
- "title": null,
- "fileLocation": null
- },
- {
- "title": null,
- "fileLocation": null
+ ],
+ "type": {
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
},
- {
- "title": null,
- "fileLocation": null
- }
- ],
- "packagingInstructions": [
- {
- "title": null,
- "fileLocation": null
+ "classification": [
+ {
+ "classificationStandard": null,
+ "classificationID": null,
+ "classificationDescription": null
+ }
+ ],
+ "serial": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "dataCarrier": {
+ "carrierType": null,
+ "carrierLayout": null
}
- ],
- "transportationInstructions": [
+ },
+ "sources": [
{
- "title": null,
- "fileLocation": null
+ "header": null,
+ "category": null,
+ "type": null,
+ "content": null
}
],
- "vehicleDismantlingProcedure": [
- {
- "title": null,
- "fileLocation": null
- }
- ],
- "testReportsResults": [
- {
- "title": null,
- "fileLocation": null
- }
- ],
- "batteryDismantlingProcedure": [
- {
- "title": null,
- "fileLocation": null
- }
- ],
- "safetyMeasures": [
- {
- "title": null,
- "fileLocation": null
- }
- ],
- "declarationOfConformity": [
- {
- "title": null,
- "fileLocation": null
- }
- ]
- },
- "datePlacedOnMarket": null,
- "cellChemistry": {
- "electrolyteComposition": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
- }
- ],
- "anodeCompositionOther": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "materials": {
+ "substancesOfConcern": {
+ "applicable": null,
+ "content": [
+ {
+ "unit": null,
+ "hazardClassification": {
+ "category": null,
+ "statement": null,
+ "class": null
+ },
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentrationRange": [
+ {
+ "max": null,
+ "min": null
+ }
+ ],
+ "location": null,
+ "concentration": null,
+ "exemption": null,
+ "id": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ]
+ }
+ ]
+ },
+ "materialComposition": {
+ "applicable": null,
+ "content": [
+ {
+ "unit": null,
+ "recycled": null,
+ "critical": null,
+ "renewable": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentration": null,
+ "id": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ]
+ }
+ ]
}
- ],
- "recyclateContentActiveMaterials": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ },
+ "handling": {
+ "applicable": null,
+ "content": {
+ "producer": [
+ {
+ "id": null
+ }
+ ],
+ "sparePart": [
+ {
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
+ }
+ ]
}
- ],
- "anodeActiveMaterials": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ },
+ "operation": {
+ "import": {
+ "applicable": null,
+ "content": {
+ "eori": null,
+ "id": null
+ }
+ },
+ "other": {
+ "id": null,
+ "role": null
+ },
+ "manufacturer": {
+ "facility": [
+ {
+ "facility": null
+ }
+ ],
+ "manufacturingDate": null,
+ "manufacturer": null
}
- ],
- "cathodeActiveMaterials": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ },
+ "sustainability": {
+ "reparabilityScore": null,
+ "productFootprint": {
+ "material": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "carbon": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "environmental": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ]
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "status": null,
+ "durabilityScore": null
+ }
+ }
+ },
+ "urn:samm:io.catenax.battery.battery_pass:6.0.0#BatteryPass": {
+ "characteristics": {
+ "physicalDimension": {
+ "length": {
+ "value": null,
+ "unit": null
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "width": {
+ "value": null,
+ "unit": null
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
- }
- ],
- "cathodeCompositionOther": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "weight": {
+ "value": null,
+ "unit": null
+ },
+ "height": {
+ "value": null,
+ "unit": null
}
- ]
- },
- "physicalDimensions": {
- "length": null,
- "width": null,
- "weight": null,
- "diameter": null,
- "height": null
+ },
+ "warranty": {
+ "lifeValue": null,
+ "lifeUnit": null
+ }
},
- "temperatureRangeIdleState": {
- "temperatureRangeIdleStateUpperLimit": null,
- "temperatureRangeIdleStateLowerLimit": null
+ "metadata": {
+ "backupReference": null,
+ "registrationIdentifier": null,
+ "economicOperatorId": null,
+ "lastModification": null,
+ "predecessor": null,
+ "issueDate": null,
+ "version": null,
+ "passportIdentifier": null,
+ "status": null,
+ "expirationDate": null
},
- "batteryCycleLife": {
- "cycleLifeTestCRate": null,
- "cycleLifeTestDepthOfDischarge": null,
- "expectedLifetime": null
+ "commercial": {
+ "placedOnMarket": null,
+ "purpose": [null]
},
- "manufacturer": {
- "name": null,
- "contact": {
- "faxNumber": null,
- "website": null,
- "phoneNumber": null,
- "email": null
+ "identification": {
+ "chemistry": null,
+ "idDmc": null,
+ "identification": {
+ "batch": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "codes": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "type": {
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
+ },
+ "classification": [
+ {
+ "classificationStandard": null,
+ "classificationID": null,
+ "classificationDescription": null
+ }
+ ],
+ "serial": [
+ {
+ "value": null,
+ "key": null
+ }
+ ],
+ "dataCarrier": {
+ "carrierType": null,
+ "carrierLayout": null
+ }
},
- "address": {
- "locality": {
- "value": null,
- "technicalKey": null
+ "category": null
+ },
+ "performance": {
+ "rated": {
+ "roundTripEfficiency": {
+ "depthOfDischarge": null,
+ "temperature": null,
+ "50PercentLife": null,
+ "initial": null
+ },
+ "selfDischargingRate": null,
+ "performanceDocument": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "testReport": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "temperature": {
+ "lower": null,
+ "upper": null
},
- "country": {
- "shortName": null
+ "lifetime": {
+ "report": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "cycleLifeTesting": {
+ "temperature": null,
+ "depthOfDischarge": null,
+ "appliedDischargeRate": null,
+ "cycles": null,
+ "appliedChargeRate": null
+ },
+ "expectedYears": null
},
- "postCode": {
+ "power": {
+ "at20SoC": null,
+ "temperature": null,
"value": null,
- "technicalKey": null
+ "at80SoC": null
+ },
+ "resistance": {
+ "temperature": null,
+ "cell": null,
+ "pack": null,
+ "module": null
+ },
+ "voltage": {
+ "temperature": null,
+ "min": null,
+ "nominal": null,
+ "max": null
},
- "thoroughfare": {
+ "energy": {
+ "temperature": null,
+ "value": null
+ },
+ "capacity": {
+ "temperature": null,
"value": null,
- "number": null,
- "technicalKey": null
+ "thresholdExhaustion": null
+ }
+ },
+ "dynamic": {
+ "selfDischargingRate": null,
+ "roundTripEfficiency": {
+ "remaining": {
+ "value": null,
+ "time": null
+ },
+ "fade": {
+ "value": null,
+ "time": null
+ }
},
- "premise": {
+ "operatingEnvironment": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "stateOfCharge": {
"value": null,
- "technicalKey": null
+ "time": null
},
- "postalDeliveryPoint": {
+ "performanceDocument": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "fullCycles": {
"value": null,
- "technicalKey": null
+ "time": null
+ },
+ "power": {
+ "remaining": {
+ "value": null,
+ "time": null
+ },
+ "fade": {
+ "value": null,
+ "time": null
+ }
+ },
+ "negativeEvents": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "resistance": {
+ "increase": {
+ "cell": {
+ "value": null,
+ "time": null
+ },
+ "pack": {
+ "value": null,
+ "time": null
+ },
+ "module": {
+ "value": null,
+ "time": null
+ }
+ },
+ "remaining": {
+ "cell": {
+ "value": null,
+ "time": null
+ },
+ "pack": {
+ "value": null,
+ "time": null
+ },
+ "module": {
+ "value": null,
+ "time": null
+ }
+ }
+ },
+ "capacity": {
+ "fade": {
+ "value": null,
+ "time": null
+ },
+ "throughput": {
+ "value": null,
+ "time": null
+ },
+ "capacity": {
+ "value": null,
+ "time": null
+ }
+ },
+ "energy": {
+ "remaining": {
+ "value": null,
+ "time": null
+ },
+ "soce": {
+ "value": null,
+ "time": null
+ },
+ "throughput": {
+ "value": null,
+ "time": null
+ }
}
}
},
- "warrantyPeriod": null,
- "composition": {
- "compositionOfBattery": [
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "sources": [
+ {
+ "header": null,
+ "category": null,
+ "type": null,
+ "content": null
+ }
+ ],
+ "materials": {
+ "hazardous": {
+ "cadmium": {
+ "concentration": null,
+ "location": null,
+ "critical": null,
+ "impactOfSubstances": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "materialUnit": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "other": [
+ {
+ "critical": null,
+ "impactOfSubstances": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentration": null,
+ "materialIdentification": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ],
+ "location": null,
+ "materialUnit": null
+ }
+ ],
+ "mercury": {
+ "concentration": null,
+ "location": null,
+ "critical": null,
+ "impactOfSubstances": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "materialUnit": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "lead": {
+ "recycled": null,
+ "critical": null,
+ "impactOfSubstances": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "location": null,
+ "concentration": null,
+ "materialUnit": null
+ }
+ },
+ "active": {
+ "nickel": {
+ "location": null,
+ "recycled": null,
+ "critical": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "lithium": {
+ "location": null,
+ "recycled": null,
+ "critical": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
- {
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "cobalt": {
+ "location": null,
+ "recycled": null,
+ "critical": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
+ "other": [
+ {
+ "location": null,
+ "materialIdentification": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ],
+ "recycled": null,
+ "critical": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "lead": {
+ "recycled": null,
+ "critical": null,
+ "impactOfSubstances": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "location": null,
+ "concentration": null,
+ "materialUnit": null
+ }
+ },
+ "composition": [
{
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "unit": null,
+ "recycled": null,
+ "critical": null,
+ "renewable": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentration": null,
+ "location": null,
+ "id": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ]
},
{
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
- },
+ "unit": null,
+ "recycled": null,
+ "critical": null,
+ "renewable": null,
+ "documentation": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "concentration": null,
+ "location": null,
+ "id": [
+ {
+ "type": null,
+ "name": null,
+ "id": null
+ }
+ ]
+ }
+ ]
+ },
+ "safety": {
+ "usableExtinguishAgent": [
{
- "materialPercentageMassFraction": null,
- "materialName": null,
- "materialWeight": null
+ "fireClass": null,
+ "document": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "media": null
}
],
- "criticalRawMaterials": null,
- "components": {
- "componentsPartNumber": [
- null
+ "safeDischarging": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "meaningOfLabels": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "dismantling": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "removalFromAppliance": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "safetyMeasures": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ },
+ "handling": {
+ "applicable": null,
+ "content": {
+ "producer": [
+ {
+ "id": null
+ }
],
- "componentsSupplier": [
+ "sparePart": [
{
- "componentsSupplierName": null,
- "address": {
- "locality": {
- "value": null,
- "technicalKey": null
- },
- "country": {
- "shortName": null
- },
- "postCode": {
- "value": null,
- "technicalKey": null
- },
- "thoroughfare": {
- "value": null,
- "number": null,
- "technicalKey": null
- },
- "premise": {
- "value": null,
- "technicalKey": null
- },
- "postalDeliveryPoint": {
- "value": null,
- "technicalKey": null
- }
- },
- "contact": {
- "faxNumber": null,
- "website": null,
- "phoneNumber": null,
- "email": null
- }
+ "manufacturerPartId": null,
+ "nameAtManufacturer": null
}
]
}
},
- "manufacturing": {
- "dateOfManufacturing": null,
- "address": {
- "locality": {
- "value": null,
- "technicalKey": null
- },
- "country": {
- "shortName": null
- },
- "postCode": {
- "value": null,
- "technicalKey": null
- },
- "thoroughfare": {
- "value": null,
- "number": null,
- "technicalKey": null
- },
- "premise": {
- "value": null,
- "technicalKey": null
- },
- "postalDeliveryPoint": {
- "value": null,
- "technicalKey": null
+ "conformity": {
+ "declarationOfConformityId": null,
+ "thirdPartyAssurance": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
}
- }
- },
- "batteryIdentification": {
- "batteryType": null,
- "batteryIDDMCCode": null,
- "batteryModel": null
+ ],
+ "resultOfTestReport": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "declarationOfConformity": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "dueDiligencePolicy": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
},
- "stateOfBattery": {
- "stateOfHealth": null,
- "statusBattery": null,
- "stateOfCharge": null
+ "operation": {
+ "intoServiceDate": null,
+ "manufacturer": {
+ "facility": [
+ {
+ "facility": null
+ }
+ ],
+ "manufacturingDate": null,
+ "manufacturer": null
+ }
},
- "cO2FootprintTotal": null
+ "sustainability": {
+ "documents": {
+ "separateCollection": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "sustainabilityReport": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "euTaxonomyDisclosureStatement": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "wastePrevention": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ },
+ "carbonFootprint": [
+ {
+ "lifecycle": null,
+ "rulebook": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ],
+ "unit": null,
+ "performanceClass": null,
+ "manufacturingPlant": [
+ {
+ "facility": null
+ }
+ ],
+ "type": null,
+ "value": null,
+ "declaration": [
+ {
+ "contentType": null,
+ "header": null,
+ "content": null
+ }
+ ]
+ }
+ ],
+ "status": null
+ }
}
-}
\ No newline at end of file
+}
diff --git a/dpp-frontend/src/services/Authentication.js b/dpp-frontend/src/services/Authentication.js
index 9978b539c..d4c2ef4f0 100644
--- a/dpp-frontend/src/services/Authentication.js
+++ b/dpp-frontend/src/services/Authentication.js
@@ -76,8 +76,8 @@ export default class Authentication {
app.mount("#app");
//Token Refresh
setInterval(() => {
- this.updateToken(60, app);
- }, 60000);
+ this.updateToken(20, app);
+ }, 20000);
})
.catch((e) => {
console.log(e);
diff --git a/dpp-frontend/src/translations/de.json b/dpp-frontend/src/translations/de.json
index d92b4fddb..93524d6cf 100644
--- a/dpp-frontend/src/translations/de.json
+++ b/dpp-frontend/src/translations/de.json
@@ -43,17 +43,7 @@
"dpp": "Digitaler Produkt Pass",
"bpp": "Batterie Pass",
"tpp": "Getriebe Pass",
- "batteryComponentsNames": {
- "generalInformation": "Allgemeine Informationen",
- "stateOfBattery": "Zustand der Batterie",
- "components": "Komponenten",
- "batteryComposition": "Batteriezusammensetzung",
- "cellChemistry": "Zellenchemie",
- "electrochemicalProperties": "Elektrochemische Eigenschaften",
- "documents": "Dokumente",
- "exchange": "Austausch"
- },
- "dppComponentsNames": {
+ "componentsNames": {
"typology": "Typologie",
"metadata": "Metadaten",
"characteristics": "Merkmale",
@@ -65,18 +55,16 @@
"additionalData": "Zusätzliche Daten",
"sustainability": "Nachhaltigkeit",
"operation": "Betrieb",
- "exchange": "Austausch"
- },
- "tppComponentsNames": {
- "productSpecificParameters": "Produktspezifische Parameter",
+ "exchange": "Austausch",
+ "performance": "Leistung",
+ "materials": "Materialien",
+ "safety": "Sicherheit",
+ "conformity": "Konformität",
+ "specific": "Produktspezifische Parameter",
"intructions": "Anleitungen",
"sparePartSupplier": "Ersatzteil-Lieferant",
- "components": "Komponenten",
"stateOfHealth": "Zustand der Gesundheit",
- "identification": "Identifikation",
- "generalInformation": "Allgemeine Informationen",
- "sustainability": "Nachhaltigkeit",
- "exchange": "Austausch"
+ "generalInformation": "Allgemeine Informationen"
}
},
"home": {
@@ -111,10 +99,10 @@
"batteryCards": {
"titleGeneral": "ALLGEMEIN",
"labelGeneral": "Typ",
- "secondLabelGeneral": "Modell",
+ "secondLabelGeneral": "Kategorie",
"titlePerformance": "LEISTUNG",
"labelPerformance": "Nennkapazität",
- "secondLabelPerformance": "Modell",
+ "secondLabelPerformance": "Strom",
"descriptionPerformanceTitle": "Leistung",
"descriptionPerformanceValue": "Beschreibung der Leistung",
"titleHealth": "GESUNDHEIT",
@@ -157,7 +145,8 @@
"oilType": "Öltyp"
},
"passportHeader": {
- "backBtn": "Zurück"
+ "backBtn": "Zurück",
+ "verification": "Verifikation"
},
"field": {
"tempRange": "Temperaturbereich:",
@@ -199,10 +188,88 @@
"passportRetrieval": "Passabruf",
"retrieving": "Abruf... ",
"createdProcess": "Erstellte Prozess-ID: ",
- "contractId": "Vertrags-ID: "
+ "contractId": "Vertrags-ID: ",
+ "compositionOf": "Composition of",
+ "verification": "Passkontrolle",
+ "verifying": "Überprüfen...",
+ "verified": "Verifiziert"
},
"sections": {
+ "materials": {
+ "exemption": "Befreiung",
+ "statement": "Aussage",
+ "recycled": "Recycelte Materialien",
+ "renewable": "Nachwachsende Rohstoffe",
+ "hazardClassification": "Gefahrenklassifikation",
+ "concentrationRange": "Konzentrationsbereich",
+ "documentation": "Dokumentation",
+ "concentration": "Konzentration",
+ "name": "Name",
+ "otherMaterials": "Andere Materialien",
+ "type": "Typ",
+ "location": "Standort",
+ "recycledContent": "Recycelter Inhalt",
+ "materialIdentification": "Materialidentifikation",
+ "hazardous": "Gefährlich",
+ "compositionOf": "Zusammensetzung von",
+ "recyclateContent": "Rezyklatgehalt"
+ },
+ "performance": {
+ "rated": "Bewertet",
+ "depthOfDischarge": "Entladetiefe",
+ "temperature": "Temperatur",
+ "50PercentLife": "50% Lebensdauer",
+ "initial": "Anfangs",
+ "selfDischargingRate": "Selbstentladerate",
+ "lowerTemperature": "Niedrigere Temperatur",
+ "upperTemperature": "Höhere Temperatur",
+ "lifetime": "Lebensdauer",
+ "dynamic": "Dynamisch",
+ "appliedDischargeRate": "Angewandte Entladerate",
+ "cycleLifeTesting": "Lebensdauertest",
+ "cycles": "Zyklen",
+ "expectedYears": "Erwartete Jahre",
+ "at20SoC": "Bei 20°C",
+ "at80SoC": "Bei 80°C",
+ "power": "Leistung",
+ "cell": "Zelle",
+ "pack": "Pack",
+ "module": "Modul",
+ "voltage": "Spannung",
+ "voltageMin": "Minimale Spannung",
+ "voltageMax": "Maximale Spannung",
+ "voltageNominal": "Nennspannung",
+ "energy": "Energie",
+ "capacity": "Kapazität",
+ "thresholdExhaustion": "Erschöpfungsschwelle",
+ "roundTripEfficiency": "Rundum-Wirkungsgrad",
+ "remaining": "Verbleibende Leistung",
+ "fade": "Leistungsabfall",
+ "operatingEnvironment": "Betriebsumgebung",
+ "stateOfCharge": "Ladezustand",
+ "performanceDocument": "Leistungsdokumentation",
+ "fullCycles": "Volle Zyklen",
+ "negativeEvents": "Negative Ereignisse",
+ "resistance": "Widerstand",
+ "remainingCell": "Verbleibender Zellwiderstand",
+ "remainingPack": "Verbleibender Packwiderstand",
+ "remainingModule": "Verbleibender Modulwiderstand",
+ "increaseCell": "Zunehmender Zellwiderstand",
+ "increasePack": "Zunehmender Packwiderstand",
+ "increaseModule": "Zunehmender Modulwiderstand",
+ "capacityFade": "Kapazitätsverlust",
+ "throughput": "Durchsatz",
+ "remainingEnergy": "Verbleibende Energie",
+ "soce": "Ladezustandsschätzung"
+ },
"productSpecificParameters": {
+ "serviceHistory": "Servicehistorie",
+ "oil": "Öl",
+ "torquePeak": "Drehmomentspitze",
+ "torqueContinuous": "Dauerhaftes Drehmoment",
+ "time": "Zeit",
+ "powerPeak": "Leistungsspitze",
+ "voltage": "Spannung",
"torqueConverter": "Drehmomentwandler",
"driveType": "Antriebstyp",
"oilType": "Öltyp",
@@ -255,15 +322,6 @@
"manufacturerContact": "Herstellerkontakt",
"cO2FootprintTotal": "CO2-Fußabdruck"
},
- "stateOfBattery": {
- "stateOfHealth": "aktueller Zustand",
- "cycleLifeTestCRate": "Zykluslebensdauertest C-Rate",
- "stateOfCharge": "Ladezustand",
- "cycleLifeTestDepthOfDischarge": "Tiefe der Entladung im Zykluslebensdauertest",
- "expectedLifetime": "Erwartete Lebensdauer",
- "temperatureRange": "Temperaturbereich (im Ruhezustand)",
- "statusBattery": "Batterie-Status"
- },
"components": {
"searchForChild": "Die Suche nach verbauten Komponenten hat begonnen, dies kann eine Weile dauern...",
"noChild": "Keine verbauten Komponenten gefunden",
@@ -273,10 +331,6 @@
"batteryComposites": "Hauptbestandteile der Batterie",
"criticalRawMaterials": "Kritische Rohstoffe"
},
- "cellChemistry": {
- "electrolyteComposition": "Zusammensetzung des Elektrolyts",
- "recyclateContent": "Recyclat-Anteil"
- },
"electrochemicalProperties": {
"capacity": "Kapazität",
"ratedCapacity": "Nennkapazität",
@@ -339,6 +393,9 @@
"contentType": "Inhaltstyp"
},
"characteristics": {
+ "lifeTime": "Lebenszeit",
+ "volume": "Volumen",
+ "generalPerformanceClass": "Allgemeine Leistungsklasse",
"physicalDimensionsProperty": "Eigenschaft der physischen Abmessungen",
"weight": "Gewicht",
"lifespan": "Lebensdauer",
@@ -348,13 +405,17 @@
"weightOrVolume": "Gewicht oder Volumen",
"diameter": "Durchmesser",
"grossWeight": "Bruttogewicht",
- "grossVolume": "Bruttovolumen"
+ "grossVolume": "Bruttovolumen",
+ "warranty": "Garantie"
},
"commercial": {
"placedOnMarket": "Markteinführung",
- "warranty": "Garantie"
+ "warranty": "Garantie",
+ "purpose": "Zweck"
},
"handling": {
+ "manufacturerPartId": "Herstellerteilenummer",
+ "nameAtManufacturer": "Name beim Hersteller",
"maintenanceHistory": "Wartungshistorie",
"spareParts": "Ersatzteile",
"substanceOfConcern": "Besorgniserregende Substanz",
@@ -371,11 +432,17 @@
"id": "ID"
},
"identification": {
+ "description": "Beschreibung",
+ "classification": "Klassifikation",
"gtin": "GTIN",
"manufacturerId": "Hersteller-ID",
- "dataMatrixCode": "Data-Matrix-Code"
+ "dataMatrixCode": "Datenmatrixcode",
+ "chemistry": "Chemie",
+ "idDmc": "DMC-ID",
+ "category": "Kategorie"
},
"metadata": {
+ "lastModification": "Letzte Änderung",
"predecessor": "Vorgänger",
"legitimization": "Legitimation",
"identification": "Identifikation",
@@ -385,9 +452,15 @@
"customerPartId": "Kundenteil-ID",
"manufacturerPartId": "Herstellerteil-ID",
"status": "Status",
- "expirationDate": "Ablaufdatum"
+ "expirationDate": "Ablaufdatum",
+ "backupReference": "Backup-Referenz",
+ "registrationIdentifier": "Registrierungs-ID",
+ "economicOperatorId": "Wirtschaftsteilnehmer-ID",
+ "passportIdentifier": "Pass-ID"
},
"operation": {
+ "importerID": "Importeur-ID",
+ "intoServiceDate": "Inbetriebnahmedatum",
"importer": "Importeur-ID",
"importerEori": "Importer-EORI",
"manufacturerId": "Hersteller-ID",
@@ -404,8 +477,21 @@
"quantity": "Menge"
},
"sustainability": {
+ "durabilityScore": "Haltbarkeitswert",
+ "reparabilityScore": "Reparaturwert",
+ "lifecycle": "Lebenszyklus",
"state": "Zustand",
+ "status": "Status",
+ "carbonFootprint": "CO2-Fußabdruck",
+ "performanceClass": "Leistungsklasse",
+ "type": "Typ",
+ "rulebook": "Regelwerk",
+ "manufacturingPlant": "Produktionsstätte",
+ "declaration": "Erklärung",
"material": "Material",
+ "documents": "Dokumente",
+ "carbon": "Kohlenstoff",
+ "environmental": "Umwelt",
"carbonContentTotal": "Gesamtkohlenstoffgehalt",
"crossSectoralStandard": "Sektorenübergreifender Standard",
"substancesOfConcern": "Besorgniserregende Stoffe",
@@ -425,6 +511,10 @@
"code": "Code",
"nameAtManufacturer": "Name beim Hersteller",
"nameAtCustomer": "Name beim Kunden"
+ },
+ "safety": {
+ "fireClass": "Brandklasse",
+ "media": "Medien"
}
}
-}
+}
\ No newline at end of file
diff --git a/dpp-frontend/src/translations/en.json b/dpp-frontend/src/translations/en.json
index 2997c9d4b..ec4ad2392 100644
--- a/dpp-frontend/src/translations/en.json
+++ b/dpp-frontend/src/translations/en.json
@@ -43,17 +43,7 @@
"dpp": "Digital Product Passport",
"bpp": "Battery Product Passport",
"tpp": "Transmission Product Passport",
- "batteryComponentsNames": {
- "generalInformation": "General Information",
- "stateOfBattery": "State Of Battery",
- "components": "Components",
- "batteryComposition": "Battery Composition",
- "cellChemistry": "Cell Chemistry",
- "electrochemicalProperties": "Electrochemical Properties",
- "documents": "Documents",
- "exchange": "Exchange"
- },
- "dppComponentsNames": {
+ "componentsNames": {
"typology": "Typology",
"metadata": "Metadata",
"characteristics": "Characteristics",
@@ -65,18 +55,16 @@
"additionalData": "Additional Data",
"sustainability": "Sustainability",
"operation": "Operation",
- "exchange": "Exchange"
- },
- "tppComponentsNames": {
- "productSpecificParameters": "Product Specific Parameters",
+ "exchange": "Exchange",
+ "performance": "Performance",
+ "materials": "Materials",
+ "safety": "Safety",
+ "conformity": "Conformity",
+ "specific": "Product Specific Parameters",
"instructions": "Instructions",
"sparePartSupplier": "Spare Part Supplier",
- "components": "Components",
"stateOfHealth": "State of Health",
- "identification": "Identification",
- "generalInformation": "General Information",
- "sustainability": "Sustainability",
- "exchange": "Exchange"
+ "generalInformation": "General Information"
}
},
"home": {
@@ -111,10 +99,10 @@
"batteryCards": {
"titleGeneral": "GENERAL",
"labelGeneral": "Type",
- "secondLabelGeneral": "Model",
+ "secondLabelGeneral": "Category",
"titlePerformance": "PERFORMANCE",
"labelPerformance": "Rated Capacity",
- "secondLabelPerformance": "Model",
+ "secondLabelPerformance": "Power",
"descriptionPerformanceTitle": "Performance",
"descriptionPerformanceValue": "Description of the performance",
"titleHealth": "HEALTH",
@@ -151,13 +139,19 @@
"descriptionSustainabilityValue": "Description of the Sustainability"
},
"transmissionCards": {
+ "partID": "Part ID",
+ "carbonFootprint": "Carbon Footprint",
"matrixCode": "Matrix code",
"parameters": "SPECIFIC PARAMETERS",
"driveType": "Drive type",
"oilType": "Oil type"
},
"passportHeader": {
- "backBtn": "Back"
+ "backBtn": "Back",
+ "verification": "Verification",
+ "issuer": "Issuer",
+ "issuedAt": "Issued at",
+ "expirationDate": "Expiration date"
},
"field": {
"tempRange": "Temp range:",
@@ -199,9 +193,79 @@
"passportRetrieval": "Passport Retrieval",
"retrieving": "Retrieving... ",
"createdProcess": "Created Process ID: ",
- "contractId": "Contract ID: "
+ "contractId": "Contract ID: ",
+ "verification": "Passport verification",
+ "verifying": "Verifying...",
+ "verified": "Verified"
},
"sections": {
+ "materials": {
+ "exemption": "Exemption",
+ "statement": "Statement",
+ "recycled": "Recycled materials",
+ "renewable": "Renewable materials",
+ "hazardClassification": "Hazard classification",
+ "concentrationRange": "Concentration range",
+ "documentation": "Documentation",
+ "concentration": "Concentration",
+ "name": "Name",
+ "otherMaterials": "Other materials",
+ "type": "Type",
+ "location": "Location",
+ "recycledContent": "Recycled content",
+ "materialIdentification": "Material identification",
+ "hazardous": "Hazardous",
+ "compositionOf": "Composition of",
+ "recyclateContent": "Recyclate content"
+ },
+ "performance": {
+ "rated": "Rated",
+ "depthOfDischarge": "Depth of Discharge",
+ "temperature": "Temperature",
+ "50PercentLife": "50% Life",
+ "initial": "Initial",
+ "selfDischargingRate": "Self Discharging Rate",
+ "lowerTemperature": "Lower Temperature",
+ "upperTemperature": "Upper Temperature",
+ "lifetime": "Lifetime",
+ "dynamic": "Dynamic",
+ "appliedDischargeRate": "Applied Discharge Rate",
+ "cycleLifeTesting": "Lifecycle testing",
+ "cycles": "Cycles",
+ "expectedYears": "Expected years",
+ "at20SoC": "At 20°C",
+ "at80SoC": "At 80°C",
+ "power": "Power",
+ "cell": "Cell",
+ "pack": "Pack",
+ "module": "Module",
+ "voltage": "Voltage",
+ "voltageMin": "Voltage Min",
+ "voltageMax": "Voltage Max",
+ "voltageNominal": "Voltage nominal",
+ "energy": "Energy",
+ "capacity": "Capacity",
+ "thresholdExhaustion": "Threshold Exhaustion",
+ "roundTripEfficiency": "Round Trip Efficiency",
+ "remaining": "Remaining power",
+ "fade": "Power fade",
+ "operatingEnvironment": "Operating environment",
+ "stateOfCharge": "State of charge",
+ "performanceDocument": "Performance document",
+ "fullCycles": "Full cycles",
+ "negativeEvents": "Negative events",
+ "resistance": "Resistance",
+ "remainingCell": "Remaining cell resistance",
+ "remainingPack": "Remaining pack resistance",
+ "remainingModule": "Remaining module resistance",
+ "increaseCell": "Increasing cell resistance",
+ "increasePack": "Increasing pack resistance",
+ "increaseModule": "Increasing module resistance",
+ "capacityFade": "Capacity fade",
+ "throughput": "Throughput",
+ "remainingEnergy": "Remaining energy",
+ "soce": "Soce"
+ },
"instructions": {
"packagingInstructions": "Packaging instructions",
"transportationInstructions": "Transportation instructions",
@@ -210,6 +274,13 @@
"vehicleDismantlingProcedure": "Vehicle dismantling procedure"
},
"productSpecificParameters": {
+ "serviceHistory": "Service history",
+ "oil": "Oil",
+ "torquePeak": "Torque peak",
+ "torqueContinuous": "Torque continuous",
+ "time": "Time",
+ "powerPeak": "Power peak",
+ "voltage": "Voltage",
"torqueConverter": "Torque converter",
"driveType": "Drive type",
"oilType": "Oil type",
@@ -255,15 +326,6 @@
"manufacturerContact": "Manufacturer Contact",
"cO2FootprintTotal": "CO2 Footprint"
},
- "stateOfBattery": {
- "stateOfHealth": "State of health",
- "cycleLifeTestCRate": "Cycle life test c rate",
- "stateOfCharge": "State of charge",
- "cycleLifeTestDepthOfDischarge": "Cycle life test depth of discharge",
- "expectedLifetime": "Expected lifetime",
- "temperatureRange": "Temperature range (idle state)",
- "statusBattery": "Status battery"
- },
"components": {
"searchForChild": "The search for child components started, this may take a while...",
"noChild": "No child components found",
@@ -273,10 +335,6 @@
"batteryComposites": "Main Battery Composites",
"criticalRawMaterials": "Critical raw materials"
},
- "cellChemistry": {
- "electrolyteComposition": "Composition of electrolyte",
- "recyclateContent": "Recyclate Content Active Materials"
- },
"electrochemicalProperties": {
"capacity": "Capacity",
"ratedCapacity": "Rated capacity",
@@ -339,6 +397,9 @@
"contentType": "Content type"
},
"characteristics": {
+ "lifeTime": "Life time",
+ "volume": "Volume",
+ "generalPerformanceClass": "General performance class",
"physicalDimensionsProperty": "Physical dimensions property",
"weight": "Weight",
"lifespan": "Lifespan",
@@ -348,13 +409,17 @@
"weightOrVolume": "Weight or volume",
"diameter": "Diameter",
"grossWeight": "Gross weight",
- "grossVolume": "Gross volume"
+ "grossVolume": "Gross volume",
+ "warranty": "Warranty"
},
"commercial": {
"placedOnMarket": "Place on the market",
- "warranty": "Warranty"
+ "warranty": "Warranty",
+ "purpose": "Purpose"
},
"handling": {
+ "manufacturerPartId": "Manufacturer part ID",
+ "nameAtManufacturer": "Name at manufacturer",
"maintenanceHistory": "Maintenance history",
"spareParts": "Spare parts",
"substanceOfConcern": "Substance of concern",
@@ -371,11 +436,17 @@
"id": "Id"
},
"identification": {
+ "description": "Description",
+ "classification": "Classification",
"gtin": "Gtin",
"manufacturerId": "Manufacturer ID",
- "dataMatrixCode": "Data matrix code"
+ "dataMatrixCode": "Data matrix code",
+ "chemistry": "Chemistry",
+ "idDmc": "DMC ID",
+ "category": "Category"
},
"metadata": {
+ "lastModification": "Last modification",
"predecessor": "Predecessor",
"legitimization": "Legitimization",
"identification": "Identification",
@@ -385,9 +456,15 @@
"customerPartId": "Customer part ID",
"manufacturerPartId": "Manufacturer part ID",
"status": "Status",
- "expirationDate": "Expiration date"
+ "expirationDate": "Expiration date",
+ "backupReference": "Backup reference",
+ "registrationIdentifier": "Registration identifier",
+ "economicOperatorId": "Economic operator ID",
+ "passportIdentifier": "Passport identifier"
},
"operation": {
+ "importerID": "Importer ID",
+ "intoServiceDate": "Into service date",
"importer": "Importer ID",
"importerEori": "Importer EORI",
"manufacturerId": "Manufacturer ID",
@@ -404,8 +481,21 @@
"quantity": "Quantity"
},
"sustainability": {
+ "durabilityScore": "Durability score",
+ "reparabilityScore": "Reparability Score",
+ "lifecycle": "Lifecycle",
"state": "State",
+ "status": "Status",
+ "documents": "Documents",
+ "carbonFootprint": "Carbon Footprint",
+ "performanceClass": "Performance Class",
+ "type": "Type",
+ "rulebook": "Rulebook",
+ "manufacturingPlant": "Manufacturing plant",
+ "declaration": "Declaration",
"material": "Material",
+ "carbon": "Carbon",
+ "environmental": "Environmental",
"carbonContentTotal": "Carbon content total",
"crossSectoralStandard": "Cross sectoral standard used",
"substancesOfConcern": "Substances of concern",
@@ -425,6 +515,10 @@
"code": "Code",
"nameAtManufacturer": "Name at manufacturer",
"nameAtCustomer": "Name at customer"
+ },
+ "safety": {
+ "fireClass": "Fire class",
+ "media": "Media"
}
}
-}
+}
\ No newline at end of file
diff --git a/dpp-frontend/src/utils/jsonUtil.js b/dpp-frontend/src/utils/jsonUtil.js
index fa468809e..a257c8549 100644
--- a/dpp-frontend/src/utils/jsonUtil.js
+++ b/dpp-frontend/src/utils/jsonUtil.js
@@ -78,13 +78,13 @@ export default {
}
return uniqueKey; //Return unique id
},
- toJson(json){
+ toJson(json) {
return JSON.parse(json);
},
- toJsonString(json){
+ toJsonString(json) {
return JSON.stringify(json);
},
- flatternJsonAttributes(json, attributes=[], sep=".", allowNull = false, allowEmpty = false) {
+ flatternJsonAttributes(json, attributes = [], sep = ".", allowNull = false, allowEmpty = false) {
if (json == null) return null;
if (!(json instanceof Object)) return json;
// Deep Copy param into objects
@@ -100,14 +100,14 @@ export default {
// Interate over keys
let parentKey = keys[index]; // Get key value in array
let parent = this.get(parentKey, objects, sep, null); // Get current node value
-
+
if (parent == null) {
// If nulls are not allowed
continue;
}
let tmpObjects = this.deleteDeepKey(parentKey, objects, sep, null); // Delete current node from interation object
- if(tmpObjects == null){
+ if (tmpObjects == null) {
continue;
}
objects = this.deepCopy(tmpObjects);
@@ -324,12 +324,12 @@ export default {
}
return tempSourceObj;
},
- deleteDeepKey(ref,json, sep = ".", defaultReturn = null ) {
+ deleteDeepKey(ref, json, sep = ".", defaultReturn = null) {
try {
let tmpJson = this.copy(json);
let refs = ref.split(sep);
- if(refs.length == 1){
- if(!Object.prototype.hasOwnProperty.call(tmpJson, ref)){
+ if (refs.length == 1) {
+ if (!Object.prototype.hasOwnProperty.call(tmpJson, ref)) {
throw new Error("deleteDeepKey: Key [" + ref + "] is not defined in json");
}
delete tmpJson[ref]
@@ -338,24 +338,24 @@ export default {
let lastRef = refs.pop();
let parentPath = refs.join(sep);
let parent = this.get(parentPath, json, sep, null);
- if(parent == null){
+ if (parent == null) {
throw new Error("deleteDeepKey: Parent [" + parentPath + "] does not exist!");
}
- if(!Object.prototype.hasOwnProperty.call(parent, lastRef)){
+ if (!Object.prototype.hasOwnProperty.call(parent, lastRef)) {
throw new Error("deleteDeepKey: Key [" + lastRef + "] does not exists in parent!");
}
delete parent[lastRef];
- return this.set(parentPath, parent,tmpJson, sep, defaultReturn);
+ return this.set(parentPath, parent, tmpJson, sep, defaultReturn);
} catch {
return defaultReturn;
}
},
- set(ref, data, json, sep = ".", defaultReturn = null){
- try{
+ set(ref, data, json, sep = ".", defaultReturn = null) {
+ try {
let tmpObject = {};
let refs = ref.split(sep);
- if(refs.length == 1){
+ if (refs.length == 1) {
tmpObject = this.copy(json);
tmpObject[ref] = data;
return tmpObject;
@@ -365,29 +365,30 @@ export default {
let part;
let parentPath;
let tmpParent = null;
- for(let i = refs.length - 1; i >= 0; i--){
+ for (let i = refs.length - 1; i >= 0; i--) {
tmpObject = {}
- part = refs[i];
- currentPath = currentPath.filter(e => e !== part);
+ part = refs[i];
+ currentPath.pop(-1)
parentPath = currentPath.join(sep);
tmpParent = this.get(parentPath, json, sep, {});
tmpObject[part] = tmpValue;
tmpParent = this.extend(tmpParent, tmpObject);
tmpValue = tmpParent;
}
- if(tmpParent == null){
+ if (tmpParent == null) {
return defaultReturn;
}
return this.extend(json, tmpParent);
- }catch {
+ } catch {
return defaultReturn;
}
},
- extendDeep(originJson, json){
- if(!json){
+ extendDeep(originJson, json) {
+
+ if (!json) {
return originJson;
}
- if (!(json instanceof Object)) return originJson;
+ if (parent instanceof Array || !(parent instanceof Object) || parent instanceof String || parent instanceof Boolean || parent instanceof Number) return originJson;
// Deep Copy param into object
let objects = JSON.parse(JSON.stringify(json));
let retObject = JSON.parse(JSON.stringify(originJson)); // Return/Final Object
@@ -405,22 +406,21 @@ export default {
continue;
}
- if (!(parent instanceof Object)) {
+ if (parent instanceof Array || !(parent instanceof Object) || parent instanceof String || parent instanceof Boolean || parent instanceof Number) {
// If current node is not a object
retObject = this.set(parentKey, parent, retObject);
continue;
}
-
for (let childKey in parent) {
// Interate over children
let child = parent[childKey]; // Get children
-
+
if (child == null) {
// Skip null children
continue;
}
- let childstoreKey = this.buildPath(parentKey, childKey);
- if (!(child instanceof Object)) {
+ let childstoreKey = this.buildPath(parentKey, childKey)
+ if (child instanceof Array || !(child instanceof Object) || child instanceof String || child instanceof Boolean || child instanceof Number) {
// If children is not a object is a property from the father
// Check if key is not existing
retObject = this.set(childstoreKey, child, retObject);
diff --git a/dpp-frontend/src/utils/passportUtil.js b/dpp-frontend/src/utils/passportUtil.js
index b54cf5884..fd101f632 100644
--- a/dpp-frontend/src/utils/passportUtil.js
+++ b/dpp-frontend/src/utils/passportUtil.js
@@ -25,6 +25,19 @@
import iconMappings from "@/config/templates/iconMappings.json";
export default {
+ currentData(tppData, propsData) {
+ if (tppData && Object.keys(tppData).length > 0) {
+ return tppData;
+ }
+ return propsData;
+ },
+ isObject(value) {
+ return value !== null && typeof value === "object";
+ },
+ hasContent(...args) {
+ // Check if any of the passed arguments is truthy
+ return args.some((arg) => !!arg);
+ },
formattedDate(timestamp) {
const date = new Date(timestamp);
const formattedDate = date.toLocaleDateString("en-GB", {
@@ -34,6 +47,17 @@ export default {
});
return formattedDate;
},
+ processDateTime(dateTimeString) {
+ if (!dateTimeString)
+ return
+ // Check if the string contains 'T'
+ if (dateTimeString.includes("T")) {
+ // Replace 'T' with ', time: ' and return the new string
+ return dateTimeString.replace("T", ", time: ");
+ }
+ // Return the original string if 'T' is not found
+ return dateTimeString;
+ },
toSentenceCase(text) {
// Convert the string to sentence case
const words = text.split(/(?=[A-Z])/);
@@ -100,4 +124,3 @@ export default {
}
}
};
-
diff --git a/dpp-frontend/src/views/PassportView.vue b/dpp-frontend/src/views/PassportView.vue
index 58a60ed42..ba24faf39 100644
--- a/dpp-frontend/src/views/PassportView.vue
+++ b/dpp-frontend/src/views/PassportView.vue
@@ -28,19 +28,11 @@
-
+
@@ -51,10 +43,7 @@
-
+
@@ -64,10 +53,7 @@
-
+
{{ contractIndex + 1 }}.
@@ -89,19 +75,11 @@
Policy {{ contractIndex + 1 }}.{{
- index + 1
- }}Policy {{ contractIndex + 1 }}.{{ index + 1 }}
-
+
ID
@@ -113,17 +91,11 @@
-
+
{{ policyKey }}
@@ -132,9 +104,7 @@
@@ -144,26 +114,14 @@
-
- {{
- attribute.constraints.operator
- }}
+ {{
+ attribute.constraints.operator
+ }}
- [{{
- constraint.leftOperand
- }}] [{{ constraint.operator }}]
- [{{
+ >- [{{ constraint.leftOperand }}] [{{ constraint.operator }}] [{{
constraint.rightOperand
}}]
@@ -201,13 +159,7 @@
size="x-large"
class="text-none ms-4 text-white"
color="#0F71CB"
- @click="
- resumeNegotiation(
- searchResponse,
- contractToSign.contract,
- contractToSign.policy
- )
- "
+ @click="resumeNegotiation(searchResponse, contractToSign.contract, contractToSign.policy)"
>{{ $t("passportView.policyAgreement.agree") }}
@@ -216,11 +168,7 @@
rounded="xl"
size="x-large"
variant="text"
- :prepend-icon="
- !details
- ? 'mdi-plus-circle-outline'
- : 'mdi-minus-circle-outline'
- "
+ :prepend-icon="!details ? 'mdi-plus-circle-outline' : 'mdi-minus-circle-outline'"
@click="toggleDetails"
class="details-btn text-none"
>
@@ -232,12 +180,7 @@
-
+
@@ -262,9 +205,7 @@
variant="outlined"
style="border: 2px solid"
@click="cancelDeclineContract()"
- >{{
- $t("passportView.policyAgreement.declineModal.cancel")
- }}{{ $t("passportView.policyAgreement.declineModal.cancel") }}
{{
- $t("passportView.policyAgreement.declineModal.confirm")
- }}{{ $t("passportView.policyAgreement.declineModal.confirm") }}
@@ -288,34 +224,18 @@
-
-
+
+
-
+
@@ -324,25 +244,11 @@
@@ -363,7 +269,6 @@
-