Răsfoiți Sursa

remove unused files

Justin Rhee 3 ani în urmă
părinte
comite
de02eacfb5
38 a modificat fișierele cu 316 adăugiri și 1872 ștergeri
  1. 5 1
      dashboard/babel.config.json
  2. 0 15
      dashboard/src/assets/Panopticon.html
  3. BIN
      dashboard/src/assets/Panopticon_files/52158967ad80feb4ca49c879aed820f1.png
  4. BIN
      dashboard/src/assets/Panopticon_files/52ea44b6f8289c93959942f21c89b93b.png
  5. 0 3
      dashboard/src/assets/Panopticon_files/6976476a375f71fe22ad3c7a9614d835.svg
  6. 0 5
      dashboard/src/assets/Panopticon_files/6db4ee3bde3b6a2505c0d45a3c85286e.svg
  7. BIN
      dashboard/src/assets/Panopticon_files/7bbfaf510f63aaf329553855208de8cc.png
  8. 0 8
      dashboard/src/assets/Panopticon_files/900408bca12da0e4729754147378903f.svg
  9. 0 4
      dashboard/src/assets/Panopticon_files/92a51629c794fa4a2aca047cf1e72f82.svg
  10. 0 3
      dashboard/src/assets/Panopticon_files/bf5fa4562595972e72df3820e9e96ca3.svg
  11. 0 1007
      dashboard/src/assets/Panopticon_files/bundle.js
  12. 0 6
      dashboard/src/assets/Panopticon_files/c3df6986b9c2399109961f5789a46184.svg
  13. 0 72
      dashboard/src/assets/Panopticon_files/css
  14. 0 5
      dashboard/src/assets/Panopticon_files/d05601a92074786f925f34883d742137.svg
  15. 0 4
      dashboard/src/assets/Panopticon_files/d165e41d185d4ff0eaccc5b0a5ac1366.svg
  16. 0 0
      dashboard/src/assets/Panopticon_files/devicon.min.css
  17. BIN
      dashboard/src/assets/Panopticon_files/e9208ae20def7ffa11cd7e1eb9d3812b.png
  18. 0 69
      dashboard/src/assets/Panopticon_files/icon
  19. 0 0
      dashboard/src/assets/Panopticon_files/katex.min.css
  20. 0 417
      dashboard/src/assets/Panopticon_files/main.883c79fc6a23f966494b.hot-update.js
  21. 3 3
      dashboard/src/components/DocsHelper.tsx
  22. 142 123
      dashboard/src/hosted.index.html
  23. 18 19
      dashboard/src/main/home/cluster-dashboard/NamespaceSelector.tsx
  24. 4 6
      dashboard/src/main/home/cluster-dashboard/env-groups/CreateEnvGroup.tsx
  25. 5 17
      dashboard/src/main/home/cluster-dashboard/env-groups/EnvGroupList.tsx
  26. 3 1
      dashboard/src/main/home/cluster-dashboard/expanded-chart/status/PodRow.tsx
  27. 1 1
      dashboard/src/main/home/cluster-dashboard/stacks/ExpandedStack/components/Select.tsx
  28. 2 4
      dashboard/src/main/home/cluster-dashboard/stacks/launch/components/AddResourceButton.tsx
  29. 0 1
      dashboard/src/main/home/integrations/create-integration/GitlabForm.tsx
  30. 13 13
      dashboard/src/main/home/launch/TemplateList.tsx
  31. 3 5
      dashboard/src/main/home/launch/launch-flow/SettingsPage.tsx
  32. 2 6
      dashboard/src/main/home/modals/ClusterInstructionsModal.tsx
  33. 2 2
      dashboard/src/main/home/modals/ConnectToDatabaseInstructionsModal.tsx
  34. 3 7
      dashboard/src/main/home/onboarding/steps/ProvisionResources/forms/_ConnectExternalCluster.tsx
  35. 97 30
      dashboard/src/main/home/sidebar/ClusterSection.tsx
  36. 6 10
      dashboard/src/main/home/sidebar/Clusters.tsx
  37. 2 4
      dashboard/src/main/home/sidebar/Sidebar.tsx
  38. 5 1
      dashboard/src/shared/hooks/useWebsockets.ts

+ 5 - 1
dashboard/babel.config.json

@@ -1,5 +1,9 @@
 {
-  "plugins": ["lodash", "babel-plugin-styled-components", "@babel/plugin-syntax-dynamic-import"],
+  "plugins": [
+    "lodash",
+    "babel-plugin-styled-components",
+    "@babel/plugin-syntax-dynamic-import"
+  ],
   "presets": [
     "@babel/preset-env",
     "@babel/preset-react",

Fișier diff suprimat deoarece este prea mare
+ 0 - 15
dashboard/src/assets/Panopticon.html


BIN
dashboard/src/assets/Panopticon_files/52158967ad80feb4ca49c879aed820f1.png


BIN
dashboard/src/assets/Panopticon_files/52ea44b6f8289c93959942f21c89b93b.png


+ 0 - 3
dashboard/src/assets/Panopticon_files/6976476a375f71fe22ad3c7a9614d835.svg

@@ -1,3 +0,0 @@
-<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M8.15722 19.7714V16.7047C8.1572 15.9246 8.79312 15.2908 9.58101 15.2856H12.4671C13.2587 15.2856 13.9005 15.9209 13.9005 16.7047V16.7047V19.7809C13.9003 20.4432 14.4343 20.9845 15.103 21H17.0271C18.9451 21 20.5 19.4607 20.5 17.5618V17.5618V8.83784C20.4898 8.09083 20.1355 7.38935 19.538 6.93303L12.9577 1.6853C11.8049 0.771566 10.1662 0.771566 9.01342 1.6853L2.46203 6.94256C1.86226 7.39702 1.50739 8.09967 1.5 8.84736V17.5618C1.5 19.4607 3.05488 21 4.97291 21H6.89696C7.58235 21 8.13797 20.4499 8.13797 19.7714V19.7714" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

+ 0 - 5
dashboard/src/assets/Panopticon_files/6db4ee3bde3b6a2505c0d45a3c85286e.svg

@@ -1,5 +0,0 @@
-<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M12.1642 16.7638V11.4242" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M12.1642 7.59037H12.1762" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M17.414 1H6.93896C3.28858 1 1 3.58462 1 7.24225V17.1119C1 20.7695 3.27771 23.3542 6.93896 23.3542H17.4128C21.0753 23.3542 23.3542 20.7695 23.3542 17.1119V7.24225C23.3542 3.58462 21.0753 1 17.414 1Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

BIN
dashboard/src/assets/Panopticon_files/7bbfaf510f63aaf329553855208de8cc.png


+ 0 - 8
dashboard/src/assets/Panopticon_files/900408bca12da0e4729754147378903f.svg

@@ -1,8 +0,0 @@
-<svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M15.207 12.4403C16.8094 12.4403 18.1092 11.1414 18.1092 9.53907C18.1092 7.93673 16.8094 6.63782 15.207 6.63782" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M3.90217 12.4403C2.29983 12.4403 1 11.1414 1 9.53907C1 7.93673 2.29983 6.63782 3.90217 6.63782" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M9.54993 13.4133C7.4086 13.4133 5.69168 11.6964 5.69168 9.55417C5.69168 7.41284 7.4086 5.69592 9.54993 5.69592C11.6913 5.69592 13.4082 7.41284 13.4082 9.55417C13.4082 11.6964 11.6913 13.4133 9.54993 13.4133Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M6.66895 15.207C6.66895 16.8094 7.96787 18.1092 9.5702 18.1092C11.1725 18.1092 12.4715 16.8094 12.4715 15.207" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M6.66895 3.90217C6.66895 2.29983 7.96787 1 9.5702 1C11.1725 1 12.4715 2.29983 12.4715 3.90217" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M5.69591 9.54996C5.69591 7.40863 7.41283 5.69171 9.55508 5.69171C11.6964 5.69171 13.4133 7.40863 13.4133 9.54996C13.4133 11.6913 11.6964 13.4082 9.55508 13.4082C7.41283 13.4082 5.69591 11.6913 5.69591 9.54996Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

+ 0 - 4
dashboard/src/assets/Panopticon_files/92a51629c794fa4a2aca047cf1e72f82.svg

@@ -1,4 +0,0 @@
-<svg width="88" height="88" viewBox="0 0 88 88" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path opacity="0.4" d="M17.3164 77.6135C17.2687 77.6135 17.2247 77.6135 17.1734 77.6098C16.0184 77.5511 14.8854 77.3018 13.8074 76.8655C8.50171 74.7095 5.94237 68.6485 8.09471 63.3465L34.9384 16.3178C35.8624 14.6458 37.263 13.2451 38.9717 12.2991C43.9767 9.52715 50.3054 11.3495 53.0737 16.3508L79.7414 63.0201C80.3354 64.4171 80.5884 65.5538 80.6507 66.7125C80.7937 69.4845 79.8477 72.1428 77.9924 74.1998C76.137 76.2568 73.5887 77.4705 70.8204 77.6098L17.5804 77.6135H17.3164Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M40.79 36.743C40.79 34.9757 42.231 33.5347 43.9984 33.5347C45.7657 33.5347 47.2067 34.9757 47.2067 36.743V47.1123C47.2067 48.8833 45.7657 50.3207 43.9984 50.3207C42.231 50.3207 40.79 48.8833 40.79 47.1123V36.743ZM40.79 59.6564C40.79 57.878 42.231 56.4297 43.9984 56.4297C45.7657 56.4297 47.2067 57.8597 47.2067 59.616C47.2067 61.4237 45.7657 62.8647 43.9984 62.8647C42.231 62.8647 40.79 61.4237 40.79 59.6564Z" fill="white"/>
-</svg>

+ 0 - 3
dashboard/src/assets/Panopticon_files/bf5fa4562595972e72df3820e9e96ca3.svg

@@ -1,3 +0,0 @@
-<svg width="16" height="10" viewBox="0 0 16 10" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M15 1.5L8 8.5L1 1.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

Fișier diff suprimat deoarece este prea mare
+ 0 - 1007
dashboard/src/assets/Panopticon_files/bundle.js


+ 0 - 6
dashboard/src/assets/Panopticon_files/c3df6986b9c2399109961f5789a46184.svg

@@ -1,6 +0,0 @@
-<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2855 1H18.5521C19.9036 1 21 2.1059 21 3.47018V6.7641C21 8.12735 19.9036 9.23429 18.5521 9.23429H15.2855C13.933 9.23429 12.8366 8.12735 12.8366 6.7641V3.47018C12.8366 2.1059 13.933 1 15.2855 1Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M3.44892 1H6.71449C8.06703 1 9.16341 2.1059 9.16341 3.47018V6.7641C9.16341 8.12735 8.06703 9.23429 6.71449 9.23429H3.44892C2.09638 9.23429 1 8.12735 1 6.7641V3.47018C1 2.1059 2.09638 1 3.44892 1Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M3.44892 12.7657H6.71449C8.06703 12.7657 9.16341 13.8716 9.16341 15.2369V18.5298C9.16341 19.8941 8.06703 21 6.71449 21H3.44892C2.09638 21 1 19.8941 1 18.5298V15.2369C1 13.8716 2.09638 12.7657 3.44892 12.7657Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M15.2855 12.7657H18.5521C19.9036 12.7657 21 13.8716 21 15.2369V18.5298C21 19.8941 19.9036 21 18.5521 21H15.2855C13.933 21 12.8366 19.8941 12.8366 18.5298V15.2369C12.8366 13.8716 13.933 12.7657 15.2855 12.7657Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

+ 0 - 72
dashboard/src/assets/Panopticon_files/css

@@ -1,72 +0,0 @@
-/* vietnamese */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_c6DptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_cqDptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_fKDptfpA4Q.woff2) format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* vietnamese */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 500;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_c6DptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 500;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_cqDptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 500;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_fKDptfpA4Q.woff2) format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-/* vietnamese */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 600;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_c6DptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
-}
-/* latin-ext */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 600;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_cqDptfpA4cD3.woff2) format('woff2');
-  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-/* latin */
-@font-face {
-  font-family: 'Work Sans';
-  font-style: normal;
-  font-weight: 600;
-  src: url(https://fonts.gstatic.com/s/worksans/v18/QGYsz_wNahGAdqQ43Rh_fKDptfpA4Q.woff2) format('woff2');
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}

+ 0 - 5
dashboard/src/assets/Panopticon_files/d05601a92074786f925f34883d742137.svg

@@ -1,5 +0,0 @@
-<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path fill-rule="evenodd" clip-rule="evenodd" d="M9.99988 0.750183C15.1089 0.750183 19.2499 4.89218 19.2499 10.0002C19.2499 15.1082 15.1089 19.2502 9.99988 19.2502C4.89188 19.2502 0.749878 15.1082 0.749878 10.0002C0.749878 4.89218 4.89188 0.750183 9.99988 0.750183Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M9.995 6.20428V10.6233" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M9.995 13.7961H10.005" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-</svg>

+ 0 - 4
dashboard/src/assets/Panopticon_files/d165e41d185d4ff0eaccc5b0a5ac1366.svg

@@ -1,4 +0,0 @@
-<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path opacity="0.4" d="M20.0943 2.5H24.3268C26.0796 2.5 27.4999 3.93231 27.4999 5.69995V9.96816C27.4999 11.7358 26.0796 13.1681 24.3268 13.1681H20.0943C18.3415 13.1681 16.9211 11.7358 16.9211 9.96816V5.69995C16.9211 3.93231 18.3415 2.5 20.0943 2.5Z" fill="white"/>
-<path fill-rule="evenodd" clip-rule="evenodd" d="M5.67316 2.5H9.90561C11.6584 2.5 13.0788 3.93231 13.0788 5.69995V9.96816C13.0788 11.7358 11.6584 13.1681 9.90561 13.1681H5.67316C3.92032 13.1681 2.5 11.7358 2.5 9.96816V5.69995C2.5 3.93231 3.92032 2.5 5.67316 2.5ZM5.67316 16.8319H9.90561C11.6584 16.8319 13.0788 18.2642 13.0788 20.0318V24.3C13.0788 26.0665 11.6584 27.5 9.90561 27.5H5.67316C3.92032 27.5 2.5 26.0665 2.5 24.3V20.0318C2.5 18.2642 3.92032 16.8319 5.67316 16.8319ZM24.3268 16.8319H20.0944C18.3415 16.8319 16.9212 18.2642 16.9212 20.0318V24.3C16.9212 26.0665 18.3415 27.5 20.0944 27.5H24.3268C26.0797 27.5 27.5 26.0665 27.5 24.3V20.0318C27.5 18.2642 26.0797 16.8319 24.3268 16.8319Z" fill="white"/>
-</svg>

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
dashboard/src/assets/Panopticon_files/devicon.min.css


BIN
dashboard/src/assets/Panopticon_files/e9208ae20def7ffa11cd7e1eb9d3812b.png


+ 0 - 69
dashboard/src/assets/Panopticon_files/icon

@@ -1,69 +0,0 @@
-/* fallback */
-@font-face {
-  font-family: 'Material Icons';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/materialicons/v139/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format('woff2');
-}
-/* fallback */
-@font-face {
-  font-family: 'Material Icons Outlined';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/materialiconsoutlined/v108/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUcel5euIg.woff2) format('woff2');
-}
-/* fallback */
-@font-face {
-  font-family: 'Material Icons Round';
-  font-style: normal;
-  font-weight: 400;
-  src: url(https://fonts.gstatic.com/s/materialiconsround/v107/LDItaoyNOAY6Uewc665JcIzCKsKc_M9flwmPq_HTTw.woff2) format('woff2');
-}
-
-.material-icons {
-  font-family: 'Material Icons';
-  font-weight: normal;
-  font-style: normal;
-  font-size: 24px;
-  line-height: 1;
-  letter-spacing: normal;
-  text-transform: none;
-  display: inline-block;
-  white-space: nowrap;
-  word-wrap: normal;
-  direction: ltr;
-  -webkit-font-feature-settings: 'liga';
-  -webkit-font-smoothing: antialiased;
-}
-
-.material-icons-outlined {
-  font-family: 'Material Icons Outlined';
-  font-weight: normal;
-  font-style: normal;
-  font-size: 24px;
-  line-height: 1;
-  letter-spacing: normal;
-  text-transform: none;
-  display: inline-block;
-  white-space: nowrap;
-  word-wrap: normal;
-  direction: ltr;
-  -webkit-font-feature-settings: 'liga';
-  -webkit-font-smoothing: antialiased;
-}
-
-.material-icons-round {
-  font-family: 'Material Icons Round';
-  font-weight: normal;
-  font-style: normal;
-  font-size: 24px;
-  line-height: 1;
-  letter-spacing: normal;
-  text-transform: none;
-  display: inline-block;
-  white-space: nowrap;
-  word-wrap: normal;
-  direction: ltr;
-  -webkit-font-feature-settings: 'liga';
-  -webkit-font-smoothing: antialiased;
-}

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
dashboard/src/assets/Panopticon_files/katex.min.css


+ 0 - 417
dashboard/src/assets/Panopticon_files/main.883c79fc6a23f966494b.hot-update.js

@@ -1,417 +0,0 @@
-webpackHotUpdate("main",{
-
-/***/ "./src/Main.tsx":
-/*!**********************!*\
-  !*** ./src/Main.tsx ***!
-  \**********************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function(__react_refresh_utils__, __react_refresh_error_overlay__) {/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js");
-/* harmony import */ var assets_gradient_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! assets/gradient.png */ "./src/assets/gradient.png");
-/* harmony import */ var components_TitleSection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/TitleSection */ "./src/components/TitleSection.tsx");
-/* harmony import */ var _filter_row_FilterRow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./filter-row/FilterRow */ "./src/filter-row/FilterRow.tsx");
-/* harmony import */ var navbar_Navbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! navbar/Navbar */ "./src/navbar/Navbar.tsx");
-/* harmony import */ var components_Loading__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/Loading */ "./src/components/Loading.tsx");
-/* harmony import */ var components_TabSelector__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/TabSelector */ "./src/components/TabSelector.tsx");
-/* harmony import */ var monitor_list_MonitorList__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! monitor-list/MonitorList */ "./src/monitor-list/MonitorList.tsx");
-/* harmony import */ var expanded_monitor_ExpandedMonitor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! expanded-monitor/ExpandedMonitor */ "./src/expanded-monitor/ExpandedMonitor.tsx");
-/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
-__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ "./node_modules/react-refresh/runtime.js");
-__webpack_require__.$Refresh$.setup(module.i);
-
-var _s2 = __webpack_require__.$Refresh$.signature();
-
-function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
-
-function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
-
-function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
-function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
-
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-
-function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
-
-function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
-
-function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
-
-function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
-
-
-
-
-
-
-
-
-
-
-
-
-
-var Main = function Main() {
-  _s2();
-
-  var history = Object(react_router_dom__WEBPACK_IMPORTED_MODULE_10__["useHistory"])();
-
-  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(false),
-      _useState2 = _slicedToArray(_useState, 2),
-      authCheckResult = _useState2[0],
-      setAuthCheckResult = _useState2[1];
-
-  var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])({}),
-      _useState4 = _slicedToArray(_useState3, 2),
-      projectDict = _useState4[0],
-      setProjectDict = _useState4[1];
-
-  var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])({}),
-      _useState6 = _slicedToArray(_useState5, 2),
-      clusterDict = _useState6[0],
-      setClusterDict = _useState6[1];
-
-  var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])({}),
-      _useState8 = _slicedToArray(_useState7, 2),
-      clusterToProjectDict = _useState8[0],
-      setClusterToProjectDict = _useState8[1];
-
-  var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])("all"),
-      _useState10 = _slicedToArray(_useState9, 2),
-      currentTab = _useState10[0],
-      _setCurrentTab = _useState10[1];
-
-  var _useState11 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(null),
-      _useState12 = _slicedToArray(_useState11, 2),
-      expandedMonitor = _useState12[0],
-      setExpandedMonitor = _useState12[1];
-
-  var _useState13 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])({
-    project: [],
-    cluster: [],
-    category: [],
-    priority: [],
-    status: []
-  }),
-      _useState14 = _slicedToArray(_useState13, 2),
-      filters = _useState14[0],
-      setFilters = _useState14[1];
-
-  var arrayToObject = function arrayToObject(arr, property) {
-    var obj = {};
-    arr.forEach(function (x) {
-      return obj[JSON.stringify(x.id)] = x[property || "name"];
-    });
-    return obj;
-  };
-
-  Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
-    /* ret2: uncomment
-    api
-      .authCheck("<token>", {}, {})
-      .then((res) => {
-        setAuthCheckResult(true);
-      })
-      .catch((err) => {
-        window.location.href = "/api/v1/oauth/google/login";
-      });
-    */
-    setAuthCheckResult(true);
-  }, []);
-  Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
-    var params = new URLSearchParams(window.location.search);
-    console.log(params.get("bloke"));
-    /* ret2: uncomment
-    api.listProjects("<token>", {}, {}).then((res) => {
-      setProjectDict(arrayToObject(res.data));
-    });
-     api.listClusters("<token>", {}, {}).then((res) => {
-      setClusterDict(arrayToObject(res.data));
-      setClusterToProjectDict(arrayToObject(res.data, "project_id"));
-    });
-    */
-    // Dummy project list query
-
-    setTimeout(function () {
-      return setProjectDict(arrayToObject([{
-        "id": 23,
-        "name": "in-dreams"
-      }, {
-        "id": 24,
-        "name": "blue-velvet"
-      }, {
-        "id": 26,
-        "name": "wagon-wheel"
-      }, {
-        "id": 209,
-        "name": "clarity"
-      }, {
-        "id": 277,
-        "name": "watermelon-man"
-      }, {
-        "id": 32,
-        "name": "you-know-how-it-is"
-      }, {
-        "id": 45,
-        "name": "shreddy-kruger"
-      }, {
-        "id": 96,
-        "name": "get-by"
-      }, {
-        "id": 88,
-        "name": "killer-queen"
-      }, {
-        "id": 4,
-        "name": "stairway-to-heaven"
-      }]));
-    }, 1000); // Dummy cluster list query
-
-    setTimeout(function () {
-      var dummyClusters = [{
-        "id": 45,
-        "name": "alexander-test-aks",
-        "project_id": 26
-      }, {
-        "id": 46,
-        "name": "scaling-test-cluster",
-        "project_id": 26
-      }, {
-        "id": 101,
-        "name": "wing-wing-staging-asdflkajsdflkjasdf-asdflkjasdflkjasdflkjasdlfkjasdlfkjasldkfjasdflkjasdflkjasdflkjasdf",
-        "project_id": 4
-      }, {
-        "id": 102,
-        "name": "comes-and-goes-alskdjflkasjdflkjasdf-asdflkjasdflkjasdflkjasdflkjasdflkjsdfjklsaasdflkjfdjsaklasdflkjfdsa",
-        "project_id": 88
-      }, {
-        "id": 455,
-        "name": "clarity-staging",
-        "project_id": 209
-      }, {
-        "id": 456,
-        "name": "clarity-production",
-        "project_id": 209
-      }];
-      setClusterDict(arrayToObject(dummyClusters));
-      setClusterToProjectDict(arrayToObject(dummyClusters, "project_id"));
-    }, 1200);
-  }, []);
-
-  if (!authCheckResult) {
-    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_Loading__WEBPACK_IMPORTED_MODULE_6__["default"], null);
-  }
-
-  var renderContents = function renderContents() {
-    return expandedMonitor ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(expanded_monitor_ExpandedMonitor__WEBPACK_IMPORTED_MODULE_9__["ExpandedMonitor"], {
-      expandedMonitor: expandedMonitor,
-      closeExpanded: function closeExpanded() {
-        return setExpandedMonitor(null);
-      }
-    }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_TitleSection__WEBPACK_IMPORTED_MODULE_3__["default"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DashboardIcon, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(DashboardImage, {
-      src: assets_gradient_png__WEBPACK_IMPORTED_MODULE_2__["default"]
-    }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Overlay, null, "P")), "Porter Panopticon"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(InfoSection, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(TopRow, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(InfoLabel, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("i", {
-      className: "material-icons"
-    }, "info"), " Info")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Description, null, "This dashboard displays infrastructure monitors across all active Porter Cloud projects.")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_TabSelector__WEBPACK_IMPORTED_MODULE_7__["default"], {
-      currentTab: currentTab,
-      options: [{
-        value: "all",
-        label: "All"
-      }, {
-        value: "critical",
-        label: "Critical"
-      }, {
-        value: "high",
-        label: "High priority"
-      }, {
-        value: "low",
-        label: "Low priority"
-      }],
-      setCurrentTab: function setCurrentTab(x) {
-        x === "all" ? setFilters(_objectSpread(_objectSpread({}, filters), {}, {
-          priority: []
-        })) : setFilters(_objectSpread(_objectSpread({}, filters), {}, {
-          priority: [{
-            value: x
-          }]
-        }));
-
-        _setCurrentTab(x);
-      }
-    }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Br, null), Object.keys(projectDict).length > 0 && Object.keys(clusterDict).length > 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(FadeWrapper, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_filter_row_FilterRow__WEBPACK_IMPORTED_MODULE_4__["FilterRow"], {
-      projectDict: projectDict,
-      clusterDict: clusterDict,
-      clusterToProjectDict: clusterToProjectDict,
-      setFilters: setFilters,
-      filters: filters
-    }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Br, null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(monitor_list_MonitorList__WEBPACK_IMPORTED_MODULE_8__["MonitorList"], {
-      projectDict: projectDict,
-      clusterDict: clusterDict,
-      setExpandedMonitor: setExpandedMonitor,
-      filters: filters
-    })) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(LoadingRow, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_Loading__WEBPACK_IMPORTED_MODULE_6__["default"], null)));
-  };
-
-  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(StyledMain, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(navbar_Navbar__WEBPACK_IMPORTED_MODULE_5__["default"], null), renderContents());
-};
-
-_s2(Main, "RFyQb1FsB2gLrasmA72++zOTM1k=", false, function () {
-  return [react_router_dom__WEBPACK_IMPORTED_MODULE_10__["useHistory"]];
-});
-
-_c = Main;
-/* harmony default export */ __webpack_exports__["default"] = (Main);
-var FadeWrapper = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__FadeWrapper",
-  componentId: "sc-atiuxc-0"
-})(["animation:fadeIn 0.3s;animation-timing-function:ease-out;animation-fill-mode:forwards;@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}"]);
-_c2 = FadeWrapper;
-var LoadingRow = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__LoadingRow",
-  componentId: "sc-atiuxc-1"
-})(["width:100%;height:calc(100% - 300px);"]);
-_c3 = LoadingRow;
-var TopRow = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__TopRow",
-  componentId: "sc-atiuxc-2"
-})(["display:flex;align-items:center;"]);
-_c4 = TopRow;
-var Description = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__Description",
-  componentId: "sc-atiuxc-3"
-})(["color:#8b949f;margin-top:13px;margin-left:2px;font-size:13px;"]);
-_c5 = Description;
-var InfoLabel = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__InfoLabel",
-  componentId: "sc-atiuxc-4"
-})(["width:72px;height:20px;display:flex;align-items:center;color:#8b949f;font-size:13px;> i{color:#8b949f;font-size:18px;margin-right:5px;}"]);
-_c6 = InfoLabel;
-var InfoSection = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__InfoSection",
-  componentId: "sc-atiuxc-5"
-})(["margin-top:35px;font-family:\"Work Sans\",sans-serif;margin-left:0px;margin-bottom:30px;"]);
-_c7 = InfoSection;
-var StyledMain = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__StyledMain",
-  componentId: "sc-atiuxc-6"
-})(["width:100%;padding:45px 40px 45px;overflow:auto;position:relative;"]);
-_c8 = StyledMain;
-var Br = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__Br",
-  componentId: "sc-atiuxc-7"
-})(["width:100%;height:20px;"]);
-_c9 = Br;
-var Overlay = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__Overlay",
-  componentId: "sc-atiuxc-8"
-})(["height:100%;width:100%;position:absolute;top:0;left:0;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:500;font-family:\"Work Sans\",sans-serif;color:white;"]);
-_c10 = Overlay;
-var DashboardImage = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].img.withConfig({
-  displayName: "Main__DashboardImage",
-  componentId: "sc-atiuxc-9"
-})(["height:35px;width:35px;border-radius:5px;box-shadow:0 2px 5px 4px #00000011;"]);
-_c11 = DashboardImage;
-var DashboardIcon = styled_components__WEBPACK_IMPORTED_MODULE_1__["default"].div.withConfig({
-  displayName: "Main__DashboardIcon",
-  componentId: "sc-atiuxc-10"
-})(["position:relative;height:35px;margin-right:17px;width:35px;border-radius:5px;display:flex;align-items:center;justify-content:center;> i{font-size:22px;}"]);
-_c12 = DashboardIcon;
-
-var _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c10, _c11, _c12;
-
-__webpack_require__.$Refresh$.register(_c, "Main");
-__webpack_require__.$Refresh$.register(_c2, "FadeWrapper");
-__webpack_require__.$Refresh$.register(_c3, "LoadingRow");
-__webpack_require__.$Refresh$.register(_c4, "TopRow");
-__webpack_require__.$Refresh$.register(_c5, "Description");
-__webpack_require__.$Refresh$.register(_c6, "InfoLabel");
-__webpack_require__.$Refresh$.register(_c7, "InfoSection");
-__webpack_require__.$Refresh$.register(_c8, "StyledMain");
-__webpack_require__.$Refresh$.register(_c9, "Br");
-__webpack_require__.$Refresh$.register(_c10, "Overlay");
-__webpack_require__.$Refresh$.register(_c11, "DashboardImage");
-__webpack_require__.$Refresh$.register(_c12, "DashboardIcon");
-
-const currentExports = __react_refresh_utils__.getModuleExports(module.i);
-__react_refresh_utils__.registerExportsForReactRefresh(currentExports, module.i);
-
-if (true) {
-  const isHotUpdate = !!module.hot.data;
-  const prevExports = isHotUpdate ? module.hot.data.prevExports : null;
-
-  if (__react_refresh_utils__.isReactRefreshBoundary(currentExports)) {
-    module.hot.dispose(
-      /**
-       * A callback to performs a full refresh if React has unrecoverable errors,
-       * and also caches the to-be-disposed module.
-       * @param {*} data A hot module data object from Webpack HMR.
-       * @returns {void}
-       */
-      function hotDisposeCallback(data) {
-        // We have to mutate the data object to get data registered and cached
-        data.prevExports = currentExports;
-      }
-    );
-    module.hot.accept(
-      /**
-       * An error handler to allow self-recovering behaviours.
-       * @param {Error} error An error occurred during evaluation of a module.
-       * @returns {void}
-       */
-      function hotErrorHandler(error) {
-        if (
-          typeof __react_refresh_error_overlay__ !== 'undefined' &&
-          __react_refresh_error_overlay__
-        ) {
-          __react_refresh_error_overlay__.handleRuntimeError(error);
-        }
-
-        if (typeof __react_refresh_test__ !== 'undefined' && __react_refresh_test__) {
-          if (window.onHotAcceptError) {
-            window.onHotAcceptError(error.message);
-          }
-        }
-
-        __webpack_require__.c[module.i].hot.accept(hotErrorHandler);
-      }
-    );
-
-    if (isHotUpdate) {
-      if (
-        __react_refresh_utils__.isReactRefreshBoundary(prevExports) &&
-        __react_refresh_utils__.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)
-      ) {
-        module.hot.invalidate();
-      } else {
-        __react_refresh_utils__.enqueueUpdate(
-          /**
-           * A function to dismiss the error overlay after performing React refresh.
-           * @returns {void}
-           */
-          function updateCallback() {
-            if (
-              typeof __react_refresh_error_overlay__ !== 'undefined' &&
-              __react_refresh_error_overlay__
-            ) {
-              __react_refresh_error_overlay__.clearRuntimeErrors();
-            }
-          }
-        );
-      }
-    }
-  } else {
-    if (isHotUpdate && __react_refresh_utils__.isReactRefreshBoundary(prevExports)) {
-      module.hot.invalidate();
-    }
-  }
-}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js"), __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js */ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/overlay/index.js")))
-
-/***/ })
-
-})
-//# sourceMappingURL=main.883c79fc6a23f966494b.hot-update.js.map

+ 3 - 3
dashboard/src/components/DocsHelper.tsx

@@ -46,9 +46,9 @@ const DocsHelper: React.FC<Props> = ({
               <StyledContent onClick={handleTooltipOpen}>
                 {tooltipText}
                 {link && (
-                <A target="_blank" href={link}>
-                  Documentation {">"}
-                </A>
+                  <A target="_blank" href={link}>
+                    Documentation {">"}
+                  </A>
                 )}
               </StyledContent>
             </Tooltip>

+ 142 - 123
dashboard/src/hosted.index.html

@@ -1,133 +1,152 @@
 <!DOCTYPE html>
 <html lang="en">
+  <head>
+    <title>Porter | Dashboard</title>
 
-<head>
-  <title>Porter | Dashboard</title>
+    <script>
+      window.intercomSettings = {
+        app_id: "<%= htmlWebpackPlugin.options.intercomAppId %>",
+        custom_launcher_selector: "#intercom_help",
+      };
+    </script>
 
-  <script>
-    window.intercomSettings = {
-      app_id: "<%= htmlWebpackPlugin.options.intercomAppId %>",
-      custom_launcher_selector: "#intercom_help",
-    };
-  </script>
-
-  <script>
-    // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/gq56g49i'
-    (function () {
-      var w = window;
-      var ic = w.Intercom;
-      if (typeof ic === "function") {
-        ic("reattach_activator");
-        ic("update", w.intercomSettings);
-      } else {
-        var d = document;
-        var i = function () {
-          i.c(arguments);
-        };
-        i.q = [];
-        i.c = function (args) {
-          i.q.push(args);
-        };
-        w.Intercom = i;
-        var l = function () {
-          var s = d.createElement("script");
-          s.type = "text/javascript";
-          s.async = true;
-          s.src = "<%= htmlWebpackPlugin.options.intercomSrc %>";
-          var x = d.getElementsByTagName("script")[0];
-          x.parentNode.insertBefore(s, x);
-        };
-        if (document.readyState === "complete") {
-          l();
-        } else if (w.attachEvent) {
-          w.attachEvent("onload", l);
+    <script>
+      // We pre-filled your app ID in the widget URL: 'https://widget.intercom.io/widget/gq56g49i'
+      (function () {
+        var w = window;
+        var ic = w.Intercom;
+        if (typeof ic === "function") {
+          ic("reattach_activator");
+          ic("update", w.intercomSettings);
         } else {
-          w.addEventListener("load", l, false);
-        }
-      }
-    })();
-  </script>
-
-  <script>
-    !(function () {
-      var analytics = (window.analytics = window.analytics || []);
-      if (!analytics.initialize)
-        if (analytics.invoked)
-          window.console &&
-            console.error &&
-            console.error("Segment snippet included twice.");
-        else {
-          analytics.invoked = !0;
-          analytics.methods = [
-            "trackSubmit",
-            "trackClick",
-            "trackLink",
-            "trackForm",
-            "pageview",
-            "identify",
-            "reset",
-            "group",
-            "track",
-            "ready",
-            "alias",
-            "debug",
-            "page",
-            "once",
-            "off",
-            "on",
-            "addSourceMiddleware",
-            "addIntegrationMiddleware",
-            "setAnonymousId",
-            "addDestinationMiddleware",
-          ];
-          analytics.factory = function (e) {
-            return function () {
-              var t = Array.prototype.slice.call(arguments);
-              t.unshift(e);
-              analytics.push(t);
-              return analytics;
-            };
+          var d = document;
+          var i = function () {
+            i.c(arguments);
           };
-          for (var e = 0; e < analytics.methods.length; e++) {
-            var key = analytics.methods[e];
-            analytics[key] = analytics.factory(key);
-          }
-          analytics.load = function (key, e) {
-            var t = document.createElement("script");
-            t.type = "text/javascript";
-            t.async = !0;
-            t.src =
-              "https://cdn.segment.com/analytics.js/v1/" +
-              key +
-              "/analytics.min.js";
-            var n = document.getElementsByTagName("script")[0];
-            n.parentNode.insertBefore(t, n);
-            analytics._loadOptions = e;
+          i.q = [];
+          i.c = function (args) {
+            i.q.push(args);
           };
-          analytics._writeKey = "<%= htmlWebpackPlugin.options.segmentWriteKey %>";
-          analytics.SNIPPET_VERSION = "4.13.2";
-          analytics.load("<%= htmlWebpackPlugin.options.segmentKey %>");
-          analytics.page();
+          w.Intercom = i;
+          var l = function () {
+            var s = d.createElement("script");
+            s.type = "text/javascript";
+            s.async = true;
+            s.src = "<%= htmlWebpackPlugin.options.intercomSrc %>";
+            var x = d.getElementsByTagName("script")[0];
+            x.parentNode.insertBefore(s, x);
+          };
+          if (document.readyState === "complete") {
+            l();
+          } else if (w.attachEvent) {
+            w.attachEvent("onload", l);
+          } else {
+            w.addEventListener("load", l, false);
+          }
         }
-    })();
-  </script>
-  <link rel="icon" href="https://i.ibb.co/HnSk02f/ptr.png" />
-  <meta name="description" content="Kubernetes powered PaaS that runs in your own cloud." />
-  <meta property="og:title" content="Porter" />
-  <meta property="og:image" content="https://i.ibb.co/52g2g7C/porter-wide.png" />
-  <meta property="og:description" content="Kubernetes powered PaaS that runs in your own cloud." />
-  <meta property="og:url" content="https://porter.run" />
-  <link href="https://fonts.googleapis.com/css?family=Work+Sans:400,500,600" rel="stylesheet" />
-  <link href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0/katex.min.css" rel="stylesheet" />
-  <link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Round"
-    rel="stylesheet" />
-  <!-- Coding languages icons -->
-  <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.14.0/devicon.min.css" />
-</head>
+      })();
+    </script>
 
-<body>
-  <div id="output"></div>
-  <div id="modal-root"></div>
-</body>
+    <script>
+      !(function () {
+        var analytics = (window.analytics = window.analytics || []);
+        if (!analytics.initialize)
+          if (analytics.invoked)
+            window.console &&
+              console.error &&
+              console.error("Segment snippet included twice.");
+          else {
+            analytics.invoked = !0;
+            analytics.methods = [
+              "trackSubmit",
+              "trackClick",
+              "trackLink",
+              "trackForm",
+              "pageview",
+              "identify",
+              "reset",
+              "group",
+              "track",
+              "ready",
+              "alias",
+              "debug",
+              "page",
+              "once",
+              "off",
+              "on",
+              "addSourceMiddleware",
+              "addIntegrationMiddleware",
+              "setAnonymousId",
+              "addDestinationMiddleware",
+            ];
+            analytics.factory = function (e) {
+              return function () {
+                var t = Array.prototype.slice.call(arguments);
+                t.unshift(e);
+                analytics.push(t);
+                return analytics;
+              };
+            };
+            for (var e = 0; e < analytics.methods.length; e++) {
+              var key = analytics.methods[e];
+              analytics[key] = analytics.factory(key);
+            }
+            analytics.load = function (key, e) {
+              var t = document.createElement("script");
+              t.type = "text/javascript";
+              t.async = !0;
+              t.src =
+                "https://cdn.segment.com/analytics.js/v1/" +
+                key +
+                "/analytics.min.js";
+              var n = document.getElementsByTagName("script")[0];
+              n.parentNode.insertBefore(t, n);
+              analytics._loadOptions = e;
+            };
+            analytics._writeKey =
+              "<%= htmlWebpackPlugin.options.segmentWriteKey %>";
+            analytics.SNIPPET_VERSION = "4.13.2";
+            analytics.load("<%= htmlWebpackPlugin.options.segmentKey %>");
+            analytics.page();
+          }
+      })();
+    </script>
+    <link rel="icon" href="https://i.ibb.co/HnSk02f/ptr.png" />
+    <meta
+      name="description"
+      content="Kubernetes powered PaaS that runs in your own cloud."
+    />
+    <meta property="og:title" content="Porter" />
+    <meta
+      property="og:image"
+      content="https://i.ibb.co/52g2g7C/porter-wide.png"
+    />
+    <meta
+      property="og:description"
+      content="Kubernetes powered PaaS that runs in your own cloud."
+    />
+    <meta property="og:url" content="https://porter.run" />
+    <link
+      href="https://fonts.googleapis.com/css?family=Work+Sans:400,500,600"
+      rel="stylesheet"
+    />
+    <link
+      href="//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.9.0/katex.min.css"
+      rel="stylesheet"
+    />
+    <link
+      href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Round"
+      rel="stylesheet"
+    />
+    <!-- Coding languages icons -->
+    <link
+      rel="stylesheet"
+      href="https://cdn.jsdelivr.net/gh/devicons/devicon@v2.14.0/devicon.min.css"
+    />
+  </head>
 
-</html>
+  <body>
+    <div id="output"></div>
+    <div id="modal-root"></div>
+  </body>
+</html>

+ 18 - 19
dashboard/src/main/home/cluster-dashboard/NamespaceSelector.tsx

@@ -22,9 +22,12 @@ export const NamespaceSelector: React.FunctionComponent<Props> = ({
 }) => {
   const context = useContext(Context);
   let _isMounted = true;
-  const [namespaceOptions, setNamespaceOptions] = useState<{
-    label: string, value: string,
-  }[]>([]);
+  const [namespaceOptions, setNamespaceOptions] = useState<
+    {
+      label: string;
+      value: string;
+    }[]
+  >([]);
   const [defaultNamespace, setDefaultNamespace] = useState<string>("default");
 
   const updateOptions = () => {
@@ -53,23 +56,19 @@ export const NamespaceSelector: React.FunctionComponent<Props> = ({
             urlNamespace = "ALL";
           }
 
-          const availableNamespaces = res.data.filter(
-            (namespace: any) => {
-              return namespace.status !== "Terminating";
-            }
-          );
+          const availableNamespaces = res.data.filter((namespace: any) => {
+            return namespace.status !== "Terminating";
+          });
           setDefaultNamespace("default");
-          availableNamespaces.forEach(
-            (x: { name: string }, i: number) => {
-              namespaceOptions.push({
-                label: x.name,
-                value: x.name,
-              });
-              if (x.name === urlNamespace) {
-                setDefaultNamespace(urlNamespace);
-              }
+          availableNamespaces.forEach((x: { name: string }, i: number) => {
+            namespaceOptions.push({
+              label: x.name,
+              value: x.name,
+            });
+            if (x.name === urlNamespace) {
+              setDefaultNamespace(urlNamespace);
             }
-          );
+          });
           setNamespaceOptions(namespaceOptions);
         }
       })
@@ -118,7 +117,7 @@ export const NamespaceSelector: React.FunctionComponent<Props> = ({
       />
     </StyledNamespaceSelector>
   );
-}
+};
 
 const Label = styled.div`
   display: flex;

+ 4 - 6
dashboard/src/main/home/cluster-dashboard/env-groups/CreateEnvGroup.tsx

@@ -122,11 +122,9 @@ export default class CreateEnvGroup extends Component<PropsType, StateType> {
       )
       .then((res) => {
         if (res.data) {
-          const availableNamespaces = res.data.filter(
-            (namespace: any) => {
-              return namespace.status !== "Terminating";
-            }
-          );
+          const availableNamespaces = res.data.filter((namespace: any) => {
+            return namespace.status !== "Terminating";
+          });
           const namespaceOptions = availableNamespaces.map(
             (x: { name: string }) => {
               return { label: x.name, value: x.name };
@@ -341,7 +339,7 @@ const HeaderSection = styled.div`
   > i {
     cursor: pointer;
     font-size: 20px;
-    color: #969Fbbaa;
+    color: #969fbbaa;
     padding: 2px;
     border: 2px solid #969fbbaa;
     border-radius: 100px;

+ 5 - 17
dashboard/src/main/home/cluster-dashboard/env-groups/EnvGroupList.tsx

@@ -26,13 +26,8 @@ type State = {
 const EnvGroupList: React.FunctionComponent<Props> = (props) => {
   const context = useContext(Context);
 
-  const {
-    currentCluster,
-    namespace,
-    sortType,
-    setExpandedEnvGroup,  
-  } = props;
-  
+  const { currentCluster, namespace, sortType, setExpandedEnvGroup } = props;
+
   const [envGroups, setEnvGroups] = useState<any[]>([]);
   const [isLoading, setIsLoading] = useState<boolean>(true);
   const [hasError, setHasError] = useState<boolean>(false);
@@ -81,10 +76,7 @@ const EnvGroupList: React.FunctionComponent<Props> = (props) => {
     // Prevents reload when opening ClusterConfigModal
     (namespace || namespace === "") &&
       updateEnvGroups().then((envGroups) => {
-        const selectedEnvGroup = getQueryParam(
-          props,
-          "selected_env_group"
-        );
+        const selectedEnvGroup = getQueryParam(props, "selected_env_group");
 
         setEnvGroups(envGroups);
         if (envGroups && envGroups.length > 0) {
@@ -144,12 +136,8 @@ const EnvGroupList: React.FunctionComponent<Props> = (props) => {
     });
   };
 
-  return (
-    <StyledEnvGroupList>
-      {renderEnvGroupList()}
-    </StyledEnvGroupList>
-  );
-}
+  return <StyledEnvGroupList>{renderEnvGroupList()}</StyledEnvGroupList>;
+};
 
 export default withRouter(EnvGroupList);
 

+ 3 - 1
dashboard/src/main/home/cluster-dashboard/expanded-chart/status/PodRow.tsx

@@ -45,7 +45,9 @@ const PodRow: React.FunctionComponent<PodRowProps> = ({
           <Grey>Created on: {pod.podAge}</Grey>
           {podStatus === "failed" ? (
             <FailedStatusContainer>
-              <Grey>Failure Reason: {pod?.containerStatus?.state?.waiting?.reason}</Grey>
+              <Grey>
+                Failure Reason: {pod?.containerStatus?.state?.waiting?.reason}
+              </Grey>
               <Grey>{pod?.containerStatus?.state?.waiting?.message}</Grey>
             </FailedStatusContainer>
           ) : null}

+ 1 - 1
dashboard/src/main/home/cluster-dashboard/stacks/ExpandedStack/components/Select.tsx

@@ -153,7 +153,7 @@ export const SelectStyles = {
     height: 35px;
     border: 1px solid #ffffff55;
     font-size: 13px;
-    color: ${props => props.readOnly ? "#ffffff44" : ""};
+    color: ${(props) => (props.readOnly ? "#ffffff44" : "")};
     padding: 5px 10px;
     padding-left: 15px;
     border-radius: 3px;

+ 2 - 4
dashboard/src/main/home/cluster-dashboard/stacks/launch/components/AddResourceButton.tsx

@@ -62,9 +62,7 @@ export const AddResourceButton = () => {
       <AddResourceButtonStyles.Flex>
         <LinkMask
           to={`/stacks/launch/new-app/${currentTemplate?.name}/${currentVersion}`}
-        >
-          
-        </LinkMask>
+        ></LinkMask>
         <Icon>
           <i className="material-icons">add</i>
         </Icon>
@@ -103,4 +101,4 @@ const Icon = styled.div`
     font-size: 20px;
     color: #aaaabb;
   }
-`;
+`;

+ 0 - 1
dashboard/src/main/home/integrations/create-integration/GitlabForm.tsx

@@ -126,7 +126,6 @@ const GitlabForm: React.FC<Props> = () => {
           makeFlush={true}
           text="Save Gitlab Settings"
           status={buttonStatus || error?.message}
-          
         />
       </StyledForm>
     </>

+ 13 - 13
dashboard/src/main/home/launch/TemplateList.tsx

@@ -49,19 +49,19 @@ const TemplateList: React.FC<Props> = ({
           throw Error("Data is not an array");
         }
 
-        let sortedVersionData = data.map((template: any) => {
-          let versions = template.versions.reverse();
-
-          versions = template.versions.sort(semver.rcompare);
-
-          return {
-            ...template,
-            versions,
-            currentVersion: versions[0],
-          };
-        }).sort((a: any, b: any) =>
-          a.name > b.name ? 1 : -1
-        );
+        let sortedVersionData = data
+          .map((template: any) => {
+            let versions = template.versions.reverse();
+
+            versions = template.versions.sort(semver.rcompare);
+
+            return {
+              ...template,
+              versions,
+              currentVersion: versions[0],
+            };
+          })
+          .sort((a: any, b: any) => (a.name > b.name ? 1 : -1));
 
         setTemplateList(sortedVersionData);
         setIsLoading(false);

+ 3 - 5
dashboard/src/main/home/launch/launch-flow/SettingsPage.tsx

@@ -99,11 +99,9 @@ class SettingsPage extends Component<PropsType, StateType> {
       )
       .then((res) => {
         if (res.data) {
-          const availableNamespaces = res.data.filter(
-            (namespace: any) => {
-              return namespace.status !== "Terminating";
-            }
-          );
+          const availableNamespaces = res.data.filter((namespace: any) => {
+            return namespace.status !== "Terminating";
+          });
           const namespaceOptions = availableNamespaces.map(
             (x: { name: string }) => {
               return { label: x.name, value: x.name };

+ 2 - 6
dashboard/src/main/home/modals/ClusterInstructionsModal.tsx

@@ -29,13 +29,9 @@ export default class ClusterInstructionsModal extends Component<
         return (
           <Placeholder>
             1. To install the Porter CLI, run the following in your terminal:
-            <Code>
-              /bin/bash -c "$(curl -fsSL https://install.porter.run)"
-            </Code>
+            <Code>/bin/bash -c "$(curl -fsSL https://install.porter.run)"</Code>
             Alternatively, on macOS you can use Homebrew:
-            <Code>
-              brew install porter-dev/porter/porter
-            </Code>
+            <Code>brew install porter-dev/porter/porter</Code>
             2. Log in to the Porter CLI:
             <Code>
               porter config set-host {location.protocol + "//" + location.host}

+ 2 - 2
dashboard/src/main/home/modals/ConnectToDatabaseInstructionsModal.tsx

@@ -10,8 +10,8 @@ const ConnectToDatabaseInstructionsModal = () => {
     <Container>
       In order to get connection credentials for your RDS Postgres database,
       select <b>Load from Env Group</b> when launching or updating your
-      application. Then, select the rds-credentials-{currentModalData?.name}{" "}
-      env group.
+      application. Then, select the rds-credentials-{currentModalData?.name} env
+      group.
       <p>
         This will set the following environment variables in your application:
       </p>

+ 3 - 7
dashboard/src/main/home/onboarding/steps/ProvisionResources/forms/_ConnectExternalCluster.tsx

@@ -48,7 +48,7 @@ const ConnectExternalCluster: React.FC<Props> = ({
           }
         }
       });
-    } catch (error) { }
+    } catch (error) {}
   };
 
   useEffect(() => {
@@ -65,13 +65,9 @@ const ConnectExternalCluster: React.FC<Props> = ({
         return (
           <Placeholder>
             1. To install the Porter CLI, run the following in your terminal:
-            <Code>
-              /bin/bash -c "$(curl -fsSL https://install.porter.run)"
-            </Code>
+            <Code>/bin/bash -c "$(curl -fsSL https://install.porter.run)"</Code>
             Alternatively, on macOS you can use Homebrew:
-            <Code>
-              brew install porter-dev/porter/porter
-            </Code>
+            <Code>brew install porter-dev/porter/porter</Code>
           </Placeholder>
         );
       case 1:

+ 97 - 30
dashboard/src/main/home/sidebar/ClusterSection.tsx

@@ -13,11 +13,11 @@ import cluster from "assets/cluster.svg";
 import SidebarLink from "./SidebarLink";
 
 type Props = {
-  cluster: ClusterType,
-  currentCluster: ClusterType,
-  currentProject: ProjectType,
-  setCurrentCluster: (x: ClusterType, callback?: any) => void,
-  navToClusterDashboard: () => void,
+  cluster: ClusterType;
+  currentCluster: ClusterType;
+  currentProject: ProjectType;
+  setCurrentCluster: (x: ClusterType, callback?: any) => void;
+  navToClusterDashboard: () => void;
 };
 
 export const ClusterSection: React.FC<Props> = ({
@@ -42,23 +42,32 @@ export const ClusterSection: React.FC<Props> = ({
       return (
         <Relative>
           <SideLine />
-          <NavButton 
-            path="/applications" 
-            active={currentCluster.id === clusterId && window.location.pathname === "/applications"}
+          <NavButton
+            path="/applications"
+            active={
+              currentCluster.id === clusterId &&
+              window.location.pathname === "/applications"
+            }
           >
             <Img src={monoweb} />
             Applications
           </NavButton>
-          <NavButton 
+          <NavButton
             path="/jobs"
-            active={currentCluster.id === clusterId && window.location.pathname === "/jobs"}
+            active={
+              currentCluster.id === clusterId &&
+              window.location.pathname === "/jobs"
+            }
           >
             <Img src={monojob} />
             Jobs
           </NavButton>
-          <NavButton 
+          <NavButton
             path="/env-groups"
-            active={currentCluster.id === clusterId && window.location.pathname === "/env-groups"}
+            active={
+              currentCluster.id === clusterId &&
+              window.location.pathname === "/env-groups"
+            }
           >
             <Img src={sliders} />
             Env groups
@@ -66,26 +75,35 @@ export const ClusterSection: React.FC<Props> = ({
           {cluster.service === "eks" &&
             cluster.infra_id > 0 &&
             currentProject.enable_rds_databases && (
-              <NavButton 
+              <NavButton
                 path="/databases"
-                active={currentCluster.id === clusterId && window.location.pathname === "/databases"}
+                active={
+                  currentCluster.id === clusterId &&
+                  window.location.pathname === "/databases"
+                }
               >
                 <Icon className="material-icons-outlined">storage</Icon>
                 Databases
               </NavButton>
             )}
           {currentProject?.stacks_enabled ? (
-            <NavButton 
+            <NavButton
               path="/stacks"
-              active={currentCluster.id === clusterId && window.location.pathname === "/stacks"}
+              active={
+                currentCluster.id === clusterId &&
+                window.location.pathname === "/stacks"
+              }
             >
               <Icon className="material-icons-outlined">lan</Icon>
               Stacks
             </NavButton>
           ) : null}
-          <NavButton 
+          <NavButton
             path={"/cluster-dashboard"}
-            active={currentCluster.id === clusterId && window.location.pathname === "/cluster-dashboard"}
+            active={
+              currentCluster.id === clusterId &&
+              window.location.pathname === "/cluster-dashboard"
+            }
           >
             <Icon className="material-icons">device_hub</Icon>
             Cluster settings
@@ -100,19 +118,67 @@ export const ClusterSection: React.FC<Props> = ({
       <ClusterSelector onClick={() => setIsExpanded(!isExpanded)}>
         <LinkWrapper>
           <ClusterIcon>
-            <svg width="19" height="19" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
-            <path d="M15.207 12.4403C16.8094 12.4403 18.1092 11.1414 18.1092 9.53907C18.1092 7.93673 16.8094 6.63782 15.207 6.63782" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-            <path d="M3.90217 12.4403C2.29983 12.4403 1 11.1414 1 9.53907C1 7.93673 2.29983 6.63782 3.90217 6.63782" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-            <path fill-rule="evenodd" clip-rule="evenodd" d="M9.54993 13.4133C7.4086 13.4133 5.69168 11.6964 5.69168 9.55417C5.69168 7.41284 7.4086 5.69592 9.54993 5.69592C11.6913 5.69592 13.4082 7.41284 13.4082 9.55417C13.4082 11.6964 11.6913 13.4133 9.54993 13.4133Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-            <path d="M6.66895 15.207C6.66895 16.8094 7.96787 18.1092 9.5702 18.1092C11.1725 18.1092 12.4715 16.8094 12.4715 15.207" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-            <path d="M6.66895 3.90217C6.66895 2.29983 7.96787 1 9.5702 1C11.1725 1 12.4715 2.29983 12.4715 3.90217" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
-            <path fill-rule="evenodd" clip-rule="evenodd" d="M5.69591 9.54996C5.69591 7.40863 7.41283 5.69171 9.55508 5.69171C11.6964 5.69171 13.4133 7.40863 13.4133 9.54996C13.4133 11.6913 11.6964 13.4082 9.55508 13.4082C7.41283 13.4082 5.69591 11.6913 5.69591 9.54996Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+            <svg
+              width="19"
+              height="19"
+              viewBox="0 0 19 19"
+              fill="none"
+              xmlns="http://www.w3.org/2000/svg"
+            >
+              <path
+                d="M15.207 12.4403C16.8094 12.4403 18.1092 11.1414 18.1092 9.53907C18.1092 7.93673 16.8094 6.63782 15.207 6.63782"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
+              <path
+                d="M3.90217 12.4403C2.29983 12.4403 1 11.1414 1 9.53907C1 7.93673 2.29983 6.63782 3.90217 6.63782"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
+              <path
+                fill-rule="evenodd"
+                clip-rule="evenodd"
+                d="M9.54993 13.4133C7.4086 13.4133 5.69168 11.6964 5.69168 9.55417C5.69168 7.41284 7.4086 5.69592 9.54993 5.69592C11.6913 5.69592 13.4082 7.41284 13.4082 9.55417C13.4082 11.6964 11.6913 13.4133 9.54993 13.4133Z"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
+              <path
+                d="M6.66895 15.207C6.66895 16.8094 7.96787 18.1092 9.5702 18.1092C11.1725 18.1092 12.4715 16.8094 12.4715 15.207"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
+              <path
+                d="M6.66895 3.90217C6.66895 2.29983 7.96787 1 9.5702 1C11.1725 1 12.4715 2.29983 12.4715 3.90217"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
+              <path
+                fill-rule="evenodd"
+                clip-rule="evenodd"
+                d="M5.69591 9.54996C5.69591 7.40863 7.41283 5.69171 9.55508 5.69171C11.6964 5.69171 13.4133 7.40863 13.4133 9.54996C13.4133 11.6913 11.6964 13.4082 9.55508 13.4082C7.41283 13.4082 5.69591 11.6913 5.69591 9.54996Z"
+                stroke="white"
+                stroke-width="1.5"
+                stroke-linecap="round"
+                stroke-linejoin="round"
+              />
             </svg>
           </ClusterIcon>
           <Tooltip title={cluster?.name}>
             <ClusterName>{cluster?.name}</ClusterName>
           </Tooltip>
-          <I isExpanded={isExpanded} className="material-icons">arrow_drop_down</I>
+          <I isExpanded={isExpanded} className="material-icons">
+            arrow_drop_down
+          </I>
           <Spacer />
         </LinkWrapper>
       </ClusterSelector>
@@ -151,7 +217,8 @@ const I = styled.i`
   color: #ffffff99;
   font-size: 20px;
   border-radius: 100px;
-  transform: ${(props: { isExpanded: boolean }) => props.isExpanded ? "" : "rotate(-90deg)"};
+  transform: ${(props: { isExpanded: boolean }) =>
+    props.isExpanded ? "" : "rotate(-90deg)"};
 `;
 
 const Relative = styled.div`
@@ -164,7 +231,7 @@ const SideLine = styled.div`
   width: 1px;
   top: 5px;
   height: calc(100% - 12px);
-  background: #383A3F;
+  background: #383a3f;
 `;
 
 const Icon = styled.span`
@@ -192,10 +259,10 @@ const NavButton = styled(SidebarLink)`
   cursor: ${(props: { disabled?: boolean }) =>
     props.disabled ? "not-allowed" : "pointer"};
 
-  background: ${(props: any) => props.active ? "#ffffff11" : ""};
+  background: ${(props: any) => (props.active ? "#ffffff11" : "")};
 
   :hover {
-    background: ${(props: any) => props.active ? "#ffffff11" : "#ffffff08"};
+    background: ${(props: any) => (props.active ? "#ffffff11" : "#ffffff08")};
   }
 
   > i {

+ 6 - 10
dashboard/src/main/home/sidebar/Clusters.tsx

@@ -140,11 +140,11 @@ class Clusters extends Component<PropsType, StateType> {
     if (clusters.length > 0 && currentCluster) {
       clusters.sort((a, b) => a.id - b.id);
 
-      return clusters.map((cluster: ClusterType, i: number) => {  
+      return clusters.map((cluster: ClusterType, i: number) => {
         return (
-          <ClusterSection 
-            key={i} 
-            cluster={cluster} 
+          <ClusterSection
+            key={i}
+            cluster={cluster}
             currentCluster={currentCluster}
             currentProject={currentProject}
             setCurrentCluster={setCurrentCluster}
@@ -172,11 +172,7 @@ class Clusters extends Component<PropsType, StateType> {
   };
 
   render() {
-    return (
-      <>
-        {this.renderContents()}
-      </>
-    );
+    return <>{this.renderContents()}</>;
   }
 }
 
@@ -222,4 +218,4 @@ const BgAccent = styled.img`
   right: -8px;
   border: none;
   outline: none;
-`;
+`;

+ 2 - 4
dashboard/src/main/home/sidebar/Sidebar.tsx

@@ -157,9 +157,7 @@ class Sidebar extends Component<PropsType, StateType> {
             </>
           )}
           {currentProject?.preview_envs_enabled && (
-            <NavButton 
-              path="/preview-environments"
-            >
+            <NavButton path="/preview-environments">
               <InlineSVGWrapper
                 id="Flat"
                 fill="#FFFFFF"
@@ -301,7 +299,7 @@ const SidebarBg = styled.div`
   background-color: #202227;
   height: 100%;
   z-index: -1;
-  border-right: 1px solid #383A3F;
+  border-right: 1px solid #383a3f;
 `;
 
 const SidebarLabel = styled.div`

+ 5 - 1
dashboard/src/shared/hooks/useWebsockets.ts

@@ -99,7 +99,11 @@ export const useWebsockets = () => {
   /**
    * Close specific websocket
    */
-  const closeWebsocket = (id: string, code: number =  4000, reason: string = "User closed the websocket connection") => {
+  const closeWebsocket = (
+    id: string,
+    code: number = 4000,
+    reason: string = "User closed the websocket connection"
+  ) => {
     const ws = websocketMap.current[id];
 
     if (!ws) {

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff