@pagerduty/backstage-plugin 0.15.9 → 0.15.10-next.0
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/README.md +36 -0
- package/package.json +32 -19
- package/assets/PD-Green.svg +0 -21
- package/assets/PD-Icon.svg +0 -13
- package/assets/PD-White.svg +0 -21
- package/assets/emptystate.svg +0 -6
- package/assets/forbiddenstate.svg +0 -25
- package/dist/api/client.esm.js +0 -225
- package/dist/api/client.esm.js.map +0 -1
- package/dist/assets/PD-Green.svg +0 -21
- package/dist/assets/PD-Icon.svg +0 -13
- package/dist/assets/PD-White.svg +0 -21
- package/dist/assets/emptystate.svg +0 -6
- package/dist/assets/forbiddenstate.svg +0 -25
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js +0 -29
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js +0 -29
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js +0 -82
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEvents.esm.js +0 -52
- package/dist/components/ChangeEvents/ChangeEvents.esm.js.map +0 -1
- package/dist/components/EntityPagerDutyCard/index.esm.js +0 -26
- package/dist/components/EntityPagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/EntityPagerDutySmallCard/index.esm.js +0 -26
- package/dist/components/EntityPagerDutySmallCard/index.esm.js.map +0 -1
- package/dist/components/Errors/ForbiddenError.esm.js +0 -24
- package/dist/components/Errors/ForbiddenError.esm.js.map +0 -1
- package/dist/components/Errors/MissingTokenError.esm.js +0 -24
- package/dist/components/Errors/MissingTokenError.esm.js.map +0 -1
- package/dist/components/Errors/ServiceNotFoundError.esm.js +0 -24
- package/dist/components/Errors/ServiceNotFoundError.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationPolicy.esm.js +0 -61
- package/dist/components/Escalation/EscalationPolicy.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUser.esm.js +0 -107
- package/dist/components/Escalation/EscalationUser.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js +0 -23
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js +0 -23
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js.map +0 -1
- package/dist/components/HomePagePagerDutyCard/Content.esm.js +0 -9
- package/dist/components/HomePagePagerDutyCard/Content.esm.js.map +0 -1
- package/dist/components/HomePagePagerDutyCard/index.esm.js +0 -2
- package/dist/components/HomePagePagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/Icons/index.esm.js +0 -9
- package/dist/components/Icons/index.esm.js.map +0 -1
- package/dist/components/Incident/IncidentEmptyState.esm.js +0 -29
- package/dist/components/Incident/IncidentEmptyState.esm.js.map +0 -1
- package/dist/components/Incident/IncidentForbiddenState.esm.js +0 -29
- package/dist/components/Incident/IncidentForbiddenState.esm.js.map +0 -1
- package/dist/components/Incident/IncidentListItem.esm.js +0 -126
- package/dist/components/Incident/IncidentListItem.esm.js.map +0 -1
- package/dist/components/Incident/Incidents.esm.js +0 -46
- package/dist/components/Incident/Incidents.esm.js.map +0 -1
- package/dist/components/PagerDutyCard/index.esm.js +0 -239
- package/dist/components/PagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js +0 -41
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js +0 -48
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js +0 -113
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js +0 -109
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js +0 -71
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/MappingTable.esm.js +0 -271
- package/dist/components/PagerDutyPage/MappingTable.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js +0 -50
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/index.esm.js +0 -152
- package/dist/components/PagerDutyPage/index.esm.js.map +0 -1
- package/dist/components/PagerDutySmallCard/index.esm.js +0 -247
- package/dist/components/PagerDutySmallCard/index.esm.js.map +0 -1
- package/dist/components/TriggerButton/index.esm.js +0 -51
- package/dist/components/TriggerButton/index.esm.js.map +0 -1
- package/dist/components/TriggerDialog/TriggerDialog.esm.js +0 -116
- package/dist/components/TriggerDialog/TriggerDialog.esm.js.map +0 -1
- package/dist/components/constants.esm.js +0 -6
- package/dist/components/constants.esm.js.map +0 -1
- package/dist/components/pagerDutyEntity.esm.js +0 -14
- package/dist/components/pagerDutyEntity.esm.js.map +0 -1
- package/dist/deprecated.esm.js +0 -10
- package/dist/deprecated.esm.js.map +0 -1
- package/dist/hooks/index.esm.js +0 -10
- package/dist/hooks/index.esm.js.map +0 -1
- package/dist/index.d.ts +0 -182
- package/dist/index.esm.js +0 -8
- package/dist/index.esm.js.map +0 -1
- package/dist/plugin.esm.js +0 -78
- package/dist/plugin.esm.js.map +0 -1
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useCallback } from 'react';
|
|
3
|
-
import { Card, CardHeader, Grid, Typography, Accordion, AccordionSummary, AccordionDetails } from '@material-ui/core';
|
|
4
|
-
import useAsync from 'react-use/lib/useAsync';
|
|
5
|
-
import { pagerDutyApiRef, UnauthorizedError } from '../../api/client.esm.js';
|
|
6
|
-
import { MissingTokenError } from '../Errors/MissingTokenError.esm.js';
|
|
7
|
-
import { ServiceNotFoundError } from '../Errors/ServiceNotFoundError.esm.js';
|
|
8
|
-
import PDGreenImage from '../../assets/PD-Green.svg';
|
|
9
|
-
import PDWhiteImage from '../../assets/PD-White.svg';
|
|
10
|
-
import { useApi } from '@backstage/core-plugin-api';
|
|
11
|
-
import { NotFoundError } from '@backstage/errors';
|
|
12
|
-
import { Progress, InfoCard } from '@backstage/core-components';
|
|
13
|
-
import { ForbiddenError } from '../Errors/ForbiddenError.esm.js';
|
|
14
|
-
import IncidentCounterCard from '../PagerDutyCardCommon/InsightsCard.esm.js';
|
|
15
|
-
import { OpenServiceButton } from '../PagerDutyCardCommon/OpenServiceButton.esm.js';
|
|
16
|
-
import ServiceStandardsCard from '../PagerDutyCardCommon/ServiceStandardsCard.esm.js';
|
|
17
|
-
import StatusCard from '../PagerDutyCardCommon/StatusCard.esm.js';
|
|
18
|
-
import { TriggerIncidentButton } from '../PagerDutyCardCommon/TriggerIncidentButton.esm.js';
|
|
19
|
-
import { makeStyles, useTheme, createStyles } from '@material-ui/core/styles';
|
|
20
|
-
import { EscalationPolicy } from '../Escalation/EscalationPolicy.esm.js';
|
|
21
|
-
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
|
|
22
|
-
|
|
23
|
-
const useStyles = makeStyles(
|
|
24
|
-
(theme) => createStyles({
|
|
25
|
-
overviewHeaderTextStyle: {
|
|
26
|
-
fontSize: "14px",
|
|
27
|
-
fontWeight: 500,
|
|
28
|
-
color: theme.palette.type === "light" ? "rgba(0, 0, 0, 0.54)" : "rgba(255, 255, 255, 0.7)"
|
|
29
|
-
},
|
|
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
|
-
subheaderTextStyle: {
|
|
45
|
-
fontSize: "10px",
|
|
46
|
-
marginLeft: "5px"
|
|
47
|
-
},
|
|
48
|
-
overviewCardsContainerStyle: {
|
|
49
|
-
display: "flex",
|
|
50
|
-
margin: "15px",
|
|
51
|
-
marginTop: "-15px"
|
|
52
|
-
},
|
|
53
|
-
onCallAccordionDetails: {
|
|
54
|
-
display: "flex",
|
|
55
|
-
width: "100%",
|
|
56
|
-
marginTop: "-25px",
|
|
57
|
-
marginBottom: "-15px"
|
|
58
|
-
},
|
|
59
|
-
incidentMetricsContainerStyle: {
|
|
60
|
-
display: "flex",
|
|
61
|
-
height: "100%",
|
|
62
|
-
justifyContent: "center",
|
|
63
|
-
columnSpan: "all",
|
|
64
|
-
margin: "15px",
|
|
65
|
-
marginTop: "-15px"
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
);
|
|
69
|
-
const BasicCard = ({ children }) => /* @__PURE__ */ jsx(InfoCard, { title: "PagerDuty", children });
|
|
70
|
-
const PagerDutySmallCard = (props) => {
|
|
71
|
-
const classes = useStyles();
|
|
72
|
-
const theme = useTheme();
|
|
73
|
-
const { readOnly, disableInsights, disableOnCall } = props;
|
|
74
|
-
const api = useApi(pagerDutyApiRef);
|
|
75
|
-
const [refreshStatus, setRefreshStatus] = useState(false);
|
|
76
|
-
const handleRefresh = useCallback(() => {
|
|
77
|
-
setRefreshStatus((x) => !x);
|
|
78
|
-
}, []);
|
|
79
|
-
const {
|
|
80
|
-
value: service,
|
|
81
|
-
loading,
|
|
82
|
-
error
|
|
83
|
-
} = useAsync(async () => {
|
|
84
|
-
const { service: foundService } = await api.getServiceByPagerDutyEntity(
|
|
85
|
-
props
|
|
86
|
-
);
|
|
87
|
-
const serviceStandards = await api.getServiceStandardsByServiceId(
|
|
88
|
-
foundService.id,
|
|
89
|
-
props.account
|
|
90
|
-
);
|
|
91
|
-
const serviceMetrics = await api.getServiceMetricsByServiceId(
|
|
92
|
-
foundService.id,
|
|
93
|
-
props.account
|
|
94
|
-
);
|
|
95
|
-
const result = {
|
|
96
|
-
id: foundService.id,
|
|
97
|
-
name: foundService.name,
|
|
98
|
-
account: props.account,
|
|
99
|
-
url: foundService.html_url,
|
|
100
|
-
policyId: foundService.escalation_policy.id,
|
|
101
|
-
policyLink: foundService.escalation_policy.html_url,
|
|
102
|
-
policyName: foundService.escalation_policy.name,
|
|
103
|
-
status: foundService.status,
|
|
104
|
-
standards: serviceStandards !== void 0 ? serviceStandards.standards : void 0,
|
|
105
|
-
metrics: serviceMetrics !== void 0 ? serviceMetrics.metrics : void 0
|
|
106
|
-
};
|
|
107
|
-
return result;
|
|
108
|
-
}, [props]);
|
|
109
|
-
if (error) {
|
|
110
|
-
let errorNode;
|
|
111
|
-
switch (error.constructor) {
|
|
112
|
-
case UnauthorizedError:
|
|
113
|
-
errorNode = /* @__PURE__ */ jsx(MissingTokenError, {});
|
|
114
|
-
break;
|
|
115
|
-
case NotFoundError:
|
|
116
|
-
errorNode = /* @__PURE__ */ jsx(ServiceNotFoundError, {});
|
|
117
|
-
break;
|
|
118
|
-
default:
|
|
119
|
-
errorNode = /* @__PURE__ */ jsx(ForbiddenError, {});
|
|
120
|
-
}
|
|
121
|
-
return /* @__PURE__ */ jsx(BasicCard, { children: errorNode });
|
|
122
|
-
}
|
|
123
|
-
if (loading) {
|
|
124
|
-
return /* @__PURE__ */ jsx(BasicCard, { children: /* @__PURE__ */ jsx(Progress, {}) });
|
|
125
|
-
}
|
|
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(
|
|
153
|
-
StatusCard,
|
|
154
|
-
{
|
|
155
|
-
compact: true,
|
|
156
|
-
serviceId: service.id,
|
|
157
|
-
refreshStatus,
|
|
158
|
-
account: service.account
|
|
159
|
-
}
|
|
160
|
-
) }),
|
|
161
|
-
/* @__PURE__ */ jsx(Grid, { item: true, md: 6, children: /* @__PURE__ */ jsx(
|
|
162
|
-
ServiceStandardsCard,
|
|
163
|
-
{
|
|
164
|
-
compact: true,
|
|
165
|
-
total: service?.standards?.score !== void 0 ? service?.standards?.score?.total : void 0,
|
|
166
|
-
completed: service?.standards?.score !== void 0 ? service?.standards?.score?.passing : void 0,
|
|
167
|
-
standards: service?.standards !== void 0 ? service?.standards?.standards : void 0
|
|
168
|
-
}
|
|
169
|
-
) })
|
|
170
|
-
] }),
|
|
171
|
-
disableInsights !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
|
|
172
|
-
/* @__PURE__ */ jsx(
|
|
173
|
-
AccordionSummary,
|
|
174
|
-
{
|
|
175
|
-
expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
176
|
-
"aria-controls": "panel1a-content",
|
|
177
|
-
id: "panel1a-header",
|
|
178
|
-
children: /* @__PURE__ */ jsxs(Typography, { className: classes.headerWithSubheaderContainerStyle, children: [
|
|
179
|
-
/* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "INSIGHTS" }),
|
|
180
|
-
/* @__PURE__ */ jsx(Typography, { className: classes.subheaderTextStyle, children: "(last 30 days)" })
|
|
181
|
-
] })
|
|
182
|
-
}
|
|
183
|
-
),
|
|
184
|
-
/* @__PURE__ */ jsx(AccordionDetails, { children: /* @__PURE__ */ jsxs(
|
|
185
|
-
Grid,
|
|
186
|
-
{
|
|
187
|
-
item: true,
|
|
188
|
-
md: 12,
|
|
189
|
-
className: classes.incidentMetricsContainerStyle,
|
|
190
|
-
children: [
|
|
191
|
-
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
192
|
-
IncidentCounterCard,
|
|
193
|
-
{
|
|
194
|
-
compact: true,
|
|
195
|
-
count: service?.metrics !== void 0 && service.metrics.length > 0 ? service?.metrics[0].total_interruptions : void 0,
|
|
196
|
-
label: "interruptions",
|
|
197
|
-
color: theme.palette.textSubtle
|
|
198
|
-
}
|
|
199
|
-
) }),
|
|
200
|
-
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
201
|
-
IncidentCounterCard,
|
|
202
|
-
{
|
|
203
|
-
compact: true,
|
|
204
|
-
count: service?.metrics !== void 0 && service.metrics.length > 0 ? service?.metrics[0].total_high_urgency_incidents : void 0,
|
|
205
|
-
label: "high urgency",
|
|
206
|
-
color: theme.palette.warning.main
|
|
207
|
-
}
|
|
208
|
-
) }),
|
|
209
|
-
/* @__PURE__ */ jsx(Grid, { item: true, md: 4, children: /* @__PURE__ */ jsx(
|
|
210
|
-
IncidentCounterCard,
|
|
211
|
-
{
|
|
212
|
-
compact: true,
|
|
213
|
-
count: service?.metrics !== void 0 && service?.metrics?.length > 0 ? service?.metrics[0].total_incident_count : void 0,
|
|
214
|
-
label: "incidents",
|
|
215
|
-
color: theme.palette.error.main
|
|
216
|
-
}
|
|
217
|
-
) })
|
|
218
|
-
]
|
|
219
|
-
}
|
|
220
|
-
) })
|
|
221
|
-
] }) : /* @__PURE__ */ jsx(Fragment, {}),
|
|
222
|
-
disableOnCall !== true ? /* @__PURE__ */ jsxs(Accordion, { children: [
|
|
223
|
-
/* @__PURE__ */ jsx(
|
|
224
|
-
AccordionSummary,
|
|
225
|
-
{
|
|
226
|
-
expandIcon: /* @__PURE__ */ jsx(ExpandMoreIcon, {}),
|
|
227
|
-
"aria-controls": "panel1a-content",
|
|
228
|
-
id: "panel1a-header",
|
|
229
|
-
children: /* @__PURE__ */ jsx(Typography, { className: classes.overviewHeaderTextStyle, children: "ON CALL" })
|
|
230
|
-
}
|
|
231
|
-
),
|
|
232
|
-
/* @__PURE__ */ jsx(AccordionDetails, { className: classes.onCallAccordionDetails, children: /* @__PURE__ */ jsx(
|
|
233
|
-
EscalationPolicy,
|
|
234
|
-
{
|
|
235
|
-
"data-testid": "oncall-card",
|
|
236
|
-
policyId: service.policyId,
|
|
237
|
-
policyUrl: service.policyLink,
|
|
238
|
-
policyName: service.policyName,
|
|
239
|
-
account: service.account
|
|
240
|
-
}
|
|
241
|
-
) })
|
|
242
|
-
] }) : /* @__PURE__ */ jsx(Fragment, {})
|
|
243
|
-
] });
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
export { PagerDutySmallCard };
|
|
247
|
-
//# sourceMappingURL=index.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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\n compact\n serviceId={service!.id}\n refreshStatus={refreshStatus}\n account={service!.account}\n />\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 <Typography className={classes.headerWithSubheaderContainerStyle}>\n <Typography className={classes.overviewHeaderTextStyle}>\n INSIGHTS\n </Typography>\n <Typography className={classes.subheaderTextStyle}>\n (last 30 days)\n </Typography>\n </Typography>\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,51 +0,0 @@
|
|
|
1
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useCallback } from 'react';
|
|
3
|
-
import { makeStyles, Button } from '@material-ui/core';
|
|
4
|
-
import { usePagerdutyEntity } from '../../hooks/index.esm.js';
|
|
5
|
-
import { TriggerDialog } from '../TriggerDialog/TriggerDialog.esm.js';
|
|
6
|
-
|
|
7
|
-
const useStyles = makeStyles((theme) => ({
|
|
8
|
-
buttonStyle: {
|
|
9
|
-
backgroundColor: theme.palette.error.main,
|
|
10
|
-
color: theme.palette.error.contrastText,
|
|
11
|
-
"&:hover": {
|
|
12
|
-
backgroundColor: theme.palette.error.dark
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}));
|
|
16
|
-
function TriggerButton(props) {
|
|
17
|
-
const { buttonStyle } = useStyles();
|
|
18
|
-
const { integrationKey, name } = usePagerdutyEntity();
|
|
19
|
-
const [dialogShown, setDialogShown] = useState(false);
|
|
20
|
-
const showDialog = useCallback(() => {
|
|
21
|
-
setDialogShown(true);
|
|
22
|
-
}, [setDialogShown]);
|
|
23
|
-
const hideDialog = useCallback(() => {
|
|
24
|
-
setDialogShown(false);
|
|
25
|
-
}, [setDialogShown]);
|
|
26
|
-
const disabled = !integrationKey;
|
|
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
|
-
] });
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { TriggerButton };
|
|
51
|
-
//# sourceMappingURL=index.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../src/components/TriggerButton/index.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 { useCallback, ReactNode, useState } from 'react';\nimport { makeStyles, Button } from '@material-ui/core';\nimport { BackstageTheme } from '@backstage/theme';\n\nimport { usePagerdutyEntity } from '../../hooks';\nimport { TriggerDialog } from '../TriggerDialog';\n\nconst useStyles = makeStyles<BackstageTheme>(theme => ({\n buttonStyle: {\n backgroundColor: theme.palette.error.main,\n color: theme.palette.error.contrastText,\n '&:hover': {\n backgroundColor: theme.palette.error.dark,\n },\n },\n}));\n\n/** @public */\nexport function TriggerButton(props: { children?: ReactNode }) {\n const { buttonStyle } = useStyles();\n const { integrationKey, name } = usePagerdutyEntity();\n const [dialogShown, setDialogShown] = useState<boolean>(false);\n\n const showDialog = useCallback(() => {\n setDialogShown(true);\n }, [setDialogShown]);\n const hideDialog = useCallback(() => {\n setDialogShown(false);\n }, [setDialogShown]);\n\n const disabled = !integrationKey;\n return (\n <>\n <Button\n onClick={showDialog}\n variant=\"contained\"\n className={disabled ? '' : buttonStyle}\n disabled={disabled}\n >\n {integrationKey\n ? props.children ?? 'Create new incident'\n : 'Missing integration key'}\n </Button>\n {integrationKey && (\n <TriggerDialog\n showDialog={dialogShown}\n handleDialog={hideDialog}\n integrationKey={integrationKey}\n serviceName={name}\n />\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;AAwBA,MAAM,SAAA,GAAY,WAA2B,CAAA,KAAA,MAAU;AAAA,EACrD,WAAA,EAAa;AAAA,IACX,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,IAAA;AAAA,IACrC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,YAAA;AAAA,IAC3B,SAAA,EAAW;AAAA,MACT,eAAA,EAAiB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM;AAAA;AACvC;AAEJ,CAAA,CAAE,CAAA;AAGK,SAAS,cAAc,KAAA,EAAiC;AAC7D,EAAA,MAAM,EAAE,WAAA,EAAY,GAAI,SAAA,EAAU;AAClC,EAAA,MAAM,EAAE,cAAA,EAAgB,IAAA,EAAK,GAAI,kBAAA,EAAmB;AACpD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAkB,KAAK,CAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,cAAA,CAAe,KAAK,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,WAAW,CAAC,cAAA;AAClB,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,UAAA;AAAA,QACT,OAAA,EAAQ,WAAA;AAAA,QACR,SAAA,EAAW,WAAW,EAAA,GAAK,WAAA;AAAA,QAC3B,QAAA;AAAA,QAEC,QAAA,EAAA,cAAA,GACG,KAAA,CAAM,QAAA,IAAY,qBAAA,GAClB;AAAA;AAAA,KACN;AAAA,IACC,cAAA,oBACC,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,WAAA;AAAA,QACZ,YAAA,EAAc,UAAA;AAAA,QACd,cAAA;AAAA,QACA,WAAA,EAAa;AAAA;AAAA;AACf,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useEffect } from 'react';
|
|
3
|
-
import { Dialog, DialogTitle, DialogContent, Typography, TextField, DialogActions, Button, CircularProgress } from '@material-ui/core';
|
|
4
|
-
import useAsyncFn from 'react-use/lib/useAsyncFn';
|
|
5
|
-
import { pagerDutyApiRef } from '../../api/client.esm.js';
|
|
6
|
-
import { Alert } from '@material-ui/lab';
|
|
7
|
-
import { useApi, alertApiRef, identityApiRef } from '@backstage/core-plugin-api';
|
|
8
|
-
import { parseEntityRef, DEFAULT_NAMESPACE } from '@backstage/catalog-model';
|
|
9
|
-
|
|
10
|
-
const TriggerDialog = ({
|
|
11
|
-
showDialog,
|
|
12
|
-
handleDialog,
|
|
13
|
-
onIncidentCreated,
|
|
14
|
-
serviceName,
|
|
15
|
-
integrationKey
|
|
16
|
-
}) => {
|
|
17
|
-
const alertApi = useApi(alertApiRef);
|
|
18
|
-
const identityApi = useApi(identityApiRef);
|
|
19
|
-
const api = useApi(pagerDutyApiRef);
|
|
20
|
-
const [description, setDescription] = useState("");
|
|
21
|
-
const [{ value, loading, error }, handleTriggerAlarm] = useAsyncFn(
|
|
22
|
-
async (descriptions) => {
|
|
23
|
-
const { userEntityRef } = await identityApi.getBackstageIdentity();
|
|
24
|
-
const { name: userName } = parseEntityRef(userEntityRef, {
|
|
25
|
-
defaultKind: "User",
|
|
26
|
-
defaultNamespace: DEFAULT_NAMESPACE
|
|
27
|
-
});
|
|
28
|
-
return await api.triggerAlarm({
|
|
29
|
-
integrationKey,
|
|
30
|
-
source: window.location.toString(),
|
|
31
|
-
description: descriptions,
|
|
32
|
-
userName
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
const descriptionChanged = (event) => {
|
|
37
|
-
setDescription(event.target.value);
|
|
38
|
-
};
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
if (value) {
|
|
41
|
-
(async () => {
|
|
42
|
-
alertApi.post({
|
|
43
|
-
message: `Alarm successfully triggered`
|
|
44
|
-
});
|
|
45
|
-
setDescription("");
|
|
46
|
-
handleDialog();
|
|
47
|
-
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
48
|
-
onIncidentCreated?.();
|
|
49
|
-
})();
|
|
50
|
-
}
|
|
51
|
-
}, [value, alertApi, handleDialog, onIncidentCreated]);
|
|
52
|
-
if (error) {
|
|
53
|
-
alertApi.post({
|
|
54
|
-
message: `Failed to trigger alarm. ${error.message}`,
|
|
55
|
-
severity: "error"
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: showDialog, onClose: handleDialog, fullWidth: true, children: [
|
|
59
|
-
/* @__PURE__ */ jsxs(DialogTitle, { children: [
|
|
60
|
-
"This action will trigger an incident for",
|
|
61
|
-
" ",
|
|
62
|
-
/* @__PURE__ */ jsxs("strong", { children: [
|
|
63
|
-
'"',
|
|
64
|
-
serviceName,
|
|
65
|
-
'"'
|
|
66
|
-
] }),
|
|
67
|
-
"."
|
|
68
|
-
] }),
|
|
69
|
-
/* @__PURE__ */ jsxs(DialogContent, { children: [
|
|
70
|
-
/* @__PURE__ */ jsx(Alert, { severity: "info", children: /* @__PURE__ */ jsx(Typography, { variant: "body1", align: "justify", children: `If the issue you are seeing does not need urgent attention, please get in touch with the responsible team using their preferred communications channel. You can find information about the owner of this entity in the "About" card. If the issue is urgent, please don't hesitate to trigger the alert.` }) }),
|
|
71
|
-
/* @__PURE__ */ jsx(
|
|
72
|
-
Typography,
|
|
73
|
-
{
|
|
74
|
-
variant: "body1",
|
|
75
|
-
style: { marginTop: "1em" },
|
|
76
|
-
gutterBottom: true,
|
|
77
|
-
align: "justify",
|
|
78
|
-
children: "Please describe the problem you want to report. Be as descriptive as possible. Your signed in user and a reference to the current page will automatically be amended to the alarm so that the receiver can reach out to you if necessary."
|
|
79
|
-
}
|
|
80
|
-
),
|
|
81
|
-
/* @__PURE__ */ jsx(
|
|
82
|
-
TextField,
|
|
83
|
-
{
|
|
84
|
-
inputProps: { "data-testid": "trigger-input" },
|
|
85
|
-
id: "description",
|
|
86
|
-
multiline: true,
|
|
87
|
-
fullWidth: true,
|
|
88
|
-
minRows: 4,
|
|
89
|
-
margin: "normal",
|
|
90
|
-
label: "Problem description",
|
|
91
|
-
variant: "outlined",
|
|
92
|
-
onChange: descriptionChanged
|
|
93
|
-
}
|
|
94
|
-
)
|
|
95
|
-
] }),
|
|
96
|
-
/* @__PURE__ */ jsxs(DialogActions, { children: [
|
|
97
|
-
/* @__PURE__ */ jsx(
|
|
98
|
-
Button,
|
|
99
|
-
{
|
|
100
|
-
"data-testid": "trigger-button",
|
|
101
|
-
id: "trigger",
|
|
102
|
-
color: "secondary",
|
|
103
|
-
disabled: !description || loading,
|
|
104
|
-
variant: "contained",
|
|
105
|
-
onClick: () => handleTriggerAlarm(description),
|
|
106
|
-
endIcon: loading && /* @__PURE__ */ jsx(CircularProgress, { size: 16 }),
|
|
107
|
-
children: "Trigger Incident"
|
|
108
|
-
}
|
|
109
|
-
),
|
|
110
|
-
/* @__PURE__ */ jsx(Button, { id: "close", color: "primary", onClick: handleDialog, children: "Close" })
|
|
111
|
-
] })
|
|
112
|
-
] });
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
export { TriggerDialog };
|
|
116
|
-
//# sourceMappingURL=TriggerDialog.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 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{' '}\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 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,6 +0,0 @@
|
|
|
1
|
-
const PAGERDUTY_INTEGRATION_KEY = "pagerduty.com/integration-key";
|
|
2
|
-
const PAGERDUTY_SERVICE_ID = "pagerduty.com/service-id";
|
|
3
|
-
const PAGERDUTY_ACCOUNT_NAME = "pagerduty.com/account";
|
|
4
|
-
|
|
5
|
-
export { PAGERDUTY_ACCOUNT_NAME, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID };
|
|
6
|
-
//# sourceMappingURL=constants.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.esm.js","sources":["../../src/components/constants.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\nexport const PAGERDUTY_INTEGRATION_KEY = 'pagerduty.com/integration-key';\nexport const PAGERDUTY_SERVICE_ID = 'pagerduty.com/service-id';\nexport const PAGERDUTY_ACCOUNT_NAME = 'pagerduty.com/account';\n"],"names":[],"mappings":"AAeO,MAAM,yBAAA,GAA4B;AAClC,MAAM,oBAAA,GAAuB;AAC7B,MAAM,sBAAA,GAAyB;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { PAGERDUTY_ACCOUNT_NAME, PAGERDUTY_INTEGRATION_KEY, PAGERDUTY_SERVICE_ID } from './constants.esm.js';
|
|
2
|
-
|
|
3
|
-
function getPagerDutyEntity(entity) {
|
|
4
|
-
const {
|
|
5
|
-
[PAGERDUTY_INTEGRATION_KEY]: integrationKey,
|
|
6
|
-
[PAGERDUTY_SERVICE_ID]: serviceId,
|
|
7
|
-
[PAGERDUTY_ACCOUNT_NAME]: account
|
|
8
|
-
} = entity.metadata.annotations || {};
|
|
9
|
-
const name = entity.metadata.name;
|
|
10
|
-
return { integrationKey, serviceId, account, name };
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export { getPagerDutyEntity };
|
|
14
|
-
//# sourceMappingURL=pagerDutyEntity.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;;;;"}
|
package/dist/deprecated.esm.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { EntityPagerDutyCard } from './components/EntityPagerDutyCard/index.esm.js';
|
|
2
|
-
import 'react/jsx-runtime';
|
|
3
|
-
import '@backstage/plugin-catalog-react';
|
|
4
|
-
import './components/PagerDutySmallCard/index.esm.js';
|
|
5
|
-
import './components/TriggerButton/index.esm.js';
|
|
6
|
-
|
|
7
|
-
const PagerDutyCard = EntityPagerDutyCard;
|
|
8
|
-
|
|
9
|
-
export { PagerDutyCard };
|
|
10
|
-
//# sourceMappingURL=deprecated.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deprecated.esm.js","sources":["../src/deprecated.ts"],"sourcesContent":["/*\n * Copyright 2023 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 { EntityPagerDutyCardProps, EntityPagerDutyCard } from './components';\n\n/**\n * @public\n * @deprecated Please use EntityPagerDutyCard\n */\nexport const PagerDutyCard = EntityPagerDutyCard;\n\n/**\n * @public\n * @deprecated Please use EntityPagerDutyCardProps\n */\nexport type PagerDutyCardProps = EntityPagerDutyCardProps;\n"],"names":[],"mappings":";;;;;;AAsBO,MAAM,aAAA,GAAgB;;;;"}
|
package/dist/hooks/index.esm.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useEntity } from '@backstage/plugin-catalog-react';
|
|
2
|
-
import { getPagerDutyEntity } from '../components/pagerDutyEntity.esm.js';
|
|
3
|
-
|
|
4
|
-
function usePagerdutyEntity() {
|
|
5
|
-
const { entity } = useEntity();
|
|
6
|
-
return getPagerDutyEntity(entity);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export { usePagerdutyEntity };
|
|
10
|
-
//# sourceMappingURL=index.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../src/hooks/index.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 { useEntity } from '@backstage/plugin-catalog-react';\nimport { PagerDutyEntity } from '../types';\nimport { getPagerDutyEntity } from '../components/pagerDutyEntity';\n\nexport function usePagerdutyEntity(): PagerDutyEntity {\n const { entity } = useEntity();\n\n return getPagerDutyEntity(entity);\n}\n"],"names":[],"mappings":";;;AAoBO,SAAS,kBAAA,GAAsC;AACpD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAE7B,EAAA,OAAO,mBAAmB,MAAM,CAAA;AAClC;;;;"}
|