This is an automated email from the ASF dual-hosted git repository.
jackie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 8c50f8a add tooltip and modal for table status (#7899)
8c50f8a is described below
commit 8c50f8a3779e816cbe484511dc4b9a9f1687fd57
Author: Johan Adami <[email protected]>
AuthorDate: Mon Dec 20 19:11:16 2021 -0500
add tooltip and modal for table status (#7899)
---
.../src/main/resources/app/components/Table.tsx | 60 ++++-
.../src/main/resources/app/utils/Utils.tsx | 40 +++-
.../src/main/resources/package-lock.json | 264 +++++++++++++++++++--
pinot-controller/src/main/resources/package.json | 1 +
4 files changed, 330 insertions(+), 35 deletions(-)
diff --git a/pinot-controller/src/main/resources/app/components/Table.tsx
b/pinot-controller/src/main/resources/app/components/Table.tsx
index 8ea6c88..6809c6e 100644
--- a/pinot-controller/src/main/resources/app/components/Table.tsx
+++ b/pinot-controller/src/main/resources/app/components/Table.tsx
@@ -26,6 +26,7 @@ import {
makeStyles,
useTheme,
} from '@material-ui/core/styles';
+import Dialog from '@material-ui/core/Dialog';
import Table from '@material-ui/core/Table';
import TableBody from '@material-ui/core/TableBody';
import TableCell from '@material-ui/core/TableCell';
@@ -152,7 +153,7 @@ const useStyles = makeStyles((theme) => ({
spacer: {
flex: '0 1 auto',
},
- cellSatusGood: {
+ cellStatusGood: {
color: '#4CAF50',
border: '1px solid #4CAF50',
},
@@ -332,7 +333,7 @@ export default function CustomizedTables({
return (
<StyledChip
label={str}
- className={classes.cellSatusGood}
+ className={classes.cellStatusGood}
variant="outlined"
/>
);
@@ -376,6 +377,56 @@ export default function CustomizedTables({
return (<span>{str.toString()}</span>);
};
+ const [isModalOpen, setModalOpen] = React.useState(false);
+ const handleModalOpen = () => setModalOpen(true);
+ const handleModalClose = () => setModalOpen(false);
+
+ const makeCell = (cellData) => {
+ if (Object.prototype.toString.call(cellData) === '[object Object]') {
+ if (_.has(cellData, 'component') && cellData.component) {
+ let cell = (styleCell(cellData.value))
+ let statusModal = (
+ <Dialog
+ maxWidth="xl"
+ onClose={handleModalClose}
+ open={isModalOpen}
+ scroll="paper"
+ >
+ {cellData.component}
+ </Dialog>
+ )
+ cell = (
+ React.cloneElement(
+ cell,
+ {onClick: handleModalOpen},
+ )
+ );
+ if (_.has(cellData, 'tooltip') && cellData.tooltip) {
+ cell = (
+ <Tooltip title={cellData.tooltip} placement="top" arrow>
+ {cell}
+ </Tooltip>
+ )
+ };
+ return (
+ <>
+ {cell}
+ {statusModal}
+ </>
+ );
+ } else if (_.has(cellData, 'tooltip') && cellData.tooltip) {
+ return (
+ <Tooltip title={cellData.tooltip} placement="top" arrow>
+ {styleCell(cellData.value)}
+ </Tooltip>
+ );
+ } else {
+ return styleCell(cellData.value);
+ }
+ }
+ return styleCell(cellData.toString());
+ }
+
const renderTableComponent = () => {
return (
<>
@@ -460,10 +511,7 @@ export default function CustomizedTables({
className={isCellClickable ?
classes.isCellClickable : (isSticky ? classes.isSticky : '')}
onClick={() => {cellClickCallback &&
cellClickCallback(cell);}}
>
- {Object.prototype.toString.call(cell) === '[object
Object]' ?
- <Tooltip title={cell?.tooltip || ''}
placement="top" arrow>{styleCell(cell.value.toString())}</Tooltip>
- : styleCell(cell.toString())
- }
+ {makeCell(cell)}
</StyledTableCell>
);
})}
diff --git a/pinot-controller/src/main/resources/app/utils/Utils.tsx
b/pinot-controller/src/main/resources/app/utils/Utils.tsx
index dabfcc3..20b42a7 100644
--- a/pinot-controller/src/main/resources/app/utils/Utils.tsx
+++ b/pinot-controller/src/main/resources/app/utils/Utils.tsx
@@ -18,6 +18,8 @@
* under the License.
*/
+import React from 'react';
+import ReactDiffViewer, {DiffMethod} from 'react-diff-viewer';
import _ from 'lodash';
const sortArray = function (sortingArr, keyName, ascendingFlag) {
@@ -66,14 +68,44 @@ const getSegmentStatus = (idealStateObj, externalViewObj)
=> {
const externalSegmentCount = externalSegmentKeys.length;
if (idealSegmentCount !== externalSegmentCount) {
- return 'Bad';
+ let segmentStatusComponent = (
+ <ReactDiffViewer
+ oldValue={JSON.stringify(idealStateObj)}
+ newValue={JSON.stringify(externalViewObj)}
+ splitView={true}
+ hideLineNumbers
+ leftTitle={"Ideal State"}
+ rightTitle={"External View"}
+ compareMethod={DiffMethod.WORDS}
+ />
+ )
+ return {
+ value: 'Bad',
+ tooltip: `Ideal Segment Count: ${idealSegmentCount} does not match
external Segment Count: ${externalSegmentCount}`,
+ component: segmentStatusComponent,
+ };
}
- let segmentStatus = 'Good';
+ let segmentStatus = {value: 'Good', tooltip: null, component: null};
idealSegmentKeys.map((segmentKey) => {
- if (segmentStatus === 'Good') {
+ if (segmentStatus.value === 'Good') {
if (!_.isEqual(idealStateObj[segmentKey], externalViewObj[segmentKey])) {
- segmentStatus = 'Bad';
+ let segmentStatusComponent = (
+ <ReactDiffViewer
+ oldValue={JSON.stringify(idealStateObj)}
+ newValue={JSON.stringify(externalViewObj)}
+ splitView={true}
+ hideLineNumbers
+ leftTitle={"Ideal State"}
+ rightTitle={"External View"}
+ compareMethod={DiffMethod.WORDS}
+ />
+ )
+ segmentStatus = {
+ value: 'Bad',
+ tooltip: "Ideal Status does not match external status",
+ component: segmentStatusComponent
+ };
}
}
});
diff --git a/pinot-controller/src/main/resources/package-lock.json
b/pinot-controller/src/main/resources/package-lock.json
index 5da5671..2cdb455 100644
--- a/pinot-controller/src/main/resources/package-lock.json
+++ b/pinot-controller/src/main/resources/package-lock.json
@@ -8,22 +8,27 @@
"version": "7.12.13",
"resolved":
"https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
"integrity":
"sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==",
- "dev": true,
"requires": {
"@babel/highlight": "^7.12.13"
}
},
+ "@babel/helper-module-imports": {
+ "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==",
+ "requires": {
+ "@babel/types": "^7.16.0"
+ }
+ },
"@babel/helper-validator-identifier": {
"version": "7.12.11",
"resolved":
"https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity":
"sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==",
- "dev": true
+ "integrity":
"sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
},
"@babel/highlight": {
"version": "7.13.10",
"resolved":
"https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz",
"integrity":
"sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==",
- "dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.12.11",
"chalk": "^2.0.0",
@@ -34,7 +39,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"
}
@@ -43,7 +47,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",
@@ -54,7 +57,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"
}
@@ -79,11 +81,80 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity":
"sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "dependencies": {
+ "@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=="
+ }
+ }
+ },
+ "@emotion/cache": {
+ "version": "10.0.29",
+ "resolved":
"https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz",
+ "integrity":
"sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==",
+ "requires": {
+ "@emotion/sheet": "0.9.4",
+ "@emotion/stylis": "0.8.5",
+ "@emotion/utils": "0.11.3",
+ "@emotion/weak-memoize": "0.2.5"
+ }
+ },
"@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
"integrity":
"sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
},
+ "@emotion/memoize": {
+ "version": "0.7.4",
+ "resolved":
"https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
+ "integrity":
"sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw=="
+ },
+ "@emotion/serialize": {
+ "version": "0.11.16",
+ "resolved":
"https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
+ "integrity":
"sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
+ "requires": {
+ "@emotion/hash": "0.8.0",
+ "@emotion/memoize": "0.7.4",
+ "@emotion/unitless": "0.7.5",
+ "@emotion/utils": "0.11.3",
+ "csstype": "^2.5.7"
+ }
+ },
+ "@emotion/sheet": {
+ "version": "0.9.4",
+ "resolved":
"https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz",
+ "integrity":
"sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA=="
+ },
+ "@emotion/stylis": {
+ "version": "0.8.5",
+ "resolved":
"https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
+ "integrity":
"sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="
+ },
+ "@emotion/unitless": {
+ "version": "0.7.5",
+ "resolved":
"https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
+ "integrity":
"sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="
+ },
+ "@emotion/utils": {
+ "version": "0.11.3",
+ "resolved":
"https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
+ "integrity":
"sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw=="
+ },
+ "@emotion/weak-memoize": {
+ "version": "0.2.5",
+ "resolved":
"https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
+ "integrity":
"sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
+ },
"@fortawesome/fontawesome-common-types": {
"version": "0.2.35",
"resolved":
"https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz",
@@ -267,6 +338,11 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz",
"integrity":
"sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw=="
},
+ "@types/parse-json": {
+ "version": "4.0.0",
+ "resolved":
"https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity":
"sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
+ },
"@types/prop-types": {
"version": "15.7.3",
"resolved":
"https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
@@ -951,6 +1027,38 @@
"integrity":
"sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==",
"dev": true
},
+ "babel-plugin-emotion": {
+ "version": "10.2.2",
+ "resolved":
"https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz",
+ "integrity":
"sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==",
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@emotion/hash": "0.8.0",
+ "@emotion/memoize": "0.7.4",
+ "@emotion/serialize": "^0.11.16",
+ "babel-plugin-macros": "^2.0.0",
+ "babel-plugin-syntax-jsx": "^6.18.0",
+ "convert-source-map": "^1.5.0",
+ "escape-string-regexp": "^1.0.5",
+ "find-root": "^1.1.0",
+ "source-map": "^0.5.7"
+ }
+ },
+ "babel-plugin-macros": {
+ "version": "2.8.0",
+ "resolved":
"https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz",
+ "integrity":
"sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==",
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "cosmiconfig": "^6.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved":
"https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
+ },
"balanced-match": {
"version": "1.0.2",
"resolved":
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -1321,8 +1429,7 @@
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity":
"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
+ "integrity":
"sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"camel-case": {
"version": "3.0.0",
@@ -1442,6 +1549,11 @@
}
}
},
+ "classnames": {
+ "version": "2.3.1",
+ "resolved":
"https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz",
+ "integrity":
"sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
+ },
"clean-css": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
@@ -1588,7 +1700,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"
}
@@ -1596,8 +1707,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="
},
"commander": {
"version": "2.17.1",
@@ -1762,6 +1872,21 @@
"resolved":
"https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity":
"sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
+ "convert-source-map": {
+ "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==",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ },
+ "dependencies": {
+ "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=="
+ }
+ }
+ },
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
@@ -1922,6 +2047,36 @@
"resolved":
"https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
+ "cosmiconfig": {
+ "version": "6.0.0",
+ "resolved":
"https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
+ "integrity":
"sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "requires": {
+ "@types/parse-json": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "parse-json": "^5.0.0",
+ "path-type": "^4.0.0",
+ "yaml": "^1.7.2"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved":
"https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity":
"sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved":
"https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity":
"sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+ }
+ }
+ },
"create-ecdh": {
"version": "4.0.4",
"resolved":
"https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
@@ -1940,6 +2095,17 @@
}
}
},
+ "create-emotion": {
+ "version": "10.0.27",
+ "resolved":
"https://registry.npmjs.org/create-emotion/-/create-emotion-10.0.27.tgz",
+ "integrity":
"sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg==",
+ "requires": {
+ "@emotion/cache": "^10.0.27",
+ "@emotion/serialize": "^0.11.15",
+ "@emotion/sheet": "0.9.4",
+ "@emotion/utils": "0.11.3"
+ }
+ },
"create-hash": {
"version": "1.2.0",
"resolved":
"https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
@@ -2258,6 +2424,11 @@
"resolved":
"https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz",
"integrity":
"sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw=="
},
+ "diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity":
"sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
+ },
"diffie-hellman": {
"version": "5.0.3",
"resolved":
"https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -2519,6 +2690,15 @@
"resolved":
"https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity":
"sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
+ "emotion": {
+ "version": "10.0.27",
+ "resolved": "https://registry.npmjs.org/emotion/-/emotion-10.0.27.tgz",
+ "integrity":
"sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g==",
+ "requires": {
+ "babel-plugin-emotion": "^10.0.27",
+ "create-emotion": "^10.0.27"
+ }
+ },
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -2608,7 +2788,6 @@
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity":
"sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
@@ -2663,8 +2842,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": "6.8.0",
@@ -3670,6 +3848,11 @@
}
}
},
+ "find-root": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+ "integrity":
"sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+ },
"find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
@@ -4518,7 +4701,6 @@
"version": "3.3.0",
"resolved":
"https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity":
"sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
"requires": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
@@ -4527,8 +4709,7 @@
"resolve-from": {
"version": "4.0.0",
"resolved":
"https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity":
"sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
+ "integrity":
"sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
}
}
},
@@ -4772,8 +4953,7 @@
"is-arrayish": {
"version": "0.2.1",
"resolved":
"https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
"is-bigint": {
"version": "1.0.1",
@@ -4810,7 +4990,6 @@
"version": "2.2.0",
"resolved":
"https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
"integrity":
"sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "dev": true,
"requires": {
"has": "^1.0.3"
}
@@ -5029,6 +5208,11 @@
"integrity":
"sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved":
"https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity":
"sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved":
"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -5195,6 +5379,11 @@
"type-check": "~0.3.2"
}
},
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved":
"https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity":
"sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
+ },
"load-json-file": {
"version": "2.0.0",
"resolved":
"https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
@@ -5412,6 +5601,11 @@
"p-is-promise": "^2.0.0"
}
},
+ "memoize-one": {
+ "version": "5.2.1",
+ "resolved":
"https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
+ "integrity":
"sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="
+ },
"memory-fs": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
@@ -6281,7 +6475,6 @@
"version": "1.0.1",
"resolved":
"https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity":
"sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
"requires": {
"callsites": "^3.0.0"
}
@@ -6386,8 +6579,7 @@
"path-parse": {
"version": "1.0.6",
"resolved":
"https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity":
"sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
+ "integrity":
"sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-to-regexp": {
"version": "1.8.0",
@@ -7722,6 +7914,19 @@
"resolved":
"https://registry.npmjs.org/react-codemirror2/-/react-codemirror2-7.2.1.tgz",
"integrity":
"sha512-t7YFmz1AXdlImgHXA9Ja0T6AWuopilub24jRaQdPVbzUJVNKIYuy3uCFZYa7CE5S3UW6SrSa5nAqVQvtzRF9gw=="
},
+ "react-diff-viewer": {
+ "version": "3.1.1",
+ "resolved":
"https://registry.npmjs.org/react-diff-viewer/-/react-diff-viewer-3.1.1.tgz",
+ "integrity":
"sha512-rmvwNdcClp6ZWdS11m1m01UnBA4OwYaLG/li0dB781e/bQEzsGyj+qewVd6W5ztBwseQ72pO7nwaCcq5jnlzcw==",
+ "requires": {
+ "classnames": "^2.2.6",
+ "create-emotion": "^10.0.14",
+ "diff": "^4.0.1",
+ "emotion": "^10.0.14",
+ "memoize-one": "^5.0.4",
+ "prop-types": "^15.6.2"
+ }
+ },
"react-dom": {
"version": "16.13.1",
"resolved":
"https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
@@ -8011,7 +8216,6 @@
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
"integrity":
"sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
- "dev": true,
"requires": {
"is-core-module": "^2.2.0",
"path-parse": "^1.0.6"
@@ -9248,6 +9452,11 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
+ "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="
+ },
"to-object-path": {
"version": "0.3.0",
"resolved":
"https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
@@ -10377,6 +10586,11 @@
"integrity":
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
+ "yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity":
"sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+ },
"yargs": {
"version": "12.0.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz",
diff --git a/pinot-controller/src/main/resources/package.json
b/pinot-controller/src/main/resources/package.json
index 3fbea22..1c49679 100644
--- a/pinot-controller/src/main/resources/package.json
+++ b/pinot-controller/src/main/resources/package.json
@@ -80,6 +80,7 @@
"re-resizable": "^6.9.0",
"react": "16.13.1",
"react-codemirror2": "^7.2.1",
+ "react-diff-viewer": "^3.1.1",
"react-dom": "16.13.1",
"react-hook-form": "^6.15.4",
"react-router-dom": "^5.2.0",
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]