You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/05/03 02:33:04 UTC
[camel-karavan] 01/04: Project logs redesign
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 1689fb5e222e4b5c7935bedc1356f74463346e1f
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue May 2 16:21:27 2023 -0400
Project logs redesign
---
karavan-app/src/main/webui/package-lock.json | 371 ++++++++++++++-------
karavan-app/src/main/webui/package.json | 20 +-
karavan-app/src/main/webui/src/index.css | 15 +-
.../src/main/webui/src/projects/ProjectEventBus.ts | 16 +-
.../src/main/webui/src/projects/ProjectLog.tsx | 67 +++-
.../src/main/webui/src/projects/ProjectPage.tsx | 6 +-
6 files changed, 347 insertions(+), 148 deletions(-)
diff --git a/karavan-app/src/main/webui/package-lock.json b/karavan-app/src/main/webui/package-lock.json
index e4742afc..cefbe60a 100644
--- a/karavan-app/src/main/webui/package-lock.json
+++ b/karavan-app/src/main/webui/package-lock.json
@@ -8,16 +8,16 @@
"name": "karavan",
"version": "3.20.2-SNAPSHOT",
"dependencies": {
- "@monaco-editor/react": "4.4.6",
+ "@monaco-editor/react": "4.5.0",
"@patternfly/patternfly": "4.224.2",
- "@patternfly/react-charts": "6.94.18",
- "@patternfly/react-core": "4.276.6",
- "@patternfly/react-log-viewer": "^4.87.100",
- "@patternfly/react-table": "4.112.39",
+ "@patternfly/react-charts": "6.94.19",
+ "@patternfly/react-core": "4.276.8",
+ "@patternfly/react-log-viewer": "5.0.0-alpha.1",
+ "@patternfly/react-table": "4.113.0",
"@types/js-yaml": "4.0.5",
- "@types/node": "18.11.18",
+ "@types/node": "18.16.3",
"@types/uuid": "9.0.1",
- "axios": "1.3.4",
+ "axios": "1.4.0",
"buffer": "^6.0.3",
"dagre": "0.8.5",
"file-saver": "^2.0.5",
@@ -26,8 +26,8 @@
"keycloak-js": "^19.0.1",
"react": "17.0.2",
"react-dom": "17.0.2",
- "react-scripts": "5.0.0",
- "rxjs": "7.8.0",
+ "react-scripts": "5.0.1",
+ "rxjs": "7.8.1",
"uuid": "9.0.0"
},
"devDependencies": {
@@ -39,7 +39,7 @@
"@typescript-eslint/eslint-plugin": "^5.51.0",
"@typescript-eslint/parser": "^5.51.0",
"eslint": "^8.33.0",
- "monaco-editor": "0.36.1",
+ "monaco-editor": "0.38.0",
"typescript": "^4.9.5"
}
},
@@ -2751,9 +2751,9 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
"node_modules/@monaco-editor/loader": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.2.tgz",
- "integrity": "sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.3.tgz",
+ "integrity": "sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q==",
"dependencies": {
"state-local": "^1.0.6"
},
@@ -2762,12 +2762,11 @@
}
},
"node_modules/@monaco-editor/react": {
- "version": "4.4.6",
- "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.6.tgz",
- "integrity": "sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.5.0.tgz",
+ "integrity": "sha512-VJMkp5Fe1+w8pLEq8tZPHZKu8zDXQIA1FtiDTSNccg1D3wg1YIZaH2es2Qpvop1k62g3c/YySRb3bnGXu2XwYQ==",
"dependencies": {
- "@monaco-editor/loader": "^1.3.2",
- "prop-types": "^15.7.2"
+ "@monaco-editor/loader": "^1.3.3"
},
"peerDependencies": {
"monaco-editor": ">= 0.25.0 < 1",
@@ -2813,9 +2812,9 @@
"integrity": "sha512-HGNV26uyHSIECuhjPg/WGn0mXbAotcs6ODfhAOkfYjIgGylddgiwElxUe1rpEHV5mQJJ2rMn4OdeJIIpzRX61g=="
},
"node_modules/@patternfly/react-charts": {
- "version": "6.94.18",
- "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-6.94.18.tgz",
- "integrity": "sha512-56WxnZYC3blRX41mW67JaPxJ3YhXViLvwGpEsZrYCccla/rTV8JgKK0gjHnqtzPQiVBfpn+3ewOyNCOR5uRoSw==",
+ "version": "6.94.19",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-6.94.19.tgz",
+ "integrity": "sha512-+yYwXAy/GBH2bTHFzMpdVKc8LUJCCNEqqS7bqovNkNLd0m3FP3q9fKJ22QxNnP9NeFHK6UFa4KfouQAb2fInfQ==",
"dependencies": {
"@patternfly/react-styles": "^4.92.6",
"@patternfly/react-tokens": "^4.94.6",
@@ -2845,9 +2844,9 @@
}
},
"node_modules/@patternfly/react-core": {
- "version": "4.276.6",
- "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.6.tgz",
- "integrity": "sha512-G0K+378jf9jw9g+hCAoKnsAe/UGTRspqPeuAYypF2FgNr+dC7dUpc7/VkNhZBVqSJzUWVEK8NyXcqkfi0IemIg==",
+ "version": "4.276.8",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.8.tgz",
+ "integrity": "sha512-dn322rEzBeiVztZEuCZMUUittNb8l1hk30h9ZN31FLZLLVtXGlThFNV9ieqOJYA9zrYxYZrHMkTnOxSWVacMZg==",
"dependencies": {
"@patternfly/react-icons": "^4.93.6",
"@patternfly/react-styles": "^4.92.6",
@@ -2872,33 +2871,121 @@
}
},
"node_modules/@patternfly/react-log-viewer": {
- "version": "4.87.100",
- "resolved": "https://registry.npmjs.org/@patternfly/react-log-viewer/-/react-log-viewer-4.87.100.tgz",
- "integrity": "sha512-FG+oZDnymvtWNTSSNSQ573NCikpCKr1Iq0Fz5FOSeqW/rLxvuJPqBnlK+A4nUORvxvYc3DhBri2ycCaZMoZfPg==",
+ "version": "5.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-log-viewer/-/react-log-viewer-5.0.0-alpha.1.tgz",
+ "integrity": "sha512-QHJCqD4muCrYuJsIf9Zs3xAlsUJk5lyyjU9aNE1e+RIFIAlJeagL9MF/bfs50/EwPnZYZtXBsFiyox+kbccW7Q==",
"dependencies": {
- "@patternfly/react-core": "^4.273.1",
- "@patternfly/react-icons": "^4.93.4",
- "@patternfly/react-styles": "^4.92.4",
+ "@patternfly/react-core": "^5.0.0-alpha.50",
+ "@patternfly/react-icons": "^5.0.0-alpha.7",
+ "@patternfly/react-styles": "^5.0.0-alpha.5",
"memoize-one": "^5.1.0",
- "resize-observer-polyfill": "^1.5.1",
- "tslib": "^2.0.0"
+ "monaco-editor": "^0.33.0"
},
"peerDependencies": {
"react": "^16.8 || ^17 || ^18",
"react-dom": "^16.8 || ^17 || ^18"
}
},
+ "node_modules/@patternfly/react-log-viewer/node_modules/@patternfly/react-core": {
+ "version": "5.0.0-alpha.85",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.0.0-alpha.85.tgz",
+ "integrity": "sha512-wK/NvwLxFYIMyMSNDwFiUARoIPgrE8t0Rs2Fyx9zDnyMMUijSMxZ3s0qb/YcxOyaOdUamMSWxVQtaPbYc7+V9A==",
+ "dependencies": {
+ "@patternfly/react-icons": "^5.0.0-alpha.12",
+ "@patternfly/react-styles": "^5.0.0-alpha.8",
+ "@patternfly/react-tokens": "^5.0.0-alpha.7",
+ "focus-trap": "7.4.0",
+ "react-dropzone": "^14.2.3",
+ "tslib": "^2.5.0"
+ },
+ "peerDependencies": {
+ "react": "^17 || ^18",
+ "react-dom": "^17 || ^18"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/@patternfly/react-icons": {
+ "version": "5.0.0-alpha.12",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.0.0-alpha.12.tgz",
+ "integrity": "sha512-VwCGlB+JtpsjHJtqCcfy+CpaE+rAY2si7cd4ufJouybkoBPve/6wuTPA3K3eGtgn5cAIr18IF1Pkfkp2lR18sg==",
+ "peerDependencies": {
+ "react": "^17 || ^18",
+ "react-dom": "^17 || ^18"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/@patternfly/react-styles": {
+ "version": "5.0.0-alpha.8",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.0.0-alpha.8.tgz",
+ "integrity": "sha512-V/jhoKp6pz3c+2N1Yi/Ez/EJIHKEHe4SSCzF5ocGpOfaYlQpDGdttKIF0GSWksXlShYZJ5heKfARuESK9XjqRA=="
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/@patternfly/react-tokens": {
+ "version": "5.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.0.0-alpha.7.tgz",
+ "integrity": "sha512-w22cIlzzD7U40Ut8VDqjU1RyOmdwn9Z10qiUSZCzEJY/D5Vwo9bDXbHX23bBUr2rCJUkAwWNaAhWquHFBiSK4w=="
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/attr-accept": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
+ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/file-selector": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
+ "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
+ "dependencies": {
+ "tslib": "^2.4.0"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/focus-trap": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.4.0.tgz",
+ "integrity": "sha512-yI7FwUqU4TVb+7t6PaQ3spT/42r/KLEi8mtdGoQo2li/kFzmu9URmalTvw7xCCJtSOyhBxscvEAmvjeN9iHARg==",
+ "dependencies": {
+ "tabbable": "^6.1.1"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/monaco-editor": {
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.33.0.tgz",
+ "integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw=="
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/react-dropzone": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
+ "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
+ "dependencies": {
+ "attr-accept": "^2.2.2",
+ "file-selector": "^0.6.0",
+ "prop-types": "^15.8.1"
+ },
+ "engines": {
+ "node": ">= 10.13"
+ },
+ "peerDependencies": {
+ "react": ">= 16.8 || 18.0.0"
+ }
+ },
+ "node_modules/@patternfly/react-log-viewer/node_modules/tabbable": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz",
+ "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg=="
+ },
"node_modules/@patternfly/react-styles": {
"version": "4.92.6",
"resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-4.92.6.tgz",
"integrity": "sha512-b8uQdEReMyeoMzjpMri845QxqtupY/tIFFYfVeKoB2neno8gkcW1RvDdDe62LF88q45OktCwAe/8A99ker10Iw=="
},
"node_modules/@patternfly/react-table": {
- "version": "4.112.39",
- "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.112.39.tgz",
- "integrity": "sha512-U+hOMgYlbghGH4M5MX+qt0GkVi/ocrGnxDnm11YiS3CtEGsd6Rr0NeqMmk0uoR46Od4Pr5tKuXxZhPP32sCL/w==",
+ "version": "4.113.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.113.0.tgz",
+ "integrity": "sha512-qxa3NWCdYasqQQL1rqEd8DyNa8oWr6HNveNW5YJRakE7imWZhUPG2Nd6Op60+KYX8kbCSl7gwSmgAZAYMBMZkQ==",
"dependencies": {
- "@patternfly/react-core": "^4.276.6",
+ "@patternfly/react-core": "^4.276.8",
"@patternfly/react-icons": "^4.93.6",
"@patternfly/react-styles": "^4.92.6",
"@patternfly/react-tokens": "^4.94.6",
@@ -3555,9 +3642,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
"node_modules/@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
+ "version": "18.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -4748,9 +4835,9 @@
}
},
"node_modules/axios": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
- "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -11673,9 +11760,9 @@
}
},
"node_modules/monaco-editor": {
- "version": "0.36.1",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz",
- "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg=="
+ "version": "0.38.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.38.0.tgz",
+ "integrity": "sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A=="
},
"node_modules/ms": {
"version": "2.1.2",
@@ -13823,9 +13910,9 @@
}
},
"node_modules/react-scripts": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz",
- "integrity": "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
+ "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==",
"dependencies": {
"@babel/core": "^7.16.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
@@ -13843,7 +13930,7 @@
"dotenv": "^10.0.0",
"dotenv-expand": "^5.1.0",
"eslint": "^8.3.0",
- "eslint-config-react-app": "^7.0.0",
+ "eslint-config-react-app": "^7.0.1",
"eslint-webpack-plugin": "^3.1.1",
"file-loader": "^6.2.0",
"fs-extra": "^10.0.0",
@@ -13860,7 +13947,7 @@
"postcss-preset-env": "^7.0.1",
"prompts": "^2.4.2",
"react-app-polyfill": "^3.0.0",
- "react-dev-utils": "^12.0.0",
+ "react-dev-utils": "^12.0.1",
"react-refresh": "^0.11.0",
"resolve": "^1.20.0",
"resolve-url-loader": "^4.0.0",
@@ -14070,11 +14157,6 @@
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
- "node_modules/resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
"node_modules/resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -14296,9 +14378,9 @@
}
},
"node_modules/rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dependencies": {
"tslib": "^2.1.0"
}
@@ -15483,9 +15565,9 @@
}
},
"node_modules/tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/tsutils": {
"version": "3.21.0",
@@ -18809,20 +18891,19 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
},
"@monaco-editor/loader": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.2.tgz",
- "integrity": "sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.3.tgz",
+ "integrity": "sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q==",
"requires": {
"state-local": "^1.0.6"
}
},
"@monaco-editor/react": {
- "version": "4.4.6",
- "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.4.6.tgz",
- "integrity": "sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.5.0.tgz",
+ "integrity": "sha512-VJMkp5Fe1+w8pLEq8tZPHZKu8zDXQIA1FtiDTSNccg1D3wg1YIZaH2es2Qpvop1k62g3c/YySRb3bnGXu2XwYQ==",
"requires": {
- "@monaco-editor/loader": "^1.3.2",
- "prop-types": "^15.7.2"
+ "@monaco-editor/loader": "^1.3.3"
}
},
"@nodelib/fs.scandir": {
@@ -18854,9 +18935,9 @@
"integrity": "sha512-HGNV26uyHSIECuhjPg/WGn0mXbAotcs6ODfhAOkfYjIgGylddgiwElxUe1rpEHV5mQJJ2rMn4OdeJIIpzRX61g=="
},
"@patternfly/react-charts": {
- "version": "6.94.18",
- "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-6.94.18.tgz",
- "integrity": "sha512-56WxnZYC3blRX41mW67JaPxJ3YhXViLvwGpEsZrYCccla/rTV8JgKK0gjHnqtzPQiVBfpn+3ewOyNCOR5uRoSw==",
+ "version": "6.94.19",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-charts/-/react-charts-6.94.19.tgz",
+ "integrity": "sha512-+yYwXAy/GBH2bTHFzMpdVKc8LUJCCNEqqS7bqovNkNLd0m3FP3q9fKJ22QxNnP9NeFHK6UFa4KfouQAb2fInfQ==",
"requires": {
"@patternfly/react-styles": "^4.92.6",
"@patternfly/react-tokens": "^4.94.6",
@@ -18882,9 +18963,9 @@
}
},
"@patternfly/react-core": {
- "version": "4.276.6",
- "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.6.tgz",
- "integrity": "sha512-G0K+378jf9jw9g+hCAoKnsAe/UGTRspqPeuAYypF2FgNr+dC7dUpc7/VkNhZBVqSJzUWVEK8NyXcqkfi0IemIg==",
+ "version": "4.276.8",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-4.276.8.tgz",
+ "integrity": "sha512-dn322rEzBeiVztZEuCZMUUittNb8l1hk30h9ZN31FLZLLVtXGlThFNV9ieqOJYA9zrYxYZrHMkTnOxSWVacMZg==",
"requires": {
"@patternfly/react-icons": "^4.93.6",
"@patternfly/react-styles": "^4.92.6",
@@ -18902,16 +18983,87 @@
"requires": {}
},
"@patternfly/react-log-viewer": {
- "version": "4.87.100",
- "resolved": "https://registry.npmjs.org/@patternfly/react-log-viewer/-/react-log-viewer-4.87.100.tgz",
- "integrity": "sha512-FG+oZDnymvtWNTSSNSQ573NCikpCKr1Iq0Fz5FOSeqW/rLxvuJPqBnlK+A4nUORvxvYc3DhBri2ycCaZMoZfPg==",
+ "version": "5.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-log-viewer/-/react-log-viewer-5.0.0-alpha.1.tgz",
+ "integrity": "sha512-QHJCqD4muCrYuJsIf9Zs3xAlsUJk5lyyjU9aNE1e+RIFIAlJeagL9MF/bfs50/EwPnZYZtXBsFiyox+kbccW7Q==",
"requires": {
- "@patternfly/react-core": "^4.273.1",
- "@patternfly/react-icons": "^4.93.4",
- "@patternfly/react-styles": "^4.92.4",
+ "@patternfly/react-core": "^5.0.0-alpha.50",
+ "@patternfly/react-icons": "^5.0.0-alpha.7",
+ "@patternfly/react-styles": "^5.0.0-alpha.5",
"memoize-one": "^5.1.0",
- "resize-observer-polyfill": "^1.5.1",
- "tslib": "^2.0.0"
+ "monaco-editor": "^0.33.0"
+ },
+ "dependencies": {
+ "@patternfly/react-core": {
+ "version": "5.0.0-alpha.85",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-core/-/react-core-5.0.0-alpha.85.tgz",
+ "integrity": "sha512-wK/NvwLxFYIMyMSNDwFiUARoIPgrE8t0Rs2Fyx9zDnyMMUijSMxZ3s0qb/YcxOyaOdUamMSWxVQtaPbYc7+V9A==",
+ "requires": {
+ "@patternfly/react-icons": "^5.0.0-alpha.12",
+ "@patternfly/react-styles": "^5.0.0-alpha.8",
+ "@patternfly/react-tokens": "^5.0.0-alpha.7",
+ "focus-trap": "7.4.0",
+ "react-dropzone": "^14.2.3",
+ "tslib": "^2.5.0"
+ }
+ },
+ "@patternfly/react-icons": {
+ "version": "5.0.0-alpha.12",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-icons/-/react-icons-5.0.0-alpha.12.tgz",
+ "integrity": "sha512-VwCGlB+JtpsjHJtqCcfy+CpaE+rAY2si7cd4ufJouybkoBPve/6wuTPA3K3eGtgn5cAIr18IF1Pkfkp2lR18sg==",
+ "requires": {}
+ },
+ "@patternfly/react-styles": {
+ "version": "5.0.0-alpha.8",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-styles/-/react-styles-5.0.0-alpha.8.tgz",
+ "integrity": "sha512-V/jhoKp6pz3c+2N1Yi/Ez/EJIHKEHe4SSCzF5ocGpOfaYlQpDGdttKIF0GSWksXlShYZJ5heKfARuESK9XjqRA=="
+ },
+ "@patternfly/react-tokens": {
+ "version": "5.0.0-alpha.7",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-tokens/-/react-tokens-5.0.0-alpha.7.tgz",
+ "integrity": "sha512-w22cIlzzD7U40Ut8VDqjU1RyOmdwn9Z10qiUSZCzEJY/D5Vwo9bDXbHX23bBUr2rCJUkAwWNaAhWquHFBiSK4w=="
+ },
+ "attr-accept": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz",
+ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg=="
+ },
+ "file-selector": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz",
+ "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==",
+ "requires": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "focus-trap": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.4.0.tgz",
+ "integrity": "sha512-yI7FwUqU4TVb+7t6PaQ3spT/42r/KLEi8mtdGoQo2li/kFzmu9URmalTvw7xCCJtSOyhBxscvEAmvjeN9iHARg==",
+ "requires": {
+ "tabbable": "^6.1.1"
+ }
+ },
+ "monaco-editor": {
+ "version": "0.33.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.33.0.tgz",
+ "integrity": "sha512-VcRWPSLIUEgQJQIE0pVT8FcGBIgFoxz7jtqctE+IiCxWugD0DwgyQBcZBhdSrdMC84eumoqMZsGl2GTreOzwqw=="
+ },
+ "react-dropzone": {
+ "version": "14.2.3",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz",
+ "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==",
+ "requires": {
+ "attr-accept": "^2.2.2",
+ "file-selector": "^0.6.0",
+ "prop-types": "^15.8.1"
+ }
+ },
+ "tabbable": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.1.1.tgz",
+ "integrity": "sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg=="
+ }
}
},
"@patternfly/react-styles": {
@@ -18920,11 +19072,11 @@
"integrity": "sha512-b8uQdEReMyeoMzjpMri845QxqtupY/tIFFYfVeKoB2neno8gkcW1RvDdDe62LF88q45OktCwAe/8A99ker10Iw=="
},
"@patternfly/react-table": {
- "version": "4.112.39",
- "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.112.39.tgz",
- "integrity": "sha512-U+hOMgYlbghGH4M5MX+qt0GkVi/ocrGnxDnm11YiS3CtEGsd6Rr0NeqMmk0uoR46Od4Pr5tKuXxZhPP32sCL/w==",
+ "version": "4.113.0",
+ "resolved": "https://registry.npmjs.org/@patternfly/react-table/-/react-table-4.113.0.tgz",
+ "integrity": "sha512-qxa3NWCdYasqQQL1rqEd8DyNa8oWr6HNveNW5YJRakE7imWZhUPG2Nd6Op60+KYX8kbCSl7gwSmgAZAYMBMZkQ==",
"requires": {
- "@patternfly/react-core": "^4.276.6",
+ "@patternfly/react-core": "^4.276.8",
"@patternfly/react-icons": "^4.93.6",
"@patternfly/react-styles": "^4.92.6",
"@patternfly/react-tokens": "^4.94.6",
@@ -19412,9 +19564,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
"@types/node": {
- "version": "18.11.18",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
- "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
+ "version": "18.16.3",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
+ "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q=="
},
"@types/parse-json": {
"version": "4.0.0",
@@ -20261,9 +20413,9 @@
"integrity": "sha512-btWy2rze3NnxSSxb7LtNhPYYFrRoFBfjiGzmSc/5Hu47wApO2KNXjP/w7Nv2Uz/Fyr/pfEiwOkcXhDxu0jz5FA=="
},
"axios": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
- "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
+ "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
"requires": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
@@ -25293,9 +25445,9 @@
}
},
"monaco-editor": {
- "version": "0.36.1",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.36.1.tgz",
- "integrity": "sha512-/CaclMHKQ3A6rnzBzOADfwdSJ25BFoFT0Emxsc4zYVyav5SkK9iA6lEtIeuN/oRYbwPgviJT+t3l+sjFa28jYg=="
+ "version": "0.38.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.38.0.tgz",
+ "integrity": "sha512-11Fkh6yzEmwx7O0YoLxeae0qEGFwmyPRlVxpg7oF9czOOCB/iCjdJrG5I67da5WiXK3YJCxoz9TJFE8Tfq/v9A=="
},
"ms": {
"version": "2.1.2",
@@ -26720,9 +26872,9 @@
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
},
"react-scripts": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.0.tgz",
- "integrity": "sha512-3i0L2CyIlROz7mxETEdfif6Sfhh9Lfpzi10CtcGs1emDQStmZfWjJbAIMtRD0opVUjQuFWqHZyRZ9PPzKCFxWg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz",
+ "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==",
"requires": {
"@babel/core": "^7.16.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
@@ -26740,7 +26892,7 @@
"dotenv": "^10.0.0",
"dotenv-expand": "^5.1.0",
"eslint": "^8.3.0",
- "eslint-config-react-app": "^7.0.0",
+ "eslint-config-react-app": "^7.0.1",
"eslint-webpack-plugin": "^3.1.1",
"file-loader": "^6.2.0",
"fs-extra": "^10.0.0",
@@ -26758,7 +26910,7 @@
"postcss-preset-env": "^7.0.1",
"prompts": "^2.4.2",
"react-app-polyfill": "^3.0.0",
- "react-dev-utils": "^12.0.0",
+ "react-dev-utils": "^12.0.1",
"react-refresh": "^0.11.0",
"resolve": "^1.20.0",
"resolve-url-loader": "^4.0.0",
@@ -26910,11 +27062,6 @@
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
},
- "resize-observer-polyfill": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
- "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
- },
"resolve": {
"version": "1.22.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
@@ -27055,9 +27202,9 @@
}
},
"rxjs": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
- "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"requires": {
"tslib": "^2.1.0"
}
@@ -27960,9 +28107,9 @@
}
},
"tslib": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
- "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"tsutils": {
"version": "3.21.0",
diff --git a/karavan-app/src/main/webui/package.json b/karavan-app/src/main/webui/package.json
index 5e9c238c..638c27ba 100644
--- a/karavan-app/src/main/webui/package.json
+++ b/karavan-app/src/main/webui/package.json
@@ -26,16 +26,16 @@
]
},
"dependencies": {
- "@monaco-editor/react": "4.4.6",
+ "@monaco-editor/react": "4.5.0",
"@patternfly/patternfly": "4.224.2",
- "@patternfly/react-charts": "6.94.18",
- "@patternfly/react-core": "4.276.6",
- "@patternfly/react-log-viewer": "^4.87.100",
- "@patternfly/react-table": "4.112.39",
+ "@patternfly/react-charts": "6.94.19",
+ "@patternfly/react-core": "4.276.8",
+ "@patternfly/react-log-viewer": "5.0.0-alpha.1",
+ "@patternfly/react-table": "4.113.0",
"@types/js-yaml": "4.0.5",
- "@types/node": "18.11.18",
+ "@types/node": "18.16.3",
"@types/uuid": "9.0.1",
- "axios": "1.3.4",
+ "axios": "1.4.0",
"buffer": "^6.0.3",
"dagre": "0.8.5",
"file-saver": "^2.0.5",
@@ -44,8 +44,8 @@
"keycloak-js": "^19.0.1",
"react": "17.0.2",
"react-dom": "17.0.2",
- "react-scripts": "5.0.0",
- "rxjs": "7.8.0",
+ "react-scripts": "5.0.1",
+ "rxjs": "7.8.1",
"uuid": "9.0.0"
},
"devDependencies": {
@@ -57,7 +57,7 @@
"@typescript-eslint/eslint-plugin": "^5.51.0",
"@typescript-eslint/parser": "^5.51.0",
"eslint": "^8.33.0",
- "monaco-editor": "0.36.1",
+ "monaco-editor": "0.38.0",
"typescript": "^4.9.5"
}
}
diff --git a/karavan-app/src/main/webui/src/index.css b/karavan-app/src/main/webui/src/index.css
index 55de584e..f947f243 100644
--- a/karavan-app/src/main/webui/src/index.css
+++ b/karavan-app/src/main/webui/src/index.css
@@ -156,6 +156,7 @@
bottom: 0;
right: 0;
width: 100%;
+ z-index: 200;
}
.karavan .project-page .project-log .buttons {
@@ -166,10 +167,22 @@
padding-right: 6px;
}
-.karavan .project-page .project-log .buttons button {
+.karavan .project-page .project-log .buttons button,
+.karavan .project-page .project-log .buttons .pf-c-check {
padding: 8px;
}
+.karavan .project-page .project-log .buttons .pf-c-check .pf-c-check__label{
+ font-size: 12px;
+ line-height: 20px;
+ padding: 0;
+}
+
+.karavan .project-page .project-log .pf-c-log-viewer__scroll-container {
+ height: 100% !important;
+}
+
+
.karavan .project-page .project-log .pf-c-log-viewer__text {
font-size: 11px;
}
diff --git a/karavan-app/src/main/webui/src/projects/ProjectEventBus.ts b/karavan-app/src/main/webui/src/projects/ProjectEventBus.ts
index e36a0d5e..8f6399c3 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectEventBus.ts
+++ b/karavan-app/src/main/webui/src/projects/ProjectEventBus.ts
@@ -19,7 +19,19 @@ import {Project} from "./ProjectModels";
const currentProject = new Subject<Project>();
const currentFile = new Subject<string>();
-const showLog = new Subject<string>();
+const showLog = new Subject<ShowLogCommand>();
+
+export class ShowLogCommand {
+ type: 'container' | 'pipeline'
+ name: string
+ environment: string
+
+ constructor(type: "container" | "pipeline", name: string, environment: string) {
+ this.type = type;
+ this.name = name;
+ this.environment = environment;
+ }
+}
export const ProjectEventBus = {
@@ -30,6 +42,6 @@ export const ProjectEventBus = {
selectProjectFile: (fileName: string) => currentFile.next(fileName),
onSelectProjectFile: () => currentFile.asObservable(),
- showLog: (type: 'container' | 'pipeline', name: string, environment: string) => showLog.next(name),
+ showLog: (type: 'container' | 'pipeline', name: string, environment: string) => showLog.next(new ShowLogCommand(type, name, environment)),
onShowLog: () => showLog.asObservable(),
}
diff --git a/karavan-app/src/main/webui/src/projects/ProjectLog.tsx b/karavan-app/src/main/webui/src/projects/ProjectLog.tsx
index c96f676e..1646663d 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectLog.tsx
+++ b/karavan-app/src/main/webui/src/projects/ProjectLog.tsx
@@ -1,16 +1,14 @@
import React from 'react';
-import {
- CodeBlockAction, CodeBlockCode, CodeBlock, Button, Skeleton, Banner, Divider
-} from '@patternfly/react-core';
+import {Button, Checkbox, PageSection, Tooltip, TooltipPosition} from '@patternfly/react-core';
import '../designer/karavan.css';
import CloseIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
import ExpandIcon from '@patternfly/react-icons/dist/esm/icons/expand-icon';
+import ScrollIcon from '@patternfly/react-icons/dist/esm/icons/scroll-icon';
+import CollapseIcon from '@patternfly/react-icons/dist/esm/icons/compress-icon';
import {LogViewer} from '@patternfly/react-log-viewer';
import {Subscription} from "rxjs";
-import {ProjectEventBus} from "./ProjectEventBus";
-import {Project} from "./ProjectModels";
-import {KaravanApi} from "../api/KaravanApi";
-import {SsoApi} from "../api/SsoApi";
+import {ProjectEventBus, ShowLogCommand} from "./ProjectEventBus";
+import {findDOMNode} from "react-dom";
interface Props {
@@ -18,18 +16,24 @@ interface Props {
interface State {
showLog: boolean,
+ height?: number | string,
+ logViewerRef: any,
+ isTextWrapped: boolean
}
export class ProjectLog extends React.Component<Props, State> {
public state: State = {
- showLog: false
+ showLog: false,
+ height: "30%",
+ logViewerRef: React.createRef(),
+ isTextWrapped: false
}
sub?: Subscription;
componentDidMount() {
- this.sub = ProjectEventBus.onShowLog()?.subscribe((logName: String) => {
+ this.sub = ProjectEventBus.onShowLog()?.subscribe((log: ShowLogCommand) => {
this.setState({showLog: true});
});
}
@@ -38,6 +42,14 @@ export class ProjectLog extends React.Component<Props, State> {
this.sub?.unsubscribe();
}
+ componentDidUpdate = (prevProps: Readonly<Props>, prevState: Readonly<State>, snapshot?: any) => {
+ if (this.state.height === "100%" && prevState.height !== "100%") {
+ const element = findDOMNode(this.state.logViewerRef.current)
+ console.log("change", element)
+ console.log("change", this.state.logViewerRef.current)
+ }
+ }
+
code = "apiVersion: helm.openshift.io/v1beta1/\n" +
"kind: HelmChartRepository\n" +
"metadata:\n" +
@@ -113,19 +125,38 @@ export class ProjectLog extends React.Component<Props, State> {
"url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs"
getButtons() {
+ const {height, isTextWrapped, logViewerRef} = this.state;
return (<div className="buttons">
- <Button variant="plain" onClick={event => {
- }} icon={<ExpandIcon/>}/>
- <Button variant="plain" onClick={() =>this.setState({showLog: false})} icon={<CloseIcon/>}/>
+ <Checkbox label="Wrap text" aria-label="wrap text checkbox" isChecked={isTextWrapped} id="wrap-text-checkbox"
+ onChange={checked => this.setState({isTextWrapped: checked})} />
+ <Tooltip content={"Scroll to bottom"} position={TooltipPosition.bottom}>
+ <Button variant="plain" onClick={() => logViewerRef.current.scrollToBottom()} icon={<ScrollIcon/>}/>
+ </Tooltip>
+ <Tooltip content={height === "100%" ? "Collapse": "Expand"} position={TooltipPosition.bottom}>
+ <Button variant="plain" onClick={() => {
+ const h = height === "100%" ? "30%" : "100%";
+ this.setState({height: h, showLog: true});
+ }} icon={height === "100%" ? <CollapseIcon/> : <ExpandIcon/>}/>
+ </Tooltip>
+ <Button variant="plain" onClick={() => this.setState({height: "30%", showLog: false})} icon={<CloseIcon/>}/>
</div>);
}
render() {
- const {showLog} = this.state;
- return (showLog ? <LogViewer hasLineNumbers={false}
- header={this.getButtons()}
- height={300}
- data={this.code}
- theme={'dark'}/> : <></>);
+ const {showLog, height, logViewerRef, isTextWrapped} = this.state;
+ console.log(this.state)
+ return (showLog ?
+ <PageSection className="project-log" padding={{default: "noPadding"}} style={{height: height}}>
+ <LogViewer
+ isTextWrapped={isTextWrapped}
+ innerRef={logViewerRef}
+ hasLineNumbers={false}
+ loadingContent={"Loading..."}
+ header={this.getButtons()}
+ height={"100vh"}
+ data={this.code.concat(this.code).concat(this.code).concat(this.code)}
+ theme={'dark'}/>
+ </PageSection>
+ : <></>);
}
}
diff --git a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
index 199233c0..bc376c72 100644
--- a/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
+++ b/karavan-app/src/main/webui/src/projects/ProjectPage.tsx
@@ -435,11 +435,7 @@ export class ProjectPage extends React.Component<Props, State> {
const {tab, files} = this.state;
const {project} = this.props;
const isBuildIn = this.isBuildIn();
- return (
- <PageSection className="project-log" padding={{default: "noPadding"}}>
- <ProjectLog/>
- </PageSection>
- )
+ return (<ProjectLog/>)
}
getFilePanel() {