@pagerduty/backstage-plugin 0.15.5 → 0.15.6
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.
- package/config.d.ts +1 -1
- package/dist/api/client.esm.js.map +1 -1
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js +12 -9
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js.map +1 -1
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js +12 -9
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js.map +1 -1
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js +37 -25
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js.map +1 -1
- package/dist/components/ChangeEvents/ChangeEvents.esm.js +13 -9
- package/dist/components/ChangeEvents/ChangeEvents.esm.js.map +1 -1
- package/dist/components/EntityPagerDutyCard/index.esm.js +2 -2
- package/dist/components/EntityPagerDutyCard/index.esm.js.map +1 -1
- package/dist/components/EntityPagerDutySmallCard/index.esm.js +2 -2
- package/dist/components/EntityPagerDutySmallCard/index.esm.js.map +1 -1
- package/dist/components/Errors/ForbiddenError.esm.js +6 -6
- package/dist/components/Errors/ForbiddenError.esm.js.map +1 -1
- package/dist/components/Errors/MissingTokenError.esm.js +6 -6
- package/dist/components/Errors/MissingTokenError.esm.js.map +1 -1
- package/dist/components/Errors/ServiceNotFoundError.esm.js +6 -6
- package/dist/components/Errors/ServiceNotFoundError.esm.js.map +1 -1
- package/dist/components/Escalation/EscalationPolicy.esm.js +21 -18
- package/dist/components/Escalation/EscalationPolicy.esm.js.map +1 -1
- package/dist/components/Escalation/EscalationUser.esm.js +48 -39
- package/dist/components/Escalation/EscalationUser.esm.js.map +1 -1
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js +5 -2
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js.map +1 -1
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js +5 -2
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js.map +1 -1
- package/dist/components/HomePagePagerDutyCard/Content.esm.js +2 -2
- package/dist/components/HomePagePagerDutyCard/Content.esm.js.map +1 -1
- package/dist/components/Icons/index.esm.js +2 -2
- package/dist/components/Icons/index.esm.js.map +1 -1
- package/dist/components/Incident/IncidentEmptyState.esm.js +15 -13
- package/dist/components/Incident/IncidentEmptyState.esm.js.map +1 -1
- package/dist/components/Incident/IncidentForbiddenState.esm.js +12 -9
- package/dist/components/Incident/IncidentForbiddenState.esm.js.map +1 -1
- package/dist/components/Incident/IncidentListItem.esm.js +53 -40
- package/dist/components/Incident/IncidentListItem.esm.js.map +1 -1
- package/dist/components/Incident/Incidents.esm.js +10 -6
- package/dist/components/Incident/Incidents.esm.js.map +1 -1
- package/dist/components/PagerDutyCard/index.esm.js +115 -81
- package/dist/components/PagerDutyCard/index.esm.js.map +1 -1
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js +8 -2
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js.map +1 -1
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js +9 -6
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js.map +1 -1
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js +34 -16
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js.map +1 -1
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js +10 -6
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js.map +1 -1
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js +27 -20
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js.map +1 -1
- package/dist/components/PagerDutyPage/MappingTable.esm.js +39 -31
- package/dist/components/PagerDutyPage/MappingTable.esm.js.map +1 -1
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js +3 -2
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js.map +1 -1
- package/dist/components/PagerDutyPage/index.esm.js +85 -50
- package/dist/components/PagerDutyPage/index.esm.js.map +1 -1
- package/dist/components/PagerDutySmallCard/index.esm.js +116 -89
- package/dist/components/PagerDutySmallCard/index.esm.js.map +1 -1
- package/dist/components/TriggerButton/index.esm.js +23 -19
- package/dist/components/TriggerButton/index.esm.js.map +1 -1
- package/dist/components/TriggerDialog/TriggerDialog.esm.js +56 -36
- package/dist/components/TriggerDialog/TriggerDialog.esm.js.map +1 -1
- package/dist/components/constants.esm.js.map +1 -1
- package/dist/components/pagerDutyEntity.esm.js +1 -1
- package/dist/components/pagerDutyEntity.esm.js.map +1 -1
- package/dist/deprecated.esm.js +1 -2
- package/dist/deprecated.esm.js.map +1 -1
- package/dist/hooks/index.esm.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/plugin.esm.js +2 -2
- package/dist/plugin.esm.js.map +1 -1
- package/package.json +19 -28
- package/CHANGELOG.md +0 -1390
- package/LICENSE +0 -201
- package/README.md +0 -51
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
2
3
|
import { Grid, Typography, Card, RadioGroup, FormControlLabel, Radio } from '@material-ui/core';
|
|
3
4
|
import { Page, Header, Content, TabbedLayout } from '@backstage/core-components';
|
|
4
5
|
import { ServiceMappingComponent } from './ServiceMappingComponent.esm.js';
|
|
@@ -49,55 +50,89 @@ const PagerDutyPage = () => {
|
|
|
49
50
|
return "disabled";
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
|
-
return /* @__PURE__ */
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
title: "Service
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
53
|
+
return /* @__PURE__ */ jsxs(Page, { themeId: "home", children: [
|
|
54
|
+
/* @__PURE__ */ jsx(Header, { title: "PagerDuty", subtitle: "Advanced configurations" }),
|
|
55
|
+
/* @__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: [
|
|
60
|
+
/* @__PURE__ */ jsx("b", { children: "Warning: " }),
|
|
61
|
+
"Only 1:1 mapping is allowed at this time."
|
|
62
|
+
] })
|
|
63
|
+
] }),
|
|
64
|
+
/* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(ServiceMappingComponent, {}) })
|
|
65
|
+
] }) }),
|
|
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
|
+
] }),
|
|
71
|
+
/* @__PURE__ */ jsxs(
|
|
72
|
+
Card,
|
|
73
|
+
{
|
|
74
|
+
title: "Service dependency synchronization preferences",
|
|
75
|
+
style: { padding: "10px", paddingLeft: "15px", width: "50%" },
|
|
76
|
+
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,
|
|
82
|
+
{
|
|
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
|
+
]
|
|
119
|
+
}
|
|
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
|
+
] })
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
] }) })
|
|
134
|
+
] }) })
|
|
135
|
+
] });
|
|
101
136
|
};
|
|
102
137
|
|
|
103
138
|
export { PagerDutyPage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/components/PagerDutyPage/index.tsx"],"sourcesContent":["import
|
|
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,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useCallback } from 'react';
|
|
2
3
|
import { Card, CardHeader, Grid, Typography, Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core';
|
|
3
4
|
import useAsync from 'react-use/lib/useAsync';
|
|
4
5
|
import { pagerDutyApiRef, UnauthorizedError } from '../../api/client.esm.js';
|
|
@@ -15,7 +16,7 @@ import { OpenServiceButton } from '../PagerDutyCardCommon/OpenServiceButton.esm.
|
|
|
15
16
|
import ServiceStandardsCard from '../PagerDutyCardCommon/ServiceStandardsCard.esm.js';
|
|
16
17
|
import StatusCard from '../PagerDutyCardCommon/StatusCard.esm.js';
|
|
17
18
|
import { TriggerIncidentButton } from '../PagerDutyCardCommon/TriggerIncidentButton.esm.js';
|
|
18
|
-
import { makeStyles,
|
|
19
|
+
import { makeStyles, useTheme, createStyles } from '@material-ui/core/styles';
|
|
19
20
|
import { EscalationPolicy } from '../Escalation/EscalationPolicy.esm.js';
|
|
20
21
|
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
|
|
21
22
|
|
|
@@ -65,7 +66,7 @@ const useStyles = makeStyles(
|
|
|
65
66
|
}
|
|
66
67
|
})
|
|
67
68
|
);
|
|
68
|
-
const BasicCard = ({ children }) => /* @__PURE__ */
|
|
69
|
+
const BasicCard = ({ children }) => /* @__PURE__ */ jsx(InfoCard, { title: "PagerDuty", children });
|
|
69
70
|
const PagerDutySmallCard = (props) => {
|
|
70
71
|
const classes = useStyles();
|
|
71
72
|
const theme = useTheme();
|
|
@@ -109,103 +110,129 @@ const PagerDutySmallCard = (props) => {
|
|
|
109
110
|
let errorNode;
|
|
110
111
|
switch (error.constructor) {
|
|
111
112
|
case UnauthorizedError:
|
|
112
|
-
errorNode = /* @__PURE__ */
|
|
113
|
+
errorNode = /* @__PURE__ */ jsx(MissingTokenError, {});
|
|
113
114
|
break;
|
|
114
115
|
case NotFoundError:
|
|
115
|
-
errorNode = /* @__PURE__ */
|
|
116
|
+
errorNode = /* @__PURE__ */ jsx(ServiceNotFoundError, {});
|
|
116
117
|
break;
|
|
117
118
|
default:
|
|
118
|
-
errorNode = /* @__PURE__ */
|
|
119
|
+
errorNode = /* @__PURE__ */ jsx(ForbiddenError, {});
|
|
119
120
|
}
|
|
120
|
-
return /* @__PURE__ */
|
|
121
|
+
return /* @__PURE__ */ jsx(BasicCard, { children: errorNode });
|
|
121
122
|
}
|
|
122
123
|
if (loading) {
|
|
123
|
-
return /* @__PURE__ */
|
|
124
|
+
return /* @__PURE__ */ jsx(BasicCard, { children: /* @__PURE__ */ jsx(Progress, {}) });
|
|
124
125
|
}
|
|
125
|
-
return /* @__PURE__ */
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
return /* @__PURE__ */ jsxs(Card, { "data-testid": "pagerduty-card", children: [
|
|
127
|
+
/* @__PURE__ */ jsx(
|
|
128
|
+
CardHeader,
|
|
129
|
+
{
|
|
130
|
+
className: classes.headerStyle,
|
|
131
|
+
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: [
|
|
133
|
+
/* @__PURE__ */ jsx(
|
|
134
|
+
TriggerIncidentButton,
|
|
135
|
+
{
|
|
136
|
+
compact: true,
|
|
137
|
+
"data-testid": "trigger-incident-button",
|
|
138
|
+
integrationKey: props.integrationKey,
|
|
139
|
+
entityName: props.name,
|
|
140
|
+
handleRefresh
|
|
141
|
+
}
|
|
142
|
+
),
|
|
143
|
+
/* @__PURE__ */ jsx(OpenServiceButton, { compact: true, serviceUrl: service.url })
|
|
144
|
+
] }) : /* @__PURE__ */ jsx(OpenServiceButton, { compact: true, serviceUrl: service.url })
|
|
145
|
+
}
|
|
146
|
+
),
|
|
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" }) })
|
|
150
|
+
] }),
|
|
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(
|
|
154
|
+
ServiceStandardsCard,
|
|
132
155
|
{
|
|
133
156
|
compact: true,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
handleRefresh
|
|
157
|
+
total: service?.standards?.score !== void 0 ? service?.standards?.score?.total : void 0,
|
|
158
|
+
completed: service?.standards?.score !== void 0 ? service?.standards?.score?.passing : void 0,
|
|
159
|
+
standards: service?.standards !== void 0 ? service?.standards?.standards : void 0
|
|
138
160
|
}
|
|
139
|
-
)
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
161
|
+
) })
|
|
162
|
+
] }),
|
|
163
|
+
disableInsights !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
|
|
164
|
+
/* @__PURE__ */ jsx(
|
|
165
|
+
AccordionSummary,
|
|
166
|
+
{
|
|
167
|
+
expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
168
|
+
"aria-controls": "panel1a-content",
|
|
169
|
+
id: "panel1a-header",
|
|
170
|
+
children: /* @__PURE__ */ jsxs("span", { className: classes.headerWithSubheaderContainerStyle, children: [
|
|
171
|
+
/* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "INSIGHTS" }),
|
|
172
|
+
/* @__PURE__ */ jsx(Typography, { className: classes.subheaderTextStyle, children: "(last 30 days)" })
|
|
173
|
+
] })
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
/* @__PURE__ */ jsx(AccordionDetails, { children: /* @__PURE__ */ jsxs(
|
|
177
|
+
Grid,
|
|
178
|
+
{
|
|
179
|
+
item: true,
|
|
180
|
+
md: 12,
|
|
181
|
+
className: classes.incidentMetricsContainerStyle,
|
|
182
|
+
children: [
|
|
183
|
+
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
184
|
+
IncidentCounterCard,
|
|
185
|
+
{
|
|
186
|
+
compact: true,
|
|
187
|
+
count: service?.metrics !== void 0 && service.metrics.length > 0 ? service?.metrics[0].total_interruptions : void 0,
|
|
188
|
+
label: "interruptions",
|
|
189
|
+
color: theme.palette.textSubtle
|
|
190
|
+
}
|
|
191
|
+
) }),
|
|
192
|
+
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
193
|
+
IncidentCounterCard,
|
|
194
|
+
{
|
|
195
|
+
compact: true,
|
|
196
|
+
count: service?.metrics !== void 0 && service.metrics.length > 0 ? service?.metrics[0].total_high_urgency_incidents : void 0,
|
|
197
|
+
label: "high urgency",
|
|
198
|
+
color: theme.palette.warning.main
|
|
199
|
+
}
|
|
200
|
+
) }),
|
|
201
|
+
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
202
|
+
IncidentCounterCard,
|
|
203
|
+
{
|
|
204
|
+
compact: true,
|
|
205
|
+
count: service?.metrics !== void 0 && service?.metrics?.length > 0 ? service?.metrics[0].total_incident_count : void 0,
|
|
206
|
+
label: "incidents",
|
|
207
|
+
color: theme.palette.error.main
|
|
208
|
+
}
|
|
209
|
+
) })
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
) })
|
|
213
|
+
] }) : /* @__PURE__ */ jsx(Fragment, {}),
|
|
214
|
+
disableOnCall !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
|
|
215
|
+
/* @__PURE__ */ jsx(
|
|
216
|
+
AccordionSummary,
|
|
217
|
+
{
|
|
218
|
+
expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
219
|
+
"aria-controls": "panel1a-content",
|
|
220
|
+
id: "panel1a-header",
|
|
221
|
+
children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "ON CALL" })
|
|
222
|
+
}
|
|
223
|
+
),
|
|
224
|
+
/* @__PURE__ */ jsx(AccordionDetails, { className: classes.onCallAccordionDetails, children: /* @__PURE__ */ jsx(
|
|
225
|
+
EscalationPolicy,
|
|
226
|
+
{
|
|
227
|
+
"data-testid": "oncall-card",
|
|
228
|
+
policyId: service.policyId,
|
|
229
|
+
policyUrl: service.policyLink,
|
|
230
|
+
policyName: service.policyName,
|
|
231
|
+
account: service.account
|
|
232
|
+
}
|
|
233
|
+
) })
|
|
234
|
+
] }) : /* @__PURE__ */ jsx(Fragment, {})
|
|
235
|
+
] });
|
|
209
236
|
};
|
|
210
237
|
|
|
211
238
|
export { PagerDutySmallCard };
|
|
@@ -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 React, { 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":"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"}
|
|
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":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useCallback } from 'react';
|
|
2
3
|
import { makeStyles, Button } from '@material-ui/core';
|
|
3
4
|
import { usePagerdutyEntity } from '../../hooks/index.esm.js';
|
|
4
5
|
import { TriggerDialog } from '../TriggerDialog/TriggerDialog.esm.js';
|
|
@@ -23,24 +24,27 @@ function TriggerButton(props) {
|
|
|
23
24
|
setDialogShown(false);
|
|
24
25
|
}, [setDialogShown]);
|
|
25
26
|
const disabled = !integrationKey;
|
|
26
|
-
return /* @__PURE__ */
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
28
|
+
/* @__PURE__ */ jsx(
|
|
29
|
+
Button,
|
|
30
|
+
{
|
|
31
|
+
onClick: showDialog,
|
|
32
|
+
variant: "contained",
|
|
33
|
+
className: disabled ? "" : buttonStyle,
|
|
34
|
+
disabled,
|
|
35
|
+
children: integrationKey ? props.children ?? "Create new incident" : "Missing integration key"
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
integrationKey && /* @__PURE__ */ jsx(
|
|
39
|
+
TriggerDialog,
|
|
40
|
+
{
|
|
41
|
+
showDialog: dialogShown,
|
|
42
|
+
handleDialog: hideDialog,
|
|
43
|
+
integrationKey,
|
|
44
|
+
serviceName: name
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
] });
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
export { TriggerButton };
|