@pagerduty/backstage-plugin 0.15.8 → 0.15.9-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +36 -0
  2. package/config.d.ts +4 -1
  3. package/dist/alpha.d.ts +8 -0
  4. package/dist/alpha.esm.js +67 -0
  5. package/dist/alpha.esm.js.map +1 -0
  6. package/dist/api/client.esm.js +9 -3
  7. package/dist/api/client.esm.js.map +1 -1
  8. package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js +20 -11
  9. package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js.map +1 -1
  10. package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js +20 -11
  11. package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js.map +1 -1
  12. package/dist/components/ChangeEvents/ChangeEventListItem.esm.js +37 -34
  13. package/dist/components/ChangeEvents/ChangeEventListItem.esm.js.map +1 -1
  14. package/dist/components/ChangeEvents/ChangeEvents.esm.js +14 -3
  15. package/dist/components/ChangeEvents/ChangeEvents.esm.js.map +1 -1
  16. package/dist/components/EntityPagerDutyCard/index.esm.js +13 -10
  17. package/dist/components/EntityPagerDutyCard/index.esm.js.map +1 -1
  18. package/dist/components/EntityPagerDutySmallCard/index.esm.js +13 -10
  19. package/dist/components/EntityPagerDutySmallCard/index.esm.js.map +1 -1
  20. package/dist/components/Escalation/EscalationPolicy.esm.js +9 -24
  21. package/dist/components/Escalation/EscalationPolicy.esm.js.map +1 -1
  22. package/dist/components/Escalation/EscalationUser.esm.js +16 -26
  23. package/dist/components/Escalation/EscalationUser.esm.js.map +1 -1
  24. package/dist/components/Icons/index.esm.js.map +1 -1
  25. package/dist/components/Incident/IncidentEmptyState.esm.js.map +1 -1
  26. package/dist/components/Incident/IncidentForbiddenState.esm.js +20 -11
  27. package/dist/components/Incident/IncidentForbiddenState.esm.js.map +1 -1
  28. package/dist/components/Incident/IncidentListItem.esm.js +17 -15
  29. package/dist/components/Incident/IncidentListItem.esm.js.map +1 -1
  30. package/dist/components/Incident/Incidents.esm.js +10 -2
  31. package/dist/components/Incident/Incidents.esm.js.map +1 -1
  32. package/dist/components/PagerDutyCard/index.esm.js +81 -89
  33. package/dist/components/PagerDutyCard/index.esm.js.map +1 -1
  34. package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js +2 -1
  35. package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js.map +1 -1
  36. package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js +28 -30
  37. package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js.map +1 -1
  38. package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js +59 -38
  39. package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js.map +1 -1
  40. package/dist/components/PagerDutyCardCommon/StatusCard.esm.js +9 -6
  41. package/dist/components/PagerDutyCardCommon/StatusCard.esm.js.map +1 -1
  42. package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js +30 -30
  43. package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js.map +1 -1
  44. package/dist/components/PagerDutyPage/MappingTable.esm.js +30 -19
  45. package/dist/components/PagerDutyPage/MappingTable.esm.js.map +1 -1
  46. package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js.map +1 -1
  47. package/dist/components/PagerDutyPage/index.esm.js +55 -77
  48. package/dist/components/PagerDutyPage/index.esm.js.map +1 -1
  49. package/dist/components/PagerDutySmallCard/index.esm.js +42 -54
  50. package/dist/components/PagerDutySmallCard/index.esm.js.map +1 -1
  51. package/dist/components/TriggerDialog/TriggerDialog.esm.js +14 -9
  52. package/dist/components/TriggerDialog/TriggerDialog.esm.js.map +1 -1
  53. package/dist/components/pagerDutyEntity.esm.js.map +1 -1
  54. package/dist/index.d.ts +5 -3
  55. package/dist/index.esm.js +1 -0
  56. package/dist/index.esm.js.map +1 -1
  57. package/dist/plugin.esm.js.map +1 -1
  58. package/package.json +33 -9
@@ -1,6 +1,7 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
- import { Grid, Typography, Card, RadioGroup, FormControlLabel, Radio } from '@material-ui/core';
3
+ import { makeStyles, Typography, createStyles } from '@material-ui/core';
4
+ import { Grid, Card, RadioGroup, Radio } from '@backstage/ui';
4
5
  import { Page, Header, Content, TabbedLayout } from '@backstage/core-components';
5
6
  import { ServiceMappingComponent } from './ServiceMappingComponent.esm.js';
6
7
  import { useApi } from '@backstage/core-plugin-api';
@@ -8,7 +9,22 @@ import { pagerDutyApiRef } from '../../api/client.esm.js';
8
9
  import { NotFoundError } from '@backstage/errors';
9
10
 
10
11
  const SERVICE_DEPENDENCY_SYNC_STRATEGY = "settings::service-dependency-sync-strategy";
12
+ const useStyles = makeStyles(
13
+ () => createStyles({
14
+ cardStyles: {
15
+ padding: "15px",
16
+ marginTop: "16px"
17
+ },
18
+ textContainerStyles: {
19
+ marginTop: "16px"
20
+ },
21
+ linkStyles: {
22
+ color: "cadetblue"
23
+ }
24
+ })
25
+ );
11
26
  const PagerDutyPage = () => {
27
+ const { cardStyles, textContainerStyles, linkStyles } = useStyles();
12
28
  const pagerDutyApi = useApi(pagerDutyApiRef);
13
29
  const [
14
30
  selectedServiceDependencyStrategy,
@@ -28,8 +44,7 @@ const PagerDutyPage = () => {
28
44
  }
29
45
  fetchSetting();
30
46
  }, [pagerDutyApi]);
31
- const handleChange = (event) => {
32
- const value = getSelectedValue(event.target.value);
47
+ const handleChange = (value) => {
33
48
  setSelectedServiceDependencyStrategy(value);
34
49
  pagerDutyApi.storeSettings([
35
50
  {
@@ -38,95 +53,58 @@ const PagerDutyPage = () => {
38
53
  }
39
54
  ]);
40
55
  };
41
- function getSelectedValue(value) {
42
- switch (value) {
43
- case "backstage":
44
- return "backstage";
45
- case "pagerduty":
46
- return "pagerduty";
47
- case "both":
48
- return "both";
49
- default:
50
- return "disabled";
51
- }
52
- }
53
56
  return /* @__PURE__ */ jsxs(Page, { themeId: "home", children: [
54
57
  /* @__PURE__ */ jsx(Header, { title: "PagerDuty", subtitle: "Advanced configurations" }),
55
58
  /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(TabbedLayout, { children: [
56
- /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/service-mapping", title: "Service Mapping", children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, direction: "column", children: [
57
- /* @__PURE__ */ jsxs(Grid, { item: true, children: [
58
- /* @__PURE__ */ jsx(Typography, { variant: "body1", children: "Easily map your existing PagerDuty services to entities in Backstage without the need to add anotations to all your projects." }),
59
- /* @__PURE__ */ jsxs(Typography, { variant: "body1", children: [
59
+ /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/service-mapping", title: "Service Mapping", children: /* @__PURE__ */ jsxs(Grid.Root, { gap: "3", columns: "1", children: [
60
+ /* @__PURE__ */ jsxs(Grid.Item, { children: [
61
+ /* @__PURE__ */ jsx(Typography, { children: "Easily map your existing PagerDuty services to entities in Backstage without the need to add anotations to all your projects." }),
62
+ /* @__PURE__ */ jsxs(Typography, { children: [
60
63
  /* @__PURE__ */ jsx("b", { children: "Warning: " }),
61
64
  "Only 1:1 mapping is allowed at this time."
62
65
  ] })
63
66
  ] }),
64
- /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(ServiceMappingComponent, {}) })
67
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(ServiceMappingComponent, {}) })
65
68
  ] }) }),
66
- /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/settings", title: "Configuration", children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, direction: "column", children: [
67
- /* @__PURE__ */ jsxs(Grid, { item: true, children: [
68
- /* @__PURE__ */ jsx(Typography, { variant: "h4", children: "Plugin configuration" }),
69
- /* @__PURE__ */ jsx(Typography, { variant: "body1", children: "Configure your PagerDuty plugin configuration here" })
70
- ] }),
69
+ /* @__PURE__ */ jsx(TabbedLayout.Route, { path: "/settings", title: "Configuration", children: /* @__PURE__ */ jsxs(Fragment, { children: [
70
+ /* @__PURE__ */ jsx(Typography, { variant: "h4", children: "Plugin configuration" }),
71
+ /* @__PURE__ */ jsx(Typography, { children: "Configure your PagerDuty plugin configuration here" }),
71
72
  /* @__PURE__ */ jsxs(
72
73
  Card,
73
74
  {
74
75
  title: "Service dependency synchronization preferences",
75
- style: { padding: "10px", paddingLeft: "15px", width: "50%" },
76
+ className: cardStyles,
76
77
  children: [
77
- /* @__PURE__ */ jsxs(Fragment, { children: [
78
- /* @__PURE__ */ jsx(Typography, { variant: "h6", children: "Service dependency synchronization strategy" }),
79
- /* @__PURE__ */ jsx(Typography, { variant: "body1", children: "Select the main source of truth for your service dependencies" }),
80
- /* @__PURE__ */ jsxs(
81
- RadioGroup,
78
+ /* @__PURE__ */ jsx(Typography, { variant: "h6", children: "Service dependency synchronization strategy" }),
79
+ /* @__PURE__ */ jsxs(
80
+ RadioGroup,
81
+ {
82
+ label: "Select the main source of truth for your service dependencies",
83
+ value: selectedServiceDependencyStrategy,
84
+ onChange: (value) => handleChange(value),
85
+ children: [
86
+ /* @__PURE__ */ jsx(Radio, { value: "backstage" /* backstage */, children: "Backstage" }),
87
+ /* @__PURE__ */ jsx(Radio, { value: "pagerduty" /* pagerduty */, children: "PagerDuty" }),
88
+ /* @__PURE__ */ jsx(Radio, { value: "both" /* both */, children: "Both" }),
89
+ /* @__PURE__ */ jsx(Radio, { value: "disabled" /* disabled */, children: "Disabled" })
90
+ ]
91
+ }
92
+ ),
93
+ /* @__PURE__ */ jsx("div", { className: textContainerStyles, children: /* @__PURE__ */ jsxs(Typography, { children: [
94
+ /* @__PURE__ */ jsx("b", { children: "Warning: " }),
95
+ "Changing this setting will affect how your service dependencies are synchronized and may cause data loss. Check the",
96
+ " ",
97
+ /* @__PURE__ */ jsx(
98
+ "a",
82
99
  {
83
- value: selectedServiceDependencyStrategy,
84
- onChange: handleChange,
85
- children: [
86
- /* @__PURE__ */ jsx(
87
- FormControlLabel,
88
- {
89
- value: "backstage",
90
- control: /* @__PURE__ */ jsx(Radio, {}),
91
- label: "Backstage"
92
- }
93
- ),
94
- /* @__PURE__ */ jsx(
95
- FormControlLabel,
96
- {
97
- value: "pagerduty",
98
- control: /* @__PURE__ */ jsx(Radio, {}),
99
- label: "PagerDuty"
100
- }
101
- ),
102
- /* @__PURE__ */ jsx(
103
- FormControlLabel,
104
- {
105
- value: "both",
106
- control: /* @__PURE__ */ jsx(Radio, {}),
107
- label: "Both"
108
- }
109
- ),
110
- /* @__PURE__ */ jsx(
111
- FormControlLabel,
112
- {
113
- value: "disabled",
114
- control: /* @__PURE__ */ jsx(Radio, {}),
115
- label: "Disabled"
116
- }
117
- )
118
- ]
100
+ className: linkStyles,
101
+ href: "https://pagerduty.github.io/backstage-plugin-docs/index.html",
102
+ children: "documentation"
119
103
  }
120
- )
121
- ] }),
122
- /* @__PURE__ */ jsx("br", {}),
123
- /* @__PURE__ */ jsx("br", {}),
124
- /* @__PURE__ */ jsxs(Typography, { variant: "body1", children: [
125
- /* @__PURE__ */ jsx("b", { children: "Warning: " }),
126
- "Changing this setting will affect how your service dependencies are synchronized and may cause data loss. Check the ",
127
- /* @__PURE__ */ jsx("a", { style: { color: "cadetblue" }, href: "https://pagerduty.github.io/backstage-plugin-docs/index.html", children: " documentation " }),
128
- " for more information."
129
- ] })
104
+ ),
105
+ " ",
106
+ "for more information."
107
+ ] }) })
130
108
  ]
131
109
  }
132
110
  )
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutyPage/index.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport {\n Card,\n FormControlLabel,\n Grid,\n Radio,\n RadioGroup,\n Typography,\n} from \"@material-ui/core\";\nimport {\n Header,\n Page,\n Content,\n TabbedLayout,\n} from \"@backstage/core-components\";\nimport { ServiceMappingComponent } from \"./ServiceMappingComponent\";\nimport { useApi } from \"@backstage/core-plugin-api\";\nimport { pagerDutyApiRef } from \"../../api\";\nimport { NotFoundError } from \"@backstage/errors\";\n\nconst SERVICE_DEPENDENCY_SYNC_STRATEGY =\n \"settings::service-dependency-sync-strategy\";\n\n/** @public */\nexport const PagerDutyPage = () => {\n const pagerDutyApi = useApi(pagerDutyApiRef);\n const [\n selectedServiceDependencyStrategy,\n setSelectedServiceDependencyStrategy,\n ] = useState(\"disabled\");\n\n useEffect(() => {\n function fetchSetting() {\n pagerDutyApi\n .getSetting(SERVICE_DEPENDENCY_SYNC_STRATEGY)\n .then((result) => {\n if (result !== undefined) {\n setSelectedServiceDependencyStrategy(result.value);\n }\n })\n .catch((error) => {\n if (error instanceof NotFoundError) {\n // If the setting is not found, set the default value to \"disabled\"\n setSelectedServiceDependencyStrategy(\"disabled\");\n }\n });\n }\n\n fetchSetting();\n }, [pagerDutyApi]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const value = getSelectedValue((event.target as HTMLInputElement).value);\n\n setSelectedServiceDependencyStrategy(value);\n\n pagerDutyApi.storeSettings([\n {\n id: SERVICE_DEPENDENCY_SYNC_STRATEGY,\n value,\n },\n ]);\n };\n\n function getSelectedValue(\n value: string\n ): \"backstage\" | \"pagerduty\" | \"both\" | \"disabled\" {\n switch (value) {\n case \"backstage\":\n return \"backstage\";\n case \"pagerduty\":\n return \"pagerduty\";\n case \"both\":\n return \"both\";\n default:\n return \"disabled\";\n }\n }\n\n return (\n <Page themeId=\"home\">\n <Header title=\"PagerDuty\" subtitle=\"Advanced configurations\" />\n <Content>\n <TabbedLayout>\n <TabbedLayout.Route path=\"/service-mapping\" title=\"Service Mapping\">\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n {/* <Typography variant=\"h4\">Service to Entity mapping</Typography> */}\n <Typography variant=\"body1\">\n Easily map your existing PagerDuty services to entities in\n Backstage without the need to add anotations to all your\n projects.\n </Typography>\n <Typography variant=\"body1\">\n <b>Warning: </b>Only 1:1 mapping is allowed at this time.\n </Typography>\n </Grid>\n <Grid item>\n <ServiceMappingComponent />\n </Grid>\n </Grid>\n </TabbedLayout.Route>\n <TabbedLayout.Route path=\"/settings\" title=\"Configuration\">\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <Typography variant=\"h4\">Plugin configuration</Typography>\n <Typography variant=\"body1\">\n Configure your PagerDuty plugin configuration here\n </Typography>\n </Grid>\n <Card\n title=\"Service dependency synchronization preferences\"\n style={{ padding: \"10px\", paddingLeft: \"15px\", width: \"50%\" }}\n >\n <>\n <Typography variant=\"h6\">\n Service dependency synchronization strategy\n </Typography>\n <Typography variant=\"body1\">\n Select the main source of truth for your service dependencies\n </Typography>\n <RadioGroup\n value={selectedServiceDependencyStrategy}\n onChange={handleChange}\n >\n <FormControlLabel\n value=\"backstage\"\n control={<Radio />}\n label=\"Backstage\"\n />\n <FormControlLabel\n value=\"pagerduty\"\n control={<Radio />}\n label=\"PagerDuty\"\n />\n <FormControlLabel\n value=\"both\"\n control={<Radio />}\n label=\"Both\"\n />\n <FormControlLabel\n value=\"disabled\"\n control={<Radio />}\n label=\"Disabled\"\n />\n </RadioGroup>\n </>\n\n <br />\n <br />\n <Typography variant=\"body1\">\n <b>Warning: </b>Changing this setting will affect how your\n service dependencies are synchronized and may cause data loss.\n Check the <a style={{color: \"cadetblue\"}} href=\"https://pagerduty.github.io/backstage-plugin-docs/index.html\"> documentation </a> for more information.\n </Typography>\n </Card>\n </Grid>\n </TabbedLayout.Route>\n </TabbedLayout>\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutyPage/index.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { createStyles, makeStyles, Typography } from '@material-ui/core';\nimport { Card, Grid, RadioGroup, Radio } from '@backstage/ui';\nimport {\n Header,\n Page,\n Content,\n TabbedLayout,\n} from '@backstage/core-components';\nimport { ServiceMappingComponent } from './ServiceMappingComponent';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { pagerDutyApiRef } from '../../api';\nimport { NotFoundError } from '@backstage/errors';\nimport { BackstageTheme } from '@backstage/theme';\n\nenum StoreSettings {\n backstage = 'backstage',\n pagerduty = 'pagerduty',\n both = 'both',\n disabled = 'disabled',\n}\n\nconst SERVICE_DEPENDENCY_SYNC_STRATEGY =\n 'settings::service-dependency-sync-strategy';\n\nconst useStyles = makeStyles<BackstageTheme>(() =>\n createStyles({\n cardStyles: {\n padding: '15px',\n marginTop: '16px',\n },\n textContainerStyles: {\n marginTop: '16px',\n },\n linkStyles: {\n color: 'cadetblue',\n },\n }),\n);\n\n/** @public */\nexport const PagerDutyPage = () => {\n const { cardStyles, textContainerStyles, linkStyles } = useStyles();\n const pagerDutyApi = useApi(pagerDutyApiRef);\n const [\n selectedServiceDependencyStrategy,\n setSelectedServiceDependencyStrategy,\n ] = useState('disabled');\n\n useEffect(() => {\n function fetchSetting() {\n pagerDutyApi\n .getSetting(SERVICE_DEPENDENCY_SYNC_STRATEGY)\n .then(result => {\n if (result !== undefined) {\n setSelectedServiceDependencyStrategy(result.value);\n }\n })\n .catch(error => {\n if (error instanceof NotFoundError) {\n // If the setting is not found, set the default value to \"disabled\"\n setSelectedServiceDependencyStrategy('disabled');\n }\n });\n }\n\n fetchSetting();\n }, [pagerDutyApi]);\n\n const handleChange = (value: StoreSettings) => {\n setSelectedServiceDependencyStrategy(value);\n pagerDutyApi.storeSettings([\n {\n id: SERVICE_DEPENDENCY_SYNC_STRATEGY,\n value,\n },\n ]);\n };\n\n return (\n <Page themeId=\"home\">\n <Header title=\"PagerDuty\" subtitle=\"Advanced configurations\" />\n <Content>\n <TabbedLayout>\n <TabbedLayout.Route path=\"/service-mapping\" title=\"Service Mapping\">\n <Grid.Root gap=\"3\" columns=\"1\">\n <Grid.Item>\n <Typography>\n Easily map your existing PagerDuty services to entities in\n Backstage without the need to add anotations to all your\n projects.\n </Typography>\n <Typography>\n <b>Warning: </b>Only 1:1 mapping is allowed at this time.\n </Typography>\n </Grid.Item>\n <Grid.Item>\n <ServiceMappingComponent />\n </Grid.Item>\n </Grid.Root>\n </TabbedLayout.Route>\n <TabbedLayout.Route path=\"/settings\" title=\"Configuration\">\n <>\n <Typography variant=\"h4\">Plugin configuration</Typography>\n <Typography>\n Configure your PagerDuty plugin configuration here\n </Typography>\n\n <Card\n title=\"Service dependency synchronization preferences\"\n className={cardStyles}\n >\n <Typography variant=\"h6\">\n Service dependency synchronization strategy\n </Typography>\n <RadioGroup\n label=\"Select the main source of truth for your service dependencies\"\n value={selectedServiceDependencyStrategy}\n onChange={value => handleChange(value as StoreSettings)}\n >\n <Radio value={StoreSettings.backstage}>Backstage</Radio>\n <Radio value={StoreSettings.pagerduty}>PagerDuty</Radio>\n <Radio value={StoreSettings.both}>Both</Radio>\n <Radio value={StoreSettings.disabled}>Disabled</Radio>\n </RadioGroup>\n\n <div className={textContainerStyles}>\n <Typography>\n <b>Warning: </b>Changing this setting will affect how your\n service dependencies are synchronized and may cause data\n loss. Check the{' '}\n <a\n className={linkStyles}\n href=\"https://pagerduty.github.io/backstage-plugin-docs/index.html\"\n >\n documentation\n </a>{' '}\n for more information.\n </Typography>\n </div>\n </Card>\n </>\n </TabbedLayout.Route>\n </TabbedLayout>\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useCallback } from 'react';
3
- import { Card, CardHeader, Grid, Typography, Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core';
3
+ import { CardHeader, Typography, Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core';
4
+ import { Card, Flex, Grid } from '@backstage/ui';
4
5
  import useAsync from 'react-use/lib/useAsync';
5
6
  import { pagerDutyApiRef, UnauthorizedError } from '../../api/client.esm.js';
6
7
  import { MissingTokenError } from '../Errors/MissingTokenError.esm.js';
@@ -27,42 +28,20 @@ const useStyles = makeStyles(
27
28
  fontWeight: 500,
28
29
  color: theme.palette.type === "light" ? "rgba(0, 0, 0, 0.54)" : "rgba(255, 255, 255, 0.7)"
29
30
  },
30
- headerStyle: {
31
- marginBottom: "0px",
32
- fontSize: "0px"
33
- },
34
- overviewHeaderContainerStyle: {
35
- display: "flex",
36
- margin: "0px",
37
- padding: "15px",
38
- marginBottom: "5px"
39
- },
40
- headerWithSubheaderContainerStyle: {
41
- display: "flex",
42
- alignItems: "center"
43
- },
44
31
  subheaderTextStyle: {
45
32
  fontSize: "10px",
46
- marginLeft: "5px"
33
+ paddingLeft: "5px",
34
+ paddingTop: "3px"
47
35
  },
48
- overviewCardsContainerStyle: {
49
- display: "flex",
50
- margin: "15px",
51
- marginTop: "-15px"
36
+ accordionStyle: {
37
+ background: "transparent"
52
38
  },
53
- onCallAccordionDetails: {
54
- display: "flex",
55
- width: "100%",
56
- marginTop: "-25px",
57
- marginBottom: "-15px"
39
+ gridRootStyle: {
40
+ width: "100%"
58
41
  },
59
- incidentMetricsContainerStyle: {
60
- display: "flex",
61
- height: "100%",
62
- justifyContent: "center",
63
- columnSpan: "all",
64
- margin: "15px",
65
- marginTop: "-15px"
42
+ cardStyles: {
43
+ paddingLeft: "10px",
44
+ paddingRight: "10px"
66
45
  }
67
46
  })
68
47
  );
@@ -123,13 +102,12 @@ const PagerDutySmallCard = (props) => {
123
102
  if (loading) {
124
103
  return /* @__PURE__ */ jsx(BasicCard, { children: /* @__PURE__ */ jsx(Progress, {}) });
125
104
  }
126
- return /* @__PURE__ */ jsxs(Card, { "data-testid": "pagerduty-card", children: [
105
+ return /* @__PURE__ */ jsxs(Card, { "data-testid": "pagerduty-card", className: classes.cardStyles, children: [
127
106
  /* @__PURE__ */ jsx(
128
107
  CardHeader,
129
108
  {
130
- className: classes.headerStyle,
131
109
  title: theme.palette.type === "dark" ? /* @__PURE__ */ jsx("img", { src: PDWhiteImage, alt: "PagerDuty", height: "25" }) : /* @__PURE__ */ jsx("img", { src: PDGreenImage, alt: "PagerDuty", height: "25" }),
132
- action: !readOnly && props.integrationKey ? /* @__PURE__ */ jsxs("div", { children: [
110
+ action: !readOnly && props.integrationKey ? /* @__PURE__ */ jsxs(Flex, { children: [
133
111
  /* @__PURE__ */ jsx(
134
112
  TriggerIncidentButton,
135
113
  {
@@ -144,13 +122,21 @@ const PagerDutySmallCard = (props) => {
144
122
  ] }) : /* @__PURE__ */ jsx(OpenServiceButton, { compact: true, serviceUrl: service.url })
145
123
  }
146
124
  ),
147
- /* @__PURE__ */ jsxs(Grid, { item: true, md: 12, className: classes.overviewHeaderContainerStyle, children: [
148
- /* @__PURE__ */ jsx(Grid, { item: true, md: 6, children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "STATUS" }) }),
149
- /* @__PURE__ */ jsx(Grid, { item: true, md: 6, children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "STANDARDS" }) })
125
+ /* @__PURE__ */ jsxs(Grid.Root, { columns: "2", gap: "1", pl: "1", pr: "1", children: [
126
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "STATUS" }) }),
127
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "STANDARDS" }) })
150
128
  ] }),
151
- /* @__PURE__ */ jsxs(Grid, { item: true, md: 12, className: classes.overviewCardsContainerStyle, children: [
152
- /* @__PURE__ */ jsx(Grid, { item: true, md: 6, children: /* @__PURE__ */ jsx(StatusCard, { compact: true, serviceId: service.id, refreshStatus, account: service.account }) }),
153
- /* @__PURE__ */ jsx(Grid, { item: true, md: 6, children: /* @__PURE__ */ jsx(
129
+ /* @__PURE__ */ jsxs(Grid.Root, { columns: "2", gap: "1", pl: "1", pr: "1", children: [
130
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(
131
+ StatusCard,
132
+ {
133
+ compact: true,
134
+ serviceId: service.id,
135
+ refreshStatus,
136
+ account: service.account
137
+ }
138
+ ) }),
139
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(
154
140
  ServiceStandardsCard,
155
141
  {
156
142
  compact: true,
@@ -160,27 +146,29 @@ const PagerDutySmallCard = (props) => {
160
146
  }
161
147
  ) })
162
148
  ] }),
163
- disableInsights !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
164
- /* @__PURE__ */ jsx(
149
+ disableInsights !== true ? /* @__PURE__ */ jsxs(Accordion, { className: classes.accordionStyle, children: [
150
+ /* @__PURE__ */ jsxs(
165
151
  AccordionSummary,
166
152
  {
167
153
  expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
168
154
  "aria-controls": "panel1a-content",
169
155
  id: "panel1a-header",
170
- children: /* @__PURE__ */ jsxs("span", { className: classes.headerWithSubheaderContainerStyle, children: [
156
+ children: [
171
157
  /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "INSIGHTS" }),
172
158
  /* @__PURE__ */ jsx(Typography, { className: classes.subheaderTextStyle, children: "(last 30 days)" })
173
- ] })
159
+ ]
174
160
  }
175
161
  ),
176
162
  /* @__PURE__ */ jsx(AccordionDetails, { children: /* @__PURE__ */ jsxs(
177
- Grid,
163
+ Grid.Root,
178
164
  {
179
- item: true,
180
- md: 12,
181
- className: classes.incidentMetricsContainerStyle,
165
+ columns: "3",
166
+ gap: "1",
167
+ pl: "1",
168
+ pr: "1",
169
+ className: classes.gridRootStyle,
182
170
  children: [
183
- /* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
171
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(
184
172
  IncidentCounterCard,
185
173
  {
186
174
  compact: true,
@@ -189,7 +177,7 @@ const PagerDutySmallCard = (props) => {
189
177
  color: theme.palette.textSubtle
190
178
  }
191
179
  ) }),
192
- /* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
180
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(
193
181
  IncidentCounterCard,
194
182
  {
195
183
  compact: true,
@@ -198,7 +186,7 @@ const PagerDutySmallCard = (props) => {
198
186
  color: theme.palette.warning.main
199
187
  }
200
188
  ) }),
201
- /* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
189
+ /* @__PURE__ */ jsx(Grid.Item, { children: /* @__PURE__ */ jsx(
202
190
  IncidentCounterCard,
203
191
  {
204
192
  compact: true,
@@ -211,7 +199,7 @@ const PagerDutySmallCard = (props) => {
211
199
  }
212
200
  ) })
213
201
  ] }) : /* @__PURE__ */ jsx(Fragment, {}),
214
- disableOnCall !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
202
+ disableOnCall !== true ? /* @__PURE__ */ jsxs(Accordion, { className: classes.accordionStyle, children: [
215
203
  /* @__PURE__ */ jsx(
216
204
  AccordionSummary,
217
205
  {
@@ -221,7 +209,7 @@ const PagerDutySmallCard = (props) => {
221
209
  children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "ON CALL" })
222
210
  }
223
211
  ),
224
- /* @__PURE__ */ jsx(AccordionDetails, { className: classes.onCallAccordionDetails, children: /* @__PURE__ */ jsx(
212
+ /* @__PURE__ */ jsx(AccordionDetails, { children: /* @__PURE__ */ jsx(
225
213
  EscalationPolicy,
226
214
  {
227
215
  "data-testid": "oncall-card",
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutySmallCard/index.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { ReactNode, useCallback, useState } from \"react\";\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Card,\n CardHeader,\n Grid,\n Typography,\n} from \"@material-ui/core\";\nimport useAsync from \"react-use/lib/useAsync\";\nimport { pagerDutyApiRef, UnauthorizedError } from \"../../api\";\nimport { MissingTokenError, ServiceNotFoundError } from \"../Errors\";\nimport PDGreenImage from \"../../assets/PD-Green.svg\";\nimport PDWhiteImage from \"../../assets/PD-White.svg\";\n\nimport { useApi } from \"@backstage/core-plugin-api\";\nimport { NotFoundError } from \"@backstage/errors\";\nimport { Progress, InfoCard } from \"@backstage/core-components\";\nimport { PagerDutyEntity } from \"../../types\";\nimport { ForbiddenError } from \"../Errors/ForbiddenError\";\nimport {\n InsightsCard,\n OpenServiceButton,\n ServiceStandardsCard,\n StatusCard,\n TriggerIncidentButton,\n} from \"../PagerDutyCardCommon\";\nimport { createStyles, makeStyles, useTheme } from \"@material-ui/core/styles\";\nimport { BackstageTheme } from \"@backstage/theme\";\nimport { PagerDutyCardServiceResponse } from \"../../api/types\";\nimport { EscalationPolicy } from \"../Escalation\";\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\n\nconst useStyles = makeStyles<BackstageTheme>((theme) =>\n createStyles({\n overviewHeaderTextStyle: {\n fontSize: \"14px\",\n fontWeight: 500,\n color:\n theme.palette.type === \"light\"\n ? \"rgba(0, 0, 0, 0.54)\"\n : \"rgba(255, 255, 255, 0.7)\",\n },\n headerStyle: {\n marginBottom: \"0px\",\n fontSize: \"0px\",\n },\n overviewHeaderContainerStyle: {\n display: \"flex\",\n margin: \"0px\",\n padding: \"15px\",\n marginBottom: \"5px\",\n },\n headerWithSubheaderContainerStyle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n subheaderTextStyle: {\n fontSize: \"10px\",\n marginLeft: \"5px\",\n },\n overviewCardsContainerStyle: {\n display: \"flex\",\n margin: \"15px\",\n marginTop: \"-15px\",\n },\n onCallAccordionDetails: {\n display: \"flex\",\n width: \"100%\",\n marginTop: \"-25px\",\n marginBottom: \"-15px\",\n },\n incidentMetricsContainerStyle: {\n display: \"flex\",\n height: \"100%\",\n justifyContent: \"center\",\n columnSpan: \"all\",\n margin: \"15px\",\n marginTop: \"-15px\",\n },\n })\n);\n\nconst BasicCard = ({ children }: { children: ReactNode }) => (\n <InfoCard title=\"PagerDuty\">{children}</InfoCard>\n);\n\n/** @public */\nexport type PagerDutyCardProps = PagerDutyEntity & {\n readOnly?: boolean;\n disableInsights?: boolean;\n disableOnCall?: boolean;\n};\n\n/** @public */\nexport const PagerDutySmallCard = (props: PagerDutyCardProps) => {\n const classes = useStyles();\n\n const theme = useTheme();\n const { readOnly, disableInsights, disableOnCall } = props;\n const api = useApi(pagerDutyApiRef);\n const [refreshStatus, setRefreshStatus] = useState<boolean>(false);\n\n const handleRefresh = useCallback(() => {\n setRefreshStatus((x) => !x);\n }, []);\n\n const {\n value: service,\n loading,\n error,\n } = useAsync(async () => {\n const { service: foundService } = await api.getServiceByPagerDutyEntity(\n props\n );\n\n const serviceStandards = await api.getServiceStandardsByServiceId(\n foundService.id,\n props.account\n );\n\n const serviceMetrics = await api.getServiceMetricsByServiceId(\n foundService.id,\n props.account\n );\n\n const result: PagerDutyCardServiceResponse = {\n id: foundService.id,\n name: foundService.name,\n account: props.account,\n url: foundService.html_url,\n policyId: foundService.escalation_policy.id,\n policyLink: foundService.escalation_policy.html_url as string,\n policyName: foundService.escalation_policy.name,\n status: foundService.status,\n standards:\n serviceStandards !== undefined ? serviceStandards.standards : undefined,\n metrics:\n serviceMetrics !== undefined ? serviceMetrics.metrics : undefined,\n };\n\n return result;\n }, [props]);\n\n if (error) {\n let errorNode: ReactNode;\n\n switch (error.constructor) {\n case UnauthorizedError:\n errorNode = <MissingTokenError />;\n break;\n case NotFoundError:\n errorNode = <ServiceNotFoundError />;\n break;\n default:\n errorNode = <ForbiddenError />;\n }\n\n return <BasicCard>{errorNode}</BasicCard>;\n }\n\n if (loading) {\n return (\n <BasicCard>\n <Progress />\n </BasicCard>\n );\n }\n\n return (\n <Card data-testid=\"pagerduty-card\">\n <CardHeader\n className={classes.headerStyle}\n title={\n theme.palette.type === \"dark\" ? (\n <img src={PDWhiteImage} alt=\"PagerDuty\" height=\"25\" />\n ) : (\n <img src={PDGreenImage} alt=\"PagerDuty\" height=\"25\" />\n )\n }\n action={\n !readOnly && props.integrationKey ? (\n <div>\n <TriggerIncidentButton\n compact\n data-testid=\"trigger-incident-button\"\n integrationKey={props.integrationKey}\n entityName={props.name}\n handleRefresh={handleRefresh}\n />\n <OpenServiceButton compact serviceUrl={service!.url} />\n </div>\n ) : (\n <OpenServiceButton compact serviceUrl={service!.url} />\n )\n }\n />\n <Grid item md={12} className={classes.overviewHeaderContainerStyle}>\n <Grid item md={6}>\n <Typography className={classes.overviewHeaderTextStyle}>\n STATUS\n </Typography>\n </Grid>\n <Grid item md={6}>\n <Typography className={classes.overviewHeaderTextStyle}>\n STANDARDS\n </Typography>\n </Grid>\n </Grid>\n\n <Grid item md={12} className={classes.overviewCardsContainerStyle}>\n <Grid item md={6}>\n <StatusCard compact serviceId={service!.id} refreshStatus={refreshStatus} account={service!.account} />\n </Grid>\n <Grid item md={6}>\n <ServiceStandardsCard\n compact\n total={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.total\n : undefined\n }\n completed={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.passing\n : undefined\n }\n standards={\n service?.standards !== undefined\n ? service?.standards?.standards\n : undefined\n }\n />\n </Grid>\n </Grid>\n {disableInsights !== true ? (\n <Accordion>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <span className={classes.headerWithSubheaderContainerStyle}>\n <Typography className={classes.overviewHeaderTextStyle}>\n INSIGHTS\n </Typography>\n <Typography className={classes.subheaderTextStyle}>\n (last 30 days)\n </Typography>\n </span>\n </AccordionSummary>\n <AccordionDetails>\n <Grid\n item\n md={12}\n className={classes.incidentMetricsContainerStyle}\n >\n <Grid item md={4}>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_interruptions\n : undefined\n }\n label=\"interruptions\"\n color={theme.palette.textSubtle}\n />\n </Grid>\n <Grid item md={4}>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_high_urgency_incidents\n : undefined\n }\n label=\"high urgency\"\n color={theme.palette.warning.main}\n />\n </Grid>\n <Grid item md={4}>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined &&\n service?.metrics?.length > 0\n ? service?.metrics[0].total_incident_count\n : undefined\n }\n label=\"incidents\"\n color={theme.palette.error.main}\n />\n </Grid>\n </Grid>\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n\n {disableOnCall !== true ? (\n <Accordion>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography className={classes.overviewHeaderTextStyle}>\n ON CALL\n </Typography>\n </AccordionSummary>\n <AccordionDetails className={classes.onCallAccordionDetails}>\n <EscalationPolicy\n data-testid=\"oncall-card\"\n policyId={service!.policyId}\n policyUrl={service!.policyLink}\n policyName={service!.policyName}\n account={service!.account}\n />\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n </Card>\n );\n};\n"],"names":["InsightsCard"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAkDA,MAAM,SAAA,GAAY,UAAA;AAAA,EAA2B,CAAC,UAC5C,YAAA,CAAa;AAAA,IACX,uBAAA,EAAyB;AAAA,MACvB,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY,GAAA;AAAA,MACZ,KAAA,EACE,KAAA,CAAM,OAAA,CAAQ,IAAA,KAAS,UACnB,qBAAA,GACA;AAAA,KACR;AAAA,IACA,WAAA,EAAa;AAAA,MACX,YAAA,EAAc,KAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,4BAAA,EAA8B;AAAA,MAC5B,OAAA,EAAS,MAAA;AAAA,MACT,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS,MAAA;AAAA,MACT,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,iCAAA,EAAmC;AAAA,MACjC,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACd;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,QAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAY;AAAA,KACd;AAAA,IACA,2BAAA,EAA6B;AAAA,MAC3B,OAAA,EAAS,MAAA;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,SAAA,EAAW;AAAA,KACb;AAAA,IACA,sBAAA,EAAwB;AAAA,MACtB,OAAA,EAAS,MAAA;AAAA,MACT,KAAA,EAAO,MAAA;AAAA,MACP,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,6BAAA,EAA+B;AAAA,MAC7B,OAAA,EAAS,MAAA;AAAA,MACT,MAAA,EAAQ,MAAA;AAAA,MACR,cAAA,EAAgB,QAAA;AAAA,MAChB,UAAA,EAAY,KAAA;AAAA,MACZ,MAAA,EAAQ,MAAA;AAAA,MACR,SAAA,EAAW;AAAA;AACb,GACD;AACH,CAAA;AAEA,MAAM,SAAA,GAAY,CAAC,EAAE,QAAA,uBACnB,GAAA,CAAC,QAAA,EAAA,EAAS,KAAA,EAAM,WAAA,EAAa,QAAA,EAAS,CAAA;AAWjC,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAA8B;AAC/D,EAAA,MAAM,UAAU,SAAA,EAAU;AAE1B,EAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAiB,aAAA,EAAc,GAAI,KAAA;AACrD,EAAA,MAAM,GAAA,GAAM,OAAO,eAAe,CAAA;AAClC,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEjE,EAAA,MAAM,aAAA,GAAgB,YAAY,MAAM;AACtC,IAAA,gBAAA,CAAiB,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,EAC5B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,OAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GACF,GAAI,SAAS,YAAY;AACvB,IAAA,MAAM,EAAE,OAAA,EAAS,YAAA,EAAa,GAAI,MAAM,GAAA,CAAI,2BAAA;AAAA,MAC1C;AAAA,KACF;AAEA,IAAA,MAAM,gBAAA,GAAmB,MAAM,GAAA,CAAI,8BAAA;AAAA,MACjC,YAAA,CAAa,EAAA;AAAA,MACb,KAAA,CAAM;AAAA,KACR;AAEA,IAAA,MAAM,cAAA,GAAiB,MAAM,GAAA,CAAI,4BAAA;AAAA,MAC/B,YAAA,CAAa,EAAA;AAAA,MACb,KAAA,CAAM;AAAA,KACR;AAEA,IAAA,MAAM,MAAA,GAAuC;AAAA,MAC3C,IAAI,YAAA,CAAa,EAAA;AAAA,MACjB,MAAM,YAAA,CAAa,IAAA;AAAA,MACnB,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,KAAK,YAAA,CAAa,QAAA;AAAA,MAClB,QAAA,EAAU,aAAa,iBAAA,CAAkB,EAAA;AAAA,MACzC,UAAA,EAAY,aAAa,iBAAA,CAAkB,QAAA;AAAA,MAC3C,UAAA,EAAY,aAAa,iBAAA,CAAkB,IAAA;AAAA,MAC3C,QAAQ,YAAA,CAAa,MAAA;AAAA,MACrB,SAAA,EACE,gBAAA,KAAqB,MAAA,GAAY,gBAAA,CAAiB,SAAA,GAAY,MAAA;AAAA,MAChE,OAAA,EACE,cAAA,KAAmB,MAAA,GAAY,cAAA,CAAe,OAAA,GAAU;AAAA,KAC5D;AAEA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,IAAI,SAAA;AAEJ,IAAA,QAAQ,MAAM,WAAA;AAAa,MACzB,KAAK,iBAAA;AACH,QAAA,SAAA,uBAAa,iBAAA,EAAA,EAAkB,CAAA;AAC/B,QAAA;AAAA,MACF,KAAK,aAAA;AACH,QAAA,SAAA,uBAAa,oBAAA,EAAA,EAAqB,CAAA;AAClC,QAAA;AAAA,MACF;AACE,QAAA,SAAA,uBAAa,cAAA,EAAA,EAAe,CAAA;AAAA;AAGhC,IAAA,uBAAO,GAAA,CAAC,aAAW,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,EAC/B;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,CAAA,EACZ,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,aAAA,EAAY,gBAAA,EAChB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAA,CAAQ,WAAA;AAAA,QACnB,KAAA,EACE,MAAM,OAAA,CAAQ,IAAA,KAAS,yBACrB,GAAA,CAAC,KAAA,EAAA,EAAI,KAAK,YAAA,EAAc,GAAA,EAAI,aAAY,MAAA,EAAO,IAAA,EAAK,oBAEpD,GAAA,CAAC,KAAA,EAAA,EAAI,KAAK,YAAA,EAAc,GAAA,EAAI,WAAA,EAAY,MAAA,EAAO,IAAA,EAAK,CAAA;AAAA,QAGxD,QACE,CAAC,QAAA,IAAY,KAAA,CAAM,cAAA,wBAChB,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,qBAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAO,IAAA;AAAA,cACP,aAAA,EAAY,yBAAA;AAAA,cACZ,gBAAgB,KAAA,CAAM,cAAA;AAAA,cACtB,YAAY,KAAA,CAAM,IAAA;AAAA,cAClB;AAAA;AAAA,WACF;AAAA,8BACC,iBAAA,EAAA,EAAkB,OAAA,EAAO,IAAA,EAAC,UAAA,EAAY,QAAS,GAAA,EAAK;AAAA,SAAA,EACvD,oBAEA,GAAA,CAAC,iBAAA,EAAA,EAAkB,SAAO,IAAA,EAAC,UAAA,EAAY,QAAS,GAAA,EAAK;AAAA;AAAA,KAG3D;AAAA,oBACA,IAAA,CAAC,QAAK,IAAA,EAAI,IAAA,EAAC,IAAI,EAAA,EAAI,SAAA,EAAW,QAAQ,4BAAA,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,uBAAA,EAAyB,QAAA,EAAA,QAAA,EAExD,CAAA,EACF,CAAA;AAAA,sBACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,CAAA,EACb,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,uBAAA,EAAyB,QAAA,EAAA,WAAA,EAExD,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,QAAK,IAAA,EAAI,IAAA,EAAC,IAAI,EAAA,EAAI,SAAA,EAAW,QAAQ,2BAAA,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,CAAA,EACb,8BAAC,UAAA,EAAA,EAAW,OAAA,EAAO,IAAA,EAAC,SAAA,EAAW,QAAS,EAAA,EAAI,aAAA,EAA8B,OAAA,EAAS,OAAA,CAAS,SAAS,CAAA,EACvG,CAAA;AAAA,sBACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,IAAI,CAAA,EACb,QAAA,kBAAA,GAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAO,IAAA;AAAA,UACP,KAAA,EACE,SAAS,SAAA,EAAW,KAAA,KAAU,SAC1B,OAAA,EAAS,SAAA,EAAW,OAAO,KAAA,GAC3B,MAAA;AAAA,UAEN,SAAA,EACE,SAAS,SAAA,EAAW,KAAA,KAAU,SAC1B,OAAA,EAAS,SAAA,EAAW,OAAO,OAAA,GAC3B,MAAA;AAAA,UAEN,WACE,OAAA,EAAS,SAAA,KAAc,MAAA,GACnB,OAAA,EAAS,WAAW,SAAA,GACpB;AAAA;AAAA,OAER,EACF;AAAA,KAAA,EACF,CAAA;AAAA,IACC,eAAA,KAAoB,IAAA,mBACnB,IAAA,CAAC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,UAAA,sBAAa,cAAA,EAAA,EAAe,CAAA;AAAA,UAC5B,eAAA,EAAc,iBAAA;AAAA,UACd,EAAA,EAAG,gBAAA;AAAA,UAEH,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,OAAA,CAAQ,iCAAA,EACvB,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,uBAAA,EAAyB,QAAA,EAAA,UAAA,EAExD,CAAA;AAAA,4BACA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,oBAAoB,QAAA,EAAA,gBAAA,EAEnD;AAAA,WAAA,EACF;AAAA;AAAA,OACF;AAAA,0BACC,gBAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAI,IAAA;AAAA,UACJ,EAAA,EAAI,EAAA;AAAA,UACJ,WAAW,OAAA,CAAQ,6BAAA;AAAA,UAEnB,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,CAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAACA,mBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAO,IAAA;AAAA,gBACP,KAAA,EACE,OAAA,EAAS,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAA,GACvD,OAAA,EAAS,OAAA,CAAQ,CAAC,CAAA,CAAE,mBAAA,GACpB,MAAA;AAAA,gBAEN,KAAA,EAAM,eAAA;AAAA,gBACN,KAAA,EAAO,MAAM,OAAA,CAAQ;AAAA;AAAA,aACvB,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,IAAI,CAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAACA,mBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAO,IAAA;AAAA,gBACP,KAAA,EACE,OAAA,EAAS,OAAA,KAAY,MAAA,IAAa,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAA,GACvD,OAAA,EAAS,OAAA,CAAQ,CAAC,CAAA,CAAE,4BAAA,GACpB,MAAA;AAAA,gBAEN,KAAA,EAAM,cAAA;AAAA,gBACN,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,CAAQ;AAAA;AAAA,aAC/B,EACF,CAAA;AAAA,4BACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,IAAI,CAAA,EACb,QAAA,kBAAA,GAAA;AAAA,cAACA,mBAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAO,IAAA;AAAA,gBACP,KAAA,EACE,OAAA,EAAS,OAAA,KAAY,MAAA,IACrB,OAAA,EAAS,OAAA,EAAS,MAAA,GAAS,CAAA,GACvB,OAAA,EAAS,OAAA,CAAQ,CAAC,CAAA,CAAE,oBAAA,GACpB,MAAA;AAAA,gBAEN,KAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM;AAAA;AAAA,aAC7B,EACF;AAAA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,oBAEA,GAAA,CAAA,QAAA,EAAA,EAAE,CAAA;AAAA,IAGH,aAAA,KAAkB,IAAA,mBACjB,IAAA,CAAC,SAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,UAAA,sBAAa,cAAA,EAAA,EAAe,CAAA;AAAA,UAC5B,eAAA,EAAc,iBAAA;AAAA,UACd,EAAA,EAAG,gBAAA;AAAA,UAEH,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,OAAA,CAAQ,yBAAyB,QAAA,EAAA,SAAA,EAExD;AAAA;AAAA,OACF;AAAA,sBACA,GAAA,CAAC,gBAAA,EAAA,EAAiB,SAAA,EAAW,OAAA,CAAQ,sBAAA,EACnC,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAY,aAAA;AAAA,UACZ,UAAU,OAAA,CAAS,QAAA;AAAA,UACnB,WAAW,OAAA,CAAS,UAAA;AAAA,UACpB,YAAY,OAAA,CAAS,UAAA;AAAA,UACrB,SAAS,OAAA,CAAS;AAAA;AAAA,OACpB,EACF;AAAA,KAAA,EACF,oBAEA,GAAA,CAAA,QAAA,EAAA,EAAE;AAAA,GAAA,EAEN,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutySmallCard/index.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { ReactNode, useCallback, useState } from 'react';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n CardHeader,\n Typography,\n} from '@material-ui/core';\nimport { Card, Flex, Grid } from '@backstage/ui';\nimport useAsync from 'react-use/lib/useAsync';\nimport { pagerDutyApiRef, UnauthorizedError } from '../../api';\nimport { MissingTokenError, ServiceNotFoundError } from '../Errors';\nimport PDGreenImage from '../../assets/PD-Green.svg';\nimport PDWhiteImage from '../../assets/PD-White.svg';\n\nimport { useApi } from '@backstage/core-plugin-api';\nimport { NotFoundError } from '@backstage/errors';\nimport { Progress, InfoCard } from '@backstage/core-components';\nimport { PagerDutyEntity } from '../../types';\nimport { ForbiddenError } from '../Errors/ForbiddenError';\nimport {\n InsightsCard,\n OpenServiceButton,\n ServiceStandardsCard,\n StatusCard,\n TriggerIncidentButton,\n} from '../PagerDutyCardCommon';\nimport { createStyles, makeStyles, useTheme } from '@material-ui/core/styles';\nimport { BackstageTheme } from '@backstage/theme';\nimport { PagerDutyCardServiceResponse } from '../../api/types';\nimport { EscalationPolicy } from '../Escalation';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\n\nconst useStyles = makeStyles<BackstageTheme>(theme =>\n createStyles({\n overviewHeaderTextStyle: {\n fontSize: '14px',\n fontWeight: 500,\n color:\n theme.palette.type === 'light'\n ? 'rgba(0, 0, 0, 0.54)'\n : 'rgba(255, 255, 255, 0.7)',\n },\n subheaderTextStyle: {\n fontSize: '10px',\n paddingLeft: '5px',\n paddingTop: '3px',\n },\n accordionStyle: {\n background: 'transparent',\n },\n gridRootStyle: {\n width: '100%',\n },\n cardStyles: {\n paddingLeft: '10px',\n paddingRight: '10px',\n },\n }),\n);\n\nconst BasicCard = ({ children }: { children: ReactNode }) => (\n <InfoCard title=\"PagerDuty\">{children}</InfoCard>\n);\n\n/** @public */\nexport type PagerDutyCardProps = PagerDutyEntity & {\n readOnly?: boolean;\n disableInsights?: boolean;\n disableOnCall?: boolean;\n};\n\n/** @public */\nexport const PagerDutySmallCard = (props: PagerDutyCardProps) => {\n const classes = useStyles();\n\n const theme = useTheme();\n const { readOnly, disableInsights, disableOnCall } = props;\n const api = useApi(pagerDutyApiRef);\n const [refreshStatus, setRefreshStatus] = useState<boolean>(false);\n\n const handleRefresh = useCallback(() => {\n setRefreshStatus(x => !x);\n }, []);\n\n const {\n value: service,\n loading,\n error,\n } = useAsync(async () => {\n const { service: foundService } = await api.getServiceByPagerDutyEntity(\n props,\n );\n\n const serviceStandards = await api.getServiceStandardsByServiceId(\n foundService.id,\n props.account,\n );\n\n const serviceMetrics = await api.getServiceMetricsByServiceId(\n foundService.id,\n props.account,\n );\n\n const result: PagerDutyCardServiceResponse = {\n id: foundService.id,\n name: foundService.name,\n account: props.account,\n url: foundService.html_url,\n policyId: foundService.escalation_policy.id,\n policyLink: foundService.escalation_policy.html_url as string,\n policyName: foundService.escalation_policy.name,\n status: foundService.status,\n standards:\n serviceStandards !== undefined ? serviceStandards.standards : undefined,\n metrics:\n serviceMetrics !== undefined ? serviceMetrics.metrics : undefined,\n };\n\n return result;\n }, [props]);\n\n if (error) {\n let errorNode: ReactNode;\n\n switch (error.constructor) {\n case UnauthorizedError:\n errorNode = <MissingTokenError />;\n break;\n case NotFoundError:\n errorNode = <ServiceNotFoundError />;\n break;\n default:\n errorNode = <ForbiddenError />;\n }\n\n return <BasicCard>{errorNode}</BasicCard>;\n }\n\n if (loading) {\n return (\n <BasicCard>\n <Progress />\n </BasicCard>\n );\n }\n\n return (\n <Card data-testid=\"pagerduty-card\" className={classes.cardStyles}>\n <CardHeader\n title={\n theme.palette.type === 'dark' ? (\n <img src={PDWhiteImage} alt=\"PagerDuty\" height=\"25\" />\n ) : (\n <img src={PDGreenImage} alt=\"PagerDuty\" height=\"25\" />\n )\n }\n action={\n !readOnly && props.integrationKey ? (\n <Flex>\n <TriggerIncidentButton\n compact\n data-testid=\"trigger-incident-button\"\n integrationKey={props.integrationKey}\n entityName={props.name}\n handleRefresh={handleRefresh}\n />\n <OpenServiceButton compact serviceUrl={service!.url} />\n </Flex>\n ) : (\n <OpenServiceButton compact serviceUrl={service!.url} />\n )\n }\n />\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <Typography className={classes.overviewHeaderTextStyle}>\n STATUS\n </Typography>\n </Grid.Item>\n <Grid.Item>\n <Typography className={classes.overviewHeaderTextStyle}>\n STANDARDS\n </Typography>\n </Grid.Item>\n </Grid.Root>\n\n <Grid.Root columns=\"2\" gap=\"1\" pl=\"1\" pr=\"1\">\n <Grid.Item>\n <StatusCard\n compact\n serviceId={service!.id}\n refreshStatus={refreshStatus}\n account={service!.account}\n />\n </Grid.Item>\n <Grid.Item>\n <ServiceStandardsCard\n compact\n total={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.total\n : undefined\n }\n completed={\n service?.standards?.score !== undefined\n ? service?.standards?.score?.passing\n : undefined\n }\n standards={\n service?.standards !== undefined\n ? service?.standards?.standards\n : undefined\n }\n />\n </Grid.Item>\n </Grid.Root>\n\n {disableInsights !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography className={classes.overviewHeaderTextStyle}>\n INSIGHTS\n </Typography>\n <Typography className={classes.subheaderTextStyle}>\n (last 30 days)\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <Grid.Root\n columns=\"3\"\n gap=\"1\"\n pl=\"1\"\n pr=\"1\"\n className={classes.gridRootStyle}\n >\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_interruptions\n : undefined\n }\n label=\"interruptions\"\n color={theme.palette.textSubtle}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined && service.metrics.length > 0\n ? service?.metrics[0].total_high_urgency_incidents\n : undefined\n }\n label=\"high urgency\"\n color={theme.palette.warning.main}\n />\n </Grid.Item>\n <Grid.Item>\n <InsightsCard\n compact\n count={\n service?.metrics !== undefined &&\n service?.metrics?.length > 0\n ? service?.metrics[0].total_incident_count\n : undefined\n }\n label=\"incidents\"\n color={theme.palette.error.main}\n />\n </Grid.Item>\n </Grid.Root>\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n\n {disableOnCall !== true ? (\n <Accordion className={classes.accordionStyle}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Typography className={classes.overviewHeaderTextStyle}>\n ON CALL\n </Typography>\n </AccordionSummary>\n <AccordionDetails>\n <EscalationPolicy\n data-testid=\"oncall-card\"\n policyId={service!.policyId}\n policyUrl={service!.policyLink}\n policyName={service!.policyName}\n account={service!.account}\n />\n </AccordionDetails>\n </Accordion>\n ) : (\n <></>\n )}\n </Card>\n );\n};\n"],"names":["InsightsCard"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
- import { Dialog, DialogTitle, DialogContent, Typography, TextField, DialogActions, Button, CircularProgress } from '@material-ui/core';
3
+ import { useTheme, Dialog, DialogTitle, DialogContent, Typography, TextField, DialogActions, CircularProgress } from '@material-ui/core';
4
4
  import useAsyncFn from 'react-use/lib/useAsyncFn';
5
5
  import { pagerDutyApiRef } from '../../api/client.esm.js';
6
6
  import { Alert } from '@material-ui/lab';
7
7
  import { useApi, alertApiRef, identityApiRef } from '@backstage/core-plugin-api';
8
8
  import { parseEntityRef, DEFAULT_NAMESPACE } from '@backstage/catalog-model';
9
+ import { Button } from '@backstage/ui';
9
10
 
10
11
  const TriggerDialog = ({
11
12
  showDialog,
@@ -18,6 +19,7 @@ const TriggerDialog = ({
18
19
  const identityApi = useApi(identityApiRef);
19
20
  const api = useApi(pagerDutyApiRef);
20
21
  const [description, setDescription] = useState("");
22
+ const theme = useTheme();
21
23
  const [{ value, loading, error }, handleTriggerAlarm] = useAsyncFn(
22
24
  async (descriptions) => {
23
25
  const { userEntityRef } = await identityApi.getBackstageIdentity();
@@ -57,7 +59,8 @@ const TriggerDialog = ({
57
59
  }
58
60
  return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: showDialog, onClose: handleDialog, fullWidth: true, children: [
59
61
  /* @__PURE__ */ jsxs(DialogTitle, { children: [
60
- "This action will trigger an incident for ",
62
+ "This action will trigger an incident for",
63
+ " ",
61
64
  /* @__PURE__ */ jsxs("strong", { children: [
62
65
  '"',
63
66
  serviceName,
@@ -98,15 +101,17 @@ const TriggerDialog = ({
98
101
  {
99
102
  "data-testid": "trigger-button",
100
103
  id: "trigger",
101
- color: "secondary",
102
- disabled: !description || loading,
103
- variant: "contained",
104
+ style: {
105
+ background: !description || loading ? theme.palette.action.disabled : theme.palette.secondary.main
106
+ },
107
+ isDisabled: !description || loading,
108
+ variant: "primary",
104
109
  onClick: () => handleTriggerAlarm(description),
105
- endIcon: loading && /* @__PURE__ */ jsx(CircularProgress, { size: 16 }),
106
- children: "Trigger Incident"
110
+ iconEnd: loading ? /* @__PURE__ */ jsx(CircularProgress, { size: 16 }) : /* @__PURE__ */ jsx(Fragment, {}),
111
+ children: "TRIGGER INCIDENT"
107
112
  }
108
113
  ),
109
- /* @__PURE__ */ jsx(Button, { id: "close", color: "primary", onClick: handleDialog, children: "Close" })
114
+ /* @__PURE__ */ jsx(Button, { id: "close", onClick: handleDialog, children: "CLOSE" })
110
115
  ] })
111
116
  ] });
112
117
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerDialog.esm.js","sources":["../../../src/components/TriggerDialog/TriggerDialog.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport React, { useState, useEffect } from 'react';\nimport {\n Dialog,\n DialogTitle,\n TextField,\n DialogActions,\n Button,\n DialogContent,\n Typography,\n CircularProgress,\n} from '@material-ui/core';\nimport useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { pagerDutyApiRef } from '../../api';\nimport { Alert } from '@material-ui/lab';\nimport {\n useApi,\n alertApiRef,\n identityApiRef,\n} from '@backstage/core-plugin-api';\nimport { DEFAULT_NAMESPACE, parseEntityRef } from '@backstage/catalog-model';\n\ntype Props = {\n showDialog: boolean;\n handleDialog: () => void;\n onIncidentCreated?: () => void;\n serviceName: string;\n integrationKey: string;\n};\n\nexport const TriggerDialog = ({\n showDialog,\n handleDialog,\n onIncidentCreated: onIncidentCreated,\n serviceName,\n integrationKey,\n}: Props) => {\n const alertApi = useApi(alertApiRef);\n const identityApi = useApi(identityApiRef);\n const api = useApi(pagerDutyApiRef);\n const [description, setDescription] = useState<string>('');\n\n const [{ value, loading, error }, handleTriggerAlarm] = useAsyncFn(\n async (descriptions: string) => {\n const { userEntityRef } = await identityApi.getBackstageIdentity();\n const { name: userName } = parseEntityRef(userEntityRef, {\n defaultKind: 'User',\n defaultNamespace: DEFAULT_NAMESPACE,\n });\n return await api.triggerAlarm({\n integrationKey: integrationKey as string,\n source: window.location.toString(),\n description: descriptions,\n userName,\n });\n },\n );\n\n const descriptionChanged = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setDescription(event.target.value);\n };\n\n useEffect(() => {\n if (value) {\n (async () => {\n alertApi.post({\n message: `Alarm successfully triggered`,\n });\n\n // clear description state\n setDescription(\"\");\n\n handleDialog();\n\n // The pager duty API isn't always returning the newly created alarm immediately\n await new Promise(resolve => setTimeout(resolve, 1000));\n onIncidentCreated?.();\n })();\n }\n }, [value, alertApi, handleDialog, onIncidentCreated]);\n\n if (error) {\n alertApi.post({\n message: `Failed to trigger alarm. ${error.message}`,\n severity: 'error',\n });\n }\n\n return (\n <Dialog maxWidth=\"md\" open={showDialog} onClose={handleDialog} fullWidth>\n <DialogTitle>\n This action will trigger an incident for <strong>\"{serviceName}\"</strong>.\n </DialogTitle>\n <DialogContent>\n <Alert severity=\"info\">\n <Typography variant=\"body1\" align=\"justify\">\n If the issue you are seeing does not need urgent attention, please\n get in touch with the responsible team using their preferred\n communications channel. You can find information about the owner of\n this entity in the \"About\" card. If the issue is urgent, please\n don't hesitate to trigger the alert.\n </Typography>\n </Alert>\n <Typography\n variant=\"body1\"\n style={{ marginTop: '1em' }}\n gutterBottom\n align=\"justify\"\n >\n Please describe the problem you want to report. Be as descriptive as\n possible. Your signed in user and a reference to the current page will\n automatically be amended to the alarm so that the receiver can reach\n out to you if necessary.\n </Typography>\n <TextField\n inputProps={{ 'data-testid': 'trigger-input' }}\n id=\"description\"\n multiline\n fullWidth\n minRows={4}\n margin=\"normal\"\n label=\"Problem description\"\n variant=\"outlined\"\n onChange={descriptionChanged}\n />\n </DialogContent>\n <DialogActions>\n <Button\n data-testid=\"trigger-button\"\n id=\"trigger\"\n color=\"secondary\"\n disabled={!description || loading}\n variant=\"contained\"\n onClick={() => handleTriggerAlarm(description)}\n endIcon={loading && <CircularProgress size={16} />}\n >\n Trigger Incident\n </Button>\n <Button id=\"close\" color=\"primary\" onClick={handleDialog}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TriggerDialog.esm.js","sources":["../../../src/components/TriggerDialog/TriggerDialog.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { useState, useEffect } from 'react';\nimport {\n Dialog,\n DialogTitle,\n TextField,\n DialogActions,\n DialogContent,\n Typography,\n CircularProgress,\n useTheme,\n} from '@material-ui/core';\nimport useAsyncFn from 'react-use/lib/useAsyncFn';\nimport { pagerDutyApiRef } from '../../api';\nimport { Alert } from '@material-ui/lab';\nimport {\n useApi,\n alertApiRef,\n identityApiRef,\n} from '@backstage/core-plugin-api';\nimport { DEFAULT_NAMESPACE, parseEntityRef } from '@backstage/catalog-model';\nimport { Button } from '@backstage/ui';\n\ntype Props = {\n showDialog: boolean;\n handleDialog: () => void;\n onIncidentCreated?: () => void;\n serviceName: string;\n integrationKey: string;\n};\n\nexport const TriggerDialog = ({\n showDialog,\n handleDialog,\n onIncidentCreated: onIncidentCreated,\n serviceName,\n integrationKey,\n}: Props) => {\n const alertApi = useApi(alertApiRef);\n const identityApi = useApi(identityApiRef);\n const api = useApi(pagerDutyApiRef);\n const [description, setDescription] = useState<string>('');\n const theme = useTheme();\n\n const [{ value, loading, error }, handleTriggerAlarm] = useAsyncFn(\n async (descriptions: string) => {\n const { userEntityRef } = await identityApi.getBackstageIdentity();\n const { name: userName } = parseEntityRef(userEntityRef, {\n defaultKind: 'User',\n defaultNamespace: DEFAULT_NAMESPACE,\n });\n return await api.triggerAlarm({\n integrationKey: integrationKey as string,\n source: window.location.toString(),\n description: descriptions,\n userName,\n });\n },\n );\n\n const descriptionChanged = (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n ) => {\n setDescription(event.target.value);\n };\n\n useEffect(() => {\n if (value) {\n (async () => {\n alertApi.post({\n message: `Alarm successfully triggered`,\n });\n\n // clear description state\n setDescription('');\n\n handleDialog();\n\n // The pager duty API isn't always returning the newly created alarm immediately\n await new Promise(resolve => setTimeout(resolve, 1000));\n onIncidentCreated?.();\n })();\n }\n }, [value, alertApi, handleDialog, onIncidentCreated]);\n\n if (error) {\n alertApi.post({\n message: `Failed to trigger alarm. ${error.message}`,\n severity: 'error',\n });\n }\n\n return (\n <Dialog maxWidth=\"md\" open={showDialog} onClose={handleDialog} fullWidth>\n <DialogTitle>\n This action will trigger an incident for{' '}\n <strong>\"{serviceName}\"</strong>.\n </DialogTitle>\n <DialogContent>\n <Alert severity=\"info\">\n <Typography variant=\"body1\" align=\"justify\">\n If the issue you are seeing does not need urgent attention, please\n get in touch with the responsible team using their preferred\n communications channel. You can find information about the owner of\n this entity in the \"About\" card. If the issue is urgent, please\n don't hesitate to trigger the alert.\n </Typography>\n </Alert>\n <Typography\n variant=\"body1\"\n style={{ marginTop: '1em' }}\n gutterBottom\n align=\"justify\"\n >\n Please describe the problem you want to report. Be as descriptive as\n possible. Your signed in user and a reference to the current page will\n automatically be amended to the alarm so that the receiver can reach\n out to you if necessary.\n </Typography>\n <TextField\n inputProps={{ 'data-testid': 'trigger-input' }}\n id=\"description\"\n multiline\n fullWidth\n minRows={4}\n margin=\"normal\"\n label=\"Problem description\"\n variant=\"outlined\"\n onChange={descriptionChanged}\n />\n </DialogContent>\n <DialogActions>\n <Button\n data-testid=\"trigger-button\"\n id=\"trigger\"\n style={{\n background:\n !description || loading\n ? theme.palette.action.disabled\n : theme.palette.secondary.main,\n }}\n isDisabled={!description || loading}\n variant=\"primary\"\n onClick={() => handleTriggerAlarm(description)}\n iconEnd={loading ? <CircularProgress size={16} /> : <></>}\n >\n TRIGGER INCIDENT\n </Button>\n <Button id=\"close\" onClick={handleDialog}>\n CLOSE\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagerDutyEntity.esm.js","sources":["../../src/components/pagerDutyEntity.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { PagerDutyEntity } from '../types';\nimport { PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID, PAGERDUTY_ACCOUNT_NAME } from './constants';\n\nexport function getPagerDutyEntity(entity: Entity): PagerDutyEntity {\n const {\n [PAGERDUTY_INTEGRATION_KEY]: integrationKey,\n [PAGERDUTY_SERVICE_ID]: serviceId,\n [PAGERDUTY_ACCOUNT_NAME]: account,\n } = entity.metadata.annotations || ({} as Record<string, string>);\n const name = entity.metadata.name;\n\n return { integrationKey, serviceId, account, name };\n}\n"],"names":[],"mappings":";;AAoBO,SAAS,mBAAmB,MAAA,EAAiC;AAClE,EAAA,MAAM;AAAA,IACJ,CAAC,yBAAyB,GAAG,cAAA;AAAA,IAC7B,CAAC,oBAAoB,GAAG,SAAA;AAAA,IACxB,CAAC,sBAAsB,GAAG;AAAA,GAC5B,GAAI,MAAA,CAAO,QAAA,CAAS,WAAA,IAAgB,EAAC;AACrC,EAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,IAAA;AAE7B,EAAA,OAAO,EAAE,cAAA,EAAgB,SAAA,EAAW,OAAA,EAAS,IAAA,EAAK;AACpD;;;;"}
1
+ {"version":3,"file":"pagerDutyEntity.esm.js","sources":["../../src/components/pagerDutyEntity.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { PagerDutyEntity } from '../types';\nimport {\n PAGERDUTY_INTEGRATION_KEY,\n PAGERDUTY_SERVICE_ID,\n PAGERDUTY_ACCOUNT_NAME,\n} from './constants';\n\nexport function getPagerDutyEntity(entity: Entity): PagerDutyEntity {\n const {\n [PAGERDUTY_INTEGRATION_KEY]: integrationKey,\n [PAGERDUTY_SERVICE_ID]: serviceId,\n [PAGERDUTY_ACCOUNT_NAME]: account,\n } = entity.metadata.annotations || ({} as Record<string, string>);\n const name = entity.metadata.name;\n\n return { integrationKey, serviceId, account, name };\n}\n"],"names":[],"mappings":";;AAwBO,SAAS,mBAAmB,MAAA,EAAiC;AAClE,EAAA,MAAM;AAAA,IACJ,CAAC,yBAAyB,GAAG,cAAA;AAAA,IAC7B,CAAC,oBAAoB,GAAG,SAAA;AAAA,IACxB,CAAC,sBAAsB,GAAG;AAAA,GAC5B,GAAI,MAAA,CAAO,QAAA,CAAS,WAAA,IAAgB,EAAC;AACrC,EAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,IAAA;AAE7B,EAAA,OAAO,EAAE,cAAA,EAAgB,SAAA,EAAW,OAAA,EAAS,IAAA,EAAK;AACpD;;;;"}