@kong-ui-public/dashboard-renderer 0.5.10 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,14 @@
1
- import { ref as E, watchEffect as Z, defineComponent as f, inject as G, onUnmounted as H, computed as u, resolveComponent as z, unref as m, openBlock as p, createBlock as g, withCtx as S, createTextVNode as B, toDisplayString as U, renderSlot as K, createCommentVNode as F, useCssVars as k, createElementVNode as N, createVNode as O, createElementBlock as C, resolveDynamicComponent as X, normalizeProps as ee, mergeProps as te, onMounted as re, Fragment as oe, renderList as ae, normalizeClass as ne, normalizeStyle as V } from "vue";
2
- import { ChartMetricDisplay as ie, ChartTypesSimple as se, SimpleChart as ce, ChartTypes as P, AnalyticsChart as M } from "@kong-ui-public/analytics-chart";
3
- import pe from "swrv";
1
+ import { ref as E, watchEffect as X, defineComponent as v, inject as V, onUnmounted as B, computed as u, resolveComponent as z, unref as y, openBlock as c, createBlock as _, withCtx as b, createTextVNode as H, toDisplayString as U, renderSlot as K, createCommentVNode as F, useCssVars as O, createElementVNode as L, createVNode as w, normalizeProps as M, guardReactiveProps as ee, createElementBlock as C, resolveDynamicComponent as te, mergeProps as re, onMounted as oe, Fragment as ne, renderList as ae, normalizeClass as se, normalizeStyle as G } from "vue";
2
+ import { ChartMetricDisplay as ie, ChartTypesSimple as ce, SimpleChart as pe, ChartTypes as P, AnalyticsChart as Q } from "@kong-ui-public/analytics-chart";
3
+ import le from "swrv";
4
4
  import "axios";
5
- import { createI18n as le, i18nTComponent as ue } from "@kong-ui-public/i18n";
6
- const L = 170, Q = "analytics-query-provider";
7
- var y = /* @__PURE__ */ ((e) => (e.HorizontalBar = "horizontal_bar", e.VerticalBar = "vertical_bar", e.Gauge = "gauge", e.TimeseriesLine = "timeseries_line", e))(y || {});
5
+ import { createI18n as ue, i18nTComponent as de } from "@kong-ui-public/i18n";
6
+ import { MetricsProviderInternal as ye, MetricsConsumer as he } from "@kong-ui-public/analytics-metric-provider";
7
+ const N = 170, W = "analytics-query-provider";
8
+ var d = /* @__PURE__ */ ((e) => (e.HorizontalBar = "horizontal_bar", e.VerticalBar = "vertical_bar", e.Gauge = "gauge", e.TimeseriesLine = "timeseries_line", e.GoldenSignals = "golden_signals", e))(d || {});
8
9
  const j = {
9
10
  type: "string"
10
- }, W = {
11
+ }, Y = {
11
12
  type: ["object", "array"],
12
13
  items: {
13
14
  type: "string"
@@ -15,7 +16,7 @@ const j = {
15
16
  additionalProperties: {
16
17
  type: "string"
17
18
  }
18
- }, de = {
19
+ }, _e = {
19
20
  type: "object",
20
21
  properties: {
21
22
  type: {
@@ -32,12 +33,12 @@ const j = {
32
33
  showAnnotations: {
33
34
  type: "boolean"
34
35
  },
35
- chartDatasetColors: W,
36
+ chartDatasetColors: Y,
36
37
  syntheticsDataKey: j
37
38
  },
38
39
  required: ["type"],
39
40
  additionalProperties: !1
40
- }, ye = {
41
+ }, me = {
41
42
  type: "object",
42
43
  properties: {
43
44
  type: {
@@ -53,12 +54,12 @@ const j = {
53
54
  fill: {
54
55
  type: "boolean"
55
56
  },
56
- chartDatasetColors: W,
57
+ chartDatasetColors: Y,
57
58
  syntheticsDataKey: j
58
59
  },
59
60
  required: ["type"],
60
61
  additionalProperties: !1
61
- }, he = {
62
+ }, ge = {
62
63
  type: "object",
63
64
  properties: {
64
65
  type: {
@@ -82,7 +83,25 @@ const j = {
82
83
  },
83
84
  required: ["type"],
84
85
  additionalProperties: !1
85
- }, _e = {
86
+ }, ve = {
87
+ type: "object",
88
+ properties: {
89
+ type: {
90
+ type: "string",
91
+ enum: [
92
+ "golden_signals"
93
+ /* GoldenSignals */
94
+ ]
95
+ },
96
+ longCardTitles: {
97
+ type: "boolean"
98
+ },
99
+ description: {
100
+ type: "string"
101
+ }
102
+ },
103
+ required: ["type"]
104
+ }, fe = {
86
105
  type: "object",
87
106
  description: "A filter that specifies which data to include in the query",
88
107
  properties: {
@@ -123,7 +142,7 @@ const j = {
123
142
  "type",
124
143
  "values"
125
144
  ]
126
- }, me = {
145
+ }, be = {
127
146
  type: "object",
128
147
  properties: {
129
148
  tz: {
@@ -158,7 +177,7 @@ const j = {
158
177
  "type",
159
178
  "time_range"
160
179
  ]
161
- }, ge = {
180
+ }, qe = {
162
181
  type: "object",
163
182
  description: "A duration representing an exact start and end time.",
164
183
  properties: {
@@ -182,7 +201,7 @@ const j = {
182
201
  required: [
183
202
  "type"
184
203
  ]
185
- }, ve = {
204
+ }, Se = {
186
205
  type: "object",
187
206
  description: "A query to launch at the API",
188
207
  properties: {
@@ -243,7 +262,7 @@ const j = {
243
262
  filters: {
244
263
  type: "array",
245
264
  description: "A list of filters to apply to the query.",
246
- items: _e
265
+ items: fe
247
266
  },
248
267
  granularity_ms: {
249
268
  type: "number",
@@ -253,8 +272,8 @@ const j = {
253
272
  time_range: {
254
273
  description: "The time range to query.",
255
274
  oneOf: [
256
- me,
257
- ge
275
+ be,
276
+ qe
258
277
  ],
259
278
  default: {
260
279
  type: "relative",
@@ -265,17 +284,17 @@ const j = {
265
284
  type: "object"
266
285
  }
267
286
  }
268
- }, fe = {
287
+ }, Re = {
269
288
  type: "object",
270
289
  properties: {
271
- query: ve,
290
+ query: Se,
272
291
  chart: {
273
- oneOf: [de, he, ye]
292
+ oneOf: [_e, ge, me, ve]
274
293
  }
275
294
  },
276
295
  required: ["query", "chart"],
277
296
  additionalProperties: !1
278
- }, be = {
297
+ }, Ae = {
279
298
  type: "object",
280
299
  properties: {
281
300
  position: {
@@ -309,24 +328,24 @@ const j = {
309
328
  },
310
329
  required: ["position", "size"],
311
330
  additionalProperties: !1
312
- }, qe = {
331
+ }, Ce = {
313
332
  type: "object",
314
333
  properties: {
315
- definition: fe,
316
- layout: be
334
+ definition: Re,
335
+ layout: Ae
317
336
  },
318
337
  required: ["definition", "layout"],
319
338
  additionalProperties: !1
320
- }, Qe = {
339
+ }, et = {
321
340
  type: "object",
322
341
  properties: {
323
342
  tiles: {
324
343
  type: "array",
325
- items: qe
344
+ items: Ce
326
345
  },
327
346
  tileHeight: {
328
347
  type: "number",
329
- description: `Height of each tile in pixels. Default: ${L}`
348
+ description: `Height of each tile in pixels. Default: ${N}`
330
349
  },
331
350
  gridSize: {
332
351
  type: "object",
@@ -346,20 +365,20 @@ const j = {
346
365
  required: ["tiles", "gridSize"],
347
366
  additionalProperties: !1
348
367
  };
349
- var Y = /* @__PURE__ */ ((e) => (e.VALIDATING = "VALIDATING", e.VALIDATING_HAS_DATA = "VALIDATING_HAS_DATA", e.PENDING = "PENDING", e.SUCCESS = "SUCCESS", e.SUCCESS_HAS_DATA = "SUCCESS_HAS_DATA", e.ERROR = "ERROR", e.STALE_IF_ERROR = "STALE_IF_ERROR", e))(Y || {});
350
- const Se = (e) => {
351
- var t, o, a, r, n;
368
+ var J = /* @__PURE__ */ ((e) => (e.VALIDATING = "VALIDATING", e.VALIDATING_HAS_DATA = "VALIDATING_HAS_DATA", e.PENDING = "PENDING", e.SUCCESS = "SUCCESS", e.SUCCESS_HAS_DATA = "SUCCESS_HAS_DATA", e.ERROR = "ERROR", e.STALE_IF_ERROR = "STALE_IF_ERROR", e))(J || {});
369
+ const Ee = (e) => {
370
+ var t, o, n, r, a;
352
371
  return e ? !!// TODO: revisit: currently only the first check ever matters?
353
- ((t = Object.keys(e)) != null && t.length || (o = e.data) != null && o.length || (r = (a = e.data) == null ? void 0 : a.data) != null && r.length || !((n = e.data) != null && n.data) && typeof e.data == "object" && Object.keys(e == null ? void 0 : e.data).length) : !1;
372
+ ((t = Object.keys(e)) != null && t.length || (o = e.data) != null && o.length || (r = (n = e.data) == null ? void 0 : n.data) != null && r.length || !((a = e.data) != null && a.data) && typeof e.data == "object" && Object.keys(e == null ? void 0 : e.data).length) : !1;
354
373
  };
355
- function Ae(e = E({}), t, o, a = Se) {
374
+ function we(e = E({}), t, o, n = Ee) {
356
375
  const r = E(
357
376
  "PENDING"
358
377
  /* PENDING */
359
378
  );
360
- return Z(() => {
361
- const n = a(e.value);
362
- if (e.value && n && o.value) {
379
+ return X(() => {
380
+ const a = n(e.value);
381
+ if (e.value && a && o.value) {
363
382
  r.value = "VALIDATING_HAS_DATA";
364
383
  return;
365
384
  }
@@ -375,7 +394,7 @@ function Ae(e = E({}), t, o, a = Se) {
375
394
  r.value = "PENDING";
376
395
  return;
377
396
  }
378
- if (e.value && !t.value && n) {
397
+ if (e.value && !t.value && a) {
379
398
  r.value = "SUCCESS_HAS_DATA";
380
399
  return;
381
400
  }
@@ -386,28 +405,28 @@ function Ae(e = E({}), t, o, a = Se) {
386
405
  e.value === void 0 && t && (r.value = "ERROR");
387
406
  }), {
388
407
  state: r,
389
- swrvState: Y
408
+ swrvState: J
390
409
  };
391
410
  }
392
- const Re = {
411
+ const Ie = {
393
412
  noQueryBridge: "No query bridge provided. Unable to render dashboard."
394
- }, Ce = {
413
+ }, Te = {
395
414
  timeRangeExceeded: "The time range for this report is outside of your organization's data retention period"
396
- }, Ee = {
397
- renderer: Re,
398
- queryDataProvider: Ce
415
+ }, De = {
416
+ renderer: Ie,
417
+ queryDataProvider: Te
399
418
  };
400
- function we() {
401
- const e = le("en-us", Ee);
419
+ function ke() {
420
+ const e = ue("en-us", De);
402
421
  return {
403
422
  i18n: e,
404
- i18nT: ue(e)
423
+ i18nT: de(e)
405
424
  // Translation component <i18n-t>
406
425
  };
407
426
  }
408
- const J = {
409
- useI18n: we
410
- }, $ = /* @__PURE__ */ f({
427
+ const Z = {
428
+ useI18n: ke
429
+ }, $ = /* @__PURE__ */ v({
411
430
  __name: "QueryDataProvider",
412
431
  props: {
413
432
  query: {},
@@ -415,43 +434,43 @@ const J = {
415
434
  },
416
435
  emits: ["queryComplete"],
417
436
  setup(e, { emit: t }) {
418
- const o = e, a = t, { i18n: r } = J.useI18n(), n = G(Q), c = () => o.queryReady && n ? JSON.stringify(o.query) : null, v = new AbortController();
419
- H(() => {
420
- v.abort();
437
+ const o = e, n = t, { i18n: r } = Z.useI18n(), a = V(W), p = () => o.queryReady && a ? JSON.stringify(o.query) : null, f = new AbortController();
438
+ B(() => {
439
+ f.abort();
421
440
  });
422
- const { data: h, error: A, isValidating: s } = pe(c, async () => {
423
- var b, R, q, T;
441
+ const { data: m, error: R, isValidating: i } = le(p, async () => {
442
+ var q, A, S, k;
424
443
  try {
425
- return n == null ? void 0 : n.queryFn(o.query, v);
426
- } catch (d) {
427
- _.value = ((R = (b = d == null ? void 0 : d.response) == null ? void 0 : b.data) == null ? void 0 : R.message) === "Range not allowed for this tier" ? r.t("queryDataProvider.timeRangeExceeded") : ((T = (q = d == null ? void 0 : d.response) == null ? void 0 : q.data) == null ? void 0 : T.message) || (d == null ? void 0 : d.message);
444
+ return a == null ? void 0 : a.queryFn(o.query, f);
445
+ } catch (h) {
446
+ g.value = ((A = (q = h == null ? void 0 : h.response) == null ? void 0 : q.data) == null ? void 0 : A.message) === "Range not allowed for this tier" ? r.t("queryDataProvider.timeRangeExceeded") : ((k = (S = h == null ? void 0 : h.response) == null ? void 0 : S.data) == null ? void 0 : k.message) || (h == null ? void 0 : h.message);
428
447
  } finally {
429
- a("queryComplete");
448
+ n("queryComplete");
430
449
  }
431
- }), { state: i, swrvState: l } = Ae(h, A, s), _ = E(null), I = u(() => i.value === l.ERROR || !!_.value), D = u(() => !o.queryReady || i.value === l.PENDING);
432
- return (b, R) => {
433
- const q = z("KSkeleton"), T = z("KEmptyState");
434
- return D.value || !m(h) && !I.value ? (p(), g(q, {
450
+ }), { state: s, swrvState: l } = we(m, R, i), g = E(null), T = u(() => s.value === l.ERROR || !!g.value), D = u(() => !o.queryReady || s.value === l.PENDING);
451
+ return (q, A) => {
452
+ const S = z("KSkeleton"), k = z("KEmptyState");
453
+ return D.value || !y(m) && !T.value ? (c(), _(S, {
435
454
  key: 0,
436
455
  class: "chart-skeleton",
437
456
  type: "table"
438
- })) : I.value ? (p(), g(T, {
457
+ })) : T.value ? (c(), _(k, {
439
458
  key: 1,
440
459
  "cta-is-hidden": "",
441
460
  "data-testid": "chart-empty-state",
442
461
  "is-error": ""
443
462
  }, {
444
- message: S(() => [
445
- B(U(_.value), 1)
463
+ message: b(() => [
464
+ H(U(g.value), 1)
446
465
  ]),
447
466
  _: 1
448
- })) : m(h) ? K(b.$slots, "default", {
467
+ })) : y(m) ? K(q.$slots, "default", {
449
468
  key: 2,
450
- data: m(h)
469
+ data: y(m)
451
470
  }) : F("", !0);
452
471
  };
453
472
  }
454
- }), Ie = { class: "analytics-chart" }, De = /* @__PURE__ */ f({
473
+ }), Oe = { class: "analytics-chart" }, ze = /* @__PURE__ */ v({
455
474
  __name: "SimpleChartRenderer",
456
475
  props: {
457
476
  query: {},
@@ -460,24 +479,24 @@ const J = {
460
479
  height: {}
461
480
  },
462
481
  setup(e) {
463
- k((r) => ({
482
+ O((r) => ({
464
483
  "134a876f": `${r.height}px`
465
484
  }));
466
485
  const t = e, o = {
467
- [y.Gauge]: se.GAUGE
468
- }, a = u(() => ({
486
+ [d.Gauge]: ce.GAUGE
487
+ }, n = u(() => ({
469
488
  ...t.chartOptions,
470
489
  type: o[t.chartOptions.type]
471
490
  }));
472
- return (r, n) => (p(), g($, {
491
+ return (r, a) => (c(), _($, {
473
492
  query: r.query,
474
493
  "query-ready": r.queryReady
475
494
  }, {
476
- default: S(({ data: c }) => [
477
- N("div", Ie, [
478
- O(m(ce), {
479
- "chart-data": c,
480
- "chart-options": a.value,
495
+ default: b(({ data: p }) => [
496
+ L("div", Oe, [
497
+ w(y(pe), {
498
+ "chart-data": p,
499
+ "chart-options": n.value,
481
500
  "synthetics-data-key": r.chartOptions.syntheticsDataKey
482
501
  }, null, 8, ["chart-data", "chart-options", "synthetics-data-key"])
483
502
  ])
@@ -485,12 +504,12 @@ const J = {
485
504
  _: 1
486
505
  }, 8, ["query", "query-ready"]));
487
506
  }
488
- }), w = (e, t) => {
507
+ }), I = (e, t) => {
489
508
  const o = e.__vccOpts || e;
490
- for (const [a, r] of t)
491
- o[a] = r;
509
+ for (const [n, r] of t)
510
+ o[n] = r;
492
511
  return o;
493
- }, Te = /* @__PURE__ */ w(De, [["__scopeId", "data-v-ec989cc0"]]), ke = { class: "analytics-chart" }, Oe = /* @__PURE__ */ f({
512
+ }, Pe = /* @__PURE__ */ I(ze, [["__scopeId", "data-v-ec989cc0"]]), Le = { class: "analytics-chart" }, Ne = /* @__PURE__ */ v({
494
513
  __name: "BarChartRenderer",
495
514
  props: {
496
515
  query: {},
@@ -499,26 +518,26 @@ const J = {
499
518
  height: {}
500
519
  },
501
520
  setup(e) {
502
- k((r) => ({
521
+ O((r) => ({
503
522
  "381b03f2": `${r.height}px`
504
523
  }));
505
524
  const t = e, o = {
506
- [y.HorizontalBar]: P.HORIZONTAL_BAR,
507
- [y.VerticalBar]: P.VERTICAL_BAR
508
- }, a = u(() => ({
525
+ [d.HorizontalBar]: P.HORIZONTAL_BAR,
526
+ [d.VerticalBar]: P.VERTICAL_BAR
527
+ }, n = u(() => ({
509
528
  type: o[t.chartOptions.type],
510
529
  stacked: t.chartOptions.stacked,
511
530
  chartDatasetColors: t.chartOptions.chartDatasetColors
512
531
  }));
513
- return (r, n) => (p(), g($, {
532
+ return (r, a) => (c(), _($, {
514
533
  query: r.query,
515
534
  "query-ready": r.queryReady
516
535
  }, {
517
- default: S(({ data: c }) => [
518
- N("div", ke, [
519
- O(m(M), {
520
- "chart-data": c,
521
- "chart-options": a.value,
536
+ default: b(({ data: p }) => [
537
+ L("div", Le, [
538
+ w(y(Q), {
539
+ "chart-data": p,
540
+ "chart-options": n.value,
522
541
  "legend-position": "bottom",
523
542
  "show-annotations": r.chartOptions.showAnnotations,
524
543
  "tooltip-title": ""
@@ -528,7 +547,7 @@ const J = {
528
547
  _: 1
529
548
  }, 8, ["query", "query-ready"]));
530
549
  }
531
- }), x = /* @__PURE__ */ w(Oe, [["__scopeId", "data-v-1b9ab912"]]), ze = { class: "analytics-chart" }, Pe = /* @__PURE__ */ f({
550
+ }), x = /* @__PURE__ */ I(Ne, [["__scopeId", "data-v-1b9ab912"]]), je = { class: "analytics-chart" }, $e = /* @__PURE__ */ v({
532
551
  __name: "TimeseriesChartRenderer",
533
552
  props: {
534
553
  query: {},
@@ -537,27 +556,27 @@ const J = {
537
556
  height: {}
538
557
  },
539
558
  setup(e) {
540
- k((r) => ({
559
+ O((r) => ({
541
560
  "01f81c18": `${r.height}px`
542
561
  }));
543
562
  const t = e, o = {
544
- [y.TimeseriesLine]: P.TIMESERIES_LINE
563
+ [d.TimeseriesLine]: P.TIMESERIES_LINE
545
564
  // TODO: Timeseries bar
546
- }, a = u(() => ({
565
+ }, n = u(() => ({
547
566
  type: o[t.chartOptions.type],
548
567
  fill: t.chartOptions.fill,
549
568
  stacked: t.chartOptions.stacked,
550
569
  chartDatasetColors: t.chartOptions.chartDatasetColors
551
570
  }));
552
- return (r, n) => (p(), g($, {
571
+ return (r, a) => (c(), _($, {
553
572
  query: r.query,
554
573
  "query-ready": r.queryReady
555
574
  }, {
556
- default: S(({ data: c }) => [
557
- N("div", ze, [
558
- O(m(M), {
559
- "chart-data": c,
560
- "chart-options": a.value,
575
+ default: b(({ data: p }) => [
576
+ L("div", je, [
577
+ w(y(Q), {
578
+ "chart-data": p,
579
+ "chart-options": n.value,
561
580
  "legend-position": "bottom",
562
581
  "tooltip-title": ""
563
582
  }, null, 8, ["chart-data", "chart-options"])
@@ -566,26 +585,42 @@ const J = {
566
585
  _: 1
567
586
  }, 8, ["query", "query-ready"]));
568
587
  }
569
- }), Ne = /* @__PURE__ */ w(Pe, [["__scopeId", "data-v-efe3a03d"]]), Le = { class: "tile-boundary" }, je = /* @__PURE__ */ f({
588
+ }), Ge = /* @__PURE__ */ I($e, [["__scopeId", "data-v-efe3a03d"]]), xe = /* @__PURE__ */ v({
589
+ __name: "GoldenSignalsRenderer",
590
+ props: {
591
+ query: {},
592
+ queryReady: { type: Boolean },
593
+ chartOptions: {},
594
+ height: {}
595
+ },
596
+ setup(e) {
597
+ const t = e, o = u(() => ({
598
+ longCardTitles: t.chartOptions.longCardTitles,
599
+ description: t.chartOptions.description,
600
+ hasTrendAccess: !0,
601
+ refreshInterval: 0
602
+ }));
603
+ return (n, r) => (c(), _(y(ye), M(ee(o.value)), {
604
+ default: b(() => [
605
+ w(y(he))
606
+ ]),
607
+ _: 1
608
+ }, 16));
609
+ }
610
+ }), Ve = { class: "tile-boundary" }, Be = /* @__PURE__ */ v({
570
611
  __name: "DashboardTile",
571
612
  props: {
572
- definition: {
573
- type: Object,
574
- required: !0
575
- },
576
- height: {
577
- type: Number,
578
- required: !1,
579
- default: () => L
580
- }
613
+ definition: {},
614
+ height: { default: N }
581
615
  },
582
616
  setup(e) {
583
617
  const t = e, o = {
584
- [y.TimeseriesLine]: Ne,
585
- [y.HorizontalBar]: x,
586
- [y.VerticalBar]: x,
587
- [y.Gauge]: Te
588
- }, a = u(() => ({
618
+ [d.TimeseriesLine]: Ge,
619
+ [d.HorizontalBar]: x,
620
+ [d.VerticalBar]: x,
621
+ [d.Gauge]: Pe,
622
+ [d.GoldenSignals]: xe
623
+ }, n = u(() => ({
589
624
  component: o[t.definition.chart.type],
590
625
  rendererProps: {
591
626
  query: t.definition.query,
@@ -595,11 +630,11 @@ const J = {
595
630
  height: t.height
596
631
  }
597
632
  }));
598
- return (r, n) => (p(), C("div", Le, [
599
- a.value ? (p(), g(X(a.value.component), ee(te({ key: 0 }, a.value.rendererProps)), null, 16)) : F("", !0)
633
+ return (r, a) => (c(), C("div", Ve, [
634
+ n.value ? (c(), _(te(n.value.component), M(re({ key: 0 }, n.value.rendererProps)), null, 16)) : F("", !0)
600
635
  ]));
601
636
  }
602
- }), $e = "20px", Ve = /* @__PURE__ */ f({
637
+ }), He = "20px", Ue = /* @__PURE__ */ v({
603
638
  __name: "GridLayout",
604
639
  props: {
605
640
  gridSize: {
@@ -609,7 +644,7 @@ const J = {
609
644
  tileHeight: {
610
645
  type: Number,
611
646
  required: !1,
612
- default: () => L
647
+ default: () => N
613
648
  },
614
649
  tiles: {
615
650
  type: Array,
@@ -617,117 +652,118 @@ const J = {
617
652
  }
618
653
  },
619
654
  setup(e) {
620
- k((s) => ({
621
- bbf5361e: `${A.value}px`
655
+ O((i) => ({
656
+ bbf5361e: `${R.value}px`
622
657
  }));
623
- const t = parseInt($e), o = e, a = E(null), r = E(0), n = new ResizeObserver((s) => {
624
- r.value = s[0].contentRect.width;
658
+ const t = parseInt(He), o = e, n = E(null), r = E(0), a = new ResizeObserver((i) => {
659
+ r.value = i[0].contentRect.width;
625
660
  });
626
- re(() => {
627
- a.value && n.observe(a.value);
628
- }), H(() => {
629
- a.value && n.unobserve(a.value);
661
+ oe(() => {
662
+ n.value && a.observe(n.value);
663
+ }), B(() => {
664
+ n.value && a.unobserve(n.value);
630
665
  });
631
- const c = u(() => r.value / o.gridSize.cols - t), v = u(() => {
632
- const s = new Array(o.gridSize.rows).fill(0);
633
- return o.tiles.forEach((i) => {
634
- const l = i.layout.position.row;
635
- s[l]++;
636
- }), s;
637
- }), h = u(() => {
638
- const s = [];
639
- return o.tiles.map((i, l) => {
640
- const _ = i.layout.position.row;
641
- s[_] || (s[_] = 0), s[_]++;
642
- const I = s[_];
643
- let D = i.layout.position.col * (c.value + t);
644
- i.layout.position.col > 0 && (D += t / v.value[i.layout.position.row] * (I - 1));
645
- const b = i.layout.position.row * (o.tileHeight + t), R = i.layout.size.cols * c.value + t * (i.layout.size.cols - 1) + t / v.value[i.layout.position.row] - 1, q = i.layout.size.rows * o.tileHeight + t * (i.layout.size.rows - 1);
666
+ const p = u(() => r.value / o.gridSize.cols - t), f = u(() => {
667
+ const i = new Array(o.gridSize.rows).fill(0);
668
+ return o.tiles.forEach((s) => {
669
+ const l = s.layout.position.row;
670
+ i[l]++;
671
+ }), i;
672
+ }), m = u(() => {
673
+ const i = [];
674
+ return o.tiles.map((s, l) => {
675
+ const g = s.layout.position.row;
676
+ i[g] || (i[g] = 0), i[g]++;
677
+ const T = i[g];
678
+ let D = s.layout.position.col * (p.value + t);
679
+ s.layout.position.col > 0 && (D += t / f.value[s.layout.position.row] * (T - 1));
680
+ const q = s.layout.position.row * (o.tileHeight + t), A = s.layout.size.cols * p.value + t * (s.layout.size.cols - 1) + t / f.value[s.layout.position.row] - 1, S = s.layout.size.rows * o.tileHeight + t * (s.layout.size.rows - 1);
646
681
  return {
647
682
  key: `tile-${l}`,
648
- tile: i,
683
+ tile: s,
649
684
  style: {
650
- transform: `translate(${D}px, ${b}px)`,
651
- width: `${R}px`,
652
- height: `${q}px`
685
+ transform: `translate(${D}px, ${q}px)`,
686
+ width: `${A}px`,
687
+ height: `${S}px`
653
688
  }
654
689
  };
655
690
  });
656
- }), A = u(() => Math.max(...o.tiles.map((i) => i.layout.position.row + i.layout.size.rows)) * o.tileHeight + t * o.gridSize.rows);
657
- return (s, i) => (p(), C("div", {
691
+ }), R = u(() => Math.max(...o.tiles.map((s) => s.layout.position.row + s.layout.size.rows)) * o.tileHeight + t * o.gridSize.rows);
692
+ return (i, s) => (c(), C("div", {
658
693
  ref_key: "gridContainer",
659
- ref: a,
694
+ ref: n,
660
695
  class: "kong-ui-public-grid-layout"
661
696
  }, [
662
- (p(!0), C(oe, null, ae(h.value, (l) => (p(), C("div", {
697
+ (c(!0), C(ne, null, ae(m.value, (l) => (c(), C("div", {
663
698
  key: l.key,
664
- class: ne(["grid-cell", {
699
+ class: se(["grid-cell", {
665
700
  "empty-cell": !l.tile
666
701
  }]),
667
- style: V(l.style)
702
+ style: G(l.style)
668
703
  }, [
669
- K(s.$slots, "tile", {
670
- style: V(l.style),
704
+ K(i.$slots, "tile", {
705
+ style: G(l.style),
671
706
  tile: l.tile
672
707
  }, void 0, !0)
673
708
  ], 6))), 128))
674
709
  ], 512));
675
710
  }
676
- }), xe = /* @__PURE__ */ w(Ve, [["__scopeId", "data-v-066610e8"]]), Ge = { class: "kong-ui-public-dashboard-renderer" }, He = /* @__PURE__ */ f({
711
+ }), Ke = /* @__PURE__ */ I(Ue, [["__scopeId", "data-v-066610e8"]]), Fe = { class: "kong-ui-public-dashboard-renderer" }, Me = /* @__PURE__ */ v({
677
712
  __name: "DashboardRenderer",
678
713
  props: {
679
714
  context: {},
680
715
  config: {}
681
716
  },
682
717
  setup(e) {
683
- const t = e, { i18n: o } = J.useI18n(), a = G(Q);
684
- a || (console.warn("Analytics dashboards require a query bridge supplied via provide / inject."), console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"), console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));
685
- const r = u(() => t.config.tiles.map((n, c) => ({
686
- layout: n.layout,
687
- meta: n.definition,
718
+ const t = e, { i18n: o } = Z.useI18n(), n = V(W);
719
+ n || (console.warn("Analytics dashboards require a query bridge supplied via provide / inject."), console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"), console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));
720
+ const r = u(() => t.config.tiles.map((a, p) => ({
721
+ layout: a.layout,
722
+ meta: a.definition,
688
723
  // Add a unique key to each tile internally.
689
- id: c
724
+ id: p
690
725
  })));
691
- return (n, c) => {
692
- const v = z("KAlert");
693
- return p(), C("div", Ge, [
694
- m(a) ? (p(), g(xe, {
726
+ return (a, p) => {
727
+ const f = z("KAlert");
728
+ return c(), C("div", Fe, [
729
+ y(n) ? (c(), _(Ke, {
695
730
  key: 1,
696
- "grid-size": n.config.gridSize,
697
- "tile-height": n.config.tileHeight,
731
+ "grid-size": a.config.gridSize,
732
+ "tile-height": a.config.tileHeight,
698
733
  tiles: r.value
699
734
  }, {
700
- tile: S(({ tile: h, style: A }) => [
701
- O(je, {
735
+ tile: b(({ tile: m, style: R }) => [
736
+ w(Be, {
702
737
  class: "tile-container",
703
- definition: h.meta,
704
- height: parseInt(A.height)
738
+ definition: m.meta,
739
+ height: parseInt(R.height)
705
740
  }, null, 8, ["definition", "height"])
706
741
  ]),
707
742
  _: 1
708
- }, 8, ["grid-size", "tile-height", "tiles"])) : (p(), g(v, {
743
+ }, 8, ["grid-size", "tile-height", "tiles"])) : (c(), _(f, {
709
744
  key: 0,
710
745
  appearance: "danger"
711
746
  }, {
712
- default: S(() => [
713
- B(U(m(o).t("renderer.noQueryBridge")), 1)
747
+ default: b(() => [
748
+ H(U(y(o).t("renderer.noQueryBridge")), 1)
714
749
  ]),
715
750
  _: 1
716
751
  }))
717
752
  ]);
718
753
  };
719
754
  }
720
- }), We = /* @__PURE__ */ w(He, [["__scopeId", "data-v-e3197ec0"]]);
755
+ }), tt = /* @__PURE__ */ I(Me, [["__scopeId", "data-v-e3197ec0"]]);
721
756
  export {
722
- y as ChartTypes,
723
- We as DashboardRenderer,
724
- xe as GridLayout,
725
- de as barChartSchema,
726
- Qe as dashboardConfigSchema,
727
- ve as exploreV4QuerySchema,
728
- he as gaugeChartSchema,
729
- qe as tileConfigSchema,
730
- fe as tileDefinitionSchema,
731
- be as tileLayoutSchema,
732
- ye as timeseriesChartSchema
757
+ d as ChartTypes,
758
+ tt as DashboardRenderer,
759
+ Ke as GridLayout,
760
+ _e as barChartSchema,
761
+ et as dashboardConfigSchema,
762
+ Se as exploreV4QuerySchema,
763
+ ge as gaugeChartSchema,
764
+ ve as metricCardSchema,
765
+ Ce as tileConfigSchema,
766
+ Re as tileDefinitionSchema,
767
+ Ae as tileLayoutSchema,
768
+ me as timeseriesChartSchema
733
769
  };
@@ -1 +1 @@
1
- (function(s,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n"],e):(s=typeof globalThis<"u"?globalThis:s||self,e(s["kong-ui-public-dashboard-renderer"]={},s.Vue,s["kong-ui-public-analytics-chart"],s.swrv,s.axios,s["kong-ui-public-i18n"]))})(this,function(s,e,h,G,ie,w){"use strict";const D="analytics-query-provider";var u=(t=>(t.HorizontalBar="horizontal_bar",t.VerticalBar="vertical_bar",t.Gauge="gauge",t.TimeseriesLine="timeseries_line",t))(u||{});const T={type:"string"},I={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},B={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},showAnnotations:{type:"boolean"},chartDatasetColors:I,syntheticsDataKey:T},required:["type"],additionalProperties:!1},O={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},fill:{type:"boolean"},chartDatasetColors:I,syntheticsDataKey:T},required:["type"],additionalProperties:!1},z={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(h.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:T},required:["type"],additionalProperties:!1},L={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},N={type:"object",properties:{query:L,chart:{oneOf:[B,z,O]}},required:["query","chart"],additionalProperties:!1},V={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows the tile occupies.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},P={type:"object",properties:{definition:N,layout:V},required:["definition","layout"],additionalProperties:!1},v={type:"object",properties:{tiles:{type:"array",items:P},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var j=(t=>(t.VALIDATING="VALIDATING",t.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",t.PENDING="PENDING",t.SUCCESS="SUCCESS",t.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",t.ERROR="ERROR",t.STALE_IF_ERROR="STALE_IF_ERROR",t))(j||{});const U=t=>{var r,n,i,o,a;return t?!!((r=Object.keys(t))!=null&&r.length||(n=t.data)!=null&&n.length||(o=(i=t.data)==null?void 0:i.data)!=null&&o.length||!((a=t.data)!=null&&a.data)&&typeof t.data=="object"&&Object.keys(t==null?void 0:t.data).length):!1};function F(t=e.ref({}),r,n,i=U){const o=e.ref("PENDING");return e.watchEffect(()=>{const a=i(t.value);if(t.value&&a&&n.value){o.value="VALIDATING_HAS_DATA";return}if(t.value&&n.value){o.value="VALIDATING";return}if(t.value&&r.value){o.value="STALE_IF_ERROR";return}if(t.value===void 0&&!r.value){o.value="PENDING";return}if(t.value&&!r.value&&a){o.value="SUCCESS_HAS_DATA";return}if(t.value&&!r.value){o.value="SUCCESS";return}t.value===void 0&&r&&(o.value="ERROR")}),{state:o,swrvState:j}}const K={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard."},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function M(){const t=w.createI18n("en-us",K);return{i18n:t,i18nT:w.i18nTComponent(t)}}const H={useI18n:M},R=e.defineComponent({__name:"QueryDataProvider",props:{query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(t,{emit:r}){const n=t,i=r,{i18n:o}=H.useI18n(),a=e.inject(D),l=()=>n.queryReady&&a?JSON.stringify(n.query):null,g=new AbortController;e.onUnmounted(()=>{g.abort()});const{data:m,error:S,isValidating:p}=G(l,async()=>{var f,C,b,A;try{return a==null?void 0:a.queryFn(n.query,g)}catch(y){_.value=((C=(f=y==null?void 0:y.response)==null?void 0:f.data)==null?void 0:C.message)==="Range not allowed for this tier"?o.t("queryDataProvider.timeRangeExceeded"):((A=(b=y==null?void 0:y.response)==null?void 0:b.data)==null?void 0:A.message)||(y==null?void 0:y.message)}finally{i("queryComplete")}}),{state:c,swrvState:d}=F(m,S,p),_=e.ref(null),k=e.computed(()=>c.value===d.ERROR||!!_.value),E=e.computed(()=>!n.queryReady||c.value===d.PENDING);return(f,C)=>{const b=e.resolveComponent("KSkeleton"),A=e.resolveComponent("KEmptyState");return E.value||!e.unref(m)&&!k.value?(e.openBlock(),e.createBlock(b,{key:0,class:"chart-skeleton",type:"table"})):k.value?(e.openBlock(),e.createBlock(A,{key:1,"cta-is-hidden":"","data-testid":"chart-empty-state","is-error":""},{message:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})):e.unref(m)?e.renderSlot(f.$slots,"default",{key:2,data:e.unref(m)}):e.createCommentVNode("",!0)}}}),Q={class:"analytics-chart"},Y=e.defineComponent({__name:"SimpleChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"134a876f":`${o.height}px`}));const r=t,n={[u.Gauge]:h.ChartTypesSimple.GAUGE},i=e.computed(()=>({...r.chartOptions,type:n[r.chartOptions.type]}));return(o,a)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",Q,[e.createVNode(e.unref(h.SimpleChart),{"chart-data":l,"chart-options":i.value,"synthetics-data-key":o.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["query","query-ready"]))}}),q=(t,r)=>{const n=t.__vccOpts||t;for(const[i,o]of r)n[i]=o;return n},J=q(Y,[["__scopeId","data-v-ec989cc0"]]),W={class:"analytics-chart"},$=q(e.defineComponent({__name:"BarChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"381b03f2":`${o.height}px`}));const r=t,n={[u.HorizontalBar]:h.ChartTypes.HORIZONTAL_BAR,[u.VerticalBar]:h.ChartTypes.VERTICAL_BAR},i=e.computed(()=>({type:n[r.chartOptions.type],stacked:r.chartOptions.stacked,chartDatasetColors:r.chartOptions.chartDatasetColors}));return(o,a)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",W,[e.createVNode(e.unref(h.AnalyticsChart),{"chart-data":l,"chart-options":i.value,"legend-position":"bottom","show-annotations":o.chartOptions.showAnnotations,"tooltip-title":""},null,8,["chart-data","chart-options","show-annotations"])])]),_:1},8,["query","query-ready"]))}}),[["__scopeId","data-v-1b9ab912"]]),X={class:"analytics-chart"},Z=q(e.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"01f81c18":`${o.height}px`}));const r=t,n={[u.TimeseriesLine]:h.ChartTypes.TIMESERIES_LINE},i=e.computed(()=>({type:n[r.chartOptions.type],fill:r.chartOptions.fill,stacked:r.chartOptions.stacked,chartDatasetColors:r.chartOptions.chartDatasetColors}));return(o,a)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",X,[e.createVNode(e.unref(h.AnalyticsChart),{"chart-data":l,"chart-options":i.value,"legend-position":"bottom","tooltip-title":""},null,8,["chart-data","chart-options"])])]),_:1},8,["query","query-ready"]))}}),[["__scopeId","data-v-efe3a03d"]]),ee={class:"tile-boundary"},te=e.defineComponent({__name:"DashboardTile",props:{definition:{type:Object,required:!0},height:{type:Number,required:!1,default:()=>170}},setup(t){const r=t,n={[u.TimeseriesLine]:Z,[u.HorizontalBar]:$,[u.VerticalBar]:$,[u.Gauge]:J},i=e.computed(()=>({component:n[r.definition.chart.type],rendererProps:{query:r.definition.query,queryReady:!0,chartOptions:r.definition.chart,height:r.height}}));return(o,a)=>(e.openBlock(),e.createElementBlock("div",ee,[i.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.component),e.normalizeProps(e.mergeProps({key:0},i.value.rendererProps)),null,16)):e.createCommentVNode("",!0)]))}}),re="20px",x=q(e.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(t){e.useCssVars(p=>({bbf5361e:`${S.value}px`}));const r=parseInt(re),n=t,i=e.ref(null),o=e.ref(0),a=new ResizeObserver(p=>{o.value=p[0].contentRect.width});e.onMounted(()=>{i.value&&a.observe(i.value)}),e.onUnmounted(()=>{i.value&&a.unobserve(i.value)});const l=e.computed(()=>o.value/n.gridSize.cols-r),g=e.computed(()=>{const p=new Array(n.gridSize.rows).fill(0);return n.tiles.forEach(c=>{const d=c.layout.position.row;p[d]++}),p}),m=e.computed(()=>{const p=[];return n.tiles.map((c,d)=>{const _=c.layout.position.row;p[_]||(p[_]=0),p[_]++;const k=p[_];let E=c.layout.position.col*(l.value+r);c.layout.position.col>0&&(E+=r/g.value[c.layout.position.row]*(k-1));const f=c.layout.position.row*(n.tileHeight+r),C=c.layout.size.cols*l.value+r*(c.layout.size.cols-1)+r/g.value[c.layout.position.row]-1,b=c.layout.size.rows*n.tileHeight+r*(c.layout.size.rows-1);return{key:`tile-${d}`,tile:c,style:{transform:`translate(${E}px, ${f}px)`,width:`${C}px`,height:`${b}px`}}})}),S=e.computed(()=>Math.max(...n.tiles.map(c=>c.layout.position.row+c.layout.size.rows))*n.tileHeight+r*n.gridSize.rows);return(p,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"gridContainer",ref:i,class:"kong-ui-public-grid-layout"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.key,class:e.normalizeClass(["grid-cell",{"empty-cell":!d.tile}]),style:e.normalizeStyle(d.style)},[e.renderSlot(p.$slots,"tile",{style:e.normalizeStyle(d.style),tile:d.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-066610e8"]]),oe={class:"kong-ui-public-dashboard-renderer"},ne=q(e.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(t){const r=t,{i18n:n}=H.useI18n(),i=e.inject(D);i||(console.warn("Analytics dashboards require a query bridge supplied via provide / inject."),console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"),console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));const o=e.computed(()=>r.config.tiles.map((a,l)=>({layout:a.layout,meta:a.definition,id:l})));return(a,l)=>{const g=e.resolveComponent("KAlert");return e.openBlock(),e.createElementBlock("div",oe,[e.unref(i)?(e.openBlock(),e.createBlock(x,{key:1,"grid-size":a.config.gridSize,"tile-height":a.config.tileHeight,tiles:o.value},{tile:e.withCtx(({tile:m,style:S})=>[e.createVNode(te,{class:"tile-container",definition:m.meta,height:parseInt(S.height)},null,8,["definition","height"])]),_:1},8,["grid-size","tile-height","tiles"])):(e.openBlock(),e.createBlock(g,{key:0,appearance:"danger"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-e3197ec0"]]);s.ChartTypes=u,s.DashboardRenderer=ne,s.GridLayout=x,s.barChartSchema=B,s.dashboardConfigSchema=v,s.exploreV4QuerySchema=L,s.gaugeChartSchema=z,s.tileConfigSchema=P,s.tileDefinitionSchema=N,s.tileLayoutSchema=V,s.timeseriesChartSchema=O,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ (function(a,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@kong-ui-public/analytics-chart"),require("swrv"),require("axios"),require("@kong-ui-public/i18n"),require("@kong-ui-public/analytics-metric-provider")):typeof define=="function"&&define.amd?define(["exports","vue","@kong-ui-public/analytics-chart","swrv","axios","@kong-ui-public/i18n","@kong-ui-public/analytics-metric-provider"],e):(a=typeof globalThis<"u"?globalThis:a||self,e(a["kong-ui-public-dashboard-renderer"]={},a.Vue,a["kong-ui-public-analytics-chart"],a.swrv,a.axios,a["kong-ui-public-i18n"],a["kong-ui-public-analytics-metric-provider"]))})(this,function(a,e,h,v,ce,w,I){"use strict";const D="analytics-query-provider";var u=(t=>(t.HorizontalBar="horizontal_bar",t.VerticalBar="vertical_bar",t.Gauge="gauge",t.TimeseriesLine="timeseries_line",t.GoldenSignals="golden_signals",t))(u||{});const T={type:"string"},B={type:["object","array"],items:{type:"string"},additionalProperties:{type:"string"}},O={type:"object",properties:{type:{type:"string",enum:["horizontal_bar","vertical_bar"]},stacked:{type:"boolean"},showAnnotations:{type:"boolean"},chartDatasetColors:B,syntheticsDataKey:T},required:["type"],additionalProperties:!1},z={type:"object",properties:{type:{type:"string",enum:["timeseries_line"]},stacked:{type:"boolean"},fill:{type:"boolean"},chartDatasetColors:B,syntheticsDataKey:T},required:["type"],additionalProperties:!1},V={type:"object",properties:{type:{type:"string",enum:["gauge"]},metricDisplay:{type:"string",enum:Object.values(h.ChartMetricDisplay)},reverseDataset:{type:"boolean"},numerator:{type:"number"},syntheticsDataKey:T},required:["type"],additionalProperties:!1},L={type:"object",properties:{type:{type:"string",enum:["golden_signals"]},longCardTitles:{type:"boolean"},description:{type:"string"}},required:["type"]},N={type:"object",description:"A query to launch at the API",properties:{metrics:{type:"array",description:"List of aggregated metrics to collect across the requested time span.",items:{type:"string",enum:["request_count","request_per_minute","response_latency_p99","response_latency_p95","response_latency_p50","response_latency_average","upstream_latency_p99","upstream_latency_p95","upstream_latency_p50","upstream_latency_average","kong_latency_p99","kong_latency_p95","kong_latency_p50","kong_latency_average","response_size_p99","response_size_p95","response_size_p50","request_size_p99","request_size_p95","request_size_p50","request_size_average","response_size_average"]}},dimensions:{type:"array",description:"List of attributes or entity types to group by.",minItems:0,maxItems:2,items:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]}},filters:{type:"array",description:"A list of filters to apply to the query.",items:{type:"object",description:"A filter that specifies which data to include in the query",properties:{dimension:{type:"string",enum:["api_product","api_product_version","application","consumer","control_plane","control_plane_group","data_plane_node","gateway_service","route","status_code","status_code_grouped","time"]},type:{type:"string",enum:["in","not_in","selector"]},values:{type:"array",items:{type:"string"}}},required:["dimension","type","values"]}},granularity_ms:{type:"number",description:'Force time grouping into buckets of this duration in milliseconds. Only has an effect if "time" is in the "dimensions" list.',minimum:6e4},time_range:{description:"The time range to query.",oneOf:[{type:"object",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["relative"]},time_range:{type:"string",enum:["15m","1h","6h","12h","24h","7d","30d","current_week","current_month","previous_week","previous_month"],default:"1h"}},required:["type","time_range"]},{type:"object",description:"A duration representing an exact start and end time.",properties:{tz:{type:"string",default:"Etc/UTC"},type:{type:"string",enum:["absolute"]},start:{type:"string"},end:{type:"string"}},required:["type"]}],default:{type:"relative",time_range:"1h"}},meta:{type:"object"}}},P={type:"object",properties:{query:N,chart:{oneOf:[O,V,z,L]}},required:["query","chart"],additionalProperties:!1},j={type:"object",properties:{position:{type:"object",properties:{col:{type:"number"},row:{type:"number"}},description:"Position of the tile in the grid.",required:["col","row"],additionalProperties:!1},size:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows the tile occupies.",required:["cols","rows"],additionalProperties:!1}},required:["position","size"],additionalProperties:!1},G={type:"object",properties:{definition:P,layout:j},required:["definition","layout"],additionalProperties:!1},F={type:"object",properties:{tiles:{type:"array",items:G},tileHeight:{type:"number",description:"Height of each tile in pixels. Default: 170"},gridSize:{type:"object",properties:{cols:{type:"number"},rows:{type:"number"}},description:"Number of columns and rows in the grid.",required:["cols","rows"],additionalProperties:!1}},required:["tiles","gridSize"],additionalProperties:!1};var $=(t=>(t.VALIDATING="VALIDATING",t.VALIDATING_HAS_DATA="VALIDATING_HAS_DATA",t.PENDING="PENDING",t.SUCCESS="SUCCESS",t.SUCCESS_HAS_DATA="SUCCESS_HAS_DATA",t.ERROR="ERROR",t.STALE_IF_ERROR="STALE_IF_ERROR",t))($||{});const K=t=>{var r,n,i,o,s;return t?!!((r=Object.keys(t))!=null&&r.length||(n=t.data)!=null&&n.length||(o=(i=t.data)==null?void 0:i.data)!=null&&o.length||!((s=t.data)!=null&&s.data)&&typeof t.data=="object"&&Object.keys(t==null?void 0:t.data).length):!1};function M(t=e.ref({}),r,n,i=K){const o=e.ref("PENDING");return e.watchEffect(()=>{const s=i(t.value);if(t.value&&s&&n.value){o.value="VALIDATING_HAS_DATA";return}if(t.value&&n.value){o.value="VALIDATING";return}if(t.value&&r.value){o.value="STALE_IF_ERROR";return}if(t.value===void 0&&!r.value){o.value="PENDING";return}if(t.value&&!r.value&&s){o.value="SUCCESS_HAS_DATA";return}if(t.value&&!r.value){o.value="SUCCESS";return}t.value===void 0&&r&&(o.value="ERROR")}),{state:o,swrvState:$}}const Q={renderer:{noQueryBridge:"No query bridge provided. Unable to render dashboard."},queryDataProvider:{timeRangeExceeded:"The time range for this report is outside of your organization's data retention period"}};function Y(){const t=w.createI18n("en-us",Q);return{i18n:t,i18nT:w.i18nTComponent(t)}}const x={useI18n:Y},R=e.defineComponent({__name:"QueryDataProvider",props:{query:{},queryReady:{type:Boolean}},emits:["queryComplete"],setup(t,{emit:r}){const n=t,i=r,{i18n:o}=x.useI18n(),s=e.inject(D),l=()=>n.queryReady&&s?JSON.stringify(n.query):null,g=new AbortController;e.onUnmounted(()=>{g.abort()});const{data:m,error:S,isValidating:p}=v(l,async()=>{var f,C,b,E;try{return s==null?void 0:s.queryFn(n.query,g)}catch(y){_.value=((C=(f=y==null?void 0:y.response)==null?void 0:f.data)==null?void 0:C.message)==="Range not allowed for this tier"?o.t("queryDataProvider.timeRangeExceeded"):((E=(b=y==null?void 0:y.response)==null?void 0:b.data)==null?void 0:E.message)||(y==null?void 0:y.message)}finally{i("queryComplete")}}),{state:c,swrvState:d}=M(m,S,p),_=e.ref(null),k=e.computed(()=>c.value===d.ERROR||!!_.value),A=e.computed(()=>!n.queryReady||c.value===d.PENDING);return(f,C)=>{const b=e.resolveComponent("KSkeleton"),E=e.resolveComponent("KEmptyState");return A.value||!e.unref(m)&&!k.value?(e.openBlock(),e.createBlock(b,{key:0,class:"chart-skeleton",type:"table"})):k.value?(e.openBlock(),e.createBlock(E,{key:1,"cta-is-hidden":"","data-testid":"chart-empty-state","is-error":""},{message:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.value),1)]),_:1})):e.unref(m)?e.renderSlot(f.$slots,"default",{key:2,data:e.unref(m)}):e.createCommentVNode("",!0)}}}),J={class:"analytics-chart"},W=e.defineComponent({__name:"SimpleChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"134a876f":`${o.height}px`}));const r=t,n={[u.Gauge]:h.ChartTypesSimple.GAUGE},i=e.computed(()=>({...r.chartOptions,type:n[r.chartOptions.type]}));return(o,s)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",J,[e.createVNode(e.unref(h.SimpleChart),{"chart-data":l,"chart-options":i.value,"synthetics-data-key":o.chartOptions.syntheticsDataKey},null,8,["chart-data","chart-options","synthetics-data-key"])])]),_:1},8,["query","query-ready"]))}}),q=(t,r)=>{const n=t.__vccOpts||t;for(const[i,o]of r)n[i]=o;return n},X=q(W,[["__scopeId","data-v-ec989cc0"]]),Z={class:"analytics-chart"},H=q(e.defineComponent({__name:"BarChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"381b03f2":`${o.height}px`}));const r=t,n={[u.HorizontalBar]:h.ChartTypes.HORIZONTAL_BAR,[u.VerticalBar]:h.ChartTypes.VERTICAL_BAR},i=e.computed(()=>({type:n[r.chartOptions.type],stacked:r.chartOptions.stacked,chartDatasetColors:r.chartOptions.chartDatasetColors}));return(o,s)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",Z,[e.createVNode(e.unref(h.AnalyticsChart),{"chart-data":l,"chart-options":i.value,"legend-position":"bottom","show-annotations":o.chartOptions.showAnnotations,"tooltip-title":""},null,8,["chart-data","chart-options","show-annotations"])])]),_:1},8,["query","query-ready"]))}}),[["__scopeId","data-v-1b9ab912"]]),ee={class:"analytics-chart"},te=q(e.defineComponent({__name:"TimeseriesChartRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){e.useCssVars(o=>({"01f81c18":`${o.height}px`}));const r=t,n={[u.TimeseriesLine]:h.ChartTypes.TIMESERIES_LINE},i=e.computed(()=>({type:n[r.chartOptions.type],fill:r.chartOptions.fill,stacked:r.chartOptions.stacked,chartDatasetColors:r.chartOptions.chartDatasetColors}));return(o,s)=>(e.openBlock(),e.createBlock(R,{query:o.query,"query-ready":o.queryReady},{default:e.withCtx(({data:l})=>[e.createElementVNode("div",ee,[e.createVNode(e.unref(h.AnalyticsChart),{"chart-data":l,"chart-options":i.value,"legend-position":"bottom","tooltip-title":""},null,8,["chart-data","chart-options"])])]),_:1},8,["query","query-ready"]))}}),[["__scopeId","data-v-efe3a03d"]]),re=e.defineComponent({__name:"GoldenSignalsRenderer",props:{query:{},queryReady:{type:Boolean},chartOptions:{},height:{}},setup(t){const r=t,n=e.computed(()=>({longCardTitles:r.chartOptions.longCardTitles,description:r.chartOptions.description,hasTrendAccess:!0,refreshInterval:0}));return(i,o)=>(e.openBlock(),e.createBlock(e.unref(I.MetricsProviderInternal),e.normalizeProps(e.guardReactiveProps(n.value)),{default:e.withCtx(()=>[e.createVNode(e.unref(I.MetricsConsumer))]),_:1},16))}}),oe={class:"tile-boundary"},ne=e.defineComponent({__name:"DashboardTile",props:{definition:{},height:{default:170}},setup(t){const r=t,n={[u.TimeseriesLine]:te,[u.HorizontalBar]:H,[u.VerticalBar]:H,[u.Gauge]:X,[u.GoldenSignals]:re},i=e.computed(()=>({component:n[r.definition.chart.type],rendererProps:{query:r.definition.query,queryReady:!0,chartOptions:r.definition.chart,height:r.height}}));return(o,s)=>(e.openBlock(),e.createElementBlock("div",oe,[i.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(i.value.component),e.normalizeProps(e.mergeProps({key:0},i.value.rendererProps)),null,16)):e.createCommentVNode("",!0)]))}}),ie="20px",U=q(e.defineComponent({__name:"GridLayout",props:{gridSize:{type:Object,required:!0},tileHeight:{type:Number,required:!1,default:()=>170},tiles:{type:Array,required:!0}},setup(t){e.useCssVars(p=>({bbf5361e:`${S.value}px`}));const r=parseInt(ie),n=t,i=e.ref(null),o=e.ref(0),s=new ResizeObserver(p=>{o.value=p[0].contentRect.width});e.onMounted(()=>{i.value&&s.observe(i.value)}),e.onUnmounted(()=>{i.value&&s.unobserve(i.value)});const l=e.computed(()=>o.value/n.gridSize.cols-r),g=e.computed(()=>{const p=new Array(n.gridSize.rows).fill(0);return n.tiles.forEach(c=>{const d=c.layout.position.row;p[d]++}),p}),m=e.computed(()=>{const p=[];return n.tiles.map((c,d)=>{const _=c.layout.position.row;p[_]||(p[_]=0),p[_]++;const k=p[_];let A=c.layout.position.col*(l.value+r);c.layout.position.col>0&&(A+=r/g.value[c.layout.position.row]*(k-1));const f=c.layout.position.row*(n.tileHeight+r),C=c.layout.size.cols*l.value+r*(c.layout.size.cols-1)+r/g.value[c.layout.position.row]-1,b=c.layout.size.rows*n.tileHeight+r*(c.layout.size.rows-1);return{key:`tile-${d}`,tile:c,style:{transform:`translate(${A}px, ${f}px)`,width:`${C}px`,height:`${b}px`}}})}),S=e.computed(()=>Math.max(...n.tiles.map(c=>c.layout.position.row+c.layout.size.rows))*n.tileHeight+r*n.gridSize.rows);return(p,c)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"gridContainer",ref:i,class:"kong-ui-public-grid-layout"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.key,class:e.normalizeClass(["grid-cell",{"empty-cell":!d.tile}]),style:e.normalizeStyle(d.style)},[e.renderSlot(p.$slots,"tile",{style:e.normalizeStyle(d.style),tile:d.tile},void 0,!0)],6))),128))],512))}}),[["__scopeId","data-v-066610e8"]]),ae={class:"kong-ui-public-dashboard-renderer"},se=q(e.defineComponent({__name:"DashboardRenderer",props:{context:{},config:{}},setup(t){const r=t,{i18n:n}=x.useI18n(),i=e.inject(D);i||(console.warn("Analytics dashboards require a query bridge supplied via provide / inject."),console.warn("Please ensure your application has a query bridge provided under the key 'analytics-query-provider', as described in"),console.warn("https://github.com/Kong/public-ui-components/blob/main/packages/analytics/dashboard-renderer/README.md#requirements"));const o=e.computed(()=>r.config.tiles.map((s,l)=>({layout:s.layout,meta:s.definition,id:l})));return(s,l)=>{const g=e.resolveComponent("KAlert");return e.openBlock(),e.createElementBlock("div",ae,[e.unref(i)?(e.openBlock(),e.createBlock(U,{key:1,"grid-size":s.config.gridSize,"tile-height":s.config.tileHeight,tiles:o.value},{tile:e.withCtx(({tile:m,style:S})=>[e.createVNode(ne,{class:"tile-container",definition:m.meta,height:parseInt(S.height)},null,8,["definition","height"])]),_:1},8,["grid-size","tile-height","tiles"])):(e.openBlock(),e.createBlock(g,{key:0,appearance:"danger"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(n).t("renderer.noQueryBridge")),1)]),_:1}))])}}}),[["__scopeId","data-v-e3197ec0"]]);a.ChartTypes=u,a.DashboardRenderer=se,a.GridLayout=U,a.barChartSchema=O,a.dashboardConfigSchema=F,a.exploreV4QuerySchema=N,a.gaugeChartSchema=V,a.metricCardSchema=L,a.tileConfigSchema=G,a.tileDefinitionSchema=P,a.tileLayoutSchema=j,a.timeseriesChartSchema=z,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .locked[data-v-d8d2d0cd]{cursor:move}.tooltip-container[data-v-d8d2d0cd]{background-color:#fff;border-radius:3px;box-shadow:0 5px 15px #0000001f,0 5px 10px #0000003d;max-width:425px;min-width:250px;position:absolute;transition:all .2s cubic-bezier(.25,.8,.25,1);z-index:999}.tooltip-container .tooltip-title[data-v-d8d2d0cd]{border-bottom:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;margin:8px;min-height:24px;padding-bottom:8px}.tooltip-container .tooltip-title .title[data-v-d8d2d0cd]{font-size:16px;font-weight:600}.tooltip-container .tooltip-title .subtitle[data-v-d8d2d0cd]{font-size:14px;margin-top:8px}.tooltip-container .tooltip-title .drag-icon[data-v-d8d2d0cd]{margin-top:6px;position:absolute;right:0;top:0}ul.tooltip[data-v-d8d2d0cd]{list-style:none;margin:0;max-height:300px;min-width:250px;overflow-y:auto;padding-left:0;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar{width:8px}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar-track{background:transparent}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}ul.tooltip li[data-v-d8d2d0cd]{display:flex;font-size:14px;line-height:1;margin:8px}ul.tooltip li[data-v-d8d2d0cd]:last-child{padding-bottom:8px}ul.tooltip .display-label[data-v-d8d2d0cd]{max-width:75%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.tooltip .display-value[data-v-d8d2d0cd]{margin-left:auto;padding-left:8px;white-space:nowrap}ul.tooltip .tooltip-legend[data-v-d8d2d0cd]{display:inline-flex;flex-direction:row;height:15px;margin-right:8px;width:3px}.legend-container[data-v-6a4f1f3c]{display:flex;max-height:inherit;overflow-x:hidden;overflow-y:auto;padding-left:12px;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar{width:8px}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar-track{background:transparent}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.legend-container.vertical[data-v-6a4f1f3c]{flex-direction:column;max-height:90%;max-width:15%;min-width:10%}.legend-container.vertical .truncate-label[data-v-6a4f1f3c]{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 767px){.legend-container.vertical[data-v-6a4f1f3c]{column-gap:24px;display:grid;grid-template-columns:repeat(auto-fit,10ch);justify-content:center;max-height:12%;width:99%}.legend-container.vertical .sub-label[data-v-6a4f1f3c]{display:none}}.legend-container.horizontal[data-v-6a4f1f3c]{column-gap:24px;display:grid;justify-content:center;max-height:12%;width:99%}.legend-container.horizontal .truncate-label[data-v-6a4f1f3c]{max-width:15ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-container.horizontal li[data-v-6a4f1f3c]{margin-top:0}.legend-container.horizontal li .legend[data-v-6a4f1f3c]{margin-top:12px}.legend-container.horizontal li .label[data-v-6a4f1f3c]{line-height:28px}.legend-container li[data-v-6a4f1f3c]{align-items:start;cursor:pointer;display:flex;line-height:1;margin-top:16px}.legend-container li .legend[data-v-6a4f1f3c]{flex:0 0 14px;height:3px;margin-right:12px;margin-top:4px}.legend-container li .label[data-v-6a4f1f3c]{font-size:14px}.legend-container li .sub-label[data-v-6a4f1f3c]{font-size:12px;line-height:16px;word-break:none}.legend-container li .strike-through[data-v-6a4f1f3c]{text-decoration:line-through}.chart-parent[data-v-969f27ea]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-969f27ea]{flex-direction:column}.chart-parent.column .chart-container[data-v-969f27ea]{height:80%;width:100%}.chart-parent.legend-row[data-v-969f27ea]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-969f27ea]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-969f27ea]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-969f27ea]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-969f27ea]{position:relative}.chart-container[data-v-969f27ea]{overflow:auto;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}.chart-container[data-v-969f27ea] ::-webkit-scrollbar{width:8px}.chart-container[data-v-969f27ea] ::-webkit-scrollbar-track{background:transparent}.chart-container[data-v-969f27ea] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.chart-container .chart-body[data-v-969f27ea]{height:100%}.chart-container[data-v-969f27ea]::-webkit-scrollbar-track{background-color:#fff;border-radius:10px}.chart-container[data-v-969f27ea]::-webkit-scrollbar{width:10px}.chart-container[data-v-969f27ea]::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.axis[data-v-969f27ea]{left:0;pointer-events:none;position:absolute;top:0;z-index:99}.axis-tooltip[data-v-969f27ea]{background-color:#3a3f51;color:#fff;padding:4px 8px;position:absolute;width:max-content;z-index:100}.tooltip-boundary[data-v-969f27ea]{height:100%;left:0;position:relative;top:0;width:100%}.chart-parent[data-v-b3095003]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-b3095003]{flex-direction:column}.chart-parent.column .chart-container[data-v-b3095003]{height:80%;width:100%}.chart-parent.legend-row[data-v-b3095003]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-b3095003]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-b3095003]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-b3095003]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-b3095003]{position:relative}.chart-parent[data-v-3abbf084]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-3abbf084]{flex-direction:column}.chart-parent.column .chart-container[data-v-3abbf084]{height:80%;width:100%}.chart-parent.legend-row[data-v-3abbf084]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-3abbf084]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-3abbf084]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-3abbf084]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-3abbf084]{position:relative}.kong-ui-public-csv-export-modal .modal-container{min-width:580px}.kong-ui-public-csv-export-modal .modal-container .k-empty-state-message{max-width:80%}.kong-ui-public-csv-export-modal .modal-container .selected-range{font-size:14px}.kong-ui-public-csv-export-modal .modal-container .text-muted{color:#00000073!important;font-size:14px}.kong-ui-public-csv-export-modal .modal-container .vitals-table{font-size:14px;margin-bottom:20px;margin-top:6px;width:100%}.kong-ui-public-csv-export-modal .modal-container .k-table thead{border-top:1px solid #e0e4ea;height:auto}.kong-ui-public-csv-export-modal .modal-container .modal-footer .vitals-report-export-button{display:inline-flex}.analytics-chart-shell[data-v-410a8b13],.simple-chart-shell[data-v-410a8b13]{border-radius:4px;display:flex;flex-direction:column}.analytics-chart-shell .chart-empty-state[data-v-410a8b13],.simple-chart-shell .chart-empty-state[data-v-410a8b13]{display:flex;flex-direction:column;height:100%;justify-content:center}.analytics-chart-shell[data-v-410a8b13]{height:100%;width:100%}.analytics-chart-shell .analytics-chart-parent[data-v-410a8b13]{height:inherit;width:inherit}.analytics-chart-shell .chart-empty-state[data-v-410a8b13]{padding:20px 0 16px}.analytics-chart-shell .chart-header[data-v-410a8b13]{align-items:center;display:flex;justify-content:flex-start;padding-bottom:16px}.analytics-chart-shell .chart-header .chart-header-icons-wrapper[data-v-410a8b13]{display:flex;justify-content:end}.analytics-chart-shell .chart-header .chart-export-button[data-v-410a8b13]{display:flex;margin-left:auto;margin-right:0}.analytics-chart-shell .chart-title[data-v-410a8b13]{font-size:18px;font-weight:600}.analytics-chart-shell .tooltip[data-v-410a8b13]{display:flex;margin-left:12px;margin-top:2px}.chart-parent[data-v-5871cb7a]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-5871cb7a]{flex-direction:column}.chart-parent.column .chart-container[data-v-5871cb7a]{height:80%;width:100%}.chart-parent.legend-row[data-v-5871cb7a]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-5871cb7a]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-5871cb7a]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-5871cb7a]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-5871cb7a]{position:relative}.chart-parent[data-v-5871cb7a]{height:auto;margin:0;padding:0;width:auto}.chart-parent .chart-container[data-v-5871cb7a]{margin:0;max-height:100px;max-width:100px;padding:0}.chart-parent .chart-totals-flex[data-v-5871cb7a]{align-items:center;display:flex;flex-direction:column;height:100px;justify-content:center;padding:24px 0 0;position:absolute;width:100px;z-index:2}.chart-parent .chart-totals-flex .metric-large[data-v-5871cb7a]{font-size:20px;font-weight:500;line-height:28px}.chart-parent .chart-totals-flex .metric-small[data-v-5871cb7a]{color:#6c7489;font-size:10px;font-weight:400;line-height:12px}.analytics-chart-shell[data-v-7d1a0034],.simple-chart-shell[data-v-7d1a0034]{border-radius:4px;display:flex;flex-direction:column}.analytics-chart-shell .chart-empty-state[data-v-7d1a0034],.simple-chart-shell .chart-empty-state[data-v-7d1a0034]{display:flex;flex-direction:column;height:100%;justify-content:center}.simple-chart-shell[data-v-7d1a0034]{margin:0;padding:0}.simple-chart-shell .chart-empty-state[data-v-7d1a0034]{display:flex;flex-direction:column;height:100px;justify-content:center;width:100px}.simple-chart-shell .chart-empty-state[data-v-7d1a0034] .k-empty-state-title-header{font-size:12px;line-height:16px;margin:0}.kong-ui-public-top-n-table[data-v-613dbb8f]{border-radius:8px!important}.kong-ui-public-top-n-table .top-n-card-title[data-v-613dbb8f]{font-size:16px}.kong-ui-public-top-n-table .top-n-card-description[data-v-613dbb8f]{color:#6c7489;font-size:12px;text-align:right}.kong-ui-public-top-n-table[data-v-613dbb8f] .k-card-actions{align-self:baseline;display:flex;line-height:22px}.kong-ui-public-top-n-table .top-n-table[data-v-613dbb8f]{display:flex;flex-direction:column;width:100%}.kong-ui-public-top-n-table .top-n-table .table-headings[data-v-613dbb8f]{font-size:14px;font-weight:600;line-height:24px}.kong-ui-public-top-n-table .top-n-table .table-row[data-v-613dbb8f]{align-self:stretch;border-bottom:1px solid #e0e4ea;display:flex;justify-content:space-between}.kong-ui-public-top-n-table .top-n-table .table-row[data-v-613dbb8f]:last-of-type{border-bottom:none}.kong-ui-public-top-n-table .top-n-table .column-1[data-v-613dbb8f]{padding:0 24px 12px 0}.kong-ui-public-top-n-table .top-n-table .column-2[data-v-613dbb8f]{flex:1;max-width:110px;padding:0 0 12px}.kong-ui-public-top-n-table .top-n-table .table-body .table-row[data-v-613dbb8f]:first-of-type{border-top:1px solid #e0e4ea}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f],.kong-ui-public-top-n-table .top-n-table .table-body .column-2[data-v-613dbb8f]{padding-top:12px}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f]{color:#3a3f51;font-size:14px}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f] a{color:#0044f4;font-weight:700;text-decoration:none}.kong-ui-public-top-n-table.kong-card.border{border-radius:4px;padding:20px}.kong-ui-public-top-n-table.kong-card.border .k-card-header{align-items:baseline;margin-bottom:0!important}.kong-ui-public-top-n-table.kong-card.border .k-card-header .k-card-title{margin-bottom:16px}.kong-ui-public-top-n-table.kong-card.border .k-card-header .k-card-title h4{font-size:16px;font-weight:600}.analytics-chart[data-v-ec989cc0]{height:var(--134a876f)}.analytics-chart[data-v-1b9ab912]{height:var(--381b03f2)}.analytics-chart[data-v-efe3a03d]{height:var(--01f81c18)}.kong-ui-public-grid-layout[data-v-066610e8]{height:var(--bbf5361e);width:100%}.grid-cell[data-v-066610e8]{position:absolute}.grid-cell .tile-container[data-v-066610e8]{margin:20px}@media (max-width: 768px){.kong-ui-public-grid-layout[data-v-066610e8]{display:flex;flex-direction:column}.kong-ui-public-grid-layout .grid-cell[data-v-066610e8]{height:auto!important;left:auto!important;position:relative;top:auto!important;transform:none!important;width:auto!important}.kong-ui-public-grid-layout .grid-cell[data-v-066610e8]:not(:first-child){margin-top:20px}.kong-ui-public-grid-layout .empty-cell[data-v-066610e8]{display:none}}.kong-ui-public-dashboard-renderer .tile-container[data-v-e3197ec0]{border:1px solid #e0e4ea;border-radius:4px}
1
+ .locked[data-v-d8d2d0cd]{cursor:move}.tooltip-container[data-v-d8d2d0cd]{background-color:#fff;border-radius:3px;box-shadow:0 5px 15px #0000001f,0 5px 10px #0000003d;max-width:425px;min-width:250px;position:absolute;transition:all .2s cubic-bezier(.25,.8,.25,1);z-index:999}.tooltip-container .tooltip-title[data-v-d8d2d0cd]{border-bottom:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column;margin:8px;min-height:24px;padding-bottom:8px}.tooltip-container .tooltip-title .title[data-v-d8d2d0cd]{font-size:16px;font-weight:600}.tooltip-container .tooltip-title .subtitle[data-v-d8d2d0cd]{font-size:14px;margin-top:8px}.tooltip-container .tooltip-title .drag-icon[data-v-d8d2d0cd]{margin-top:6px;position:absolute;right:0;top:0}ul.tooltip[data-v-d8d2d0cd]{list-style:none;margin:0;max-height:300px;min-width:250px;overflow-y:auto;padding-left:0;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar{width:8px}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar-track{background:transparent}ul.tooltip[data-v-d8d2d0cd] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}ul.tooltip li[data-v-d8d2d0cd]{display:flex;font-size:14px;line-height:1;margin:8px}ul.tooltip li[data-v-d8d2d0cd]:last-child{padding-bottom:8px}ul.tooltip .display-label[data-v-d8d2d0cd]{max-width:75%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ul.tooltip .display-value[data-v-d8d2d0cd]{margin-left:auto;padding-left:8px;white-space:nowrap}ul.tooltip .tooltip-legend[data-v-d8d2d0cd]{display:inline-flex;flex-direction:row;height:15px;margin-right:8px;width:3px}.legend-container[data-v-6a4f1f3c]{display:flex;max-height:inherit;overflow-x:hidden;overflow-y:auto;padding-left:12px;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar{width:8px}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar-track{background:transparent}.legend-container[data-v-6a4f1f3c] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.legend-container.vertical[data-v-6a4f1f3c]{flex-direction:column;max-height:90%;max-width:15%;min-width:10%}.legend-container.vertical .truncate-label[data-v-6a4f1f3c]{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 767px){.legend-container.vertical[data-v-6a4f1f3c]{column-gap:24px;display:grid;grid-template-columns:repeat(auto-fit,10ch);justify-content:center;max-height:12%;width:99%}.legend-container.vertical .sub-label[data-v-6a4f1f3c]{display:none}}.legend-container.horizontal[data-v-6a4f1f3c]{column-gap:24px;display:grid;justify-content:center;max-height:12%;width:99%}.legend-container.horizontal .truncate-label[data-v-6a4f1f3c]{max-width:15ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-container.horizontal li[data-v-6a4f1f3c]{margin-top:0}.legend-container.horizontal li .legend[data-v-6a4f1f3c]{margin-top:12px}.legend-container.horizontal li .label[data-v-6a4f1f3c]{line-height:28px}.legend-container li[data-v-6a4f1f3c]{align-items:start;cursor:pointer;display:flex;line-height:1;margin-top:16px}.legend-container li .legend[data-v-6a4f1f3c]{flex:0 0 14px;height:3px;margin-right:12px;margin-top:4px}.legend-container li .label[data-v-6a4f1f3c]{font-size:14px}.legend-container li .sub-label[data-v-6a4f1f3c]{font-size:12px;line-height:16px;word-break:none}.legend-container li .strike-through[data-v-6a4f1f3c]{text-decoration:line-through}.chart-parent[data-v-969f27ea]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-969f27ea]{flex-direction:column}.chart-parent.column .chart-container[data-v-969f27ea]{height:80%;width:100%}.chart-parent.legend-row[data-v-969f27ea]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-969f27ea]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-969f27ea]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-969f27ea]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-969f27ea]{position:relative}.chart-container[data-v-969f27ea]{overflow:auto;-ms-overflow-style:thin;scrollbar-color:#e0e4ea transparent;scrollbar-width:auto}.chart-container[data-v-969f27ea] ::-webkit-scrollbar{width:8px}.chart-container[data-v-969f27ea] ::-webkit-scrollbar-track{background:transparent}.chart-container[data-v-969f27ea] ::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.chart-container .chart-body[data-v-969f27ea]{height:100%}.chart-container[data-v-969f27ea]::-webkit-scrollbar-track{background-color:#fff;border-radius:10px}.chart-container[data-v-969f27ea]::-webkit-scrollbar{width:10px}.chart-container[data-v-969f27ea]::-webkit-scrollbar-thumb{background-color:#e0e4ea;border-radius:10px}.axis[data-v-969f27ea]{left:0;pointer-events:none;position:absolute;top:0;z-index:99}.axis-tooltip[data-v-969f27ea]{background-color:#3a3f51;color:#fff;padding:4px 8px;position:absolute;width:max-content;z-index:100}.tooltip-boundary[data-v-969f27ea]{height:100%;left:0;position:relative;top:0;width:100%}.chart-parent[data-v-b3095003]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-b3095003]{flex-direction:column}.chart-parent.column .chart-container[data-v-b3095003]{height:80%;width:100%}.chart-parent.legend-row[data-v-b3095003]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-b3095003]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-b3095003]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-b3095003]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-b3095003]{position:relative}.chart-parent[data-v-3abbf084]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-3abbf084]{flex-direction:column}.chart-parent.column .chart-container[data-v-3abbf084]{height:80%;width:100%}.chart-parent.legend-row[data-v-3abbf084]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-3abbf084]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-3abbf084]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-3abbf084]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-3abbf084]{position:relative}.kong-ui-public-csv-export-modal .modal-container{min-width:580px}.kong-ui-public-csv-export-modal .modal-container .k-empty-state-message{max-width:80%}.kong-ui-public-csv-export-modal .modal-container .selected-range{font-size:14px}.kong-ui-public-csv-export-modal .modal-container .text-muted{color:#00000073!important;font-size:14px}.kong-ui-public-csv-export-modal .modal-container .vitals-table{font-size:14px;margin-bottom:20px;margin-top:6px;width:100%}.kong-ui-public-csv-export-modal .modal-container .k-table thead{border-top:1px solid #e0e4ea;height:auto}.kong-ui-public-csv-export-modal .modal-container .modal-footer .vitals-report-export-button{display:inline-flex}.analytics-chart-shell[data-v-410a8b13],.simple-chart-shell[data-v-410a8b13]{border-radius:4px;display:flex;flex-direction:column}.analytics-chart-shell .chart-empty-state[data-v-410a8b13],.simple-chart-shell .chart-empty-state[data-v-410a8b13]{display:flex;flex-direction:column;height:100%;justify-content:center}.analytics-chart-shell[data-v-410a8b13]{height:100%;width:100%}.analytics-chart-shell .analytics-chart-parent[data-v-410a8b13]{height:inherit;width:inherit}.analytics-chart-shell .chart-empty-state[data-v-410a8b13]{padding:20px 0 16px}.analytics-chart-shell .chart-header[data-v-410a8b13]{align-items:center;display:flex;justify-content:flex-start;padding-bottom:16px}.analytics-chart-shell .chart-header .chart-header-icons-wrapper[data-v-410a8b13]{display:flex;justify-content:end}.analytics-chart-shell .chart-header .chart-export-button[data-v-410a8b13]{display:flex;margin-left:auto;margin-right:0}.analytics-chart-shell .chart-title[data-v-410a8b13]{font-size:18px;font-weight:600}.analytics-chart-shell .tooltip[data-v-410a8b13]{display:flex;margin-left:12px;margin-top:2px}.chart-parent[data-v-5871cb7a]{align-items:center;display:flex;height:inherit;position:relative;width:inherit}.chart-parent.column[data-v-5871cb7a]{flex-direction:column}.chart-parent.column .chart-container[data-v-5871cb7a]{height:80%;width:100%}.chart-parent.legend-row[data-v-5871cb7a]{flex-direction:row}.chart-parent.legend-row .chart-container[data-v-5871cb7a]{flex-grow:1;height:100%;width:85%}@media (max-width: 767px){.chart-parent.legend-row .chart-container[data-v-5871cb7a]{height:80%!important;width:100%!important}}@media (max-width: 767px){.chart-parent.legend-row[data-v-5871cb7a]{display:flex;flex-wrap:wrap}}.chart-parent .chart-container[data-v-5871cb7a]{position:relative}.chart-parent[data-v-5871cb7a]{height:auto;margin:0;padding:0;width:auto}.chart-parent .chart-container[data-v-5871cb7a]{margin:0;max-height:100px;max-width:100px;padding:0}.chart-parent .chart-totals-flex[data-v-5871cb7a]{align-items:center;display:flex;flex-direction:column;height:100px;justify-content:center;padding:24px 0 0;position:absolute;width:100px;z-index:2}.chart-parent .chart-totals-flex .metric-large[data-v-5871cb7a]{font-size:20px;font-weight:500;line-height:28px}.chart-parent .chart-totals-flex .metric-small[data-v-5871cb7a]{color:#6c7489;font-size:10px;font-weight:400;line-height:12px}.analytics-chart-shell[data-v-7d1a0034],.simple-chart-shell[data-v-7d1a0034]{border-radius:4px;display:flex;flex-direction:column}.analytics-chart-shell .chart-empty-state[data-v-7d1a0034],.simple-chart-shell .chart-empty-state[data-v-7d1a0034]{display:flex;flex-direction:column;height:100%;justify-content:center}.simple-chart-shell[data-v-7d1a0034]{margin:0;padding:0}.simple-chart-shell .chart-empty-state[data-v-7d1a0034]{display:flex;flex-direction:column;height:100px;justify-content:center;width:100px}.simple-chart-shell .chart-empty-state[data-v-7d1a0034] .k-empty-state-title-header{font-size:12px;line-height:16px;margin:0}.kong-ui-public-top-n-table[data-v-613dbb8f]{border-radius:8px!important}.kong-ui-public-top-n-table .top-n-card-title[data-v-613dbb8f]{font-size:16px}.kong-ui-public-top-n-table .top-n-card-description[data-v-613dbb8f]{color:#6c7489;font-size:12px;text-align:right}.kong-ui-public-top-n-table[data-v-613dbb8f] .k-card-actions{align-self:baseline;display:flex;line-height:22px}.kong-ui-public-top-n-table .top-n-table[data-v-613dbb8f]{display:flex;flex-direction:column;width:100%}.kong-ui-public-top-n-table .top-n-table .table-headings[data-v-613dbb8f]{font-size:14px;font-weight:600;line-height:24px}.kong-ui-public-top-n-table .top-n-table .table-row[data-v-613dbb8f]{align-self:stretch;border-bottom:1px solid #e0e4ea;display:flex;justify-content:space-between}.kong-ui-public-top-n-table .top-n-table .table-row[data-v-613dbb8f]:last-of-type{border-bottom:none}.kong-ui-public-top-n-table .top-n-table .column-1[data-v-613dbb8f]{padding:0 24px 12px 0}.kong-ui-public-top-n-table .top-n-table .column-2[data-v-613dbb8f]{flex:1;max-width:110px;padding:0 0 12px}.kong-ui-public-top-n-table .top-n-table .table-body .table-row[data-v-613dbb8f]:first-of-type{border-top:1px solid #e0e4ea}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f],.kong-ui-public-top-n-table .top-n-table .table-body .column-2[data-v-613dbb8f]{padding-top:12px}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f]{color:#3a3f51;font-size:14px}.kong-ui-public-top-n-table .top-n-table .table-body .column-1[data-v-613dbb8f] a{color:#0044f4;font-weight:700;text-decoration:none}.kong-ui-public-top-n-table.kong-card.border{border-radius:4px;padding:20px}.kong-ui-public-top-n-table.kong-card.border .k-card-header{align-items:baseline;margin-bottom:0!important}.kong-ui-public-top-n-table.kong-card.border .k-card-header .k-card-title{margin-bottom:16px}.kong-ui-public-top-n-table.kong-card.border .k-card-header .k-card-title h4{font-size:16px;font-weight:600}.metricscard-tooltip,.trafficcard.active .metricscard-tooltip{pointer-events:all}.metricscard[data-v-92346195]{display:flex;flex-direction:column;width:100%}@media (max-width: 767px){.metricscard[data-v-92346195]{max-width:none;width:auto}}.metricscard[data-v-92346195]:hover{border:none;text-decoration:none}.metricscard-title[data-v-92346195]{align-items:center;color:#000933;color:var(--kong-ui-metric-card-title, #000933);display:flex;flex-direction:row;font-size:14px;font-weight:500}.metricscard-title.sm[data-v-92346195]{font-size:12px}.metricscard-description[data-v-92346195]{color:#afb7c5;color:var(--kong-ui-metric-card-value, #afb7c5);font-size:12px;line-height:16px;margin-top:10px}.metricscard-icon[data-v-92346195]{margin-right:6px}.metricscard-value[data-v-92346195]{color:#000933;color:var(--kong-ui-metric-card-value, #000933);display:flex;flex-direction:row;font-weight:600;justify-content:space-between;line-height:32px;margin-top:16px}.metricscard-value.sm[data-v-92346195]{line-height:24px;margin-top:4px}.metricscard-valuetrend[data-v-92346195]{display:flex;flex-direction:column;row-gap:12px}.metricscard-valuetrend.is-compact[data-v-92346195]{align-items:center;flex-direction:row!important;justify-content:space-between;margin-top:0}.metricscard-trend[data-v-92346195]{align-items:center;column-gap:8px;display:flex}.metricscard-trend-change[data-v-92346195]{align-items:center;border-radius:4px;display:flex;flex-direction:row;font-size:12px;font-weight:600;padding:4px 8px}.metricscard-trend-change .kui-icon[data-v-92346195]{margin-right:4px}.metricscard-trend-change.positive[data-v-92346195]{background-color:#ecfffb;background-color:var(--kong-ui-metric-card-trend-bg-positive, #ecfffb);color:#007d60;color:var(--kong-ui-metric-card-trend-positive, #007d60)}.metricscard-trend-change.negative[data-v-92346195]{background-color:#ffe5e5;background-color:var(--kong-ui-metric-card-trend-bg-negative, #ffe5e5);color:#ad000e;color:var(--kong-ui-metric-card-trend-negative, #ad000e)}.metricscard-trend-change.neutral[data-v-92346195]{background-color:#e0e4ea;background-color:var(--kong-ui-metric-card-trend-bg-neutral, #e0e4ea);color:#52596e;color:var(--kong-ui-metric-card-trend-neutral, #52596e)}.metricscard-trend-range[data-v-92346195]{color:#000933;font-size:12px}.metricscard-tooltip[data-v-92346195]{display:inline-flex;margin:auto 0 auto 4px;vertical-align:middle}.metricscard-error[data-v-92346195]{align-items:center;color:#3a3f51;display:flex;flex-direction:row;font-size:12px;margin-top:8px}.metricscard-error .kong-icon-warning[data-v-92346195]{margin-right:12px}.metricscard.active .metricscard-tooltip[data-v-92346195]{pointer-events:all}.loading-tabs[data-v-f7eb9c40]{display:flex;flex-direction:column}.loading-tabs-large[data-v-f7eb9c40]{padding:4px;row-gap:12px;width:240px}.loading-tabs-small[data-v-f7eb9c40]{padding:2px;row-gap:8px;width:120px}.loading-tabs-small .box[data-v-f7eb9c40]{height:12px}@media (max-width: 767px){.loading-tabs[data-v-f7eb9c40]{width:auto}}.kong-ui-public-metric-card-container[data-v-80b51a84]{background-color:transparent;background-color:var(--kong-ui-metric-card-background, transparent);display:flex;flex-direction:row;justify-content:space-between;width:100%;column-gap:24px;row-gap:16px}@media (max-width: 767px){.kong-ui-public-metric-card-container[data-v-80b51a84]{column-gap:16px;row-gap:16px;flex-direction:column}}.kong-ui-public-metric-card-container.sm[data-v-80b51a84]{column-gap:0;row-gap:0}.kong-ui-public-metric-card-container .error-display[data-v-80b51a84]{align-items:center;display:flex;justify-content:center;margin:auto}.kong-ui-public-metric-card-container .error-display-icon[data-v-80b51a84]{display:flex}.kong-ui-public-metric-card-container .error-display-message[data-v-80b51a84]{color:#6c7489;font-size:14px;margin-left:12px}.analytics-chart[data-v-ec989cc0]{height:var(--134a876f)}.analytics-chart[data-v-1b9ab912]{height:var(--381b03f2)}.analytics-chart[data-v-efe3a03d]{height:var(--01f81c18)}.kong-ui-public-grid-layout[data-v-066610e8]{height:var(--bbf5361e);width:100%}.grid-cell[data-v-066610e8]{position:absolute}.grid-cell .tile-container[data-v-066610e8]{margin:20px}@media (max-width: 768px){.kong-ui-public-grid-layout[data-v-066610e8]{display:flex;flex-direction:column}.kong-ui-public-grid-layout .grid-cell[data-v-066610e8]{height:auto!important;left:auto!important;position:relative;top:auto!important;transform:none!important;width:auto!important}.kong-ui-public-grid-layout .grid-cell[data-v-066610e8]:not(:first-child){margin-top:20px}.kong-ui-public-grid-layout .empty-cell[data-v-066610e8]{display:none}}.kong-ui-public-dashboard-renderer .tile-container[data-v-e3197ec0]{border:1px solid #e0e4ea;border-radius:4px}
@@ -1,130 +1,35 @@
1
- import { ChartTypes } from '../types';
2
- import type { PropType } from 'vue';
1
+ import type { TileDefinition } from '../types';
3
2
  import '@kong-ui-public/analytics-chart/dist/style.css';
4
- declare const _default: import("vue").DefineComponent<{
5
- definition: {
6
- type: PropType<{
7
- query: {
8
- [x: string]: unknown;
9
- metrics?: ("request_count" | "request_per_minute" | "response_latency_p99" | "response_latency_p95" | "response_latency_p50" | "response_latency_average" | "upstream_latency_p99" | "upstream_latency_p95" | "upstream_latency_p50" | "upstream_latency_average" | "kong_latency_p99" | "kong_latency_p95" | "kong_latency_p50" | "kong_latency_average" | "response_size_p99" | "response_size_p95" | "response_size_p50" | "request_size_p99" | "request_size_p95" | "request_size_p50" | "request_size_average" | "response_size_average")[] | undefined;
10
- dimensions?: ("api_product" | "api_product_version" | "application" | "consumer" | "control_plane" | "control_plane_group" | "data_plane_node" | "gateway_service" | "route" | "status_code" | "status_code_grouped" | "time")[] | undefined;
11
- filters?: {
12
- [x: string]: unknown;
13
- type: "in" | "not_in" | "selector";
14
- values: string[];
15
- dimension: "api_product" | "api_product_version" | "application" | "consumer" | "control_plane" | "control_plane_group" | "data_plane_node" | "gateway_service" | "route" | "status_code" | "status_code_grouped" | "time";
16
- }[] | undefined;
17
- granularity_ms?: number | undefined;
18
- meta?: {
19
- [x: string]: unknown;
20
- } | undefined;
21
- time_range: {
22
- [x: string]: unknown;
23
- type: "relative";
24
- tz: string;
25
- time_range: "15m" | "1h" | "6h" | "12h" | "24h" | "7d" | "30d" | "current_week" | "current_month" | "previous_week" | "previous_month";
26
- } | {
27
- [x: string]: unknown;
28
- start?: string | undefined;
29
- end?: string | undefined;
30
- type: "absolute";
31
- tz: string;
32
- };
33
- };
34
- chart: {
35
- chartDatasetColors?: {
36
- [x: string]: string;
37
- } | string[] | undefined;
38
- syntheticsDataKey?: string | undefined;
39
- stacked?: boolean | undefined;
40
- showAnnotations?: boolean | undefined;
41
- type: ChartTypes.HorizontalBar | ChartTypes.VerticalBar;
42
- } | {
43
- syntheticsDataKey?: string | undefined;
44
- metricDisplay?: import("@kong-ui-public/analytics-chart").ChartMetricDisplay | undefined;
45
- reverseDataset?: boolean | undefined;
46
- numerator?: number | undefined;
47
- type: ChartTypes.Gauge;
48
- } | {
49
- chartDatasetColors?: {
50
- [x: string]: string;
51
- } | string[] | undefined;
52
- syntheticsDataKey?: string | undefined;
53
- stacked?: boolean | undefined;
54
- fill?: boolean | undefined;
55
- type: ChartTypes.TimeseriesLine;
56
- };
57
- }>;
58
- required: true;
59
- };
60
- height: {
61
- type: NumberConstructor;
62
- required: false;
63
- default: () => number;
64
- };
65
- }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
66
- definition: {
67
- type: PropType<{
68
- query: {
69
- [x: string]: unknown;
70
- metrics?: ("request_count" | "request_per_minute" | "response_latency_p99" | "response_latency_p95" | "response_latency_p50" | "response_latency_average" | "upstream_latency_p99" | "upstream_latency_p95" | "upstream_latency_p50" | "upstream_latency_average" | "kong_latency_p99" | "kong_latency_p95" | "kong_latency_p50" | "kong_latency_average" | "response_size_p99" | "response_size_p95" | "response_size_p50" | "request_size_p99" | "request_size_p95" | "request_size_p50" | "request_size_average" | "response_size_average")[] | undefined;
71
- dimensions?: ("api_product" | "api_product_version" | "application" | "consumer" | "control_plane" | "control_plane_group" | "data_plane_node" | "gateway_service" | "route" | "status_code" | "status_code_grouped" | "time")[] | undefined;
72
- filters?: {
73
- [x: string]: unknown;
74
- type: "in" | "not_in" | "selector";
75
- values: string[];
76
- dimension: "api_product" | "api_product_version" | "application" | "consumer" | "control_plane" | "control_plane_group" | "data_plane_node" | "gateway_service" | "route" | "status_code" | "status_code_grouped" | "time";
77
- }[] | undefined;
78
- granularity_ms?: number | undefined;
79
- meta?: {
80
- [x: string]: unknown;
81
- } | undefined;
82
- time_range: {
83
- [x: string]: unknown;
84
- type: "relative";
85
- tz: string;
86
- time_range: "15m" | "1h" | "6h" | "12h" | "24h" | "7d" | "30d" | "current_week" | "current_month" | "previous_week" | "previous_month";
87
- } | {
88
- [x: string]: unknown;
89
- start?: string | undefined;
90
- end?: string | undefined;
91
- type: "absolute";
92
- tz: string;
93
- };
94
- };
95
- chart: {
96
- chartDatasetColors?: {
97
- [x: string]: string;
98
- } | string[] | undefined;
99
- syntheticsDataKey?: string | undefined;
100
- stacked?: boolean | undefined;
101
- showAnnotations?: boolean | undefined;
102
- type: ChartTypes.HorizontalBar | ChartTypes.VerticalBar;
103
- } | {
104
- syntheticsDataKey?: string | undefined;
105
- metricDisplay?: import("@kong-ui-public/analytics-chart").ChartMetricDisplay | undefined;
106
- reverseDataset?: boolean | undefined;
107
- numerator?: number | undefined;
108
- type: ChartTypes.Gauge;
109
- } | {
110
- chartDatasetColors?: {
111
- [x: string]: string;
112
- } | string[] | undefined;
113
- syntheticsDataKey?: string | undefined;
114
- stacked?: boolean | undefined;
115
- fill?: boolean | undefined;
116
- type: ChartTypes.TimeseriesLine;
117
- };
118
- }>;
119
- required: true;
120
- };
121
- height: {
122
- type: NumberConstructor;
123
- required: false;
124
- default: () => number;
125
- };
126
- }>>, {
3
+ import '@kong-ui-public/analytics-metric-provider/dist/style.css';
4
+ declare const _default: import("vue").DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
5
+ definition: TileDefinition;
6
+ height?: number | undefined;
7
+ }>, {
8
+ height: number;
9
+ }>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<{
10
+ definition: TileDefinition;
11
+ height?: number | undefined;
12
+ }>, {
13
+ height: number;
14
+ }>>>, {
127
15
  height: number;
128
16
  }, {}>;
129
17
  export default _default;
18
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
19
+ type __VLS_TypePropsToRuntimeProps<T> = {
20
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
21
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
22
+ } : {
23
+ type: import('vue').PropType<T[K]>;
24
+ required: true;
25
+ };
26
+ };
27
+ type __VLS_WithDefaults<P, D> = {
28
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
29
+ default: D[K];
30
+ }> : P[K];
31
+ };
32
+ type __VLS_Prettify<T> = {
33
+ [K in keyof T]: T[K];
34
+ } & {};
130
35
  //# sourceMappingURL=DashboardTile.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardTile.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DashboardTile.vue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,KAAK,EACC,QAAQ,EACpB,MAAM,KAAK,CAAA;AAEZ,OAAO,gDAAgD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0GvD,wBAgBG"}
1
+ {"version":3,"file":"DashboardTile.vue.d.ts","sourceRoot":"","sources":["../../../src/components/DashboardTile.vue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAM9C,OAAO,gDAAgD,CAAA;AACvD,OAAO,0DAA0D,CAAA;;gBAyGnD,cAAc;;;;;gBAAd,cAAc;;;;;YACjB,MAAM;;AAPjB,wBASG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC;AAC9M,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAE1B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACxE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KACb,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AACN,KAAK,cAAc,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { RendererProps } from '../types';
2
+ declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<RendererProps<{
3
+ [x: string]: unknown;
4
+ description?: string | undefined;
5
+ longCardTitles?: boolean | undefined;
6
+ type: import("../types").ChartTypes.GoldenSignals;
7
+ }>>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<RendererProps<{
8
+ [x: string]: unknown;
9
+ description?: string | undefined;
10
+ longCardTitles?: boolean | undefined;
11
+ type: import("../types").ChartTypes.GoldenSignals;
12
+ }>>>>, {}, {}>;
13
+ export default _default;
14
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
15
+ type __VLS_TypePropsToRuntimeProps<T> = {
16
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
17
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
18
+ } : {
19
+ type: import('vue').PropType<T[K]>;
20
+ required: true;
21
+ };
22
+ };
23
+ //# sourceMappingURL=GoldenSignalsRenderer.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoldenSignalsRenderer.vue.d.ts","sourceRoot":"","sources":["../../../src/components/GoldenSignalsRenderer.vue.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,UAAU,CAAA;;;;;;;;;;;;AAmFhE,wBAMG;AACH,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,6BAA6B,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CAAE,CAAC"}
@@ -9,7 +9,8 @@ export declare enum ChartTypes {
9
9
  HorizontalBar = "horizontal_bar",
10
10
  VerticalBar = "vertical_bar",
11
11
  Gauge = "gauge",
12
- TimeseriesLine = "timeseries_line"
12
+ TimeseriesLine = "timeseries_line",
13
+ GoldenSignals = "golden_signals"
13
14
  }
14
15
  export declare const barChartSchema: {
15
16
  readonly type: "object";
@@ -96,6 +97,23 @@ export declare const gaugeChartSchema: {
96
97
  readonly additionalProperties: false;
97
98
  };
98
99
  export type GaugeChartOptions = FromSchema<typeof gaugeChartSchema>;
100
+ export declare const metricCardSchema: {
101
+ readonly type: "object";
102
+ readonly properties: {
103
+ readonly type: {
104
+ readonly type: "string";
105
+ readonly enum: readonly [ChartTypes.GoldenSignals];
106
+ };
107
+ readonly longCardTitles: {
108
+ readonly type: "boolean";
109
+ };
110
+ readonly description: {
111
+ readonly type: "string";
112
+ };
113
+ };
114
+ readonly required: readonly ["type"];
115
+ };
116
+ export type MetricCardOptions = FromSchema<typeof metricCardSchema>;
99
117
  export declare const exploreV4QuerySchema: {
100
118
  readonly type: "object";
101
119
  readonly description: "A query to launch at the API";
@@ -385,6 +403,21 @@ export declare const tileDefinitionSchema: {
385
403
  };
386
404
  readonly required: readonly ["type"];
387
405
  readonly additionalProperties: false;
406
+ }, {
407
+ readonly type: "object";
408
+ readonly properties: {
409
+ readonly type: {
410
+ readonly type: "string";
411
+ readonly enum: readonly [ChartTypes.GoldenSignals];
412
+ };
413
+ readonly longCardTitles: {
414
+ readonly type: "boolean";
415
+ };
416
+ readonly description: {
417
+ readonly type: "string";
418
+ };
419
+ };
420
+ readonly required: readonly ["type"];
388
421
  }];
389
422
  };
390
423
  };
@@ -617,6 +650,21 @@ export declare const tileConfigSchema: {
617
650
  };
618
651
  readonly required: readonly ["type"];
619
652
  readonly additionalProperties: false;
653
+ }, {
654
+ readonly type: "object";
655
+ readonly properties: {
656
+ readonly type: {
657
+ readonly type: "string";
658
+ readonly enum: readonly [ChartTypes.GoldenSignals];
659
+ };
660
+ readonly longCardTitles: {
661
+ readonly type: "boolean";
662
+ };
663
+ readonly description: {
664
+ readonly type: "string";
665
+ };
666
+ };
667
+ readonly required: readonly ["type"];
620
668
  }];
621
669
  };
622
670
  };
@@ -857,6 +905,21 @@ export declare const dashboardConfigSchema: {
857
905
  };
858
906
  readonly required: readonly ["type"];
859
907
  readonly additionalProperties: false;
908
+ }, {
909
+ readonly type: "object";
910
+ readonly properties: {
911
+ readonly type: {
912
+ readonly type: "string";
913
+ readonly enum: readonly [ChartTypes.GoldenSignals];
914
+ };
915
+ readonly longCardTitles: {
916
+ readonly type: "boolean";
917
+ };
918
+ readonly description: {
919
+ readonly type: "string";
920
+ };
921
+ };
922
+ readonly required: readonly ["type"];
860
923
  }];
861
924
  };
862
925
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-renderer-types.d.ts","sourceRoot":"","sources":["../../../src/types/dashboard-renderer-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-renderer-types.d.ts","sourceRoot":"","sources":["../../../src/types/dashboard-renderer-types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/dashboard-renderer",
3
- "version": "0.5.10",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "main": "./dist/dashboard-renderer.umd.js",
6
6
  "module": "./dist/dashboard-renderer.es.js",
@@ -27,9 +27,10 @@
27
27
  "swrv": "^1.0.4",
28
28
  "vue": "^3.4.13",
29
29
  "@kong-ui-public/analytics-chart": "^2.1.1",
30
+ "@kong-ui-public/analytics-metric-provider": "^4.0.1",
30
31
  "@kong-ui-public/analytics-utilities": "^1.1.1",
31
- "@kong-ui-public/sandbox-layout": "^2.0.33",
32
- "@kong-ui-public/i18n": "^2.1.2"
32
+ "@kong-ui-public/i18n": "^2.1.2",
33
+ "@kong-ui-public/sandbox-layout": "^2.0.33"
33
34
  },
34
35
  "repository": {
35
36
  "type": "git",
@@ -53,6 +54,7 @@
53
54
  "swrv": "^1.0.4",
54
55
  "vue": ">= 3.3.13 < 4",
55
56
  "@kong-ui-public/analytics-chart": "^2.1.1",
57
+ "@kong-ui-public/analytics-metric-provider": "^4.0.1",
56
58
  "@kong-ui-public/analytics-utilities": "^1.1.1",
57
59
  "@kong-ui-public/i18n": "^2.1.2"
58
60
  },