@backstage-community/plugin-servicenow 1.5.0 → 1.6.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/CHANGELOG.md +12 -0
- package/README.md +3 -3
- package/dist/alpha/plugin.esm.js +1 -0
- package/dist/alpha/plugin.esm.js.map +1 -1
- package/dist/alpha.d.ts +95 -1
- package/dist/alpha.esm.js +3 -1
- package/dist/alpha.esm.js.map +1 -1
- package/dist/api/ServiceNowBackendClient.esm.js +10 -1
- package/dist/api/ServiceNowBackendClient.esm.js.map +1 -1
- package/dist/components/Router.esm.js +10 -0
- package/dist/components/Router.esm.js.map +1 -0
- package/dist/components/Servicenow/EntityServicenowContent.esm.js +35 -17
- package/dist/components/Servicenow/EntityServicenowContent.esm.js.map +1 -1
- package/dist/components/Servicenow/IncidentsFilter.esm.js +9 -5
- package/dist/components/Servicenow/IncidentsFilter.esm.js.map +1 -1
- package/dist/components/Servicenow/IncidentsListColumns.esm.js +43 -39
- package/dist/components/Servicenow/IncidentsListColumns.esm.js.map +1 -1
- package/dist/components/Servicenow/IncidentsTableBody.esm.js +6 -3
- package/dist/components/Servicenow/IncidentsTableBody.esm.js.map +1 -1
- package/dist/components/Servicenow/IncidentsTableHeader.esm.js +3 -2
- package/dist/components/Servicenow/IncidentsTableHeader.esm.js.map +1 -1
- package/dist/components/Servicenow/IncidentsTableRow.esm.js +8 -4
- package/dist/components/Servicenow/IncidentsTableRow.esm.js.map +1 -1
- package/dist/components/shared-components/IncidentEnumFilter.esm.js +2 -3
- package/dist/components/shared-components/IncidentEnumFilter.esm.js.map +1 -1
- package/dist/hooks/useTranslation.esm.js +13 -0
- package/dist/hooks/useTranslation.esm.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.esm.js +1 -1
- package/dist/plugin.esm.js +9 -1
- package/dist/plugin.esm.js.map +1 -1
- package/dist/translations/de.esm.js +37 -0
- package/dist/translations/de.esm.js.map +1 -0
- package/dist/translations/es.esm.js +37 -0
- package/dist/translations/es.esm.js.map +1 -0
- package/dist/translations/fr.esm.js +37 -0
- package/dist/translations/fr.esm.js.map +1 -0
- package/dist/translations/index.esm.js +16 -0
- package/dist/translations/index.esm.js.map +1 -0
- package/dist/translations/it.esm.js +37 -0
- package/dist/translations/it.esm.js.map +1 -0
- package/dist/translations/ja.esm.js +37 -0
- package/dist/translations/ja.esm.js.map +1 -0
- package/dist/translations/ref.esm.js +53 -0
- package/dist/translations/ref.esm.js.map +1 -0
- package/dist/utils/incidentUtils.esm.js +75 -3
- package/dist/utils/incidentUtils.esm.js.map +1 -1
- package/dist/utils/queryParamsUtils.esm.js +7 -5
- package/dist/utils/queryParamsUtils.esm.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
2
|
+
|
|
3
|
+
const servicenowMessages = {
|
|
4
|
+
page: {
|
|
5
|
+
title: "ServiceNow tickets",
|
|
6
|
+
titleWithCount: "ServiceNow tickets ({{count}})"
|
|
7
|
+
},
|
|
8
|
+
table: {
|
|
9
|
+
searchPlaceholder: "Search",
|
|
10
|
+
labelRowsSelect: "{{count}} rows",
|
|
11
|
+
columns: {
|
|
12
|
+
incidentNumber: "Incident Number",
|
|
13
|
+
description: "Description",
|
|
14
|
+
created: "Created",
|
|
15
|
+
priority: "Priority",
|
|
16
|
+
state: "State",
|
|
17
|
+
actions: "Actions"
|
|
18
|
+
},
|
|
19
|
+
emptyContent: "No records found"
|
|
20
|
+
},
|
|
21
|
+
filter: {
|
|
22
|
+
state: "State",
|
|
23
|
+
priority: "Priority"
|
|
24
|
+
},
|
|
25
|
+
priority: {
|
|
26
|
+
critical: "Critical",
|
|
27
|
+
high: "High",
|
|
28
|
+
moderate: "Moderate",
|
|
29
|
+
low: "Low",
|
|
30
|
+
planning: "Planning"
|
|
31
|
+
},
|
|
32
|
+
incidentState: {
|
|
33
|
+
new: "New",
|
|
34
|
+
inProgress: "In Progress",
|
|
35
|
+
onHold: "On Hold",
|
|
36
|
+
resolved: "Resolved",
|
|
37
|
+
closed: "Closed",
|
|
38
|
+
cancelled: "Cancelled"
|
|
39
|
+
},
|
|
40
|
+
errors: {
|
|
41
|
+
loadingIncidents: "Error loading incidents: {{error}}"
|
|
42
|
+
},
|
|
43
|
+
actions: {
|
|
44
|
+
openInServicenow: "Open in ServiceNow"
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const servicenowTranslationRef = createTranslationRef({
|
|
48
|
+
id: "plugin.servicenow",
|
|
49
|
+
messages: servicenowMessages
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
export { servicenowMessages, servicenowTranslationRef };
|
|
53
|
+
//# sourceMappingURL=ref.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ref.esm.js","sources":["../../src/translations/ref.ts"],"sourcesContent":["/*\n * Copyright 2025 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 */\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nexport const servicenowMessages = {\n page: {\n title: 'ServiceNow tickets',\n titleWithCount: 'ServiceNow tickets ({{count}})',\n },\n table: {\n searchPlaceholder: 'Search',\n labelRowsSelect: '{{count}} rows',\n columns: {\n incidentNumber: 'Incident Number',\n description: 'Description',\n created: 'Created',\n priority: 'Priority',\n state: 'State',\n actions: 'Actions',\n },\n emptyContent: 'No records found',\n },\n filter: {\n state: 'State',\n priority: 'Priority',\n },\n priority: {\n critical: 'Critical',\n high: 'High',\n moderate: 'Moderate',\n low: 'Low',\n planning: 'Planning',\n },\n incidentState: {\n new: 'New',\n inProgress: 'In Progress',\n onHold: 'On Hold',\n resolved: 'Resolved',\n closed: 'Closed',\n cancelled: 'Cancelled',\n },\n errors: {\n loadingIncidents: 'Error loading incidents: {{error}}',\n },\n actions: {\n openInServicenow: 'Open in ServiceNow',\n },\n};\n\n/**\n * Translation reference for the ServiceNow plugin.\n * @alpha\n */\nexport const servicenowTranslationRef = createTranslationRef({\n id: 'plugin.servicenow',\n messages: servicenowMessages,\n});\n"],"names":[],"mappings":";;AAiBO,MAAM,kBAAqB,GAAA;AAAA,EAChC,IAAM,EAAA;AAAA,IACJ,KAAO,EAAA,oBAAA;AAAA,IACP,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,KAAO,EAAA;AAAA,IACL,iBAAmB,EAAA,QAAA;AAAA,IACnB,eAAiB,EAAA,gBAAA;AAAA,IACjB,OAAS,EAAA;AAAA,MACP,cAAgB,EAAA,iBAAA;AAAA,MAChB,WAAa,EAAA,aAAA;AAAA,MACb,OAAS,EAAA,SAAA;AAAA,MACT,QAAU,EAAA,UAAA;AAAA,MACV,KAAO,EAAA,OAAA;AAAA,MACP,OAAS,EAAA;AAAA,KACX;AAAA,IACA,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,OAAA;AAAA,IACP,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,QAAU,EAAA,UAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,UAAA;AAAA,IACV,GAAK,EAAA,KAAA;AAAA,IACL,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,aAAe,EAAA;AAAA,IACb,GAAK,EAAA,KAAA;AAAA,IACL,UAAY,EAAA,aAAA;AAAA,IACZ,MAAQ,EAAA,SAAA;AAAA,IACR,QAAU,EAAA,UAAA;AAAA,IACV,MAAQ,EAAA,QAAA;AAAA,IACR,SAAW,EAAA;AAAA,GACb;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,gBAAkB,EAAA;AAAA,GACpB;AAAA,EACA,OAAS,EAAA;AAAA,IACP,gBAAkB,EAAA;AAAA;AAEtB;AAMO,MAAM,2BAA2B,oBAAqB,CAAA;AAAA,EAC3D,EAAI,EAAA,mBAAA;AAAA,EACJ,QAAU,EAAA;AACZ,CAAC;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useMemo } from 'react';
|
|
2
3
|
import LabelImportantIcon from '@mui/icons-material/LabelImportant';
|
|
3
4
|
import KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';
|
|
4
5
|
import KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';
|
|
@@ -10,6 +11,7 @@ import { ModerateIcon } from '../components/Servicenow/ModerateIcon.esm.js';
|
|
|
10
11
|
import { InProgressIcon } from '../components/Servicenow/InProgressIcon.esm.js';
|
|
11
12
|
import { ClosedIcon } from '../components/Servicenow/ClosedIcon.esm.js';
|
|
12
13
|
import Typography from '@mui/material/Typography';
|
|
14
|
+
import { useTranslation } from '../hooks/useTranslation.esm.js';
|
|
13
15
|
|
|
14
16
|
const iconStyleBase = { marginRight: 8 };
|
|
15
17
|
const typographyStyleBase = { display: "flex", alignItems: "center" };
|
|
@@ -33,6 +35,78 @@ const INCIDENT_STATE_MAP = {
|
|
|
33
35
|
7: { Icon: ClosedIcon, color: "#6A6E73", label: "Closed" },
|
|
34
36
|
8: { Icon: ClosedIcon, color: "#6A6E73", label: "Cancelled" }
|
|
35
37
|
};
|
|
38
|
+
const usePriorityMap = () => {
|
|
39
|
+
const { t } = useTranslation();
|
|
40
|
+
return useMemo(
|
|
41
|
+
() => ({
|
|
42
|
+
1: {
|
|
43
|
+
Icon: LabelImportantIcon,
|
|
44
|
+
color: "#C9190B",
|
|
45
|
+
label: t("priority.critical"),
|
|
46
|
+
transform: "rotate(-90deg)"
|
|
47
|
+
},
|
|
48
|
+
2: {
|
|
49
|
+
Icon: KeyboardDoubleArrowUpIcon,
|
|
50
|
+
color: "#EC7A08",
|
|
51
|
+
label: t("priority.high")
|
|
52
|
+
},
|
|
53
|
+
3: {
|
|
54
|
+
Icon: ModerateIcon,
|
|
55
|
+
color: "#F0AB00",
|
|
56
|
+
label: t("priority.moderate")
|
|
57
|
+
},
|
|
58
|
+
4: {
|
|
59
|
+
Icon: KeyboardDoubleArrowDownIcon,
|
|
60
|
+
color: "#2B9AF3",
|
|
61
|
+
label: t("priority.low")
|
|
62
|
+
},
|
|
63
|
+
5: {
|
|
64
|
+
Icon: FormatListNumberedIcon,
|
|
65
|
+
color: "#6A6E73",
|
|
66
|
+
label: t("priority.planning")
|
|
67
|
+
}
|
|
68
|
+
}),
|
|
69
|
+
[t]
|
|
70
|
+
);
|
|
71
|
+
};
|
|
72
|
+
const useIncidentStateMap = () => {
|
|
73
|
+
const { t } = useTranslation();
|
|
74
|
+
return useMemo(
|
|
75
|
+
() => ({
|
|
76
|
+
1: {
|
|
77
|
+
Icon: PendingOutlinedIcon,
|
|
78
|
+
color: "#6A6E73",
|
|
79
|
+
label: t("incidentState.new")
|
|
80
|
+
},
|
|
81
|
+
2: {
|
|
82
|
+
Icon: InProgressIcon,
|
|
83
|
+
color: "#6A6E73",
|
|
84
|
+
label: t("incidentState.inProgress")
|
|
85
|
+
},
|
|
86
|
+
3: {
|
|
87
|
+
Icon: PauseCircleOutlineIcon,
|
|
88
|
+
color: "#6A6E73",
|
|
89
|
+
label: t("incidentState.onHold")
|
|
90
|
+
},
|
|
91
|
+
6: {
|
|
92
|
+
Icon: CheckCircleOutlineIcon,
|
|
93
|
+
color: "#3E8635",
|
|
94
|
+
label: t("incidentState.resolved")
|
|
95
|
+
},
|
|
96
|
+
7: {
|
|
97
|
+
Icon: ClosedIcon,
|
|
98
|
+
color: "#6A6E73",
|
|
99
|
+
label: t("incidentState.closed")
|
|
100
|
+
},
|
|
101
|
+
8: {
|
|
102
|
+
Icon: ClosedIcon,
|
|
103
|
+
color: "#6A6E73",
|
|
104
|
+
label: t("incidentState.cancelled")
|
|
105
|
+
}
|
|
106
|
+
}),
|
|
107
|
+
[t]
|
|
108
|
+
);
|
|
109
|
+
};
|
|
36
110
|
const renderStatusLabel = (data) => {
|
|
37
111
|
if (!data) return "";
|
|
38
112
|
const { Icon, color, label, transform } = data;
|
|
@@ -51,8 +125,6 @@ const renderStatusLabel = (data) => {
|
|
|
51
125
|
label
|
|
52
126
|
] });
|
|
53
127
|
};
|
|
54
|
-
const getPriorityValue = (priority) => renderStatusLabel(PRIORITY_MAP[priority]);
|
|
55
|
-
const getIncidentStateValue = (state) => renderStatusLabel(INCIDENT_STATE_MAP[state]);
|
|
56
128
|
|
|
57
|
-
export { INCIDENT_STATE_MAP, PRIORITY_MAP,
|
|
129
|
+
export { INCIDENT_STATE_MAP, PRIORITY_MAP, renderStatusLabel, useIncidentStateMap, usePriorityMap };
|
|
58
130
|
//# sourceMappingURL=incidentUtils.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incidentUtils.esm.js","sources":["../../src/utils/incidentUtils.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 */\nimport { ElementType } from 'react';\nimport LabelImportantIcon from '@mui/icons-material/LabelImportant';\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';\nimport FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered';\nimport PendingOutlinedIcon from '@mui/icons-material/PendingOutlined';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';\nimport { ModerateIcon } from '../components/Servicenow/ModerateIcon';\nimport { InProgressIcon } from '../components/Servicenow/InProgressIcon';\nimport { ClosedIcon } from '../components/Servicenow/ClosedIcon';\n\nimport Typography from '@mui/material/Typography';\n\
|
|
1
|
+
{"version":3,"file":"incidentUtils.esm.js","sources":["../../src/utils/incidentUtils.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 */\nimport { ElementType, useMemo } from 'react';\nimport LabelImportantIcon from '@mui/icons-material/LabelImportant';\nimport KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown';\nimport KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp';\nimport FormatListNumberedIcon from '@mui/icons-material/FormatListNumbered';\nimport PendingOutlinedIcon from '@mui/icons-material/PendingOutlined';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';\nimport { ModerateIcon } from '../components/Servicenow/ModerateIcon';\nimport { InProgressIcon } from '../components/Servicenow/InProgressIcon';\nimport { ClosedIcon } from '../components/Servicenow/ClosedIcon';\n\nimport Typography from '@mui/material/Typography';\nimport { useTranslation } from '../hooks/useTranslation';\n\nexport interface StatusData {\n Icon: ElementType;\n color: string;\n label: string;\n transform?: string;\n}\n\nconst iconStyleBase = { marginRight: 8 };\nconst typographyStyleBase = { display: 'flex', alignItems: 'center' };\n\n/**\n * @deprecated Use usePriorityMap hook for translated labels\n */\nexport const PRIORITY_MAP: Record<number, StatusData> = {\n 1: {\n Icon: LabelImportantIcon,\n color: '#C9190B',\n label: 'Critical',\n transform: 'rotate(-90deg)',\n },\n 2: { Icon: KeyboardDoubleArrowUpIcon, color: '#EC7A08', label: 'High' },\n 3: { Icon: ModerateIcon, color: '#F0AB00', label: 'Moderate' },\n 4: { Icon: KeyboardDoubleArrowDownIcon, color: '#2B9AF3', label: 'Low' },\n 5: { Icon: FormatListNumberedIcon, color: '#6A6E73', label: 'Planning' },\n};\n\n/**\n * @deprecated Use useIncidentStateMap hook for translated labels\n */\nexport const INCIDENT_STATE_MAP: Record<number, StatusData> = {\n 1: { Icon: PendingOutlinedIcon, color: '#6A6E73', label: 'New' },\n 2: { Icon: InProgressIcon, color: '#6A6E73', label: 'In Progress' },\n 3: { Icon: PauseCircleOutlineIcon, color: '#6A6E73', label: 'On Hold' },\n 6: { Icon: CheckCircleOutlineIcon, color: '#3E8635', label: 'Resolved' },\n 7: { Icon: ClosedIcon, color: '#6A6E73', label: 'Closed' },\n 8: { Icon: ClosedIcon, color: '#6A6E73', label: 'Cancelled' },\n};\n\n/**\n * Hook to get translated priority map\n */\nexport const usePriorityMap = (): Record<number, StatusData> => {\n const { t } = useTranslation();\n\n return useMemo(\n () => ({\n 1: {\n Icon: LabelImportantIcon,\n color: '#C9190B',\n label: t('priority.critical'),\n transform: 'rotate(-90deg)',\n },\n 2: {\n Icon: KeyboardDoubleArrowUpIcon,\n color: '#EC7A08',\n label: t('priority.high'),\n },\n 3: {\n Icon: ModerateIcon,\n color: '#F0AB00',\n label: t('priority.moderate'),\n },\n 4: {\n Icon: KeyboardDoubleArrowDownIcon,\n color: '#2B9AF3',\n label: t('priority.low'),\n },\n 5: {\n Icon: FormatListNumberedIcon,\n color: '#6A6E73',\n label: t('priority.planning'),\n },\n }),\n [t],\n );\n};\n\n/**\n * Hook to get translated incident state map\n */\nexport const useIncidentStateMap = (): Record<number, StatusData> => {\n const { t } = useTranslation();\n\n return useMemo(\n () => ({\n 1: {\n Icon: PendingOutlinedIcon,\n color: '#6A6E73',\n label: t('incidentState.new'),\n },\n 2: {\n Icon: InProgressIcon,\n color: '#6A6E73',\n label: t('incidentState.inProgress'),\n },\n 3: {\n Icon: PauseCircleOutlineIcon,\n color: '#6A6E73',\n label: t('incidentState.onHold'),\n },\n 6: {\n Icon: CheckCircleOutlineIcon,\n color: '#3E8635',\n label: t('incidentState.resolved'),\n },\n 7: {\n Icon: ClosedIcon,\n color: '#6A6E73',\n label: t('incidentState.closed'),\n },\n 8: {\n Icon: ClosedIcon,\n color: '#6A6E73',\n label: t('incidentState.cancelled'),\n },\n }),\n [t],\n );\n};\n\nexport const renderStatusLabel = (data?: StatusData) => {\n if (!data) return '';\n\n const { Icon, color, label, transform } = data;\n return (\n <Typography variant=\"body2\" style={typographyStyleBase}>\n <Icon\n fontSize=\"small\"\n style={{\n color,\n marginRight: iconStyleBase.marginRight,\n ...(transform ? { transform } : {}),\n }}\n />\n {label}\n </Typography>\n );\n};\n\nexport const getPriorityValue = (priority: number) =>\n renderStatusLabel(PRIORITY_MAP[priority]);\nexport const getIncidentStateValue = (state: number) =>\n renderStatusLabel(INCIDENT_STATE_MAP[state]);\n"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
function buildIncidentQueryParams({
|
|
2
2
|
userEmail,
|
|
3
|
-
entityId,
|
|
4
3
|
limit,
|
|
5
4
|
offset,
|
|
6
5
|
order,
|
|
7
6
|
orderBy,
|
|
8
7
|
search,
|
|
9
8
|
priority,
|
|
10
|
-
state
|
|
9
|
+
state,
|
|
10
|
+
...annotations
|
|
11
11
|
}) {
|
|
12
12
|
const params = {
|
|
13
13
|
order,
|
|
@@ -24,12 +24,14 @@ function buildIncidentQueryParams({
|
|
|
24
24
|
if (search) {
|
|
25
25
|
params.search = search;
|
|
26
26
|
}
|
|
27
|
-
if (entityId) {
|
|
28
|
-
params.entityId = entityId;
|
|
29
|
-
}
|
|
30
27
|
if (userEmail) {
|
|
31
28
|
params.userEmail = userEmail;
|
|
32
29
|
}
|
|
30
|
+
for (const key in annotations) {
|
|
31
|
+
if (key in annotations) {
|
|
32
|
+
params[key] = annotations[key];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
33
35
|
return new URLSearchParams(params);
|
|
34
36
|
}
|
|
35
37
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryParamsUtils.esm.js","sources":["../../src/utils/queryParamsUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { IncidentTableField } from '../types';\n\nexport function buildIncidentQueryParams({\n userEmail,\n
|
|
1
|
+
{"version":3,"file":"queryParamsUtils.esm.js","sources":["../../src/utils/queryParamsUtils.ts"],"sourcesContent":["/*\n * Copyright 2025 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 { IncidentTableField } from '../types';\n\nexport function buildIncidentQueryParams({\n userEmail,\n limit,\n offset,\n order,\n orderBy,\n search,\n priority,\n state,\n ...annotations\n}: {\n limit: number;\n offset: number;\n order: 'asc' | 'desc';\n orderBy: IncidentTableField;\n search?: string;\n priority?: string[];\n state?: string[];\n userEmail?: string;\n [key: string]: any;\n}) {\n const params: Record<string, string> = {\n order,\n orderBy,\n limit: String(limit),\n offset: String(offset),\n };\n\n if (priority?.length) {\n params.priority = `IN${priority.join(',')}`;\n }\n\n if (state?.length) {\n params.state = `IN${state.join(',')}`;\n }\n\n if (search) {\n params.search = search;\n }\n\n if (userEmail) {\n params.userEmail = userEmail;\n }\n\n for (const key in annotations) {\n if (key in annotations) {\n params[key] = annotations[key];\n }\n }\n\n return new URLSearchParams(params);\n}\n"],"names":[],"mappings":"AAkBO,SAAS,wBAAyB,CAAA;AAAA,EACvC,SAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAG;AACL,CAUG,EAAA;AACD,EAAA,MAAM,MAAiC,GAAA;AAAA,IACrC,KAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,IACnB,MAAA,EAAQ,OAAO,MAAM;AAAA,GACvB;AAEA,EAAA,IAAI,UAAU,MAAQ,EAAA;AACpB,IAAA,MAAA,CAAO,QAAW,GAAA,CAAA,EAAA,EAAK,QAAS,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA;AAG3C,EAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,IAAA,MAAA,CAAO,KAAQ,GAAA,CAAA,EAAA,EAAK,KAAM,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA;AAGrC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAA,MAAA,CAAO,MAAS,GAAA,MAAA;AAAA;AAGlB,EAAA,IAAI,SAAW,EAAA;AACb,IAAA,MAAA,CAAO,SAAY,GAAA,SAAA;AAAA;AAGrB,EAAA,KAAA,MAAW,OAAO,WAAa,EAAA;AAC7B,IAAA,IAAI,OAAO,WAAa,EAAA;AACtB,MAAO,MAAA,CAAA,GAAG,CAAI,GAAA,WAAA,CAAY,GAAG,CAAA;AAAA;AAC/B;AAGF,EAAO,OAAA,IAAI,gBAAgB,MAAM,CAAA;AACnC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage-community/plugin-servicenow",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/index.esm.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -81,11 +81,13 @@
|
|
|
81
81
|
"react-router-dom": "^6.0.0"
|
|
82
82
|
},
|
|
83
83
|
"devDependencies": {
|
|
84
|
+
"@axe-core/playwright": "^4.11.0",
|
|
84
85
|
"@backstage/cli": "^0.34.5",
|
|
85
86
|
"@backstage/core-app-api": "^1.19.2",
|
|
86
87
|
"@backstage/dev-utils": "^1.1.17",
|
|
87
88
|
"@backstage/test-utils": "^1.7.13",
|
|
88
89
|
"@material-ui/core": "^4.12.4",
|
|
90
|
+
"@playwright/test": "^1.57.0",
|
|
89
91
|
"@testing-library/jest-dom": "^6.0.0",
|
|
90
92
|
"@testing-library/react": "^14.0.0",
|
|
91
93
|
"@testing-library/user-event": "^14.0.0",
|