diff --git a/package-lock.json b/package-lock.json index d2139c0860..d6abdf179a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@angular/platform-browser-dynamic": "^12.2.14", "@angular/router": "^12.2.14", "@ckeditor/ckeditor5-angular": "^2.0.2", - "@dasch-swiss/dsp-js": "^6.1.0", + "@dasch-swiss/dsp-js": "^6.2.0", "@datadog/browser-rum": "^3.7.0", "@ngx-translate/core": "^12.1.2", "@ngx-translate/http-loader": "5.0.0", @@ -818,7 +818,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, "dependencies": { "@babel/highlight": "^7.16.0" }, @@ -838,7 +837,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.8", @@ -868,7 +866,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -877,7 +874,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, "dependencies": { "@babel/types": "^7.14.8", "jsesc": "^2.5.1", @@ -891,7 +887,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1033,7 +1028,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, "dependencies": { "@babel/helper-get-function-arity": "^7.16.0", "@babel/template": "^7.16.0", @@ -1047,7 +1041,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -1061,7 +1054,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1073,7 +1065,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1085,7 +1076,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1097,7 +1087,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1109,7 +1098,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.16.0", "@babel/helper-replace-supers": "^7.16.0", @@ -1128,7 +1116,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -1142,7 +1129,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1189,7 +1175,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.16.0", "@babel/helper-optimise-call-expression": "^7.16.0", @@ -1204,7 +1189,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1228,7 +1212,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0" }, @@ -1240,7 +1223,6 @@ "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -1286,7 +1268,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, "dependencies": { "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.3", @@ -1300,7 +1281,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -1314,7 +1294,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", @@ -1328,7 +1307,6 @@ "version": "7.16.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -2445,7 +2423,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -2459,7 +2436,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -2479,7 +2455,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, "dependencies": { "@babel/types": "^7.16.0", "jsesc": "^2.5.1", @@ -2493,7 +2468,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -2502,7 +2476,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" @@ -2548,9 +2521,9 @@ } }, "node_modules/@dasch-swiss/dsp-js": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-6.1.0.tgz", - "integrity": "sha512-uREVh2HI+BxsL67bLaFX90vwqxm0uBWmZ7QJtP9lJUijp/T93dkh/unRsvG6PhWE2nGnpK3peEC2IyKOVU25hA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-6.2.0.tgz", + "integrity": "sha512-L2nH01HYNLEoI2qriV1mJxlHgzBKNi0rYupJfU4MIj+TM3CEMTSmFRYGLug8iusCAup0ti5OZfCocWCkBAspIg==", "dependencies": { "@babel/helper-compilation-targets": "^7.14.5", "@types/jsonld": "^1.5.0", @@ -3841,7 +3814,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -4732,7 +4704,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5063,7 +5034,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -5071,8 +5041,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "node_modules/color-support": { "version": "1.1.3", @@ -5298,7 +5267,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -6169,7 +6137,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -7070,7 +7037,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -8541,7 +8507,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -8657,7 +8622,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "engines": { "node": ">=4" } @@ -8794,7 +8758,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, "engines": { "node": ">=4" } @@ -10345,8 +10308,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", @@ -10380,7 +10342,6 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -10438,7 +10399,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "dependencies": { "minimist": "^1.2.5" }, @@ -11483,8 +11443,7 @@ "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "node_modules/minipass": { "version": "3.1.5", @@ -11622,8 +11581,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "6.2.3", @@ -16066,8 +16024,7 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex": { "version": "1.1.0", @@ -17479,7 +17436,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -17698,7 +17654,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, "engines": { "node": ">=4" } @@ -20190,7 +20145,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", - "dev": true, "requires": { "@babel/highlight": "^7.16.0" } @@ -20204,7 +20158,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz", "integrity": "sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.14.8", @@ -20226,8 +20179,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -20235,7 +20187,6 @@ "version": "7.14.8", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz", "integrity": "sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg==", - "dev": true, "requires": { "@babel/types": "^7.14.8", "jsesc": "^2.5.1", @@ -20245,8 +20196,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -20355,7 +20305,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.16.0", "@babel/template": "^7.16.0", @@ -20366,7 +20315,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -20379,7 +20327,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20388,7 +20335,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20397,7 +20343,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20406,7 +20351,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20415,7 +20359,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "dev": true, "requires": { "@babel/helper-module-imports": "^7.16.0", "@babel/helper-replace-supers": "^7.16.0", @@ -20431,7 +20374,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -20444,7 +20386,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20481,7 +20422,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "dev": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.16.0", "@babel/helper-optimise-call-expression": "^7.16.0", @@ -20493,7 +20433,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20511,7 +20450,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", - "dev": true, "requires": { "@babel/types": "^7.16.0" } @@ -20519,8 +20457,7 @@ "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" }, "@babel/helper-validator-option": { "version": "7.14.5", @@ -20556,7 +20493,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", - "dev": true, "requires": { "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.3", @@ -20567,7 +20503,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", @@ -20580,7 +20515,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", @@ -20590,8 +20524,7 @@ "@babel/parser": { "version": "7.16.4", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==" }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.16.0", @@ -21343,7 +21276,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", - "dev": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.14.5", @@ -21354,7 +21286,6 @@ "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", - "dev": true, "requires": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.0", @@ -21371,7 +21302,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", - "dev": true, "requires": { "@babel/types": "^7.16.0", "jsesc": "^2.5.1", @@ -21381,8 +21311,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -21390,7 +21319,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" @@ -21420,9 +21348,9 @@ "dev": true }, "@dasch-swiss/dsp-js": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-6.1.0.tgz", - "integrity": "sha512-uREVh2HI+BxsL67bLaFX90vwqxm0uBWmZ7QJtP9lJUijp/T93dkh/unRsvG6PhWE2nGnpK3peEC2IyKOVU25hA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-6.2.0.tgz", + "integrity": "sha512-L2nH01HYNLEoI2qriV1mJxlHgzBKNi0rYupJfU4MIj+TM3CEMTSmFRYGLug8iusCAup0ti5OZfCocWCkBAspIg==", "requires": { "@babel/helper-compilation-targets": "^7.14.5", "@types/jsonld": "^1.5.0", @@ -21611,17 +21539,20 @@ "version": "12.2.15", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.15.tgz", "integrity": "sha512-9NmVVdcAmD+LS4lcARe5+qX6ILyrftRZbsCdgONEpHmi1hyDr0h3bkFUBxqGQRR4Xmom18s+N1CatQZToa6ekw==", - "dev": true + "dev": true, + "requires": {} }, "@ngx-translate/core": { "version": "12.1.2", "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-12.1.2.tgz", - "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==" + "integrity": "sha512-ZudJsqIxTKlLmPoqK8gJY3UpMGujR0Xm7HfXL6AR79yGRS23QqpjAhMfx4v5qUCcHMmQ9/78bW8QJLfp31c7vQ==", + "requires": {} }, "@ngx-translate/http-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-5.0.0.tgz", - "integrity": "sha512-8+aV7N52qed+6t4LIu4Yru/PkeBX4TR2ioXGwXzQE5syqSLTj/8TgKQIi3i2Z61ZhPxQG1qrGbapUoGQzUDVeg==" + "integrity": "sha512-8+aV7N52qed+6t4LIu4Yru/PkeBX4TR2ioXGwXzQE5syqSLTj/8TgKQIi3i2Z61ZhPxQG1qrGbapUoGQzUDVeg==", + "requires": {} }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -22277,13 +22208,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "adjust-sourcemap-loader": { "version": "4.0.0", @@ -22347,7 +22280,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-formats": { "version": "2.1.0", @@ -22362,7 +22296,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "alphanum-sort": { "version": "1.0.2", @@ -22416,7 +22351,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -23121,7 +23055,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -23166,7 +23099,8 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true + "dev": true, + "requires": {} }, "ckeditor5-custom-build": { "version": "git+ssh://git@github.com/dasch-swiss/ckeditor_custom_build.git#0a00a0b1aeeec81e7cd44b7a0a7a815cdafe926c", @@ -23333,13 +23267,15 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", - "dev": true + "dev": true, + "requires": {} }, "@angular/core": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true + "dev": true, + "requires": {} }, "source-map": { "version": "0.5.7", @@ -23375,7 +23311,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -23383,8 +23318,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-support": { "version": "1.1.3", @@ -23569,7 +23503,6 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -24162,7 +24095,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==", - "dev": true + "dev": true, + "requires": {} }, "csso": { "version": "4.2.0", @@ -24209,7 +24143,6 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -24879,8 +24812,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "7.32.0", @@ -26012,8 +25944,7 @@ "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", @@ -26098,8 +26029,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { "version": "11.0.4", @@ -26206,8 +26136,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.2", @@ -26577,7 +26506,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true + "dev": true, + "requires": {} }, "ieee754": { "version": "1.2.1", @@ -27386,8 +27316,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -27414,8 +27343,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -27467,7 +27395,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -27669,7 +27596,8 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true + "dev": true, + "requires": {} }, "karma-source-map-support": { "version": "1.4.0", @@ -28274,8 +28202,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.5", @@ -28378,8 +28305,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "6.2.3", @@ -29315,7 +29241,8 @@ "pdfjs-dist": { "version": "2.11.338", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.11.338.tgz", - "integrity": "sha512-Ti5VTB0VvSdtTtc7TG71ghMx0SEuNcEs4ghVuZxW0p6OqLjMc0xekZV1B+MmlxEG2Du2e5jgazucWIG/SXTcdA==" + "integrity": "sha512-Ti5VTB0VvSdtTtc7TG71ghMx0SEuNcEs4ghVuZxW0p6OqLjMc0xekZV1B+MmlxEG2Du2e5jgazucWIG/SXTcdA==", + "requires": {} }, "performance-now": { "version": "2.1.0", @@ -29843,25 +29770,29 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-duplicates": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-empty": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-discard-overridden": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==", - "dev": true + "dev": true, + "requires": {} }, "postcss-double-position-gradients": { "version": "1.0.0", @@ -30332,7 +30263,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true + "dev": true, + "requires": {} }, "postcss-modules-local-by-default": { "version": "4.0.0", @@ -30400,7 +30332,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", - "dev": true + "dev": true, + "requires": {} }, "postcss-normalize-display-values": { "version": "5.0.1", @@ -31692,8 +31625,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -32761,7 +32693,8 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==", - "dev": true + "dev": true, + "requires": {} }, "stylehacks": { "version": "5.0.1", @@ -32821,7 +32754,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -32986,8 +32918,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -34444,7 +34375,8 @@ "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true + "dev": true, + "requires": {} }, "xml2js": { "version": "0.4.23", diff --git a/package.json b/package.json index ada11e6c9a..f35a963b2c 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@angular/platform-browser-dynamic": "^12.2.14", "@angular/router": "^12.2.14", "@ckeditor/ckeditor5-angular": "^2.0.2", - "@dasch-swiss/dsp-js": "^6.1.0", + "@dasch-swiss/dsp-js": "^6.2.0", "@datadog/browser-rum": "^3.7.0", "@ngx-translate/core": "^12.1.2", "@ngx-translate/http-loader": "5.0.0", diff --git a/src/app/project/ontology/default-data/default-properties.ts b/src/app/project/ontology/default-data/default-properties.ts index 8309469446..75dd8b5d8c 100644 --- a/src/app/project/ontology/default-data/default-properties.ts +++ b/src/app/project/ontology/default-data/default-properties.ts @@ -33,6 +33,18 @@ export interface DefaultProperty { } export class DefaultProperties { + + public static unsupported: DefaultProperty = { + icon: 'warning_amber', + label: 'Unsupported property type', + description: 'This property type is not supported in the ontology editor', + subPropOf: undefined, + objectType: undefined, + guiEle: undefined, + group: 'Warning' + }; + + public static data: PropertyCategory[] = [ { group: 'Text', @@ -43,7 +55,7 @@ export class DefaultProperties { description: 'Short text such as title or name', subPropOf: Constants.HasValue, objectType: Constants.TextValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'SimpleText', // better element would be: 'Input', + guiEle: Constants.GuiSimpleText, // better element would be: 'Input', group: 'Text' // redundant information, but otherwise we don't get the main group name after selecting type }, { @@ -52,7 +64,7 @@ export class DefaultProperties { description: 'Long text such as description; could have line breaks', subPropOf: Constants.HasValue, objectType: Constants.TextValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Textarea', + guiEle: Constants.GuiTextarea, group: 'Text' }, { @@ -61,7 +73,7 @@ export class DefaultProperties { description: 'A rich text editor with formatting options', subPropOf: Constants.HasValue, objectType: Constants.TextValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Richtext', + guiEle: Constants.GuiRichText, group: 'Text' } ] @@ -75,7 +87,7 @@ export class DefaultProperties { description: 'Dropdown menu with values from predefined list', subPropOf: Constants.HasValue, objectType: Constants.ListValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'List', // better element would be: 'Pulldown' or 'Select' + guiEle: Constants.GuiPulldown, // better element would be: 'Pulldown' or 'Select' group: 'List' } ] @@ -89,7 +101,7 @@ export class DefaultProperties { description: 'Yes or no, 1 or 0, true or false', subPropOf: Constants.HasValue, objectType: Constants.BooleanValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Checkbox', // should be 'Toggle' but it's not supported in DSP-Tangoh, + guiEle: Constants.GuiCheckbox, // should be 'Toggle' but it's not supported in DSP-Tangoh, group: 'Boolean' } ] @@ -103,25 +115,16 @@ export class DefaultProperties { description: 'A date field with day, month and year', subPropOf: Constants.HasValue, objectType: Constants.DateValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Date', + guiEle: Constants.GuiDatePicker, group: 'Date / Time' }, - // { - // icon: 'date_range', - // label: 'Period', - // description: 'A period of time between two dates', - // subPropOf: Constants.HasValue, - // objectType: Constants.DateValue, - // guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Date', - // group: 'Date / Time' - // }, { icon: 'access_time', label: 'Timestamp', description: 'A single timestamp on a timeline', subPropOf: Constants.HasValue, objectType: Constants.TimeValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'TimeStamp', + guiEle: Constants.GuiTimeStamp, group: 'Date / Time' }, { @@ -130,7 +133,7 @@ export class DefaultProperties { description: 'A time sequence with start and end point on a timeline', subPropOf: Constants.HasValue, objectType: Constants.IntervalValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Interval', + guiEle: Constants.GuiInterval, group: 'Date / Time' } ] @@ -144,7 +147,7 @@ export class DefaultProperties { description: 'Integer value', subPropOf: Constants.HasValue, objectType: Constants.IntValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Spinbox', // 'Number', + guiEle: Constants.GuiSpinbox, // 'Number', group: 'Number' }, { @@ -153,16 +156,16 @@ export class DefaultProperties { description: 'Decimal value', subPropOf: Constants.HasValue, objectType: Constants.DecimalValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Spinbox', // 'Number', + guiEle: Constants.GuiSpinbox, // 'Number', group: 'Number' }, { icon: 'filter_3', label: 'Page number', description: 'The page number is needed for page classes in case of part of properties', - subPropOf: Constants.KnoraApiV2 + Constants.HashDelimiter + 'seqnum', + subPropOf: Constants.SeqNum, objectType: Constants.IntValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Spinbox', // 'Number', + guiEle: Constants.GuiSpinbox, // 'Number', group: 'Number' } ] @@ -176,17 +179,17 @@ export class DefaultProperties { description: 'Refers to a resource class', subPropOf: Constants.HasLinkTo, objectType: Constants.LinkValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Searchbox', // 'Autocomplete', + guiEle: Constants.GuiSearchbox, // 'Autocomplete', group: 'Link / Relation' }, { icon: 'extension', label: 'Part of class', description: 'Is part of a resource class', - subPropOf: Constants.KnoraApiV2 + Constants.HashDelimiter + 'isPartOf', + subPropOf: Constants.IsPartOf, objectType: Constants.LinkValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Searchbox', // 'Autocomplete', - group: 'Relation' + guiEle: Constants.GuiSearchbox, // 'Autocomplete', + group: 'Link / Relation' }, { icon: 'language', @@ -194,8 +197,8 @@ export class DefaultProperties { description: 'Link to an external website', subPropOf: Constants.HasValue, objectType: Constants.UriValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'SimpleText', - group: 'Link' + guiEle: Constants.GuiSimpleText, + group: 'Link / Relation' } ] }, @@ -208,7 +211,7 @@ export class DefaultProperties { description: 'Geographical location', subPropOf: Constants.HasValue, objectType: Constants.GeonameValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Geonames', + guiEle: Constants.GuiGeonames, group: 'Location' } ] @@ -222,7 +225,7 @@ export class DefaultProperties { description: 'A simple color value', subPropOf: Constants.HasValue, objectType: Constants.ColorValue, - guiEle: Constants.SalsahGui + Constants.HashDelimiter + 'Colorpicker', + guiEle: Constants.GuiColorPicker, group: 'Shape' } ] diff --git a/src/app/project/ontology/ontology.service.spec.ts b/src/app/project/ontology/ontology.service.spec.ts index 02a8b9a9ac..438d058d08 100644 --- a/src/app/project/ontology/ontology.service.spec.ts +++ b/src/app/project/ontology/ontology.service.spec.ts @@ -1,12 +1,22 @@ import { TestBed } from '@angular/core/testing'; - +import { CacheService } from 'src/app/main/cache/cache.service'; import { OntologyService } from './ontology.service'; + describe('OntologyService', () => { let service: OntologyService; + const cacheServiceSpy = jasmine.createSpyObj('CacheService', ['get']); + beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + providers: [ + { + provide: CacheService, + useValue: cacheServiceSpy + }, + ] + }); service = TestBed.inject(OntologyService); }); diff --git a/src/app/project/ontology/ontology.service.ts b/src/app/project/ontology/ontology.service.ts index f178661529..df949c7444 100644 --- a/src/app/project/ontology/ontology.service.ts +++ b/src/app/project/ontology/ontology.service.ts @@ -1,5 +1,16 @@ import { Injectable } from '@angular/core'; -import { Cardinality, Constants } from '@dasch-swiss/dsp-js'; +import { + Cardinality, + Constants, ReadOntology, + ResourcePropertyDefinitionWithAllLanguages +} from '@dasch-swiss/dsp-js'; +import { Observable, of } from 'rxjs'; +import { CacheService } from 'src/app/main/cache/cache.service'; +import { + DefaultProperties, + DefaultProperty, + PropertyCategory +} from './default-data/default-properties'; /** * helper methods for the ontology editor @@ -9,7 +20,12 @@ import { Cardinality, Constants } from '@dasch-swiss/dsp-js'; }) export class OntologyService { - constructor() { } + // list of default property types + defaultProperties: PropertyCategory[] = DefaultProperties.data; + + constructor( + private _cache: CacheService + ) { } /** * create a unique name (id) for resource classes or properties; @@ -79,4 +95,92 @@ export class OntologyService { return Cardinality._0_1; } } + + getSuperProperty(property: ResourcePropertyDefinitionWithAllLanguages): string { + // get ontology from property info + const ontoIri = property.id.split(Constants.HashDelimiter)[0]; + + let superPropIri: string; + + // get iri from sub properties + if (property.subPropertyOf.length) { + for (const subProp of property.subPropertyOf) { + const baseOntoIri = subProp.split(Constants.HashDelimiter)[0]; + // compare with knora base ontology + if (baseOntoIri !== Constants.KnoraApiV2) { + // the property is not a subproperty of knora base ontology + // get property iri from another ontology + this._cache.get('currentProjectOntologies').subscribe( + (ontologies: ReadOntology[]) => { + const onto = ontologies.find(i => i.id === baseOntoIri); + superPropIri = onto.properties[subProp].subPropertyOf[0]; + } + ); + } + + if (superPropIri) { + break; + } + } + } + + return (superPropIri ? superPropIri : undefined); + } + + /** + * get default property information for a certain ontology property + */ + getDefaultPropType(property: ResourcePropertyDefinitionWithAllLanguages): Observable { + let propType: DefaultProperty; + + if (!property.guiElement) { + // we don't know what element to use, so it's unsupported property + return of (DefaultProperties.unsupported); + } + + for (const group of this.defaultProperties) { + if (property.subPropertyOf.length) { + for (const subProp of property.subPropertyOf) { + // if subProp is of type "link to" or "part of" we have to check the subproperty; + // otherwise we get the necessary property info from the objectType + if (subProp === Constants.HasLinkTo || subProp === Constants.IsPartOf) { + propType = (group.elements.find(i => + i.guiEle === property.guiElement && i.subPropOf === subProp + )); + } else { + + // if the property is type of number or list, the gui element is not relevant + // because the app supports only one gui element (at the moment): the spinbox resp. the list pulldown + if (property.objectType === Constants.DecimalValue || property.objectType === Constants.ListValue) { + propType = (group.elements.find(i => + i.objectType === property.objectType + )); + } else if (property.objectType === Constants.IntValue && subProp === Constants.SeqNum) { + propType = (group.elements.find(i => + i.objectType === property.objectType && i.subPropOf === Constants.SeqNum + )); + } else { + propType = (group.elements.find(i => + i.guiEle === property.guiElement && i.objectType === property.objectType + )); + } + + } + } + if (propType) { + break; + } + } + } + + if (!propType) { + // property type could not be found in the list of default properties + // maybe it's not supported e.g. if propDef.objectType === Constants.GeomValue || propDef.subPropertyOf[0] === Constants.HasRepresentation + return of (DefaultProperties.unsupported); + } + + // return of(propType); + return of (propType); + + } } diff --git a/src/app/project/ontology/property-form/property-form.component.html b/src/app/project/ontology/property-form/property-form.component.html index 8db346216a..58e0d66a1b 100644 --- a/src/app/project/ontology/property-form/property-form.component.html +++ b/src/app/project/ontology/property-form/property-form.component.html @@ -5,8 +5,8 @@

You're adding an already existing property to this class. - The property can't modified here. If you want to modify it, - go to the "properties" view. + The property can't be modified here.
+ If you want to modify the label, the comment or the type, please go to the "properties" view.

@@ -31,6 +31,9 @@ + + {{propertyForm.controls['propType'].value.description}} + diff --git a/src/app/project/ontology/property-form/property-form.component.ts b/src/app/project/ontology/property-form/property-form.component.ts index ae80ba31f1..c3468c2600 100644 --- a/src/app/project/ontology/property-form/property-form.component.ts +++ b/src/app/project/ontology/property-form/property-form.component.ts @@ -96,6 +96,8 @@ export class PropertyFormComponent implements OnInit { // selection of possible property types in case of edit prop restrictedPropertyTypes: PropertyCategory[]; + unsupportedPropertyType = false; + showGuiAttr = false; guiAttrIcon = 'tune'; @@ -200,16 +202,23 @@ export class PropertyFormComponent implements OnInit { // filter property types by group const restrictedElements: DefaultProperty[] = this.filterPropertyTypesByGroup(this.propertyInfo.propType.group); - // slice array - // this slice value will be kept - // because there was the idea to shorten the array of restricted elements - // in case e.g. richtext can't be changed to simple text, then we shouldn't list the simple text item - const slice = 0; + if (restrictedElements.length) { + // slice array + // this slice value will be kept + // because there was the idea to shorten the array of restricted elements + // in case e.g. richtext can't be changed to simple text, then we shouldn't list the simple text item + const slice = 0; + + // there's only the object type "text", where we can change the gui element; + disablePropType = (this.propertyInfo.propType.objectType !== Constants.TextValue); - // there's only the object type "text", where we can change the gui element; - disablePropType = (this.propertyInfo.propType.objectType !== Constants.TextValue); + this.restrictedPropertyTypes[0].elements = restrictedElements.slice(slice); + } else { + // case of unsupported property type + this.restrictedPropertyTypes[0].elements.push(DefaultProperties.unsupported); + this.unsupportedPropertyType = true; + } - this.restrictedPropertyTypes[0].elements = restrictedElements.slice(slice); } else { this.restrictedPropertyTypes = this.defaultProperties; } @@ -330,8 +339,8 @@ export class PropertyFormComponent implements OnInit { switch (type.guiEle) { // prop type is a list - case Constants.SalsahGui + Constants.HashDelimiter + 'List': - case Constants.SalsahGui + Constants.HashDelimiter + 'Radio': + case Constants.GuiList: + case Constants.GuiRadio: this.showGuiAttr = true; // gui attribute value for lists looks as follow: hlist= // get index from guiAttr array where value starts with hlist= @@ -343,8 +352,8 @@ export class PropertyFormComponent implements OnInit { this.propertyForm.controls['guiAttr'].setValue(listIri); break; - // prop type is resource pointer - case Constants.SalsahGui + Constants.HashDelimiter + 'Searchbox': + // prop type is resource pointer: link to or part of + case Constants.GuiSearchbox: this.showGuiAttr = true; this.propertyForm.controls['guiAttr'].setValue(this.propertyInfo.propDef.objectType); break; @@ -417,34 +426,39 @@ export class PropertyFormComponent implements OnInit { (classCommentResponse: ResourcePropertyDefinitionWithAllLanguages) => { this.lastModificationDate = classCommentResponse.lastModificationDate; - const onto4guiEle = new UpdateOntology(); - onto4guiEle.id = this.ontology.id; - onto4guiEle.lastModificationDate = this.lastModificationDate; + if (!this.unsupportedPropertyType) { + const onto4guiEle = new UpdateOntology(); + onto4guiEle.id = this.ontology.id; + onto4guiEle.lastModificationDate = this.lastModificationDate; - const updateGuiEle = new UpdateResourcePropertyGuiElement(); - updateGuiEle.id = this.propertyInfo.propDef.id; - updateGuiEle.guiElement = this.propertyForm.controls['propType'].value.guiEle; + const updateGuiEle = new UpdateResourcePropertyGuiElement(); + updateGuiEle.id = this.propertyInfo.propDef.id; + updateGuiEle.guiElement = this.propertyForm.controls['propType'].value.guiEle; - const guiAttr = this.propertyForm.controls['guiAttr'].value; - if (guiAttr) { - updateGuiEle.guiAttributes = this.setGuiAttribute(guiAttr); - } - - onto4guiEle.entity = updateGuiEle; - - this._dspApiConnection.v2.onto.replaceGuiElementOfProperty(onto4guiEle).subscribe( - (guiEleResponse: ResourcePropertyDefinitionWithAllLanguages) => { - this.lastModificationDate = guiEleResponse.lastModificationDate; - // close the dialog box - this.loading = false; - this.closeDialog.emit(); - }, - (error: ApiResponseError) => { - this.error = true; - this.loading = false; - this._errorHandler.showMessage(error); + const guiAttr = this.propertyForm.controls['guiAttr'].value; + if (guiAttr) { + updateGuiEle.guiAttributes = this.setGuiAttribute(guiAttr); } - ); + + onto4guiEle.entity = updateGuiEle; + + this._dspApiConnection.v2.onto.replaceGuiElementOfProperty(onto4guiEle).subscribe( + (guiEleResponse: ResourcePropertyDefinitionWithAllLanguages) => { + this.lastModificationDate = guiEleResponse.lastModificationDate; + // close the dialog box + this.loading = false; + this.closeDialog.emit(); + }, + (error: ApiResponseError) => { + this.error = true; + this.loading = false; + this._errorHandler.showMessage(error); + } + ); + } else { + this.loading = false; + this.closeDialog.emit(); + } }, (error: ApiResponseError) => { @@ -485,7 +499,7 @@ export class PropertyFormComponent implements OnInit { newResProp.guiElement = this.propertyInfo.propType.guiEle; newResProp.subPropertyOf = [this.propertyInfo.propType.subPropOf]; - if (this.propertyInfo.propType.subPropOf === Constants.HasLinkTo || this.propertyInfo.propType.subPropOf === Constants.KnoraApiV2 + Constants.HashDelimiter + 'isPartOf') { + if (this.propertyInfo.propType.subPropOf === Constants.HasLinkTo || this.propertyInfo.propType.subPropOf === Constants.IsPartOf) { newResProp.objectType = guiAttr; newResProp.subjectType = this.resClassIri; } else { @@ -565,24 +579,24 @@ export class PropertyFormComponent implements OnInit { switch (this.propertyInfo.propType.guiEle) { - case Constants.SalsahGui + Constants.HashDelimiter + 'Colorpicker': + case Constants.GuiColorPicker: guiAttributes = ['ncolors=' + guiAttr]; break; - case Constants.SalsahGui + Constants.HashDelimiter + 'List': - case Constants.SalsahGui + Constants.HashDelimiter + 'Pulldown': - case Constants.SalsahGui + Constants.HashDelimiter + 'Radio': + case Constants.GuiList: + case Constants.GuiPulldown: + case Constants.GuiRadio: guiAttributes = ['hlist=<' + guiAttr + '>']; break; - case Constants.SalsahGui + Constants.HashDelimiter + 'SimpleText': + case Constants.GuiSimpleText: // --> TODO could have two guiAttr fields: size and maxlength // we suggest to use default value for size; we do not support this guiAttr in DSP-App guiAttributes = ['maxlength=' + guiAttr]; break; - case Constants.SalsahGui + Constants.HashDelimiter + 'Spinbox': + case Constants.GuiSpinbox: // --> TODO could have two guiAttr fields: min and max guiAttributes = ['min=' + guiAttr, 'max=' + guiAttr]; break; - case Constants.SalsahGui + Constants.HashDelimiter + 'Textarea': + case Constants.GuiTextarea: // --> TODO could have four guiAttr fields: width, cols, rows, wrap // we suggest to use default values; we do not support this guiAttr in DSP-App guiAttributes = ['width=100%']; diff --git a/src/app/project/ontology/property-info/property-info.component.html b/src/app/project/ontology/property-info/property-info.component.html index 50fe17c85b..a9eb30d873 100644 --- a/src/app/project/ontology/property-info/property-info.component.html +++ b/src/app/project/ontology/property-info/property-info.component.html @@ -65,10 +65,13 @@
- + + + - + diff --git a/src/app/project/ontology/resource-class-info/resource-class-info.component.ts b/src/app/project/ontology/resource-class-info/resource-class-info.component.ts index 429671556a..2ca5cb5db1 100644 --- a/src/app/project/ontology/resource-class-info/resource-class-info.component.ts +++ b/src/app/project/ontology/resource-class-info/resource-class-info.component.ts @@ -23,6 +23,7 @@ import { NotificationService } from 'src/app/main/services/notification.service' import { DefaultProperties, DefaultProperty, PropertyCategory, PropertyInfoObject } from '../default-data/default-properties'; import { DefaultClass, DefaultResourceClasses } from '../default-data/default-resource-classes'; import { CardinalityInfo } from '../ontology.component'; +import { OntologyService } from '../ontology.service'; @Component({ selector: 'app-resource-class-info', @@ -85,7 +86,8 @@ export class ResourceClassInfoComponent implements OnInit { private _cache: CacheService, private _dialog: MatDialog, private _errorHandler: ErrorHandlerService, - private _notification: NotificationService + private _notification: NotificationService, + private _ontoService: OntologyService ) { } ngOnInit(): void { @@ -194,25 +196,21 @@ export class ResourceClassInfoComponent implements OnInit { }); this.ontoProperties.forEach((availableProp: ResourcePropertyDefinitionWithAllLanguages) => { + const superProp = this._ontoService.getSuperProperty(availableProp); + if (superProp) { + if (availableProp.subPropertyOf.indexOf(superProp) === -1) { + availableProp.subPropertyOf.push(superProp); + } + } + let propType: DefaultProperty; // find corresponding default property to have more prop info - if (availableProp.guiElement) { - for (const group of this.defaultProperties) { - if (availableProp.subPropertyOf[0] !== Constants.HasLinkTo && availableProp.subPropertyOf[0] !== Constants.KnoraApiV2 + Constants.HashDelimiter + 'isPartOf') { - propType = group.elements.find(i => - i.guiEle === availableProp.guiElement && i.objectType === availableProp.objectType - ); - } else { - propType = group.elements.find(i => - i.guiEle === availableProp.guiElement && i.subPropOf === availableProp.subPropertyOf[0] - ); - } - - if (propType) { - break; - } + this._ontoService.getDefaultPropType(availableProp).subscribe( + (prop: DefaultProperty) => { + propType = prop; } - } + ); + this.existingProperties.push( { propType: propType, @@ -258,17 +256,12 @@ export class ResourceClassInfoComponent implements OnInit { } addExistingProperty(propDef: ResourcePropertyDefinitionWithAllLanguages) { - let propType: DefaultProperty; - for (const group of this.defaultProperties) { - propType = group.elements.find(i => - i.guiEle === propDef.guiElement && - (i.objectType === propDef.objectType || i.subPropOf === propDef.subPropertyOf[0]) - ); - if (propType) { - break; - } - } + // find prop type from list of existing properties + const pos = this.existingProperties.findIndex(item => item.propDef.id === propDef.id); + + const propType = this.existingProperties[pos].propType; + const cardinality: CardinalityInfo = { resClass: this.resourceClass, property: { diff --git a/src/assets/style/_ontology.scss b/src/assets/style/_ontology.scss index 692ea2fed8..e557fae323 100644 --- a/src/assets/style/_ontology.scss +++ b/src/assets/style/_ontology.scss @@ -17,6 +17,7 @@ width: calc(100% - 12px); } + .ontology-warning-with-prefix, .ontology-error-with-prefix { position: relative; left: 64px;