Remove unused organizations and configurations folder contents

pull/13385/head
Deniz Kusefoglu 2019-04-12 15:39:54 -07:00
parent 66cd6dd1ba
commit 40bc15d53f
64 changed files with 380 additions and 1806 deletions

190
ui/package-lock.json generated
View File

@ -1016,7 +1016,7 @@
}
},
"@influxdata/influx": {
"version": "github:influxdata/influxdb2-js#47621167f05c2fbda3b38f0c6aaa85f29190d39b",
"version": "github:influxdata/influxdb2-js#d7de8c08cac900c34a59ab4591312b5a2620a89e",
"from": "github:influxdata/influxdb2-js#dev",
"requires": {
"axios": "^0.18.0"
@ -1201,7 +1201,7 @@
},
"@types/codemirror": {
"version": "0.0.56",
"resolved": "http://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.56.tgz",
"resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.56.tgz",
"integrity": "sha512-OMtPqg2wFOEcNeVga+m+UXpYJw8ugISPCQOtShdFUho/k91Ms1oWOozoDT1I87Phv6IdwLfMLtIOahh1tO1cJQ==",
"dev": true
},
@ -1380,7 +1380,7 @@
},
"@types/react-dnd-html5-backend": {
"version": "2.1.9",
"resolved": "http://registry.npmjs.org/@types/react-dnd-html5-backend/-/react-dnd-html5-backend-2.1.9.tgz",
"resolved": "https://registry.npmjs.org/@types/react-dnd-html5-backend/-/react-dnd-html5-backend-2.1.9.tgz",
"integrity": "sha512-o42zIpcgXXj04xYDT9o9kXoldqDa81ie5XAKKCo7/fOWEhOCRt9UYu+LzOXC308eKKf8v0HzbJaDTr93j3JrTw==",
"dev": true,
"requires": {
@ -2120,7 +2120,7 @@
},
"array-equal": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz",
"integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=",
"dev": true
},
@ -2205,7 +2205,7 @@
},
"util": {
"version": "0.10.3",
"resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"requires": {
@ -2373,7 +2373,7 @@
},
"axios": {
"version": "0.18.0",
"resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
"integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
"requires": {
"follow-redirects": "^1.3.0",
@ -2618,7 +2618,7 @@
},
"bindings": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
"resolved": "http://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
"integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=",
"dev": true
},
@ -2757,7 +2757,7 @@
},
"browserify-aes": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"requires": {
@ -2794,7 +2794,7 @@
},
"browserify-rsa": {
"version": "4.0.1",
"resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"dev": true,
"requires": {
@ -2873,7 +2873,7 @@
},
"buffer": {
"version": "4.9.1",
"resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true,
"requires": {
@ -3036,7 +3036,7 @@
},
"callsites": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
"integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
"dev": true
},
@ -3743,7 +3743,7 @@
},
"create-hash": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
"requires": {
@ -3756,7 +3756,7 @@
},
"create-hmac": {
"version": "1.1.7",
"resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
"requires": {
@ -3835,7 +3835,7 @@
},
"css-color-names": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
"integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
"dev": true
},
@ -4573,7 +4573,7 @@
},
"diffie-hellman": {
"version": "5.0.3",
"resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"dev": true,
"requires": {
@ -4595,7 +4595,7 @@
},
"dnd-core": {
"version": "2.6.0",
"resolved": "http://registry.npmjs.org/dnd-core/-/dnd-core-2.6.0.tgz",
"resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-2.6.0.tgz",
"integrity": "sha1-ErrWbVh0LG5ffPKUP7aFlED4CcQ=",
"requires": {
"asap": "^2.0.6",
@ -4717,7 +4717,7 @@
},
"dotenv": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
"resolved": "http://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
"integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==",
"dev": true
},
@ -5845,7 +5845,7 @@
"dependencies": {
"core-js": {
"version": "1.2.7",
"resolved": "http://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
}
}
@ -5914,7 +5914,7 @@
},
"finalhandler": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"dev": true,
"requires": {
@ -6176,21 +6176,21 @@
"dependencies": {
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"resolved": "",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true,
"optional": true
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"resolved": "",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true,
"optional": true
},
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"resolved": "",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true,
"optional": true
@ -6208,14 +6208,14 @@
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"resolved": "",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true,
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"resolved": "",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"optional": true,
@ -6233,35 +6233,35 @@
},
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"resolved": "",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true,
"optional": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"resolved": "",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true,
"optional": true
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"resolved": "",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true,
"optional": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true,
"optional": true
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"resolved": "",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"optional": true,
@ -6278,21 +6278,21 @@
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"resolved": "",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true,
"optional": true
},
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"resolved": "",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
"dev": true,
"optional": true
},
"fs-minipass": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
"resolved": "",
"integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"optional": true,
@ -6302,14 +6302,14 @@
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"resolved": "",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true,
"optional": true
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"resolved": "",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"optional": true,
@ -6341,7 +6341,7 @@
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"resolved": "",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true,
"optional": true
@ -6358,7 +6358,7 @@
},
"ignore-walk": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
"resolved": "",
"integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"dev": true,
"optional": true,
@ -6368,7 +6368,7 @@
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"resolved": "",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"optional": true,
@ -6379,21 +6379,21 @@
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"resolved": "",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true,
"optional": true
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"resolved": "",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true,
"optional": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"resolved": "",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"optional": true,
@ -6403,14 +6403,14 @@
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"resolved": "",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true,
"optional": true
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"resolved": "",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"optional": true,
@ -6420,7 +6420,7 @@
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"resolved": "",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true,
"optional": true
@ -6448,7 +6448,7 @@
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"resolved": "",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"optional": true,
@ -6458,7 +6458,7 @@
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"resolved": "",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true,
"optional": true
@ -6496,7 +6496,7 @@
},
"nopt": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
"resolved": "",
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
"dev": true,
"optional": true,
@ -6525,7 +6525,7 @@
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"resolved": "",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"optional": true,
@ -6538,21 +6538,21 @@
},
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"resolved": "",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"resolved": "",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true,
"optional": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"resolved": "",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"optional": true,
@ -6562,21 +6562,21 @@
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
"resolved": "",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"optional": true,
@ -6587,14 +6587,14 @@
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"resolved": "",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"resolved": "",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true,
"optional": true
@ -6614,7 +6614,7 @@
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true,
"optional": true
@ -6623,7 +6623,7 @@
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"resolved": "",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"optional": true,
@ -6656,14 +6656,14 @@
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"resolved": "",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"resolved": "",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true,
"optional": true
@ -6677,21 +6677,21 @@
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"resolved": "",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"resolved": "",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"optional": true,
@ -6703,7 +6703,7 @@
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"resolved": "",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"optional": true,
@ -6713,7 +6713,7 @@
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"resolved": "",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"optional": true,
@ -6723,7 +6723,7 @@
},
"strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"resolved": "",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true,
"optional": true
@ -6746,7 +6746,7 @@
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true,
"optional": true
@ -6763,7 +6763,7 @@
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"resolved": "",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true,
"optional": true
@ -6820,7 +6820,7 @@
},
"get-stream": {
"version": "3.0.0",
"resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
@ -7662,7 +7662,7 @@
},
"http-errors": {
"version": "1.6.3",
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"dev": true,
"requires": {
@ -7685,7 +7685,7 @@
},
"http-proxy-middleware": {
"version": "0.18.0",
"resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz",
"integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==",
"dev": true,
"requires": {
@ -8375,7 +8375,7 @@
},
"is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
"dev": true
},
@ -10046,7 +10046,7 @@
},
"lodash.isempty": {
"version": "4.4.0",
"resolved": "http://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
"resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
"integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4="
},
"lodash.isequal": {
@ -10174,7 +10174,7 @@
},
"magic-string": {
"version": "0.22.5",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
"resolved": "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
"integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==",
"dev": true,
"requires": {
@ -10291,7 +10291,7 @@
},
"media-typer": {
"version": "0.3.0",
"resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"dev": true
},
@ -10487,7 +10487,7 @@
},
"minimist": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
@ -10532,7 +10532,7 @@
},
"mkdirp": {
"version": "0.5.1",
"resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
@ -10541,7 +10541,7 @@
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
@ -11129,7 +11129,7 @@
"dependencies": {
"minimist": {
"version": "0.0.10",
"resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"dev": true
},
@ -11177,7 +11177,7 @@
},
"os-homedir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
@ -11194,7 +11194,7 @@
},
"os-tmpdir": {
"version": "1.0.2",
"resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
"dev": true
},
@ -11556,7 +11556,7 @@
},
"json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"resolved": "http://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
"dev": true,
"requires": {
@ -11695,7 +11695,7 @@
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
@ -13046,7 +13046,7 @@
},
"react-dnd": {
"version": "2.6.0",
"resolved": "http://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz",
"resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-2.6.0.tgz",
"integrity": "sha1-f6JWds+CfViokSk+PBq1naACVFo=",
"requires": {
"disposables": "^1.0.1",
@ -13059,7 +13059,7 @@
},
"react-dnd-html5-backend": {
"version": "2.6.0",
"resolved": "http://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz",
"resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-2.6.0.tgz",
"integrity": "sha1-WQzRzKeEQbsnTt1XH+9MCxbdz44=",
"requires": {
"lodash": "^4.2.0"
@ -13174,7 +13174,7 @@
},
"react-resize-detector": {
"version": "2.3.0",
"resolved": "http://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz",
"resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-2.3.0.tgz",
"integrity": "sha512-oCAddEWWeFWYH5FAcHdBYcZjAw9fMzRUK9sWSx6WvSSOPVRxcHd5zTIGy/mOus+AhN/u6T4TMiWxvq79PywnJQ==",
"requires": {
"lodash.debounce": "^4.0.8",
@ -13185,7 +13185,7 @@
},
"react-router": {
"version": "3.2.1",
"resolved": "http://registry.npmjs.org/react-router/-/react-router-3.2.1.tgz",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.1.tgz",
"integrity": "sha512-SXkhC0nr3G0ltzVU07IN8jYl0bB6FsrDIqlLC9dK3SITXqyTJyM7yhXlUqs89w3Nqi5OkXsfRUeHX+P874HQrg==",
"requires": {
"create-react-class": "^15.5.1",
@ -13339,7 +13339,7 @@
},
"readable-stream": {
"version": "2.3.6",
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
@ -13610,7 +13610,7 @@
"dependencies": {
"hoist-non-react-statics": {
"version": "1.2.0",
"resolved": "http://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz",
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz",
"integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs="
},
"prop-types": {
@ -13625,7 +13625,7 @@
},
"redux-thunk": {
"version": "1.0.3",
"resolved": "http://registry.npmjs.org/redux-thunk/-/redux-thunk-1.0.3.tgz",
"resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-1.0.3.tgz",
"integrity": "sha1-d4qgCZ7qBZUDGrazkWX2Zw2NJr0="
},
"regenerate": {
@ -13788,7 +13788,7 @@
"dependencies": {
"jsesc": {
"version": "0.5.0",
"resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
}
@ -14084,7 +14084,7 @@
},
"safe-regex": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@ -14324,7 +14324,7 @@
},
"sha.js": {
"version": "2.4.11",
"resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"dev": true,
"requires": {
@ -14803,7 +14803,7 @@
},
"string_decoder": {
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
@ -14834,7 +14834,7 @@
},
"strip-eof": {
"version": "1.0.0",
"resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
@ -16272,7 +16272,7 @@
},
"wrap-ansi": {
"version": "2.1.0",
"resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {

View File

@ -4,14 +4,12 @@ import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
import TokensTab from 'src/authorizations/components/TokensTab'
// Types
@ -29,11 +27,11 @@ class TokensIndex extends Component<StateProps> {
return (
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="tokens" orgID={org.id} />
<SettingsNavigation tab="tokens" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--buckets"

View File

@ -4,10 +4,10 @@ import moment from 'moment'
// Components
import {Form, Input, Button, Grid} from '@influxdata/clockface'
import Retention from 'src/organizations/components/Retention'
import Retention from 'src/buckets/components/Retention'
// Constants
import {MIN_RETENTION_SECONDS} from 'src/organizations/constants'
import {MIN_RETENTION_SECONDS} from 'src/buckets/constants'
// Types
import {BucketRetentionRules} from '@influxdata/influx'

View File

@ -3,7 +3,7 @@ import React, {PureComponent, ChangeEvent} from 'react'
// Components
import {Radio, ButtonShape} from '@influxdata/clockface'
import RetentionDuration from 'src/organizations/components/RetentionDuration'
import RetentionDuration from 'src/buckets/components/RetentionDuration'
// Utils
import {

View File

@ -6,7 +6,7 @@ import {Overlay, ComponentStatus} from 'src/clockface'
import BucketOverlayForm from 'src/buckets/components/BucketOverlayForm'
// Constants
import {DEFAULT_SECONDS} from 'src/organizations/components/Retention'
import {DEFAULT_SECONDS} from 'src/buckets/components/Retention'
// Types
import {Bucket, BucketRetentionRules} from '@influxdata/influx'

View File

@ -4,15 +4,13 @@ import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import BucketsTab from 'src/buckets/components/BucketsTab'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Types
import {Organization} from '@influxdata/influx'
@ -30,11 +28,11 @@ class BucketsIndex extends Component<StateProps> {
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="buckets" orgID={org.id} />
<SettingsNavigation tab="buckets" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--buckets"

View File

@ -1,99 +0,0 @@
// Libraries
import React, {Component} from 'react'
import {withRouter, WithRouterProps} from 'react-router'
// Components
import {Page} from 'src/pageLayout'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import TabbedPage from 'src/shared/components/tabbed_page/TabbedPage'
import Settings from 'src/me/components/account/Settings'
import Telegrafs from 'src/configuration/components/Telegrafs'
import PageTitleWithOrg from 'src/shared/components/PageTitleWithOrg'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
import CloudExclude from 'src/shared/components/cloud/CloudExclude'
import CloudOnly from 'src/shared/components/cloud/CloudOnly'
interface OwnProps {
activeTabUrl: string
}
type Props = OwnProps & WithRouterProps
@ErrorHandling
class ConfigurationPage extends Component<Props> {
public render() {
const {
params: {tab},
} = this.props
return (
<Page titleTag="Configuration">
<Page.Header fullWidth={false}>
<Page.Header.Left>
<PageTitleWithOrg title="Configuration" />
</Page.Header.Left>
<Page.Header.Right />
</Page.Header>
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<GetResources resource={ResourceTypes.Authorizations}>
<CloudExclude>
<TabbedPage
name="Configuration"
parentUrl="/configuration"
activeTabUrl={tab}
>
<TabbedPageSection
id="telegrafs_tab"
url="telegrafs_tab"
title="Telegraf"
>
<GetResources resource={ResourceTypes.Buckets}>
<GetResources resource={ResourceTypes.Telegrafs}>
<Telegrafs />
</GetResources>
</GetResources>
</TabbedPageSection>
<TabbedPageSection
id="scrapers_tab"
url="scrapers_tab"
title="Scrapers"
/>
<TabbedPageSection
id="settings_tab"
url="settings_tab"
title="Profile"
>
<Settings />
</TabbedPageSection>
</TabbedPage>
</CloudExclude>
<CloudOnly>
<TabbedPage
name="Configuration"
parentUrl="/configuration"
activeTabUrl={tab}
>
<TabbedPageSection
id="settings_tab"
url="settings_tab"
title="Profile"
>
<Settings />
</TabbedPageSection>
</TabbedPage>
</CloudOnly>
</GetResources>
</div>
</Page.Contents>
</Page>
)
}
}
export default withRouter<OwnProps>(ConfigurationPage)

View File

@ -1,21 +0,0 @@
// Libraries
import React, {Component} from 'react'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
interface Props {
id: string
title: string
url: string
children: JSX.Element
}
@ErrorHandling
class TabbedPageSection extends Component<Props> {
public render() {
return <div>{this.props.children}</div>
}
}
export default TabbedPageSection

View File

@ -1,22 +0,0 @@
// Libraries
import React, {SFC} from 'react'
import classnames from 'classnames'
interface Props {
id: string
title: string
active: boolean
url: string
onClick: (url: string) => () => void
}
const ConfigurationPageTab: SFC<Props> = ({title, active, url, onClick}) => (
<div
className={classnames('tabbed-page-nav--tab', {active})}
onClick={onClick(url)}
>
{title}
</div>
)
export default ConfigurationPageTab

View File

@ -1,49 +0,0 @@
import React, {Component} from 'react'
import _ from 'lodash'
// Utils
import {randomPresetColor} from 'src/configuration/utils/labels'
import {IconFont} from 'src/clockface'
import {validateHexCode} from 'src/configuration/utils/labels'
// Constants
import {INPUT_ERROR_COLOR} from 'src/configuration/constants/LabelColors'
interface Props {
colorHex: string
onClick: (newRandomHex: string) => void
}
export default class RandomLabelColorButton extends Component<Props> {
public render() {
return (
<button
className="button button-sm button-default random-color--button "
onClick={this.handleClick}
title="Randomize label color"
>
<div
className="label-colors--swatch"
style={{
backgroundColor: this.colorHex,
}}
/>
<span className={`button-icon icon ${IconFont.Refresh}`} />
</button>
)
}
private get colorHex(): string {
const {colorHex} = this.props
if (validateHexCode(colorHex)) {
return INPUT_ERROR_COLOR
}
return colorHex
}
private handleClick = () => {
this.props.onClick(randomPresetColor())
}
}

View File

@ -1,277 +0,0 @@
// Libraries
import _ from 'lodash'
import React, {PureComponent, ChangeEvent} from 'react'
import {connect} from 'react-redux'
// Components
import {Input, Button, EmptyState, Grid} from '@influxdata/clockface'
import {Tabs} from 'src/clockface'
import CollectorList from 'src/telegrafs/components/CollectorList'
import TelegrafExplainer from 'src/telegrafs/components/TelegrafExplainer'
import FilterList from 'src/shared/components/Filter'
import NoBucketsWarning from 'src/organizations/components/NoBucketsWarning'
// Actions
import {deleteLabel} from 'src/labels/actions'
import {setBucketInfo} from 'src/dataLoaders/actions/steps'
import {
setDataLoadersType,
setTelegrafConfigID,
setTelegrafConfigName,
clearDataLoaders,
} from 'src/dataLoaders/actions/dataLoaders'
import {
updateTelegraf,
createTelegraf,
deleteTelegraf,
} from 'src/telegrafs/actions'
import {deleteAuthorization} from 'src/authorizations/actions'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
// Types
import {ITelegraf as Telegraf, Bucket, Organization} from '@influxdata/influx'
import {
Columns,
IconFont,
InputType,
ComponentSize,
ComponentColor,
ComponentStatus,
} from '@influxdata/clockface'
import {OverlayState} from 'src/types'
import {DataLoaderType} from 'src/types/dataLoaders'
import {AppState} from 'src/types'
import {TOKEN_LABEL} from 'src/labels/constants'
interface StateProps {
org: Organization
buckets: Bucket[]
telegrafs: Telegraf[]
}
interface DispatchProps {
onSetBucketInfo: typeof setBucketInfo
onSetDataLoadersType: typeof setDataLoadersType
onSetTelegrafConfigID: typeof setTelegrafConfigID
onSetTelegrafConfigName: typeof setTelegrafConfigName
onClearDataLoaders: typeof clearDataLoaders
updateTelegraf: typeof updateTelegraf
deleteTelegraf: typeof deleteTelegraf
createTelegraf: typeof createTelegraf
deleteLabel: typeof deleteLabel
deleteAuthorization: typeof deleteAuthorization
}
type Props = StateProps & DispatchProps
interface State {
dataLoaderOverlay: OverlayState
searchTerm: string
instructionsOverlay: OverlayState
collectorID?: string
telegrafConfig: OverlayState
}
@ErrorHandling
export class Telegrafs extends PureComponent<Props, State> {
constructor(props: Props) {
super(props)
this.state = {
searchTerm: '',
collectorID: null,
dataLoaderOverlay: OverlayState.Closed,
instructionsOverlay: OverlayState.Closed,
telegrafConfig: OverlayState.Closed,
}
}
public render() {
const {telegrafs} = this.props
const {searchTerm} = this.state
return (
<>
<Tabs.TabContentsHeader>
<Input
icon={IconFont.Search}
placeholder="Filter telegraf configs..."
widthPixels={290}
value={searchTerm}
type={InputType.Text}
onChange={this.handleFilterChange}
onBlur={this.handleFilterBlur}
/>
{this.createButton}
</Tabs.TabContentsHeader>
<Grid>
<Grid.Row>
<Grid.Column widthSM={Columns.Twelve}>
<NoBucketsWarning
visible={this.hasNoBuckets}
resourceName="Telegraf Configurations"
/>
<FilterList<Telegraf>
searchTerm={searchTerm}
searchKeys={['plugins.0.config.bucket', 'labels[].name']}
list={telegrafs}
>
{cs => (
<CollectorList
collectors={cs}
emptyState={this.emptyState}
onDelete={this.handleDeleteTelegraf}
onUpdate={this.handleUpdateTelegraf}
onOpenInstructions={this.handleOpenInstructions}
onFilterChange={this.handleFilterUpdate}
/>
)}
</FilterList>
</Grid.Column>
<Grid.Column
widthSM={Columns.Six}
widthMD={Columns.Four}
offsetSM={Columns.Three}
offsetMD={Columns.Four}
>
<TelegrafExplainer />
</Grid.Column>
</Grid.Row>
</Grid>
</>
)
}
private get hasNoBuckets(): boolean {
const {buckets} = this.props
if (!buckets || !buckets.length) {
return true
}
return false
}
private handleOpenInstructions = (collectorID: string): void => {
this.setState({
instructionsOverlay: OverlayState.Open,
collectorID,
})
}
private get createButton(): JSX.Element {
let status = ComponentStatus.Default
let titleText = 'Create a new Telegraf Configuration'
if (this.hasNoBuckets) {
status = ComponentStatus.Disabled
titleText =
'You need at least 1 bucket in order to create a Telegraf Configuration'
}
return (
<Button
text="Create Configuration"
icon={IconFont.Plus}
color={ComponentColor.Primary}
onClick={this.handleAddCollector}
status={status}
titleText={titleText}
/>
)
}
private handleAddCollector = () => {
const {buckets, onSetBucketInfo, onSetDataLoadersType} = this.props
if (buckets && buckets.length) {
const {organization, organizationID, name, id} = buckets[0]
onSetBucketInfo(organization, organizationID, name, id)
}
onSetDataLoadersType(DataLoaderType.Streaming)
this.setState({dataLoaderOverlay: OverlayState.Open})
}
private get emptyState(): JSX.Element {
const {org} = this.props
const {searchTerm} = this.state
if (_.isEmpty(searchTerm)) {
return (
<EmptyState size={ComponentSize.Medium}>
<EmptyState.Text
text={`${
org.name
} does not own any Telegraf Configurations, why not create one?`}
highlightWords={['Telegraf', 'Configurations']}
/>
{this.createButton}
</EmptyState>
)
}
return (
<EmptyState size={ComponentSize.Medium}>
<EmptyState.Text text="No Telegraf Configuration buckets match your query" />
</EmptyState>
)
}
private handleDeleteTelegraf = async (telegraf: Telegraf) => {
this.props.deleteTelegraf(telegraf.id, telegraf.name)
// stale tokens from system when telegraf is deleted
const label = telegraf.labels.find(l => l.name === TOKEN_LABEL)
if (label) {
this.props.deleteAuthorization(label.properties.tokenID)
}
}
private handleUpdateTelegraf = async (telegraf: Telegraf) => {
this.props.updateTelegraf(telegraf)
}
private handleFilterChange = (e: ChangeEvent<HTMLInputElement>): void => {
this.handleFilterUpdate(e.target.value)
}
private handleFilterBlur = (e: ChangeEvent<HTMLInputElement>): void => {
this.setState({searchTerm: e.target.value})
}
private handleFilterUpdate = (searchTerm: string) => {
this.setState({searchTerm})
}
}
const mdtp: DispatchProps = {
onSetBucketInfo: setBucketInfo,
onSetDataLoadersType: setDataLoadersType,
onSetTelegrafConfigID: setTelegrafConfigID,
onSetTelegrafConfigName: setTelegrafConfigName,
onClearDataLoaders: clearDataLoaders,
updateTelegraf,
createTelegraf,
deleteTelegraf,
deleteLabel,
deleteAuthorization,
}
const mstp = ({orgs, buckets, telegrafs}: AppState): StateProps => {
const org = orgs[0]
return {
org,
buckets: buckets.list,
telegrafs: telegrafs.list,
}
}
export default connect<StateProps, DispatchProps, {}>(
mstp,
mdtp
)(Telegrafs)

View File

@ -1,208 +0,0 @@
// Labels can use a different set of brand colors than single stats or gauges
import {ILabel} from '@influxdata/influx'
import {LabelColor, LabelColorType} from 'src/types/colors'
export const HEX_CODE_CHAR_LENGTH = 7
export const DEFAULT_LABEL_COLOR_HEX = '#326BBA'
export const EMPTY_LABEL: ILabel = {
name: '',
properties: {
description: '',
color: DEFAULT_LABEL_COLOR_HEX,
},
}
export const CUSTOM_LABEL: LabelColor = {
id: 'custom',
colorHex: '#RRRRRR',
name: 'Custom Hexcode',
type: LabelColorType.Custom,
}
export const PRESET_LABEL_COLORS: LabelColor[] = [
CUSTOM_LABEL,
{
id: 'label-preset-sapphire',
colorHex: '#326BBA',
name: 'Sapphire',
type: LabelColorType.Preset,
},
{
id: 'label-preset-ocean',
colorHex: '#4591ED',
name: 'Ocean',
type: LabelColorType.Preset,
},
{
id: 'label-preset-pool',
colorHex: '#22ADF6',
name: 'Pool',
type: LabelColorType.Preset,
},
{
id: 'label-preset-laser',
colorHex: '#00C9FF',
name: 'Laser',
type: LabelColorType.Preset,
},
{
id: 'label-preset-hydrogen',
colorHex: '#6BDFFF',
name: 'Hydrogen',
type: LabelColorType.Preset,
},
{
id: 'label-preset-neutrino',
colorHex: '#BEF0FF',
name: 'Neutrino',
type: LabelColorType.Preset,
},
{
id: 'label-preset-void',
colorHex: '#311F94',
name: 'Void',
type: LabelColorType.Preset,
},
{
id: 'label-preset-amethyst',
colorHex: '#513CC6',
name: 'Amethyst',
type: LabelColorType.Preset,
},
{
id: 'label-preset-star',
colorHex: '#7A65F2',
name: 'Star',
type: LabelColorType.Preset,
},
{
id: 'label-preset-comet',
colorHex: '#9394FF',
name: 'Comet',
type: LabelColorType.Preset,
},
{
id: 'label-preset-potassium',
colorHex: '#B1B6FF',
name: 'Potassium',
type: LabelColorType.Preset,
},
{
id: 'label-preset-moonstone',
colorHex: '#C9D0FF',
name: 'Moonstone',
type: LabelColorType.Preset,
},
{
id: 'label-preset-emerald',
colorHex: '#108174',
name: 'Emerald',
type: LabelColorType.Preset,
},
{
id: 'label-preset-viridian',
colorHex: '#32B08C',
name: 'Viridian',
type: LabelColorType.Preset,
},
{
id: 'label-preset-rainforest',
colorHex: '#4ED8A0',
name: 'Rainforest',
type: LabelColorType.Preset,
},
{
id: 'label-preset-honeydew',
colorHex: '#7CE490',
name: 'Honeydew',
type: LabelColorType.Preset,
},
{
id: 'label-preset-krypton',
colorHex: '#A5F3B4',
name: 'Krypton',
type: LabelColorType.Preset,
},
{
id: 'label-preset-wasabi',
colorHex: '#C6FFD0',
name: 'Wasabi',
type: LabelColorType.Preset,
},
{
id: 'label-preset-ruby',
colorHex: '#BF3D5E',
name: 'Ruby',
type: LabelColorType.Preset,
},
{
id: 'label-preset-fire',
colorHex: '#DC4E58',
name: 'Fire',
type: LabelColorType.Preset,
},
{
id: 'label-preset-curacao',
colorHex: '#F95F53',
name: 'Curacao',
type: LabelColorType.Preset,
},
{
id: 'label-preset-dreamsicle',
colorHex: '#FF8564',
name: 'Dreamsicle',
type: LabelColorType.Preset,
},
{
id: 'label-preset-tungsten',
colorHex: '#FFB6A0',
name: 'Tungsten',
type: LabelColorType.Preset,
},
{
id: 'label-preset-marmelade',
colorHex: '#FFDCCF',
name: 'Marmelade',
type: LabelColorType.Preset,
},
{
id: 'label-preset-topaz',
colorHex: '#E85B1C',
name: 'Topaz',
type: LabelColorType.Preset,
},
{
id: 'label-preset-tiger',
colorHex: '#F48D38',
name: 'Tiger',
type: LabelColorType.Preset,
},
{
id: 'label-preset-pineapple',
colorHex: '#FFB94A',
name: 'Pineapple',
type: LabelColorType.Preset,
},
{
id: 'label-preset-thunder',
colorHex: '#FFD255',
name: 'Thunder',
type: LabelColorType.Preset,
},
{
id: 'label-preset-sulfur',
colorHex: '#FFE480',
name: 'Sulfur',
type: LabelColorType.Preset,
},
{
id: 'label-preset-daisy',
colorHex: '#FFF6B8',
name: 'Daisy',
type: LabelColorType.Preset,
},
]
export const INPUT_ERROR_COLOR = '#0F0E15'

View File

@ -38,17 +38,6 @@ export const getDashboard = async (id: string): Promise<Dashboard> => {
}
}
export const getDashboardsByOrgID = async (
orgID: string
): Promise<Dashboard[]> => {
const dashboards = await client.dashboards.getAll(orgID)
return dashboards.map(d => ({
...d,
cells: addDashboardIDToCells(d.cells, d.id),
}))
}
export const createDashboard = async (
props: CreateDashboardRequest
): Promise<Dashboard> => {

View File

@ -27,9 +27,8 @@ import {getTemplateByID} from 'src/templates/actions'
// Types
import {AppState, RemoteDataState, DashboardTemplate} from 'src/types'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
interface StateProps {
templates: TemplateSummary[]

View File

@ -21,9 +21,7 @@ import {
} from 'src/dashboards/actions'
import {retainRangesDashTimeV1 as retainRangesDashTimeV1Action} from 'src/dashboards/actions/ranges'
import {notify as notifyAction} from 'src/shared/actions/notifications'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Constants
import {DEFAULT_DASHBOARD_NAME} from 'src/dashboards/constants/index'

View File

@ -5,7 +5,7 @@ import _ from 'lodash'
// Components
import Table from 'src/dashboards/components/dashboard_index/Table'
import FilterList from 'src/shared/components/Filter'
import GetLabels from 'src/configuration/components/GetLabels'
import GetLabels from 'src/labels/components/GetLabels'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'

View File

@ -4,9 +4,7 @@ import {connect} from 'react-redux'
// Components
import TimeMachine from 'src/timeMachine/components/TimeMachine'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Actions
import {setActiveTimeMachine} from 'src/timeMachine/actions'

View File

@ -36,7 +36,6 @@ import NotFound from 'src/shared/components/NotFound'
import GetLinks from 'src/shared/containers/GetLinks'
import GetMe from 'src/shared/containers/GetMe'
import Notifications from 'src/shared/containers/Notifications'
import ConfigurationPage from 'src/configuration/components/ConfigurationPage'
import TaskExportOverlay from 'src/tasks/components/TaskExportOverlay'
import TaskImportOverlay from 'src/tasks/components/TaskImportOverlay'
import VEO from 'src/dashboards/components/VEO'
@ -183,10 +182,6 @@ class Root extends PureComponent {
</Route>
<Route path="me" component={MePage} />
<Route path="account/:tab" component={Account} />
<Route
path="configuration/:tab"
component={ConfigurationPage}
/>
<Route path="settings">
<IndexRoute component={MembersIndex} />
</Route>

View File

@ -10,7 +10,7 @@ import {Overlay, ComponentStatus} from 'src/clockface'
import {ILabel} from '@influxdata/influx'
// Constants
import {EMPTY_LABEL} from 'src/configuration/constants/LabelColors'
import {EMPTY_LABEL} from 'src/labels/constants'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'

View File

@ -3,11 +3,11 @@ import React, {PureComponent} from 'react'
// Components
import {IndexList, Overlay} from 'src/clockface'
import UpdateLabelOverlay from 'src/configuration/components/UpdateLabelOverlay'
import UpdateLabelOverlay from 'src/labels/components/UpdateLabelOverlay'
import LabelRow from 'src/labels/components/LabelRow'
// Utils
import {validateLabelUniqueness} from 'src/configuration/utils/labels'
import {validateLabelUniqueness} from 'src/labels/utils/'
// Types
import {ILabel} from '@influxdata/influx'

View File

@ -16,11 +16,11 @@ import {
} from '@influxdata/clockface'
// Constants
import {INPUT_ERROR_COLOR} from 'src/configuration/constants/LabelColors'
import {INPUT_ERROR_COLOR} from 'src/labels/constants'
const MAX_LABEL_CHARS = 50
// Utils
import {validateHexCode} from 'src/configuration/utils/labels'
import {validateHexCode} from 'src/labels/utils/'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'

View File

@ -4,7 +4,7 @@ import {connect} from 'react-redux'
// Components
import {Input, Button, EmptyState} from '@influxdata/clockface'
import CreateLabelOverlay from 'src/configuration/components/CreateLabelOverlay'
import CreateLabelOverlay from 'src/labels/components/CreateLabelOverlay'
import TabbedPageHeader from 'src/shared/components/tabbed_page/TabbedPageHeader'
import LabelList from 'src/labels/components/LabelList'
import FilterList from 'src/shared/components/Filter'
@ -16,7 +16,7 @@ import {createLabel, updateLabel, deleteLabel} from 'src/labels/actions'
import {viewableLabels} from 'src/labels/selectors'
// Utils
import {validateLabelUniqueness} from 'src/configuration/utils/labels'
import {validateLabelUniqueness} from 'src/labels/utils/'
// Types
import {AppState} from 'src/types'

View File

@ -1,2 +1,211 @@
// Labels can use a different set of brand colors than single stats or gauges
import {ILabel} from '@influxdata/influx'
import {LabelColor, LabelColorType} from 'src/types/colors'
export const INFLUX_LABEL_PREFIX = '@influxdata'
export const TOKEN_LABEL = `${INFLUX_LABEL_PREFIX}.token`
export const HEX_CODE_CHAR_LENGTH = 7
export const DEFAULT_LABEL_COLOR_HEX = '#326BBA'
export const EMPTY_LABEL: ILabel = {
name: '',
properties: {
description: '',
color: DEFAULT_LABEL_COLOR_HEX,
},
}
export const CUSTOM_LABEL: LabelColor = {
id: 'custom',
colorHex: '#RRRRRR',
name: 'Custom Hexcode',
type: LabelColorType.Custom,
}
export const PRESET_LABEL_COLORS: LabelColor[] = [
CUSTOM_LABEL,
{
id: 'label-preset-sapphire',
colorHex: '#326BBA',
name: 'Sapphire',
type: LabelColorType.Preset,
},
{
id: 'label-preset-ocean',
colorHex: '#4591ED',
name: 'Ocean',
type: LabelColorType.Preset,
},
{
id: 'label-preset-pool',
colorHex: '#22ADF6',
name: 'Pool',
type: LabelColorType.Preset,
},
{
id: 'label-preset-laser',
colorHex: '#00C9FF',
name: 'Laser',
type: LabelColorType.Preset,
},
{
id: 'label-preset-hydrogen',
colorHex: '#6BDFFF',
name: 'Hydrogen',
type: LabelColorType.Preset,
},
{
id: 'label-preset-neutrino',
colorHex: '#BEF0FF',
name: 'Neutrino',
type: LabelColorType.Preset,
},
{
id: 'label-preset-void',
colorHex: '#311F94',
name: 'Void',
type: LabelColorType.Preset,
},
{
id: 'label-preset-amethyst',
colorHex: '#513CC6',
name: 'Amethyst',
type: LabelColorType.Preset,
},
{
id: 'label-preset-star',
colorHex: '#7A65F2',
name: 'Star',
type: LabelColorType.Preset,
},
{
id: 'label-preset-comet',
colorHex: '#9394FF',
name: 'Comet',
type: LabelColorType.Preset,
},
{
id: 'label-preset-potassium',
colorHex: '#B1B6FF',
name: 'Potassium',
type: LabelColorType.Preset,
},
{
id: 'label-preset-moonstone',
colorHex: '#C9D0FF',
name: 'Moonstone',
type: LabelColorType.Preset,
},
{
id: 'label-preset-emerald',
colorHex: '#108174',
name: 'Emerald',
type: LabelColorType.Preset,
},
{
id: 'label-preset-viridian',
colorHex: '#32B08C',
name: 'Viridian',
type: LabelColorType.Preset,
},
{
id: 'label-preset-rainforest',
colorHex: '#4ED8A0',
name: 'Rainforest',
type: LabelColorType.Preset,
},
{
id: 'label-preset-honeydew',
colorHex: '#7CE490',
name: 'Honeydew',
type: LabelColorType.Preset,
},
{
id: 'label-preset-krypton',
colorHex: '#A5F3B4',
name: 'Krypton',
type: LabelColorType.Preset,
},
{
id: 'label-preset-wasabi',
colorHex: '#C6FFD0',
name: 'Wasabi',
type: LabelColorType.Preset,
},
{
id: 'label-preset-ruby',
colorHex: '#BF3D5E',
name: 'Ruby',
type: LabelColorType.Preset,
},
{
id: 'label-preset-fire',
colorHex: '#DC4E58',
name: 'Fire',
type: LabelColorType.Preset,
},
{
id: 'label-preset-curacao',
colorHex: '#F95F53',
name: 'Curacao',
type: LabelColorType.Preset,
},
{
id: 'label-preset-dreamsicle',
colorHex: '#FF8564',
name: 'Dreamsicle',
type: LabelColorType.Preset,
},
{
id: 'label-preset-tungsten',
colorHex: '#FFB6A0',
name: 'Tungsten',
type: LabelColorType.Preset,
},
{
id: 'label-preset-marmelade',
colorHex: '#FFDCCF',
name: 'Marmelade',
type: LabelColorType.Preset,
},
{
id: 'label-preset-topaz',
colorHex: '#E85B1C',
name: 'Topaz',
type: LabelColorType.Preset,
},
{
id: 'label-preset-tiger',
colorHex: '#F48D38',
name: 'Tiger',
type: LabelColorType.Preset,
},
{
id: 'label-preset-pineapple',
colorHex: '#FFB94A',
name: 'Pineapple',
type: LabelColorType.Preset,
},
{
id: 'label-preset-thunder',
colorHex: '#FFD255',
name: 'Thunder',
type: LabelColorType.Preset,
},
{
id: 'label-preset-sulfur',
colorHex: '#FFE480',
name: 'Sulfur',
type: LabelColorType.Preset,
},
{
id: 'label-preset-daisy',
colorHex: '#FFF6B8',
name: 'Daisy',
type: LabelColorType.Preset,
},
]
export const INPUT_ERROR_COLOR = '#0F0E15'

View File

@ -4,15 +4,13 @@ import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import LabelsTab from 'src/labels/components/LabelsTab'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Types
import {Organization} from '@influxdata/influx'
@ -29,11 +27,11 @@ class LabelsIndex extends PureComponent<StateProps> {
return (
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="labels" orgID={org.id} />
<SettingsNavigation tab="labels" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--labels"

View File

@ -1,9 +1,6 @@
import _ from 'lodash'
import {
HEX_CODE_CHAR_LENGTH,
PRESET_LABEL_COLORS,
} from 'src/configuration/constants/LabelColors'
import {HEX_CODE_CHAR_LENGTH, PRESET_LABEL_COLORS} from 'src/labels/constants/'
export const randomPresetColor = () =>
_.sample(PRESET_LABEL_COLORS.slice(1)).colorHex

View File

@ -1,41 +0,0 @@
// Libraries
import React, {PureComponent} from 'react'
import {Link} from 'react-router'
// Components
import {EmptyState} from '@influxdata/clockface'
// Types
import {Organization} from 'src/types'
import {ComponentSize} from '@influxdata/clockface'
interface Props {
orgs: Organization[]
}
export default class UserDashboardList extends PureComponent<Props> {
public render() {
const {orgs} = this.props
if (this.isEmpty) {
return (
<EmptyState size={ComponentSize.ExtraSmall}>
<EmptyState.Text text="You don't belong to any Organizations" />
</EmptyState>
)
}
return (
<ul className="link-list">
{orgs.map(({id, name}) => (
<li key={id}>
<Link to={`/orgs/${id}`}>{name}</Link>
</li>
))}
</ul>
)
}
private get isEmpty(): boolean {
return !this.props.orgs.length
}
}

View File

@ -17,9 +17,7 @@ import VersionInfo from 'src/shared/components/VersionInfo'
// Types
import {AppState} from 'src/types'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
interface Props {
me: AppState['me']

View File

@ -1,14 +0,0 @@
// Libraries
import React, {Component} from 'react'
interface Props {
token: string
}
class TokenManager extends Component<Props> {
public render() {
return <div>{this.props.token}</div>
}
}
export default TokenManager

View File

@ -1,14 +0,0 @@
// Libraries
import React, {Component} from 'react'
interface Props {
blargh: string
}
class UserSettings extends Component<Props> {
public render() {
return <div>{this.props.blargh}</div>
}
}
export default UserSettings

View File

@ -4,12 +4,12 @@ import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import GetResources from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
import Members from 'src/members/components/Members'
//Actions
@ -19,7 +19,6 @@ import * as notifyActions from 'src/shared/actions/notifications'
// Types
import {Organization} from '@influxdata/influx'
import {AppState} from 'src/types'
import {ResourceTypes} from 'src/configuration/components/GetResources'
interface DispatchProps {
notify: NotificationsActions.PublishNotificationActionCreator
@ -42,11 +41,11 @@ class MembersIndex extends Component<Props> {
return (
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="members" orgID={org.id} />
<SettingsNavigation tab="members" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--members"

View File

@ -1,8 +0,0 @@
import {ScraperTargetRequest} from '@influxdata/influx'
// API
import {client} from 'src/utils/api'
export const createScraper = (scraper: ScraperTargetRequest) => async () => {
await client.scrapers.create(scraper)
}

View File

@ -1,180 +0,0 @@
// Libraries
import React, {PureComponent, ChangeEvent} from 'react'
import {withRouter, WithRouterProps} from 'react-router'
import {connect} from 'react-redux'
import _ from 'lodash'
// Components
import {Input} from '@influxdata/clockface'
import {Tabs} from 'src/clockface'
import DashboardsIndexContents from 'src/dashboards/components/dashboard_index/DashboardsIndexContents'
import AddResourceDropdown from 'src/shared/components/AddResourceDropdown'
// APIs
import {createDashboard, cloneDashboard} from 'src/dashboards/apis/'
// Actions
import {
deleteDashboardAsync,
updateDashboardAsync,
} from 'src/dashboards/actions/'
import {notify as notifyAction} from 'src/shared/actions/notifications'
// Constants
import {dashboardCreateFailed} from 'src/shared/copy/notifications'
import {DEFAULT_DASHBOARD_NAME} from 'src/dashboards/constants/index'
// Types
import {IconFont} from '@influxdata/clockface'
import {Dashboard, AppState, Notification} from 'src/types'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
interface DispatchProps {
handleDeleteDashboard: typeof deleteDashboardAsync
handleUpdateDashboard: typeof updateDashboardAsync
notify: (message: Notification) => void
}
interface OwnProps {
orgID: string
}
interface StateProps {
dashboards: Dashboard[]
}
type Props = DispatchProps & StateProps & OwnProps & WithRouterProps
interface State {
searchTerm: string
}
@ErrorHandling
class Dashboards extends PureComponent<Props, State> {
constructor(props: Props) {
super(props)
this.state = {
searchTerm: '',
}
}
public render() {
const {dashboards, notify, handleUpdateDashboard} = this.props
const {searchTerm} = this.state
return (
<>
<Tabs.TabContentsHeader>
<Input
icon={IconFont.Search}
placeholder="Filter dashboards..."
widthPixels={290}
value={searchTerm}
onChange={this.handleFilterChange}
onBlur={this.handleFilterBlur}
testID={`dashboards--filter-field ${searchTerm}`}
customClass="filter-dashboards"
/>
<AddResourceDropdown
onSelectNew={this.handleCreateDashboard}
onSelectImport={this.summonImportOverlay}
onSelectTemplate={this.summonImportFromTemplateOverlay}
resourceName="Dashboard"
canImportFromTemplate={true}
/>
</Tabs.TabContentsHeader>
<DashboardsIndexContents
dashboards={dashboards}
onDeleteDashboard={this.handleDeleteDashboard}
onCreateDashboard={this.handleCreateDashboard}
onCloneDashboard={this.handleCloneDashboard}
onUpdateDashboard={handleUpdateDashboard}
notify={notify}
searchTerm={searchTerm}
onFilterChange={this.handleFilterUpdate}
onImportDashboard={this.summonImportOverlay}
/>
</>
)
}
private handleFilterBlur = (e: ChangeEvent<HTMLInputElement>): void => {
this.setState({searchTerm: e.target.value})
}
private handleFilterChange = (e: ChangeEvent<HTMLInputElement>): void => {
this.setState({searchTerm: e.target.value})
}
private handleFilterUpdate = (searchTerm: string): void => {
this.setState({searchTerm})
}
private summonImportOverlay = (): void => {
const {
router,
params: {orgID},
} = this.props
router.push(`/orgs/${orgID}/dashboards/import`)
}
private summonImportFromTemplateOverlay = (): void => {
const {
router,
params: {orgID},
} = this.props
router.push(`/orgs/${orgID}/dashboards/import/template`)
}
private handleCreateDashboard = async (): Promise<void> => {
const {router, notify, orgID} = this.props
try {
const newDashboard = {
name: DEFAULT_DASHBOARD_NAME,
cells: [],
orgID: orgID,
}
const data = await createDashboard(newDashboard)
router.push(`/dashboards/${data.id}`)
} catch (error) {
notify(dashboardCreateFailed())
}
}
private handleCloneDashboard = async (
dashboard: Dashboard
): Promise<void> => {
const {router, notify, dashboards, orgID} = this.props
try {
const data = await cloneDashboard(dashboard, dashboards, orgID)
router.push(`/dashboards/${data.id}`)
} catch (error) {
console.error(error)
notify(dashboardCreateFailed())
}
}
private handleDeleteDashboard = (dashboard: Dashboard) => {
this.props.handleDeleteDashboard(dashboard)
}
}
const mstp = (state: AppState, props: OwnProps): StateProps => {
const dashboards = state.dashboards.list.filter(d => d.orgID === props.orgID)
return {dashboards}
}
const mdtp: DispatchProps = {
notify: notifyAction,
handleDeleteDashboard: deleteDashboardAsync,
handleUpdateDashboard: updateDashboardAsync,
}
export default connect<StateProps, DispatchProps, OwnProps>(
mstp,
mdtp
)(withRouter(Dashboards))

View File

@ -1,106 +0,0 @@
// Libraries
import {PureComponent} from 'react'
import _ from 'lodash'
// Types
import {RemoteDataState} from 'src/types'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
import {Organization} from '@influxdata/influx'
interface PassedProps<T> {
organization: Organization
fetcher: (org: Organization) => Promise<T[]>
children: (
resources: T[],
loading: RemoteDataState,
fetch?: () => void
) => JSX.Element
}
interface State<T> {
resources: T[]
loading: RemoteDataState
}
interface DefaultProps<T> {
orderBy?: {
keys: Array<keyof T>
orders?: string[]
}
}
type Props<T> = DefaultProps<T> & PassedProps<T>
const DEFAULT_SORT_KEY = 'name'
@ErrorHandling
export default class GetOrgResources<T> extends PureComponent<
Props<T>,
State<T>
> {
constructor(props: Props<T>) {
super(props)
this.state = {
resources: null,
loading: RemoteDataState.NotStarted,
}
}
public async componentDidMount() {
this.fetchResourcesForOrg()
}
public async componentDidUpdate(prevProps: Props<T>) {
if (this.props.organization !== prevProps.organization) {
this.fetchResourcesForOrg()
}
}
public render() {
const {resources, loading} = this.state
return this.props.children(resources, loading, this.fetchResourcesForOrg)
}
public fetchResourcesForOrg = async () => {
const {fetcher, organization} = this.props
if (organization) {
const resources = await fetcher(organization)
this.setState({
resources: this.order(resources),
loading: RemoteDataState.Done,
})
}
}
private order(resources: T[]): T[] {
const {orderBy} = this.props
const defaultKeys = this.extractDefaultKeys(resources)
if (orderBy) {
return _.orderBy(resources, orderBy.keys, orderBy.orders)
} else if (defaultKeys.length !== 0) {
return _.orderBy(resources, defaultKeys)
} else {
return resources
}
}
private extractDefaultKeys(resources: T[]): Array<keyof T> {
return this.hasKeyOf(resources, DEFAULT_SORT_KEY) ? [DEFAULT_SORT_KEY] : []
}
private hasKeyOf(
resources: T[],
key: string | number | symbol
): key is keyof T {
const resource = _.get(resources, '0', null)
// gaurd against null and primitive types
const isObject = !!resource && typeof resource === 'object'
return isObject && _.hasIn(resource, key)
}
}

View File

@ -1,53 +0,0 @@
// Libraries
import React, {Component, ReactElement, ReactNode} from 'react'
import {withRouter, WithRouterProps} from 'react-router'
// Components
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import {Tabs} from 'src/clockface'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
interface OwnProps {
name: string
avatar?: string
description?: string
children: ReactNode[] | ReactNode
activeTabUrl: string
orgID: string
}
type Props = OwnProps & WithRouterProps
@ErrorHandling
class OrganizationTabs extends Component<Props> {
constructor(props) {
super(props)
}
public render() {
return (
<Tabs>
<OrganizationNavigation
tab={this.props.activeTabUrl}
orgID={this.props.orgID}
/>
<Tabs.TabContents>{this.activeSectionComponent}</Tabs.TabContents>
</Tabs>
)
}
private get activeSectionComponent(): JSX.Element[] {
const {children, activeTabUrl} = this.props
// Using ReactElement as type to ensure children have props
return React.Children.map(children, (child: ReactElement<any>) => {
if (child.props.url === activeTabUrl) {
return child.props.children
}
})
}
}
export default withRouter<OwnProps>(OrganizationTabs)

View File

@ -1,85 +0,0 @@
// Libraries
import React, {Component} from 'react'
import {Link} from 'react-router'
import _ from 'lodash'
// Components
import {EmptyState} from '@influxdata/clockface'
import {IndexList, ConfirmationButton} from 'src/clockface'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
// Types
import {Organization} from 'src/types'
import {ComponentSize} from '@influxdata/clockface'
import {Alignment} from 'src/clockface'
import {deleteOrg} from 'src/organizations/actions/orgs'
import CloudExclude from 'src/shared/components/cloud/CloudExclude'
interface Props {
orgs: Organization[]
onDeleteOrg: typeof deleteOrg
searchTerm: string
}
@ErrorHandling
class OrganizationsPageContents extends Component<Props> {
public render() {
return (
<div className="col-xs-12">
<IndexList>
<IndexList.Header>
<IndexList.HeaderCell columnName="Name" />
<IndexList.HeaderCell />
</IndexList.Header>
<IndexList.Body columnCount={2} emptyState={this.emptyState}>
{this.rows}
</IndexList.Body>
</IndexList>
</div>
)
}
private get rows(): JSX.Element[] {
const {orgs, onDeleteOrg} = this.props
return orgs.map(o => (
<IndexList.Row key={o.id}>
<IndexList.Cell>
<Link to={`/orgs/${o.id}/members`}>{o.name}</Link>
</IndexList.Cell>
<IndexList.Cell revealOnHover={true} alignment={Alignment.Right}>
<CloudExclude>
<ConfirmationButton
confirmText="Confirm"
text="Delete"
size={ComponentSize.ExtraSmall}
returnValue={o}
onConfirm={onDeleteOrg}
/>
</CloudExclude>
</IndexList.Cell>
</IndexList.Row>
))
}
private get emptyState(): JSX.Element {
const {searchTerm} = this.props
if (searchTerm) {
return (
<EmptyState size={ComponentSize.Large}>
<EmptyState.Text text="No Organizations match your query" />
</EmptyState>
)
}
return (
<EmptyState size={ComponentSize.Large}>
<EmptyState.Text text="You are not a member of any Organizations" />
</EmptyState>
)
}
}
export default OrganizationsPageContents

View File

@ -1,100 +0,0 @@
// Libraries
import React, {Component} from 'react'
import {withRouter, WithRouterProps} from 'react-router'
import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import Dashboards from 'src/organizations/components/Dashboards'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
//Actions
import * as NotificationsActions from 'src/types/actions/notifications'
import * as notifyActions from 'src/shared/actions/notifications'
// Types
import {Organization} from '@influxdata/influx'
import {AppState} from 'src/types'
import {RemoteDataState} from 'src/types'
interface RouterProps {
params: {
orgID: string
}
}
interface DispatchProps {
notify: NotificationsActions.PublishNotificationActionCreator
}
interface StateProps {
org: Organization
}
type Props = WithRouterProps & RouterProps & DispatchProps & StateProps
interface State {
loadingState: RemoteDataState
}
@ErrorHandling
class OrgDashboardsIndex extends Component<Props, State> {
public render() {
const {org} = this.props
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="dashboards" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--dashboards"
url="dashboards"
title="Dashboards"
>
<GetResources resource={ResourceTypes.Dashboards}>
<Dashboards orgID={org.id} />
</GetResources>
</TabbedPageSection>
</Tabs.TabContents>
</Tabs>
</div>
</Page.Contents>
</Page>
{this.props.children}
</>
)
}
}
const mstp = (state: AppState, props: Props): StateProps => {
const {
orgs: {items},
} = state
const org = items.find(o => o.id === props.params.orgID)
return {
org,
}
}
const mdtp: DispatchProps = {
notify: notifyActions.notify,
}
export default connect<StateProps, DispatchProps, {}>(
mstp,
mdtp
)(withRouter<{}>(OrgDashboardsIndex))

View File

@ -1,118 +0,0 @@
// Libraries
import React, {PureComponent} from 'react'
import {WithRouterProps, withRouter} from 'react-router'
import {connect} from 'react-redux'
import _ from 'lodash'
// Components
import {Page} from 'src/pageLayout'
import OrganizationsIndexContents from 'src/organizations/components/OrganizationsIndexContents'
import SearchWidget from 'src/shared/components/search_widget/SearchWidget'
import {Button, IconFont, ComponentColor} from '@influxdata/clockface'
// Actions
import {deleteOrg} from 'src/organizations/actions/orgs'
// Types
import {Organization, Links, AppState} from 'src/types'
// Decorators
import {ErrorHandling} from 'src/shared/decorators/errors'
import FilterList from 'src/shared/components/Filter'
interface StateProps {
links: Links
orgs: Organization[]
}
interface DispatchProps {
onDeleteOrg: typeof deleteOrg
}
interface State {
searchTerm: string
}
type Props = StateProps & DispatchProps & WithRouterProps
@ErrorHandling
class OrganizationsIndex extends PureComponent<Props, State> {
public state: State = {
searchTerm: '',
}
public render() {
const {onDeleteOrg, orgs, children} = this.props
const {searchTerm} = this.state
return (
<>
<Page titleTag="Organizations">
<Page.Header fullWidth={false}>
<Page.Header.Left>
<Page.Title title="Organizations" />
</Page.Header.Left>
<Page.Header.Right>
<SearchWidget
placeholderText="Filter organizations by name..."
onSearch={this.handleChangeSearchTerm}
/>
<Button
color={ComponentColor.Primary}
onClick={this.handleOpenModal}
icon={IconFont.Plus}
text="Create Organization"
titleText="Create a new Organization"
testID="create-org-button"
/>
</Page.Header.Right>
</Page.Header>
<Page.Contents fullWidth={false} scrollable={true}>
<FilterList<Organization>
searchKeys={['name']}
searchTerm={searchTerm}
list={orgs}
>
{filteredOrgs => (
<OrganizationsIndexContents
orgs={filteredOrgs}
onDeleteOrg={onDeleteOrg}
searchTerm={searchTerm}
/>
)}
</FilterList>
</Page.Contents>
</Page>
{children}
</>
)
}
private handleChangeSearchTerm = (searchTerm: string): void => {
this.setState({searchTerm})
}
private handleOpenModal = () => {
this.props.router.push(`${this.props.location.pathname}/new`)
}
}
const mstp = (state: AppState): StateProps => {
const {orgs, links} = state
return {
orgs: orgs.items,
links,
}
}
const mdtp: DispatchProps = {
onDeleteOrg: deleteOrg,
}
export default withRouter(
connect<StateProps, DispatchProps>(
mstp,
mdtp
)(OrganizationsIndex)
)

View File

@ -1,31 +0,0 @@
import {ResourceOwner, User} from '@influxdata/influx'
export const resouceOwner: ResourceOwner[] = [
{
id: '1',
name: 'John',
status: User.StatusEnum.Active,
links: {
self: '/api/v2/users/1',
},
role: ResourceOwner.RoleEnum.Owner,
},
{
id: '2',
name: 'Jane',
status: User.StatusEnum.Active,
links: {
self: '/api/v2/users/2',
},
role: ResourceOwner.RoleEnum.Owner,
},
{
id: '3',
name: 'Smith',
status: User.StatusEnum.Active,
links: {
self: '/api/v2/users/3',
},
role: ResourceOwner.RoleEnum.Owner,
},
]

View File

@ -8,7 +8,7 @@ import _ from 'lodash'
import {Input, Button, EmptyState} from '@influxdata/clockface'
import {Tabs} from 'src/clockface'
import ScraperList from 'src/scrapers/components/ScraperList'
import NoBucketsWarning from 'src/organizations/components/NoBucketsWarning'
import NoBucketsWarning from 'src/buckets/components/NoBucketsWarning'
// Actions
import {updateScraper, deleteScraper} from 'src/scrapers/actions'

View File

@ -6,11 +6,9 @@ import {connect} from 'react-redux'
import {Page} from 'src/pageLayout'
import {Tabs} from 'src/clockface'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
import Scrapers from 'src/scrapers/components/Scrapers'
// Decorators
@ -32,11 +30,11 @@ class ScrapersIndex extends Component<StateProps> {
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="scrapers" orgID={org.id} />
<SettingsNavigation tab="scrapers" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--scrapers"
@ -60,14 +58,7 @@ class ScrapersIndex extends Component<StateProps> {
}
}
const mstp = (state: AppState) => {
const {
orgs: {org},
} = state
return {
org,
}
}
const mstp = ({orgs: {org}}: AppState) => ({org})
export default connect<StateProps, {}, {}>(
mstp,

View File

@ -4,7 +4,7 @@ import React, {Component} from 'react'
import {Page} from 'src/pageLayout'
import PageTitleWithOrg from 'src/shared/components/PageTitleWithOrg'
class OrgHeader extends Component {
class SettingsHeader extends Component {
public render() {
return (
<Page.Header fullWidth={false}>
@ -17,4 +17,4 @@ class OrgHeader extends Component {
}
}
export default OrgHeader
export default SettingsHeader

View File

@ -15,7 +15,7 @@ interface Props {
}
@ErrorHandling
class OrganizationNavigation extends PureComponent<Props> {
class SettingsNavigation extends PureComponent<Props> {
public render() {
const {tab, orgID} = this.props
@ -78,4 +78,4 @@ class OrganizationNavigation extends PureComponent<Props> {
}
}
export default OrganizationNavigation
export default SettingsNavigation

View File

@ -10,10 +10,10 @@ import {
ComponentColor,
} from '@influxdata/clockface'
import InlineLabelPopover from 'src/shared/components/inlineLabels/InlineLabelPopover'
import CreateLabelOverlay from 'src/configuration/components/CreateLabelOverlay'
import CreateLabelOverlay from 'src/labels/components/CreateLabelOverlay'
// Utils
import {validateLabelUniqueness} from 'src/configuration/utils/labels'
import {validateLabelUniqueness} from 'src/labels/utils/'
// Types
import {ILabel} from '@influxdata/influx'

View File

@ -56,7 +56,7 @@
@import 'src/shared/components/SearchableDropdown.scss';
@import 'src/shared/components/BoxTooltip.scss';
@import 'src/shared/components/dropdown_auto_refresh/AutoRefreshDropdown.scss';
@import 'src/organizations/components/Retention.scss';
@import 'src/buckets/components/Retention.scss';
@import 'src/telegrafs/components/TelegrafConfigOverlay.scss';
@import 'src/telegrafs/components/TelegrafExplainer.scss';
@import 'src/variables/components/CreateVariableOverlay.scss';
@ -66,7 +66,7 @@
@import 'src/tasks/components/TaskForm.scss';
@import 'src/tasks/components/TasksPage.scss';
@import 'src/labels/components/LabelOverlayForm.scss';
@import 'src/configuration/components/RandomLabelColor.scss';
@import 'src/labels/components/RandomLabelColor.scss';
@import 'src/dataExplorer/components/SaveAsButton.scss';
@import 'src/dataExplorer/components/DataExplorer.scss';
@import 'src/dataExplorer/components/SaveAsButton.scss';

View File

@ -13,9 +13,7 @@ import {
} from '@influxdata/clockface'
import TaskScheduleFormField from 'src/tasks/components/TaskScheduleFormField'
import TaskOptionsBucketDropdown from 'src/tasks/components/TasksOptionsBucketDropdown'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Types
import {

View File

@ -1,54 +0,0 @@
// Libraries
import React, {PureComponent} from 'react'
import _ from 'lodash'
// Components
import {Dropdown} from 'src/clockface'
// Types
import {Organization} from '@influxdata/influx'
interface Props {
orgs: Organization[]
onChangeOrgName: (selectedOrg: string) => void
selectedOrgName: string
}
export default class TaskOptionsOrgDropdown extends PureComponent<Props> {
public componentDidMount() {
this.setSelectedToFirst()
}
public componentDidUpdate(prevProps: Props) {
if (this.props.orgs !== prevProps.orgs) {
this.setSelectedToFirst()
}
}
public render() {
const {selectedOrgName, onChangeOrgName} = this.props
return (
<Dropdown selectedID={selectedOrgName} onChange={onChangeOrgName}>
{this.orgDropdownItems}
</Dropdown>
)
}
private get orgDropdownItems(): JSX.Element[] {
const {orgs} = this.props
return orgs.map(org => {
return (
<Dropdown.Item id={org.name} key={org.name} value={org.name}>
{org.name}
</Dropdown.Item>
)
})
}
private setSelectedToFirst() {
const {orgs, onChangeOrgName} = this.props
const firstOrgNameInList = _.get(orgs, '0.name', '')
onChangeOrgName(firstOrgNameInList)
}
}

View File

@ -1,54 +0,0 @@
// Libraries
import React, {PureComponent} from 'react'
import _ from 'lodash'
// Components
import {Dropdown} from 'src/clockface'
// Types
import {Organization} from '@influxdata/influx'
interface Props {
orgs: Organization[]
onChangeOrgID: (selectedOrgID: string) => void
selectedOrgID: string
}
export default class TaskOptionsOrgIDDropdown extends PureComponent<Props> {
public componentDidMount() {
this.setSelectedToFirst()
}
public componentDidUpdate(prevProps: Props) {
if (this.props.orgs !== prevProps.orgs) {
this.setSelectedToFirst()
}
}
public render() {
const {selectedOrgID, onChangeOrgID} = this.props
return (
<Dropdown selectedID={selectedOrgID} onChange={onChangeOrgID}>
{this.orgDropdownItems}
</Dropdown>
)
}
private get orgDropdownItems(): JSX.Element[] {
const {orgs} = this.props
return orgs.map(org => {
return (
<Dropdown.Item id={org.id} key={org.id} value={org.id}>
{org.name}
</Dropdown.Item>
)
})
}
private setSelectedToFirst() {
const {orgs, onChangeOrgID} = this.props
const firstOrgIDInList = _.get(orgs, '0.id', '')
onChangeOrgID(firstOrgIDInList)
}
}

View File

@ -10,10 +10,8 @@ import {Page} from 'src/pageLayout'
import {ErrorHandling} from 'src/shared/decorators/errors'
import FilterList from 'src/shared/components/Filter'
import SearchWidget from 'src/shared/components/search_widget/SearchWidget'
import GetLabels from 'src/configuration/components/GetLabels'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetLabels from 'src/labels/components/GetLabels'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Actions
import {

View File

@ -1,47 +0,0 @@
import {Run, Logs} from '@influxdata/influx'
export const taskRuns: Run[] = [
{
id: '40002242',
taskID: 'string',
status: Run.StatusEnum.Scheduled,
scheduledFor: new Date('2019-02-11T22:37:25.985Z'),
startedAt: new Date('2019-02-11T22:37:25.985Z'),
finishedAt: new Date('2019-02-11T22:37:25.985Z'),
requestedAt: new Date('2019-02-11T22:37:25.985Z'),
links: {
self: '/api/v2/tasks/1/runs/1',
task: '/arequei/v2/tasks/1',
retry: '/api/v2/tasks/1/runs/1/retry',
logs: '/api/v2/tasks/1/runs/1/logs',
},
},
{
id: '40002342',
taskID: 'string',
status: Run.StatusEnum.Scheduled,
scheduledFor: new Date('2019-02-11T22:37:25.985Z'),
startedAt: new Date('2019-02-11T22:37:25.985Z'),
finishedAt: new Date('2019-02-11T22:37:25.985Z'),
requestedAt: new Date('2019-02-11T22:37:25.985Z'),
links: {
self: '/api/v2/tasks/1/runs/1',
task: '/arequei/v2/tasks/1',
retry: '/api/v2/tasks/1/runs/1/retry',
logs: '/api/v2/tasks/1/runs/1/logs',
},
},
]
export const runLogs: Logs = {
events: [
{
time: new Date('2019-02-12T22:00:09.572Z'),
message: 'Halt and catch fire',
},
{
time: new Date('2019-02-12T22:00:09.572Z'),
message: 'Catch fire and Halt',
},
],
}

View File

@ -10,8 +10,8 @@ import {Tabs} from 'src/clockface'
import CollectorList from 'src/telegrafs/components/CollectorList'
import TelegrafExplainer from 'src/telegrafs/components/TelegrafExplainer'
import FilterList from 'src/shared/components/Filter'
import NoBucketsWarning from 'src/organizations/components/NoBucketsWarning'
import GetLabels from 'src/configuration/components/GetLabels'
import NoBucketsWarning from 'src/buckets/components/NoBucketsWarning'
import GetLabels from 'src/labels/components/GetLabels'
// Actions
import {setBucketInfo} from 'src/dataLoaders/actions/steps'

View File

@ -8,9 +8,7 @@ import {withRouter, WithRouterProps} from 'react-router'
import {ErrorHandling} from 'src/shared/decorators/errors'
import WizardOverlay from 'src/clockface/components/wizard/WizardOverlay'
import TelegrafInstructions from 'src/dataLoaders/components/verifyStep/TelegrafInstructions'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Constants
import {TOKEN_LABEL} from 'src/labels/constants'

View File

@ -5,15 +5,13 @@ import {AppState} from 'src/types'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import Collectors from 'src/telegrafs/components/Collectors'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Types
import {Organization} from '@influxdata/influx'
@ -30,11 +28,11 @@ class TelegrafsPage extends PureComponent<StateProps> {
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="telegrafs" orgID={org.id} />
<SettingsNavigation tab="telegrafs" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--telegrafs"

View File

@ -9,7 +9,7 @@ import TemplatesHeader from 'src/templates/components/TemplatesHeader'
import TemplatesList from 'src/templates/components/TemplatesList'
import {ErrorHandling} from 'src/shared/decorators/errors'
import SearchWidget from 'src/shared/components/search_widget/SearchWidget'
import GetLabels from 'src/configuration/components/GetLabels'
import GetLabels from 'src/labels/components/GetLabels'
// Types
import {TemplateSummary, AppState} from 'src/types'

View File

@ -6,17 +6,15 @@ import {connect} from 'react-redux'
import {ErrorHandling} from 'src/shared/decorators/errors'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import TemplatesPage from 'src/templates/components/TemplatesPage'
// Types
import {Organization} from '@influxdata/influx'
import {AppState} from 'src/types'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
interface StateProps {
org: Organization
@ -31,11 +29,11 @@ class TemplatesIndex extends Component<Props> {
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="templates" orgID={org.id} />
<SettingsNavigation tab="templates" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--templates"

View File

@ -14,7 +14,7 @@ import TabbedPageHeader from 'src/shared/components/tabbed_page/TabbedPageHeader
import VariableList from 'src/variables/components/VariableList'
import FilterList from 'src/shared/components/Filter'
import AddResourceDropdown from 'src/shared/components/AddResourceDropdown'
import GetLabels from 'src/configuration/components/GetLabels'
import GetLabels from 'src/labels/components/GetLabels'
// Types
import {OverlayState} from 'src/types'

View File

@ -4,15 +4,13 @@ import {connect} from 'react-redux'
// Components
import {ErrorHandling} from 'src/shared/decorators/errors'
import OrganizationNavigation from 'src/organizations/components/OrganizationNavigation'
import OrgHeader from 'src/organizations/containers/OrgHeader'
import SettingsNavigation from 'src/settings/components/SettingsNavigation'
import SettingsHeader from 'src/settings/components/SettingsHeader'
import {Tabs} from 'src/clockface'
import {Page} from 'src/pageLayout'
import TabbedPageSection from 'src/shared/components/tabbed_page/TabbedPageSection'
import VariablesTab from 'src/variables/components/VariablesTab'
import GetResources, {
ResourceTypes,
} from 'src/configuration/components/GetResources'
import GetResources, {ResourceTypes} from 'src/shared/components/GetResources'
// Types
import {Organization} from '@influxdata/influx'
@ -30,11 +28,11 @@ class VariablesIndex extends Component<StateProps> {
return (
<>
<Page titleTag={org.name}>
<OrgHeader />
<SettingsHeader />
<Page.Contents fullWidth={false} scrollable={true}>
<div className="col-xs-12">
<Tabs>
<OrganizationNavigation tab="variables" orgID={org.id} />
<SettingsNavigation tab="variables" orgID={org.id} />
<Tabs.TabContents>
<TabbedPageSection
id="org-view-tab--variables"