From 3015cc828f7b3a3beb20b8c2e0bf0bc601180461 Mon Sep 17 00:00:00 2001
From: Frederik Christ Vestergaard
Date: Thu, 20 Nov 2025 14:43:21 +0100
Subject: [PATCH 1/3] Added new metadata fields for ODDK
---
package-lock.json | 98 ++++----
src/app/app-routing.module.ts | 2 +-
.../opendatadk/opendatadk-dataset.model.ts | 4 +
.../opendatadk-detail.component.html | 20 ++
.../opendatadk-edit.component.html | 213 +++++++++++++-----
.../opendatadk-edit.component.ts | 33 +++
src/assets/i18n/da.json | 42 +++-
7 files changed, 308 insertions(+), 104 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index b2b55332..fce4ffec 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -521,6 +521,7 @@
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.7.tgz",
"integrity": "sha512-i655RaL0zmLE3OESUlDnRNBDRIMW/67nTQvMqP6V1cQ42l2+SMJtREsxmX6cWt55/qvvgeytAA6aBN4aerBl5A==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -649,6 +650,7 @@
"integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.5.0",
@@ -740,6 +742,7 @@
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.10.tgz",
"integrity": "sha512-d95C2r3JP11KCahouWmPaxswz/EE7Zn1k8ocoGt70jl33x42Sg96vAHeOpnQ4yfrdA4W7Q+eWB/NqqvAGCzOPQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"parse5": "^8.0.0",
"tslib": "^2.3.0"
@@ -790,6 +793,7 @@
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.7.tgz",
"integrity": "sha512-uf8dXYTJbedk/wudkt2MfbtvN/T97aEZBtOTq8/IFQQZ3722rag6D+Cg76e5hBccROOn+ueGJX2gpxz02phTwA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -806,6 +810,7 @@
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.7.tgz",
"integrity": "sha512-EouHO15dUsgnFArj0M25R8cOPVoUfiFYSt6iXnMO8+S4dY1fDEmbFqkW5smlP66HL5Gys59Nwb5inejfIWHrLw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -818,6 +823,7 @@
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.7.tgz",
"integrity": "sha512-viZwWlwc1BAqryRJE0Wq2WgAxDaW9fuwtYHYrOWnIn9sy9KemKmR6RmU9VRydrwUROOlqK49R9+RC1wQ6sYwqA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/core": "7.28.3",
"@jridgewell/sourcemap-codec": "^1.4.14",
@@ -850,6 +856,7 @@
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.7.tgz",
"integrity": "sha512-2UuYzC2A5SUtu33tYTN411Wk0WilA+2Uld/GP3O6mragw1O7v/M8pMFmbe9TR5Ah/abRJIocWGlNqeztZmQmrw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -875,6 +882,7 @@
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.7.tgz",
"integrity": "sha512-uOCGCoqXeAWIlQMWiIeed/W8g8h2tk91YemMI+Ce1VQ/36Xfft40Bouz4eKcvJV6kLXGygdpWjzFGz32CE+3Og==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -893,6 +901,7 @@
"resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.3.7.tgz",
"integrity": "sha512-FYuuwU9ujiVT+0xjMIutaUT2PErV4AvxeAPWMlYRA1/yQxqn1VyNUd6kHPjAV+yrZg9Q0MDco2/c0Lh8rmAhSA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/core": "7.28.3",
"@types/babel__core": "7.20.5",
@@ -917,6 +926,7 @@
"resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.10.tgz",
"integrity": "sha512-WkJfUu7KiQY2lqHjMZtEKBG653sPmky0nytTMASsfQ/xUs56W3CAAEOuKhSyCNKsNeFJZS/NgJnvlpRzcE5k6g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -948,6 +958,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.7.tgz",
"integrity": "sha512-AbLtyR7fVEGDYyrz95dP2pc69J5XIjLLsFNAuNQPzNX02WPoAxtrWrNY6UnTzGoSrCc5F52hiL2Uo6yPZTiJcg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"tslib": "^2.3.0"
},
@@ -1041,6 +1052,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz",
"integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.27.1",
@@ -3616,6 +3628,7 @@
"integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@inquirer/checkbox": "^4.2.1",
"@inquirer/confirm": "^5.1.14",
@@ -5450,6 +5463,7 @@
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
+ "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -6229,6 +6243,7 @@
"integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -6582,6 +6597,7 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -6670,6 +6686,7 @@
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -6844,7 +6861,6 @@
"integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 6.0.0"
}
@@ -6869,7 +6885,6 @@
"integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"ast-types-flow": "0.0.7",
"commander": "^2.11.0"
@@ -6887,8 +6902,7 @@
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
"integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==",
"dev": true,
- "license": "ISC",
- "peer": true
+ "license": "ISC"
},
"node_modules/autoprefixer": {
"version": "10.4.21",
@@ -6934,7 +6948,6 @@
"integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"dependencies": {
"ast-types-flow": "0.0.7"
}
@@ -7198,6 +7211,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.19",
"caniuse-lite": "^1.0.30001751",
@@ -7225,7 +7239,6 @@
"integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7652,7 +7665,6 @@
"integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@angular/compiler": "9.0.0",
"@angular/core": "9.0.0",
@@ -7681,7 +7693,6 @@
"integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"peerDependencies": {
"tslib": "^1.10.0"
}
@@ -7692,7 +7703,6 @@
"integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==",
"dev": true,
"license": "MIT",
- "peer": true,
"peerDependencies": {
"rxjs": "^6.5.3",
"tslib": "^1.10.0",
@@ -7719,7 +7729,6 @@
"integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
"dev": true,
"license": "BSD-3-Clause",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -8174,7 +8183,6 @@
"integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"cssesc": "^3.0.0",
"fastparse": "^1.1.2"
@@ -8199,7 +8207,6 @@
"integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"through": "X.X.X"
}
@@ -8229,8 +8236,7 @@
"resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz",
"integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==",
"dev": true,
- "license": "BSD-2-Clause",
- "peer": true
+ "license": "BSD-2-Clause"
},
"node_modules/date-format": {
"version": "4.0.14",
@@ -8859,6 +8865,7 @@
"integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -8991,7 +8998,6 @@
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@@ -9127,6 +9133,7 @@
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.0",
@@ -9260,8 +9267,7 @@
"resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz",
"integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/fastq": {
"version": "1.19.1",
@@ -10564,7 +10570,8 @@
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.12.0.tgz",
"integrity": "sha512-QqO4pX33GEML5JoGQU6BM5NHKPgEsg+TXp3jCIDek9MbfEp2JUYEFBo9EF1+hegWy/bCHS1m5nP0BOp18G6rVA==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/jasmine-spec-reporter": {
"version": "7.0.0",
@@ -10709,6 +10716,7 @@
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"dev": true,
"license": "MIT",
+ "peer": true,
"bin": {
"jiti": "bin/jiti.js"
}
@@ -10829,6 +10837,7 @@
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@colors/colors": "1.5.0",
"body-parser": "^1.19.0",
@@ -11331,7 +11340,8 @@
"version": "1.9.4",
"resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz",
"integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==",
- "license": "BSD-2-Clause"
+ "license": "BSD-2-Clause",
+ "peer": true
},
"node_modules/leaflet-geosearch": {
"version": "3.6.1",
@@ -11364,6 +11374,7 @@
"integrity": "sha512-kdTwsyRuncDfjEs0DlRILWNvxhDG/Zij4YLO4TMJgDLW+8OzpfkdPnRgrsRuY1o+oaxJGWsps5f/RVBgGmmN0w==",
"dev": true,
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"copy-anything": "^2.0.1",
"parse-node-version": "^1.0.1",
@@ -11508,6 +11519,7 @@
"integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"cli-truncate": "^4.0.0",
"colorette": "^2.0.20",
@@ -12239,6 +12251,7 @@
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"license": "MIT",
+ "peer": true,
"engines": {
"node": "*"
}
@@ -12247,7 +12260,8 @@
"version": "0.52.2",
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz",
"integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
},
"node_modules/mrmime": {
"version": "2.0.1",
@@ -13379,6 +13393,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -14096,6 +14111,7 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0",
+ "peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
@@ -14152,6 +14168,7 @@
"integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
@@ -14293,7 +14310,6 @@
"integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"semver": "^5.3.0"
}
@@ -14304,7 +14320,6 @@
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"license": "ISC",
- "peer": true,
"bin": {
"semver": "bin/semver"
}
@@ -15040,8 +15055,7 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
"dev": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/ssri": {
"version": "12.0.0",
@@ -15399,6 +15413,7 @@
"integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.14.0",
@@ -15469,8 +15484,7 @@
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/thunky": {
"version": "1.1.0",
@@ -15603,7 +15617,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tslint": {
"version": "6.1.3",
@@ -15668,7 +15683,6 @@
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"color-convert": "^1.9.0"
},
@@ -15682,7 +15696,6 @@
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"sprintf-js": "~1.0.2"
}
@@ -15693,7 +15706,6 @@
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -15709,7 +15721,6 @@
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"color-name": "1.1.3"
}
@@ -15719,8 +15730,7 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true,
- "license": "MIT",
- "peer": true
+ "license": "MIT"
},
"node_modules/tslint/node_modules/escape-string-regexp": {
"version": "1.0.5",
@@ -15728,7 +15738,6 @@
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.8.0"
}
@@ -15739,7 +15748,6 @@
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=4"
}
@@ -15750,7 +15758,6 @@
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -15765,7 +15772,6 @@
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
"license": "ISC",
- "peer": true,
"bin": {
"semver": "bin/semver"
}
@@ -15775,8 +15781,7 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true,
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/tslint/node_modules/supports-color": {
"version": "5.5.0",
@@ -15784,7 +15789,6 @@
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"has-flag": "^3.0.0"
},
@@ -15797,8 +15801,7 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true,
- "license": "0BSD",
- "peer": true
+ "license": "0BSD"
},
"node_modules/tsutils": {
"version": "2.29.0",
@@ -15806,7 +15809,6 @@
"integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"tslib": "^1.8.1"
},
@@ -15819,8 +15821,7 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true,
- "license": "0BSD",
- "peer": true
+ "license": "0BSD"
},
"node_modules/tuf-js": {
"version": "3.1.0",
@@ -15878,6 +15879,7 @@
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"devOptional": true,
"license": "Apache-2.0",
+ "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -16146,6 +16148,7 @@
"integrity": "sha512-4JLXU0tD6OZNVqlwzm3HGEhAHufSiyv+skb7q0d2367VDMzrU1Q/ZeepvkcHH0rZie6uqEtTQQe0OEOOluH3Mg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -16248,6 +16251,7 @@
"integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/bonjour": "^3.5.13",
"@types/connect-history-api-fallback": "^1.5.4",
@@ -17213,6 +17217,7 @@
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"dev": true,
"license": "MIT",
+ "peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
@@ -17231,7 +17236,8 @@
"version": "0.15.1",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz",
"integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==",
- "license": "MIT"
+ "license": "MIT",
+ "peer": true
}
}
}
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 3e737eb0..c728b456 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -3,7 +3,7 @@ import { PreloadAllModules, RouterModule, Routes } from "@angular/router";
import { NewUserComponent } from "./admin/users/new-kombit-user-page/new-user.component";
import { UserPageComponent } from "./admin/users/user-page/user-page.component";
import { AuthGuardService as AuthGuard } from "./auth/auth-guard.service";
-import { AuthComponent } from "./auth/auth.component";
+import { AuthComponent } from "@auth/auth.component";
import { ErrorPageComponent } from "./error-page/error-page.component";
const routes: Routes = [
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-dataset.model.ts b/src/app/applications/datatarget/opendatadk/opendatadk-dataset.model.ts
index 88f2e83c..c79e9785 100644
--- a/src/app/applications/datatarget/opendatadk/opendatadk-dataset.model.ts
+++ b/src/app/applications/datatarget/opendatadk/opendatadk-dataset.model.ts
@@ -4,10 +4,14 @@ export class OpenDataDkDataset {
resourceTitle: string;
description: string;
keywords: string[];
+ keywordTags: string;
keywordsInput: string;
license = "https://creativecommons.org/publicdomain/zero/1.0/";
authorName: string; //required
authorEmail: string; //reqired
url: string; // autogenerated with orgid as input
acceptTerms = false;
+ updateFrequency: string;
+ documentationUrl: string;
+ dataDirectory: boolean = false;
}
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.html b/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.html
index cd25f5ad..25615ea8 100644
--- a/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.html
+++ b/src/app/applications/datatarget/opendatadk/opendatadk-detail/opendatadk-detail.component.html
@@ -18,6 +18,11 @@
{{ openDataDkDataset.keywords ? openDataDkDataset.keywords : ("OPENDATADK.DETAILS.NA" | translate) }}
+
+ {{ "OPENDATADK.DETAILS.TAGS" | translate }}
+ {{ openDataDkDataset.keywordTags ?? ("OPENDATADK.DETAILS.NA" | translate) }}
+
+
{{ "OPENDATADK.DETAILS.AUTHORNAME" | translate }}
{{ openDataDkDataset.authorName }}
@@ -28,6 +33,21 @@
{{ openDataDkDataset.authorEmail }}
+
+ {{ "OPENDATADK.DETAILS.UPDATE-FREQUENCY" | translate }}
+ {{ openDataDkDataset.updateFrequency ? ("OPENDATADK.QUESTION.UPDATE-FREQUENCY-OPTIONS." + openDataDkDataset.updateFrequency | translate) : ("OPENDATADK.DETAILS.NA" | translate) }}
+
+
+
+ {{ "OPENDATADK.DETAILS.DOCUMENTATION-URL" | translate }}
+ {{ openDataDkDataset.documentationUrl ?? ("OPENDATADK.DETAILS.NA" | translate) }}
+
+
+
+ {{ "OPENDATADK.DETAILS.DATA-DIRECTORY" | translate }}
+ {{ openDataDkDataset.dataDirectory | yesNo }}
+
+
{{ "OPENDATADK.DETAILS.URL" | translate }}
{{ openDataDkDataset.url }}
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
index 81203fad..0a7a6af8 100644
--- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
+++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
@@ -146,8 +146,7 @@
{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |
matTooltipHideDelay="2000"
matTooltipPosition="above"
matTooltipShowDelay="600"
- >
-
+ />
{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |
+
{{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @for (frequency of selectableUpdateFrequencies; track frequency) {
+ {{ "OPENDATADK.QUESTION.UPDATE-FREQUENCY-OPTIONS." + frequency | translate }}
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ "OPENDATADK.QUESTION.DATA-DIRECTORY-DESCRIPTION" | translate }}
+
+ Datavejviser
+
+
+
+
+
+
@@ -295,60 +400,60 @@
{{ "QUESTION.DATATARGET.RELATIONS" | translate }}
@if (devices && payloadDecoders && payloadDeviceDatatarget?.length > 0) {
- @for (element of payloadDeviceDatatarget; track element; let i = $index) {
-
- |
-
-
- {{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }}
-
-
-
-
-
- @for (device of devices; track device) {
- {{ device.name }}
- }
-
-
-
- |
-
-
-
- {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }}
-
-
- {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }}
-
- @for (payloadDecoder of payloadDecoders; track payloadDecoder) {
-
- {{ payloadDecoder.name }}
+ @for (element of payloadDeviceDatatarget; track element; let i = $index) {
+
+ |
+
+
+ {{ "QUESTION.DATATARGET.SELECT-DEVICES" | translate }}
+
+
+
+
+
+ @for (device of devices; track device) {
+ {{ device.name }}
+ }
+
+
+
+ |
+
+
+
+ {{ "QUESTION.DATATARGET.SELECT-PAYLOADDECODER" | translate }}
+
+
+ {{ "QUESTION.DATATARGET.NO-PAYLOAD-DECODER-SELECTED" | translate }}
- }
-
-
-
- |
-
-
-
-
- {{ "DATATARGET.DELETE" | translate }}
+ @for (payloadDecoder of payloadDecoders; track payloadDecoder) {
+
+ {{ payloadDecoder.name }}
+
+ }
+
+
-
- |
-
- }
+ |
+
+
+
+
+ {{ "DATATARGET.DELETE" | translate }}
+
+
+ |
+
+ }
}
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts
index abd3f5d9..68286854 100644
--- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts
+++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.ts
@@ -59,6 +59,39 @@ export class OpendatadkEditComponent implements DatatargetEdit, OnDestroy {
"Økonomi og finanser",
];
+ selectableUpdateFrequencies = [
+ "CONT",
+ "1MIN",
+ "5MIN",
+ "10MIN",
+ "15MIN",
+ "TRIHOURLY",
+ "30MIN",
+ "HOURLY",
+ "BIHOURLY",
+ "12HRS",
+ "DAILY",
+ "WEEKLY",
+ "BIWEEKLY",
+ "MONTHLY",
+ "BIMONTHLY",
+ "QUARTERLY",
+ "ANNUAL",
+ "NEVER",
+ "UNKNOWN",
+ "OTHER",
+ // Unused options from specificaion
+ // "TRIENNIAL",
+ // "QUADRENNIAL",
+ // "QUINQUENNIAL",
+ // "AS_NEEDED",
+ // "NOT_PLANNED",
+ // "TRIDECENNIAL",
+ // "BIDECENNIAL",
+ // "DECENNIAL",
+ // "BIENNIAL",
+ ];
+
errorMessages: any[];
errorFields: string[];
diff --git a/src/assets/i18n/da.json b/src/assets/i18n/da.json
index 11a167f5..127c1f1b 100644
--- a/src/assets/i18n/da.json
+++ b/src/assets/i18n/da.json
@@ -354,14 +354,46 @@
"GIVE-OPENDATADK-DESCRIPTION": "Beskrivelse",
"GIVE-OPENDATADK-DESCRIPTION-PLACEHOLDER": "Beskrivelse",
"GIVE-OPENDATADK-KEYWORDS": "Angiv emneord",
- "GIVE-OPENDATADK-KEYWORDS-PLACEHOLDER": "Vælg nøgleord fra drop-down",
+ "GIVE-OPENDATADK-KEYWORDS-PLACEHOLDER": "Vælg nøgleord fra dropdown",
+ "GIVE-OPENDATADK-KEYWORDS-INFO": "Ved hjælp af emneord inddeles datasæt i kategorier, som dataanvendere kan søge i. Der er i alt 14 emneord, og der kan vælges flere til det samme datatarget.",
+ "GIVE-OPENDATADK-KEYWORDS-FREE": "Angiv nøgleord",
+ "GIVE-OPENDATADK-KEYWORDS-FREE-PLACEHOLDER": "Angiv emneord",
+ "GIVE-OPENDATADK-KEYWORDS-FREE-INFO": "Nøgleord er det samme som tags og øger muligheden for at finde dataene via fritekst-søgning. Giv dataene så mange nøgleord som muligt. Husk, det skal give mening for en ekstern bruger.",
"GIVE-OPENDATADK-AUTHORNAME": "Dataejer",
"GIVE-OPENDATADK-AUTHORNAME-PLACEHOLDER": "Jens Jensen",
"GIVE-OPENDATADK-AUTHORNAME-INFO": "Ansvarlig afdeling eller person",
"GIVE-OPENDATADK-AUTHOR-EMAIL": "Dataejers e-mail",
"GIVE-OPENDATADK-AUTHOR-EMAIL-PLACEHOLDER": "jens@jensen.dk",
+ "GIVE-UPDATE-FREQUENCY": "Angiv opdateringsfrekvens",
+ "GIVE-UPDATE-FREQUENCY-PLACEHOLDER": "Vælg opdateringsfrekvens fra dropdown",
+ "GIVE-OPENDATADK-DOCUMENTATION-URL": "Link til dokumentation",
+ "GIVE-OPENDATADK-DOCUMENTATION-URL-PLACEHOLDER": "Angiv url til dokumentation",
+ "GIVE-OPENDATADK-DOCUMENTATION-URL-INFO": "Det kan f.eks. være et link til et parsing skema af dataen.",
+ "DATA-DIRECTORY-DESCRIPTION": "Skal dataen sendes videre til ",
"ACCEPT-TERMS-PART-ONE": "Jeg accepterer hermed, at datasættet udgives under en",
- "TERMS-AND-CONDITIONS": "Creative Commons CC0 1.0 Universel (CC0 1.0) licens"
+ "TERMS-AND-CONDITIONS": "Creative Commons CC0 1.0 Universel (CC0 1.0) licens",
+ "UPDATE-FREQUENCY-OPTIONS": {
+ "CONT": "Kontinuerlig",
+ "1MIN": "Hvert minut",
+ "5MIN": "Hvert 5. minut",
+ "10MIN": "Hvert 10. minut",
+ "15MIN": "Hvert 15. minut",
+ "TRIHOURLY": "Tre gange i timen",
+ "30MIN": "Hvert 30. minut",
+ "HOURLY": "Hver time",
+ "BIHOURLY": "Hver anden time",
+ "12HRS": "Hver 12. time",
+ "DAILY": "Dagligt",
+ "WEEKLY": "Ugentligt",
+ "BIWEEKLY": "Hver anden uge",
+ "MONTHLY": "Månedligt",
+ "BIMONTHLY": "Hver anden måned",
+ "QUARTERLY": "Kvartalvist",
+ "ANNUAL": "Årligt",
+ "NEVER": "Aldrig",
+ "UNKNOWN": "Ukendt",
+ "OTHER": "Andet"
+ }
},
"DETAILS": {
"NAME": "Datasæt titel",
@@ -372,7 +404,11 @@
"AUTHORNAME": "Forfatterens navn",
"AUTHOREMAIL": "Forfatterens email",
"URL": "Endpoint til hentning af data",
- "NA": "Intet angivet"
+ "NA": "Intet angivet",
+ "TAGS": "Nøgleord",
+ "UPDATE-FREQUENCY": "Opdateringsfrekvens",
+ "DOCUMENTATION-URL": "Link til dokumentation",
+ "DATA-DIRECTORY": "Datavejviser"
},
"MAIL": {
"DIALOG_TITLE": "Anmod Open Data DK om høstning af data",
From 19aea6af207019eccdfc16013f625dedebb64e0f Mon Sep 17 00:00:00 2001
From: Frederik Christ Vestergaard
Date: Fri, 21 Nov 2025 09:23:27 +0100
Subject: [PATCH 2/3] Fix scroll to top
---
src/app/shared/services/scroll-to-top.service.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/shared/services/scroll-to-top.service.ts b/src/app/shared/services/scroll-to-top.service.ts
index b8afb14a..f248fca2 100644
--- a/src/app/shared/services/scroll-to-top.service.ts
+++ b/src/app/shared/services/scroll-to-top.service.ts
@@ -11,7 +11,7 @@ export class ScrollToTopService {
const currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
if (currentScroll > 0) {
window.requestAnimationFrame(smoothscroll);
- window.scrollTo(0, currentScroll - currentScroll / 5);
+ window.scrollTo(0, 0);
}
})();
}
From 7ef663a624dc69b452dd8dab2d2edfbd5b775172 Mon Sep 17 00:00:00 2001
From: Frederik Christ Vestergaard
Date: Fri, 21 Nov 2025 14:53:54 +0100
Subject: [PATCH 3/3] PR changes
---
.../opendatadk-edit.component.html | 16 ++++++++--------
src/assets/i18n/da.json | 12 ++++++------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
index 0a7a6af8..8f39107e 100644
--- a/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
+++ b/src/app/applications/datatarget/opendatadk/opendatadk-edit/opendatadk-edit.component.html
@@ -239,15 +239,15 @@ {{ (datatargetId ? "FORM.EDIT-DATATARGET" : "FORM.CREATE-NEW-DATATARGET") |
-
+