@spotify/backstage-plugin-soundcheck 0.4.1 → 0.4.2
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 +9 -0
- package/config.d.ts +4 -0
- package/dist/esm/{EntitySoundcheckContent-d0819302.esm.js → EntitySoundcheckContent-ec837784.esm.js} +2 -2
- package/dist/esm/RefetchingIndicator-4f009bca.esm.js +2 -0
- package/dist/esm/{index-9d77be51.esm.js → index-7b7b98c2.esm.js} +2 -2
- package/dist/esm/index-ab8d0702.esm.js +217 -0
- package/dist/esm/index-b2b00eb3.esm.js +2 -0
- package/dist/index.esm.js +1 -1
- package/package.json +13 -11
- package/dist/esm/RefetchingIndicator-96188300.esm.js +0 -2
- package/dist/esm/index-5d64d93c.esm.js +0 -157
- package/dist/esm/index-808077a4.esm.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @spotify/backstage-plugin-soundcheck
|
|
2
2
|
|
|
3
|
+
## 0.4.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Upgraded to Backstage `v1.14.0`
|
|
8
|
+
- Implemented numerous enhancements to ensure compliance with accessibility standards.
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
- @spotify/backstage-plugin-core@0.5.2
|
|
11
|
+
|
|
3
12
|
## 0.4.1
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
package/config.d.ts
CHANGED
package/dist/esm/{EntitySoundcheckContent-d0819302.esm.js → EntitySoundcheckContent-ec837784.esm.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useState as
|
|
2
|
-
//# sourceMappingURL=EntitySoundcheckContent-
|
|
1
|
+
import e,{useState as $,useEffect as M}from"react";import{Link as O,useParams as Q,Routes as j,Route as k,Navigate as I}from"react-router-dom";import{makeStyles as p,Typography as f,Box as U,Tab as L,Tabs as T,Paper as V,Divider as Y}from"@material-ui/core";import{SpotifyLicenseBanner as q}from"@spotify/backstage-plugin-core";import{useEntity as u}from"@backstage/plugin-catalog-react";import{R as G}from"./RefetchingIndicator-4f009bca.esm.js";import{s as H,R as c,A as y,F as P,a as J,u as x,L as K,N as X,b,c as g,d as Z,C as _,e as B,S as ee}from"./index-ab8d0702.esm.js";import{Skeleton as s}from"@material-ui/lab";import{MarkdownContent as F}from"@backstage/core-components";import{stringifyEntityRef as te}from"@backstage/catalog-model";import{useApi as ae,useRouteRef as C,useRouteRefParams as re}from"@backstage/core-plugin-api";import{useQuery as ne}from"@tanstack/react-query";import ie from"react-use/lib/useMeasure";import A from"react-use/lib/usePrevious";import le from"react-confetti";import"react-use/lib/useDebounce";import"graphql-request";import"graphql-tag";import"lodash";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";function oe(t,r,a){const n=ae(H),i=te(t);return ne(["soundcheck/check-details",i,r,a],async()=>n.getCheckResultDetails(i,r,a),{enabled:!!r&&!!a})}const ce=p({markdownContent:{"& :last-child":{marginBottom:0}}}),se=({state:t,notes:r})=>{const a=ce(),n={[c.Passed]:"success",[c.Failed]:"error",[c.NotReported]:"info",[c.NotApplicable]:"info"}[t],i={[c.Passed]:"Check passed",[c.Failed]:"Check did not pass",[c.NotReported]:"Check not reported",[c.NotApplicable]:"Check not applicable"}[t];return e.createElement(y,{severity:n,title:i},r?e.createElement(F,{className:a.markdownContent,content:r}):null)},me=()=>{const t=D();return e.createElement(P,null,e.createElement("div",{className:t.root,"data-testid":"check-details-view"},e.createElement("div",{className:t.topBar},e.createElement(f,{variant:"h2",className:t.title},e.createElement(s,{width:300,height:32})),e.createElement(s,{width:100,height:32})),e.createElement(s,{variant:"rect",height:120}),e.createElement("div",{"data-testid":"soundcheck-check-details-description"},e.createElement(f,{variant:"h3"},e.createElement(s,null)),e.createElement(s,null),e.createElement(s,null),e.createElement(s,null))))},D=p(t=>({root:{padding:`${t.spacing(3)}px ${t.spacing(5)}px`},title:{fontWeight:"normal",fontSize:t.typography.h5.fontSize},description:{padding:`${t.spacing(3)}px 0`},subtitle:{fontWeight:"normal",fontSize:t.typography.h6.fontSize},topBar:{display:"flex",justifyContent:"space-between",marginBottom:t.spacing(2)}})),de=({programId:t,checkId:r})=>{const a=D(),{entity:n}=u(),{data:i,isLoading:l,isError:o}=oe(n,t,r);if(o)return e.createElement(U,{padding:2},e.createElement(y,{severity:"error",title:"Error loading check details"}));if(l||!t||!r)return e.createElement(me,null);if(!i)return null;const{name:h,description:d,result:v,timestamp:m,notes:E}=i;return e.createElement("div",{className:a.root,"data-testid":"check-details-view"},e.createElement("div",{className:a.topBar},e.createElement(f,{variant:"h2",className:a.title},h),m?e.createElement(J,{timestamp:m,description:"Last updated"}):null),e.createElement(se,{state:v,notes:E}),e.createElement("div",{className:a.description,"data-testid":"soundcheck-check-details-description"},e.createElement(f,{variant:"h3",className:a.subtitle},"Description"),e.createElement(F,{content:d})))},pe=p(()=>({root:{position:"absolute",width:"100%",height:"100%"}})),ue=({programId:t})=>{var r,a;const n=pe(),{entity:i}=u(),{data:l,isLoading:o}=x(i,t),[h,{width:d,height:v}]=ie(),m=o?void 0:(a=(r=l==null?void 0:l.highestLevel)==null?void 0:r.ordinal)!=null?a:-1,E=A(m),R=A(t),[W,S]=$(!1);return M(()=>{typeof E!="undefined"&&typeof m!="undefined"&&t===R&&m>E&&S(!0)},[m,E,t,R]),W?e.createElement("div",{ref:h,className:n.root},e.createElement(le,{width:d,height:v,numberOfPieces:1e3,gravity:1,initialVelocityY:20,recycle:!1,onConfettiComplete:()=>S(!1)})):null},z=p(t=>({root:{maxWidth:"80ch",textTransform:"uppercase",paddingTop:t.spacing(2),paddingBottom:t.spacing(2)},wrapper:{display:"inline-block",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},badge:{marginRight:t.spacing(1)}})),he=({id:t,name:r,badge:a,href:n,selected:i=!1})=>{const l=z();return e.createElement(L,{className:l.root,classes:{wrapper:l.wrapper},value:t,label:e.createElement(e.Fragment,null,a?e.createElement(K,{badge:a,className:l.badge}):e.createElement(X,{className:l.badge}),r),component:O,to:n,selected:i})},w=()=>{const t=z();return e.createElement(L,{className:t.root,classes:{wrapper:t.wrapper},label:e.createElement(s,{width:180})})},Ee=()=>e.createElement(P,null,e.createElement(T,{value:!1,indicatorColor:"primary"},e.createElement(w,null),e.createElement(w,null),e.createElement(w,null)));function fe(t=[],r){const a=t.findIndex(n=>n.program.id===r);return a<0?!1:a}const ge=({programId:t})=>{const{entity:r}=u(),{isLoading:a,data:n}=b(r),i=C(g);if(a||!t)return e.createElement(Ee,null);const l=fe(n,t);return e.createElement(T,{value:l,indicatorColor:"primary","aria-label":"Certifications",variant:"scrollable"},n&&n.map(({program:{id:o,name:h},highestLevel:d})=>e.createElement(he,{key:o,id:o,name:h,badge:d==null?void 0:d.badge,selected:o===t,href:i({programId:o})})))},ve=p({paper:{overflow:"hidden",position:"relative"},view:{display:"grid",gridTemplateColumns:"1fr 2fr"}}),ke=()=>{const{programId:t,checkId:r}=Q(),a=ve(),{entity:n}=u(),{isError:i,isFetched:l,data:o}=b(n);return i?e.createElement(y,{severity:"error",title:"Error loading certifications"}):l&&!(o!=null&&o.length)?e.createElement(Z,null):e.createElement(V,{className:a.paper},e.createElement(G,null),e.createElement(ge,{programId:t}),e.createElement(Y,null),e.createElement("div",{"data-testid":"soundcheck-certification-view",className:a.view},e.createElement(_,{programId:t,checkId:r}),e.createElement(de,{programId:t,checkId:r}),e.createElement(ue,{programId:t})))},ye=p(t=>({root:{"&:not(:first-child)":{marginTop:t.spacing(2)}}})),N=()=>{const t=ye();return e.createElement(e.Fragment,null,e.createElement(q,{backend:"soundcheck",invalidLicenseMessage:"Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present.",inline:!0}),e.createElement("div",{className:t.root},e.createElement(ke,null)))},be=()=>{var t;const{entity:r}=u(),a=C(g),{data:n}=b(r),i=(t=n==null?void 0:n[0])==null?void 0:t.program.id;return i?e.createElement(I,{to:a({programId:i}),replace:!0}):null},Ce=()=>{var t,r;const{entity:a}=u(),{programId:n}=re(g),i=C(B),{data:l}=x(a,n),o=(r=(t=l==null?void 0:l.levels[0])==null?void 0:t.checks[0])==null?void 0:r.id;return o?e.createElement(I,{to:i({programId:n,checkId:o}),replace:!0}):null},we=()=>e.createElement(j,null,e.createElement(k,{path:"/",element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(be,null))}),e.createElement(k,{path:g.path,element:e.createElement(e.Fragment,null,e.createElement(N,null),e.createElement(Ce,null))}),e.createElement(k,{path:B.path,element:e.createElement(N,null)})),Ne=()=>e.createElement(ee,null,e.createElement(we,null));export{Ne as EntitySoundcheckContent};
|
|
2
|
+
//# sourceMappingURL=EntitySoundcheckContent-ec837784.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t,{useState as n}from"react";import{makeStyles as a,LinearProgress as m}from"@material-ui/core";import s from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import{F as d}from"./index-ab8d0702.esm.js";import"@backstage/plugin-catalog-react";import"react-router-dom";const p=a(e=>({indicator:{position:"absolute",width:"100%",zIndex:e.zIndex.speedDial}})),l=()=>{const e=c(),i=p(),[r,o]=n(!!e);return s(()=>{o(!!e)},250,[e]),r?t.createElement(d,null,t.createElement("div",{className:i.indicator},t.createElement(m,{variant:"indeterminate","data-testid":"refetching-indicator"}))):null};export{l as R};
|
|
2
|
+
//# sourceMappingURL=RefetchingIndicator-4f009bca.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"react";import{S as o,f as i}from"./index-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import t from"react";import{S as o,f as i}from"./index-ab8d0702.esm.js";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";import"@tanstack/react-query";import"lodash";import"@material-ui/core/styles/makeStyles";import"@material-ui/core";import"@backstage/core-components";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-core";import"@backstage/catalog-model";import"react-router-dom";import"@material-ui/lab";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";const m=({title:r})=>t.createElement(o,null,t.createElement(i,{title:r}));export{m as EntitySoundcheckCard};
|
|
2
|
+
//# sourceMappingURL=index-7b7b98c2.esm.js.map
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import{createApiRef as Se,createRouteRef as H,createSubRouteRef as k,createPlugin as $e,createApiFactory as Ie,discoveryApiRef as Ne,fetchApiRef as De,createRoutableExtension as Q,createComponentExtension as Le,useApi as P,errorApiRef as Fe,useRouteRef as j}from"@backstage/core-plugin-api";import{GraphQLClient as Ae}from"graphql-request";import s from"graphql-tag";import t,{createContext as Pe,useState as O,useRef as Oe,useCallback as x,useContext as xe,useEffect as Te,Fragment as qe}from"react";import{QueryClient as ze,QueryClientProvider as Me,useQuery as V}from"@tanstack/react-query";import{memoize as Be}from"lodash";import We from"@material-ui/core/styles/makeStyles";import{makeStyles as p,Modal as Ge,Box as K,Typography as m,Button as _,Fade as Ue,alpha as E,Tooltip as He,withStyles as b,Divider as Qe}from"@material-ui/core";import{MarkdownContent as J,Link as X,EmptyState as Y,InfoCard as je}from"@backstage/core-components";import{useEntity as Z,humanizeEntityRef as Ve}from"@backstage/plugin-catalog-react";import{useAutoUpdatingRelativeTime as Ke,SpotifyLicenseBanner as _e}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as ee,parseEntityRef as Je}from"@backstage/catalog-model";import{Link as Xe}from"react-router-dom";import{Skeleton as f,Alert as Ye}from"@material-ui/lab";import R from"classnames";import Ze from"@material-ui/icons/Schedule";import{DateTime as te}from"luxon";import et from"@material-ui/icons/Check";import tt from"@material-ui/icons/Close";import rt from"@material-ui/icons/RemoveCircleOutline";import at from"@material-ui/icons/HelpOutline";var re=(e=>(e.Medal="MEDAL",e))(re||{}),h=(e=>(e.Failed="FAILED",e.NotApplicable="NOT_APPLICABLE",e.NotReported="NOT_REPORTED",e.Passed="PASSED",e))(h||{});const nt=s`
|
|
2
|
+
fragment CertificationSummary on Certification {
|
|
3
|
+
entityRef
|
|
4
|
+
program {
|
|
5
|
+
id
|
|
6
|
+
name
|
|
7
|
+
}
|
|
8
|
+
highestLevel {
|
|
9
|
+
ordinal
|
|
10
|
+
name
|
|
11
|
+
description
|
|
12
|
+
badge {
|
|
13
|
+
... on BadgeVariantMedal {
|
|
14
|
+
variant
|
|
15
|
+
options {
|
|
16
|
+
level
|
|
17
|
+
color
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
`,it=s`
|
|
24
|
+
fragment check on Check {
|
|
25
|
+
id
|
|
26
|
+
name
|
|
27
|
+
description
|
|
28
|
+
}
|
|
29
|
+
`,ot=s`
|
|
30
|
+
fragment CheckResultSummary on CheckResult {
|
|
31
|
+
id
|
|
32
|
+
name
|
|
33
|
+
result
|
|
34
|
+
timestamp
|
|
35
|
+
}
|
|
36
|
+
`,ct=s`
|
|
37
|
+
fragment LevelResultDetails on LevelResult {
|
|
38
|
+
ordinal
|
|
39
|
+
name
|
|
40
|
+
description
|
|
41
|
+
badge {
|
|
42
|
+
... on BadgeVariantMedal {
|
|
43
|
+
variant
|
|
44
|
+
options {
|
|
45
|
+
level
|
|
46
|
+
color
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
certified
|
|
51
|
+
checks {
|
|
52
|
+
...CheckResultSummary
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
${ot}`,lt=s`
|
|
56
|
+
fragment CheckResultDetails on CheckResult {
|
|
57
|
+
id
|
|
58
|
+
name
|
|
59
|
+
description
|
|
60
|
+
result
|
|
61
|
+
timestamp
|
|
62
|
+
notes
|
|
63
|
+
}
|
|
64
|
+
`,st=s`
|
|
65
|
+
fragment OverviewLevelResult on OverviewLevelResult {
|
|
66
|
+
ordinal
|
|
67
|
+
name
|
|
68
|
+
checks {
|
|
69
|
+
check {
|
|
70
|
+
id
|
|
71
|
+
name
|
|
72
|
+
description
|
|
73
|
+
}
|
|
74
|
+
results {
|
|
75
|
+
id
|
|
76
|
+
entityRef
|
|
77
|
+
result
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
`,ae=s`
|
|
82
|
+
fragment HighestLevel on LevelResult {
|
|
83
|
+
entityRef
|
|
84
|
+
ordinal
|
|
85
|
+
name
|
|
86
|
+
badge {
|
|
87
|
+
... on BadgeVariantMedal {
|
|
88
|
+
variant
|
|
89
|
+
options {
|
|
90
|
+
color
|
|
91
|
+
level
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`,mt=s`
|
|
97
|
+
mutation deleteChecker($checkerId: String!) {
|
|
98
|
+
deleteChecker(checkerId: $checkerId)
|
|
99
|
+
}
|
|
100
|
+
`,dt=s`
|
|
101
|
+
mutation deleteProgram($programId: String!) {
|
|
102
|
+
programDeleted: deleteProgram(programId: $programId)
|
|
103
|
+
}
|
|
104
|
+
`,pt=s`
|
|
105
|
+
query getAllCertifications($entityRef: String!) {
|
|
106
|
+
certifications(entityRef: $entityRef, includeFilteredChecks: false) {
|
|
107
|
+
...CertificationSummary
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
${nt}`,ut=s`
|
|
111
|
+
query getAllPrograms($programIds: [String!]) {
|
|
112
|
+
programs(programIds: $programIds) {
|
|
113
|
+
id
|
|
114
|
+
ownerEntityRef
|
|
115
|
+
name
|
|
116
|
+
description
|
|
117
|
+
documentationURL
|
|
118
|
+
levels {
|
|
119
|
+
ordinal
|
|
120
|
+
name
|
|
121
|
+
description
|
|
122
|
+
checks {
|
|
123
|
+
...check
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
${it}`,gt=s`
|
|
129
|
+
query getCertificationDetails($entityRef: String!, $programId: String!) {
|
|
130
|
+
programCertification(
|
|
131
|
+
entityRef: $entityRef
|
|
132
|
+
programId: $programId
|
|
133
|
+
includeFilteredChecks: false
|
|
134
|
+
) {
|
|
135
|
+
program {
|
|
136
|
+
id
|
|
137
|
+
name
|
|
138
|
+
description
|
|
139
|
+
documentationURL
|
|
140
|
+
}
|
|
141
|
+
highestLevel {
|
|
142
|
+
...HighestLevel
|
|
143
|
+
}
|
|
144
|
+
levels {
|
|
145
|
+
...LevelResultDetails
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
${ae}
|
|
150
|
+
${ct}`,ht=s`
|
|
151
|
+
query getCheckResultDetails($entityRef: String!, $programId: String!, $checkId: String!) {
|
|
152
|
+
checkResult(entityRef: $entityRef, programId: $programId, checkId: $checkId) {
|
|
153
|
+
...CheckResultDetails
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
${lt}`,ft=s`
|
|
157
|
+
query getCheckers($ids: [String!]) {
|
|
158
|
+
checkers(ids: $ids) {
|
|
159
|
+
id
|
|
160
|
+
ownerEntityRef
|
|
161
|
+
name
|
|
162
|
+
description
|
|
163
|
+
rule
|
|
164
|
+
passedMessage
|
|
165
|
+
failedMessage
|
|
166
|
+
isEditable
|
|
167
|
+
schedule {
|
|
168
|
+
... on Frequency {
|
|
169
|
+
cron
|
|
170
|
+
}
|
|
171
|
+
... on HumanDuration {
|
|
172
|
+
years
|
|
173
|
+
months
|
|
174
|
+
weeks
|
|
175
|
+
days
|
|
176
|
+
hours
|
|
177
|
+
minutes
|
|
178
|
+
seconds
|
|
179
|
+
milliseconds
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
`,yt=s`
|
|
185
|
+
query getFacetsForOwner($ownerEntityRef: String!) {
|
|
186
|
+
facetsForOwner(ownerEntityRef: $ownerEntityRef) {
|
|
187
|
+
types {
|
|
188
|
+
value
|
|
189
|
+
count
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
`,vt=s`
|
|
194
|
+
query getProgramOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput) {
|
|
195
|
+
programOverviewForOwner(
|
|
196
|
+
ownerEntityRef: $ownerEntityRef
|
|
197
|
+
facet: $facet
|
|
198
|
+
includeFilteredChecks: false
|
|
199
|
+
) {
|
|
200
|
+
programs {
|
|
201
|
+
program {
|
|
202
|
+
id
|
|
203
|
+
name
|
|
204
|
+
}
|
|
205
|
+
highestLevels {
|
|
206
|
+
...HighestLevel
|
|
207
|
+
}
|
|
208
|
+
levels {
|
|
209
|
+
...OverviewLevelResult
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
entityRefs
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
${ae}
|
|
216
|
+
${st}`,kt=(e,r,a)=>e();function Et(e,r=kt){return{deleteChecker(a,n){return r(i=>e.request(mt,a,{...n,...i}),"deleteChecker","mutation")},deleteProgram(a,n){return r(i=>e.request(dt,a,{...n,...i}),"deleteProgram","mutation")},getAllCertifications(a,n){return r(i=>e.request(pt,a,{...n,...i}),"getAllCertifications","query")},getAllPrograms(a,n){return r(i=>e.request(ut,a,{...n,...i}),"getAllPrograms","query")},getCertificationDetails(a,n){return r(i=>e.request(gt,a,{...n,...i}),"getCertificationDetails","query")},getCheckResultDetails(a,n){return r(i=>e.request(ht,a,{...n,...i}),"getCheckResultDetails","query")},getCheckers(a,n){return r(i=>e.request(ft,a,{...n,...i}),"getCheckers","query")},getFacetsForOwner(a,n){return r(i=>e.request(yt,a,{...n,...i}),"getFacetsForOwner","query")},getProgramOverviewForOwner(a,n){return r(i=>e.request(vt,a,{...n,...i}),"getProgramOverviewForOwner","query")}}}var ne=(e,r,a)=>{if(!r.has(e))throw TypeError("Cannot "+a)},l=(e,r,a)=>(ne(e,r,"read from private field"),a?a.call(e):r.get(e)),C=(e,r,a)=>{if(r.has(e))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(e):r.set(e,a)},T=(e,r,a,n)=>(ne(e,r,"write to private field"),n?n.call(e,a):r.set(e,a),a),S,$,d,q,u;const I=Se({id:"plugin.soundcheck"}),Ct=e=>"response"in e&&"errors"in e.response,wt=e=>"response"in e&&"message"in e.response;class bt{constructor(r){C(this,S,void 0),C(this,$,void 0),C(this,d,void 0),C(this,q,n=>{var i,o,c;return Ct(n)?(c=(o=(i=n.response)==null?void 0:i.errors)==null?void 0:o[0].message)!=null?c:`${n}`:wt(n)?n.response.message:`${n}`}),C(this,u,async n=>{try{return await n()}catch(i){throw new Error(`Error from Soundcheck backend: ${l(this,q).call(this,i)}`)}}),T(this,S,r.fetchApi),T(this,$,r.discoveryApi);const a=new Ae("/graphql",{fetch:async(n,i)=>{const o=`${await l(this,$).getBaseUrl("soundcheck")}${n}`;return l(this,S).fetch(o,i)}});T(this,d,Et(a))}async getAllCertifications(r){return l(this,u).call(this,async()=>{const{certifications:a}=await l(this,d).getAllCertifications({entityRef:r});return a})}async getCertificationDetails(r,a){return l(this,u).call(this,async()=>{const{programCertification:n}=await l(this,d).getCertificationDetails({entityRef:r,programId:a});return n})}async getCheckResultDetails(r,a,n){return l(this,u).call(this,async()=>{const{checkResult:i}=await l(this,d).getCheckResultDetails({entityRef:r,programId:a,checkId:n});return i})}async getFacetsForOwner(r){return l(this,u).call(this,async()=>{const{facetsForOwner:a}=await l(this,d).getFacetsForOwner({ownerEntityRef:r});return a})}async getProgramOverviewForOwner(r,a){return l(this,u).call(this,async()=>{const{programOverviewForOwner:n}=await l(this,d).getProgramOverviewForOwner({ownerEntityRef:r,facet:a});return n})}async getAllPrograms(r){return l(this,u).call(this,async()=>{const{programs:a}=await l(this,d).getAllPrograms({programIds:r});return a})}async deleteProgram(r){return l(this,u).call(this,async()=>{const{programDeleted:a}=await l(this,d).deleteProgram({programId:r});return a})}async getCheckers(r){return l(this,u).call(this,async()=>{const{checkers:a}=await l(this,d).getCheckers({ids:r});return a})}async deleteChecker(r){return l(this,u).call(this,async()=>await l(this,d).deleteChecker({checkerId:r}))}}S=new WeakMap,$=new WeakMap,d=new WeakMap,q=new WeakMap,u=new WeakMap;const N=H({id:"soundcheck-entity"}),ie=k({id:"soundcheck-entity-certification-program-redirect",parent:N,path:"/:programId"}),oe=k({id:"soundcheck-entity-certification",parent:N,path:"/:programId/:checkId"}),D=H({id:"soundcheck-overview"});k({id:"soundcheck-checks",parent:D,path:"/checks"}),k({id:"soundcheck-programs",parent:D,path:"/programs"}),k({id:"soundcheck-program-details",parent:D,path:"/program/:programId"});const L=$e({id:"soundcheck",apis:[Ie({api:I,deps:{discoveryApi:Ne,fetchApi:De},factory:e=>new bt(e)})],routes:{entityContent:N}}),Rt=L.provide(Q({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-ec837784.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:N})),St=L.provide(Le({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-7b7b98c2.esm.js").then(e=>e.EntitySoundcheckCard)}})),$t=L.provide(Q({name:"SoundcheckOverviewPage",component:()=>import("./index-b2b00eb3.esm.js").then(e=>e.OverviewPage),mountPoint:D})),It=Be(e=>new ze({defaultOptions:{queries:{refetchInterval:6e4,refetchIntervalInBackground:!1,refetchOnWindowFocus:"always",retry:2,retryDelay:r=>{const a=450+Math.ceil(Math.random()*100);return Math.min(a*2**r,3e4)},onError:r=>e.post(r)}}})),Nt=e=>{const r=P(Fe),a=It(r);return t.createElement(Me,{client:a},e.children)};function ce(e){const r=P(I),a=ee(e);return V(["soundcheck/certifications",a],async()=>r.getAllCertifications(a))}function le(e,r){const a=P(I),n=ee(e);return V(["soundcheck/certifications",n,r],async()=>a.getCertificationDetails(n,r),{enabled:!!r})}var se=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetCheckers="soundcheck/checkers",e))(se||{}),me=(e=>(e.DeleteChecker="soundcheck/deleteChecker",e.DeleteProgram="soundcheck/deleteProgram",e))(me||{});const Dt=p(()=>({modalContent:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",backgroundColor:"white"}})),de=Pe({}),Lt=e=>{const r=Dt(),[a,n]=O(!1),[i,o]=O(),c=Oe(),g=x(({title:w,message:be})=>(o({title:w,message:be}),n(!0),new Promise(Re=>{c.current=Re})),[]),v=x(()=>{c.current&&c.current(!0),n(!1)},[]),y=x(()=>{c.current&&c.current(!1),n(!1)},[]);return t.createElement(de.Provider,{value:{showModal:g}},e.children,i&&t.createElement(Ge,{open:a,onClose:y,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},t.createElement(K,{className:r.modalContent},t.createElement(m,{id:"confirmation-modal-title",variant:"h1"},i.title),t.createElement(m,{id:"confirmation-modal-description",variant:"body1"},i.message),t.createElement(_,{color:"secondary",onClick:y,variant:"contained","aria-label":"cancel"},"Cancel"),t.createElement(_,{color:"primary",onClick:v,variant:"contained","aria-label":"confirm"},"Confirm"))))},Ft=()=>xe(de),pe=24,At=11,z=e=>e==="small"?1:2,Pt=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${pe*z(e)}px`,height:({size:e})=>`${pe*z(e)}px`,fontSize:({size:e})=>`${At*z(e)}px`}}),ue=({className:e,label:r,size:a="small"})=>{const n=Pt({size:a});return t.createElement("span",{className:R(e,n.root),role:"img","aria-label":`${r} badge`},r)},Ot=p(e=>({root:{background:({color:r})=>r,color:e.palette.common.black,borderColor:e.palette.common.black,borderStyle:"solid","&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.18em 0 0 rgba(0, 0, 0, 0.25)","inset 0px 0.18em 0px 0px rgba(255, 255, 255, 0.5)","inset 0px 1.3em 0px -0.5em rgba(255, 255, 255, 0.2)"].join(",")}}})),M=({className:e,badge:r,size:a="small"})=>{const n=Ot({color:r.options.color,size:a});return t.createElement(ue,{className:R(e,n.root),size:a,label:`L${r.options.level}`})},xt=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ge=({className:e,size:r="small"})=>{const a=xt();return t.createElement(ue,{className:R(e,a.root),size:r,label:"NL"})},B=p(e=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:e.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:e.spacing(2)},title:{fontSize:e.typography.pxToRem(18),fontWeight:700,lineHeight:1.235,marginBottom:"6px"},level:{textTransform:"uppercase",color:e.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function Tt({description:e,documentationUrl:r}){const a=B();return r?t.createElement("div",{className:a.description},t.createElement(J,{content:e}),t.createElement(X,{to:r},"Learn more")):t.createElement("div",{className:a.description},t.createElement(J,{content:e}))}const he=({name:e,level:r,badge:a,description:n,documentationUrl:i})=>{const o=B();return t.createElement("div",{className:o.root},a?t.createElement(M,{size:"large",badge:a}):t.createElement(ge,{size:"large"}),t.createElement("div",null,t.createElement(m,{variant:"caption",className:o.level},r!=null?r:"No Level"),t.createElement(m,{className:o.title},e),n&&t.createElement(Tt,{description:n,documentationUrl:i})))},F=({children:e})=>{const[r,a]=O(!1);return Te(()=>{const n=setTimeout(()=>{a(!0)},250);return()=>clearTimeout(n)},[]),t.createElement(Ue,{in:r,timeout:250},e)},W=({hideDescription:e=!1})=>{const r=B();return t.createElement(F,null,t.createElement("div",{className:r.root},t.createElement(f,{width:44,height:44}),t.createElement("div",null,t.createElement(m,{variant:"caption",className:r.level},t.createElement(f,{width:100})),t.createElement(m,{variant:"h4",className:r.title},t.createElement(f,{width:300})),!e&&t.createElement(m,{variant:"body2"},t.createElement(f,null)))))},fe=p(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{wrapper:{backgroundColor:r,color:E(e.palette.getContrastText(r),.8),fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:a})=>[`"${a?"badge":"title"} title"`,`"${a?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:E(e.palette.getContrastText(r),.8),fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:E(e.palette.getContrastText(r),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),qt=e=>{const r=fe({badge:e.badge});return t.createElement("div",{className:r.wrapper},e.badge?t.createElement(M,{className:r.badge,badge:e.badge}):null,t.createElement(m,{className:r.title},e.title),e.description?t.createElement(m,{className:r.description},e.description):null)},zt=()=>{const e=fe({});return t.createElement(F,null,t.createElement("div",{className:e.wrapper},t.createElement(f,{className:e.title}),t.createElement(m,{className:e.description},t.createElement(f,null))))},Mt=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),ye=({timestamp:e,description:r})=>{const a=Mt(),n=te.fromISO(e).toLocaleString(te.DATETIME_FULL),i=Ke(e),o=r?`${r}: ${i}`:void 0;return t.createElement("div",{className:a.root},t.createElement(He,{title:n},t.createElement(m,{variant:"caption","aria-label":o},i)),t.createElement(Ze,null))},Bt=e=>({[h.Passed]:"Check passed",[h.NotReported]:"Check not reported",[h.Failed]:"Check failed",[h.NotApplicable]:"Check not applicable"})[e],Wt=b(e=>({root:{color:e.palette.success.main}}))(et),Gt=b(e=>({root:{color:e.palette.error.main}}))(tt),Ut=b(e=>({root:{color:e.palette.info.main}}))(at),Ht=b(e=>({root:{color:e.palette.text.disabled}}))(rt),ve=({result:e,className:r})=>{const a={className:r,"aria-label":Bt(e),"aria-hidden":!1};return e===h.Passed?t.createElement(Wt,{...a}):e===h.NotReported?t.createElement(Ut,{...a}):e===h.Failed?t.createElement(Gt,{...a}):e===h.NotApplicable?t.createElement(Ht,{...a}):null},ke=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:E(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:E(e.palette.primary[e.palette.type],.3)}}})),Qt=({className:e,href:r,children:a})=>r?t.createElement(Xe,{to:r,className:e},a):t.createElement("div",{className:e},a),jt=({result:e,name:r,timestamp:a,selected:n=!1,href:i})=>{const o=ke(),c=R(o.root,{selected:n});return t.createElement(Qt,{href:i,className:c},t.createElement(ve,{result:e}),t.createElement(m,{variant:"body2"},r),a?t.createElement(ye,{timestamp:a}):null)},G=()=>{const e=ke();return t.createElement(F,null,t.createElement("div",{className:e.root},t.createElement(f,{width:24,height:24}),t.createElement(m,{variant:"body2"},t.createElement(f,null)),t.createElement(f,{width:100,height:24})))},Vt=()=>{const e=Ee();return t.createElement("div",{className:e.root},t.createElement(W,null),new Array(3).fill(null).map((r,a)=>t.createElement(t.Fragment,{key:`skeleton-level-${a}`},t.createElement(zt,null),t.createElement("ul",{className:e.checks},t.createElement(G,null),t.createElement(G,null),t.createElement(G,null)))))},Kt=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),U=e=>{const{type:r,...a}=Kt();return t.createElement(Ye,{severity:e.severity,elevation:1,classes:a,onClose:e.onClose},t.createElement(m,{classes:{root:r}},e.title),e.children)},_t=p(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"}}})),Jt=({checks:e,programId:r,checkId:a})=>{const n=_t(),i=j(oe);return e.length?t.createElement("ul",{className:n.checks},e.map(o=>t.createElement("li",{key:o.id,className:n.checkItem},t.createElement(jt,{...o,selected:o.id===a,href:i({programId:r,checkId:o.id})})))):t.createElement(m,{variant:"body2",className:n.noChecks},"No applicable checks at this level.")},Xt=({level:e,checkId:r,programId:a})=>{var n;return t.createElement(t.Fragment,null,t.createElement(qt,{badge:e.badge,title:e.name,description:e.description}),t.createElement(Jt,{checks:(n=e.checks)!=null?n:[],programId:a,checkId:r}))},Ee=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),Yt=({programId:e,checkId:r})=>{var a,n;const i=Ee(),{entity:o}=Z(),{data:c,isLoading:g,isError:v}=le(o,e);return v?t.createElement("div",{className:i.root},t.createElement(K,{padding:2},t.createElement(U,{severity:"error",title:"Error loading certification"}))):g||!e?t.createElement(Vt,null):c?t.createElement("div",{className:i.root},t.createElement(he,{name:c.program.name,level:(a=c.highestLevel)==null?void 0:a.name,badge:(n=c.highestLevel)==null?void 0:n.badge,description:c.program.description,documentationUrl:c.program.documentationURL}),c==null?void 0:c.levels.map(y=>t.createElement(Xt,{key:y.ordinal,level:y,checkId:r,programId:e}))):null},Zt=()=>t.createElement(t.Fragment,null,t.createElement(W,{hideDescription:!0}),t.createElement(W,{hideDescription:!0})),Ce=({className:e})=>t.createElement("div",{className:e},t.createElement(Y,{title:"No certifications available",missing:"data",description:"There are no programs configured that apply to this entity."})),er=({ownerEntityRef:e})=>e?t.createElement(Y,{missing:"data",title:"Missing entities",description:t.createElement(t.Fragment,null,"Looks like the group"," ",Ve(Je(e),{defaultKind:"Group"})," ","doesn't own any entities.",t.createElement("br",null),t.createElement("br",null),"Please select another group from the dropdown in the corner of the header.")}):null,we=We(e=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:e.spacing(2)},emptyState:{"& > div":{backgroundColor:e.palette.background.paper}}})),A=({children:e,title:r})=>{const a=we();return t.createElement(je,{title:r},t.createElement("div",{className:a.infoCard},t.createElement(_e,{inline:!0,backend:"soundcheck",invalidLicenseMessage:"Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e))},tr=({title:e="Soundcheck"})=>{const{entity:r}=Z(),a=we(),{data:n,isError:i,isLoading:o}=ce(r),c=j(ie);return i?t.createElement(A,{title:e},t.createElement(U,{severity:"error",title:"Error loading certifications"})):o||!n?t.createElement(A,{title:e},t.createElement(Zt,null)):n.length===0?t.createElement(A,{title:e},t.createElement(Ce,{className:a.emptyState})):t.createElement(A,{title:e},n.map((g,v)=>{var y,w;return t.createElement(qe,{key:g.program.name},t.createElement("div",{className:a.certificationWrapper,"data-testid":"soundcheck-program-row"},t.createElement(he,{key:g.program.id,name:g.program.name,badge:(y=g.highestLevel)==null?void 0:y.badge,level:(w=g.highestLevel)==null?void 0:w.name}),t.createElement(X,{to:c({programId:g.program.id})},"View Details")),v<n.length-1?t.createElement(Qe,null):null)}))};export{U as A,re as B,Yt as C,Rt as E,F,M as L,me as M,ge as N,se as Q,h as R,Nt as S,ye as a,ce as b,ie as c,Ce as d,oe as e,tr as f,ve as g,er as h,Lt as i,L as j,Ft as k,St as l,$t as m,I as s,le as u};
|
|
217
|
+
//# sourceMappingURL=index-ab8d0702.esm.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import t,{useState as k,useEffect as R,useCallback as C,useMemo as I,createContext as He,useContext as Fe,useReducer as Ve,memo as S,Fragment as ze}from"react";import{useSearchParams as qe,Routes as Me,Route as B}from"react-router-dom";import{ContentHeader as X,HeaderTabs as Z,Link as O,EmptyState as We,Page as je,Header as Ge,Content as Ke}from"@backstage/core-components";import{useApi as N,identityApiRef as _e,useRouteRef as H,configApiRef as ee}from"@backstage/core-plugin-api";import{SpotifyLicenseBanner as Ue}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as te,parseEntityRef as x}from"@backstage/catalog-model";import{useQuery as T,useQueryClient as re,useMutation as ne}from"@tanstack/react-query";import{s as P,Q as F,A as ae,M as oe,k as G,B as le,R as m,g as Je,L as ie,N as se,h as Qe,S as Ye,i as Xe}from"./index-ab8d0702.esm.js";import{catalogApiRef as ce,humanizeEntityRef as A,entityRouteRef as V}from"@backstage/plugin-catalog-react";import{makeStyles as E,alpha as de,TextField as K,CircularProgress as me,IconButton as pe,Menu as Ze,MenuItem as z,ListItemIcon as q,ListItemText as M,styled as _,Accordion as et,AccordionSummary as tt,AccordionDetails as rt,Grid as u,Typography as w,Button as L,Chip as ue,InputAdornment as nt,Card as at,CardContent as ot,Tooltip as he,LinearProgress as lt,withStyles as it}from"@material-ui/core";import st from"@material-ui/lab/Autocomplete";import ct from"@material-ui/icons/ArrowDropDown";import dt from"@material-ui/icons/MoreVert";import mt from"@material-ui/icons/ControlPointDuplicate";import pt from"@material-ui/icons/Delete";import ut from"@material-ui/icons/Edit";import ge from"@material-ui/icons/Visibility";import{DateTime as fe}from"luxon";import{createStyles as ht}from"@material-ui/core/styles";import ye from"@material-ui/icons/Add";import{useDrag as gt,useDrop as ft,DndProvider as yt}from"react-dnd";import Ee from"@material-ui/icons/DragIndicator";import Et from"@material-ui/icons/Close";import vt from"@material-ui/icons/Remove";import{HTML5Backend as wt}from"react-dnd-html5-backend";import{R as kt}from"./RefetchingIndicator-4f009bca.esm.js";import{countBy as ve}from"lodash";import{Skeleton as W}from"@material-ui/lab";import{VariableSizeGrid as bt}from"react-window";import"graphql-request";import"graphql-tag";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"@material-ui/icons/Check";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";import"react-use/lib/useDebounce";function Ct(){const e=N(ce);return T(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"}});return r.filter(n=>(n==null?void 0:n.kind)==="Group").map(n=>{var a,o,i,l;return{name:(l=(i=(o=(a=n.spec)==null?void 0:a.profile)==null?void 0:o.displayName)!=null?i:n.metadata.title)!=null?l:n.metadata.name,ref:te(n)}})})}function Nt(e){const r=N(P);return T(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}function Rt(e){const r=N(P);return T([F.GetAllPrograms,e],async()=>r.getAllPrograms(e))}function we(e,r){const n=N(P);return T(["soundcheck/program-overview-for-owner",e,r],async()=>n.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.type)})}function xt(){const e=N(_e),r=N(ce);return T(["soundcheck/user-groups-claims"],async()=>{const{ownershipEntityRefs:n}=await e.getBackstageIdentity();return(await r.getEntitiesByRefs({entityRefs:n})).items.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var o,i,l,s;return{name:(s=(l=(i=(o=a.spec)==null?void 0:o.profile)==null?void 0:i.displayName)!=null?l:a.metadata.title)!=null?s:a.metadata.name,ref:te(a)}})})}function ke(e){const r=N(P);return T([F.GetCheckers,e],async()=>r.getCheckers(e))}const St=e=>{const[r,n]=k(void 0),[a,o]=k([[]]),[i,l]=k([!1]);R(()=>{r===void 0&&e!=null&&e.length&&n(e)},[e,r]);const s=C((h,y)=>{o(f=>{const v=[...f];return v[y]=[...v[y],h],v}),n(f=>f==null?void 0:f.filter(v=>v.id!==h.id)),l(f=>{if(f[y]){const v=[...f];return v[y]=!1,v}return f})},[]),d=C((h,y)=>{o(f=>{const v=[...f];return v[y]=v[y].filter(b=>b.id!==h.id),v}),n(f=>[...f!=null?f:[],h])},[]),c=C(()=>{o(h=>[...h,[]]),l(h=>[...h,!1])},[]),g=C(h=>{a.length>1&&o(y=>{const f=[...y],v=f.splice(h,1)[0];return n(b=>[...b!=null?b:[],...v]),f})},[a]),p=C(()=>{const h=a.map(y=>y.length===0);return l(h),!h.some(y=>y)},[a]);return{chips:r,inputChipsList:a,handleDrop:s,handleDelete:d,addInput:c,removeInput:g,inputErrors:i,setInputErrors:l,areInputsValid:p}},$t=()=>{const[e,r]=qe(),n=Object.fromEntries(e.entries()),[a,o]=k(n);return R(()=>{r(a,{replace:!0})},[a]),[a,o]},Tt=()=>{const{data:e,isLoading:r,isError:n}=xt(),{data:a,isLoading:o,isError:i}=Ct();return{options:I(()=>{const l=[];return e&&l.push(...e.map(({name:s,ref:d})=>({name:s,ref:d,key:"My Groups"}))),a&&l.push(...a.map(({name:s,ref:d})=>({name:s,ref:d,key:"All Groups"}))),l},[e,a]),isLoading:r||o,isError:n||i}},Pt=E(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:de(e.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:e.page.fontColor}},input:{backgroundColor:"transparent",color:e.page.fontColor},clearIndicator:{color:e.page.fontColor},popupIndicator:{color:e.page.fontColor},notchedOutline:{}})),It=e=>{const{onChange:r,initialValue:n,setError:a}=e,{options:o,isLoading:i,isError:l}=Tt(),s=Pt(),[d,c]=k(null);R(()=>{if(!i&&o!=null&&o.length&&!d){const p=n?o.find(h=>h.ref===n):o[0];p&&(c(p),r==null||r(p.ref))}},[i,o,d,r,n]);const g=C((p,h)=>{c(h),r==null||r(h==null?void 0:h.ref)},[r,c]);return R(()=>{a==null||a(l?new Error("Error loading groups"):void 0)},[l,a]),l?null:t.createElement(st,{"aria-label":"Current group",className:s.root,classes:{clearIndicator:s.clearIndicator,popupIndicator:s.popupIndicator},disableClearable:!0,options:o!=null?o:[],loading:i,groupBy:p=>p.key,value:d,freeSolo:!1,onChange:g,getOptionLabel:p=>p.name,renderInput:p=>t.createElement(K,{...p,variant:"outlined",placeholder:i?"Loading":"Select a group",className:s.textField,InputProps:{...p.InputProps,className:s.input,classes:{notchedOutline:s.notchedOutline},endAdornment:t.createElement(t.Fragment,null,i?t.createElement(me,{color:"inherit",size:20}):null,p.InputProps.endAdornment)}})})},At="#DFE0F4",Lt="#4275CA",Dt=({handleEdit:e,handleDuplicate:r,handleDelete:n,handleView:a})=>{const[o,i]=k(null),l=!!o,s=c=>{i(c.currentTarget)},d=()=>{i(null)};return t.createElement(t.Fragment,null,t.createElement(pe,{"aria-label":"summary-accordion-actions",id:"summary-accordion-action-menu-button","aria-controls":l?"summary-accordion-action-menu":void 0,"aria-expanded":l?"true":void 0,"aria-haspopup":"true",onClick:s},t.createElement(dt,null)),t.createElement(Ze,{id:"summary-accordion-action-menu",anchorEl:o,open:l,onClose:d,getContentAnchorEl:null,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},MenuListProps:{"aria-labelledby":"summary-accordion-action-menu-button"}},t.createElement(z,{onClick:c=>{a(c),d()}},t.createElement(q,null,t.createElement(ge,{fontSize:"small"})),t.createElement(M,null,"View")),e&&t.createElement(z,{onClick:c=>{e(c),d()}},t.createElement(q,null,t.createElement(ut,{fontSize:"small"})),t.createElement(M,null,"Edit")),t.createElement(z,{onClick:c=>{r(c),d()}},t.createElement(q,null,t.createElement(mt,{fontSize:"small"})),t.createElement(M,null,"Duplicate")),n&&t.createElement(z,{onClick:c=>{n(c),d()}},t.createElement(q,null,t.createElement(pt,{fontSize:"small"})),t.createElement(M,null,"Delete"))))},Bt=_(e=>t.createElement(et,{...e}))(({theme:e})=>({border:`1px solid ${e.palette.divider}`,"&:not(:last-child)":{borderBottom:0},"&:before":{display:"none"}})),Ot=_(e=>t.createElement(tt,{expandIcon:t.createElement(ct,null),...e}))(()=>({flexDirection:"row-reverse",backgroundColor:At})),Ht=_(rt)(({theme:e})=>({padding:e.spacing(2)})),be=({title:e,description:r,metadata:n,handleDuplicate:a,handleDelete:o,handleEdit:i,handleView:l,children:s})=>{const[d,c]=k(!1),g=()=>{c(p=>!p)};return t.createElement(Bt,{expanded:d},t.createElement(Ot,{"aria-controls":`${e}-panel-content`,id:`${e}-summary-accordion`,IconButtonProps:{onClick:g}},t.createElement(u,{container:!0,spacing:0},t.createElement(u,{item:!0,xs:12,sm:!0,container:!0,direction:"column",spacing:0,onClick:g},t.createElement(w,null,e),t.createElement(w,null,r),t.createElement(u,{container:!0,direction:"row",spacing:2},n==null?void 0:n.map(p=>t.createElement(u,{item:!0,key:p.title},t.createElement(w,null,p.title,": ",p.data))))),t.createElement(u,{item:!0},t.createElement(Dt,{handleDelete:o,handleEdit:i,handleDuplicate:a,handleView:l})))),t.createElement(Ht,null,s))},Ce=He({}),Ft=e=>{const[r,n]=k(),a=C(i=>{n(i)},[]),o=C(()=>{n(null)},[]);return t.createElement(Ce.Provider,{value:{showAlert:a,clearAlert:o}},r&&t.createElement(ae,{severity:r.severity,title:r.title,onClose:o},r.message),e.children)},U=()=>Fe(Ce),Vt="Error Deleting Check";function zt(){const e=N(P),r=re(),{showAlert:n}=U(),a=async o=>{const i=await e.deleteChecker(o);if(!i)throw new Error(`Failed to delete check ${o}`);return i};return ne([oe.DeleteChecker],a,{onSuccess:()=>{r.invalidateQueries({queryKey:[F.GetCheckers]})},onError:(o,i)=>{let l=`Failed to delete check ${i}`;o instanceof Error&&(l=o.message),n({severity:"error",title:Vt,message:l})}})}const qt=({checker:{id:e,ownerEntityRef:r,name:n,description:a,isEditable:o},children:i})=>{const{showModal:l}=G(),{mutate:s}=zt(),d=C(async()=>{await l({title:"Delete Check",message:`Are you sure you want to delete the check '${n}'?`})&&s(e)},[l,n,s,e]);return t.createElement(be,{title:n!=null?n:e,description:a,metadata:[{title:"ID",data:e},{title:"Owner",data:r!=null?r:""}],children:i,handleView:()=>{},handleEdit:o?()=>{}:void 0,handleDuplicate:()=>{},handleDelete:d})},Mt=E(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Wt=({setShowAddCheckView:e,checkers:r})=>{const n=Mt();return t.createElement(u,{container:!0,direction:"row"},t.createElement(X,{title:"Checks"},t.createElement("div",{className:n.headerButtons},t.createElement(L,{variant:"contained",color:"primary",onClick:()=>e(!0)},"Add New Check"))),t.createElement(u,{container:!0,item:!0,direction:"column",spacing:2,xs:9},r.map(a=>t.createElement(u,{item:!0,key:a.id},t.createElement(qt,{checker:a},t.createElement(u,{container:!0,direction:"row"}))))))},Ne=({setShowAddView:e,saveButtonText:r,onSave:n,isLoading:a})=>t.createElement(u,{item:!0,container:!0,spacing:0},t.createElement(u,{container:!0,item:!0,xs:11,spacing:0},t.createElement(L,{variant:"contained",color:"primary",disabled:a,onClick:()=>{n()}},r)),t.createElement(u,{item:!0,xs:1},t.createElement(L,{variant:"contained",color:"primary",onClick:()=>e(!1)},"Cancel"))),jt=[{factRef:"test1:default/fact1",entityRef:"component:default/test-entity-1",data:{value:"test"},timestamp:fe.now().toString()},{factRef:"test1:default/fact1",entityRef:"component:default/test-entity-2",data:{value:"foo"},timestamp:fe.now().toString()}];le.Medal,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Failed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Failed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Failed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported,m.Passed,m.NotReported;var Gt=(e=>(e[e.SelectFacts=0]="SelectFacts",e[e.DefineRule=1]="DefineRule",e))(Gt||{});const Kt=({setShowAddCheckView:e})=>{const[r,n]=k(0);return t.createElement(u,{container:!0,spacing:6},t.createElement(Ne,{setShowAddView:e,saveButtonText:"Save new check",isLoading:!1,onSave:()=>{}}),t.createElement(u,{item:!0,container:!0,direction:"row",xs:12},t.createElement(u,{container:!0,item:!0,direction:"column",xs:6},t.createElement(w,null,"Title"),t.createElement(w,null,"Id?"),t.createElement(w,null,"Description?"),t.createElement(w,null,"Facts this check is based on (AKA the rule definition portion)"),t.createElement(w,{onClick:()=>n(0)},"+ Add Fact")),t.createElement(u,{item:!0,direction:"column",xs:6},r===0&&t.createElement(w,null,JSON.stringify(jt,null,2)),r===1&&t.createElement(w,null,"Define rule window"))))},_t=E(e=>({checksPageContainer:{padding:e.spacing(3)}})),Ut=()=>{const e=_t(),{data:r}=ke(),[n,a]=k(!1);return t.createElement("div",{className:e.checksPageContainer},n?t.createElement(Kt,{setShowAddCheckView:a}):t.createElement(Wt,{setShowAddCheckView:a,checkers:r!=null?r:[]}))};E(()=>ht({boldText:{fontWeight:"bold"}}));const Jt="Error Deleting Program";function Qt(){const e=N(P),r=re(),{showAlert:n}=U(),a=async o=>{const i=await e.deleteProgram(o);if(!i)throw new Error(`Failed to delete program ${o}`);return i};return ne([oe.DeleteProgram],a,{onSuccess:()=>{r.invalidateQueries({queryKey:[F.GetAllPrograms]})},onError:(o,i)=>{let l=`Failed to delete program ${i}`;o instanceof Error&&(l=o.message),n({severity:"error",title:Jt,message:l})}})}const Yt=({summary:{name:e,id:r,ownerEntityRef:n,description:a},children:o})=>{const{showModal:i}=G(),{mutate:l}=Qt(),{showAlert:s}=U(),d=C(async()=>{await i({title:"Delete Program",message:`Are you sure you want to delete program with id: ${r}?`})&&l(r)},[i,r,l]);return t.createElement(be,{title:e,description:a,metadata:[{title:"ID",data:r},{title:"Owner",data:n}],children:o,handleView:()=>s({title:"Alert Title",message:"Alert message",severity:"error"}),handleEdit:()=>{},handleDuplicate:()=>{},handleDelete:d})},Xt=E(e=>({headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),Zt=({setShowAddProgramView:e})=>{const r=Xt(),{data:n}=Rt();return t.createElement(u,{container:!0,direction:"row"},t.createElement(X,{title:"Programs"},t.createElement("div",{className:r.headerButtons},t.createElement(L,{variant:"contained",color:"primary",onClick:()=>e(!0)},"Add new program"))),t.createElement(u,{container:!0,item:!0,direction:"column",spacing:2,xs:9},n==null?void 0:n.map(a=>t.createElement(u,{item:!0,key:a.id},t.createElement(Yt,{summary:a},t.createElement(u,{container:!0,direction:"row"}))))),t.createElement(u,{item:!0,container:!0,direction:"column",xs:3},"Filters go here"))},er=E(e=>({titleInput:{marginBottom:e.spacing(3)},inputBase:{fontSize:e.typography.h4.fontSize,fontWeight:700}})),tr=({programName:e,programNameError:r,handleProgramNameChange:n})=>{const a=er();return t.createElement(K,{fullWidth:!0,placeholder:"Untitled program",value:e,onChange:n,className:a.titleInput,InputProps:{disableUnderline:!0,classes:{input:a.inputBase}},error:r,helperText:r?"Program name must be at least 1 character and less than 100 characters":""})},rr=E(e=>({button:{border:"none",fontWeight:700,fontSize:e.typography.subtitle2.fontSize,lineHeight:"19px",color:Lt,textTransform:"none"}})),J=({label:e,...r})=>{const n=rr();return t.createElement(L,{className:n.button,...r},e)},nr=E(e=>({chip:{width:"100%",justifyContent:"space-between",background:e.palette.common.white,border:`1px solid ${e.palette.grey[300]}`,borderRadius:4}})),ar=({label:e,id:r})=>{const[n,a]=gt(()=>({type:"chip",item:{id:r,label:e},collect:i=>({isDragging:i.isDragging()})})),o=nr();return t.createElement(ue,{ref:a,label:e,className:o.chip,icon:t.createElement(Ee,{"data-testid":"drag-indicator-icon"}),onDelete:()=>{},deleteIcon:t.createElement(ge,{"data-testid":"visibility-icon"})})},or=({searchTerm:e,setSearchTerm:r,showClear:n=!0,placeholder:a="Search...",...o})=>t.createElement(K,{...o,fullWidth:!0,placeholder:a,value:e,onChange:i=>{r(i.target.value)},InputProps:{endAdornment:n&&e?t.createElement(nt,{position:"end"},t.createElement(pe,{edge:"end",onClick:()=>{r("")}},t.createElement(Et,null))):null}}),Re=E(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"},subtitle:{fontSize:e.typography.h6.fontSize},chipContainer:{display:"flex",flexDirection:"column",alignItems:"flex-start",padding:e.spacing(1),gap:e.spacing(1)},loadingContainer:{marginTop:e.spacing(1),display:"flex",justifyContent:"center",alignItems:"center",height:"100%"}})),lr=()=>{const e=Re();return t.createElement(u,{container:!0,className:e.loadingContainer},t.createElement(me,null))},ir=({chips:e})=>t.createElement(t.Fragment,null,e.map(r=>t.createElement(ar,{key:r.id,id:r.id,label:r.label}))),sr=()=>t.createElement(w,{variant:"body1",color:"textSecondary"},"There are no matches."),cr=({chips:e=[],isLoading:r})=>{const n=Re(),[a,o]=k(""),i=I(()=>e.filter(d=>d.label.toLowerCase().includes(a.toLowerCase())),[e,a]),l=e.length>0||a,s=()=>{if(r)return t.createElement(lr,null);if(i.length>0)return t.createElement(ir,{chips:i});if(l)return t.createElement(sr,null)};return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:n.columnHeader},t.createElement(w,{variant:"subtitle1",className:n.subtitle},"Checks"),t.createElement(J,{label:"Add Check",startIcon:t.createElement(ye,null)})),t.createElement(u,{item:!0,xs:12},t.createElement(or,{searchTerm:a,disabled:r,setSearchTerm:o,placeholder:"Search checks...",variant:"outlined",size:"small"})),t.createElement(u,{item:!0,className:n.chipContainer,xs:12},s()))},dr=E(e=>({input:{background:e.palette.common.white,border:`1px solid ${e.palette.grey[600]}`,borderRadius:4,padding:e.spacing(1),minHeight:80},error:{border:"1px solid red"},chip:{width:"100%",justifyContent:"space-between",background:e.palette.common.white,border:`1px solid ${e.palette.grey[300]}`,borderRadius:4},chipContainer:{display:"flex",flexDirection:"column"}})),mr=({chips:e,onDelete:r,onDrop:n,error:a=!1})=>{const[{isOver:o},i]=ft(()=>({accept:"chip",drop:s=>{n(s)},collect:s=>({isOver:s.isOver()})})),l=dr();return t.createElement("div",{ref:i,style:{backgroundColor:o?"white":"#f0f0f0"},className:`${l.input} ${a?l.error:""}`,"data-testid":"droppable-input"},t.createElement("div",{className:l.chipContainer},e.map(s=>t.createElement(ue,{key:s.id,label:s.label,className:l.chip,icon:t.createElement(Ee,null),onDelete:()=>r(s)}))))},pr=E(e=>({columnHeader:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:e.spacing(2)},subtitle:{fontSize:e.typography.h6.fontSize},levelHeader:{display:"flex",justifyContent:"space-between",alignItems:"center"}})),ur=({inputChipsList:e,handleDelete:r,handleDrop:n,addInput:a,removeInput:o,levelsErrors:i})=>{const l=pr();return t.createElement(u,{container:!0},t.createElement(u,{item:!0,xs:12,className:l.columnHeader},t.createElement(w,{variant:"subtitle1",className:l.subtitle},"Levels"),t.createElement(J,{label:"Add Level",startIcon:t.createElement(ye,null),onClick:a})),e.map((s,d)=>t.createElement(u,{container:!0,item:!0,xs:12,key:d,spacing:1},t.createElement(u,{item:!0,xs:12,className:l.levelHeader},t.createElement(w,{variant:"subtitle1"},"Level ",d+1),e.length>1&&t.createElement(J,{label:"Remove Level",startIcon:t.createElement(vt,null),onClick:()=>o(d)})),t.createElement(u,{item:!0,xs:12},t.createElement(mr,{chips:s,onDelete:c=>r(c,d),onDrop:c=>n(c,d),error:i[d]})))))};var hr=(e=>(e.SetProgramNameError="VALIDATE_NAME",e.SetName="SET_NAME",e))(hr||{});const gr={programName:"",programNameError:!1},fr=(e,r)=>{switch(r.type){case"SET_NAME":return{...e,programName:r.value};case"VALIDATE_NAME":return{...e,programNameError:r.value};default:return e}},yr=(e="")=>{const[r,n]=Ve(fr,{...gr,programName:e}),a=()=>{const i=r.programName.trim().length,l=i>0&&i<=100;return n({type:"VALIDATE_NAME",value:!l}),l},o=i=>{n({type:"SET_NAME",value:i.target.value}),r.programNameError&&a()};return{programName:r.programName,programNameError:r.programNameError,handleProgramNameChange:o,isProgramNameValid:a}},Er=E(e=>({description:{fontSize:e.typography.subtitle1.fontSize},cardContent:{"& *":{fontWeight:700}}})),vr=({setShowAddProgramView:e})=>{const{programName:r,programNameError:n,handleProgramNameChange:a,isProgramNameValid:o}=yr(),{showModal:i}=G(),{data:l,isLoading:s}=ke(),d=(l!=null?l:[]).filter(D=>!!D).map(D=>({id:D.id,label:D.name})),{chips:c,inputChipsList:g,handleDrop:p,handleDelete:h,addInput:y,removeInput:f,inputErrors:v,areInputsValid:b}=St(d),Oe=async()=>{o()&&b()&&await i({title:"Save Program",message:`Are you sure you want to save program: ${r}?`})&&JSON.stringify({programName:r,checks:[...g]},null,2)},Y=Er();return t.createElement(u,{container:!0,spacing:3},t.createElement(Ne,{setShowAddView:e,saveButtonText:"Save new program",isLoading:s,onSave:Oe}),t.createElement(u,{item:!0,xs:12},t.createElement(tr,{programName:r,programNameError:n,handleProgramNameChange:a})),t.createElement(u,{item:!0,xs:12},t.createElement(at,null,t.createElement(ot,{className:Y.cardContent},t.createElement(u,{container:!0,spacing:8},t.createElement(u,{item:!0,xs:12},t.createElement(w,{className:Y.description},"Add the checks that apply to each level. You can preview the checks to see the rules that apply to each check.")),t.createElement(u,{item:!0,xs:4},t.createElement(ur,{inputChipsList:g,handleDelete:h,handleDrop:p,addInput:y,removeInput:f,levelsErrors:v})),t.createElement(u,{item:!0,xs:4},t.createElement(cr,{chips:c,isLoading:s})),t.createElement(u,{item:!0,xs:4}))))))},wr=E(e=>({programsPageContainer:{padding:e.spacing(3)},headerButtons:{display:"flex",gap:e.spacing(1),flexWrap:"nowrap"}})),kr=({})=>{const e=wr(),[r,n]=k(!1);return t.createElement("div",{className:e.programsPageContainer},r?t.createElement(yt,{backend:wt},t.createElement(vr,{setShowAddProgramView:n})):t.createElement(Zt,{setShowAddProgramView:n}))},br=()=>t.createElement(t.Fragment,null,"Fact Collectors Page"),Cr=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),Nr=()=>{const e=Array.from({length:4},(r,n)=>Cr(n));return t.createElement(Z,{tabs:e})},Rr=E(e=>({root:{borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)}})),xr=({unfilteredFacets:e,onChange:r,type:n})=>{var a,o,i;const l=Rr(),s={types:(a=e==null?void 0:e.types.filter(({count:p})=>p>0))!=null?a:[]},d=C(p=>{var h;r((h=s==null?void 0:s.types[p].value)!=null?h:"")},[s==null?void 0:s.types,r]);R(()=>{var p,h;const y=(s==null?void 0:s.types)&&s.types.length>=0,f=!n&&y,v=n&&y&&!(s!=null&&s.types.find(({value:b})=>b===n));(f||v)&&r((h=(p=s==null?void 0:s.types[0])==null?void 0:p.value)!=null?h:"")},[n,s==null?void 0:s.types,r]);const c=(o=s==null?void 0:s.types.map(({value:p,count:h})=>({key:p,label:`${p} (${h>50?"50+":h})`,id:p,tabProps:{className:l.tab}})))!=null?o:[];if(!c.length)return null;const g=(i=s==null?void 0:s.types.findIndex(p=>p.value===n))!=null?i:-1;return t.createElement(t.Fragment,null,t.createElement(kt,null),t.createElement(Z,{onChange:d,tabs:c,selectedIndex:g>-1?g:void 0}))},Sr=E(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.background.default},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),xe=e=>{var r,n;const a=Sr(e),o=I(()=>Object.entries(e.progress).reduce((l,[,s])=>l+s,0),[e.progress]);if(o===0)return null;const i=(r=e.progress[m.Passed])!=null?r:0;return t.createElement(he,{arrow:!0,title:`Check passing for ${i} of ${o} ${o===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(lt,{variant:"determinate",value:((n=e.progress[m.Passed])!=null?n:0)/o*100,classes:{root:a.root,bar:a.bar}}))},$r=E(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),Tr=({check:{name:e,description:r},icon:n,entityRef:a})=>{const o=$r();return t.createElement(u,{spacing:1},t.createElement(u,{container:!0,direction:"row",spacing:1,wrap:"nowrap"},t.createElement("div",{className:o.iconWrapper},n),t.createElement(w,{variant:"h6",className:o.headerWrapper,noWrap:!0},e)),t.createElement(u,{item:!0,wrap:"nowrap"},t.createElement(w,{variant:"subtitle2",className:o.entityRefName},A(x(a),{defaultKind:"component"}))),t.createElement(w,{variant:"caption"},r))},Pr=it(e=>{const r=e.palette.type==="dark"?e.palette.common.black:e.palette.grey[300];return{tooltip:{backgroundColor:r,color:e.palette.type==="dark"?e.palette.common.white:e.palette.grey[700]},arrow:{color:r}}})(he),Ir=({children:e,check:r,icon:n,entityRef:a})=>t.createElement(Pr,{arrow:!0,title:t.createElement(Tr,{check:r,icon:n,entityRef:a}),enterDelay:150,placement:"top"},e),Ar=E(e=>({root:{padding:0},iconWrapper:{padding:e.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:e.palette.infoBackground}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),Se=S(({programId:e,check:r,entityRef:n,result:a,entityRoute:o,isVirtualized:i})=>{const l=Ar();if(typeof n!="string"){const g=t.createElement("div",{className:l.iconWrapper},t.createElement("div",{className:l.icon}));return i?t.createElement("div",{className:`${l.root} ${l.virtualized}`,"aria-hidden":!0},g):t.createElement("td",{className:l.root,"aria-hidden":!0},g)}const s=t.createElement(Je,{className:l.icon,result:a!=null?a:m.NotReported}),d=t.createElement("div",{className:l.iconWrapper},s),c=a&&a===m.NotApplicable?d:t.createElement(O,{className:l.link,to:`${o(x(n))}/soundcheck/${e}/${r.id}`},d);return i?t.createElement("div",{className:`${l.root} ${l.virtualized}`},t.createElement(Ir,{check:r,icon:s,entityRef:n},c)):t.createElement("td",{className:`${l.root}`},c)}),$e=8,Lr=16,$={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},j={programTitle:350+Lr*2,checkResult:42},Dr=e=>e.reduce((r,n)=>r+n.height,0),Br=e=>e*j.checkResult+j.programTitle,Or=e=>e.filter(r=>r!==void 0).map(r=>A(x(r),{defaultKind:"component"})).reduce((r,n)=>r.length>n.length?r:n,""),Hr=e=>$e*e+$e,Te="NoLevel",Fr=e=>({name:Te,badge:{options:{level:0,color:""},variant:le.Medal},entityRef:e,ordinal:0}),Pe=E(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${$.check}px`,lineHeight:`${$.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),Vr=S(({programId:e,programName:r,check:n,entityRefs:a,results:o,entityRoute:i})=>{const l=Pe(),s=I(()=>ve(o.filter(({result:c})=>c!==m.NotApplicable),"result"),[o]),d=new Map(o.map(c=>[c.entityRef,c.result]));return t.createElement("tr",{"data-testid":"program-check-row"},t.createElement("th",{scope:"row",className:l.checkNameCell,"aria-label":`${n.name} check for ${r} program`},t.createElement("div",{className:l.checkNameContent},t.createElement(w,{className:l.checkNameTypography,variant:"subtitle2",component:"p"},n.name),t.createElement(xe,{className:l.checkIndicator,progress:s}))),a.map((c,g)=>t.createElement(Se,{key:g,programId:e,check:n,entityRef:c,result:typeof c=="string"?d.get(c):void 0,entityRoute:i})))}),zr=({name:e,progress:r})=>{const n=Pe();return t.createElement("div",{className:n.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${n.checkNameContent} ${n.checkNameCellVirtualized}`},t.createElement(w,{variant:"subtitle2",component:"p",className:n.checkNameTypography},e),t.createElement(xe,{className:n.checkIndicator,progress:r})))},qr=E(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${$.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),Mr=S(({entityRef:e,highestLevels:r})=>{const n=r.find(a=>a.entityRef===e);return t.createElement(t.Fragment,null,n!=null&&n.badge?t.createElement(ie,{badge:n.badge}):t.createElement(se,null))}),Wr=({highestLevel:e})=>{const r=qr();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const n=e.name!==Te;return t.createElement("div",{className:r.virtualized},n?t.createElement(ie,{badge:e.badge}):t.createElement(se,null))},Ie=E(e=>({programNameCell:{padding:0,position:"sticky",backgroundColor:e.palette.background.paper},programNameContent:{padding:e.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${e.palette.divider}`}})),jr=S(({program:e,entityRefs:r,highestLevels:n})=>{const a=Ie();return t.createElement("tr",{"data-testid":"program-title-row"},t.createElement("th",{scope:"row",className:a.programNameCell},t.createElement("div",{className:a.programNameContent},t.createElement(w,{className:a.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((o,i)=>typeof o!="string"?t.createElement("td",{key:i,"aria-hidden":!0}):t.createElement("td",{key:i,"data-testid":"program-certification-cell"},t.createElement("div",{className:a.badgeCellContent},t.createElement(Mr,{entityRef:o,highestLevels:n})))))}),Gr=S(({name:e})=>{const r=Ie();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(w,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),Q=E(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:de(e.palette.getContrastText(r),.8),backgroundColor:r},levelContent:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,backgroundColor:r},levelTypography:{overflow:"hidden",textOverflow:"ellipsis"},levelHeaderCell:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,borderRight:`1px solid ${e.palette.divider}`,height:`${$.levelTitle}px`}}}),Kr=S(({level:e,entityRefs:r,programName:n})=>{const a=Q();return t.createElement("tr",{className:a.root,"data-testid":"program-level-row"},t.createElement("th",{scope:"row",className:a.root},t.createElement("div",{className:a.levelContent},t.createElement(w,{className:a.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${n} program`},e.name))),r.map((o,i)=>t.createElement("td",{key:i,className:a.root,"aria-hidden":!0})))}),_r=({name:e})=>{const r=Q();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(w,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},Ur=()=>{const e=Q();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},Jr=({program:e,highestLevels:r,levels:n,entityRefs:a,entityRoute:o})=>t.createElement("tbody",null,t.createElement(jr,{program:e,entityRefs:a,highestLevels:r}),n.map((i,l)=>t.createElement(ze,{key:l},t.createElement(Kr,{entityRefs:a,level:i,programName:e.name}),i.checks.map(({check:s,results:d},c)=>t.createElement(Vr,{key:c,check:s,programId:e.id,programName:e.name,entityRefs:a,results:d,entityRoute:o}))))),Ae=E(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),Qr=({entityRefs:e})=>{const r=H(V),n=Ae();return t.createElement("tfoot",{className:n.root,"data-testid":"results-table-footer"},t.createElement("tr",{className:n.row},t.createElement("td",{className:n.cell}),e.map((a,o)=>typeof a!="string"?t.createElement("th",{key:o,className:n.cell,"aria-hidden":!0}):t.createElement("th",{scope:"col",key:o,className:n.cell},t.createElement("div",{className:n.cellInner},t.createElement(O,{to:r(x(a))},A(x(a),{defaultKind:"component"})))))))},Yr=({entityRef:e})=>{const r=H(V),n=Ae(),a=e?t.createElement(O,{to:r(x(e))},A(x(e),{defaultKind:"component"})):t.createElement(t.Fragment,null);return t.createElement("div",{className:n.cell},t.createElement("div",{className:n.cellInner},a))},Xr=E(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},paddingBottom:e.spacing(2)},programTitle:{padding:e.spacing(2)},checkResult:{padding:e.spacing(1.5)},title:{padding:`${e.spacing(1)}px ${e.spacing(2)}px`},header:{backgroundColor:e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100]}})),Le=()=>{const e=Xr(),r=new Array(25).fill(void 0),n=new Array(5).fill(void 0),a=new Array(3).fill(void 0);return t.createElement("table",{className:e.table},t.createElement("tbody",null,t.createElement("tr",null,t.createElement("td",{className:e.programTitle},t.createElement(W,{width:180,height:40})),r.map((o,i)=>t.createElement("td",{key:i}))),a.map((o,i)=>t.createElement(t.Fragment,{key:i},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(W,{width:180})),r.map((l,s)=>t.createElement("td",{key:s}))),n.map((l,s)=>t.createElement("tr",{key:s},t.createElement("td",{className:e.title},t.createElement(W,{width:240})),r.map((d,c)=>t.createElement("td",{key:c,className:e.checkResult},t.createElement(W,{width:18,height:18,variant:"rect"})))))))))},Zr=E(e=>({root:{width:"100%"},table:{overflow:"auto",backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},"& th:first-of-type":{position:"sticky",left:0,zIndex:1,maxWidth:"60ch"},"& tfoot":{bottom:0,zIndex:1e3},"& tbody td:first-of-type":{border:`1px solid ${e.palette.divider}`,boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`}}})),en=S(e=>{const{setError:r,type:n,ownerEntityRef:a}=e,o=Zr(),i=H(V),{data:l,isLoading:s,isError:d}=we(a,{type:n});if(R(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),s)return t.createElement(Le,null);if(!l||!a)return null;const{programs:c,entityRefs:g}=l;if(!s&&!c.length)return t.createElement(We,{missing:"data",title:"Missing programs",description:t.createElement(t.Fragment,null,"Looks like the group"," ",A(x(a),{defaultKind:"Group"})," ","doesn't own any ",n," components that have Soundcheck programs set up.",t.createElement("br",null),t.createElement("br",null),"If you're an administrator, you can learn more about configuring and filtering programs in the"," ",t.createElement(O,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(d)return null;const p=g.length>=25?g:[...g,...Array.from({length:25-g.length},()=>{})];return t.createElement("div",{className:o.root},t.createElement("table",{className:o.table,"aria-label":"Check results"},c.map(({program:h,levels:y,highestLevels:f},v)=>t.createElement(Jr,{key:v,program:h,entityRefs:p,levels:y,highestLevels:f,entityRoute:i})),t.createElement(Qr,{entityRefs:p})))}),tn=e=>t.createElement(Gr,{name:e}),rn=e=>({type:"ProgramHeader",render:()=>tn(e)}),nn=e=>e?t.createElement(_r,{name:e}):t.createElement(Ur,null),De=e=>({type:"LevelHeader",render:()=>nn(e)}),an=(e,r)=>t.createElement(zr,{name:e,progress:r}),on=(e,r)=>({type:"CheckTitle",render:()=>an(e,r)}),ln=(e,r,n,a,o)=>t.createElement(Se,{check:r,entityRef:n,entityRoute:o,programId:e,result:a,isVirtualized:!0}),sn=(e,r,n,a,o)=>({type:"CheckResult",render:()=>ln(e,r,n,a,o)}),cn=e=>t.createElement(Yr,{entityRef:e}),Be=e=>({type:"EntityHeader",render:()=>cn(e)}),dn=e=>t.createElement(Wr,{highestLevel:e}),mn=e=>({type:"LevelBadge",render:()=>dn(e)}),pn=e=>r=>{const n=e[r.rowIndex].cells[r.columnIndex];return n?t.createElement("div",{style:r.style},n.render()):t.createElement("div",{style:r.style})},un=(e,r,n)=>{var a;const o=[];for(const{program:l,levels:s,highestLevels:d}of e){o.push({height:$.programTitle,cells:[rn(l.name),...r.map(c=>{const g=c?d.find(p=>p.entityRef===c)||Fr(c):void 0;return mn(g)})]});for(const c of s){o.push({height:$.levelTitle,cells:[De(c.name),...r.map(g=>De(""))]});for(const{check:g,results:p}of c.checks)o.push({height:$.check,cells:[on(g.name,ve(p.filter(({result:h})=>h!==m.NotApplicable),"result")),...r.map(h=>{var y,f;return sn(l.id,g,h,(f=(y=p.find(v=>v.entityRef===h))==null?void 0:y.result)!=null?f:m.NotApplicable,n)})]})}}const i=Or(r!=null?r:[]);return o.push({height:Hr((a=i.length)!=null?a:1),cells:[Be(""),...r.map(l=>Be(l||""))]}),o},hn=E(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),gn=e=>{const{setError:r,type:n,ownerEntityRef:a}=e,o=hn(),i=H(V),{data:l,isLoading:s,isError:d}=we(a,{type:n});if(R(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),s)return t.createElement(Le,null);if(!l||!a)return null;const{programs:c,entityRefs:g}=l,p=g.length>=25?g:[...g,...Array.from({length:25-g.length},()=>{})],h=un(c,p,i),y=pn(h);return t.createElement(u,{"aria-label":`Check results for ${n}`,key:n,item:!0,xs:12},t.createElement(bt,{className:o.table,columnCount:p.length+1,columnWidth:f=>f===0?j.programTitle:j.checkResult,rowCount:h.length,rowHeight:f=>h[f].height,height:Dr(h),width:Br(p.length)},y))},fn=({facets:e,ownerEntityRef:r,type:n,setError:a})=>{const o=I(()=>{const i=new Map;return e.types.forEach(({value:l})=>{i.set(l,t.createElement(gn,{key:l,ownerEntityRef:r,type:l,setError:a}))}),i},[e,r,a]);return t.createElement("div",null,o.get(n))},yn=E(()=>({scrollContainer:{overflow:"auto"}})),En=({facets:e,ownerEntityRef:r,hasError:n,type:a,setError:o,useVirtualizedResultsTable:i})=>{var l,s;const d=yn();return n?t.createElement(ae,{severity:"error",title:n.message}):e&&((s=(l=e.types)==null?void 0:l.length)!=null?s:0)>0?t.createElement("div",{className:d.scrollContainer},i?t.createElement(fn,{facets:e,type:a,setError:o,ownerEntityRef:r,hasError:n}):t.createElement(en,{ownerEntityRef:r,type:a,setError:o})):t.createElement(Qe,{ownerEntityRef:r})},vn=E(e=>({tableContainer:{padding:e.spacing(3),backgroundColor:"transparent"}})),wn=({groupSelectorError:e,searchParams:r,setSearchParams:n})=>{var a;const{group:o,type:i}=r,[l,s]=k(void 0),[d,c]=k(void 0);R(()=>{l!==i&&s(i)},[i,l]);const{data:g,isLoading:p}=Nt(o),h=(a=N(ee).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?a:!1,y=d||e,f=b=>{b&&(s(b),n({...r,type:b}))},v=vn();return t.createElement(u,{container:!0,spacing:0},t.createElement(u,{item:!0,xs:12},p?t.createElement(Nr,null):t.createElement(xr,{unfilteredFacets:g,type:l,onChange:f})),t.createElement(u,{item:!0,xs:12,className:v.tableContainer},!p&&t.createElement(En,{facets:g,type:l,setError:c,hasError:y,ownerEntityRef:o,useVirtualizedResultsTable:h})))},kn=e=>{var r;const{title:n="Soundcheck"}=e,[a,o]=$t(),{group:i}=a,[l,s]=k(void 0),d=(r=N(ee).getOptionalBoolean("soundcheck.noCodeUI"))!=null?r:!1;return t.createElement(Ye,null,t.createElement(Xe,null,t.createElement(je,{themeId:"website"},t.createElement(Ue,{backend:"soundcheck",invalidLicenseMessage:"Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),t.createElement(Ge,{title:n},t.createElement(It,{onChange:c=>{c&&o({...a,group:c})},initialValue:i,setError:s})),t.createElement(Ke,{noPadding:!0,stretch:!0},t.createElement(Ft,null,t.createElement(Me,null,t.createElement(B,{path:"/*",element:t.createElement(wn,{groupSelectorError:l,searchParams:a,setSearchParams:o})}),d&&t.createElement(t.Fragment,null,t.createElement(B,{path:"/checks",element:t.createElement(Ut,null)}),t.createElement(B,{path:"/programs",element:t.createElement(kr,{ownerEntityRef:i})}),t.createElement(B,{path:"/fact-collectors",element:t.createElement(br,null)}))))))))};export{kn as OverviewPage};
|
|
2
|
+
//# sourceMappingURL=index-b2b00eb3.esm.js.map
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{l as f,E as j,m as w,j as x}from"./esm/index-ab8d0702.esm.js";import"react";import"@backstage/core-plugin-api";import"graphql-request";import"graphql-tag";import"@tanstack/react-query";import"lodash";import"@material-ui/core/styles/makeStyles";import"@material-ui/core";import"@backstage/core-components";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-core";import"@backstage/catalog-model";import"react-router-dom";import"@material-ui/lab";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";export{f as EntitySoundcheckCard,j as EntitySoundcheckContent,w as SoundcheckOverviewPage,x as soundcheckPlugin};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spotify/backstage-plugin-soundcheck",
|
|
3
3
|
"description": "Ensure quality, reliability and alignment of software development with codified checks and guidance.",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.2",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com/",
|
|
7
7
|
"main": "dist/index.esm.js",
|
|
@@ -27,21 +27,23 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@backstage/catalog-model": "^1.3.0",
|
|
30
|
-
"@backstage/core-components": "^0.13.
|
|
30
|
+
"@backstage/core-components": "^0.13.1",
|
|
31
31
|
"@backstage/core-plugin-api": "^1.5.1",
|
|
32
|
-
"@backstage/plugin-catalog-react": "^1.
|
|
33
|
-
"@backstage/theme": "^0.
|
|
32
|
+
"@backstage/plugin-catalog-react": "^1.6.0",
|
|
33
|
+
"@backstage/theme": "^0.3.0",
|
|
34
34
|
"@backstage/types": "^1.0.2",
|
|
35
35
|
"@material-ui/core": "^4.12.2",
|
|
36
36
|
"@material-ui/icons": "^4.9.1",
|
|
37
37
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
38
|
-
"@spotify/backstage-plugin-core": "^0.5.
|
|
38
|
+
"@spotify/backstage-plugin-core": "^0.5.2",
|
|
39
39
|
"@tanstack/react-query": "^4.6.1",
|
|
40
40
|
"classnames": "^2.3.2",
|
|
41
41
|
"graphql-request": "5.1.0",
|
|
42
42
|
"lodash": "^4.17.21",
|
|
43
43
|
"luxon": "^3.1.1",
|
|
44
44
|
"react-confetti": "^6.1.0",
|
|
45
|
+
"react-dnd": "^16.0.1",
|
|
46
|
+
"react-dnd-html5-backend": "^16.0.1",
|
|
45
47
|
"react-use": "^17.2.4",
|
|
46
48
|
"react-window": "^1.8.8"
|
|
47
49
|
},
|
|
@@ -50,16 +52,16 @@
|
|
|
50
52
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
51
53
|
},
|
|
52
54
|
"devDependencies": {
|
|
53
|
-
"@backstage/cli": "^0.22.
|
|
54
|
-
"@backstage/core-app-api": "^1.
|
|
55
|
-
"@backstage/dev-utils": "^1.0.
|
|
56
|
-
"@backstage/test-utils": "^1.3.
|
|
55
|
+
"@backstage/cli": "^0.22.7",
|
|
56
|
+
"@backstage/core-app-api": "^1.8.0",
|
|
57
|
+
"@backstage/dev-utils": "^1.0.15",
|
|
58
|
+
"@backstage/test-utils": "^1.3.1",
|
|
57
59
|
"@graphql-codegen/cli": "^3.0.0",
|
|
58
60
|
"@graphql-codegen/typescript": "^3.0.0",
|
|
59
61
|
"@graphql-codegen/typescript-graphql-request": "^4.5.5",
|
|
60
62
|
"@graphql-codegen/typescript-operations": "^3.0.0",
|
|
61
|
-
"@spotify/backstage-plugin-core-common": "^0.5.
|
|
62
|
-
"@spotify/backstage-plugin-soundcheck-common": "^0.
|
|
63
|
+
"@spotify/backstage-plugin-core-common": "^0.5.2",
|
|
64
|
+
"@spotify/backstage-plugin-soundcheck-common": "^0.5.0",
|
|
63
65
|
"@testing-library/jest-dom": "^5.10.1",
|
|
64
66
|
"@testing-library/react": "^12.1.5",
|
|
65
67
|
"@testing-library/react-hooks": "^8.0.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import e,{useState as n}from"react";import{makeStyles as a,LinearProgress as m}from"@material-ui/core";import s from"react-use/lib/useDebounce";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import{useIsFetching as c}from"@tanstack/react-query";import{F as d}from"./index-5d64d93c.esm.js";import"@backstage/plugin-catalog-react";import"react-router-dom";const p=a(t=>({indicator:{position:"absolute",width:"100%",zIndex:t.zIndex.speedDial}})),l=()=>{const t=c(),i=p(),[r,o]=n(!!t);return s(()=>{o(!!t)},250,[t]),r?e.createElement(d,null,e.createElement("div",{className:i.indicator},e.createElement(m,{variant:"indeterminate","data-testid":"refetching-indicator"}))):null};export{l as R};
|
|
2
|
-
//# sourceMappingURL=RefetchingIndicator-96188300.esm.js.map
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import{createApiRef as he,createRouteRef as M,createSubRouteRef as W,createPlugin as fe,createApiFactory as ye,discoveryApiRef as ve,fetchApiRef as Ee,createRoutableExtension as G,createComponentExtension as ke,useApi as I,errorApiRef as Ce,useRouteRef as U}from"@backstage/core-plugin-api";import{GraphQLClient as Re}from"graphql-request";import m from"graphql-tag";import t,{useState as we,useEffect as be,Fragment as Se}from"react";import{QueryClient as $e,QueryClientProvider as Ne,useQuery as H}from"@tanstack/react-query";import{memoize as Le}from"lodash";import Fe from"@material-ui/core/styles/makeStyles";import{makeStyles as d,Typography as c,Fade as Ie,alpha as v,Tooltip as De,withStyles as k,Box as Ae,Divider as Oe}from"@material-ui/core";import{MarkdownContent as j,Link as Q,EmptyState as V,InfoCard as xe}from"@backstage/core-components";import{useEntity as _,humanizeEntityRef as Te}from"@backstage/plugin-catalog-react";import{useAutoUpdatingRelativeTime as Pe,SpotifyLicenseBanner as ze}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as K,parseEntityRef as Be}from"@backstage/catalog-model";import{Link as qe}from"react-router-dom";import{Skeleton as u,Alert as Me}from"@material-ui/lab";import C from"classnames";import We from"@material-ui/icons/Schedule";import{DateTime as J}from"luxon";import Ge from"@material-ui/icons/Check";import Ue from"@material-ui/icons/Close";import He from"@material-ui/icons/RemoveCircleOutline";import je from"@material-ui/icons/HelpOutline";var X=(e=>(e.Medal="MEDAL",e))(X||{}),p=(e=>(e.Failed="FAILED",e.NotApplicable="NOT_APPLICABLE",e.NotReported="NOT_REPORTED",e.Passed="PASSED",e))(p||{});const Qe=m`
|
|
2
|
-
fragment CertificationSummary on Certification {
|
|
3
|
-
entityRef
|
|
4
|
-
program {
|
|
5
|
-
id
|
|
6
|
-
name
|
|
7
|
-
}
|
|
8
|
-
highestLevel {
|
|
9
|
-
ordinal
|
|
10
|
-
name
|
|
11
|
-
description
|
|
12
|
-
badge {
|
|
13
|
-
... on BadgeVariantMedal {
|
|
14
|
-
variant
|
|
15
|
-
options {
|
|
16
|
-
level
|
|
17
|
-
color
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
`,Ve=m`
|
|
24
|
-
fragment CheckResultSummary on CheckResult {
|
|
25
|
-
id
|
|
26
|
-
name
|
|
27
|
-
result
|
|
28
|
-
timestamp
|
|
29
|
-
}
|
|
30
|
-
`,_e=m`
|
|
31
|
-
fragment LevelResultDetails on LevelResult {
|
|
32
|
-
ordinal
|
|
33
|
-
name
|
|
34
|
-
description
|
|
35
|
-
badge {
|
|
36
|
-
... on BadgeVariantMedal {
|
|
37
|
-
variant
|
|
38
|
-
options {
|
|
39
|
-
level
|
|
40
|
-
color
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
certified
|
|
45
|
-
checks {
|
|
46
|
-
...CheckResultSummary
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
${Ve}`,Ke=m`
|
|
50
|
-
fragment CheckResultDetails on CheckResult {
|
|
51
|
-
id
|
|
52
|
-
name
|
|
53
|
-
description
|
|
54
|
-
result
|
|
55
|
-
timestamp
|
|
56
|
-
notes
|
|
57
|
-
}
|
|
58
|
-
`,Je=m`
|
|
59
|
-
fragment OverviewLevelResult on OverviewLevelResult {
|
|
60
|
-
ordinal
|
|
61
|
-
name
|
|
62
|
-
checks {
|
|
63
|
-
check {
|
|
64
|
-
id
|
|
65
|
-
name
|
|
66
|
-
description
|
|
67
|
-
}
|
|
68
|
-
results {
|
|
69
|
-
id
|
|
70
|
-
entityRef
|
|
71
|
-
result
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
`,Y=m`
|
|
76
|
-
fragment HighestLevel on LevelResult {
|
|
77
|
-
entityRef
|
|
78
|
-
ordinal
|
|
79
|
-
name
|
|
80
|
-
badge {
|
|
81
|
-
... on BadgeVariantMedal {
|
|
82
|
-
variant
|
|
83
|
-
options {
|
|
84
|
-
color
|
|
85
|
-
level
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
`,Xe=m`
|
|
91
|
-
query getAllCertifications($entityRef: String!) {
|
|
92
|
-
certifications(entityRef: $entityRef, includeFilteredChecks: false) {
|
|
93
|
-
...CertificationSummary
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
${Qe}`,Ye=m`
|
|
97
|
-
query getCertificationDetails($entityRef: String!, $programId: String!) {
|
|
98
|
-
programCertification(
|
|
99
|
-
entityRef: $entityRef
|
|
100
|
-
programId: $programId
|
|
101
|
-
includeFilteredChecks: false
|
|
102
|
-
) {
|
|
103
|
-
program {
|
|
104
|
-
id
|
|
105
|
-
name
|
|
106
|
-
description
|
|
107
|
-
documentationURL
|
|
108
|
-
}
|
|
109
|
-
highestLevel {
|
|
110
|
-
...HighestLevel
|
|
111
|
-
}
|
|
112
|
-
levels {
|
|
113
|
-
...LevelResultDetails
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
${Y}
|
|
118
|
-
${_e}`,Ze=m`
|
|
119
|
-
query getCheckResultDetails($entityRef: String!, $programId: String!, $checkId: String!) {
|
|
120
|
-
checkResult(entityRef: $entityRef, programId: $programId, checkId: $checkId) {
|
|
121
|
-
...CheckResultDetails
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
${Ke}`,et=m`
|
|
125
|
-
query getFacetsForOwner($ownerEntityRef: String!) {
|
|
126
|
-
facetsForOwner(ownerEntityRef: $ownerEntityRef) {
|
|
127
|
-
types {
|
|
128
|
-
value
|
|
129
|
-
count
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
`,tt=m`
|
|
134
|
-
query getProgramOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput) {
|
|
135
|
-
programOverviewForOwner(
|
|
136
|
-
ownerEntityRef: $ownerEntityRef
|
|
137
|
-
facet: $facet
|
|
138
|
-
includeFilteredChecks: false
|
|
139
|
-
) {
|
|
140
|
-
programs {
|
|
141
|
-
program {
|
|
142
|
-
id
|
|
143
|
-
name
|
|
144
|
-
}
|
|
145
|
-
highestLevels {
|
|
146
|
-
...HighestLevel
|
|
147
|
-
}
|
|
148
|
-
levels {
|
|
149
|
-
...OverviewLevelResult
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
entityRefs
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
${Y}
|
|
156
|
-
${Je}`,rt=(e,r,a)=>e();function at(e,r=rt){return{getAllCertifications(a,n){return r(i=>e.request(Xe,a,{...n,...i}),"getAllCertifications","query")},getCertificationDetails(a,n){return r(i=>e.request(Ye,a,{...n,...i}),"getCertificationDetails","query")},getCheckResultDetails(a,n){return r(i=>e.request(Ze,a,{...n,...i}),"getCheckResultDetails","query")},getFacetsForOwner(a,n){return r(i=>e.request(et,a,{...n,...i}),"getFacetsForOwner","query")},getProgramOverviewForOwner(a,n){return r(i=>e.request(tt,a,{...n,...i}),"getProgramOverviewForOwner","query")}}}var Z=(e,r,a)=>{if(!r.has(e))throw TypeError("Cannot "+a)},s=(e,r,a)=>(Z(e,r,"read from private field"),a?a.call(e):r.get(e)),E=(e,r,a)=>{if(r.has(e))throw TypeError("Cannot add the same private member more than once");r instanceof WeakSet?r.add(e):r.set(e,a)},D=(e,r,a,n)=>(Z(e,r,"write to private field"),n?n.call(e,a):r.set(e,a),a),R,w,h,A,f;const b=he({id:"plugin.soundcheck"}),nt=e=>"response"in e&&"errors"in e.response,it=e=>"response"in e&&"message"in e.response;class ot{constructor(r){E(this,R,void 0),E(this,w,void 0),E(this,h,void 0),E(this,A,n=>{var i,o,l;return nt(n)?(l=(o=(i=n.response)==null?void 0:i.errors)==null?void 0:o[0].message)!=null?l:`${n}`:it(n)?n.response.message:`${n}`}),E(this,f,async n=>{try{return await n()}catch(i){throw new Error(`Error from Soundcheck backend: ${s(this,A).call(this,i)}`)}}),D(this,R,r.fetchApi),D(this,w,r.discoveryApi);const a=new Re("/graphql",{fetch:async(n,i)=>{const o=`${await s(this,w).getBaseUrl("soundcheck")}${n}`;return s(this,R).fetch(o,i)}});D(this,h,at(a))}async getAllCertifications(r){return s(this,f).call(this,async()=>{const{certifications:a}=await s(this,h).getAllCertifications({entityRef:r});return a})}async getCertificationDetails(r,a){return s(this,f).call(this,async()=>{const{programCertification:n}=await s(this,h).getCertificationDetails({entityRef:r,programId:a});return n})}async getCheckResultDetails(r,a,n){return s(this,f).call(this,async()=>{const{checkResult:i}=await s(this,h).getCheckResultDetails({entityRef:r,programId:a,checkId:n});return i})}async getFacetsForOwner(r){return s(this,f).call(this,async()=>{const{facetsForOwner:a}=await s(this,h).getFacetsForOwner({ownerEntityRef:r});return a})}async getProgramOverviewForOwner(r,a){return s(this,f).call(this,async()=>{const{programOverviewForOwner:n}=await s(this,h).getProgramOverviewForOwner({ownerEntityRef:r,facet:a});return n})}}R=new WeakMap,w=new WeakMap,h=new WeakMap,A=new WeakMap,f=new WeakMap;const S=M({id:"soundcheck-entity"}),ee=W({id:"soundcheck-entity-certification-program-redirect",parent:S,path:"/:programId"}),te=W({id:"soundcheck-entity-certification",parent:S,path:"/:programId/:checkId"}),lt=M({id:"soundcheck-overview"}),$=fe({id:"soundcheck",apis:[ye({api:b,deps:{discoveryApi:ve,fetchApi:Ee},factory:e=>new ot(e)})],routes:{entityContent:S}}),ct=$.provide(G({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-d0819302.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:S})),st=$.provide(ke({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-9d77be51.esm.js").then(e=>e.EntitySoundcheckCard)}})),mt=$.provide(G({name:"SoundcheckOverviewPage",component:()=>import("./index-808077a4.esm.js").then(e=>e.overviewPage),mountPoint:lt})),dt=Le(e=>new $e({defaultOptions:{queries:{refetchInterval:6e4,refetchIntervalInBackground:!1,refetchOnWindowFocus:"always",retry:2,retryDelay:r=>{const a=450+Math.ceil(Math.random()*100);return Math.min(a*2**r,3e4)},onError:r=>e.post(r)}}})),pt=e=>{const r=I(Ce),a=dt(r);return t.createElement(Ne,{client:a},e.children)};function re(e){const r=I(b),a=K(e);return H(["soundcheck/certifications",a],async()=>r.getAllCertifications(a))}function ae(e,r){const a=I(b),n=K(e);return H(["soundcheck/certifications",n,r],async()=>a.getCertificationDetails(n,r),{enabled:!!r})}const ne=24,ut=11,O=e=>e==="small"?1:2,gt=d({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${ne*O(e)}px`,height:({size:e})=>`${ne*O(e)}px`,fontSize:({size:e})=>`${ut*O(e)}px`}}),ie=({className:e,label:r,size:a="small"})=>{const n=gt({size:a});return t.createElement("span",{className:C(e,n.root),role:"img","aria-label":`${r} badge`},r)},ht=d(e=>({root:{background:({color:r})=>r,color:({color:r})=>e.palette.getContrastText(r),borderColor:e.palette.common.black,borderStyle:"solid","&::after":{position:"absolute",display:"block",content:'""',top:0,left:0,width:"100%",height:"100%",borderRadius:"50%",boxShadow:["inset 0 -0.18em 0 0 rgba(0, 0, 0, 0.25)","inset 0px 0.18em 0px 0px rgba(255, 255, 255, 0.5)","inset 0px 1.3em 0px -0.5em rgba(255, 255, 255, 0.2)"].join(",")}}})),x=({className:e,badge:r,size:a="small"})=>{const n=ht({color:r.options.color,size:a});return t.createElement(ie,{className:C(e,n.root),size:a,label:`L${r.options.level}`})},ft=d({root:{borderColor:"currentColor",borderStyle:"dashed"}}),oe=({className:e,size:r="small"})=>{const a=ft();return t.createElement(ie,{className:C(e,a.root),size:r,label:"NL"})},T=d(e=>({description:{padding:0,margin:0,display:"block","& p":{margin:0}},root:{padding:e.spacing(2),margin:0,display:"grid",gridTemplateColumns:"min-content auto",gridGap:e.spacing(2)},title:{fontSize:e.typography.pxToRem(18)},level:{textTransform:"uppercase",color:e.palette.text.secondary,fontWeight:700,letterSpacing:"1px"}}));function yt({description:e,documentationUrl:r}){const a=T();return r?t.createElement("div",{className:a.description},t.createElement(j,{content:e}),t.createElement(Q,{to:r},"Learn more")):t.createElement("div",{className:a.description},t.createElement(j,{content:e}))}const le=({name:e,level:r,badge:a,description:n,documentationUrl:i})=>{const o=T();return t.createElement("div",{className:o.root},a?t.createElement(x,{size:"large",badge:a}):t.createElement(oe,{size:"large"}),t.createElement("div",null,t.createElement(c,{variant:"caption",className:o.level},r!=null?r:"No Level"),t.createElement(c,{variant:"h4",className:o.title},e),n&&t.createElement(yt,{description:n,documentationUrl:i})))},N=({children:e})=>{const[r,a]=we(!1);return be(()=>{const n=setTimeout(()=>{a(!0)},250);return()=>clearTimeout(n)},[]),t.createElement(Ie,{in:r,timeout:250},e)},P=({hideDescription:e=!1})=>{const r=T();return t.createElement(N,null,t.createElement("div",{className:r.root},t.createElement(u,{width:44,height:44}),t.createElement("div",null,t.createElement(c,{variant:"caption",className:r.level},t.createElement(u,{width:100})),t.createElement(c,{variant:"h4",className:r.title},t.createElement(u,{width:300})),!e&&t.createElement(c,{variant:"body2"},t.createElement(u,null)))))},ce=d(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{wrapper:{backgroundColor:r,color:v(e.palette.getContrastText(r),.7),fontSize:e.typography.caption.fontSize,minHeight:"auto",borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`,padding:e.spacing(1),display:"grid",gridTemplateAreas:({badge:a})=>[`"${a?"badge":"title"} title"`,`"${a?".":"description"} description"`].join(" "),gridTemplateColumns:"auto 1fr"},title:{gridArea:"title",textTransform:"uppercase",fontWeight:"bold",color:v(e.palette.getContrastText(r),.7),fontSize:e.typography.body2.fontSize,paddingTop:e.spacing(.5),paddingBottom:e.spacing(.5),lineHeight:1},badge:{gridArea:"badge",marginRight:e.spacing(1)},description:{gridArea:"description",color:v(e.palette.getContrastText(r),.7),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),vt=e=>{const r=ce({badge:e.badge});return t.createElement("div",{className:r.wrapper},e.badge?t.createElement(x,{className:r.badge,badge:e.badge}):null,t.createElement(c,{className:r.title},e.title),e.description?t.createElement(c,{className:r.description},e.description):null)},Et=()=>{const e=ce({});return t.createElement(N,null,t.createElement("div",{className:e.wrapper},t.createElement(u,{className:e.title}),t.createElement(c,{className:e.description},t.createElement(u,null))))},kt=d(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),se=({timestamp:e,description:r})=>{const a=kt(),n=J.fromISO(e).toLocaleString(J.DATETIME_FULL),i=Pe(e),o=r?`${r}: ${i}`:void 0;return t.createElement("div",{className:a.root},t.createElement(De,{title:n},t.createElement(c,{variant:"caption","aria-label":o},i)),t.createElement(We,null))},Ct=e=>({[p.Passed]:"Check passed",[p.NotReported]:"Check not reported",[p.Failed]:"Check failed",[p.NotApplicable]:"Check not applicable"})[e],Rt=k(e=>({root:{color:e.palette.success.main}}))(Ge),wt=k(e=>({root:{color:e.palette.error.main}}))(Ue),bt=k(e=>({root:{color:e.palette.info.main}}))(je),St=k(e=>({root:{color:e.palette.text.disabled}}))(He),me=({result:e,className:r})=>{const a={className:r,"aria-label":Ct(e),"aria-hidden":!1};return e===p.Passed?t.createElement(Rt,{...a}):e===p.NotReported?t.createElement(bt,{...a}):e===p.Failed?t.createElement(wt,{...a}):e===p.NotApplicable?t.createElement(St,{...a}):null},de=d(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:v(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:v(e.palette.primary[e.palette.type],.3)}}})),$t=({className:e,href:r,children:a})=>r?t.createElement(qe,{to:r,className:e},a):t.createElement("div",{className:e},a),Nt=({result:e,name:r,timestamp:a,selected:n=!1,href:i})=>{const o=de(),l=C(o.root,{selected:n});return t.createElement($t,{href:i,className:l},t.createElement(me,{result:e}),t.createElement(c,{variant:"body2"},r),a?t.createElement(se,{timestamp:a}):null)},z=()=>{const e=de();return t.createElement(N,null,t.createElement("div",{className:e.root},t.createElement(u,{width:24,height:24}),t.createElement(c,{variant:"body2"},t.createElement(u,null)),t.createElement(u,{width:100,height:24})))},Lt=()=>{const e=pe();return t.createElement("div",{className:e.root},t.createElement(P,null),new Array(3).fill(null).map((r,a)=>t.createElement(t.Fragment,{key:`skeleton-level-${a}`},t.createElement(Et,null),t.createElement("ul",{className:e.checks},t.createElement(z,null),t.createElement(z,null),t.createElement(z,null)))))},Ft=d(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700}})),B=e=>{const{type:r,...a}=Ft();return t.createElement(Me,{severity:e.severity,elevation:1,classes:a},t.createElement(c,{variant:"subtitle1",classes:{root:r}},e.title),e.children)},It=d(e=>({noChecks:{padding:e.spacing(1)},checks:{padding:0,margin:0,flex:1,listStyle:"none"},checkItem:{borderBottom:`1px solid ${e.palette.divider}`,"&:last-of-type":{borderBottom:"0"}}})),Dt=({checks:e,programId:r,checkId:a})=>{const n=It(),i=U(te);return e.length?t.createElement("ul",{className:n.checks},e.map(o=>t.createElement("li",{key:o.id,className:n.checkItem},t.createElement(Nt,{...o,selected:o.id===a,href:i({programId:r,checkId:o.id})})))):t.createElement(c,{variant:"body2",className:n.noChecks},"No applicable checks at this level.")},At=({level:e,checkId:r,programId:a})=>{var n;return t.createElement(t.Fragment,null,t.createElement(vt,{badge:e.badge,title:e.name,description:e.description}),t.createElement(Dt,{checks:(n=e.checks)!=null?n:[],programId:a,checkId:r}))},pe=d(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),Ot=({programId:e,checkId:r})=>{var a,n;const i=pe(),{entity:o}=_(),{data:l,isLoading:g,isError:F}=ae(o,e);return F?t.createElement("div",{className:i.root},t.createElement(Ae,{padding:2},t.createElement(B,{severity:"error",title:"Error loading certification"}))):g||!e?t.createElement(Lt,null):l?t.createElement("div",{className:i.root},t.createElement(le,{name:l.program.name,level:(a=l.highestLevel)==null?void 0:a.name,badge:(n=l.highestLevel)==null?void 0:n.badge,description:l.program.description,documentationUrl:l.program.documentationURL}),l==null?void 0:l.levels.map(y=>t.createElement(At,{key:y.ordinal,level:y,checkId:r,programId:e}))):null},xt=()=>t.createElement(t.Fragment,null,t.createElement(P,{hideDescription:!0}),t.createElement(P,{hideDescription:!0})),ue=({className:e})=>t.createElement("div",{className:e},t.createElement(V,{title:"No certifications available",missing:"data",description:"There are no programs configured that apply to this entity."})),Tt=({ownerEntityRef:e})=>e?t.createElement(V,{missing:"data",title:"Missing entities",description:t.createElement(t.Fragment,null,"Looks like the group"," ",Te(Be(e),{defaultKind:"Group"})," ","doesn't own any entities.",t.createElement("br",null),t.createElement("br",null),"Please select another group from the dropdown in the corner of the header.")}):null,ge=Fe(e=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:e.spacing(2)},emptyState:{"& > div":{backgroundColor:e.palette.background.paper}}})),L=({children:e,title:r})=>{const a=ge();return t.createElement(xe,{title:r},t.createElement("div",{className:a.infoCard},t.createElement(ze,{inline:!0,backend:"soundcheck",invalidLicenseMessage:"Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),e))},Pt=({title:e="Soundcheck"})=>{const{entity:r}=_(),a=ge(),{data:n,isError:i,isLoading:o}=re(r),l=U(ee);return i?t.createElement(L,{title:e},t.createElement(B,{severity:"error",title:"Error loading certifications"})):o||!n?t.createElement(L,{title:e},t.createElement(xt,null)):n.length===0?t.createElement(L,{title:e},t.createElement(ue,{className:a.emptyState})):t.createElement(L,{title:e},n.map((g,F)=>{var y,q;return t.createElement(Se,{key:g.program.name},t.createElement("div",{className:a.certificationWrapper,"data-testid":"soundcheck-program-row"},t.createElement(le,{key:g.program.id,name:g.program.name,badge:(y=g.highestLevel)==null?void 0:y.badge,level:(q=g.highestLevel)==null?void 0:q.name}),t.createElement(Q,{to:l({programId:g.program.id})},"View Details")),F<n.length-1?t.createElement(Oe,null):null)}))};export{B as A,X as B,Ot as C,ct as E,N as F,x as L,oe as N,p as R,pt as S,se as a,re as b,ee as c,ue as d,te as e,Pt as f,me as g,Tt as h,$ as i,st as j,mt as k,b as s,ae as u};
|
|
157
|
-
//# sourceMappingURL=index-5d64d93c.esm.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import t,{useState as $,useEffect as k,useMemo as L,useCallback as H,memo as b,Fragment as ie}from"react";import{HeaderTabs as W,Link as I,EmptyState as se,Page as ce,Header as pe,Content as me}from"@backstage/core-components";import{SpotifyLicenseBanner as de}from"@spotify/backstage-plugin-core";import{makeStyles as g,alpha as V,TextField as ue,CircularProgress as ge,Tooltip as G,LinearProgress as he,withStyles as fe,Grid as C,Typography as y}from"@material-ui/core";import{s as M,R as N,g as ye,B as ve,L as j,N as K,A as Ee,h as ke,S as be}from"./index-5d64d93c.esm.js";import Ce from"@material-ui/lab/Autocomplete";import{stringifyEntityRef as D,parseEntityRef as v}from"@backstage/catalog-model";import{useApi as x,identityApiRef as Ne,useRouteRef as P,configApiRef as we}from"@backstage/core-plugin-api";import{useQuery as S}from"@tanstack/react-query";import{catalogApiRef as _,humanizeEntityRef as T,entityRouteRef as A}from"@backstage/plugin-catalog-react";import{useSearchParams as Re}from"react-router-dom";import{R as xe}from"./RefetchingIndicator-96188300.esm.js";import{countBy as Q}from"lodash";import{Skeleton as O}from"@material-ui/lab";import{VariableSizeGrid as $e}from"react-window";import"graphql-request";import"graphql-tag";import"@material-ui/core/styles/makeStyles";import"classnames";import"@material-ui/icons/Schedule";import"luxon";import"@material-ui/icons/Check";import"@material-ui/icons/Close";import"@material-ui/icons/RemoveCircleOutline";import"@material-ui/icons/HelpOutline";import"react-use/lib/useDebounce";function Te(e){const r=x(M);return S(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}function U(e,r){const a=x(M);return S(["soundcheck/program-overview-for-owner",e,r],async()=>a.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.type)})}function Le(){const e=x(Ne),r=x(_);return S(["soundcheck/user-groups-claims"],async()=>{const{ownershipEntityRefs:a}=await e.getBackstageIdentity();return(await r.getEntitiesByRefs({entityRefs:a})).items.filter(n=>(n==null?void 0:n.kind)==="Group").map(n=>{var l,s,o,i;return{name:(i=(o=(s=(l=n.spec)==null?void 0:l.profile)==null?void 0:s.displayName)!=null?o:n.metadata.title)!=null?i:n.metadata.name,ref:D(n)}})})}function Ie(){const e=x(_);return S(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"}});return r.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var n,l,s,o;return{name:(o=(s=(l=(n=a.spec)==null?void 0:n.profile)==null?void 0:l.displayName)!=null?s:a.metadata.title)!=null?o:a.metadata.name,ref:D(a)}})})}const Pe=()=>{const[e,r]=Re(),a=Object.fromEntries(e.entries()),[n,l]=$(a);return k(()=>{r(n,{replace:!0})},[n]),[n,l]},Se=()=>{const{data:e,isLoading:r,isError:a}=Le(),{data:n,isLoading:l,isError:s}=Ie();return{options:L(()=>{const o=[];return e&&o.push(...e.map(({name:i,ref:m})=>({name:i,ref:m,key:"My Groups"}))),n&&o.push(...n.map(({name:i,ref:m})=>({name:i,ref:m,key:"All Groups"}))),o},[e,n]),isLoading:r||l,isError:a||s}},Ae=g(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:V(e.page.fontColor,.25)},"&:hover $notchedOutline":{borderColor:e.page.fontColor}},input:{backgroundColor:"transparent",color:e.page.fontColor},clearIndicator:{color:e.page.fontColor},popupIndicator:{color:e.page.fontColor},notchedOutline:{}})),Oe=e=>{const{onChange:r,initialValue:a,setError:n}=e,{options:l,isLoading:s,isError:o}=Se(),i=Ae(),[m,p]=$(null);k(()=>{if(!s&&l!=null&&l.length&&!m){const c=a?l.find(d=>d.ref===a):l[0];c&&(p(c),r==null||r(c.ref))}},[s,l,m,r,a]);const u=H((c,d)=>{p(d),r==null||r(d==null?void 0:d.ref)},[r,p]);return k(()=>{n==null||n(o?new Error("Error loading groups"):void 0)},[o,n]),o?null:t.createElement(Ce,{"aria-label":"Current group",className:i.root,classes:{clearIndicator:i.clearIndicator,popupIndicator:i.popupIndicator},disableClearable:!0,options:l!=null?l:[],loading:s,groupBy:c=>c.key,value:m,freeSolo:!1,onChange:u,getOptionLabel:c=>c.name,renderInput:c=>t.createElement(ue,{...c,variant:"outlined",placeholder:s?"Loading":"Select a group",className:i.textField,InputProps:{...c.InputProps,className:i.input,classes:{notchedOutline:i.notchedOutline},endAdornment:t.createElement(t.Fragment,null,s?t.createElement(ge,{color:"inherit",size:20}):null,c.InputProps.endAdornment)}})})},Be=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),Fe=()=>{const e=Array.from({length:4},(r,a)=>Be(a));return t.createElement(W,{tabs:e})},ze=g(e=>({root:{borderTop:`1px solid ${e.palette.divider}`,borderBottom:`1px solid ${e.palette.divider}`},tab:{textTransform:"uppercase",paddingTop:e.spacing(2),paddingBottom:e.spacing(2)}})),He=({unfilteredFacets:e,onChange:r,type:a})=>{var n,l,s;const o=ze(),i={types:(n=e==null?void 0:e.types.filter(({count:c})=>c>0))!=null?n:[]},m=H(c=>{var d;r((d=i==null?void 0:i.types[c].value)!=null?d:"")},[i==null?void 0:i.types,r]);k(()=>{var c,d;const h=(i==null?void 0:i.types)&&i.types.length>=0,f=!a&&h,E=a&&h&&!(i!=null&&i.types.find(({value:F})=>F===a));(f||E)&&r((d=(c=i==null?void 0:i.types[0])==null?void 0:c.value)!=null?d:"")},[a,i==null?void 0:i.types,r]);const p=(l=i==null?void 0:i.types.map(({value:c,count:d})=>({key:c,label:`${c} (${d>50?"50+":d})`,id:c,tabProps:{className:o.tab}})))!=null?l:[];if(!p.length)return null;const u=(s=i==null?void 0:i.types.findIndex(c=>c.value===a))!=null?s:-1;return t.createElement(t.Fragment,null,t.createElement(xe,null),t.createElement(W,{onChange:m,tabs:p,selectedIndex:u>-1?u:void 0}))},We=g(e=>({root:{height:"8px",minWidth:"64px",marginLeft:e.spacing(2),borderRadius:"100vh",backgroundColor:e.palette.background.default},bar:{backgroundColor:e.palette.success.main,transition:"none"}})),q=e=>{var r,a;const n=We(e),l=L(()=>Object.entries(e.progress).reduce((o,[,i])=>o+i,0),[e.progress]);if(l===0)return null;const s=(r=e.progress[N.Passed])!=null?r:0;return t.createElement(G,{arrow:!0,title:`Check passing for ${s} of ${l} ${l===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(he,{variant:"determinate",value:((a=e.progress[N.Passed])!=null?a:0)/l*100,classes:{root:n.root,bar:n.bar}}))},Ve=g(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),Ge=({check:{name:e,description:r},icon:a,entityRef:n})=>{const l=Ve();return t.createElement(C,{spacing:1},t.createElement(C,{container:!0,direction:"row",spacing:1,wrap:"nowrap"},t.createElement("div",{className:l.iconWrapper},a),t.createElement(y,{variant:"h6",className:l.headerWrapper,noWrap:!0},e)),t.createElement(C,{item:!0,wrap:"nowrap"},t.createElement(y,{variant:"subtitle2",className:l.entityRefName},T(v(n),{defaultKind:"component"}))),t.createElement(y,{variant:"caption"},r))},Me=fe(e=>{const r=e.palette.type==="dark"?e.palette.common.black:e.palette.grey[300];return{tooltip:{backgroundColor:r,color:e.palette.type==="dark"?e.palette.common.white:e.palette.grey[700]},arrow:{color:r}}})(G),je=({children:e,check:r,icon:a,entityRef:n})=>t.createElement(Me,{arrow:!0,title:t.createElement(Ge,{check:r,icon:a,entityRef:n}),enterDelay:150,placement:"top"},e),Ke=g(e=>({root:{padding:0},iconWrapper:{padding:e.spacing(1.5),display:"flex",alignItems:"center",justifyContent:"center"},link:{"&:hover $iconWrapper, &:active $iconWrapper, &:focus $iconWrapper":{backgroundColor:e.palette.infoBackground}},icon:{width:"17px",height:"17px"},virtualized:{borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),J=b(({programId:e,check:r,entityRef:a,result:n,entityRoute:l,isVirtualized:s})=>{const o=Ke();if(typeof a!="string"){const u=t.createElement("div",{className:o.iconWrapper},t.createElement("div",{className:o.icon}));return s?t.createElement("div",{className:`${o.root} ${o.virtualized}`,"aria-hidden":!0},u):t.createElement("td",{className:o.root,"aria-hidden":!0},u)}const i=t.createElement(ye,{className:o.icon,result:n!=null?n:N.NotReported}),m=t.createElement("div",{className:o.iconWrapper},i),p=n&&n===N.NotApplicable?m:t.createElement(I,{className:o.link,to:`${l(v(a))}/soundcheck/${e}/${r.id}`},m);return s?t.createElement("div",{className:`${o.root} ${o.virtualized}`},t.createElement(je,{check:r,icon:i,entityRef:a},p)):t.createElement("td",{className:`${o.root}`},p)}),X=8,De=16,w={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},B={programTitle:350+De*2,checkResult:42},_e=e=>e.reduce((r,a)=>r+a.height,0),Qe=e=>e*B.checkResult+B.programTitle,Ue=e=>e.filter(r=>r!==void 0).map(r=>T(v(r),{defaultKind:"component"})).reduce((r,a)=>r.length>a.length?r:a,""),qe=e=>X*e+X,Y="NoLevel",Je=e=>({name:Y,badge:{options:{level:0,color:""},variant:ve.Medal},entityRef:e,ordinal:0}),Z=g(e=>({checkNameCell:{padding:0,backgroundColor:e.palette.background.paper},checkNameContent:{padding:`0 ${e.spacing(2)}px`,display:"flex",justifyContent:"space-between",alignItems:"center"},checkNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},checkIndicator:{flexBasis:e.spacing(8)},checkNameCellVirtualized:{height:`${w.check}px`,lineHeight:`${w.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),Xe=b(({programId:e,programName:r,check:a,entityRefs:n,results:l,entityRoute:s})=>{const o=Z(),i=L(()=>Q(l.filter(({result:p})=>p!==N.NotApplicable),"result"),[l]),m=new Map(l.map(p=>[p.entityRef,p.result]));return t.createElement("tr",{"data-testid":"program-check-row"},t.createElement("th",{scope:"row",className:o.checkNameCell,"aria-label":`${a.name} check for ${r} program`},t.createElement("div",{className:o.checkNameContent},t.createElement(y,{className:o.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(q,{className:o.checkIndicator,progress:i}))),n.map((p,u)=>t.createElement(J,{key:u,programId:e,check:a,entityRef:p,result:typeof p=="string"?m.get(p):void 0,entityRoute:s})))}),Ye=({name:e,progress:r})=>{const a=Z();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(y,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(q,{className:a.checkIndicator,progress:r})))},Ze=g(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${w.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),et=b(({entityRef:e,highestLevels:r})=>{const a=r.find(n=>n.entityRef===e);return t.createElement(t.Fragment,null,a!=null&&a.badge?t.createElement(j,{badge:a.badge}):t.createElement(K,null))}),tt=({highestLevel:e})=>{const r=Ze();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const a=e.name!==Y;return t.createElement("div",{className:r.virtualized},a?t.createElement(j,{badge:e.badge}):t.createElement(K,null))},ee=g(e=>({programNameCell:{padding:0,position:"sticky",backgroundColor:e.palette.background.paper},programNameContent:{padding:e.spacing(2)},programNameTypography:{overflow:"hidden",textOverflow:"ellipsis"},badgeCellContent:{display:"flex",justifyContent:"center",alignItems:"center"},programNameCellVirtualized:{borderRight:`1px solid ${e.palette.divider}`}})),rt=b(({program:e,entityRefs:r,highestLevels:a})=>{const n=ee();return t.createElement("tr",{"data-testid":"program-title-row"},t.createElement("th",{scope:"row",className:n.programNameCell},t.createElement("div",{className:n.programNameContent},t.createElement(y,{className:n.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((l,s)=>typeof l!="string"?t.createElement("td",{key:s,"aria-hidden":!0}):t.createElement("td",{key:s,"data-testid":"program-certification-cell"},t.createElement("div",{className:n.badgeCellContent},t.createElement(et,{entityRef:l,highestLevels:a})))))}),at=b(({name:e})=>{const r=ee();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(y,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),z=g(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:V(e.palette.getContrastText(r),.7),backgroundColor:r},levelContent:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,backgroundColor:r},levelTypography:{overflow:"hidden",textOverflow:"ellipsis"},levelHeaderCell:{padding:`${e.spacing(.5)}px ${e.spacing(2)}px`,borderRight:`1px solid ${e.palette.divider}`,height:`${w.levelTitle}px`}}}),nt=b(({level:e,entityRefs:r,programName:a})=>{const n=z();return t.createElement("tr",{className:n.root,"data-testid":"program-level-row"},t.createElement("th",{scope:"row",className:n.root},t.createElement("div",{className:n.levelContent},t.createElement(y,{className:n.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${a} program`},e.name))),r.map((l,s)=>t.createElement("td",{key:s,className:n.root,"aria-hidden":!0})))}),lt=({name:e})=>{const r=z();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(y,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},ot=()=>{const e=z();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},it=({program:e,highestLevels:r,levels:a,entityRefs:n,entityRoute:l})=>t.createElement("tbody",null,t.createElement(rt,{program:e,entityRefs:n,highestLevels:r}),a.map((s,o)=>t.createElement(ie,{key:o},t.createElement(nt,{entityRefs:n,level:s,programName:e.name}),s.checks.map(({check:i,results:m},p)=>t.createElement(Xe,{key:p,check:i,programId:e.id,programName:e.name,entityRefs:n,results:m,entityRoute:l}))))),te=g(e=>({root:{position:"sticky",bottom:"-1px",backgroundColor:e.palette.background.default,boxShadow:`0 -1px ${e.palette.divider}`,"& td$cell, & th$cell":{border:0,padding:e.spacing(1)},"& td$cell":{backgroundColor:e.palette.background.default}},row:{boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`},cell:{verticalAlign:"top"},cellInner:{textOrientation:"mixed",writingMode:"vertical-lr",transform:"rotate(-20deg)",transformOrigin:`100% ${e.spacing(1)}px`,wordBreak:"keep-all",fontWeight:"bold",overflow:"hidden",textOverflow:"ellipsis",maxHeight:"max(15vh, 175px)"}})),st=({entityRefs:e})=>{const r=P(A),a=te();return t.createElement("tfoot",{className:a.root,"data-testid":"results-table-footer"},t.createElement("tr",{className:a.row},t.createElement("td",{className:a.cell}),e.map((n,l)=>typeof n!="string"?t.createElement("th",{key:l,className:a.cell,"aria-hidden":!0}):t.createElement("th",{scope:"col",key:l,className:a.cell},t.createElement("div",{className:a.cellInner},t.createElement(I,{to:r(v(n))},T(v(n),{defaultKind:"component"})))))))},ct=({entityRef:e})=>{const r=P(A),a=te(),n=e?t.createElement(I,{to:r(v(e))},T(v(e),{defaultKind:"component"})):t.createElement(t.Fragment,null);return t.createElement("div",{className:a.cell},t.createElement("div",{className:a.cellInner},n))},pt=g(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},paddingBottom:e.spacing(2)},programTitle:{padding:e.spacing(2)},checkResult:{padding:e.spacing(1.5)},title:{padding:`${e.spacing(1)}px ${e.spacing(2)}px`},header:{backgroundColor:e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100]}})),re=()=>{const e=pt(),r=new Array(25).fill(void 0),a=new Array(5).fill(void 0),n=new Array(3).fill(void 0);return t.createElement("table",{className:e.table},t.createElement("tbody",null,t.createElement("tr",null,t.createElement("td",{className:e.programTitle},t.createElement(O,{width:180,height:40})),r.map((l,s)=>t.createElement("td",{key:s}))),n.map((l,s)=>t.createElement(t.Fragment,{key:s},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(O,{width:180})),r.map((o,i)=>t.createElement("td",{key:i}))),a.map((o,i)=>t.createElement("tr",{key:i},t.createElement("td",{className:e.title},t.createElement(O,{width:240})),r.map((m,p)=>t.createElement("td",{key:p,className:e.checkResult},t.createElement(O,{width:18,height:18,variant:"rect"})))))))))},mt=g(e=>({root:{width:"100%"},table:{overflow:"auto",backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left","& th, & td":{border:`1px solid ${e.palette.divider}`,borderCollapse:"collapse"},"& th:first-of-type":{position:"sticky",left:0,zIndex:1,maxWidth:"60ch"},"& tfoot":{bottom:0,zIndex:1e3},"& tbody td:first-of-type":{border:`1px solid ${e.palette.divider}`,boxShadow:`1px 0 ${e.palette.background.default}, -1px 0 ${e.palette.background.default}`}}})),dt=b(e=>{const{setError:r,type:a,ownerEntityRef:n}=e,l=mt(),s=P(A),{data:o,isLoading:i,isError:m}=U(n,{type:a});if(k(()=>{r==null||r(m?new Error("Error loading program overview"):void 0)},[m,r]),i)return t.createElement(re,null);if(!o||!n)return null;const{programs:p,entityRefs:u}=o;if(!i&&!p.length)return t.createElement(se,{missing:"data",title:"Missing programs",description:t.createElement(t.Fragment,null,"Looks like the group"," ",T(v(n),{defaultKind:"Group"})," ","doesn't own any ",a," components that have Soundcheck programs set up.",t.createElement("br",null),t.createElement("br",null),"If you're an administrator, you can learn more about configuring and filtering programs in the"," ",t.createElement(I,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(m)return null;const c=u.length>=25?u:[...u,...Array.from({length:25-u.length},()=>{})];return t.createElement("div",{className:l.root},t.createElement("table",{className:l.table,"aria-label":"Check results"},p.map(({program:d,levels:h,highestLevels:f},E)=>t.createElement(it,{key:E,program:d,entityRefs:c,levels:h,highestLevels:f,entityRoute:s})),t.createElement(st,{entityRefs:c})))}),ut=e=>t.createElement(at,{name:e}),gt=e=>({type:"ProgramHeader",render:()=>ut(e)}),ht=e=>e?t.createElement(lt,{name:e}):t.createElement(ot,null),ae=e=>({type:"LevelHeader",render:()=>ht(e)}),ft=(e,r)=>t.createElement(Ye,{name:e,progress:r}),yt=(e,r)=>({type:"CheckTitle",render:()=>ft(e,r)}),vt=(e,r,a,n,l)=>t.createElement(J,{check:r,entityRef:a,entityRoute:l,programId:e,result:n,isVirtualized:!0}),Et=(e,r,a,n,l)=>({type:"CheckResult",render:()=>vt(e,r,a,n,l)}),kt=e=>t.createElement(ct,{entityRef:e}),ne=e=>({type:"EntityHeader",render:()=>kt(e)}),bt=e=>t.createElement(tt,{highestLevel:e}),Ct=e=>({type:"LevelBadge",render:()=>bt(e)}),Nt=e=>r=>{const a=e[r.rowIndex].cells[r.columnIndex];return a?t.createElement("div",{style:r.style},a.render()):t.createElement("div",{style:r.style})},wt=(e,r,a)=>{var n;const l=[];for(const{program:o,levels:i,highestLevels:m}of e){l.push({height:w.programTitle,cells:[gt(o.name),...r.map(p=>{const u=p?m.find(c=>c.entityRef===p)||Je(p):void 0;return Ct(u)})]});for(const p of i){l.push({height:w.levelTitle,cells:[ae(p.name),...r.map(u=>ae(""))]});for(const{check:u,results:c}of p.checks)l.push({height:w.check,cells:[yt(u.name,Q(c.filter(({result:d})=>d!==N.NotApplicable),"result")),...r.map(d=>{var h,f;return Et(o.id,u,d,(f=(h=c.find(E=>E.entityRef===d))==null?void 0:h.result)!=null?f:N.NotApplicable,a)})]})}}const s=Ue(r!=null?r:[]);return l.push({height:qe((n=s.length)!=null?n:1),cells:[ne(""),...r.map(o=>ne(o||""))]}),l},Rt=g(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),xt=e=>{const{setError:r,type:a,ownerEntityRef:n}=e,l=Rt(),s=P(A),{data:o,isLoading:i,isError:m}=U(n,{type:a});if(k(()=>{r==null||r(m?new Error("Error loading program overview"):void 0)},[m,r]),i)return t.createElement(re,null);if(!o||!n)return null;const{programs:p,entityRefs:u}=o,c=u.length>=25?u:[...u,...Array.from({length:25-u.length},()=>{})],d=wt(p,c,s),h=Nt(d);return t.createElement(C,{"aria-label":`Check results for ${a}`,key:a,item:!0,xs:12},t.createElement($e,{className:l.table,columnCount:c.length+1,columnWidth:f=>f===0?B.programTitle:B.checkResult,rowCount:d.length,rowHeight:f=>d[f].height,height:_e(d),width:Qe(c.length)},h))},$t=({facets:e,ownerEntityRef:r,type:a,setError:n})=>{const l=L(()=>{const s=new Map;return e.types.forEach(({value:o})=>{s.set(o,t.createElement(xt,{key:o,ownerEntityRef:r,type:o,setError:n}))}),s},[e,r,n]);return t.createElement("div",null,l.get(a))},Tt=g(()=>({scrollContainer:{overflow:"auto"}})),Lt=({facets:e,ownerEntityRef:r,hasError:a,type:n,setError:l,useVirtualizedResultsTable:s})=>{var o,i;const m=Tt();return a?t.createElement(Ee,{severity:"error",title:a.message}):e&&((i=(o=e.types)==null?void 0:o.length)!=null?i:0)>0?t.createElement("div",{className:m.scrollContainer},s?t.createElement($t,{facets:e,type:n,setError:l,ownerEntityRef:r,hasError:a}):t.createElement(dt,{ownerEntityRef:r,type:n,setError:l})):t.createElement(ke,{ownerEntityRef:r})},It=g(e=>({tableContainer:{padding:e.spacing(3),backgroundColor:"transparent"}})),Pt=({title:e="Soundcheck"})=>{var r;const[a,n]=Pe(),{group:l,type:s}=a,[o,i]=$(void 0),[m,p]=$(void 0),[u,c]=$(void 0);k(()=>{o!==s&&i(s)},[s,o]);const{data:d,isLoading:h}=Te(l),f=(r=x(we).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?r:!1,E=m||u,F=R=>{R&&n({...a,group:R})},le=R=>{R&&(i(R),n({...a,type:R}))},oe=It();return t.createElement(ce,{themeId:"website"},t.createElement(de,{backend:"soundcheck",invalidLicenseMessage:"Submitted check results will still be stored, but it will not be possible to view certifications or individual results until a valid license is present."}),t.createElement(pe,{title:e},t.createElement(Oe,{onChange:F,initialValue:l,setError:p})),t.createElement(me,{noPadding:!0,stretch:!0},t.createElement(C,{container:!0,spacing:0},t.createElement(C,{item:!0,xs:12},h?t.createElement(Fe,null):t.createElement(He,{unfilteredFacets:d,type:o,onChange:le})),t.createElement(C,{item:!0,xs:12,className:oe.tableContainer},!h&&t.createElement(Lt,{facets:d,type:o,setError:c,hasError:E,ownerEntityRef:l,useVirtualizedResultsTable:f})))))},St=e=>{const{title:r}=e;return t.createElement(be,null,t.createElement(Pt,{title:r}))};export{St as overviewPage};
|
|
2
|
-
//# sourceMappingURL=index-808077a4.esm.js.map
|