fix: webui may duplicate elements in a multi-instance repo

This commit is contained in:
Gareth George
2024-11-25 18:06:26 -08:00
committed by Gareth
parent 29ef93efdb
commit e9af46b761
4 changed files with 3788 additions and 31 deletions
+17 -26
View File
@@ -36,7 +36,8 @@
"@types/react-virtualized": "^9.21.30",
"cross-env": "^7.0.3",
"events": "^3.3.0",
"rimraf": "^5.0.5"
"rimraf": "^5.0.5",
"svgo": "^3.3.2"
}
},
"node_modules/@ant-design/colors": {
@@ -2953,8 +2954,7 @@
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
"integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
@@ -2970,8 +2970,7 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
@@ -2985,8 +2984,7 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"domelementtype": "^2.3.0"
},
@@ -3001,8 +2999,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
"integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
@@ -3016,8 +3013,7 @@
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"optional": true,
"peer": true,
"devOptional": true,
"engines": {
"node": ">=0.12"
},
@@ -3029,8 +3025,7 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
@@ -3054,8 +3049,7 @@
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz",
"integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"css-tree": "~2.2.0"
},
@@ -3068,8 +3062,7 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz",
"integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==",
"optional": true,
"peer": true,
"devOptional": true,
"dependencies": {
"mdn-data": "2.0.28",
"source-map-js": "^1.0.1"
@@ -3083,8 +3076,7 @@
"version": "2.0.28",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz",
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==",
"optional": true,
"peer": true
"devOptional": true
},
"node_modules/csstype": {
"version": "3.1.3",
@@ -3976,8 +3968,7 @@
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
"integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
"optional": true,
"peer": true
"devOptional": true
},
"node_modules/micromatch": {
"version": "4.0.8",
@@ -5302,11 +5293,11 @@
}
},
"node_modules/svgo": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz",
"integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==",
"optional": true,
"peer": true,
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz",
"integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==",
"devOptional": true,
"license": "MIT",
"dependencies": {
"@trysound/sax": "0.2.0",
"commander": "^7.2.0",
+2 -1
View File
@@ -40,6 +40,7 @@
"@types/react-virtualized": "^9.21.30",
"cross-env": "^7.0.3",
"events": "^3.3.0",
"rimraf": "^5.0.5"
"rimraf": "^5.0.5",
"svgo": "^3.3.2"
}
}
+3765
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -179,7 +179,7 @@ export const OperationTree = ({
return (
<Flex vertical gap="middle">
<Splitter>
<Splitter.Panel defaultSize="40%" min="20%" max="70%">
<Splitter.Panel defaultSize="50%" min="20%" max="70%">
{backupTree}
</Splitter.Panel>
<Splitter.Panel style={{ paddingLeft: "10px" }}>
@@ -218,7 +218,7 @@ const buildTree = (
return {
title,
key: "i-" + key,
key: "i" + value[0].instanceID,
children: buildTreePlan(value),
};
});
@@ -231,7 +231,7 @@ const buildTree = (
return op.planID;
});
const entries: OpTreeNode[] = _.map(grouped, (value, key) => {
let title: React.ReactNode = key;
let title: React.ReactNode = value[0].planID;
if (title === "_unassociated_") {
title = (
<Tooltip title="_unassociated_ plan ID collects operations that do not specify a `plan:` tag denoting the backup plan that created them.">
@@ -246,7 +246,7 @@ const buildTree = (
);
}
return {
key: "p-" + key,
key: "p" + value[0].planID + "\x01" + value[0].instanceID, // use \x01 as separator
title,
children: buildTreeDay(key, value),
};