@spotify/backstage-plugin-soundcheck 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +16 -3
- package/config.d.ts +9 -0
- package/dist/esm/{EntitySoundcheckContent-592fa779.esm.js → EntitySoundcheckContent-aecd6416.esm.js} +2 -2
- package/dist/esm/OverviewPageContent-433c8dc6.esm.js +2 -0
- package/dist/esm/{RefetchingIndicator-b042ec49.esm.js → RefetchingIndicator-3707a744.esm.js} +2 -2
- package/dist/esm/{index-540b325c.esm.js → index-01c3a9f5.esm.js} +2 -2
- package/dist/esm/index-29e115b6.esm.js +2 -0
- package/dist/esm/index-6e141f2f.esm.js +429 -0
- package/dist/esm/{index-fcd50c7d.esm.js → index-a224cc6f.esm.js} +2 -2
- package/dist/index.esm.js +1 -1
- package/package.json +18 -16
- package/dist/esm/OverviewPageContent-7cf86a3a.esm.js +0 -2
- package/dist/esm/index-100619e3.esm.js +0 -2
- package/dist/esm/index-95ae147b.esm.js +0 -388
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import{createApiRef as Ne,createRouteRef as I,createSubRouteRef as k,createPlugin as Oe,createApiFactory as qe,discoveryApiRef as Ge,fetchApiRef as Te,createRoutableExtension as S,createComponentExtension as Ae,useApi as x,errorApiRef as Le,useRouteRef as j}from"@backstage/core-plugin-api";import{GraphQLClient as xe}from"graphql-request";import c from"graphql-tag";import n,{createContext as V,useState as b,useCallback as E,useContext as K,useRef as Be,useEffect as Me,Fragment as ze}from"react";import{QueryClient as Ue,QueryClientProvider as He,useQuery as _}from"@tanstack/react-query";import{memoize as We}from"lodash";import Qe from"@material-ui/core/styles/makeStyles";import{makeStyles as p,Typography as u,Modal as je,Box as J,Button as X,Fade as Ve,alpha as P,Tooltip as Ke,withStyles as D,Divider as _e}from"@material-ui/core";import{MarkdownContent as Y,Link as Z,EmptyState as ee,InfoCard as Je}from"@backstage/core-components";import{useEntity as te,humanizeEntityRef as Xe}from"@backstage/plugin-catalog-react";import{useAutoUpdatingRelativeTime as Ye,SpotifyLicenseBanner as Ze}from"@spotify/backstage-plugin-core";import{stringifyEntityRef as ae,parseEntityRef as et}from"@backstage/catalog-model";import{Alert as tt,Skeleton as f}from"@material-ui/lab";import{Link as at}from"react-router-dom";import F from"classnames";import rt from"@material-ui/icons/Schedule";import{DateTime as re}from"luxon";import nt from"@material-ui/icons/Check";import it from"@material-ui/icons/Close";import st from"@material-ui/icons/RemoveCircleOutline";import ct from"@material-ui/icons/HelpOutline";var ne=(e=>(e.Medal="MEDAL",e))(ne||{}),h=(e=>(e.Failed="FAILED",e.NotApplicable="NOT_APPLICABLE",e.NotReported="NOT_REPORTED",e.Passed="PASSED",e))(h||{});const ot=c`
|
|
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
|
+
`,lt=c`
|
|
24
|
+
fragment check on Check {
|
|
25
|
+
id
|
|
26
|
+
name
|
|
27
|
+
description
|
|
28
|
+
}
|
|
29
|
+
`,dt=c`
|
|
30
|
+
fragment level on Level {
|
|
31
|
+
ordinal
|
|
32
|
+
name
|
|
33
|
+
description
|
|
34
|
+
checks {
|
|
35
|
+
...check
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
${lt}`,mt=c`
|
|
39
|
+
fragment CheckResultSummary on CheckResult {
|
|
40
|
+
id
|
|
41
|
+
name
|
|
42
|
+
result
|
|
43
|
+
timestamp
|
|
44
|
+
}
|
|
45
|
+
`,ut=c`
|
|
46
|
+
fragment LevelResultDetails on LevelResult {
|
|
47
|
+
ordinal
|
|
48
|
+
name
|
|
49
|
+
description
|
|
50
|
+
badge {
|
|
51
|
+
... on BadgeVariantMedal {
|
|
52
|
+
variant
|
|
53
|
+
options {
|
|
54
|
+
level
|
|
55
|
+
color
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
certified
|
|
60
|
+
checks {
|
|
61
|
+
...CheckResultSummary
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
${mt}`,pt=c`
|
|
65
|
+
fragment CheckResultDetails on CheckResult {
|
|
66
|
+
id
|
|
67
|
+
name
|
|
68
|
+
description
|
|
69
|
+
result
|
|
70
|
+
timestamp
|
|
71
|
+
notes
|
|
72
|
+
}
|
|
73
|
+
`,gt=c`
|
|
74
|
+
fragment OverviewLevelResult on OverviewLevelResult {
|
|
75
|
+
ordinal
|
|
76
|
+
name
|
|
77
|
+
checks {
|
|
78
|
+
check {
|
|
79
|
+
id
|
|
80
|
+
name
|
|
81
|
+
description
|
|
82
|
+
}
|
|
83
|
+
results {
|
|
84
|
+
id
|
|
85
|
+
entityRef
|
|
86
|
+
result
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
`,ie=c`
|
|
91
|
+
fragment HighestLevel on LevelResult {
|
|
92
|
+
entityRef
|
|
93
|
+
ordinal
|
|
94
|
+
name
|
|
95
|
+
badge {
|
|
96
|
+
... on BadgeVariantMedal {
|
|
97
|
+
variant
|
|
98
|
+
options {
|
|
99
|
+
color
|
|
100
|
+
level
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
`,ht=c`
|
|
106
|
+
mutation archiveCampaign($campaignId: String!) {
|
|
107
|
+
campaignArchived: archiveCampaign(campaignId: $campaignId)
|
|
108
|
+
}
|
|
109
|
+
`,ft=c`
|
|
110
|
+
mutation createCampaign($input: CampaignInput!) {
|
|
111
|
+
campaign: createCampaign(input: $input) {
|
|
112
|
+
id
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
`,yt=c`
|
|
116
|
+
mutation createCheck($input: CheckerInput!) {
|
|
117
|
+
check: createChecker(input: $input) {
|
|
118
|
+
id
|
|
119
|
+
filter
|
|
120
|
+
name
|
|
121
|
+
description
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
`,kt=c`
|
|
125
|
+
mutation createProgram($input: ProgramInput!) {
|
|
126
|
+
program: createProgram(input: $input) {
|
|
127
|
+
id
|
|
128
|
+
ownerEntityRef
|
|
129
|
+
name
|
|
130
|
+
description
|
|
131
|
+
documentationURL
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
`,vt=c`
|
|
135
|
+
mutation deleteCampaign($campaignId: String!) {
|
|
136
|
+
campaignDeleted: deleteCampaign(campaignId: $campaignId)
|
|
137
|
+
}
|
|
138
|
+
`,Ct=c`
|
|
139
|
+
mutation deleteChecker($checkerId: String!) {
|
|
140
|
+
deleteChecker(checkerId: $checkerId)
|
|
141
|
+
}
|
|
142
|
+
`,Rt=c`
|
|
143
|
+
mutation deleteProgram($programId: String!) {
|
|
144
|
+
programDeleted: deleteProgram(programId: $programId)
|
|
145
|
+
}
|
|
146
|
+
`,Et=c`
|
|
147
|
+
mutation updateCampaign($input: CampaignInput!) {
|
|
148
|
+
campaign: updateCampaign(input: $input) {
|
|
149
|
+
id
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
`,Pt=c`
|
|
153
|
+
mutation updateCheck($input: CheckerInput!) {
|
|
154
|
+
check: updateChecker(input: $input) {
|
|
155
|
+
id
|
|
156
|
+
filter
|
|
157
|
+
name
|
|
158
|
+
description
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
`,$t=c`
|
|
162
|
+
mutation updateCollectorConfig($input: CollectorConfigInput!) {
|
|
163
|
+
collector: setCollectorConfig(input: $input) {
|
|
164
|
+
id
|
|
165
|
+
factNames
|
|
166
|
+
collectionConfigs {
|
|
167
|
+
factRefs
|
|
168
|
+
filter
|
|
169
|
+
frequency
|
|
170
|
+
cache
|
|
171
|
+
}
|
|
172
|
+
config
|
|
173
|
+
configSchema
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
`,wt=c`
|
|
177
|
+
mutation updateProgram($input: ProgramInput!) {
|
|
178
|
+
program: updateProgram(input: $input) {
|
|
179
|
+
id
|
|
180
|
+
ownerEntityRef
|
|
181
|
+
name
|
|
182
|
+
description
|
|
183
|
+
documentationURL
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
`,It=c`
|
|
187
|
+
query getAllCertifications($entityRef: String!) {
|
|
188
|
+
certifications(entityRef: $entityRef, includeFilteredChecks: false) {
|
|
189
|
+
...CertificationSummary
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
${ot}`,St=c`
|
|
193
|
+
query getAllPrograms($programIds: [String!], $first: Int, $after: String) {
|
|
194
|
+
programs(programIds: $programIds, first: $first, after: $after) {
|
|
195
|
+
totalCount
|
|
196
|
+
endCursor
|
|
197
|
+
hasNextPage
|
|
198
|
+
edges {
|
|
199
|
+
cursor
|
|
200
|
+
program {
|
|
201
|
+
id
|
|
202
|
+
ownerEntityRef
|
|
203
|
+
name
|
|
204
|
+
description
|
|
205
|
+
documentationURL
|
|
206
|
+
filter
|
|
207
|
+
levels {
|
|
208
|
+
...level
|
|
209
|
+
}
|
|
210
|
+
isEditable
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
${dt}`,bt=c`
|
|
216
|
+
query getCampaigns($filter: ListCampaignsFilter!) {
|
|
217
|
+
campaigns(filter: $filter) {
|
|
218
|
+
totalCount
|
|
219
|
+
endCursor
|
|
220
|
+
hasNextPage
|
|
221
|
+
edges {
|
|
222
|
+
cursor
|
|
223
|
+
campaign {
|
|
224
|
+
id
|
|
225
|
+
name
|
|
226
|
+
description
|
|
227
|
+
ownerEntityRef
|
|
228
|
+
archived
|
|
229
|
+
startDate
|
|
230
|
+
targetCompletionDate
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
`,Dt=c`
|
|
236
|
+
query getCertificationDetails($entityRef: String!, $programId: String!) {
|
|
237
|
+
programCertification(
|
|
238
|
+
entityRef: $entityRef
|
|
239
|
+
programId: $programId
|
|
240
|
+
includeFilteredChecks: false
|
|
241
|
+
) {
|
|
242
|
+
program {
|
|
243
|
+
id
|
|
244
|
+
name
|
|
245
|
+
description
|
|
246
|
+
documentationURL
|
|
247
|
+
}
|
|
248
|
+
highestLevel {
|
|
249
|
+
...HighestLevel
|
|
250
|
+
}
|
|
251
|
+
levels {
|
|
252
|
+
...LevelResultDetails
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
${ie}
|
|
257
|
+
${ut}`,Ft=c`
|
|
258
|
+
query getCheckResultDetails($entityRef: String!, $programId: String!, $checkId: String!) {
|
|
259
|
+
checkResult(entityRef: $entityRef, programId: $programId, checkId: $checkId) {
|
|
260
|
+
...CheckResultDetails
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
${pt}`,Nt=c`
|
|
264
|
+
query getCheckers($ids: [String!], $first: Int, $after: String, $orderAlphabetical: String, $searchByOwner: String, $searchByName: String) {
|
|
265
|
+
checkers(
|
|
266
|
+
ids: $ids
|
|
267
|
+
first: $first
|
|
268
|
+
after: $after
|
|
269
|
+
orderAlphabetical: $orderAlphabetical
|
|
270
|
+
searchByOwner: $searchByOwner
|
|
271
|
+
searchByName: $searchByName
|
|
272
|
+
) {
|
|
273
|
+
totalCount
|
|
274
|
+
endCursor
|
|
275
|
+
hasNextPage
|
|
276
|
+
edges {
|
|
277
|
+
cursor
|
|
278
|
+
checker {
|
|
279
|
+
id
|
|
280
|
+
ownerEntityRef
|
|
281
|
+
supportChannel
|
|
282
|
+
name
|
|
283
|
+
description
|
|
284
|
+
rule
|
|
285
|
+
passedMessage
|
|
286
|
+
failedMessage
|
|
287
|
+
filter
|
|
288
|
+
isEditable
|
|
289
|
+
schedule
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
`,Ot=c`
|
|
295
|
+
query getEntityRefsForTechHealthFilter($ownerEntityRef: String) {
|
|
296
|
+
entityRefsForTechHealthFilter(ownerEntityRef: $ownerEntityRef)
|
|
297
|
+
}
|
|
298
|
+
`,qt=c`
|
|
299
|
+
query getFacetsForOwner($ownerEntityRef: String!) {
|
|
300
|
+
facetsForOwner(ownerEntityRef: $ownerEntityRef) {
|
|
301
|
+
types {
|
|
302
|
+
kind
|
|
303
|
+
type
|
|
304
|
+
count
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
`,Gt=c`
|
|
309
|
+
query getCollectors($ids: [String!]) {
|
|
310
|
+
collectors(ids: $ids) {
|
|
311
|
+
id
|
|
312
|
+
name
|
|
313
|
+
description
|
|
314
|
+
factNames
|
|
315
|
+
config
|
|
316
|
+
isConfigurable
|
|
317
|
+
isEditable
|
|
318
|
+
collectionConfigs {
|
|
319
|
+
factRefs
|
|
320
|
+
filter
|
|
321
|
+
frequency
|
|
322
|
+
cache
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
`,Tt=c`
|
|
327
|
+
query getFactSchemas($collectorId: String!, $factName: String!) {
|
|
328
|
+
factSchema(collectorId: $collectorId, factName: $factName) {
|
|
329
|
+
schema
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
`,At=c`
|
|
333
|
+
query getIndividualCheckPassRates($filter: Filter) {
|
|
334
|
+
individualCheckPassRates(filter: $filter) {
|
|
335
|
+
id
|
|
336
|
+
checkName
|
|
337
|
+
checkDescription
|
|
338
|
+
checkOwnerRef
|
|
339
|
+
snapshotPassRate
|
|
340
|
+
trendPassRates
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
`,Lt=c`
|
|
344
|
+
query getIndividualEntityPassRates($filter: Filter) {
|
|
345
|
+
individualEntityPassRates(filter: $filter) {
|
|
346
|
+
id
|
|
347
|
+
entityDescription
|
|
348
|
+
entityOwnerRef
|
|
349
|
+
snapshotPassRate
|
|
350
|
+
trendPassRates
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
`,xt=c`
|
|
354
|
+
query getIndividualGroupPassRates($filter: Filter) {
|
|
355
|
+
groupPassRates(filter: $filter) {
|
|
356
|
+
id
|
|
357
|
+
groupTitle
|
|
358
|
+
memberRefs
|
|
359
|
+
snapshotPassRate
|
|
360
|
+
trendPassRates
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
`,Bt=c`
|
|
364
|
+
query getIndividualTrackPassRate($filter: Filter) {
|
|
365
|
+
individualTrackPassRate(filter: $filter) {
|
|
366
|
+
id
|
|
367
|
+
trackName
|
|
368
|
+
trackDescription
|
|
369
|
+
trackOwnerRef
|
|
370
|
+
levels {
|
|
371
|
+
levelOrdinal
|
|
372
|
+
levelName
|
|
373
|
+
snapshotPassRate
|
|
374
|
+
trendPassRates
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
`,Mt=c`
|
|
379
|
+
query getOverallCheckPassRates($filter: Filter) {
|
|
380
|
+
overallCheckPassRates(filter: $filter)
|
|
381
|
+
}
|
|
382
|
+
`,zt=c`
|
|
383
|
+
query getOverallEntityPassRates($filter: Filter) {
|
|
384
|
+
overallEntityPassRates(filter: $filter) {
|
|
385
|
+
id
|
|
386
|
+
trendPassRates
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
`,Ut=c`
|
|
390
|
+
query getOverallGroupPassRates($filter: Filter) {
|
|
391
|
+
groupPassRates(filter: $filter, limit: 5) {
|
|
392
|
+
id
|
|
393
|
+
groupTitle
|
|
394
|
+
snapshotPassRate
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
`,Ht=c`
|
|
398
|
+
query getOverallTrackPassRate($filter: Filter) {
|
|
399
|
+
overallTrackPassRate(filter: $filter) {
|
|
400
|
+
levelOrdinal
|
|
401
|
+
snapshotPassRate
|
|
402
|
+
trendPassRates
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
`,Wt=c`
|
|
406
|
+
query getProgramOverviewForOwner($ownerEntityRef: String!, $facet: FacetInput) {
|
|
407
|
+
programOverviewForOwner(
|
|
408
|
+
ownerEntityRef: $ownerEntityRef
|
|
409
|
+
facet: $facet
|
|
410
|
+
includeFilteredChecks: false
|
|
411
|
+
) {
|
|
412
|
+
programs {
|
|
413
|
+
program {
|
|
414
|
+
id
|
|
415
|
+
name
|
|
416
|
+
}
|
|
417
|
+
highestLevels {
|
|
418
|
+
...HighestLevel
|
|
419
|
+
}
|
|
420
|
+
levels {
|
|
421
|
+
...OverviewLevelResult
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
entityRefs
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
${ie}
|
|
428
|
+
${gt}`,Qt=(e,t,a)=>e();function jt(e,t=Qt){return{archiveCampaign(a,r){return t(i=>e.request(ht,a,{...r,...i}),"archiveCampaign","mutation")},createCampaign(a,r){return t(i=>e.request(ft,a,{...r,...i}),"createCampaign","mutation")},createCheck(a,r){return t(i=>e.request(yt,a,{...r,...i}),"createCheck","mutation")},createProgram(a,r){return t(i=>e.request(kt,a,{...r,...i}),"createProgram","mutation")},deleteCampaign(a,r){return t(i=>e.request(vt,a,{...r,...i}),"deleteCampaign","mutation")},deleteChecker(a,r){return t(i=>e.request(Ct,a,{...r,...i}),"deleteChecker","mutation")},deleteProgram(a,r){return t(i=>e.request(Rt,a,{...r,...i}),"deleteProgram","mutation")},updateCampaign(a,r){return t(i=>e.request(Et,a,{...r,...i}),"updateCampaign","mutation")},updateCheck(a,r){return t(i=>e.request(Pt,a,{...r,...i}),"updateCheck","mutation")},updateCollectorConfig(a,r){return t(i=>e.request($t,a,{...r,...i}),"updateCollectorConfig","mutation")},updateProgram(a,r){return t(i=>e.request(wt,a,{...r,...i}),"updateProgram","mutation")},getAllCertifications(a,r){return t(i=>e.request(It,a,{...r,...i}),"getAllCertifications","query")},getAllPrograms(a,r){return t(i=>e.request(St,a,{...r,...i}),"getAllPrograms","query")},getCampaigns(a,r){return t(i=>e.request(bt,a,{...r,...i}),"getCampaigns","query")},getCertificationDetails(a,r){return t(i=>e.request(Dt,a,{...r,...i}),"getCertificationDetails","query")},getCheckResultDetails(a,r){return t(i=>e.request(Ft,a,{...r,...i}),"getCheckResultDetails","query")},getCheckers(a,r){return t(i=>e.request(Nt,a,{...r,...i}),"getCheckers","query")},getEntityRefsForTechHealthFilter(a,r){return t(i=>e.request(Ot,a,{...r,...i}),"getEntityRefsForTechHealthFilter","query")},getFacetsForOwner(a,r){return t(i=>e.request(qt,a,{...r,...i}),"getFacetsForOwner","query")},getCollectors(a,r){return t(i=>e.request(Gt,a,{...r,...i}),"getCollectors","query")},getFactSchemas(a,r){return t(i=>e.request(Tt,a,{...r,...i}),"getFactSchemas","query")},getIndividualCheckPassRates(a,r){return t(i=>e.request(At,a,{...r,...i}),"getIndividualCheckPassRates","query")},getIndividualEntityPassRates(a,r){return t(i=>e.request(Lt,a,{...r,...i}),"getIndividualEntityPassRates","query")},getIndividualGroupPassRates(a,r){return t(i=>e.request(xt,a,{...r,...i}),"getIndividualGroupPassRates","query")},getIndividualTrackPassRate(a,r){return t(i=>e.request(Bt,a,{...r,...i}),"getIndividualTrackPassRate","query")},getOverallCheckPassRates(a,r){return t(i=>e.request(Mt,a,{...r,...i}),"getOverallCheckPassRates","query")},getOverallEntityPassRates(a,r){return t(i=>e.request(zt,a,{...r,...i}),"getOverallEntityPassRates","query")},getOverallGroupPassRates(a,r){return t(i=>e.request(Ut,a,{...r,...i}),"getOverallGroupPassRates","query")},getOverallTrackPassRate(a,r){return t(i=>e.request(Ht,a,{...r,...i}),"getOverallTrackPassRate","query")},getProgramOverviewForOwner(a,r){return t(i=>e.request(Wt,a,{...r,...i}),"getProgramOverviewForOwner","query")}}}var se=(e,t,a)=>{if(!t.has(e))throw TypeError("Cannot "+a)},s=(e,t,a)=>(se(e,t,"read from private field"),a?a.call(e):t.get(e)),$=(e,t,a)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,a)},B=(e,t,a,r)=>(se(e,t,"write to private field"),r?r.call(e,a):t.set(e,a),a),N,O,o,M,l;const q=Ne({id:"plugin.soundcheck"}),Vt=e=>"response"in e&&"errors"in e.response,Kt=e=>"response"in e&&"message"in e.response;class _t{constructor(t){$(this,N,void 0),$(this,O,void 0),$(this,o,void 0),$(this,M,r=>{var i,d,m;return Vt(r)?(m=(d=(i=r.response)==null?void 0:i.errors)==null?void 0:d[0].message)!=null?m:`${r}`:Kt(r)?r.response.message:`${r}`}),$(this,l,async r=>{try{return await r()}catch(i){throw new Error(`Error from Soundcheck backend: ${s(this,M).call(this,i)}`)}}),B(this,N,t.fetchApi),B(this,O,t.discoveryApi);const a=new xe("/graphql",{fetch:async(r,i)=>{const d=`${await s(this,O).getBaseUrl("soundcheck")}${r}`;return s(this,N).fetch(d,i)}});B(this,o,jt(a))}async getAllCertifications(t){return s(this,l).call(this,async()=>{const{certifications:a}=await s(this,o).getAllCertifications({entityRef:t});return a})}async getCertificationDetails(t,a){return s(this,l).call(this,async()=>{const{programCertification:r}=await s(this,o).getCertificationDetails({entityRef:t,programId:a});return r})}async getCheckResultDetails(t,a,r){return s(this,l).call(this,async()=>{const{checkResult:i}=await s(this,o).getCheckResultDetails({entityRef:t,programId:a,checkId:r});return i})}async getFacetsForOwner(t){return s(this,l).call(this,async()=>{const{facetsForOwner:a}=await s(this,o).getFacetsForOwner({ownerEntityRef:t});return a})}async getProgramOverviewForOwner(t,a){return s(this,l).call(this,async()=>{const{programOverviewForOwner:r}=await s(this,o).getProgramOverviewForOwner({ownerEntityRef:t,facet:a});return r})}async getAllPrograms(t,a,r){return s(this,l).call(this,async()=>{const{programs:i}=await s(this,o).getAllPrograms({programIds:t,first:a,after:r});return i})}async createProgram(t){return s(this,l).call(this,async()=>{const{program:a}=await s(this,o).createProgram({input:t});return a})}async updateProgram(t){return s(this,l).call(this,async()=>{const{program:a}=await s(this,o).updateProgram({input:t});return a})}async deleteProgram(t){return s(this,l).call(this,async()=>{const{programDeleted:a}=await s(this,o).deleteProgram({programId:t});return a})}async getChecks(t,a,r){return s(this,l).call(this,async()=>{const{checkers:i}=await s(this,o).getCheckers({ids:t,first:a,after:r});return i})}async createCheck(t){return s(this,l).call(this,async()=>{const{check:a}=await s(this,o).createCheck({input:t});return a})}async updateCheck(t){return s(this,l).call(this,async()=>{const{check:a}=await s(this,o).updateCheck({input:t});return a})}async deleteCheck(t){return s(this,l).call(this,async()=>await s(this,o).deleteChecker({checkerId:t}))}async getCollectors(t){return s(this,l).call(this,async()=>{const{collectors:a}=await s(this,o).getCollectors({ids:t});return a})}async getFactSchema(t,a){if(!(!t||!a))return s(this,l).call(this,async()=>{const{factSchema:r}=await s(this,o).getFactSchemas({collectorId:t,factName:a});return r})}async updateCollectorConfig(t){return s(this,l).call(this,async()=>{const{collector:a}=await s(this,o).updateCollectorConfig({input:t});return a})}async getOverallCheckPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallCheckPassRates({filter:t}))}async getIndividualCheckPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualCheckPassRates({filter:t}))}async getOverallTrackPassRate(t){return s(this,l).call(this,async()=>await s(this,o).getOverallTrackPassRate({filter:t}))}async getIndividualTrackPassRate(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualTrackPassRate({filter:t}))}async getOverallEntityPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallEntityPassRates({filter:t}))}async getIndividualEntityPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualEntityPassRates({filter:t}))}async getOverallGroupPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getOverallGroupPassRates({filter:t}))}async getIndividualGroupPassRates(t){return s(this,l).call(this,async()=>await s(this,o).getIndividualGroupPassRates({filter:t}))}async getEntityRefsForTechHealthFilter(t){return s(this,l).call(this,async()=>await s(this,o).getEntityRefsForTechHealthFilter({ownerEntityRef:t}))}async getCampaigns(t){return s(this,l).call(this,async()=>{const{campaigns:a}=await s(this,o).getCampaigns({filter:t});return a})}async createCampaign(t){return s(this,l).call(this,async()=>{const{campaign:a}=await s(this,o).createCampaign({input:t});return a})}async updateCampaign(t){return s(this,l).call(this,async()=>{const{campaign:a}=await s(this,o).updateCampaign({input:t});return a})}async deleteCampaign(t){return s(this,l).call(this,async()=>{const{campaignDeleted:a}=await s(this,o).deleteCampaign({campaignId:t});return a})}async archiveCampaign(t){return s(this,l).call(this,async()=>{const{campaignArchived:a}=await s(this,o).archiveCampaign({campaignId:t});return a})}}N=new WeakMap,O=new WeakMap,o=new WeakMap,M=new WeakMap,l=new WeakMap;const G=I({id:"soundcheck-entity"}),Jt=I({id:"soundcheck-group"}),ce=k({id:"soundcheck-entity-certification-track-redirect",parent:G,path:"/:trackId"}),oe=k({id:"soundcheck-entity-certification",parent:G,path:"/:trackId/:checkId"}),Xt=I({id:"soundcheck-overview"}),v=I({id:"soundcheck"}),Yt=k({id:"soundcheck-checks",parent:v,path:"/checks"});k({id:"soundcheck-tracks",parent:v,path:"/tracks"});const Zt=k({id:"soundcheck-track-details",parent:v,path:"/tracks/:trackId"}),ea=k({id:"soundcheck-campaigns",parent:v,path:"/campaigns"}),ta=k({id:"soundcheck-campaign-details",parent:v,path:"/campaigns/:campaignId"}),aa=k({id:"soundcheck-campaign-edit",parent:v,path:"/campaigns/:campaignId/edit"}),C=Oe({id:"soundcheck",apis:[qe({api:q,deps:{discoveryApi:Ge,fetchApi:Te},factory:e=>new _t(e)})],routes:{entityContent:G}}),ra=C.provide(S({name:"EntitySoundcheckContent",component:()=>import("./EntitySoundcheckContent-aecd6416.esm.js").then(e=>e.EntitySoundcheckContent),mountPoint:G})),na=C.provide(Ae({name:"EntitySoundcheckCard",component:{lazy:()=>import("./index-01c3a9f5.esm.js").then(e=>e.EntitySoundcheckCard)}})),ia=C.provide(S({name:"GroupSoundcheckContent",component:()=>import("./index-a224cc6f.esm.js").then(e=>e.FixedGroupOverviewPage),mountPoint:Jt})),sa=C.provide(S({name:"SoundcheckOverviewPage",component:()=>import("./index-a224cc6f.esm.js").then(e=>e.OverviewPage),mountPoint:Xt})),ca=C.provide(S({name:"SoundcheckRoutingPage",component:()=>import("./index-29e115b6.esm.js").then(e=>e.RoutingPage),mountPoint:v})),oa=We(e=>new Ue({defaultOptions:{queries:{refetchInterval:6e4,refetchIntervalInBackground:!1,refetchOnWindowFocus:"always",retry:2,retryDelay:t=>{const a=450+Math.ceil(Math.random()*100);return Math.min(a*2**t,3e4)},onError:t=>e.post(t)}}})),la=e=>{const t=x(Le),a=oa(t);return n.createElement(He,{client:a},e.children)};function le(e){const t=x(q),a=ae(e);return _(["soundcheck/certifications",a],async()=>t.getAllCertifications(a))}function de(e,t){const a=x(q),r=ae(e);return _(["soundcheck/certifications",r,t],async()=>a.getCertificationDetails(r,t),{enabled:!!t})}var me=(e=>(e.GetAllPrograms="soundcheck/programs",e.GetChecks="soundcheck/checks",e.GetCollectors="soundcheck/collectors",e.GetFactSchema="soundcheck/collectors/schema",e.GetEntityFacets="soundcheck/catalog/facets",e.GetSoftwareEntityRefsForUser="soundcheck/entities/softwareEntityRefsForUser",e.GetCampaigns="soundcheck/campaigns",e.GetOverallCheckPassRates="soundcheck/charts/overallCheckPassRates",e.GetIndividualCheckPassRate="soundcheck/charts/getIndividualCheckPassRate",e.GetOverallTrackPassRate="soundcheck/charts/overallTrackPassRate",e.GetIndividualTrackPassRate="soundcheck/charts/individualTrackPassRate",e.GetOverallEntityPassRates="soundcheck/charts/overallEntityPassRates",e.GetIndividualEntityPassRate="soundcheck/charts/individualEntityPassRate",e.GetOverallGroupPassRates="soundcheck/charts/overallGroupPassRates",e.GetIndividualGroupPassRates="soundcheck/charts/individualGroupPassRates",e.EntityByRef="soundcheck/catalog/entityByRef",e.EntitiesByRefs="soundcheck/catalog/entitiesByRef",e))(me||{}),ue=(e=>(e.DeleteCheck="soundcheck/deleteCheck",e.CreateCheck="soundcheck/createCheck",e.UpdateCheck="soundcheck/updateCheck",e.DeleteProgram="soundcheck/deleteProgram",e.CreateProgram="soundcheck/createProgram",e.UpdateProgram="soundcheck/updateProgram",e.UpdateCollectorConfig="soundcheck/updateCollectorConfig",e))(ue||{});const da=p(e=>({root:{padding:e.spacing(3)},icon:{display:"none"},message:{padding:0},type:{fontWeight:700,lineHeight:1.75}})),T=e=>{const{type:t,...a}=da();return n.createElement(tt,{severity:e.severity,elevation:1,classes:a,onClose:e.onClose},n.createElement(u,{classes:{root:t}},e.title),e.children)},pe=V({}),ma=e=>{const[t,a]=b(),r=E(d=>{a(d)},[]),i=E(()=>{a(null)},[]);return n.createElement(pe.Provider,{value:{showAlert:r,clearAlert:i}},t&&n.createElement(T,{severity:t.severity,title:t.title,onClose:i},t.message),e.children)},ua=()=>K(pe),pa=p(e=>({modalContent:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",padding:"25px",backgroundColor:e.palette.type==="dark"?e.palette.grey[800]:e.palette.grey[200]},modalButtons:{display:"flex",justifyContent:"space-evenly","& button":{width:"40%",maxWidth:"185px"}},modalMessage:{margin:"15px 0 35px"}})),ge=V({}),ga=e=>{const t=pa(),[a,r]=b(!1),[i,d]=b(),m=Be(),g=E(({title:w,message:be,error:De})=>(d({title:w,message:be,error:De}),r(!0),new Promise(Fe=>{m.current=Fe})),[]),R=E(()=>{m.current&&m.current(!0),r(!1)},[]),y=E(()=>{m.current&&m.current(!1),r(!1)},[]);return n.createElement(ge.Provider,{value:{showModal:g}},e.children,i&&n.createElement(je,{open:a,onClose:y,"aria-labelledby":"confirmation-modal-title","aria-describedby":"confirmation-modal-description"},n.createElement(J,{className:t.modalContent},n.createElement(u,{id:"confirmation-modal-title",variant:"h6"},i.title),n.createElement(u,{className:t.modalMessage,id:"confirmation-modal-description",variant:"body1"},i.message),n.createElement("div",{className:t.modalButtons},!i.error&&n.createElement(X,{onClick:y,variant:"contained","aria-label":"cancel"},"Cancel"),n.createElement(X,{color:"primary",onClick:R,variant:"contained","aria-label":"confirm"},i.error?"Ok":"Confirm")))))},ha=()=>K(ge),he=24,fa=11,z=e=>e==="small"?1:2,ya=p({root:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"50%",borderWidth:"2px",fontWeight:700,width:({size:e})=>`${he*z(e)}px`,height:({size:e})=>`${he*z(e)}px`,fontSize:({size:e})=>`${fa*z(e)}px`}}),fe=({className:e,label:t,size:a="small"})=>{const r=ya({size:a});return n.createElement("span",{className:F(e,r.root),role:"img","aria-label":`${t} badge`},t)},ka=p(e=>({root:{background:({color:t})=>t,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(",")}}})),U=({className:e,badge:t,size:a="small"})=>{const r=ka({color:t.options.color,size:a});return n.createElement(fe,{className:F(e,r.root),size:a,label:`L${t.options.level}`})},va=p({root:{borderColor:"currentColor",borderStyle:"dashed"}}),ye=({className:e,size:t="small"})=>{const a=va();return n.createElement(fe,{className:F(e,a.root),size:t,label:"NL"})},H=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 Ca({description:e,documentationUrl:t}){const a=H();return t?n.createElement("div",{className:a.description},n.createElement(Y,{content:e}),n.createElement(Z,{to:t},"Learn more")):n.createElement("div",{className:a.description},n.createElement(Y,{content:e}))}const ke=({name:e,level:t,badge:a,description:r,documentationUrl:i})=>{const d=H();return n.createElement("div",{className:d.root},a?n.createElement(U,{size:"large",badge:a}):n.createElement(ye,{size:"large"}),n.createElement("div",null,n.createElement(u,{variant:"caption",className:d.level},t!=null?t:"No Level"),n.createElement(u,{className:d.title},e),r&&n.createElement(Ca,{description:r,documentationUrl:i})))},A=({children:e})=>{const[t,a]=b(!1);return Me(()=>{const r=setTimeout(()=>{a(!0)},250);return()=>clearTimeout(r)},[]),n.createElement(Ve,{in:t,timeout:250},e)},W=({hideDescription:e=!1})=>{const t=H();return n.createElement(A,null,n.createElement("div",{className:t.root},n.createElement(f,{width:44,height:44}),n.createElement("div",null,n.createElement(u,{variant:"caption",className:t.level},n.createElement(f,{width:100})),n.createElement(u,{variant:"h4",className:t.title},n.createElement(f,{width:300})),!e&&n.createElement(u,{variant:"body2"},n.createElement(f,null)))))},ve=p(e=>{const t=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{wrapper:{backgroundColor:t,color:P(e.palette.getContrastText(t),.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:P(e.palette.getContrastText(t),.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:P(e.palette.getContrastText(t),.8),fontSize:e.typography.subtitle2.fontSize,marginTop:e.spacing(1)}}}),Ra=e=>{const t=ve({badge:e.badge});return n.createElement("div",{className:t.wrapper},e.badge?n.createElement(U,{className:t.badge,badge:e.badge}):null,n.createElement(u,{className:t.title},e.title),e.description?n.createElement(u,{className:t.description},e.description):null)},Ea=()=>{const e=ve({});return n.createElement(A,null,n.createElement("div",{className:e.wrapper},n.createElement(f,{className:e.title}),n.createElement(u,{className:e.description},n.createElement(f,null))))},Pa=p(e=>({root:{display:"inline-flex",alignItems:"center",gap:e.spacing(1)}})),Ce=({timestamp:e,description:t})=>{const a=Pa(),r=re.fromISO(e).toLocaleString(re.DATETIME_FULL),i=Ye(e),d=t?`${t}: ${i}`:void 0;return n.createElement("div",{className:a.root},n.createElement(Ke,{title:r},n.createElement(u,{variant:"caption","aria-label":d},i)),n.createElement(rt,null))},$a=e=>({[h.Passed]:"Check passed",[h.NotReported]:"Check not reported",[h.Failed]:"Check failed",[h.NotApplicable]:"Check not applicable"})[e],wa=D(e=>({root:{color:e.palette.success.main}}))(nt),Ia=D(e=>({root:{color:e.palette.error.main}}))(it),Sa=D(e=>({root:{color:e.palette.info.main}}))(ct),ba=D(e=>({root:{color:e.palette.text.disabled}}))(st),Re=({result:e,className:t})=>{const a={className:t,"aria-label":$a(e),"aria-hidden":!1};return e===h.Passed?n.createElement(wa,{...a}):e===h.NotReported?n.createElement(Sa,{...a}):e===h.Failed?n.createElement(Ia,{...a}):e===h.NotApplicable?n.createElement(ba,{...a}):null},Ee=p(e=>({root:{display:"grid",width:"100%",gridTemplateColumns:"auto 1fr auto",gridColumnGap:e.spacing(1),padding:e.spacing(1),alignItems:"center","&.selected":{backgroundColor:P(e.palette.primary[e.palette.type],.2)},"&:hover, &:active, &:focus":{backgroundColor:P(e.palette.primary[e.palette.type],.3)}}})),Da=({className:e,href:t,children:a})=>t?n.createElement(at,{to:t,className:e},a):n.createElement("div",{className:e},a),Fa=({result:e,name:t,timestamp:a,selected:r=!1,href:i})=>{const d=Ee(),m=F(d.root,{selected:r});return n.createElement(Da,{href:i,className:m},n.createElement(Re,{result:e}),n.createElement(u,{variant:"body2"},t),a?n.createElement(Ce,{timestamp:a}):null)},Q=()=>{const e=Ee();return n.createElement(A,null,n.createElement("div",{className:e.root},n.createElement(f,{width:24,height:24}),n.createElement(u,{variant:"body2"},n.createElement(f,null)),n.createElement(f,{width:100,height:24})))},Na=()=>{const e=Pe();return n.createElement("div",{className:e.root},n.createElement(W,null),new Array(3).fill(null).map((t,a)=>n.createElement(n.Fragment,{key:`skeleton-level-${a}`},n.createElement(Ea,null),n.createElement("ul",{className:e.checks},n.createElement(Q,null),n.createElement(Q,null),n.createElement(Q,null)))))},Oa=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"}}})),qa=({checks:e,trackId:t,checkId:a})=>{const r=Oa(),i=j(oe);return e.length?n.createElement("ul",{className:r.checks},e.map(d=>n.createElement("li",{key:d.id,className:r.checkItem},n.createElement(Fa,{...d,selected:d.id===a,href:i({trackId:t,checkId:d.id})})))):n.createElement(u,{variant:"body2",className:r.noChecks},"No applicable checks at this level.")},Ga=({level:e,checkId:t,trackId:a})=>{var r;return n.createElement(n.Fragment,null,n.createElement(Ra,{badge:e.badge,title:e.name,description:e.description}),n.createElement(qa,{checks:(r=e.checks)!=null?r:[],trackId:a,checkId:t}))},Pe=p(e=>({root:{borderRight:`1px solid ${e.palette.divider}`},checks:{padding:0,margin:0,flex:1,listStyle:"none"}})),Ta=({trackId:e,checkId:t})=>{var a,r;const i=Pe(),{entity:d}=te(),{data:m,isLoading:g,isError:R}=de(d,e);return R?n.createElement("div",{className:i.root},n.createElement(J,{padding:2},n.createElement(T,{severity:"error",title:"Error loading certification"}))):g||!e?n.createElement(Na,null):m?n.createElement("div",{className:i.root},n.createElement(ke,{name:m.program.name,level:(a=m.highestLevel)==null?void 0:a.name,badge:(r=m.highestLevel)==null?void 0:r.badge,description:m.program.description,documentationUrl:m.program.documentationURL}),m==null?void 0:m.levels.map(y=>n.createElement(Ga,{key:y.ordinal,level:y,checkId:t,trackId:e}))):null},Aa=()=>n.createElement(n.Fragment,null,n.createElement(W,{hideDescription:!0}),n.createElement(W,{hideDescription:!0})),$e=({className:e,description:t="There are no tracks configured that apply to this entity."})=>n.createElement("div",{className:e},n.createElement(ee,{title:"No certifications available",missing:"data",description:t})),La=({ownerEntityRef:e,selectGroupHint:t})=>e?n.createElement(ee,{missing:"data",title:"Missing entities",description:n.createElement(n.Fragment,null,"The group '",Xe(et(e),{defaultKind:"Group"}),"' doesn't own any entities.",t&&n.createElement(n.Fragment,null,n.createElement("br",null),n.createElement("br",null),t))}):null,we="soundcheck",Ie="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.",Se=Qe(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:t})=>{const a=Se();return n.createElement(Je,{title:t},n.createElement("div",{className:a.infoCard},n.createElement(Ze,{inline:!0,backend:we,invalidLicenseMessage:Ie}),e))},xa=({title:e="Soundcheck"})=>{const{entity:t}=te(),a=Se(),{data:r,isError:i,isLoading:d}=le(t),m=j(ce);return i?n.createElement(L,{title:e},n.createElement(T,{severity:"error",title:"Error loading certifications"})):d||!r?n.createElement(L,{title:e},n.createElement(Aa,null)):r.length===0?n.createElement(L,{title:e},n.createElement($e,{className:a.emptyState})):n.createElement(L,{title:e},r.map((g,R)=>{var y,w;return n.createElement(ze,{key:g.program.name},n.createElement("div",{className:a.certificationWrapper,"data-testid":"soundcheck-track-row"},n.createElement(ke,{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}),n.createElement(Z,{to:m({trackId:g.program.id})},"View Details")),R<r.length-1?n.createElement(_e,null):null)}))};export{T as A,ne as B,Ta as C,ra as E,A as F,ia as G,U as L,ue as M,ye as N,me as Q,h as R,la as S,Ce as a,le as b,ce as c,$e as d,we as e,oe as f,xa as g,Re as h,Ie as i,La as j,ua as k,ha as l,Yt as m,ta as n,aa as o,ea as p,ma as q,C as r,q as s,Zt as t,de as u,na as v,ga as w,sa as x,ca as y};
|
|
429
|
+
//# sourceMappingURL=index-6e141f2f.esm.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{useState as n}from"react";import{Page as g,Header as f}from"@backstage/core-components";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{u as h,U as P,G as S,O as c}from"./OverviewPageContent-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
import e,{useState as n}from"react";import{Page as g,Header as f}from"@backstage/core-components";import{SpotifyLicenseBanner as s}from"@spotify/backstage-plugin-core";import{u as h,U as P,G as S,O as c}from"./OverviewPageContent-433c8dc6.esm.js";import{S as l,w as y,e as p,i as u}from"./index-6e141f2f.esm.js";import{stringifyEntityRef as k}from"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import{useEntity as w}from"@backstage/plugin-catalog-react";import{makeStyles as C}from"@material-ui/core";import{Routes as G,Route as L}from"react-router-dom";import"@material-ui/lab/Autocomplete";import"react-use/lib/useAsync";import"./RefetchingIndicator-3707a744.esm.js";import"react-use/lib/useDebounce";import"lodash";import"@material-ui/lab";import"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";const O=C(t=>({overviewContainer:{padding:t.spacing(1,3)}})),b=t=>{const{title:i="Soundcheck"}=t,o=O(),[r,a]=h(),{group:d}=r,[E,v]=n(void 0);return e.createElement(l,null,e.createElement(P,null,e.createElement(y,null,e.createElement(g,{themeId:"website"},e.createElement(s,{backend:p,invalidLicenseMessage:u}),e.createElement(f,{title:i},e.createElement(S,{onChange:m=>{m&&a({...r,group:m})},initialValue:d,setError:v})),e.createElement("div",{className:o.overviewContainer},e.createElement(c,{groupSelectorError:E,searchParams:r,setSearchParams:a}))))))},x=()=>{const{entity:t}=w(),i={group:k(t)},[o,r]=n(i);return e.createElement(l,null,e.createElement(G,null,e.createElement(L,{path:"/*",element:e.createElement(e.Fragment,null,e.createElement(s,{backend:p,invalidLicenseMessage:u,inline:!0}),e.createElement(c,{searchParams:o,setSearchParams:r,isFixedGroup:!0}))})))};export{x as FixedGroupOverviewPage,b as OverviewPage};
|
|
2
|
+
//# sourceMappingURL=index-a224cc6f.esm.js.map
|
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{v as G,E as f,G as l,x as w,y as O,r as R}from"./esm/index-6e141f2f.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"@material-ui/lab";import"react-router-dom";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{G as EntitySoundcheckCard,f as EntitySoundcheckContent,l as GroupSoundcheckContent,w as SoundcheckOverviewPage,O as SoundcheckRoutingPage,R 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
|
+
"version": "0.9.0",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://backstage.spotify.com",
|
|
7
7
|
"main": "dist/index.esm.js",
|
|
@@ -27,20 +27,21 @@
|
|
|
27
27
|
"prepare": "yarn generate"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@backstage/catalog-client": "^1.4.
|
|
31
|
-
"@backstage/catalog-model": "^1.4.
|
|
32
|
-
"@backstage/core-components": "^0.13.
|
|
33
|
-
"@backstage/core-plugin-api": "^1.
|
|
34
|
-
"@backstage/plugin-catalog-react": "^1.8.
|
|
35
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
36
|
-
"@backstage/theme": "^0.4.
|
|
30
|
+
"@backstage/catalog-client": "^1.4.5",
|
|
31
|
+
"@backstage/catalog-model": "^1.4.3",
|
|
32
|
+
"@backstage/core-components": "^0.13.6",
|
|
33
|
+
"@backstage/core-plugin-api": "^1.7.0",
|
|
34
|
+
"@backstage/plugin-catalog-react": "^1.8.5",
|
|
35
|
+
"@backstage/plugin-permission-react": "^0.4.16",
|
|
36
|
+
"@backstage/theme": "^0.4.3",
|
|
37
37
|
"@backstage/types": "^1.1.1",
|
|
38
38
|
"@material-ui/core": "^4.12.2",
|
|
39
39
|
"@material-ui/icons": "^4.9.1",
|
|
40
40
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
41
|
-
"@spotify/backstage-plugin-core": "^0.5.
|
|
42
|
-
"@spotify/backstage-plugin-soundcheck-common": "^0.
|
|
41
|
+
"@spotify/backstage-plugin-core": "^0.5.7",
|
|
42
|
+
"@spotify/backstage-plugin-soundcheck-common": "^0.9.0",
|
|
43
43
|
"@tanstack/react-query": "^4.6.1",
|
|
44
|
+
"@types/react-csv": "^1.1.6",
|
|
44
45
|
"classnames": "^2.3.2",
|
|
45
46
|
"cron-validate": "^1.4.5",
|
|
46
47
|
"cronstrue": "^2.28.0",
|
|
@@ -50,6 +51,7 @@
|
|
|
50
51
|
"luxon": "^3.1.1",
|
|
51
52
|
"react-circular-progressbar": "^2.1.0",
|
|
52
53
|
"react-confetti": "^6.1.0",
|
|
54
|
+
"react-csv": "^2.2.2",
|
|
53
55
|
"react-dnd": "^16.0.1",
|
|
54
56
|
"react-dnd-html5-backend": "^16.0.1",
|
|
55
57
|
"react-hook-form": "^7.19.5",
|
|
@@ -63,17 +65,17 @@
|
|
|
63
65
|
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
64
66
|
},
|
|
65
67
|
"devDependencies": {
|
|
66
|
-
"@backstage/cli": "^0.
|
|
67
|
-
"@backstage/core-app-api": "^1.
|
|
68
|
-
"@backstage/dev-utils": "^1.0.
|
|
69
|
-
"@backstage/test-utils": "^1.
|
|
68
|
+
"@backstage/cli": "^0.23.0",
|
|
69
|
+
"@backstage/core-app-api": "^1.11.0",
|
|
70
|
+
"@backstage/dev-utils": "^1.0.22",
|
|
71
|
+
"@backstage/e2e-test-utils": "^0.1.0",
|
|
72
|
+
"@backstage/test-utils": "^1.4.4",
|
|
70
73
|
"@graphql-codegen/cli": "^5.0.0",
|
|
71
74
|
"@graphql-codegen/typescript": "^4.0.0",
|
|
72
75
|
"@graphql-codegen/typescript-graphql-request": "^5.0.0",
|
|
73
76
|
"@graphql-codegen/typescript-operations": "^4.0.0",
|
|
74
77
|
"@playwright/test": "^1.32.3",
|
|
75
|
-
"@
|
|
76
|
-
"@spotify/backstage-plugin-core-common": "^0.5.6",
|
|
78
|
+
"@spotify/backstage-plugin-core-common": "^0.5.7",
|
|
77
79
|
"@testing-library/jest-dom": "^6.0.0",
|
|
78
80
|
"@testing-library/react": "^12.1.5",
|
|
79
81
|
"@testing-library/react-hooks": "^8.0.1",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import t,{useState as I,useEffect as v,useMemo as O,useCallback as j,createContext as me,useContext as ue,memo as b,Fragment as ge}from"react";import{useSearchParams as he}from"react-router-dom";import{makeStyles as f,alpha as M,TextField as fe,CircularProgress as ye,Tooltip as K,LinearProgress as ve,withStyles as ke,Grid as C,Typography as k}from"@material-ui/core";import Ee from"@material-ui/lab/Autocomplete";import{stringifyEntityRef as W,parseEntityRef as w}from"@backstage/catalog-model";import{useApi as E,identityApiRef as U,useRouteRef as P,configApiRef as be}from"@backstage/core-plugin-api";import{useQuery as A}from"@tanstack/react-query";import{s as D,R as N,h as Ce,B as we,L as _,N as Q,A as Ne,d as Re,j as $e}from"./index-95ae147b.esm.js";import{catalogApiRef as G,humanizeEntityRef as T,entityRouteRef as F}from"@backstage/plugin-catalog-react";import xe from"react-use/lib/useAsync";import{HeaderTabs as q,MarkdownContent as Te,Link as B,EmptyState as Le}from"@backstage/core-components";import{R as Ie}from"./RefetchingIndicator-b042ec49.esm.js";import{countBy as J}from"lodash";import{Skeleton as S}from"@material-ui/lab";import{VariableSizeGrid as Oe}from"react-window";function X(e,r){const a=E(D);return A(["soundcheck/track-overview-for-owner",e,r],async()=>a.getProgramOverviewForOwner(e,r),{enabled:!!e&&!!(r!=null&&r.kind)})}function Y(){const e=E(G);return A(["soundcheck/all-groups"],async()=>{const{items:r}=await e.getEntities({filter:{kind:"Group"},fields:["spec.profile.displayName","metadata.title","metadata.name","metadata.namespace","kind"]});return r.filter(a=>(a==null?void 0:a.kind)==="Group").map(a=>{var n,l,i,s;return{name:(s=(i=(l=(n=a.spec)==null?void 0:n.profile)==null?void 0:l.displayName)!=null?i:a.metadata.title)!=null?s:a.metadata.name,ref:W(a)}})},{staleTime:5*60*1e3,refetchInterval:!1,refetchOnWindowFocus:!1})}function Pe(){const e=E(U),r=E(G);return A(["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,i,s,c;return{name:(c=(s=(i=(l=n.spec)==null?void 0:l.profile)==null?void 0:i.displayName)!=null?s:n.metadata.title)!=null?c:n.metadata.name,ref:W(n)}})})}function Ae(e){const r=E(D);return A(["soundcheck/facets-for-owner",e],async()=>r.getFacetsForOwner(e),{enabled:!!e})}const Fe=()=>{const[e,r]=he(),a=Object.fromEntries(e.entries()),[n,l]=I(a);return v(()=>{r(n,{replace:!0})},[n]),[n,l]},Z=()=>{const{data:e,isLoading:r,isError:a}=Pe(),{data:n,isLoading:l,isError:i}=Y();return{options:O(()=>{const s=[];return e&&s.push(...e.map(({name:c,ref:o})=>({name:c,ref:o,key:"My Groups"}))),n&&s.push(...n.map(({name:c,ref:o})=>({name:c,ref:o,key:"All Groups"}))),s},[e,n]),isLoading:r||l,isError:a||i}},Be=f(e=>({root:{width:"100%",minWidth:250},textField:{"& $notchedOutline":{borderColor:M(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:{}})),Se=e=>{const{onChange:r,initialValue:a,setError:n}=e,{options:l,isLoading:i,isError:s}=Z(),c=Be(),[o,d]=I(null);v(()=>{if(!i&&l!=null&&l.length&&!o){const m=a?l.find(p=>p.ref===a):l[0];m&&(d(m),r==null||r(m.ref))}},[i,l,o,r,a]);const u=j((m,p)=>{d(p),r==null||r(p==null?void 0:p.ref)},[r,d]);return v(()=>{n==null||n(s?new Error("Error loading groups"):void 0)},[s,n]),s?null:t.createElement(Ee,{"aria-label":"Current group",className:c.root,classes:{clearIndicator:c.clearIndicator,popupIndicator:c.popupIndicator},disableClearable:!0,options:l!=null?l:[],loading:i,groupBy:m=>m.key,value:o,freeSolo:!1,onChange:u,getOptionLabel:m=>m.name,renderInput:m=>t.createElement(fe,{...m,variant:"outlined",placeholder:i?"Loading":"Select a group",className:c.textField,InputProps:{...m.InputProps,className:c.input,classes:{notchedOutline:c.notchedOutline},endAdornment:t.createElement(t.Fragment,null,i?t.createElement(ye,{color:"inherit",size:20}):null,m.InputProps.endAdornment)}})})},ee={loading:!1},te=me(ee),ze=()=>ue(te),He=({children:e})=>{const[r,a]=I(ee),n=E(G),l=E(U),{value:i,loading:s,error:c}=xe(async()=>{const[{token:o},d]=await Promise.all([l.getCredentials(),l.getBackstageIdentity()]);return o?await n.getEntityByRef(d.userEntityRef):null},[n,l]);return v(()=>{if(i){const o=W(i);a({user:i,userEntityRef:o,loading:s,error:c})}else a({loading:s,error:c})},[i,s,c]),t.createElement(te.Provider,{value:r},e)},We=e=>({key:`skeleton${e}`,label:"",id:`skeleton${e}`}),Ge=()=>{const e=Array.from({length:4},(r,a)=>We(a));return t.createElement(q,{tabs:e})},Ve=f(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)}})),je=({unfilteredFacets:e,onChange:r,kind:a,type:n})=>{var l,i,s;const c=Ve(),o={types:(l=e==null?void 0:e.types.filter(({count:p})=>p>0))!=null?l:[]},d=j(p=>{var g;r((g=o==null?void 0:o.types[p].kind)!=null?g:"",o==null?void 0:o.types[p].type)},[o==null?void 0:o.types,r]);v(()=>{var p,g,y;const h=(o==null?void 0:o.types)&&o.types.length>=0,L=!a&&h,H=a&&h&&!(o!=null&&o.types.find(({kind:$,type:x})=>a===$&&(!n&&!x||n===x)));(L||H)&&r((g=(p=o==null?void 0:o.types[0])==null?void 0:p.kind)!=null?g:"",(y=o==null?void 0:o.types[0])==null?void 0:y.type)},[a,n,o==null?void 0:o.types,r]);const u=(i=o==null?void 0:o.types.map(({kind:p,type:g,count:y})=>{const h=`${p}|${g!=null?g:""}`;return{key:h,label:`${g!=null?g:p} (${y>50?"50+":y})`,id:h,tabProps:{className:c.tab}}}))!=null?i:[];if(!u.length)return null;const m=(s=o==null?void 0:o.types.findIndex(p=>p.kind===a&&(!p.type&&!n||p.type===n)))!=null?s:-1;return t.createElement(t.Fragment,null,t.createElement(Ie,null),t.createElement(q,{onChange:d,tabs:u,selectedIndex:m>-1?m:void 0}))},Me=f(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"}})),re=e=>{var r,a;const n=Me(e),l=O(()=>Object.entries(e.progress).reduce((s,[,c])=>s+c,0),[e.progress]);if(l===0)return null;const i=(r=e.progress[N.Passed])!=null?r:0;return t.createElement(K,{arrow:!0,title:`Check passing for ${i} of ${l} ${l===1?"entity":"entities"}`,enterDelay:0,placement:"top"},t.createElement(ve,{variant:"determinate",value:((a=e.progress[N.Passed])!=null?a:0)/l*100,classes:{root:n.root,bar:n.bar}}))},Ke=f(e=>({headerWrapper:{marginTop:e.spacing(.5)},entityRefName:{fontWeight:"bold"},iconWrapper:{padding:e.spacing(1.5,.5),display:"flex",alignItems:"center",justifyContent:"center"}})),Ue=({check:{name:e,description:r},icon:a,entityRef:n})=>{const l=Ke(),i=w(n);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(k,{variant:"h6",className:l.headerWrapper,noWrap:!0},e)),t.createElement(C,{item:!0,wrap:"nowrap"},t.createElement(k,{variant:"subtitle2",className:l.entityRefName},T(i,{defaultKind:i.kind}))),t.createElement(Te,{content:r}))},De=ke(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}}})(K),_e=({children:e,check:r,icon:a,entityRef:n})=>t.createElement(De,{arrow:!0,title:t.createElement(Ue,{check:r,icon:a,entityRef:n}),enterDelay:150,placement:"top"},e),Qe=f(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}`}})),ae=b(({programId:e,check:r,entityRef:a,result:n,entityRoute:l,isVirtualized:i})=>{const s=Qe();if(typeof a!="string"){const u=t.createElement("div",{className:s.iconWrapper},t.createElement("div",{className:s.icon}));return i?t.createElement("div",{className:`${s.root} ${s.virtualized}`,"aria-hidden":!0},u):t.createElement("td",{className:s.root,"aria-hidden":!0},u)}const c=t.createElement(Ce,{className:s.icon,result:n!=null?n:N.NotReported}),o=t.createElement("div",{className:s.iconWrapper},c),d=n&&n===N.NotApplicable?o:t.createElement(B,{className:s.link,to:`${l(w(a))}/soundcheck/${e}/${r.id}`},o);return i?t.createElement("div",{className:`${s.root} ${s.virtualized}`},t.createElement(_e,{check:r,icon:c,entityRef:a},d)):t.createElement("td",{className:`${s.root}`},d)}),ne=8,qe=16,R={programTitle:70,levelTitle:30,check:42,entityRefFooter:100},z={programTitle:350+qe*2,checkResult:42},Je=e=>e.reduce((r,a)=>r+a.height,0),Xe=e=>e*z.checkResult+z.programTitle,Ye=e=>e.filter(r=>r!==void 0).map(r=>{const a=w(r);return T(a,{defaultKind:a.kind})}).reduce((r,a)=>r.length>a.length?r:a,""),Ze=e=>ne*e+ne,le="NoLevel",et=e=>({name:le,badge:{options:{level:0,color:""},variant:we.Medal},entityRef:e,ordinal:0}),oe=f(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:`${R.check}px`,lineHeight:`${R.check}px`,borderBottom:`1px solid ${e.palette.divider}`,borderRight:`1px solid ${e.palette.divider}`}})),tt=b(({programId:e,programName:r,check:a,entityRefs:n,results:l,entityRoute:i})=>{const s=oe(),c=O(()=>J(l.filter(({result:d})=>d!==N.NotApplicable),"result"),[l]),o=new Map(l.map(d=>[d.entityRef,d.result]));return t.createElement("tr",{"data-testid":"track-check-row"},t.createElement("th",{scope:"row",className:s.checkNameCell,"aria-label":`${a.name} check for ${r} track`},t.createElement("div",{className:s.checkNameContent},t.createElement(k,{className:s.checkNameTypography,variant:"subtitle2",component:"p"},a.name),t.createElement(re,{className:s.checkIndicator,progress:c}))),n.map((d,u)=>t.createElement(ae,{key:u,programId:e,check:a,entityRef:d,result:typeof d=="string"?o.get(d):void 0,entityRoute:i})))}),rt=({name:e,progress:r})=>{const a=oe();return t.createElement("div",{className:a.checkNameCell,"aria-label":`${e} check`},t.createElement("div",{className:`${a.checkNameContent} ${a.checkNameCellVirtualized}`},t.createElement(k,{variant:"subtitle2",component:"p",className:a.checkNameTypography},e),t.createElement(re,{className:a.checkIndicator,progress:r})))},at=f(e=>({virtualized:{borderRight:`1px solid ${e.palette.divider}`,height:`${R.programTitle}px`,display:"flex",justifyContent:"center",alignItems:"center"}})),nt=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(_,{badge:a.badge}):t.createElement(Q,null))}),lt=({highestLevel:e})=>{const r=at();if(!(e!=null&&e.badge))return t.createElement("div",{className:r.virtualized},"\xA0");const a=e.name!==le;return t.createElement("div",{className:r.virtualized},a?t.createElement(_,{badge:e.badge}):t.createElement(Q,null))},ie=f(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}`}})),ot=b(({program:e,entityRefs:r,highestLevels:a})=>{const n=ie();return t.createElement("tr",{"data-testid":"track-title-row"},t.createElement("th",{scope:"row",className:n.programNameCell},t.createElement("div",{className:n.programNameContent},t.createElement(k,{className:n.programNameTypography,variant:"h5",component:"p"},e.name))),r.map((l,i)=>typeof l!="string"?t.createElement("td",{key:i,"aria-hidden":!0}):t.createElement("td",{key:i,"data-testid":"track-certification-cell"},t.createElement("div",{className:n.badgeCellContent},t.createElement(nt,{entityRef:l,highestLevels:a})))))}),it=b(({name:e})=>{const r=ie();return t.createElement("div",{className:`${r.programNameCell} ${r.programNameCellVirtualized}`},t.createElement("div",{className:r.programNameContent},t.createElement(k,{className:r.programNameTypography,variant:"h5",component:"p"},e)))}),V=f(e=>{const r=e.palette.type==="dark"?e.palette.grey[700]:e.palette.grey[100];return{root:{color:M(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:`${R.levelTitle}px`}}}),st=b(({level:e,entityRefs:r,programName:a})=>{const n=V();return t.createElement("tr",{className:n.root,"data-testid":"track-level-row"},t.createElement("th",{scope:"row",className:n.root},t.createElement("div",{className:n.levelContent},t.createElement(k,{className:n.levelTypography,variant:"subtitle2",component:"p","aria-label":`${e.name} for ${a} track`},e.name))),r.map((l,i)=>t.createElement("td",{key:i,className:n.root,"aria-hidden":!0})))}),ct=({name:e})=>{const r=V();return t.createElement("div",{className:`${r.levelHeaderCell} ${r.root}`,"aria-label":`${e}`},t.createElement(k,{variant:"subtitle2",component:"p",className:r.levelTypography},e))},dt=()=>{const e=V();return t.createElement("div",{className:`${e.levelHeaderCell} ${e.root}`},"\xA0")},pt=({program:e,highestLevels:r,levels:a,entityRefs:n,entityRoute:l})=>t.createElement("tbody",null,t.createElement(ot,{program:e,entityRefs:n,highestLevels:r}),a.map((i,s)=>t.createElement(ge,{key:s},t.createElement(st,{entityRefs:n,level:i,programName:e.name}),i.checks.map(({check:c,results:o},d)=>t.createElement(tt,{key:d,check:c,programId:e.id,programName:e.name,entityRefs:n,results:o,entityRoute:l}))))),se=f(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)"}})),mt=({entityRefs:e})=>{const r=P(F),a=se();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)=>{if(typeof n!="string")return t.createElement("th",{key:l,className:a.cell,"aria-hidden":!0});const i=w(n);return t.createElement("th",{scope:"col",key:l,className:a.cell},t.createElement("div",{className:a.cellInner},t.createElement(B,{to:r(i)},T(i,{defaultKind:i.kind}))))})))},ut=({entityRef:e})=>{const r=P(F),a=se(),n=e?w(e):void 0,l=n?t.createElement(B,{to:r(n)},T(n,{defaultKind:n.kind})):t.createElement(t.Fragment,null);return t.createElement("div",{className:a.cell},t.createElement("div",{className:a.cellInner},l))},gt=f(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]}})),ce=()=>{const e=gt(),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(S,{width:180,height:40})),r.map((l,i)=>t.createElement("td",{key:i}))),n.map((l,i)=>t.createElement(t.Fragment,{key:i},t.createElement("tr",{className:e.header},t.createElement("td",{className:e.title},t.createElement(S,{width:180})),r.map((s,c)=>t.createElement("td",{key:c}))),a.map((s,c)=>t.createElement("tr",{key:c},t.createElement("td",{className:e.title},t.createElement(S,{width:240})),r.map((o,d)=>t.createElement("td",{key:d,className:e.checkResult},t.createElement(S,{width:18,height:18,variant:"rect"})))))))))},ht=f(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}`}}})),ft=b(e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,i=ht(),s=P(F),{data:c,isLoading:o,isError:d}=X(l,{kind:a,type:n});if(v(()=>{r==null||r(d?new Error("Error loading track overview"):void 0)},[d,r]),o)return t.createElement(ce,null);if(!c||!l)return null;const{programs:u,entityRefs:m}=c;if(!o&&!u.length)return t.createElement(Le,{missing:"data",title:"Missing tracks",description:t.createElement(t.Fragment,null,"Looks like the group"," ",T(w(l),{defaultKind:"Group"})," ","doesn't own any ",n!=null?n:a," components that have Soundcheck tracks set up.",t.createElement("br",null),t.createElement("br",null),"If you're an administrator, you can learn more about configuring and filtering tracks in the"," ",t.createElement(B,{to:"https://www.npmjs.com/package/@spotify/backstage-plugin-soundcheck-backend#entity-filter"},"docs"),".")});if(d)return null;const p=m.length>=25?m:[...m,...Array.from({length:25-m.length},()=>{})];return t.createElement("div",{className:i.root},t.createElement("table",{className:i.table,"aria-label":"Check results"},u.map(({program:g,levels:y,highestLevels:h},L)=>t.createElement(pt,{key:L,program:g,entityRefs:p,levels:y,highestLevels:h,entityRoute:s})),t.createElement(mt,{entityRefs:p})))}),yt=e=>t.createElement(it,{name:e}),vt=e=>({type:"ProgramHeader",render:()=>yt(e)}),kt=e=>e?t.createElement(ct,{name:e}):t.createElement(dt,null),de=e=>({type:"LevelHeader",render:()=>kt(e)}),Et=(e,r)=>t.createElement(rt,{name:e,progress:r}),bt=(e,r)=>({type:"CheckTitle",render:()=>Et(e,r)}),Ct=(e,r,a,n,l)=>t.createElement(ae,{check:r,entityRef:a,entityRoute:l,programId:e,result:n,isVirtualized:!0}),wt=(e,r,a,n,l)=>({type:"CheckResult",render:()=>Ct(e,r,a,n,l)}),Nt=e=>t.createElement(ut,{entityRef:e}),pe=e=>({type:"EntityHeader",render:()=>Nt(e)}),Rt=e=>t.createElement(lt,{highestLevel:e}),$t=e=>({type:"LevelBadge",render:()=>Rt(e)}),xt=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})},Tt=(e,r,a)=>{var n;const l=[];for(const{program:s,levels:c,highestLevels:o}of e){l.push({height:R.programTitle,cells:[vt(s.name),...r.map(d=>{const u=d?o.find(m=>m.entityRef===d)||et(d):void 0;return $t(u)})]});for(const d of c){l.push({height:R.levelTitle,cells:[de(d.name),...r.map(u=>de(""))]});for(const{check:u,results:m}of d.checks)l.push({height:R.check,cells:[bt(u.name,J(m.filter(({result:p})=>p!==N.NotApplicable),"result")),...r.map(p=>{var g,y;return wt(s.id,u,p,(y=(g=m.find(h=>h.entityRef===p))==null?void 0:g.result)!=null?y:N.NotApplicable,a)})]})}}const i=Ye(r!=null?r:[]);return l.push({height:Ze((n=i.length)!=null?n:1),cells:[pe(""),...r.map(s=>pe(s||""))]}),l},Lt=f(e=>({table:{backgroundColor:e.palette.background.paper,borderCollapse:"collapse",whiteSpace:"nowrap",textAlign:"left",overflow:"auto"}})),It=e=>{const{setError:r,kind:a,type:n,ownerEntityRef:l}=e,i=Lt(),s=P(F),{data:c,isLoading:o,isError:d}=X(l,{kind:a,type:n});if(v(()=>{r==null||r(d?new Error("Error loading program overview"):void 0)},[d,r]),o)return t.createElement(ce,null);if(!c||!l)return null;const{programs:u,entityRefs:m}=c,p=m.length>=25?m:[...m,...Array.from({length:25-m.length},()=>{})],g=Tt(u,p,s),y=xt(g);return t.createElement(C,{"aria-label":`Check results for ${n!=null?n:a}`,key:`${a}|${n!=null?n:""}`,item:!0,xs:12},t.createElement(Oe,{className:i.table,columnCount:p.length+1,columnWidth:h=>h===0?z.programTitle:z.checkResult,rowCount:g.length,rowHeight:h=>g[h].height,height:Je(g),width:Xe(p.length)},y))},Ot=({facets:e,ownerEntityRef:r,kind:a,type:n,setError:l})=>{const i=O(()=>{const s=new Map;return e.types.forEach(({kind:c,type:o})=>{const d=`${c}|${o!=null?o:""}`;s.set(d,t.createElement(It,{key:d,ownerEntityRef:r,kind:c,type:o,setError:l}))}),s},[e,r,l]);return t.createElement("div",null,i.get(`${a}|${n!=null?n:""}`))},Pt=f(()=>({scrollContainer:{overflow:"auto"}})),At=({facets:e,ownerEntityRef:r,hasError:a,kind:n,type:l,setError:i,useVirtualizedResultsTable:s,isFixedGroup:c})=>{var o,d,u;const m=Pt();if(a)return t.createElement(Ne,{severity:"error",title:a.message});const p="Use the groups drop-down list at the top-right of the page to select another group.";return e&&((d=(o=e.types)==null?void 0:o.length)!=null?d:0)>0?(u=e.types)!=null&&u.find(g=>g.count>0)?t.createElement("div",{className:m.scrollContainer},s?t.createElement(Ot,{facets:e,kind:n,type:l,setError:i,ownerEntityRef:r,hasError:a}):t.createElement(ft,{ownerEntityRef:r,kind:n,type:l,setError:i})):t.createElement(Re,{description:t.createElement(t.Fragment,null,"Looks like the group '",T(w(r),{defaultKind:"Group"}),"' doesn't own any entities that have any applicable tracks configured.",!c&&t.createElement(t.Fragment,null,t.createElement("br",null),t.createElement("br",null),p))}):t.createElement($e,{ownerEntityRef:r,selectGroupHint:c?void 0:p})},Ft=f(()=>({tableContainer:{padding:0,backgroundColor:"transparent"}})),Bt=({groupSelectorError:e,searchParams:r,setSearchParams:a,isFixedGroup:n=!1})=>{var l;const{group:i,kind:s,type:c}=r,[o,d]=I(void 0),[u,m]=I(void 0);v(()=>{((o==null?void 0:o.kind)!==s||(o==null?void 0:o.type)!==c)&&d({kind:s,type:c})},[s,c,o]);const{data:p,isLoading:g}=Ae(i),y=(l=E(be).getOptionalBoolean("soundcheck.virtualizeOverviewPage"))!=null?l:!0,h=u||e,L=($,x)=>{$&&(d({kind:$,type:x}),x?a({...r,kind:$,type:x}):(r!=null&&r.hasOwnProperty("type")&&delete r.type,a({...r,kind:$})))},H=Ft();return t.createElement(C,{container:!0,spacing:0},t.createElement(C,{item:!0,xs:12},g?t.createElement(Ge,null):t.createElement(je,{unfilteredFacets:p,kind:o==null?void 0:o.kind,type:o==null?void 0:o.type,onChange:L})),t.createElement(C,{item:!0,xs:12,className:H.tableContainer},!g&&t.createElement(At,{facets:p,kind:o==null?void 0:o.kind,type:o==null?void 0:o.type,setError:m,hasError:h,ownerEntityRef:i,useVirtualizedResultsTable:y,isFixedGroup:n})))};export{Se as G,Bt as O,He as U,Z as a,ze as b,Y as c,Fe as u};
|
|
2
|
-
//# sourceMappingURL=OverviewPageContent-7cf86a3a.esm.js.map
|