diff --git a/package-lock.json b/package-lock.json
index 5b4c35d61..da38dc6f5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -52,6 +52,7 @@
"npx": "^10.2.2",
"rxjs": "^7.8.1",
"tslib": "^2.0.0",
+ "webpack-bundle-analyzer": "^4.10.2",
"yaml": "^2.4.1",
"zone.js": "~0.13.3"
},
@@ -3313,7 +3314,6 @@
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true,
"engines": {
"node": ">=10.0.0"
}
@@ -5917,6 +5917,11 @@
"node": ">=14"
}
},
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+ "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw=="
+ },
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@@ -7176,7 +7181,6 @@
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
"integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
- "dev": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -9783,8 +9787,7 @@
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
- "dev": true
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
},
"node_modules/debug": {
"version": "4.3.6",
@@ -10158,6 +10161,11 @@
"node": ">=4"
}
},
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -11839,6 +11847,20 @@
"typescript": ">=3.7.5"
}
},
+ "node_modules/gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "dependencies": {
+ "duplexer": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/handle-thing": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -12064,8 +12086,7 @@
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
},
"node_modules/html-tags": {
"version": "3.3.1",
@@ -20270,6 +20291,14 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
"node_modules/optimism": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz",
@@ -22678,6 +22707,27 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/sirv": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
+ "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
+ "dependencies": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/sirv/node_modules/mrmime": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
+ "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -23834,6 +23884,14 @@
"node": ">=0.6"
}
},
+ "node_modules/totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/tough-cookie": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
@@ -24719,6 +24777,81 @@
}
}
},
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
+ "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
+ "dependencies": {
+ "@discoveryjs/json-ext": "0.5.7",
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "commander": "^7.2.0",
+ "debounce": "^1.2.1",
+ "escape-string-regexp": "^4.0.0",
+ "gzip-size": "^6.0.0",
+ "html-escaper": "^2.0.2",
+ "opener": "^1.5.2",
+ "picocolors": "^1.0.0",
+ "sirv": "^2.0.3",
+ "ws": "^7.3.1"
+ },
+ "bin": {
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/webpack-dev-middleware": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz",
@@ -27467,8 +27600,7 @@
"@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
- "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
- "dev": true
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="
},
"@esbuild/linux-x64": {
"version": "0.18.17",
@@ -29677,6 +29809,11 @@
"dev": true,
"optional": true
},
+ "@polka/url": {
+ "version": "1.0.0-next.28",
+ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz",
+ "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw=="
+ },
"@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
@@ -30724,8 +30861,7 @@
"acorn": {
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
- "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
- "dev": true
+ "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg=="
},
"acorn-globals": {
"version": "6.0.0",
@@ -32698,8 +32834,7 @@
"debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
- "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==",
- "dev": true
+ "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="
},
"debug": {
"version": "4.3.6",
@@ -32974,6 +33109,11 @@
"integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==",
"dev": true
},
+ "duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="
+ },
"eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -34253,6 +34393,14 @@
"@wessberg/ts-evaluator": "0.0.27"
}
},
+ "gzip-size": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz",
+ "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==",
+ "requires": {
+ "duplexer": "^0.1.2"
+ }
+ },
"handle-thing": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
@@ -34436,8 +34584,7 @@
"html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
- "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
- "dev": true
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="
},
"html-tags": {
"version": "3.3.1",
@@ -40621,6 +40768,11 @@
"is-wsl": "^2.2.0"
}
},
+ "opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
+ },
"optimism": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz",
@@ -42366,6 +42518,23 @@
}
}
},
+ "sirv": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz",
+ "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==",
+ "requires": {
+ "@polka/url": "^1.0.0-next.24",
+ "mrmime": "^2.0.0",
+ "totalist": "^3.0.0"
+ },
+ "dependencies": {
+ "mrmime": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
+ "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw=="
+ }
+ }
+ },
"slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -43245,6 +43414,11 @@
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
"dev": true
},
+ "totalist": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
+ "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="
+ },
"tough-cookie": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
@@ -43971,6 +44145,51 @@
}
}
},
+ "webpack-bundle-analyzer": {
+ "version": "4.10.2",
+ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz",
+ "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==",
+ "requires": {
+ "@discoveryjs/json-ext": "0.5.7",
+ "acorn": "^8.0.4",
+ "acorn-walk": "^8.0.0",
+ "commander": "^7.2.0",
+ "debounce": "^1.2.1",
+ "escape-string-regexp": "^4.0.0",
+ "gzip-size": "^6.0.0",
+ "html-escaper": "^2.0.2",
+ "opener": "^1.5.2",
+ "picocolors": "^1.0.0",
+ "sirv": "^2.0.3",
+ "ws": "^7.3.1"
+ },
+ "dependencies": {
+ "acorn-walk": {
+ "version": "8.3.4",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz",
+ "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==",
+ "requires": {
+ "acorn": "^8.11.0"
+ }
+ },
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+ },
+ "ws": {
+ "version": "7.5.10",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz",
+ "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
+ "requires": {}
+ }
+ }
+ },
"webpack-dev-middleware": {
"version": "6.1.2",
"resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz",
diff --git a/package.json b/package.json
index 084f3b2e4..cf931fb72 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,10 @@
"ng": "ng",
"start": "ng serve --watch",
"build": "ng build",
+ "build:stats": "ng build --stats-json",
"build-prod": "ng build --configuration production",
+ "build-prod:stats": "ng build --configuration production --stats-json",
+ "analyze": "webpack-bundle-analyzer dist/kamu-platform/stats.json",
"test": "ng test --no-progress --no-watch --browsers ChromeHeadless --code-coverage",
"test-firefox": "ng test --no-progress --browsers Firefox --code-coverage",
"lint": "eslint . --ext .ts",
@@ -68,6 +71,7 @@
"npx": "^10.2.2",
"rxjs": "^7.8.1",
"tslib": "^2.0.0",
+ "webpack-bundle-analyzer": "^4.10.2",
"yaml": "^2.4.1",
"zone.js": "~0.13.3"
},
diff --git a/src/app/account/account.module.ts b/src/app/account/account.module.ts
new file mode 100644
index 000000000..78fbcdb76
--- /dev/null
+++ b/src/app/account/account.module.ts
@@ -0,0 +1,38 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+import { AccountComponent } from "./account.component";
+import { DatasetFlowModule } from "src/app/dataset-flow/dataset-flow/dataset-flow.module";
+import { AccountFlowsTabComponent } from "./additional-components/account-flows-tab/account-flows-tab.component";
+import { MatIconModule } from "@angular/material/icon";
+import { PaginationModule } from "src/app/components/pagination-component/pagination.module";
+import { SharedModule } from "src/app/shared/shared/shared.module";
+import { MatDividerModule } from "@angular/material/divider";
+import { DatasetsTabComponent } from "./additional-components/datasets-tab/datasets-tab.component";
+import { DatasetListModule } from "src/app/components/dataset-list-component/dataset-list.module";
+import { FormsModule, ReactiveFormsModule } from "@angular/forms";
+import { MatTableModule } from "@angular/material/table";
+import { RouterModule } from "@angular/router";
+import { AngularSvgIconModule } from "angular-svg-icon";
+import { MatButtonToggleModule } from "@angular/material/button-toggle";
+import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
+
+@NgModule({
+ declarations: [AccountComponent, AccountFlowsTabComponent, DatasetsTabComponent],
+ imports: [
+ CommonModule,
+ DatasetFlowModule,
+ MatIconModule,
+ MatDividerModule,
+ DatasetListModule,
+ PaginationModule,
+ SharedModule,
+ MatTableModule,
+ RouterModule,
+ AngularSvgIconModule,
+ MatButtonToggleModule,
+ FormsModule,
+ ReactiveFormsModule,
+ NgbModule,
+ ],
+})
+export class AccountModule {}
diff --git a/src/app/api/mock/dataset.mock.ts b/src/app/api/mock/dataset.mock.ts
index 7181e87b7..fb9ba718e 100644
--- a/src/app/api/mock/dataset.mock.ts
+++ b/src/app/api/mock/dataset.mock.ts
@@ -20,7 +20,7 @@ import {
LineageGraphNodeData,
LineageGraphNodeKind,
LineageNodeAccess,
-} from "src/app/dataset-view/additional-components/lineage-component/lineage-model";
+} from "src/app/dataset-view/additional-components/lineage-tab/lineage-graph.model";
import { Node } from "@swimlane/ngx-graph/lib/models/node.model";
export const TEST_DATASET_ID = "did:odf:z4k88e8kmp7wTEePmNDSprhY2TqwDxSiFwHiau8fnUk4V4Cpgu7";
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 3c4f6c7e2..4f71720bb 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -86,19 +86,24 @@ export const routes: Routes = [
{
path: `:${ProjectLinks.URL_PARAM_CATEGORY}`,
component: AccountSettingsComponent,
+ loadChildren: () =>
+ import("./auth/settings/account-settings.module").then((m) => m.AccountSettingsModule),
},
],
},
{
path: `:${ProjectLinks.URL_PARAM_ACCOUNT_NAME}`,
children: [
- {
- path: "",
- component: AccountComponent,
- },
{
path: `:${ProjectLinks.URL_PARAM_DATASET_NAME}`,
component: DatasetComponent,
+
+ loadChildren: () => import("./dataset-view/dataset.module").then((m) => m.DatasetModule),
+ },
+ {
+ path: "",
+ component: AccountComponent,
+ loadChildren: () => import("./account/account.module").then((m) => m.AccountModule),
},
],
},
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 2af380646..e7abfe8db 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -27,7 +27,6 @@ import { MatSidenavModule } from "@angular/material/sidenav";
import { MatMenuModule } from "@angular/material/menu";
import { MatButtonModule } from "@angular/material/button";
import { SearchModule } from "./search/search.module";
-import { DatasetModule } from "./dataset-view/dataset.module";
import { DatasetService } from "./dataset-view/dataset.service";
import { DatasetCreateModule } from "./dataset-create/dataset-create.module";
import { AppHeaderComponent } from "./components/app-header/app-header.component";
@@ -48,7 +47,6 @@ import { DatasetSubscriptionsService } from "./dataset-view/dataset.subscription
import { SpinnerModule } from "./components/spinner/spinner.module";
import { DatasetApi } from "./api/dataset.api";
import { ErrorHandlerService } from "./services/error-handler.service";
-import { AccountSettingsComponent } from "./auth/settings/account-settings.component";
import { MatButtonToggleModule } from "@angular/material/button-toggle";
import { DatasetListModule } from "./components/dataset-list-component/dataset-list.module";
import { PaginationModule } from "./components/pagination-component/pagination.module";
@@ -67,10 +65,6 @@ import { apolloCache } from "./apollo-cache.helper";
import { AdminDashboardComponent } from "./admin-view/admin-dashboard/admin-dashboard.component";
import { DatasetFlowDetailsModule } from "./dataset-flow/dataset-flow-details/dataset-flow-details.module";
import { MatSortModule } from "@angular/material/sort";
-import { AccountFlowsTabComponent } from "./account/additional-components/account-flows-tab/account-flows-tab.component";
-import { AccountComponent } from "./account/account.component";
-import { DatasetsTabComponent } from "./account/additional-components/datasets-tab/datasets-tab.component";
-import { AccessTokensTabComponent } from "./auth/settings/tabs/access-tokens-tab/access-tokens-tab.component";
import { MatSlideToggleModule } from "@angular/material/slide-toggle";
import { DynamicTableModule } from "./components/dynamic-table/dynamic-table.module";
import { AutofocusModule } from "./common/directives/autofocus.module";
@@ -203,17 +197,11 @@ const MatModules = [
AppHeaderComponent,
LoginComponent,
GithubCallbackComponent,
- AccountComponent,
NotificationIndicatorComponent,
- AccountSettingsComponent,
- DatasetsTabComponent,
AdminDashboardComponent,
- AccessTokensTabComponent,
- AccountFlowsTabComponent,
],
imports: [
- AppRoutingModule,
- DatasetModule,
+ // DatasetModule,
DatasetCreateModule,
MetadataBlockModule,
ModalModule.forRoot(),
@@ -252,6 +240,7 @@ const MatModules = [
DatasetFlowDetailsModule,
DynamicTableModule,
AutofocusModule,
+ AppRoutingModule,
],
providers: [...Services],
bootstrap: [AppComponent],
diff --git a/src/app/auth/settings/account-settings.module.ts b/src/app/auth/settings/account-settings.module.ts
new file mode 100644
index 000000000..799ceeae1
--- /dev/null
+++ b/src/app/auth/settings/account-settings.module.ts
@@ -0,0 +1,29 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+import { AccessTokensTabComponent } from "./tabs/access-tokens-tab/access-tokens-tab.component";
+import { AccountSettingsComponent } from "./account-settings.component";
+import { RouterModule } from "@angular/router";
+import { AngularSvgIconModule } from "angular-svg-icon";
+import { MatDividerModule } from "@angular/material/divider";
+import { FormsModule, ReactiveFormsModule } from "@angular/forms";
+import { MatIconModule } from "@angular/material/icon";
+import { PaginationModule } from "src/app/components/pagination-component/pagination.module";
+import { MatTableModule } from "@angular/material/table";
+import { MatSlideToggleModule } from "@angular/material/slide-toggle";
+
+@NgModule({
+ declarations: [AccessTokensTabComponent, AccountSettingsComponent],
+ imports: [
+ CommonModule,
+ RouterModule,
+ AngularSvgIconModule,
+ MatDividerModule,
+ ReactiveFormsModule,
+ FormsModule,
+ MatIconModule,
+ PaginationModule,
+ MatTableModule,
+ MatSlideToggleModule,
+ ],
+})
+export class AccountSettingsModule {}
diff --git a/src/app/components/timeline-component/timeline.component.scss b/src/app/components/timeline-component/timeline.component.scss
index ed88f089f..98961079d 100644
--- a/src/app/components/timeline-component/timeline.component.scss
+++ b/src/app/components/timeline-component/timeline.component.scss
@@ -1,5 +1,4 @@
@import "var";
-@import "node_modules/bootstrap/dist/css/bootstrap.min";
.timeline-block {
position: relative;
diff --git a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.scss b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.scss
index ce7497faf..9cb46ab11 100644
--- a/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.scss
+++ b/src/app/dataset-block/metadata-block/components/block-navigation/block-navigation.component.scss
@@ -7,6 +7,10 @@
color: #6c757d;
}
}
+
+ .cuppa-dropdown {
+ width: 100%;
+ }
}
}
diff --git a/src/app/dataset-block/metadata-block/metadata-block.component.spec.ts b/src/app/dataset-block/metadata-block/metadata-block.component.spec.ts
index 2dece159b..73d750a3f 100644
--- a/src/app/dataset-block/metadata-block/metadata-block.component.spec.ts
+++ b/src/app/dataset-block/metadata-block/metadata-block.component.spec.ts
@@ -12,7 +12,6 @@ import { NgMultiSelectDropDownModule } from "ng-multiselect-dropdown";
import { FormsModule } from "@angular/forms";
import { EventDetailsComponent } from "./components/event-details/event-details.component";
import { BlockHeaderComponent } from "./components/block-header/block-header.component";
-import { DatasetViewMenuComponent } from "src/app/dataset-view/dataset-view-menu/dataset-view-menu.component";
import { MatButtonToggleModule } from "@angular/material/button-toggle";
import { MatMenuModule } from "@angular/material/menu";
import { DatasetViewHeaderComponent } from "src/app/dataset-view/dataset-view-header/dataset-view-header.component";
@@ -25,6 +24,7 @@ import { YamlViewSectionComponent } from "./components/yaml-view-section/yaml-vi
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
import { DataAccessPanelModule } from "src/app/components/data-access-panel/data-access-panel.module";
import { SharedModule } from "src/app/shared/shared/shared.module";
+import { DatasetViewMenuModule } from "src/app/dataset-view/dataset-view-menu/dataset-view-menu/dataset-view-menu.module";
describe("MetadataBlockComponent", () => {
let component: MetadataBlockComponent;
@@ -37,7 +37,6 @@ describe("MetadataBlockComponent", () => {
BlockNavigationComponent,
EventDetailsComponent,
BlockHeaderComponent,
- DatasetViewMenuComponent,
DatasetViewHeaderComponent,
SearchAdditionalButtonsComponent,
SearchAdditionalButtonsNavComponent,
@@ -59,6 +58,7 @@ describe("MetadataBlockComponent", () => {
DataAccessPanelModule,
RouterModule,
SharedModule,
+ DatasetViewMenuModule,
],
providers: [
DatasetApi,
diff --git a/src/app/dataset-block/metadata-block/metadata-block.module.ts b/src/app/dataset-block/metadata-block/metadata-block.module.ts
index 2bf326d9b..437eb9f21 100644
--- a/src/app/dataset-block/metadata-block/metadata-block.module.ts
+++ b/src/app/dataset-block/metadata-block/metadata-block.module.ts
@@ -8,7 +8,6 @@ import { EventDetailsComponent } from "./components/event-details/event-details.
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { MetadataBlockComponent } from "./metadata-block.component";
-import { DatasetModule } from "src/app/dataset-view/dataset.module";
import { BlockHeaderComponent } from "./components/block-header/block-header.component";
import { BlockNavigationComponent } from "./components/block-navigation/block-navigation.component";
import { MatMenuModule } from "@angular/material/menu";
@@ -48,6 +47,9 @@ import { SetDataSchemaEventComponent } from "./components/event-details/componen
import { UnsupportedEventComponent } from "./components/event-details/components/unsupported-event/unsupported-event.component";
import { TopicsPropertyComponent } from "./components/event-details/components/common/topics-property/topics-property.component";
import { TimePropertyComponent } from "./components/event-details/components/common/time-property/time-property.component";
+import { AngularMultiSelectModule } from "angular2-multiselect-dropdown";
+import { DatasetViewMenuModule } from "src/app/dataset-view/dataset-view-menu/dataset-view-menu/dataset-view-menu.module";
+import { DatasetViewHeaderModule } from "src/app/dataset-view/dataset-view-header/dataset-view-header/dataset-view-header.module";
@NgModule({
declarations: [
@@ -91,7 +93,6 @@ import { TimePropertyComponent } from "./components/event-details/components/com
],
imports: [
CommonModule,
- DatasetModule,
MatMenuModule,
MatDividerModule,
FormsModule,
@@ -102,6 +103,9 @@ import { TimePropertyComponent } from "./components/event-details/components/com
DisplayTimeModule,
DisplayHashModule,
SharedModule,
+ AngularMultiSelectModule,
+ DatasetViewMenuModule,
+ DatasetViewHeaderModule,
],
exports: [MetadataBlockComponent],
})
diff --git a/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.module.ts b/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.module.ts
index 44e77e951..5827e2b27 100644
--- a/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.module.ts
+++ b/src/app/dataset-flow/dataset-flow-details/dataset-flow-details.module.ts
@@ -1,3 +1,4 @@
+import { DatasetViewHeaderModule } from "./../../dataset-view/dataset-view-header/dataset-view-header/dataset-view-header.module";
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { MatIconModule } from "@angular/material/icon";
@@ -5,11 +6,12 @@ import { MatDividerModule } from "@angular/material/divider";
import { MatMenuModule } from "@angular/material/menu";
import { RouterModule } from "@angular/router";
import { AngularSvgIconModule } from "angular-svg-icon";
-import { DatasetModule } from "src/app/dataset-view/dataset.module";
import { DatasetFlowDetailsComponent } from "./dataset-flow-details.component";
import { FlowDetailsHistoryTabComponent } from "./tabs/flow-details-history-tab/flow-details-history-tab.component";
import { FlowDetailsSummaryTabComponent } from "./tabs/flow-details-summary-tab/flow-details-summary-tab.component";
import { FlowDetailsLogsTabComponent } from "./tabs/flow-details-logs-tab/flow-details-logs-tab.component";
+import { DatasetViewMenuModule } from "src/app/dataset-view/dataset-view-menu/dataset-view-menu/dataset-view-menu.module";
+import { SharedModule } from "src/app/shared/shared/shared.module";
@NgModule({
declarations: [
@@ -22,10 +24,12 @@ import { FlowDetailsLogsTabComponent } from "./tabs/flow-details-logs-tab/flow-d
CommonModule,
MatIconModule,
MatDividerModule,
- DatasetModule,
RouterModule,
AngularSvgIconModule,
MatMenuModule,
+ DatasetViewHeaderModule,
+ DatasetViewMenuModule,
+ SharedModule,
],
})
export class DatasetFlowDetailsModule {}
diff --git a/src/app/dataset-flow/dataset-flow/dataset-flow.module.ts b/src/app/dataset-flow/dataset-flow/dataset-flow.module.ts
new file mode 100644
index 000000000..f610787d1
--- /dev/null
+++ b/src/app/dataset-flow/dataset-flow/dataset-flow.module.ts
@@ -0,0 +1,35 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+import { TileBaseWidgetComponent } from "src/app/common/components/tile-base-widget/tile-base-widget.component";
+import { FlowsTableComponent } from "src/app/common/components/flows-table/flows-table.component";
+import { MatDividerModule } from "@angular/material/divider";
+import { MatMenuModule } from "@angular/material/menu";
+import { NgbPopoverModule } from "@ng-bootstrap/ng-bootstrap";
+import { RouterModule } from "@angular/router";
+import { AngularSvgIconModule } from "angular-svg-icon";
+import { MatIconModule } from "@angular/material/icon";
+import { SharedModule } from "src/app/shared/shared/shared.module";
+import { MatTableModule } from "@angular/material/table";
+import { FormsModule } from "@angular/forms";
+import { AngularMultiSelectModule } from "angular2-multiselect-dropdown";
+import { MatButtonModule } from "@angular/material/button";
+
+@NgModule({
+ declarations: [TileBaseWidgetComponent, FlowsTableComponent],
+ imports: [
+ CommonModule,
+ MatDividerModule,
+ MatMenuModule,
+ NgbPopoverModule,
+ RouterModule,
+ AngularSvgIconModule,
+ MatIconModule,
+ SharedModule,
+ MatTableModule,
+ FormsModule,
+ AngularMultiSelectModule,
+ MatButtonModule,
+ ],
+ exports: [TileBaseWidgetComponent, FlowsTableComponent],
+})
+export class DatasetFlowModule {}
diff --git a/src/app/dataset-view/additional-components/data-component/data.component.html b/src/app/dataset-view/additional-components/data-tab/data-component/data.component.html
similarity index 94%
rename from src/app/dataset-view/additional-components/data-component/data.component.html
rename to src/app/dataset-view/additional-components/data-tab/data-component/data.component.html
index c2d6ea8a7..875bc82a1 100644
--- a/src/app/dataset-view/additional-components/data-component/data.component.html
+++ b/src/app/dataset-view/additional-components/data-tab/data-component/data.component.html
@@ -1,4 +1,4 @@
-
+
{
@@ -73,17 +73,17 @@ describe("DataComponent", () => {
expect(component).toBeTruthy();
});
- it("should check run sql button", fakeAsync(() => {
- const runSQLRequestEmitSpy = spyOn(component.runSQLRequestEmit, "emit");
- tick();
- fixture.detectChanges();
- runSQLRequestEmitSpy.calls.reset();
+ // it("should check run sql button", fakeAsync(() => {
+ // const runSQLRequestEmitSpy = spyOn(component.runSQLRequestEmit, "emit");
+ // tick();
+ // fixture.detectChanges();
+ // runSQLRequestEmitSpy.calls.reset();
- emitClickOnElementByDataTestId(fixture, "runSqlQueryButton");
+ // emitClickOnElementByDataTestId(fixture, "runSqlQueryButton");
- expect(runSQLRequestEmitSpy).toHaveBeenCalledTimes(1);
- flush();
- }));
+ // expect(runSQLRequestEmitSpy).toHaveBeenCalledTimes(1);
+ // flush();
+ // }));
it("should check add data", () => {
const ngbModalServiceSpy = spyOn(ngbModalService, "open").and.callThrough();
diff --git a/src/app/dataset-view/additional-components/data-component/data.component.ts b/src/app/dataset-view/additional-components/data-tab/data-component/data.component.ts
similarity index 74%
rename from src/app/dataset-view/additional-components/data-component/data.component.ts
rename to src/app/dataset-view/additional-components/data-tab/data-component/data.component.ts
index c8f219260..2a4311807 100644
--- a/src/app/dataset-view/additional-components/data-component/data.component.ts
+++ b/src/app/dataset-view/additional-components/data-tab/data-component/data.component.ts
@@ -1,23 +1,24 @@
-import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, OnInit, Output } from "@angular/core";
+import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from "@angular/core";
import { Location } from "@angular/common";
-import { map, Observable } from "rxjs";
+import { finalize, map, Observable } from "rxjs";
import AppValues from "src/app/common/app.values";
-import { DatasetFlowType, DatasetKind, OffsetInterval } from "../../../api/kamu.graphql.interface";
+import { DatasetFlowType, DatasetKind, OffsetInterval } from "../../../../api/kamu.graphql.interface";
import { DataSqlErrorUpdate, OverviewUpdate } from "src/app/dataset-view/dataset.subscriptions.interface";
-import { DatasetRequestBySql } from "../../../interface/dataset.interface";
-import { DatasetSubscriptionsService } from "../../dataset.subscriptions.service";
+import { DatasetRequestBySql } from "../../../../interface/dataset.interface";
+import { DatasetSubscriptionsService } from "../../../dataset.subscriptions.service";
import { BaseComponent } from "src/app/common/base.component";
import { DatasetBasicsFragment } from "src/app/api/kamu.graphql.interface";
import { MaybeNull } from "src/app/common/app.types";
import ProjectLinks from "src/app/project-links";
import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap";
-import { AddDataModalComponent } from "../overview-component/components/add-data-modal/add-data-modal.component";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
-import { DatasetViewTypeEnum } from "../../dataset-view.interface";
-import { DatasetFlowsService } from "../flows-component/services/dataset-flows.service";
+import { DatasetViewTypeEnum } from "../../../dataset-view.interface";
+import { DatasetFlowsService } from "../../flows-component/services/dataset-flows.service";
import { NavigationService } from "src/app/services/navigation.service";
import { SqlQueryResponseState } from "src/app/query/global-query/global-query.model";
import { SqlQueryService } from "src/app/services/sql-query.service";
+import { DatasetService } from "../../../dataset.service";
+import { AddDataModalComponent } from "../../overview-tab/components/add-data-modal/add-data-modal.component";
@Component({
selector: "app-data",
@@ -25,11 +26,8 @@ import { SqlQueryService } from "src/app/services/sql-query.service";
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DataComponent extends BaseComponent implements OnInit {
- @Input({ required: true }) public datasetBasics: DatasetBasicsFragment;
- @Input({ required: true }) public sqlLoading: boolean;
- @Input() public resultTime: number;
- @Output() public runSQLRequestEmit = new EventEmitter();
-
+ public datasetBasics: DatasetBasicsFragment;
+ public sqlLoading: boolean = false;
public sqlRequestCode = `select\n *\nfrom `;
private offsetColumnName = AppValues.DEFAULT_OFFSET_COLUMN_NAME;
@@ -44,8 +42,13 @@ export class DataComponent extends BaseComponent implements OnInit {
private datasetFlowsService = inject(DatasetFlowsService);
private navigationService = inject(NavigationService);
private sqlQueryService = inject(SqlQueryService);
+ protected datasetService = inject(DatasetService);
+ protected cdr = inject(ChangeDetectorRef);
public ngOnInit(): void {
+ this.datasetService.datasetChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((datasetBasics) => {
+ this.datasetBasics = datasetBasics;
+ });
this.overviewUpdate$ = this.datasetSubsService.overviewChanges;
this.sqlErrorMarker$ = this.sqlQueryService.sqlErrorOccurrences.pipe(
map((data: DataSqlErrorUpdate) => data.error),
@@ -56,7 +59,22 @@ export class DataComponent extends BaseComponent implements OnInit {
}
public runSQLRequest(params: DatasetRequestBySql): void {
- this.runSQLRequestEmit.emit(params);
+ this.onRunSQLRequest(params);
+ }
+
+ public onRunSQLRequest(params: DatasetRequestBySql): void {
+ this.sqlLoading = true;
+ this.sqlQueryService
+ // TODO: Propagate limit from UI and display when it was reached
+ .requestDataSqlRun(params)
+ .pipe(
+ finalize(() => {
+ this.sqlLoading = false;
+ }),
+ takeUntilDestroyed(this.destroyRef),
+ )
+ .subscribe();
+ this.cdr.detectChanges();
}
private buildSqlRequestCode(): void {
diff --git a/src/app/dataset-view/additional-components/data-tab/data-tab-routing.module.ts b/src/app/dataset-view/additional-components/data-tab/data-tab-routing.module.ts
new file mode 100644
index 000000000..f8ae09ef2
--- /dev/null
+++ b/src/app/dataset-view/additional-components/data-tab/data-tab-routing.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core'
+import { RouterModule, Routes } from '@angular/router'
+
+import { DataComponent } from './data-component/data.component'
+
+const routes: Routes = [{ path: '', component: DataComponent }]
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class DataTabRoutingModule {}
diff --git a/src/app/dataset-view/additional-components/data-tab/data-tab.module.ts b/src/app/dataset-view/additional-components/data-tab/data-tab.module.ts
new file mode 100644
index 000000000..b377e7466
--- /dev/null
+++ b/src/app/dataset-view/additional-components/data-tab/data-tab.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+
+import { DataComponent } from "./data-component/data.component";
+import { QuerySharedModule } from "src/app/query/shared/query-shared/query-shared.module";
+import { DataTabRoutingModule } from "./data-tab-routing.module";
+
+@NgModule({
+ declarations: [DataComponent],
+ imports: [CommonModule, QuerySharedModule, DataTabRoutingModule],
+})
+export class DataTabModule {}
diff --git a/src/app/dataset-view/additional-components/dataset-tabs-routing.module.ts b/src/app/dataset-view/additional-components/dataset-tabs-routing.module.ts
new file mode 100644
index 000000000..9364808c9
--- /dev/null
+++ b/src/app/dataset-view/additional-components/dataset-tabs-routing.module.ts
@@ -0,0 +1,47 @@
+import { NgModule } from "@angular/core";
+import { RouterModule, Routes } from "@angular/router";
+import { DatasetViewTypeEnum } from "../dataset-view.interface";
+import { MetadataComponent } from "./metadata-component/metadata.component";
+import { FlowsComponent } from "./flows-component/flows.component";
+
+const routes: Routes = [
+ {
+ path: '', redirectTo: 'overview', pathMatch: 'full'
+ },
+ {
+ path: "overview",
+ loadChildren: () => import("./overview-tab/overview-tab.module").then((m) => m.OverviewTabModule),
+ data: { tab: DatasetViewTypeEnum.Overview },
+ },
+ {
+ path: "data",
+ loadChildren: () => import("./data-tab/data-tab.module").then((m) => m.DataTabModule),
+ data: { tab: DatasetViewTypeEnum.Data },
+ },
+ {
+ path: "metadata",
+ component: MetadataComponent,
+ data: { tab: DatasetViewTypeEnum.Metadata },
+ },
+ {
+ path: "history",
+ loadChildren: () => import("./history-tab/history-tab.module").then((m) => m.HistoryTabModule),
+ data: { tab: DatasetViewTypeEnum.History },
+ },
+ {
+ path: "lineage",
+ loadChildren: () => import("./lineage-tab/lineage-tab.module").then((m) => m.LineageTabModule),
+ data: { tab: DatasetViewTypeEnum.Lineage },
+ },
+ {
+ path: "flows",
+ component: FlowsComponent,
+ data: { tab: DatasetViewTypeEnum.Flows },
+ },
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class DatasetTabsRoutingModule {}
diff --git a/src/app/dataset-view/additional-components/flows-component/flows.component.ts b/src/app/dataset-view/additional-components/flows-component/flows.component.ts
index 112abc726..8b59cbcac 100644
--- a/src/app/dataset-view/additional-components/flows-component/flows.component.ts
+++ b/src/app/dataset-view/additional-components/flows-component/flows.component.ts
@@ -1,4 +1,4 @@
-import { ChangeDetectionStrategy, Component, inject, Input, OnInit } from "@angular/core";
+import { ChangeDetectionStrategy, Component, inject, OnInit } from "@angular/core";
import {
DatasetBasicsFragment,
DatasetFlowType,
@@ -18,6 +18,7 @@ import { OverviewUpdate } from "../../dataset.subscriptions.interface";
import { FlowsTableFiltersOptions } from "src/app/common/components/flows-table/flows-table.types";
import ProjectLinks from "src/app/project-links";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
+import { DatasetService } from "../../dataset.service";
@Component({
selector: "app-flows",
@@ -26,7 +27,7 @@ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class FlowsComponent extends FlowsTableProcessingBaseComponent implements OnInit {
- @Input({ required: true }) public datasetBasics: DatasetBasicsFragment;
+ public datasetBasics: DatasetBasicsFragment;
public searchFilter = "";
public overview: DatasetOverviewFragment;
public readonly DISPLAY_COLUMNS: string[] = ["description", "information", "creator", "options"]; //1
@@ -36,10 +37,15 @@ export class FlowsComponent extends FlowsTableProcessingBaseComponent implements
public readonly URL_PARAM_ADD_POLLING_SOURCE = ProjectLinks.URL_PARAM_ADD_POLLING_SOURCE;
private datasetSubsService = inject(DatasetSubscriptionsService);
+ private datasetService = inject(DatasetService);
ngOnInit(): void {
+ this.datasetService.datasetChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((datasetChanges) => {
+ this.datasetBasics = datasetChanges;
+ });
this.getPageFromUrl();
this.fetchTableData(this.currentPage);
+
this.datasetSubsService.overviewChanges
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((overviewUpdate: OverviewUpdate) => {
diff --git a/src/app/dataset-view/additional-components/history-component/history.component.ts b/src/app/dataset-view/additional-components/history-component/history.component.ts
deleted file mode 100644
index e2880fd34..000000000
--- a/src/app/dataset-view/additional-components/history-component/history.component.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Observable } from "rxjs";
-import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from "@angular/core";
-import { BaseComponent } from "src/app/common/base.component";
-import { DatasetHistoryUpdate } from "../../dataset.subscriptions.interface";
-import { DatasetSubscriptionsService } from "../../dataset.subscriptions.service";
-import { MaybeNull } from "src/app/common/app.types";
-
-@Component({
- selector: "app-history",
- templateUrl: "./history.component.html",
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class HistoryComponent extends BaseComponent {
- private datasetSubsService = inject(DatasetSubscriptionsService);
-
- @Input({ required: true }) public datasetName: string;
- @Output() onPageChangeEmit = new EventEmitter();
- public historyUpdate$: Observable> = this.datasetSubsService.historyChanges;
-
- public onPageChange(currentPage: number): void {
- this.onPageChangeEmit.emit(currentPage);
- }
-}
diff --git a/src/app/dataset-view/additional-components/history-component/history.component.html b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.html
similarity index 79%
rename from src/app/dataset-view/additional-components/history-component/history.component.html
rename to src/app/dataset-view/additional-components/history-tab/history-component/history.component.html
index ee5bc77bb..cd71be7b9 100644
--- a/src/app/dataset-view/additional-components/history-component/history.component.html
+++ b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.html
@@ -6,14 +6,14 @@
diff --git a/src/app/dataset-view/additional-components/history-component/history.component.scss b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.scss
similarity index 100%
rename from src/app/dataset-view/additional-components/history-component/history.component.scss
rename to src/app/dataset-view/additional-components/history-tab/history-component/history.component.scss
diff --git a/src/app/dataset-view/additional-components/history-component/history.component.spec.ts b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.spec.ts
similarity index 94%
rename from src/app/dataset-view/additional-components/history-component/history.component.spec.ts
rename to src/app/dataset-view/additional-components/history-tab/history-component/history.component.spec.ts
index 56c03a0d7..07ae4a3dd 100644
--- a/src/app/dataset-view/additional-components/history-component/history.component.spec.ts
+++ b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.spec.ts
@@ -1,7 +1,5 @@
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { first } from "rxjs/operators";
-import { DatasetSubscriptionsService } from "../../dataset.subscriptions.service";
-import { mockHistoryUpdate } from "../data-tabs.mock";
import { HistoryComponent } from "./history.component";
import { SharedTestModule } from "src/app/common/shared-test.module";
import { PaginationComponent } from "src/app/components/pagination-component/pagination.component";
@@ -14,6 +12,8 @@ import { HttpClientTestingModule } from "@angular/common/http/testing";
import { ToastrModule } from "ngx-toastr";
import { MatIconModule } from "@angular/material/icon";
import { RouterTestingModule } from "@angular/router/testing";
+import { DatasetSubscriptionsService } from "src/app/dataset-view/dataset.subscriptions.service";
+import { mockHistoryUpdate } from "../../data-tabs.mock";
describe("HistoryComponent", () => {
let component: HistoryComponent;
diff --git a/src/app/dataset-view/additional-components/history-tab/history-component/history.component.ts b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.ts
new file mode 100644
index 000000000..208ceea15
--- /dev/null
+++ b/src/app/dataset-view/additional-components/history-tab/history-component/history.component.ts
@@ -0,0 +1,37 @@
+import { Observable } from "rxjs";
+import { ChangeDetectionStrategy, Component, EventEmitter, inject, Output } from "@angular/core";
+import { BaseComponent } from "src/app/common/base.component";
+import { MaybeNull } from "src/app/common/app.types";
+import { NavigationService } from "src/app/services/navigation.service";
+import { DatasetInfo } from "src/app/interface/navigation.interface";
+import { DatasetSubscriptionsService } from "src/app/dataset-view/dataset.subscriptions.service";
+import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface";
+import { DatasetHistoryUpdate } from "src/app/dataset-view/dataset.subscriptions.interface";
+
+@Component({
+ selector: "app-history",
+ templateUrl: "./history.component.html",
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class HistoryComponent extends BaseComponent {
+ private datasetSubsService = inject(DatasetSubscriptionsService);
+ private navigationService = inject(NavigationService);
+ @Output() onPageChangeEmit = new EventEmitter();
+ public historyUpdate$: Observable> = this.datasetSubsService.historyChanges;
+
+ public onPageChange(currentPage: number, datasetInfo: DatasetInfo): void {
+ this.navigationService.navigateToDatasetView({
+ accountName: datasetInfo.accountName,
+ datasetName: datasetInfo.datasetName,
+ tab: DatasetViewTypeEnum.History,
+ page: currentPage,
+ });
+ // this.initDatasetViewByType(
+ // {
+ // accountName: this.datasetBasics.owner.accountName,
+ // datasetName: this.datasetBasics.name,
+ // },
+ // currentPage,
+ // );
+ }
+}
diff --git a/src/app/dataset-view/additional-components/history-tab/history-tab-routing.module.ts b/src/app/dataset-view/additional-components/history-tab/history-tab-routing.module.ts
new file mode 100644
index 000000000..37b596f33
--- /dev/null
+++ b/src/app/dataset-view/additional-components/history-tab/history-tab-routing.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core'
+import { RouterModule, Routes } from '@angular/router'
+
+import { HistoryComponent } from './history-component/history.component'
+
+const routes: Routes = [{ path: '', component: HistoryComponent }]
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class HistoryTabRoutingModule {}
diff --git a/src/app/dataset-view/additional-components/history-tab/history-tab.module.ts b/src/app/dataset-view/additional-components/history-tab/history-tab.module.ts
new file mode 100644
index 000000000..e0fbec74c
--- /dev/null
+++ b/src/app/dataset-view/additional-components/history-tab/history-tab.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+
+import { HistoryComponent } from "./history-component/history.component";
+import { HistoryTabRoutingModule } from "./history-tab-routing.module";
+import { TimelineModule } from "src/app/components/timeline-component/timeline.module";
+import { PaginationModule } from "src/app/components/pagination-component/pagination.module";
+
+@NgModule({
+ declarations: [HistoryComponent],
+ imports: [CommonModule, PaginationModule, TimelineModule, HistoryTabRoutingModule],
+})
+export class HistoryTabModule {}
diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts b/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts
deleted file mode 100644
index 91c1bc76d..000000000
--- a/src/app/dataset-view/additional-components/lineage-component/lineage.component.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { Observable } from "rxjs";
-import { ChangeDetectionStrategy, Component, EventEmitter, OnInit, Output, inject } from "@angular/core";
-import { Node } from "@swimlane/ngx-graph";
-import { BaseComponent } from "src/app/common/base.component";
-import { LineageGraphBuilderService } from "./services/lineage-graph-builder.service";
-import { LineageGraphUpdate } from "./lineage-model";
-import { MaybeNull } from "src/app/common/app.types";
-@Component({
- selector: "app-lineage",
- templateUrl: "./lineage.component.html",
- changeDetection: ChangeDetectionStrategy.OnPush,
-})
-export class LineageComponent extends BaseComponent implements OnInit {
- @Output() onClickNodeEmit = new EventEmitter();
- public lineageGraphUpdate$: Observable>;
-
- private lineageGraphBuilderService = inject(LineageGraphBuilderService);
-
- public onClickNode(node: Node): void {
- this.onClickNodeEmit.emit(node);
- }
-
- public ngOnInit(): void {
- this.lineageGraphUpdate$ = this.lineageGraphBuilderService.buildGraph();
- }
-}
diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage.component.html b/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.html
similarity index 100%
rename from src/app/dataset-view/additional-components/lineage-component/lineage.component.html
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.html
diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage.component.spec.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.spec.ts
similarity index 96%
rename from src/app/dataset-view/additional-components/lineage-component/lineage.component.spec.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.spec.ts
index 782b3a82d..ebe831cc9 100644
--- a/src/app/dataset-view/additional-components/lineage-component/lineage.component.spec.ts
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.spec.ts
@@ -1,4 +1,4 @@
-import { mockNode } from "../../../search/mock.data";
+
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { LineageComponent } from "./lineage.component";
@@ -9,6 +9,7 @@ import { ApolloModule } from "apollo-angular";
import { AccountService } from "src/app/services/account.service";
import { of } from "rxjs";
import { ToastrModule } from "ngx-toastr";
+import { mockNode } from "src/app/search/mock.data";
describe("LineageComponent", () => {
let component: LineageComponent;
diff --git a/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.ts
new file mode 100644
index 000000000..a09753f81
--- /dev/null
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-component/lineage.component.ts
@@ -0,0 +1,43 @@
+import { Observable } from "rxjs";
+import { ChangeDetectionStrategy, Component, OnInit, inject } from "@angular/core";
+import { Node } from "@swimlane/ngx-graph";
+import { BaseComponent } from "src/app/common/base.component";
+import { LineageGraphBuilderService } from "../services/lineage-graph-builder.service";
+import { LineageGraphNodeData, LineageGraphNodeKind, LineageGraphUpdate } from "../lineage-graph.model";
+import { MaybeNull } from "src/app/common/app.types";
+import { NavigationService } from "src/app/services/navigation.service";
+import { DatasetViewTypeEnum } from "src/app/dataset-view/dataset-view.interface";
+
+@Component({
+ selector: "app-lineage",
+ templateUrl: "./lineage.component.html",
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class LineageComponent extends BaseComponent implements OnInit {
+ public lineageGraphUpdate$: Observable>;
+
+ private lineageGraphBuilderService = inject(LineageGraphBuilderService);
+ private navigationService = inject(NavigationService);
+
+ public onClickNode(node: Node): void {
+ const nodeData: LineageGraphNodeData = node.data as LineageGraphNodeData;
+ /* istanbul ignore else */
+ if (nodeData.kind === LineageGraphNodeKind.Dataset) {
+ this.onSelectDataset(nodeData.dataObject.accountName, nodeData.dataObject.name);
+ } else {
+ throw new Error("Clicked lineage node of unexpected type");
+ }
+ }
+
+ public onSelectDataset(accountName?: string, datasetName?: string): void {
+ this.navigationService.navigateToDatasetView({
+ accountName: accountName ? accountName : this.getDatasetInfoFromUrl().accountName,
+ datasetName: datasetName ? datasetName : this.getDatasetInfoFromUrl().datasetName,
+ tab: DatasetViewTypeEnum.Lineage,
+ });
+ }
+
+ public ngOnInit(): void {
+ this.lineageGraphUpdate$ = this.lineageGraphBuilderService.buildGraph();
+ }
+}
diff --git a/src/app/dataset-view/additional-components/lineage-component/lineage-model.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph.model.ts
similarity index 100%
rename from src/app/dataset-view/additional-components/lineage-component/lineage-model.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph.model.ts
diff --git a/src/app/components/lineage-graph/ligeage-graph.settings.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/ligeage-graph.settings.ts
similarity index 100%
rename from src/app/components/lineage-graph/ligeage-graph.settings.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/ligeage-graph.settings.ts
diff --git a/src/app/components/lineage-graph/lineage-graph.component.html b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.html
similarity index 100%
rename from src/app/components/lineage-graph/lineage-graph.component.html
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.html
diff --git a/src/app/components/lineage-graph/lineage-graph.component.scss b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.scss
similarity index 100%
rename from src/app/components/lineage-graph/lineage-graph.component.scss
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.scss
diff --git a/src/app/components/lineage-graph/lineage-graph.component.spec.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.spec.ts
similarity index 100%
rename from src/app/components/lineage-graph/lineage-graph.component.spec.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.spec.ts
diff --git a/src/app/components/lineage-graph/lineage-graph.component.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.ts
similarity index 95%
rename from src/app/components/lineage-graph/lineage-graph.component.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.ts
index 773152674..3e242fd10 100644
--- a/src/app/components/lineage-graph/lineage-graph.component.ts
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.component.ts
@@ -1,4 +1,3 @@
-import { WidgetHeightService } from "../../services/widget-height.service";
import {
ChangeDetectionStrategy,
Component,
@@ -18,10 +17,11 @@ import AppValues from "src/app/common/app.values";
import {
LineageGraph,
LineageGraphNodeKind,
-} from "src/app/dataset-view/additional-components/lineage-component/lineage-model";
+} from "src/app/dataset-view/additional-components/lineage-tab/lineage-graph.model";
import { LineageGraphConfig, LINEAGE_CONFIG } from "./ligeage-graph.settings";
import { SessionStorageService } from "src/app/services/session-storage.service";
import { MaybeUndefined } from "src/app/common/app.types";
+import { WidgetHeightService } from "src/app/services/widget-height.service";
@Component({
selector: "app-lineage-graph",
diff --git a/src/app/components/lineage-graph/lineage-graph.module.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.module.ts
similarity index 89%
rename from src/app/components/lineage-graph/lineage-graph.module.ts
rename to src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.module.ts
index 624e259fc..11ca44b41 100644
--- a/src/app/components/lineage-graph/lineage-graph.module.ts
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-graph/lineage-graph.module.ts
@@ -5,7 +5,7 @@ import { LineageGraphComponent } from "./lineage-graph.component";
import { NgxGraphModule } from "@swimlane/ngx-graph";
import { MatIconModule } from "@angular/material/icon";
import { DisplaySizeModule } from "src/app/common/pipes/display-size.module";
-import { DisplayTimeModule } from "../display-time/display-time.module";
+import { DisplayTimeModule } from "src/app/components/display-time/display-time.module";
@NgModule({
imports: [CommonModule, FormsModule, NgxGraphModule, MatIconModule, DisplaySizeModule, DisplayTimeModule],
diff --git a/src/app/dataset-view/additional-components/lineage-tab/lineage-tab-routing.module.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-tab-routing.module.ts
new file mode 100644
index 000000000..d161dfcb3
--- /dev/null
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-tab-routing.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from '@angular/core'
+import { RouterModule, Routes } from '@angular/router'
+
+import { LineageComponent } from './lineage-component/lineage.component'
+
+const routes: Routes = [{ path: '', component: LineageComponent }]
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class LineageTabRoutingModule {}
diff --git a/src/app/dataset-view/additional-components/lineage-tab/lineage-tab.module.ts b/src/app/dataset-view/additional-components/lineage-tab/lineage-tab.module.ts
new file mode 100644
index 000000000..45078ac84
--- /dev/null
+++ b/src/app/dataset-view/additional-components/lineage-tab/lineage-tab.module.ts
@@ -0,0 +1,12 @@
+import { NgModule } from "@angular/core";
+import { CommonModule } from "@angular/common";
+
+import { LineageComponent } from "./lineage-component/lineage.component";
+import { LineageTabRoutingModule } from "./lineage-tab-routing.module";
+import { LineageGraphModule } from "./lineage-graph/lineage-graph.module";
+
+@NgModule({
+ declarations: [LineageComponent],
+ imports: [CommonModule, LineageTabRoutingModule, LineageGraphModule],
+})
+export class LineageTabModule {}
diff --git a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.spec.ts b/src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.spec.ts
similarity index 98%
rename from src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.spec.ts
rename to src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.spec.ts
index 94ed4c417..0aade48af 100644
--- a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.spec.ts
+++ b/src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.spec.ts
@@ -6,7 +6,7 @@ import {
mockLineageGraphUpdate,
mockLineageGraphUpdateWithMqttSource,
} from "../../data-tabs.mock";
-import { LineageGraphNodeData, LineageGraphNodeKind, LineageGraphUpdate } from "../lineage-model";
+import { LineageGraphNodeData, LineageGraphNodeKind, LineageGraphUpdate } from "../lineage-graph.model";
import { MaybeNull } from "src/app/common/app.types";
describe("LineageGraphBuilderService", () => {
diff --git a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts b/src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.ts
similarity index 99%
rename from src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts
rename to src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.ts
index 72ad903b6..e1a05b131 100644
--- a/src/app/dataset-view/additional-components/lineage-component/services/lineage-graph-builder.service.ts
+++ b/src/app/dataset-view/additional-components/lineage-tab/services/lineage-graph-builder.service.ts
@@ -9,7 +9,7 @@ import {
LineageNodeAccess,
LineageGraph,
LineageGraphUpdate,
-} from "../lineage-model";
+} from "../lineage-graph.model";
import { Node, Edge } from "@swimlane/ngx-graph";
import _ from "lodash";
import { MaybeNull } from "src/app/common/app.types";
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts
index 32e601505..1cdf6add7 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.spec.ts
@@ -7,11 +7,11 @@ import { DatasetInfo } from "src/app/interface/navigation.interface";
import { of } from "rxjs";
import { FormsModule } from "@angular/forms";
import { SharedTestModule } from "src/app/common/shared-test.module";
-import { DatasetCommitService } from "../../../overview-component/services/dataset-commit.service";
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { EditorModule } from "src/app/shared/editor/editor.module";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { mockAccountDetails } from "src/app/api/mock/auth.mock";
+import { DatasetCommitService } from "../../../overview-tab/services/dataset-commit.service";
const testDatasetInfo: DatasetInfo = {
accountName: "testAccountName",
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts
index 21e10d0e1..0bfc71d4c 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/final-yaml-modal/final-yaml-modal.component.ts
@@ -2,9 +2,9 @@ import { BaseComponent } from "src/app/common/base.component";
import { ChangeDetectionStrategy, Component, inject, Input } from "@angular/core";
import { NgbActiveModal } from "@ng-bootstrap/ng-bootstrap";
import { DatasetInfo } from "src/app/interface/navigation.interface";
-import { DatasetCommitService } from "../../../overview-component/services/dataset-commit.service";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
+import { DatasetCommitService } from "../../../overview-tab/services/dataset-commit.service";
@Component({
selector: "app-final-yaml-modal",
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.spec.ts
index ba14d0ec9..811b2abbf 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.spec.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/set-transform/set-transform.component.spec.ts
@@ -9,7 +9,6 @@ import { mockGetDatasetSchemaQuery, mockParseSetTransformYamlType, mockSetTransf
import { DatasetService } from "src/app/dataset-view/dataset.service";
import { MatTreeModule, MatTreeNestedDataSource } from "@angular/material/tree";
import { DatasetNode } from "./set-transform.types";
-import { DatasetCommitService } from "../../../overview-component/services/dataset-commit.service";
import { QueriesSectionComponent } from "./components/queries-section/queries-section.component";
import { EngineSectionComponent } from "./components/engine-section/engine-section.component";
import { SearchSectionComponent } from "./components/search-section/search-section.component";
@@ -29,6 +28,7 @@ import { HttpClientTestingModule } from "@angular/common/http/testing";
import { EditorModule } from "../../../../../shared/editor/editor.module";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { mockAccountDetails } from "src/app/api/mock/auth.mock";
+import { DatasetCommitService } from "../../../overview-tab/services/dataset-commit.service";
describe("SetTransformComponent", () => {
let component: SetTransformComponent;
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.spec.ts
index 3c3f5bb2c..ba11157aa 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.spec.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-polling-source/add-polling-source.component.spec.ts
@@ -20,7 +20,6 @@ import {
import { DatasetPageInfoFragment, MetadataBlockFragment } from "src/app/api/kamu.graphql.interface";
import { EditPollingSourceService } from "./edit-polling-source.service";
import { SharedTestModule } from "src/app/common/shared-test.module";
-import { DatasetCommitService } from "../../../../overview-component/services/dataset-commit.service";
import { PrepareStepComponent } from "../steps/prepare-step/prepare-step.component";
import { MatStepperModule } from "@angular/material/stepper";
import { PreprocessStepComponent } from "../steps/preprocess-step/preprocess-step.component";
@@ -35,6 +34,7 @@ import { EventTimeSourceKind, FetchKind, MergeKind, ReadKind } from "./add-polli
import { OdfDefaultValues } from "src/app/common/app-odf-default.values";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { mockAccountDetails } from "src/app/api/mock/auth.mock";
+import { DatasetCommitService } from "src/app/dataset-view/additional-components/overview-tab/services/dataset-commit.service";
describe("AddPollingSourceComponent", () => {
let component: AddPollingSourceComponent;
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.spec.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.spec.ts
index 87d0686ce..12e12ba5c 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.spec.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/add-push-source/add-push-source.component.spec.ts
@@ -4,7 +4,6 @@ import { FormArray, FormControl, FormGroup, FormsModule, ReactiveFormsModule } f
import { ApolloModule } from "apollo-angular";
import { ApolloTestingModule } from "apollo-angular/testing";
import { HttpClientTestingModule } from "@angular/common/http/testing";
-import { DatasetCommitService } from "../../../../overview-component/services/dataset-commit.service";
import { from, of } from "rxjs";
import { AddPushSourceSection } from "src/app/shared/shared.types";
import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap";
@@ -26,6 +25,7 @@ import { NavigationService } from "src/app/services/navigation.service";
import { MergeKind, ReadKind } from "../add-polling-source/add-polling-source-form.types";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { mockAccountDetails } from "src/app/api/mock/auth.mock";
+import { DatasetCommitService } from "src/app/dataset-view/additional-components/overview-tab/services/dataset-commit.service";
const providersSection = (name: string) => {
return [
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/source-events/base-main-event.component.ts b/src/app/dataset-view/additional-components/metadata-component/components/source-events/base-main-event.component.ts
index 44dc8cf6e..e9202ff0d 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/source-events/base-main-event.component.ts
+++ b/src/app/dataset-view/additional-components/metadata-component/components/source-events/base-main-event.component.ts
@@ -5,7 +5,6 @@ import { MaybeNull } from "src/app/common/app.types";
import { BaseComponent } from "src/app/common/base.component";
import { DatasetHistoryUpdate } from "src/app/dataset-view/dataset.subscriptions.interface";
import { TemplatesYamlEventsService } from "src/app/services/templates-yaml-events.service";
-import { DatasetCommitService } from "../../../overview-component/services/dataset-commit.service";
import { DatasetInfo } from "src/app/interface/navigation.interface";
import { NavigationService } from "src/app/services/navigation.service";
import { DatasetService } from "src/app/dataset-view/dataset.service";
@@ -13,6 +12,7 @@ import { DatasetSubscriptionsService } from "src/app/dataset-view/dataset.subscr
import { combineLatest } from "rxjs";
import { LoggedUserService } from "src/app/auth/logged-user.service";
import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
+import { DatasetCommitService } from "../../../overview-tab/services/dataset-commit.service";
export abstract class BaseMainEventComponent extends BaseComponent {
protected modalService = inject(NgbModal);
diff --git a/src/app/dataset-view/additional-components/metadata-component/components/stepper-navigation/stepper-navigation.component.scss b/src/app/dataset-view/additional-components/metadata-component/components/stepper-navigation/stepper-navigation.component.scss
index 9d6a5085d..c4de67ee5 100644
--- a/src/app/dataset-view/additional-components/metadata-component/components/stepper-navigation/stepper-navigation.component.scss
+++ b/src/app/dataset-view/additional-components/metadata-component/components/stepper-navigation/stepper-navigation.component.scss
@@ -1,5 +1,3 @@
-@import "bootstrap/scss/bootstrap";
-
.button-save {
background: #2c974b;
border-color: rgb(27 31 36 / 15%);
diff --git a/src/app/dataset-view/additional-components/metadata-component/metadata.component.html b/src/app/dataset-view/additional-components/metadata-component/metadata.component.html
index bcc6c73ac..381031708 100644
--- a/src/app/dataset-view/additional-components/metadata-component/metadata.component.html
+++ b/src/app/dataset-view/additional-components/metadata-component/metadata.component.html
@@ -10,7 +10,6 @@
(pageChange)="onPageChange($event)"
/>
-
-
+
There is no metadata.
-
+