diff --git a/grafana-plugin/.eslintrc.js b/grafana-plugin/.eslintrc.js index b58173bb..99a8a3ce 100644 --- a/grafana-plugin/.eslintrc.js +++ b/grafana-plugin/.eslintrc.js @@ -6,7 +6,7 @@ module.exports = { plugins: ['rulesdir', 'import'], settings: { 'import/internal-regex': - '^assets|^components|^containers|^icons|^img|^models|^network|^pages|^services|^state|^utils|^plugin', + '^assets|^components|^containers|^icons|^models|^network|^pages|^services|^state|^utils|^plugin', }, rules: { eqeqeq: 'warn', diff --git a/grafana-plugin/.release-it.js b/grafana-plugin/.release-it.js deleted file mode 100644 index 7a044de6..00000000 --- a/grafana-plugin/.release-it.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - // TODD: enable the before init hooks once grafana/toolkit can limit the jest workers - git: { - commitMessage: 'chore: update version', - tag: false, - push: false, - commit: false, - }, - github: { - release: false, - }, - npm: { - publish: false, - }, - plugins: { - '@release-it/conventional-changelog': { - preset: 'angular', - infile: 'CHANGELOG.md', - }, - }, -}; diff --git a/grafana-plugin/.stylelintignore b/grafana-plugin/.stylelintignore deleted file mode 100644 index eb6f91b8..00000000 --- a/grafana-plugin/.stylelintignore +++ /dev/null @@ -1 +0,0 @@ -src/assets/**/*.css \ No newline at end of file diff --git a/grafana-plugin/grafana-plugin.yml.example b/grafana-plugin/grafana-plugin.yml.example deleted file mode 100644 index cebb79dc..00000000 --- a/grafana-plugin/grafana-plugin.yml.example +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: 1 -apps: - - type: grafana-oncall-app - name: grafana-oncall-app - disabled: false - jsonData: - stackId: - orgId: - onCallApiUrl: - secureJsonData: - onCallApiToken: diff --git a/grafana-plugin/jest.config.js b/grafana-plugin/jest.config.js index 87d4c2df..f63746a3 100644 --- a/grafana-plugin/jest.config.js +++ b/grafana-plugin/jest.config.js @@ -7,12 +7,10 @@ module.exports = { moduleFileExtensions: ['ts', 'tsx', 'js'], transformIgnorePatterns: [`/node_modules/(?!${esModules})`], - moduleNameMapper: { 'grafana/app/(.*)': '/src/jest/grafanaMock.ts', 'jest/matchMedia': '/src/jest/matchMedia.ts', - 'jest/outgoingWebhooksStub': '/src/jest/outgoingWebhooksStub.ts', '^jest$': '/src/jest', '^.+\\.(css|scss)$': '/src/jest/styleMock.ts', '^lodash-es$': 'lodash', diff --git a/grafana-plugin/provisioning/.gitignore b/grafana-plugin/provisioning/.gitignore deleted file mode 100644 index 5f0e45c1..00000000 --- a/grafana-plugin/provisioning/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# This file is generated -grafana-plugin.yml \ No newline at end of file diff --git a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.eot b/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.eot deleted file mode 100755 index ab96810a..00000000 Binary files a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.eot and /dev/null differ diff --git a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.svg b/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.svg deleted file mode 100755 index 6654c1a2..00000000 --- a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.svg +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.ttf b/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.ttf deleted file mode 100755 index 1a559850..00000000 Binary files a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.ttf and /dev/null differ diff --git a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff b/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff deleted file mode 100755 index cb192470..00000000 Binary files a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff and /dev/null differ diff --git a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff2 b/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff2 deleted file mode 100755 index e294e080..00000000 Binary files a/grafana-plugin/src/assets/fonts/nucleo/nucleo-icons.woff2 and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/apple-logo.svg b/grafana-plugin/src/assets/img/apple-logo.svg similarity index 100% rename from grafana-plugin/src/assets/img/brand/apple-logo.svg rename to grafana-plugin/src/assets/img/apple-logo.svg diff --git a/grafana-plugin/src/assets/img/arrows/arrow_07.svg b/grafana-plugin/src/assets/img/arrows/arrow_07.svg deleted file mode 100644 index c633458d..00000000 --- a/grafana-plugin/src/assets/img/arrows/arrow_07.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/arrows/arrow_12.svg b/grafana-plugin/src/assets/img/arrows/arrow_12.svg deleted file mode 100644 index ab652152..00000000 --- a/grafana-plugin/src/assets/img/arrows/arrow_12.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/arrows/arrow_35.svg b/grafana-plugin/src/assets/img/arrows/arrow_35.svg deleted file mode 100644 index 20aa7ddf..00000000 --- a/grafana-plugin/src/assets/img/arrows/arrow_35.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/arrows/arrow_43.svg b/grafana-plugin/src/assets/img/arrows/arrow_43.svg deleted file mode 100644 index 94ecfc99..00000000 --- a/grafana-plugin/src/assets/img/arrows/arrow_43.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/brand/amixr-logo-blue.png b/grafana-plugin/src/assets/img/brand/amixr-logo-blue.png deleted file mode 100644 index bdc33138..00000000 Binary files a/grafana-plugin/src/assets/img/brand/amixr-logo-blue.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/amixr-logo-blue.svg b/grafana-plugin/src/assets/img/brand/amixr-logo-blue.svg deleted file mode 100644 index 275c07e1..00000000 --- a/grafana-plugin/src/assets/img/brand/amixr-logo-blue.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/grafana-plugin/src/assets/img/brand/amixr-logo.png b/grafana-plugin/src/assets/img/brand/amixr-logo.png deleted file mode 100644 index d03de0fa..00000000 Binary files a/grafana-plugin/src/assets/img/brand/amixr-logo.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/argon-react-white.png b/grafana-plugin/src/assets/img/brand/argon-react-white.png deleted file mode 100755 index bd4d91d3..00000000 Binary files a/grafana-plugin/src/assets/img/brand/argon-react-white.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/argon-react.png b/grafana-plugin/src/assets/img/brand/argon-react.png deleted file mode 100755 index 964fd563..00000000 Binary files a/grafana-plugin/src/assets/img/brand/argon-react.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/blue.png b/grafana-plugin/src/assets/img/brand/blue.png deleted file mode 100755 index 88f515f1..00000000 Binary files a/grafana-plugin/src/assets/img/brand/blue.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/favicon.png b/grafana-plugin/src/assets/img/brand/favicon.png deleted file mode 100755 index 53997a06..00000000 Binary files a/grafana-plugin/src/assets/img/brand/favicon.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/brand/white.png b/grafana-plugin/src/assets/img/brand/white.png deleted file mode 100755 index df2708f3..00000000 Binary files a/grafana-plugin/src/assets/img/brand/white.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/events_instructions.png b/grafana-plugin/src/assets/img/events_instructions.png deleted file mode 100644 index d5f7263e..00000000 Binary files a/grafana-plugin/src/assets/img/events_instructions.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/howto-phone.png b/grafana-plugin/src/assets/img/howto-phone.png deleted file mode 100644 index 3f356a92..00000000 Binary files a/grafana-plugin/src/assets/img/howto-phone.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/icons/common/avatar.svg b/grafana-plugin/src/assets/img/icons/common/avatar.svg deleted file mode 100644 index 02ee64a5..00000000 --- a/grafana-plugin/src/assets/img/icons/common/avatar.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/grafana-plugin/src/assets/img/icons/common/github.svg b/grafana-plugin/src/assets/img/icons/common/github.svg deleted file mode 100755 index 2227d5e0..00000000 --- a/grafana-plugin/src/assets/img/icons/common/github.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - UI/icons/dark/github - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/icons/common/google.svg b/grafana-plugin/src/assets/img/icons/common/google.svg deleted file mode 100755 index 999a208c..00000000 --- a/grafana-plugin/src/assets/img/icons/common/google.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - UI/icons/color/google - Created with Sketch. - - - - - - - - - - - - \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/icons/common/slack.svg b/grafana-plugin/src/assets/img/icons/common/slack.svg deleted file mode 100644 index dafdb241..00000000 --- a/grafana-plugin/src/assets/img/icons/common/slack.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/grafana-plugin/src/assets/img/icons/curler-icon.svg b/grafana-plugin/src/assets/img/icons/curler-icon.svg deleted file mode 100644 index 1e0bedeb..00000000 --- a/grafana-plugin/src/assets/img/icons/curler-icon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/grafana-plugin/src/assets/img/icons/slack-colored.svg b/grafana-plugin/src/assets/img/icons/slack-colored.svg deleted file mode 100644 index d9accdf8..00000000 --- a/grafana-plugin/src/assets/img/icons/slack-colored.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/img/logo.svg b/grafana-plugin/src/assets/img/logo.svg similarity index 100% rename from grafana-plugin/src/img/logo.svg rename to grafana-plugin/src/assets/img/logo.svg diff --git a/grafana-plugin/src/assets/img/brand/play-store-logo.svg b/grafana-plugin/src/assets/img/play-store-logo.svg similarity index 100% rename from grafana-plugin/src/assets/img/brand/play-store-logo.svg rename to grafana-plugin/src/assets/img/play-store-logo.svg diff --git a/grafana-plugin/src/assets/img/prometheus_logo_grey.svg b/grafana-plugin/src/assets/img/prometheus_logo_grey.svg deleted file mode 100644 index b914095e..00000000 --- a/grafana-plugin/src/assets/img/prometheus_logo_grey.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - diff --git a/grafana-plugin/src/img/screenshot.png b/grafana-plugin/src/assets/img/screenshot.png similarity index 100% rename from grafana-plugin/src/img/screenshot.png rename to grafana-plugin/src/assets/img/screenshot.png diff --git a/grafana-plugin/src/img/slack_instructions.png b/grafana-plugin/src/assets/img/slack_instructions.png similarity index 100% rename from grafana-plugin/src/img/slack_instructions.png rename to grafana-plugin/src/assets/img/slack_instructions.png diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_ai_suggestion.png b/grafana-plugin/src/assets/img/slack_landing/slack_ai_suggestion.png deleted file mode 100644 index a316bb41..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_ai_suggestion.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_install_permissions.png b/grafana-plugin/src/assets/img/slack_landing/slack_install_permissions.png deleted file mode 100644 index 7ce0dc13..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_install_permissions.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_invitation_message.png b/grafana-plugin/src/assets/img/slack_landing/slack_invitation_message.png deleted file mode 100644 index e286f394..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_invitation_message.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_log_and_plan_message.png b/grafana-plugin/src/assets/img/slack_landing/slack_log_and_plan_message.png deleted file mode 100644 index a5288d42..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_log_and_plan_message.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_main_message.png b/grafana-plugin/src/assets/img/slack_landing/slack_main_message.png deleted file mode 100644 index 6ef01074..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_main_message.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_ok_message.png b/grafana-plugin/src/assets/img/slack_landing/slack_ok_message.png deleted file mode 100644 index fb655e37..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_ok_message.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_oncall_schedule_reminder.png b/grafana-plugin/src/assets/img/slack_landing/slack_oncall_schedule_reminder.png deleted file mode 100644 index 0205b633..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_oncall_schedule_reminder.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/slack_landing/slack_postmortem_message.png b/grafana-plugin/src/assets/img/slack_landing/slack_postmortem_message.png deleted file mode 100644 index c4be8bed..00000000 Binary files a/grafana-plugin/src/assets/img/slack_landing/slack_postmortem_message.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram.svg b/grafana-plugin/src/assets/img/telegram.svg deleted file mode 100644 index 12b2249d..00000000 --- a/grafana-plugin/src/assets/img/telegram.svg +++ /dev/null @@ -1 +0,0 @@ -telegram \ No newline at end of file diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/1.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/1.png deleted file mode 100644 index 75dc87d4..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/1.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/2.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/2.png deleted file mode 100644 index 74fff585..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/2.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/3.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/3.png deleted file mode 100644 index ba8f078b..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/3.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/4.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/4.png deleted file mode 100644 index edab2116..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/4.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/6.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/6.png deleted file mode 100644 index bc766bf3..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/6.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/7.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/7.png deleted file mode 100644 index 0a7f088b..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/7.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/8.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/8.png deleted file mode 100644 index aba4f649..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/8.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/9.png b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/9.png deleted file mode 100644 index 31ea2cac..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/9.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/doge-meme-telegram.jpg b/grafana-plugin/src/assets/img/telegram_channel_instruction_images/doge-meme-telegram.jpg deleted file mode 100644 index 7c4fa840..00000000 Binary files a/grafana-plugin/src/assets/img/telegram_channel_instruction_images/doge-meme-telegram.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/angular.jpg b/grafana-plugin/src/assets/img/theme/angular.jpg deleted file mode 100755 index 3fdc331d..00000000 Binary files a/grafana-plugin/src/assets/img/theme/angular.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/bootstrap.jpg b/grafana-plugin/src/assets/img/theme/bootstrap.jpg deleted file mode 100755 index 183db14c..00000000 Binary files a/grafana-plugin/src/assets/img/theme/bootstrap.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/forrest.png b/grafana-plugin/src/assets/img/theme/forrest.png deleted file mode 100644 index 7142a1df..00000000 Binary files a/grafana-plugin/src/assets/img/theme/forrest.png and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/profile-cover.jpg b/grafana-plugin/src/assets/img/theme/profile-cover.jpg deleted file mode 100755 index 7f58de13..00000000 Binary files a/grafana-plugin/src/assets/img/theme/profile-cover.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/react.jpg b/grafana-plugin/src/assets/img/theme/react.jpg deleted file mode 100755 index a05c8e65..00000000 Binary files a/grafana-plugin/src/assets/img/theme/react.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/sketch.jpg b/grafana-plugin/src/assets/img/theme/sketch.jpg deleted file mode 100755 index 8486f4ff..00000000 Binary files a/grafana-plugin/src/assets/img/theme/sketch.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/team-1-800x800.jpg b/grafana-plugin/src/assets/img/theme/team-1-800x800.jpg deleted file mode 100755 index 7fb81de2..00000000 Binary files a/grafana-plugin/src/assets/img/theme/team-1-800x800.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/team-2-800x800.jpg b/grafana-plugin/src/assets/img/theme/team-2-800x800.jpg deleted file mode 100755 index 181e3705..00000000 Binary files a/grafana-plugin/src/assets/img/theme/team-2-800x800.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/team-3-800x800.jpg b/grafana-plugin/src/assets/img/theme/team-3-800x800.jpg deleted file mode 100755 index 0876acdb..00000000 Binary files a/grafana-plugin/src/assets/img/theme/team-3-800x800.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/team-4-800x800.jpg b/grafana-plugin/src/assets/img/theme/team-4-800x800.jpg deleted file mode 100755 index 8aa9ce2b..00000000 Binary files a/grafana-plugin/src/assets/img/theme/team-4-800x800.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/theme/vue.jpg b/grafana-plugin/src/assets/img/theme/vue.jpg deleted file mode 100755 index 9b5946e5..00000000 Binary files a/grafana-plugin/src/assets/img/theme/vue.jpg and /dev/null differ diff --git a/grafana-plugin/src/assets/img/users.svg b/grafana-plugin/src/assets/img/users.svg deleted file mode 100644 index 426c8db6..00000000 --- a/grafana-plugin/src/assets/img/users.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/grafana-plugin/src/style/global.css b/grafana-plugin/src/assets/style/global.css similarity index 100% rename from grafana-plugin/src/style/global.css rename to grafana-plugin/src/assets/style/global.css diff --git a/grafana-plugin/src/img/grafanaGlobalStyles.css b/grafana-plugin/src/assets/style/grafanaGlobalStyles.css similarity index 100% rename from grafana-plugin/src/img/grafanaGlobalStyles.css rename to grafana-plugin/src/assets/style/grafanaGlobalStyles.css diff --git a/grafana-plugin/src/style/responsive.css b/grafana-plugin/src/assets/style/responsive.css similarity index 100% rename from grafana-plugin/src/style/responsive.css rename to grafana-plugin/src/assets/style/responsive.css diff --git a/grafana-plugin/src/style/utils.css b/grafana-plugin/src/assets/style/utils.css similarity index 100% rename from grafana-plugin/src/style/utils.css rename to grafana-plugin/src/assets/style/utils.css diff --git a/grafana-plugin/src/style/vars.css b/grafana-plugin/src/assets/style/vars.css similarity index 100% rename from grafana-plugin/src/style/vars.css rename to grafana-plugin/src/assets/style/vars.css diff --git a/grafana-plugin/src/containers/MobileAppConnection/parts/DownloadIcons/index.tsx b/grafana-plugin/src/containers/MobileAppConnection/parts/DownloadIcons/index.tsx index 3f1e04b6..24cb34bc 100644 --- a/grafana-plugin/src/containers/MobileAppConnection/parts/DownloadIcons/index.tsx +++ b/grafana-plugin/src/containers/MobileAppConnection/parts/DownloadIcons/index.tsx @@ -3,8 +3,8 @@ import React, { FC } from 'react'; import { VerticalGroup } from '@grafana/ui'; import cn from 'classnames/bind'; -import AppleLogoSVG from 'assets/img/brand/apple-logo.svg'; -import PlayStoreLogoSVG from 'assets/img/brand/play-store-logo.svg'; +import AppleLogoSVG from 'assets/img/apple-logo.svg'; +import PlayStoreLogoSVG from 'assets/img/play-store-logo.svg'; import Block from 'components/GBlock/Block'; import Text from 'components/Text/Text'; diff --git a/grafana-plugin/src/containers/RotationForm/RotationForm.tsx b/grafana-plugin/src/containers/RotationForm/RotationForm.tsx index 7f818997..1ef816ae 100644 --- a/grafana-plugin/src/containers/RotationForm/RotationForm.tsx +++ b/grafana-plugin/src/containers/RotationForm/RotationForm.tsx @@ -61,7 +61,7 @@ import { } from 'pages/schedule/Schedule.helpers'; import { useStore } from 'state/useStore'; import { getCoords, waitForElement } from 'utils/DOM'; -import { GRAFANA_HEADER_HEIGTH } from 'utils/consts'; +import { GRAFANA_HEADER_HEIGHT } from 'utils/consts'; import { useDebouncedCallback } from 'utils/hooks'; import styles from './RotationForm.module.css'; @@ -151,7 +151,7 @@ const RotationForm = observer((props: RotationFormProps) => { const offsetTop = Math.max( Math.min(coords.top - modal?.offsetHeight - 10, document.body.offsetHeight - modal?.offsetHeight - 10), - GRAFANA_HEADER_HEIGTH + 10 + GRAFANA_HEADER_HEIGHT + 10 ); setOffsetTop(offsetTop); diff --git a/grafana-plugin/src/containers/RotationForm/ScheduleOverrideForm.tsx b/grafana-plugin/src/containers/RotationForm/ScheduleOverrideForm.tsx index a555aa77..d5690328 100644 --- a/grafana-plugin/src/containers/RotationForm/ScheduleOverrideForm.tsx +++ b/grafana-plugin/src/containers/RotationForm/ScheduleOverrideForm.tsx @@ -18,7 +18,7 @@ import { User } from 'models/user/user.types'; import { getDateTime, getUTCString } from 'pages/schedule/Schedule.helpers'; import { useStore } from 'state/useStore'; import { getCoords, getVar, waitForElement } from 'utils/DOM'; -import { GRAFANA_HEADER_HEIGTH } from 'utils/consts'; +import { GRAFANA_HEADER_HEIGHT } from 'utils/consts'; import { useDebouncedCallback } from 'utils/hooks'; import DateTimePicker from './parts/DateTimePicker'; @@ -88,7 +88,7 @@ const ScheduleOverrideForm: FC = (props) => { const coords = getCoords(elm); const offsetTop = Math.min( - Math.max(coords.top - modal?.offsetHeight - 10, GRAFANA_HEADER_HEIGTH + 10), + Math.max(coords.top - modal?.offsetHeight - 10, GRAFANA_HEADER_HEIGHT + 10), document.body.offsetHeight - modal?.offsetHeight - 10 ); diff --git a/grafana-plugin/src/containers/UserSettings/parts/tabs/SlackTab/SlackTab.tsx b/grafana-plugin/src/containers/UserSettings/parts/tabs/SlackTab/SlackTab.tsx index 2b980004..a6c8880e 100644 --- a/grafana-plugin/src/containers/UserSettings/parts/tabs/SlackTab/SlackTab.tsx +++ b/grafana-plugin/src/containers/UserSettings/parts/tabs/SlackTab/SlackTab.tsx @@ -40,7 +40,7 @@ export const SlackTab = () => { diff --git a/grafana-plugin/src/dashboards/oncall_metrics_dashboard.json b/grafana-plugin/src/dashboards/oncall_metrics_dashboard.json index 66cac5b0..0b488497 100644 --- a/grafana-plugin/src/dashboards/oncall_metrics_dashboard.json +++ b/grafana-plugin/src/dashboards/oncall_metrics_dashboard.json @@ -40,7 +40,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "
\n \n
", + "content": "
\n \n
", "mode": "html" }, "pluginVersion": "9.5.2", diff --git a/grafana-plugin/src/jest/outgoingWebhooksStub.ts b/grafana-plugin/src/jest/outgoingWebhooksStub.ts deleted file mode 100644 index 829af710..00000000 --- a/grafana-plugin/src/jest/outgoingWebhooksStub.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { OutgoingWebhook } from 'models/outgoing_webhook/outgoing_webhook.types'; - -export default [ - { - id: 'K2E45EI2586HS', - name: 'hook-1', - team: null, - webhook: 'http://google.ro', - data: null, - user: 'rares', - password: 'password', - authorization_header: 'auth-header', - forward_whole_payload: false, - }, - { - id: 'KL3UZQQF2KE5V', - name: 'hook-3', - team: null, - webhook: 'http://google.ro', - data: null, - user: null, - password: null, - authorization_header: null, - forward_whole_payload: false, - }, -] as OutgoingWebhook[]; diff --git a/grafana-plugin/src/navbar/Header/Header.tsx b/grafana-plugin/src/navbar/Header/Header.tsx index 44442357..f58f5447 100644 --- a/grafana-plugin/src/navbar/Header/Header.tsx +++ b/grafana-plugin/src/navbar/Header/Header.tsx @@ -5,10 +5,10 @@ import cn from 'classnames/bind'; import { observer } from 'mobx-react'; import gitHubStarSVG from 'assets/img/github_star.svg'; +import logo from 'assets/img/logo.svg'; import Tag from 'components/Tag/Tag'; import Alerts from 'containers/Alerts/Alerts'; import IRMBanner from 'containers/IRMBanner/IRMBanner'; -import logo from 'img/logo.svg'; import { isTopNavbar } from 'plugin/GrafanaPluginRootPage.helpers'; import { useStore } from 'state/useStore'; import { APP_SUBTITLE } from 'utils/consts'; diff --git a/grafana-plugin/src/pages/outgoing_webhooks/OutgoingWebhooks.test.tsx.example b/grafana-plugin/src/pages/outgoing_webhooks/OutgoingWebhooks.test.tsx.example deleted file mode 100644 index 3760dc05..00000000 --- a/grafana-plugin/src/pages/outgoing_webhooks/OutgoingWebhooks.test.tsx.example +++ /dev/null @@ -1,112 +0,0 @@ -import 'jest/matchMedia.ts'; -import React from 'react'; - -import { describe, expect, test } from '@jest/globals'; -import { render, screen, waitFor } from '@testing-library/react'; -import '@testing-library/jest-dom'; -import outgoingWebhooksStub from 'jest/outgoingWebhooksStub'; -import { BrowserRouter, Switch } from 'react-router-dom'; - -import { OutgoingWebhook } from 'models/outgoing_webhook/outgoing_webhook.types'; -import { OutgoingWebhooks } from 'pages/outgoing_webhooks/OutgoingWebhooks'; - -const outgoingWebhooks = outgoingWebhooksStub as OutgoingWebhook[]; -const outgoingWebhookStore = () => ({ - loadItem: () => Promise.resolve(outgoingWebhooks[0]), - updateItems: () => Promise.resolve(), - getSearchResult: () => outgoingWebhooks, - items: outgoingWebhooks.reduce((prev, current) => { - prev[current.id] = current; - return prev; - }, {}), -}); - -jest.mock('@grafana/faro-web-sdk', () => ({ - initializeFaro: jest.fn(), - TracingInstrumentation: undefined, -})); -jest.mock('@grafana/faro-web-tracing', () => ({ - TracingInstrumentation: undefined, -})); - -jest.mock('plugin/GrafanaPluginRootPage.helpers', () => ({ - isTopNavbar: () => false, -})); - -jest.mock('@grafana/runtime', () => ({ - getBackendSrv: () => {}, - config: { - featureToggles: { - topNav: false, - }, - }, -})); - -jest.mock('state/useStore', () => ({ - useStore: () => ({ - outgoingWebhookStore: outgoingWebhookStore(), - }), -})); - -jest.mock('utils/authorization', () => ({ - ...jest.requireActual('utils/authorization'), - isUserActionAllowed: jest.fn().mockReturnValue(true), -})); - -jest.mock('@grafana/runtime', () => ({ - getLocationSrv: jest.fn(), -})); - -describe('OutgoingWebhooks', () => { - const storeMock = { - outgoingWebhookStore: outgoingWebhookStore(), - grafanaTeamStore: { items: { null: {} } }, - }; - - beforeAll(() => { - console.warn = () => {}; - console.error = () => {}; - }); - - test('It renders all retrieved webhooks', async () => { - render( - - - - - - ); - - await waitFor(() => { - const gTable = screen.queryByTestId('test__gTable'); - const rows = gTable.querySelectorAll('tbody tr'); - - expect(() => queryEditForm()).toThrow(); // edit doesn't show for [id=undefined] - expect(rows.length).toBe(outgoingWebhooks.length); - }); - }); - - test('It opens Edit View if [id] is supplied', async () => { - const id = outgoingWebhooks[0].id; - render( - - - - - - ); - - expect(() => queryEditForm()).toThrow(); // before updates kick in - await waitFor(() => { - expect(queryEditForm()).toBeDefined(); // edit shows for [id=?] - }); - }); - - function getProps(id: OutgoingWebhook['id'] = undefined): any { - return { store: storeMock, match: { params: { id } }, team: {} }; - } - - function queryEditForm(): HTMLElement { - return screen.getByTestId('test__outgoingWebhookEditForm'); - } -}); diff --git a/grafana-plugin/src/pages/settings/tabs/ChatOps/tabs/SlackSettings/SlackSettings.tsx b/grafana-plugin/src/pages/settings/tabs/ChatOps/tabs/SlackSettings/SlackSettings.tsx index db046d78..bac6f633 100644 --- a/grafana-plugin/src/pages/settings/tabs/ChatOps/tabs/SlackSettings/SlackSettings.tsx +++ b/grafana-plugin/src/pages/settings/tabs/ChatOps/tabs/SlackSettings/SlackSettings.tsx @@ -278,7 +278,7 @@ class SlackSettings extends Component { diff --git a/grafana-plugin/src/plugin.json b/grafana-plugin/src/plugin.json index a26059c8..2bc4e029 100644 --- a/grafana-plugin/src/plugin.json +++ b/grafana-plugin/src/plugin.json @@ -11,8 +11,8 @@ }, "keywords": ["oncall", "irm", "incident", "response"], "logos": { - "small": "img/logo.svg", - "large": "img/logo.svg" + "small": "assets/img/logo.svg", + "large": "assets/img/logo.svg" }, "links": [ { @@ -24,7 +24,7 @@ "url": "https://github.com/grafana/oncall/blob/main/LICENSE" } ], - "screenshots": [{ "name": "Escalation chain", "path": "img/screenshot.png" }], + "screenshots": [{ "name": "Escalation chain", "path": "assets/img/screenshot.png" }], "version": "%VERSION%", "updated": "%TODAY%" }, diff --git a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx index 67bb6baf..436b5736 100644 --- a/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx +++ b/grafana-plugin/src/plugin/GrafanaPluginRootPage.tsx @@ -52,15 +52,15 @@ dayjs.extend(isoWeek); dayjs.extend(isBetween); dayjs.extend(customParseFormat); -import 'style/vars.css'; -import 'style/global.css'; -import 'style/utils.css'; -import 'style/responsive.css'; +import 'assets/style/vars.css'; +import 'assets/style/global.css'; +import 'assets/style/utils.css'; +import 'assets/style/responsive.css'; import { getQueryParams, isTopNavbar } from './GrafanaPluginRootPage.helpers'; import PluginSetup from './PluginSetup'; -import grafanaGlobalStyle from '!raw-loader!img/grafanaGlobalStyles.css'; +import grafanaGlobalStyle from '!raw-loader!assets/style/grafanaGlobalStyles.css'; export const GrafanaPluginRootPage = (props: AppRootProps) => { return ( diff --git a/grafana-plugin/src/plugin/PluginSetup/index.tsx b/grafana-plugin/src/plugin/PluginSetup/index.tsx index 85dfe16e..18ae2ffa 100644 --- a/grafana-plugin/src/plugin/PluginSetup/index.tsx +++ b/grafana-plugin/src/plugin/PluginSetup/index.tsx @@ -6,7 +6,7 @@ import { PluginPageFallback } from 'PluginPage'; import { observer } from 'mobx-react'; import { AppRootProps } from 'types'; -import logo from 'img/logo.svg'; +import logo from 'assets/img/logo.svg'; import { isTopNavbar } from 'plugin/GrafanaPluginRootPage.helpers'; import { useStore } from 'state/useStore'; diff --git a/grafana-plugin/src/state/helpers.ts b/grafana-plugin/src/state/helpers.ts index 10e8976b..778375a4 100644 --- a/grafana-plugin/src/state/helpers.ts +++ b/grafana-plugin/src/state/helpers.ts @@ -1,48 +1,3 @@ -import { Alert } from 'models/alertgroup/alertgroup.types'; - -type Anims = { [key: number]: number[] }; - -export function getAnims(oldStats: any, newStats: any, ids: number[]) { - const anims: Anims = {}; - - const map = ids.reduce((acc: any, id: number) => { - const { list } = newStats[id] || { list: [] }; - - list.forEach((alertId: Alert['pk']) => { - acc[alertId] = { to: id }; - }); - - return acc; - }, {}); - - const filteredStats = ids.reduce((acc: any, id: any) => { - return { - ...acc, - [id]: oldStats[id] || { list: [] }, - }; - }, {}); - - Object.keys(map) - .map(Number) - .forEach((alertId: number) => { - const id = Object.keys(filteredStats) - .map(Number) - .find((id: number) => filteredStats[id].list.includes(alertId)); - - const to = map[alertId].to; - - const startIndex = id ? ids.indexOf(id) : -1; - const endIndex = ids.indexOf(to); - - anims[alertId] = []; - for (let i = startIndex + 1; i <= endIndex; i++) { - anims[alertId].push(ids[i]); - } - }); - - return anims; -} - export function move(arr: any[], old_index: number, new_index: number) { while (old_index < 0) { old_index += arr.length; diff --git a/grafana-plugin/src/utils/consts.ts b/grafana-plugin/src/utils/consts.ts index 2ee3b7c0..bf2b7b28 100644 --- a/grafana-plugin/src/utils/consts.ts +++ b/grafana-plugin/src/utils/consts.ts @@ -1,7 +1,6 @@ import plugin from '../../package.json'; // eslint-disable-line // Navbar -export const APP_TITLE = 'Grafana OnCall'; export const APP_SUBTITLE = `Developer-friendly incident response (${plugin?.version})`; export const APP_VERSION = `${plugin?.version}`; @@ -16,7 +15,7 @@ export const GRAFANA_LICENSE_CLOUD = 'Cloud'; export const FALLBACK_LICENSE = CLOUD_VERSION_REGEX.test(APP_VERSION) ? GRAFANA_LICENSE_CLOUD : GRAFANA_LICENSE_OSS; // height of new Grafana sticky header with breadcrumbs -export const GRAFANA_HEADER_HEIGTH = 80; +export const GRAFANA_HEADER_HEIGHT = 80; // Reusable breakpoint sizes export const BREAKPOINT_TABS = 1024; @@ -44,5 +43,3 @@ export const DOCS_TELEGRAM_SETUP = 'https://grafana.com/docs/oncall/latest/notif // Make sure if you chage max-width here you also change it in responsive.css export const TABLE_COLUMN_MAX_WIDTH = 1500; - -export const DATASOURCE_GRAFANA = 'grafana'; diff --git a/grafana-plugin/src/utils/datetime.ts b/grafana-plugin/src/utils/datetime.ts index 0470c4bd..1677bedd 100644 --- a/grafana-plugin/src/utils/datetime.ts +++ b/grafana-plugin/src/utils/datetime.ts @@ -1,23 +1,5 @@ import { TimeOption, TimeRange, TimeZone, rangeUtil } from '@grafana/data'; -export const toHHmmss = (s: number) => { - let hours = Math.floor(s / 3600); - let minutes = Math.floor((s - hours * 3600) / 60); - - let time = ''; - if (hours > 0) { - time += hours + 'h'; - } - if (minutes > 0) { - if (minutes < 10 && hours > 0) { - time += '0'; - } - time += minutes + 'm'; - } - - return time || '0m'; -}; - // Valid mapping accepted by @grafana/ui and @grafana/data packages export const quickOptions = [ { from: 'now-5m', to: 'now', display: 'Last 5 minutes' }, diff --git a/grafana-plugin/src/utils/hooks.tsx b/grafana-plugin/src/utils/hooks.tsx index 9552d92c..e16c3182 100644 --- a/grafana-plugin/src/utils/hooks.tsx +++ b/grafana-plugin/src/utils/hooks.tsx @@ -39,11 +39,6 @@ export function useQueryParams(): URLSearchParams { return React.useMemo(() => new URLSearchParams(search), [search]); } -export function useQueryPath(): string { - const location = useLocation(); - return React.useMemo(() => location.pathname, [location]); -} - export function useDebouncedCallback(callback: (...args: A) => void, wait: number) { // track args & timeout handle between calls const argsRef = useRef(); diff --git a/grafana-plugin/src/utils/index.ts b/grafana-plugin/src/utils/index.ts index c196f3cf..d3e4cd5a 100644 --- a/grafana-plugin/src/utils/index.ts +++ b/grafana-plugin/src/utils/index.ts @@ -4,7 +4,6 @@ import { sentenceCase } from 'change-case'; // @ts-ignore import appEvents from 'grafana/app/core/app_events'; import { isArray, concat, isPlainObject, flatMap, map, keys } from 'lodash-es'; -import qs from 'query-string'; import { isNetworkError } from 'network'; @@ -18,12 +17,6 @@ export class KeyValuePair { } } -export const TZ_OFFSET = new Date().getTimezoneOffset(); - -export const getTzOffsetHours = (): number => { - return TZ_OFFSET / 60; -}; - export function showApiError(error: any) { if (isNetworkError(error) && error.response && error.response.status >= 400 && error.response.status < 500) { const payload = error.response.data; @@ -98,73 +91,3 @@ export function getPaths(obj?: any, parentKey?: string): string[] { } return concat(result, parentKey || []); } - -export function rateToPercent(rate: number): string | undefined { - if (isNaN(rate)) { - return undefined; - } - return ((rate - 1) * 100).toFixed(2); -} - -export function getIsMobile(): boolean { - const width = document.documentElement.clientWidth; - return width < 900; -} - -export function splitTime(seconds: number): number[] { - let days = 0; - let hours = 0; - let mins = 0; - let secs = seconds; - if (secs) { - days = Math.floor(secs / 86400); - secs -= days * 86400; - hours = Math.floor(secs / 3600); - secs -= hours * 3600; - mins = Math.floor(secs / 60); - secs -= mins * 60; - } - - return [days, hours, mins, secs]; -} - -export function secondsToHumanReadable(duration: number): string { - const [days, hours, mins, secs] = splitTime(duration); - - let timeText = ''; - - if (days) { - timeText += `${days}d`; - } - - if (hours) { - timeText += `${hours}h`; - } - - if (mins) { - timeText += `${mins}m`; - } - - if (secs) { - timeText += `${secs}s`; - } - - return timeText; -} - -export function secondsToHours(seconds: number) { - return seconds / 3600; -} - -export function getApiOrigin() { - return process.env.REACT_APP_API || ''; -} - -export function replaceQueryParams(params: any) { - const query = qs.stringify({ - ...qs.parse(window.location.search), - ...params, - }); - - window.history.replaceState(null, '', `${window.location.pathname}?${query}${window.location.hash}`); -} diff --git a/grafana-plugin/src/utils/loadCss.ts b/grafana-plugin/src/utils/loadCss.ts deleted file mode 100644 index 5db0ddb2..00000000 --- a/grafana-plugin/src/utils/loadCss.ts +++ /dev/null @@ -1,14 +0,0 @@ -export default function loadCss(url: string) { - return new Promise((resolve, _reject) => { - let link = document.createElement('link'); - link.type = 'text/css'; - link.rel = 'stylesheet'; - link.onload = resolve; - link.href = url; - - const head = document.getElementsByTagName('head')[0]; - head.appendChild(link); - - return link; - }); -}