{"version":3,"file":"js/app.6fa125a4.js","mappings":"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","sources":["webpack://uptrace-vue/./src/App.vue","webpack://uptrace-vue/./src/use/local-storage.ts","webpack://uptrace-vue/./src/plugins/vuetify.ts","webpack://uptrace-vue/./src/use/store.ts","webpack://uptrace-vue/./src/use/dark-mode.ts","webpack://uptrace-vue/./src/use/force-reload.ts","webpack://uptrace-vue/./src/use/snackbar.ts","webpack://uptrace-vue/./src/util/string.ts","webpack://uptrace-vue/./src/use/promise.ts","webpack://uptrace-vue/./src/use/axios.ts","webpack://uptrace-vue/./src/use/watch-axios.ts","webpack://uptrace-vue/./src/org/use-users.ts","webpack://uptrace-vue/./src/org/views/NotFoundPage.vue","webpack://uptrace-vue/./src/components/HelpLinks.vue","webpack://uptrace-vue/./src/components/HelpLinks.vue?f063","webpack://uptrace-vue/./src/components/HelpLinks.vue?0933","webpack://uptrace-vue/./src/components/HelpLinks.vue?fb1b","webpack://uptrace-vue/./src/org/views/NotFoundPage.vue?e6be","webpack://uptrace-vue/./src/org/views/NotFoundPage.vue?121f","webpack://uptrace-vue/./src/org/views/NotFoundPage.vue?53ed","webpack://uptrace-vue/./src/org/views/Project.vue","webpack://uptrace-vue/./src/org/use-projects.ts","webpack://uptrace-vue/./src/org/views/Project.vue?886b","webpack://uptrace-vue/./src/org/views/Project.vue?dec4","webpack://uptrace-vue/./src/org/views/Project.vue?6299","webpack://uptrace-vue/./src/org/views/ProjectSettings.vue","webpack://uptrace-vue/./src/org/views/ProjectSettings.vue?e9d6","webpack://uptrace-vue/./src/org/views/ProjectSettings.vue?a6a4","webpack://uptrace-vue/./src/org/views/ProjectSettings.vue?3116","webpack://uptrace-vue/./src/org/views/ProjectDsn.vue","webpack://uptrace-vue/./src/org/views/ProjectDsn.vue?992b","webpack://uptrace-vue/./src/org/views/ProjectDsn.vue?8fe5","webpack://uptrace-vue/./src/org/views/ProjectDsn.vue?8725","webpack://uptrace-vue/./src/alerting/views/Alerting.vue","webpack://uptrace-vue/./src/alerting/views/Alerting.vue?b648","webpack://uptrace-vue/./src/alerting/views/Alerting.vue?b962","webpack://uptrace-vue/./src/alerting/views/Alerting.vue?cdad","webpack://uptrace-vue/./src/alerting/views/AlertList.vue","webpack://uptrace-vue/./src/use/pager.ts","webpack://uptrace-vue/./src/alerting/use-alerts.ts","webpack://uptrace-vue/./src/use/ref-debounced.ts","webpack://uptrace-vue/./src/use/faceted-search.ts","webpack://uptrace-vue/./src/use/order.ts","webpack://uptrace-vue/./src/components/ForceReloadBtn.vue","webpack://uptrace-vue/./src/components/ForceReloadBtn.vue?e09d","webpack://uptrace-vue/./src/components/ForceReloadBtn.vue?9d1c","webpack://uptrace-vue/./src/components/ForceReloadBtn.vue?6dd9","webpack://uptrace-vue/./src/alerting/AlertsSidebar.vue","webpack://uptrace-vue/./src/components/SearchFacets.vue","webpack://uptrace-vue/./src/components/SearchFacetList.vue","webpack://uptrace-vue/./src/components/SearchFacetList.vue?0710","webpack://uptrace-vue/./src/components/SearchFacetList.vue?557d","webpack://uptrace-vue/./src/components/SearchFacetList.vue?1277","webpack://uptrace-vue/./src/components/SearchFacets.vue?430a","webpack://uptrace-vue/./src/components/SearchFacets.vue?0cff","webpack://uptrace-vue/./src/components/SearchFacets.vue?6232","webpack://uptrace-vue/./src/alerting/AlertsSidebar.vue?e121","webpack://uptrace-vue/./src/alerting/AlertsSidebar.vue?e601","webpack://uptrace-vue/./src/alerting/AlertsSidebar.vue?d5ec","webpack://uptrace-vue/./src/alerting/AlertSelection.vue","webpack://uptrace-vue/./src/use/confirm.ts","webpack://uptrace-vue/./src/alerting/AlertSelection.vue?7d01","webpack://uptrace-vue/./src/alerting/AlertSelection.vue?7dbc","webpack://uptrace-vue/./src/alerting/AlertSelection.vue?e5e2","webpack://uptrace-vue/./src/alerting/AlertOrderPicker.vue","webpack://uptrace-vue/./src/alerting/AlertOrderPicker.vue?fca0","webpack://uptrace-vue/./src/alerting/AlertOrderPicker.vue?7808","webpack://uptrace-vue/./src/alerting/AlertOrderPicker.vue?d32d","webpack://uptrace-vue/./src/alerting/AlertsTable.vue","webpack://uptrace-vue/./src/alerting/AlertsTableRow.vue","webpack://uptrace-vue/./src/alerting/MetricMonitorTrigger.vue","webpack://uptrace-vue/./src/alerting/MetricMonitorTrigger.vue?470f","webpack://uptrace-vue/./src/alerting/MetricMonitorTrigger.vue?864f","webpack://uptrace-vue/./src/alerting/MetricMonitorTrigger.vue?e1ae","webpack://uptrace-vue/./src/alerting/AlertSparklineError.vue","webpack://uptrace-vue/./src/tracing/use-explore-spans.ts","webpack://uptrace-vue/./src/components/SparklineChart.vue","webpack://uptrace-vue/./src/components/EChart.vue","webpack://uptrace-vue/./src/alerting/AnnotationAttrs.vue","webpack://uptrace-vue/./src/alerting/AnnotationAttrs.vue?bc29","webpack://uptrace-vue/./src/alerting/AnnotationAttrs.vue?956b","webpack://uptrace-vue/./src/alerting/AnnotationAttrs.vue?0540","webpack://uptrace-vue/./src/components/EChart.vue?3a80","webpack://uptrace-vue/./src/components/EChart.vue?7b09","webpack://uptrace-vue/./src/models/otel.ts","webpack://uptrace-vue/./src/util/fmt/unit.ts","webpack://uptrace-vue/./src/components/EChart.vue?d188","webpack://uptrace-vue/./src/util/fmt/util.ts","webpack://uptrace-vue/./src/util/fmt/num.ts","webpack://uptrace-vue/./src/util/fmt/date.ts","webpack://uptrace-vue/./src/util/fmt/duration.ts","webpack://uptrace-vue/./src/util/fmt/bytes.ts","webpack://uptrace-vue/./src/util/fmt/fmt.ts","webpack://uptrace-vue/./src/util/chart/custom-dark.ts","webpack://uptrace-vue/./src/util/chart/index.ts","webpack://uptrace-vue/./src/components/SparklineChart.vue?d31b","webpack://uptrace-vue/./src/components/SparklineChart.vue?2f10","webpack://uptrace-vue/./src/components/SparklineChart.vue?efe7","webpack://uptrace-vue/./src/alerting/AlertSparklineError.vue?742b","webpack://uptrace-vue/./src/alerting/AlertSparklineError.vue?b66d","webpack://uptrace-vue/./src/alerting/AlertSparklineError.vue?fa9a","webpack://uptrace-vue/./src/alerting/AlertSparklineMetric.vue","webpack://uptrace-vue/./src/util/colorscheme.ts","webpack://uptrace-vue/./src/metrics/types.ts","webpack://uptrace-vue/./src/metrics/use-query.ts","webpack://uptrace-vue/./src/alerting/AlertSparklineMetric.vue?f64e","webpack://uptrace-vue/./src/alerting/AlertSparklineMetric.vue?bcf9","webpack://uptrace-vue/./src/alerting/AlertSparklineMetric.vue?e183","webpack://uptrace-vue/./src/alerting/AlertChips.vue","webpack://uptrace-vue/./src/alerting/AlertChips.vue?2d63","webpack://uptrace-vue/./src/alerting/AlertChips.vue?4d0b","webpack://uptrace-vue/./src/alerting/AlertChips.vue?93e5","webpack://uptrace-vue/./src/alerting/AlertsTableRow.vue?f1ab","webpack://uptrace-vue/./src/alerting/AlertsTableRow.vue?0620","webpack://uptrace-vue/./src/alerting/AlertsTableRow.vue?e8d6","webpack://uptrace-vue/./src/alerting/AlertsTable.vue?ebb8","webpack://uptrace-vue/./src/alerting/AlertsTable.vue?5454","webpack://uptrace-vue/./src/alerting/AlertsTable.vue?3c75","webpack://uptrace-vue/./src/alerting/AlertCard.vue","webpack://uptrace-vue/./src/components/date/FixedDateRangePicker.vue","webpack://uptrace-vue/./src/components/date/PeriodPickerMenu.vue","webpack://uptrace-vue/./src/components/date/PeriodPickerMenu.vue?3e88","webpack://uptrace-vue/./src/components/date/PeriodPickerMenu.vue?8262","webpack://uptrace-vue/./src/components/date/PeriodPickerMenu.vue?7459","webpack://uptrace-vue/./src/models/period.ts","webpack://uptrace-vue/./src/components/date/FixedDateRangePicker.vue?74a9","webpack://uptrace-vue/./src/components/date/FixedDateRangePicker.vue?349b","webpack://uptrace-vue/./src/components/date/FixedDateRangePicker.vue?7f31","webpack://uptrace-vue/./src/alerting/AlertCardSpan.vue","webpack://uptrace-vue/./src/tracing/use-spans.ts","webpack://uptrace-vue/./src/tracing/SpanBodyCard.vue","webpack://uptrace-vue/./src/use/uql.ts","webpack://uptrace-vue/./src/org/use-annotations.ts","webpack://uptrace-vue/./src/tracing/NewMonitorMenu.vue","webpack://uptrace-vue/./src/metrics/use-metrics.ts","webpack://uptrace-vue/./src/tracing/NewMonitorMenu.vue?6ed3","webpack://uptrace-vue/./src/tracing/NewMonitorMenu.vue?46f1","webpack://uptrace-vue/./src/tracing/NewMonitorMenu.vue?a3d6","webpack://uptrace-vue/./src/tracing/SpanAttrs.vue","webpack://uptrace-vue/./src/tracing/SpanAttrsTable.vue","webpack://uptrace-vue/./src/tracing/SpanAttrsTableRow.vue","webpack://uptrace-vue/./src/tracing/SpanAttrValue.vue","webpack://uptrace-vue/./src/tracing/SpanAttrValue.vue?3fbf","webpack://uptrace-vue/./src/tracing/SpanAttrValue.vue?e9fc","webpack://uptrace-vue/./src/tracing/SpanAttrValue.vue?3bcd","webpack://uptrace-vue/./src/tracing/SpanAttrValues.vue","webpack://uptrace-vue/./src/tracing/SpanAttrValues.vue?a273","webpack://uptrace-vue/./src/tracing/SpanAttrValues.vue?2ec7","webpack://uptrace-vue/./src/tracing/SpanAttrValues.vue?5a31","webpack://uptrace-vue/./src/tracing/SpanAttrsTableRow.vue?0794","webpack://uptrace-vue/./src/tracing/SpanAttrsTableRow.vue?9f7c","webpack://uptrace-vue/./src/tracing/SpanAttrsTableRow.vue?f3a8","webpack://uptrace-vue/./src/tracing/SpanAttrsTable.vue?c808","webpack://uptrace-vue/./src/tracing/SpanAttrsTable.vue?1030","webpack://uptrace-vue/./src/tracing/SpanAttrsTable.vue?6485","webpack://uptrace-vue/./src/models/key-prefixes.ts","webpack://uptrace-vue/./src/util/json.ts","webpack://uptrace-vue/./src/tracing/SpanAttrs.vue?a852","webpack://uptrace-vue/./src/tracing/SpanAttrs.vue?758a","webpack://uptrace-vue/./src/tracing/SpanAttrs.vue?d7ba","webpack://uptrace-vue/./src/tracing/EventPanels.vue","webpack://uptrace-vue/./src/tracing/EventPanelContent.vue","webpack://uptrace-vue/./src/tracing/use-percentiles.ts","webpack://uptrace-vue/./src/components/EventRateChart.vue","webpack://uptrace-vue/./src/components/EventRateChart.vue?2802","webpack://uptrace-vue/./src/components/EventRateChart.vue?34c9","webpack://uptrace-vue/./src/components/EventRateChart.vue?29eb","webpack://uptrace-vue/./src/tracing/EventPanelContent.vue?c9fe","webpack://uptrace-vue/./src/tracing/EventPanelContent.vue?393f","webpack://uptrace-vue/./src/tracing/EventPanelContent.vue?4a4b","webpack://uptrace-vue/./src/tracing/EventPanels.vue?60e3","webpack://uptrace-vue/./src/tracing/EventPanels.vue?bbf0","webpack://uptrace-vue/./src/tracing/EventPanels.vue?180b","webpack://uptrace-vue/./src/tracing/GroupInfoCard.vue","webpack://uptrace-vue/./src/tracing/use-groups.ts","webpack://uptrace-vue/./src/components/PercentilesChartLazy.vue","webpack://uptrace-vue/./src/components/PercentilesChart.vue","webpack://uptrace-vue/./src/components/PercentilesChart.vue?82c9","webpack://uptrace-vue/./src/components/PercentilesChart.vue?e352","webpack://uptrace-vue/./src/components/PercentilesChart.vue?307f","webpack://uptrace-vue/./src/components/PercentilesChartLazy.vue?b2dd","webpack://uptrace-vue/./src/components/PercentilesChartLazy.vue?2ad0","webpack://uptrace-vue/./src/components/PercentilesChartLazy.vue?1259","webpack://uptrace-vue/./src/components/UqlCardReadonly.vue","webpack://uptrace-vue/./src/components/UptraceQueryChip.vue","webpack://uptrace-vue/./src/components/UptraceQueryChip.vue?5855","webpack://uptrace-vue/./src/components/UptraceQueryChip.vue?132c","webpack://uptrace-vue/./src/components/UptraceQueryChip.vue?451f","webpack://uptrace-vue/./src/components/UqlCardReadonly.vue?1555","webpack://uptrace-vue/./src/components/UqlCardReadonly.vue?1948","webpack://uptrace-vue/./src/components/UqlCardReadonly.vue?93a1","webpack://uptrace-vue/./src/tracing/PagedGroupsCardLazy.vue","webpack://uptrace-vue/./src/tracing/PagedGroupsCardLazy.vue?e659","webpack://uptrace-vue/./src/tracing/PagedGroupsCardLazy.vue?1a44","webpack://uptrace-vue/./src/tracing/PagedGroupsCardLazy.vue?4b34","webpack://uptrace-vue/./src/tracing/GroupInfoCard.vue?f0fc","webpack://uptrace-vue/./src/tracing/GroupInfoCard.vue?bfdc","webpack://uptrace-vue/./src/tracing/GroupInfoCard.vue?f569","webpack://uptrace-vue/./src/tracing/SpanBodyCard.vue?773e","webpack://uptrace-vue/./src/tracing/SpanBodyCard.vue?301e","webpack://uptrace-vue/./src/tracing/SpanBodyCard.vue?2f5b","webpack://uptrace-vue/./src/alerting/AlertCardSpan.vue?7366","webpack://uptrace-vue/./src/alerting/AlertCardSpan.vue?88b8","webpack://uptrace-vue/./src/alerting/AlertCardSpan.vue?1b90","webpack://uptrace-vue/./src/alerting/AlertCardMetric.vue","webpack://uptrace-vue/./src/metrics/MetricChart.vue","webpack://uptrace-vue/./src/metrics/MetricChart.vue?c025","webpack://uptrace-vue/./src/metrics/MetricChart.vue?f7fe","webpack://uptrace-vue/./src/alerting/types.ts","webpack://uptrace-vue/./src/metrics/MetricChart.vue?9a76","webpack://uptrace-vue/./src/alerting/AlertCardMetric.vue?7297","webpack://uptrace-vue/./src/alerting/AlertCardMetric.vue?2a30","webpack://uptrace-vue/./src/alerting/AlertCardMetric.vue?3c76","webpack://uptrace-vue/./src/alerting/AlertCard.vue?c292","webpack://uptrace-vue/./src/alerting/AlertCard.vue?431c","webpack://uptrace-vue/./src/alerting/AlertCard.vue?1da1","webpack://uptrace-vue/./src/alerting/views/AlertList.vue?be73","webpack://uptrace-vue/./src/alerting/views/AlertList.vue?f03f","webpack://uptrace-vue/./src/alerting/views/AlertList.vue?9a02","webpack://uptrace-vue/./src/alerting/views/AlertShow.vue","webpack://uptrace-vue/./src/alerting/views/AlertShow.vue?7aad","webpack://uptrace-vue/./src/alerting/views/AlertShow.vue?22dc","webpack://uptrace-vue/./src/alerting/views/AlertShow.vue?3ecd","webpack://uptrace-vue/./src/alerting/views/MonitorList.vue","webpack://uptrace-vue/./src/alerting/use-monitors.ts","webpack://uptrace-vue/./src/alerting/MonitorNewMenu.vue","webpack://uptrace-vue/./src/components/DialogCard.vue","webpack://uptrace-vue/./src/components/DialogCard.vue?b0fb","webpack://uptrace-vue/./src/components/DialogCard.vue?9dfb","webpack://uptrace-vue/./src/components/DialogCard.vue?9f2f","webpack://uptrace-vue/./src/alerting/MonitorYamlForm.vue","webpack://uptrace-vue/./src/util/validation.ts","webpack://uptrace-vue/./src/alerting/MonitorYamlForm.vue?380d","webpack://uptrace-vue/./src/alerting/MonitorYamlForm.vue?8409","webpack://uptrace-vue/./src/alerting/MonitorYamlForm.vue?9f9c","webpack://uptrace-vue/./src/alerting/MonitorNewMenu.vue?d136","webpack://uptrace-vue/./src/alerting/MonitorNewMenu.vue?cb7e","webpack://uptrace-vue/./src/alerting/MonitorNewMenu.vue?28f2","webpack://uptrace-vue/./src/alerting/MonitorsTable.vue","webpack://uptrace-vue/./src/alerting/MonitorsTableRow.vue","webpack://uptrace-vue/./src/alerting/MonitorTypeIcon.vue","webpack://uptrace-vue/./src/alerting/MonitorTypeIcon.vue?ba1c","webpack://uptrace-vue/./src/alerting/MonitorTypeIcon.vue?959a","webpack://uptrace-vue/./src/alerting/MonitorTypeIcon.vue?6c43","webpack://uptrace-vue/./src/alerting/MonitorStateAvatar.vue","webpack://uptrace-vue/./src/alerting/MonitorStateAvatar.vue?55b1","webpack://uptrace-vue/./src/alerting/MonitorStateAvatar.vue?92f8","webpack://uptrace-vue/./src/alerting/MonitorStateAvatar.vue?7c06","webpack://uptrace-vue/./src/alerting/MonitorYamlDialog.vue","webpack://uptrace-vue/./src/alerting/MonitorYamlDialog.vue?9505","webpack://uptrace-vue/./src/alerting/MonitorYamlDialog.vue?bdd1","webpack://uptrace-vue/./src/alerting/MonitorYamlDialog.vue?9139","webpack://uptrace-vue/./src/alerting/MonitorsTableRow.vue?a0d9","webpack://uptrace-vue/./src/alerting/MonitorsTableRow.vue?d261","webpack://uptrace-vue/./src/alerting/MonitorsTableRow.vue?220d","webpack://uptrace-vue/./src/alerting/MonitorsTable.vue?ca90","webpack://uptrace-vue/./src/alerting/MonitorsTable.vue?94ec","webpack://uptrace-vue/./src/alerting/MonitorsTable.vue?58f7","webpack://uptrace-vue/./src/alerting/MonitorStateCounts.vue","webpack://uptrace-vue/./src/alerting/MonitorStateCounts.vue?2c3c","webpack://uptrace-vue/./src/alerting/MonitorStateCounts.vue?0f70","webpack://uptrace-vue/./src/alerting/MonitorStateCounts.vue?3d66","webpack://uptrace-vue/./src/alerting/views/MonitorList.vue?e054","webpack://uptrace-vue/./src/alerting/views/MonitorList.vue?cba0","webpack://uptrace-vue/./src/alerting/views/MonitorList.vue?16af","webpack://uptrace-vue/./src/alerting/views/MonitorMetric.vue","webpack://uptrace-vue/./src/components/date/DateRangePicker.vue","webpack://uptrace-vue/./src/components/date/DateRangePickerMenu.vue","webpack://uptrace-vue/./src/components/date/CustomDurationPicker.vue","webpack://uptrace-vue/./src/components/date/CustomDurationPicker.vue?8d2f","webpack://uptrace-vue/./src/components/date/CustomDurationPicker.vue?933c","webpack://uptrace-vue/./src/components/date/CustomDurationPicker.vue?5fa3","webpack://uptrace-vue/./src/components/date/CustomDateRangePicker.vue","webpack://uptrace-vue/./src/components/date/DateTextInput.vue","webpack://uptrace-vue/./src/components/date/DateTextInput.vue?e639","webpack://uptrace-vue/./src/components/date/DateTextInput.vue?f2e0","webpack://uptrace-vue/./src/components/date/DateRange.vue","webpack://uptrace-vue/./src/alerting/use-notif-channels.ts","webpack://uptrace-vue/./src/components/date/DateTextInput.vue?e528","webpack://uptrace-vue/./src/components/date/CustomDateRangePicker.vue?d6a8","webpack://uptrace-vue/./src/components/date/CustomDateRangePicker.vue?2e51","webpack://uptrace-vue/./src/components/date/CustomDateRangePicker.vue?9c52","webpack://uptrace-vue/./src/components/date/DateRange.vue?0d23","webpack://uptrace-vue/./src/components/date/DateRange.vue?60f8","webpack://uptrace-vue/./src/components/date/DateRangePickerMenu.vue?b45f","webpack://uptrace-vue/./src/components/date/DateRangePickerMenu.vue?e823","webpack://uptrace-vue/./src/components/date/DateRangePickerMenu.vue?7a01","webpack://uptrace-vue/./src/components/date/DateRangePicker.vue?2b3c","webpack://uptrace-vue/./src/components/date/DateRangePicker.vue?0b9e","webpack://uptrace-vue/./src/components/date/DateRangePicker.vue?64b2","webpack://uptrace-vue/./src/alerting/MonitorMetricForm.vue","webpack://uptrace-vue/./src/components/UnitPicker.vue","webpack://uptrace-vue/./src/components/BtnSelectMenu.vue","webpack://uptrace-vue/./src/components/BtnSelectMenu.vue?1a5d","webpack://uptrace-vue/./src/components/BtnSelectMenu.vue?8636","webpack://uptrace-vue/./src/components/BtnSelectMenu.vue?afd5","webpack://uptrace-vue/./src/components/UnitPicker.vue?b5f1","webpack://uptrace-vue/./src/components/UnitPicker.vue?d978","webpack://uptrace-vue/./src/components/UnitPicker.vue?6a8a","webpack://uptrace-vue/./src/alerting/MonitorMetricFormPanes.vue","webpack://uptrace-vue/./src/alerting/MonitorMetricFormPanes.vue?c7ac","webpack://uptrace-vue/./src/alerting/MonitorMetricFormPanes.vue?3f5b","webpack://uptrace-vue/./src/alerting/MonitorMetricFormPanes.vue?9f9c","webpack://uptrace-vue/./src/alerting/MonitorMetricFormOptions.vue","webpack://uptrace-vue/./src/components/SinglePanel.vue","webpack://uptrace-vue/./src/components/SinglePanel.vue?42c2","webpack://uptrace-vue/./src/components/SinglePanel.vue?6b53","webpack://uptrace-vue/./src/components/SinglePanel.vue?fb5f","webpack://uptrace-vue/./src/components/PanelSection.vue","webpack://uptrace-vue/./src/components/PanelSection.vue?3f1f","webpack://uptrace-vue/./src/components/PanelSection.vue?4434","webpack://uptrace-vue/./src/components/PanelSection.vue?c53e","webpack://uptrace-vue/./src/alerting/MonitorMetricFormOptions.vue?9696","webpack://uptrace-vue/./src/alerting/MonitorMetricFormOptions.vue?5cda","webpack://uptrace-vue/./src/alerting/MonitorMetricFormOptions.vue?b7e1","webpack://uptrace-vue/./src/metrics/MetricsPicker.vue","webpack://uptrace-vue/./src/use/datasource.ts","webpack://uptrace-vue/./src/metrics/MetricPicker.vue","webpack://uptrace-vue/./src/metrics/MetricPicker.vue?9c8a","webpack://uptrace-vue/./src/metrics/MetricPicker.vue?c2fd","webpack://uptrace-vue/./src/metrics/MetricPicker.vue?c48c","webpack://uptrace-vue/./src/metrics/MetricsPicker.vue?22d3","webpack://uptrace-vue/./src/metrics/MetricsPicker.vue?73d7","webpack://uptrace-vue/./src/metrics/MetricsPicker.vue?44a9","webpack://uptrace-vue/./src/metrics/query/MetricsQueryBuilder.vue","webpack://uptrace-vue/./src/components/UptraceQuery.vue","webpack://uptrace-vue/./src/components/UptraceQuery.vue?e300","webpack://uptrace-vue/./src/components/UptraceQuery.vue?c934","webpack://uptrace-vue/./src/components/facet/types.ts","webpack://uptrace-vue/./src/components/UptraceQuery.vue?d0f2","webpack://uptrace-vue/./src/metrics/query/DashGroupingMenu.vue","webpack://uptrace-vue/./src/components/SearchableList.vue","webpack://uptrace-vue/./src/components/SearchableList.vue?1219","webpack://uptrace-vue/./src/components/SearchableList.vue?dfe1","webpack://uptrace-vue/./src/components/SearchableList.vue?aa2d","webpack://uptrace-vue/./src/metrics/query/DashGroupingMenu.vue?0114","webpack://uptrace-vue/./src/metrics/query/DashGroupingMenu.vue?dd5b","webpack://uptrace-vue/./src/metrics/query/DashGroupingMenu.vue?1a9e","webpack://uptrace-vue/./src/metrics/query/DashWhereBtn.vue","webpack://uptrace-vue/./src/components/facet/FacetList.vue","webpack://uptrace-vue/./src/components/facet/FacetCategory.vue","webpack://uptrace-vue/./src/components/facet/use-pinned-facets.ts","webpack://uptrace-vue/./src/components/facet/lexer.ts","webpack://uptrace-vue/./src/components/facet/FacetItem.vue","webpack://uptrace-vue/./src/components/facet/FacetItemBody.vue","webpack://uptrace-vue/./src/components/facet/FacetItemBody.vue?9177","webpack://uptrace-vue/./src/components/facet/FacetItemBody.vue?0b76","webpack://uptrace-vue/./src/components/facet/FacetItemBody.vue?63cc","webpack://uptrace-vue/./src/components/facet/FacetItem.vue?8d1d","webpack://uptrace-vue/./src/components/facet/FacetItem.vue?3c29","webpack://uptrace-vue/./src/components/facet/FacetItem.vue?c55c","webpack://uptrace-vue/./src/components/facet/FacetCategory.vue?afa0","webpack://uptrace-vue/./src/components/facet/FacetCategory.vue?f670","webpack://uptrace-vue/./src/components/facet/FacetCategory.vue?6251","webpack://uptrace-vue/./src/components/facet/FacetList.vue?71b5","webpack://uptrace-vue/./src/components/facet/FacetList.vue?5bd1","webpack://uptrace-vue/./src/components/facet/FacetList.vue?8ad5","webpack://uptrace-vue/./src/metrics/query/DashWhereBtn.vue?2a40","webpack://uptrace-vue/./src/metrics/query/DashWhereBtn.vue?f4c6","webpack://uptrace-vue/./src/metrics/query/DashWhereBtn.vue?9553","webpack://uptrace-vue/./src/metrics/query/MetricsAggMenu.vue","webpack://uptrace-vue/./src/metrics/query/MetricsAggMenu.vue?8d28","webpack://uptrace-vue/./src/metrics/query/MetricsAggMenu.vue?6cf3","webpack://uptrace-vue/./src/metrics/query/MetricsAggMenu.vue?35d0","webpack://uptrace-vue/./src/metrics/query/QueryHelpDialog.vue","webpack://uptrace-vue/./src/metrics/CheatsheetCard.vue","webpack://uptrace-vue/./src/components/QueryExample.vue","webpack://uptrace-vue/./src/components/QueryExample.vue?8992","webpack://uptrace-vue/./src/components/QueryExample.vue?28ae","webpack://uptrace-vue/./src/components/QueryExample.vue?7bee","webpack://uptrace-vue/./src/metrics/CheatsheetCard.vue?e8aa","webpack://uptrace-vue/./src/metrics/CheatsheetCard.vue?2b74","webpack://uptrace-vue/./src/metrics/CheatsheetCard.vue?f723","webpack://uptrace-vue/./src/metrics/query/QueryHelpDialog.vue?d22e","webpack://uptrace-vue/./src/metrics/query/QueryHelpDialog.vue?480c","webpack://uptrace-vue/./src/metrics/query/QueryHelpDialog.vue?dc94","webpack://uptrace-vue/./src/metrics/query/MetricsQueryBuilder.vue?5cc6","webpack://uptrace-vue/./src/metrics/query/MetricsQueryBuilder.vue?82cd","webpack://uptrace-vue/./src/metrics/query/MetricsQueryBuilder.vue?87cb","webpack://uptrace-vue/./src/metrics/ChartLegendTable.vue","webpack://uptrace-vue/./src/metrics/ChartLegendTable.vue?58ac","webpack://uptrace-vue/./src/metrics/ChartLegendTable.vue?6fa3","webpack://uptrace-vue/./src/metrics/ChartLegendTable.vue?10a9","webpack://uptrace-vue/./src/models/eventbus.ts","webpack://uptrace-vue/./src/alerting/MonitorMetricForm.vue?5fb1","webpack://uptrace-vue/./src/alerting/MonitorMetricForm.vue?7ab6","webpack://uptrace-vue/./src/alerting/MonitorMetricForm.vue?5d80","webpack://uptrace-vue/./src/alerting/views/MonitorMetric.vue?5a5f","webpack://uptrace-vue/./src/alerting/views/MonitorMetric.vue?e780","webpack://uptrace-vue/./src/use/attr-matcher.ts","webpack://uptrace-vue/./src/alerting/views/MonitorMetric.vue?c77c","webpack://uptrace-vue/./src/alerting/views/MonitorErrorShow.vue","webpack://uptrace-vue/./src/alerting/MonitorErrorForm.vue","webpack://uptrace-vue/./src/components/AttrMatcher.vue","webpack://uptrace-vue/./src/components/AttrMatcher.vue?323c","webpack://uptrace-vue/./src/components/AttrMatcher.vue?25ff","webpack://uptrace-vue/./src/components/AttrMatcher.vue?3432","webpack://uptrace-vue/./src/alerting/MonitorErrorForm.vue?f0bf","webpack://uptrace-vue/./src/alerting/MonitorErrorForm.vue?2302","webpack://uptrace-vue/./src/alerting/MonitorErrorForm.vue?a0f1","webpack://uptrace-vue/./src/alerting/views/MonitorErrorShow.vue?38b2","webpack://uptrace-vue/./src/alerting/views/MonitorErrorShow.vue?b2bb","webpack://uptrace-vue/./src/alerting/views/MonitorErrorShow.vue?48b6","webpack://uptrace-vue/./src/alerting/views/MonitorErrorNew.vue","webpack://uptrace-vue/./src/alerting/views/MonitorErrorNew.vue?1a75","webpack://uptrace-vue/./src/alerting/views/MonitorErrorNew.vue?d0e5","webpack://uptrace-vue/./src/alerting/views/MonitorErrorNew.vue?920e","webpack://uptrace-vue/./src/alerting/views/ChannelList.vue","webpack://uptrace-vue/./src/alerting/NotifChannelNewMenu.vue","webpack://uptrace-vue/./src/alerting/NotifChannelNewMenu.vue?d77e","webpack://uptrace-vue/./src/alerting/NotifChannelNewMenu.vue?8311","webpack://uptrace-vue/./src/alerting/NotifChannelNewMenu.vue?1a2a","webpack://uptrace-vue/./src/alerting/NotifChannelSlackForm.vue","webpack://uptrace-vue/./src/alerting/NotifChannelSlackForm.vue?e453","webpack://uptrace-vue/./src/alerting/NotifChannelSlackForm.vue?9f96","webpack://uptrace-vue/./src/alerting/NotifChannelSlackForm.vue?de8a","webpack://uptrace-vue/./src/alerting/NotifChannelTelegramForm.vue","webpack://uptrace-vue/./src/alerting/NotifChannelTelegramForm.vue?4e56","webpack://uptrace-vue/./src/alerting/NotifChannelTelegramForm.vue?021b","webpack://uptrace-vue/./src/alerting/NotifChannelTelegramForm.vue?e025","webpack://uptrace-vue/./src/alerting/NotifChannelWebhookForm.vue","webpack://uptrace-vue/./src/alerting/NotifChannelWebhookForm.vue?b8c6","webpack://uptrace-vue/./src/alerting/NotifChannelWebhookForm.vue?4689","webpack://uptrace-vue/./src/alerting/NotifChannelWebhookForm.vue?3f55","webpack://uptrace-vue/./src/alerting/NotifChannelAlertmanagerForm.vue","webpack://uptrace-vue/./src/alerting/NotifChannelAlertmanagerForm.vue?0814","webpack://uptrace-vue/./src/alerting/NotifChannelAlertmanagerForm.vue?1de8","webpack://uptrace-vue/./src/alerting/NotifChannelAlertmanagerForm.vue?a5dc","webpack://uptrace-vue/./src/alerting/NotifChannelsTable.vue","webpack://uptrace-vue/./src/alerting/NotifChannelsTableRow.vue","webpack://uptrace-vue/./src/alerting/NotifChannelStateAvatar.vue","webpack://uptrace-vue/./src/alerting/NotifChannelStateAvatar.vue?6cea","webpack://uptrace-vue/./src/alerting/NotifChannelStateAvatar.vue?ed80","webpack://uptrace-vue/./src/alerting/NotifChannelStateAvatar.vue?5aa9","webpack://uptrace-vue/./src/alerting/NotifChannelsTableRow.vue?6589","webpack://uptrace-vue/./src/alerting/NotifChannelsTableRow.vue?b683","webpack://uptrace-vue/./src/alerting/NotifChannelsTableRow.vue?9cc1","webpack://uptrace-vue/./src/alerting/NotifChannelsTable.vue?44a8","webpack://uptrace-vue/./src/alerting/NotifChannelsTable.vue?66df","webpack://uptrace-vue/./src/alerting/NotifChannelsTable.vue?58ee","webpack://uptrace-vue/./src/alerting/views/ChannelList.vue?3a3c","webpack://uptrace-vue/./src/alerting/views/ChannelList.vue?9a78","webpack://uptrace-vue/./src/alerting/views/ChannelList.vue?5b7d","webpack://uptrace-vue/./src/alerting/views/ChannelShowSlack.vue","webpack://uptrace-vue/./src/alerting/views/ChannelShowSlack.vue?47b9","webpack://uptrace-vue/./src/alerting/views/ChannelShowSlack.vue?dad6","webpack://uptrace-vue/./src/alerting/views/ChannelShowSlack.vue?2a56","webpack://uptrace-vue/./src/alerting/views/ChannelShowTelegram.vue","webpack://uptrace-vue/./src/alerting/views/ChannelShowTelegram.vue?c4d6","webpack://uptrace-vue/./src/alerting/views/ChannelShowTelegram.vue?cf48","webpack://uptrace-vue/./src/alerting/views/ChannelShowTelegram.vue?f7f2","webpack://uptrace-vue/./src/alerting/views/ChannelShowWebhook.vue","webpack://uptrace-vue/./src/alerting/views/ChannelShowWebhook.vue?6d8e","webpack://uptrace-vue/./src/alerting/views/ChannelShowWebhook.vue?a82e","webpack://uptrace-vue/./src/alerting/views/ChannelShowWebhook.vue?5723","webpack://uptrace-vue/./src/alerting/views/ChannelShowAlertmanager.vue","webpack://uptrace-vue/./src/alerting/views/ChannelShowAlertmanager.vue?9941","webpack://uptrace-vue/./src/alerting/views/ChannelShowAlertmanager.vue?0ccf","webpack://uptrace-vue/./src/alerting/views/ChannelShowAlertmanager.vue?321f","webpack://uptrace-vue/./src/alerting/views/EmailNotifications.vue","webpack://uptrace-vue/./src/alerting/NotifChannelEmailForm.vue","webpack://uptrace-vue/./src/alerting/NotifChannelEmailForm.vue?5fe2","webpack://uptrace-vue/./src/alerting/NotifChannelEmailForm.vue?2ca7","webpack://uptrace-vue/./src/alerting/NotifChannelEmailForm.vue?5b99","webpack://uptrace-vue/./src/alerting/views/EmailNotifications.vue?6e85","webpack://uptrace-vue/./src/alerting/views/EmailNotifications.vue?cbfb","webpack://uptrace-vue/./src/alerting/views/EmailNotifications.vue?c396","webpack://uptrace-vue/./src/alerting/views/AnnotationList.vue","webpack://uptrace-vue/./src/alerting/AnnotationsTable.vue","webpack://uptrace-vue/./src/alerting/AnnotationsTableRow.vue","webpack://uptrace-vue/./src/alerting/AnnotationsTableRow.vue?a62c","webpack://uptrace-vue/./src/alerting/AnnotationsTableRow.vue?7a62","webpack://uptrace-vue/./src/alerting/AnnotationsTableRow.vue?5040","webpack://uptrace-vue/./src/alerting/AnnotationsTable.vue?dd8b","webpack://uptrace-vue/./src/alerting/AnnotationsTable.vue?df64","webpack://uptrace-vue/./src/alerting/AnnotationsTable.vue?01fc","webpack://uptrace-vue/./src/alerting/AnnotationForm.vue","webpack://uptrace-vue/./src/alerting/AnnotationAttrRow.vue","webpack://uptrace-vue/./src/alerting/AnnotationAttrRow.vue?fe94","webpack://uptrace-vue/./src/alerting/AnnotationAttrRow.vue?c667","webpack://uptrace-vue/./src/alerting/AnnotationAttrRow.vue?6c1b","webpack://uptrace-vue/./src/alerting/AnnotationForm.vue?d4d8","webpack://uptrace-vue/./src/alerting/AnnotationForm.vue?1a7b","webpack://uptrace-vue/./src/alerting/AnnotationForm.vue?702e","webpack://uptrace-vue/./src/alerting/views/AnnotationList.vue?da0b","webpack://uptrace-vue/./src/alerting/views/AnnotationList.vue?7d0a","webpack://uptrace-vue/./src/alerting/views/AnnotationList.vue?4f53","webpack://uptrace-vue/./src/alerting/views/AnnotationShow.vue","webpack://uptrace-vue/./src/alerting/views/AnnotationShow.vue?0f0b","webpack://uptrace-vue/./src/alerting/views/AnnotationShow.vue?6f05","webpack://uptrace-vue/./src/alerting/views/AnnotationShow.vue?284b","webpack://uptrace-vue/./src/tracing/views/Overview.vue","webpack://uptrace-vue/./src/tracing/system/use-systems.ts","webpack://uptrace-vue/./src/tracing/TracingPlaceholder.vue","webpack://uptrace-vue/./src/tracing/HelpCard.vue","webpack://uptrace-vue/./src/components/OtelSdkCard.vue","webpack://uptrace-vue/./src/components/DistroIcons.vue","webpack://uptrace-vue/./src/components/DevIcon.vue","webpack://uptrace-vue/./src/components/DevIcon.vue?fc50","webpack://uptrace-vue/./src/components/DevIcon.vue?4a99","webpack://uptrace-vue/./src/components/DevIcon.vue?c752","webpack://uptrace-vue/./src/components/DistroIcons.vue?6ba9","webpack://uptrace-vue/./src/components/DistroIcons.vue?5198","webpack://uptrace-vue/./src/components/DistroIcons.vue?a092","webpack://uptrace-vue/./src/components/OtelSdkCard.vue?d15f","webpack://uptrace-vue/./src/components/OtelSdkCard.vue?6f2a","webpack://uptrace-vue/./src/components/OtelSdkCard.vue?7e42","webpack://uptrace-vue/./src/components/CollectorTabs.vue","webpack://uptrace-vue/./src/components/CollectorTabs.vue?4b10","webpack://uptrace-vue/./src/components/CollectorTabs.vue?a759","webpack://uptrace-vue/./src/components/CollectorTabs.vue?62e9","webpack://uptrace-vue/./src/tracing/HelpCard.vue?4950","webpack://uptrace-vue/./src/tracing/HelpCard.vue?5742","webpack://uptrace-vue/./src/tracing/HelpCard.vue?05b7","webpack://uptrace-vue/./src/tracing/TracingPlaceholder.vue?15ac","webpack://uptrace-vue/./src/tracing/TracingPlaceholder.vue?af2e","webpack://uptrace-vue/./src/tracing/TracingPlaceholder.vue?30fa","webpack://uptrace-vue/./src/tracing/system/SystemPicker.vue","webpack://uptrace-vue/./src/tracing/system/SystemPicker.vue?1b6f","webpack://uptrace-vue/./src/tracing/system/SystemPicker.vue?d05b","webpack://uptrace-vue/./src/tracing/system/SystemPicker.vue?71cb","webpack://uptrace-vue/./src/tracing/query/QuickSpanFilter.vue","webpack://uptrace-vue/./src/tracing/query/QuickSpanFilter.vue?6fb6","webpack://uptrace-vue/./src/tracing/query/QuickSpanFilter.vue?1208","webpack://uptrace-vue/./src/tracing/query/QuickSpanFilter.vue?cdcf","webpack://uptrace-vue/./src/tracing/views/Overview.vue?a8fb","webpack://uptrace-vue/./src/tracing/views/Overview.vue?d73a","webpack://uptrace-vue/./src/tracing/views/Overview.vue?6bf7","webpack://uptrace-vue/./src/tracing/views/OverviewAttr.vue","webpack://uptrace-vue/./src/components/ApiErrorCard.vue","webpack://uptrace-vue/./src/components/ApiErrorCard.vue?e20d","webpack://uptrace-vue/./src/components/ApiErrorCard.vue?4f85","webpack://uptrace-vue/./src/components/ApiErrorCard.vue?7df5","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetrics.vue","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetricCard.vue","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetricCard.vue?efc5","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetricCard.vue?652a","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetricCard.vue?ac99","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetrics.vue?aeed","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetrics.vue?54c2","webpack://uptrace-vue/./src/components/ThOrder.vue?132c","webpack://uptrace-vue/./src/tracing/system/SystemQuickMetrics.vue?bddd","webpack://uptrace-vue/./src/tracing/PagedGroupsCard.vue","webpack://uptrace-vue/./src/tracing/GroupsTable.vue","webpack://uptrace-vue/./src/tracing/GroupsTableRow.vue","webpack://uptrace-vue/./src/tracing/GroupsTableRow.vue?d287","webpack://uptrace-vue/./src/tracing/GroupsTableRow.vue?0c25","webpack://uptrace-vue/./src/tracing/GroupsTableRow.vue?bf83","webpack://uptrace-vue/./src/tracing/PagedSpansCardLazy.vue","webpack://uptrace-vue/./src/tracing/SpansTable.vue","webpack://uptrace-vue/./src/tracing/SpanCard.vue","webpack://uptrace-vue/./src/tracing/SpanCard.vue?d827","webpack://uptrace-vue/./src/tracing/SpanCard.vue?43a7","webpack://uptrace-vue/./src/tracing/SpanCard.vue?be0a","webpack://uptrace-vue/./src/components/ThOrder.vue","webpack://uptrace-vue/./src/components/ThOrder.vue?d1fc","webpack://uptrace-vue/./src/tracing/SpanChips.vue","webpack://uptrace-vue/./src/tracing/SpanChips.vue?dcb1","webpack://uptrace-vue/./src/tracing/SpanChips.vue?f65e","webpack://uptrace-vue/./src/tracing/SpanChips.vue?0fc6","webpack://uptrace-vue/./src/tracing/SpansTable.vue?fde8","webpack://uptrace-vue/./src/tracing/SpansTable.vue?ad0e","webpack://uptrace-vue/./src/tracing/SpansTable.vue?6723","webpack://uptrace-vue/./src/tracing/PagedSpansCardLazy.vue?0228","webpack://uptrace-vue/./src/tracing/PagedSpansCardLazy.vue?b481","webpack://uptrace-vue/./src/tracing/PagedSpansCardLazy.vue?4ee9","webpack://uptrace-vue/./src/tracing/GroupsTable.vue?c25c","webpack://uptrace-vue/./src/tracing/GroupsTable.vue?d654","webpack://uptrace-vue/./src/tracing/GroupsTable.vue?87ab","webpack://uptrace-vue/./src/metrics/GroupMetrics.vue","webpack://uptrace-vue/./src/metrics/GroupMetricsItem.vue","webpack://uptrace-vue/./src/metrics/LegendaryChart.vue","webpack://uptrace-vue/./src/metrics/ChartLegendList.vue","webpack://uptrace-vue/./src/metrics/ChartLegendList.vue?5926","webpack://uptrace-vue/./src/metrics/ChartLegendList.vue?5e2f","webpack://uptrace-vue/./src/metrics/ChartLegendList.vue?3302","webpack://uptrace-vue/./src/metrics/LegendaryChart.vue?f2c8","webpack://uptrace-vue/./src/metrics/LegendaryChart.vue?9eaf","webpack://uptrace-vue/./src/metrics/LegendaryChart.vue?ea6b","webpack://uptrace-vue/./src/metrics/GroupMetricsItem.vue?5787","webpack://uptrace-vue/./src/metrics/GroupMetricsItem.vue?acf9","webpack://uptrace-vue/./src/metrics/GroupMetricsItem.vue?aed7","webpack://uptrace-vue/./src/metrics/GroupMetrics.vue?e6f9","webpack://uptrace-vue/./src/metrics/GroupMetrics.vue?6fae","webpack://uptrace-vue/./src/metrics/GroupMetrics.vue?852e","webpack://uptrace-vue/./src/tracing/PagedGroupsCard.vue?2b28","webpack://uptrace-vue/./src/tracing/PagedGroupsCard.vue?aa6b","webpack://uptrace-vue/./src/tracing/use-service-graph.ts","webpack://uptrace-vue/./src/tracing/PagedGroupsCard.vue?b6ac","webpack://uptrace-vue/./src/tracing/views/OverviewAttr.vue?10e7","webpack://uptrace-vue/./src/tracing/views/OverviewAttr.vue?9f03","webpack://uptrace-vue/./src/tracing/views/OverviewAttr.vue?63af","webpack://uptrace-vue/./src/tracing/views/OverviewSlowestGroups.vue","webpack://uptrace-vue/./src/tracing/views/OverviewSlowestGroups.vue?54af","webpack://uptrace-vue/./src/tracing/views/OverviewSlowestGroups.vue?48c5","webpack://uptrace-vue/./src/tracing/views/OverviewSlowestGroups.vue?b3b3","webpack://uptrace-vue/./src/tracing/views/OverviewGroups.vue","webpack://uptrace-vue/./src/tracing/views/OverviewGroups.vue?e40b","webpack://uptrace-vue/./src/tracing/views/OverviewGroups.vue?705e","webpack://uptrace-vue/./src/tracing/views/OverviewGroups.vue?8aa7","webpack://uptrace-vue/./src/tracing/views/OverviewServiceGraph.vue","webpack://uptrace-vue/./src/tracing/ServiceGraphChart.vue","webpack://uptrace-vue/./src/util/mapping.ts","webpack://uptrace-vue/./src/tracing/ServiceGraphChart.vue?fd66","webpack://uptrace-vue/./src/tracing/ServiceGraphChart.vue?db91","webpack://uptrace-vue/./src/tracing/ServiceGraphChart.vue?8234","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpDialog.vue","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpCard.vue","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpCard.vue?3b2b","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpCard.vue?23a4","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpCard.vue?dc06","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpDialog.vue?5b51","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpDialog.vue?c763","webpack://uptrace-vue/./src/tracing/ServiceGraphHelpDialog.vue?5c39","webpack://uptrace-vue/./src/tracing/views/OverviewServiceGraph.vue?90e4","webpack://uptrace-vue/./src/tracing/views/OverviewServiceGraph.vue?6288","webpack://uptrace-vue/./src/tracing/views/OverviewServiceGraph.vue?9b8c","webpack://uptrace-vue/./src/tracing/views/Help.vue","webpack://uptrace-vue/./src/tracing/views/Help.vue?3544","webpack://uptrace-vue/./src/tracing/views/Help.vue?3225","webpack://uptrace-vue/./src/tracing/views/Help.vue?36fa","webpack://uptrace-vue/./src/tracing/views/Cheatsheet.vue","webpack://uptrace-vue/./src/tracing/CheatsheetCard.vue","webpack://uptrace-vue/./src/tracing/CheatsheetCard.vue?ba25","webpack://uptrace-vue/./src/tracing/CheatsheetCard.vue?dad5","webpack://uptrace-vue/./src/tracing/CheatsheetCard.vue?08bc","webpack://uptrace-vue/./src/tracing/views/Cheatsheet.vue?3f85","webpack://uptrace-vue/./src/tracing/views/Cheatsheet.vue?b435","webpack://uptrace-vue/./src/tracing/views/Cheatsheet.vue?3b16","webpack://uptrace-vue/./src/tracing/views/Tracing.vue","webpack://uptrace-vue/./src/tracing/system/SystemGroupPicker.vue","webpack://uptrace-vue/./src/tracing/system/SystemGroupPicker.vue?3d1c","webpack://uptrace-vue/./src/tracing/system/SystemGroupPicker.vue?1eef","webpack://uptrace-vue/./src/tracing/system/SystemGroupPicker.vue?e408","webpack://uptrace-vue/./src/tracing/views/SavedViews.vue","webpack://uptrace-vue/./src/tracing/views/use-saved-views.ts","webpack://uptrace-vue/./src/tracing/query/WhereMenu.vue?b9ec","webpack://uptrace-vue/./src/tracing/views/ListViewsDrawer.vue","webpack://uptrace-vue/./src/tracing/views/SavedViewsList.vue","webpack://uptrace-vue/./src/tracing/views/SavedViewsList.vue?b303","webpack://uptrace-vue/./src/tracing/views/SavedViewsList.vue?58a2","webpack://uptrace-vue/./src/tracing/views/SavedViewsList.vue?499c","webpack://uptrace-vue/./src/tracing/views/ListViewsDrawer.vue?2b71","webpack://uptrace-vue/./src/tracing/views/ListViewsDrawer.vue?7348","webpack://uptrace-vue/./src/tracing/views/ListViewsDrawer.vue?31c0","webpack://uptrace-vue/./src/tracing/views/SaveViewDrawer.vue","webpack://uptrace-vue/./src/tracing/views/SaveViewDrawer.vue?d94c","webpack://uptrace-vue/./src/tracing/views/SaveViewDrawer.vue?3e0d","webpack://uptrace-vue/./src/tracing/views/SaveViewDrawer.vue?e757","webpack://uptrace-vue/./src/tracing/views/SavedViews.vue?043e","webpack://uptrace-vue/./src/tracing/views/SavedViews.vue?cc48","webpack://uptrace-vue/./src/tracing/views/SavedViews.vue?c0e3","webpack://uptrace-vue/./src/tracing/query/SpanQueryBuilder.vue","webpack://uptrace-vue/./src/tracing/query/SearchFilterMenu.vue","webpack://uptrace-vue/./src/tracing/query/SearchFilterMenu.vue?1e5a","webpack://uptrace-vue/./src/tracing/query/SearchFilterMenu.vue?6fb5","webpack://uptrace-vue/./src/tracing/query/SearchFilterMenu.vue?1ddf","webpack://uptrace-vue/./src/tracing/query/DurationFilterMenu.vue","webpack://uptrace-vue/./src/tracing/query/DurationFilterMenu.vue?3dc9","webpack://uptrace-vue/./src/tracing/query/DurationFilterMenu.vue?55ae","webpack://uptrace-vue/./src/tracing/query/DurationFilterMenu.vue?6cee","webpack://uptrace-vue/./src/tracing/query/AttrFilterMenu.vue","webpack://uptrace-vue/./src/tracing/query/AttrFilterMenu.vue?95cf","webpack://uptrace-vue/./src/tracing/query/AttrFilterMenu.vue?b90a","webpack://uptrace-vue/./src/tracing/query/AttrFilterMenu.vue?f372","webpack://uptrace-vue/./src/tracing/query/AdvancedMenu.vue","webpack://uptrace-vue/./src/tracing/query/WhereMenu.vue","webpack://uptrace-vue/./src/components/Combobox.vue","webpack://uptrace-vue/./src/components/Combobox.vue?7d6d","webpack://uptrace-vue/./src/components/Combobox.vue?7ce8","webpack://uptrace-vue/./src/components/Combobox.vue?006f","webpack://uptrace-vue/./src/components/UqlChip.vue","webpack://uptrace-vue/./src/components/UqlChip.vue?0f76","webpack://uptrace-vue/./src/components/UqlChip.vue?8a55","webpack://uptrace-vue/./src/components/UqlChip.vue?9752","webpack://uptrace-vue/./src/tracing/query/WhereMenu.vue?388e","webpack://uptrace-vue/./src/tracing/query/WhereMenu.vue?5ea2","webpack://uptrace-vue/./src/tracing/query/AggByMenu.vue","webpack://uptrace-vue/./src/tracing/query/AggByMenu.vue?bc9a","webpack://uptrace-vue/./src/tracing/query/AggByMenu.vue?ac53","webpack://uptrace-vue/./src/tracing/query/AggByMenu.vue?dbd3","webpack://uptrace-vue/./src/tracing/query/GroupByMenu.vue","webpack://uptrace-vue/./src/tracing/query/GroupByMenu.vue?4eab","webpack://uptrace-vue/./src/tracing/query/GroupByMenu.vue?1a67","webpack://uptrace-vue/./src/tracing/query/GroupByMenu.vue?ab68","webpack://uptrace-vue/./src/tracing/query/AdvancedMenu.vue?586f","webpack://uptrace-vue/./src/tracing/query/AdvancedMenu.vue?1d00","webpack://uptrace-vue/./src/tracing/query/AdvancedMenu.vue?7b21","webpack://uptrace-vue/./src/tracing/query/QueryHelpDialog.vue","webpack://uptrace-vue/./src/tracing/query/QueryHelpDialog.vue?8562","webpack://uptrace-vue/./src/tracing/query/QueryHelpDialog.vue?6fb9","webpack://uptrace-vue/./src/tracing/query/QueryHelpDialog.vue?bd93","webpack://uptrace-vue/./src/tracing/query/WhereSidebarBtn.vue","webpack://uptrace-vue/./src/tracing/query/WhereSidebarBtn.vue?09ba","webpack://uptrace-vue/./src/tracing/query/WhereSidebarBtn.vue?4eb6","webpack://uptrace-vue/./src/tracing/query/WhereSidebarBtn.vue?d2e8","webpack://uptrace-vue/./src/tracing/query/SpanQueryBuilder.vue?5095","webpack://uptrace-vue/./src/tracing/query/SpanQueryBuilder.vue?fe9b","webpack://uptrace-vue/./src/tracing/query/SpanQueryBuilder.vue?8c01","webpack://uptrace-vue/./src/components/QuickSearch.vue","webpack://uptrace-vue/./src/components/QuickSearch.vue?b8d4","webpack://uptrace-vue/./src/components/QuickSearch.vue?ef7a","webpack://uptrace-vue/./src/components/QuickSearch.vue?3916","webpack://uptrace-vue/./src/tracing/views/Tracing.vue?1b14","webpack://uptrace-vue/./src/tracing/views/Tracing.vue?fc23","webpack://uptrace-vue/./src/tracing/views/Tracing.vue?e34e","webpack://uptrace-vue/./src/tracing/views/TracingGroups.vue","webpack://uptrace-vue/./src/tracing/views/TracingGroups.vue?4be3","webpack://uptrace-vue/./src/tracing/views/TracingGroups.vue?5f0a","webpack://uptrace-vue/./src/tracing/views/TracingGroups.vue?b613","webpack://uptrace-vue/./src/tracing/views/TracingSpans.vue","webpack://uptrace-vue/./src/tracing/SpansTableSettings.vue","webpack://uptrace-vue/./src/tracing/SpansTableSettings.vue?a210","webpack://uptrace-vue/./src/tracing/SpansTableSettings.vue?648d","webpack://uptrace-vue/./src/tracing/SpansTableSettings.vue?c682","webpack://uptrace-vue/./src/tracing/views/TracingSpans.vue?b58b","webpack://uptrace-vue/./src/tracing/views/TracingSpans.vue?b910","webpack://uptrace-vue/./src/tracing/views/TracingSpans.vue?0bb3","webpack://uptrace-vue/./src/tracing/views/TracingTimeseries.vue","webpack://uptrace-vue/./src/tracing/use-timeseries.ts","webpack://uptrace-vue/./src/tracing/TimeseriesMetric.vue","webpack://uptrace-vue/./src/tracing/TimeseriesMetric.vue?4ff9","webpack://uptrace-vue/./src/tracing/TimeseriesMetric.vue?860c","webpack://uptrace-vue/./src/tracing/TimeseriesMetric.vue?dfc9","webpack://uptrace-vue/./src/tracing/TimeseriesGroupsTable.vue","webpack://uptrace-vue/./src/tracing/TimeseriesGroupsTable.vue?e18a","webpack://uptrace-vue/./src/tracing/TimeseriesGroupsTable.vue?5d0a","webpack://uptrace-vue/./src/tracing/TimeseriesGroupsTable.vue?8e89","webpack://uptrace-vue/./src/tracing/views/TracingTimeseries.vue?1e2b","webpack://uptrace-vue/./src/tracing/views/TracingTimeseries.vue?21bf","webpack://uptrace-vue/./src/tracing/views/TracingTimeseries.vue?d9ef","webpack://uptrace-vue/./src/tracing/views/TraceShow.vue","webpack://uptrace-vue/./src/models/tree.ts","webpack://uptrace-vue/./src/models/trace-span.ts","webpack://uptrace-vue/./src/models/colored-system.ts","webpack://uptrace-vue/./src/tracing/use-trace.ts","webpack://uptrace-vue/./src/components/SpanSystemBarChart.vue","webpack://uptrace-vue/./src/components/PctValue.vue?5ac6","webpack://uptrace-vue/./src/components/PctValue.vue?8be6","webpack://uptrace-vue/./src/components/PctValue.vue","webpack://uptrace-vue/./src/components/SpanSystemBarChart.vue?dc1a","webpack://uptrace-vue/./src/components/SpanSystemBarChart.vue?6ca4","webpack://uptrace-vue/./src/components/SpanSystemBarChart.vue?da32","webpack://uptrace-vue/./src/tracing/TraceTabs.vue","webpack://uptrace-vue/./src/tracing/TraceTimeline.vue","webpack://uptrace-vue/./src/tracing/TraceTimelineChildrenBars.vue","webpack://uptrace-vue/./src/tracing/TraceTimelineChildrenBars.vue?562f","webpack://uptrace-vue/./src/tracing/TraceTimelineChildrenBars.vue?790b","webpack://uptrace-vue/./src/tracing/TraceTimelineChildrenBars.vue?6c16","webpack://uptrace-vue/./src/models/span.ts","webpack://uptrace-vue/./src/tracing/TraceTimeline.vue?9706","webpack://uptrace-vue/./src/tracing/TraceTimeline.vue?a6b9","webpack://uptrace-vue/./src/tracing/TraceTimeline.vue?01b2","webpack://uptrace-vue/./src/tracing/TraceTabs.vue?8ed5","webpack://uptrace-vue/./src/tracing/TraceTabs.vue?21e8","webpack://uptrace-vue/./src/tracing/TraceTabs.vue?d0cf","webpack://uptrace-vue/./src/tracing/views/TraceShow.vue?bb91","webpack://uptrace-vue/./src/tracing/views/TraceShow.vue?594b","webpack://uptrace-vue/./src/tracing/views/TraceShow.vue?862e","webpack://uptrace-vue/./src/tracing/views/TraceFind.vue","webpack://uptrace-vue/./src/tracing/use-trace-search.ts","webpack://uptrace-vue/./src/tracing/views/TraceFind.vue?d2b8","webpack://uptrace-vue/./src/tracing/views/TraceFind.vue?e543","webpack://uptrace-vue/./src/tracing/views/TraceFind.vue?6acc","webpack://uptrace-vue/./src/tracing/views/TraceSpanShow.vue","webpack://uptrace-vue/./src/tracing/views/TraceSpanShow.vue?a6c2","webpack://uptrace-vue/./src/tracing/views/TraceSpanShow.vue?526d","webpack://uptrace-vue/./src/tracing/views/TraceSpanShow.vue?965a","webpack://uptrace-vue/./src/metrics/views/Layout.vue","webpack://uptrace-vue/./src/metrics/HelpCard.vue","webpack://uptrace-vue/./src/metrics/HelpCard.vue?2303","webpack://uptrace-vue/./src/metrics/HelpCard.vue?ce8f","webpack://uptrace-vue/./src/metrics/HelpCard.vue?8a1d","webpack://uptrace-vue/./src/metrics/views/Layout.vue?c4cd","webpack://uptrace-vue/./src/metrics/views/Layout.vue?b8df","webpack://uptrace-vue/./src/metrics/views/Layout.vue?d39f","webpack://uptrace-vue/./src/metrics/views/Explore.vue","webpack://uptrace-vue/./src/metrics/MetricsTable.vue","webpack://uptrace-vue/./src/metrics/MetricsTable.vue?e893","webpack://uptrace-vue/./src/metrics/MetricsTable.vue?1d11","webpack://uptrace-vue/./src/metrics/MetricsTable.vue?bb7e","webpack://uptrace-vue/./src/metrics/ExploreMetric.vue","webpack://uptrace-vue/./src/metrics/ExploreMetric.vue?9c7e","webpack://uptrace-vue/./src/metrics/ExploreMetric.vue?4103","webpack://uptrace-vue/./src/metrics/ExploreMetric.vue?543c","webpack://uptrace-vue/./src/metrics/views/Explore.vue?63a2","webpack://uptrace-vue/./src/metrics/views/Explore.vue?8a02","webpack://uptrace-vue/./src/metrics/views/Explore.vue?4ea0","webpack://uptrace-vue/./src/metrics/views/Help.vue","webpack://uptrace-vue/./src/metrics/views/Help.vue?97dc","webpack://uptrace-vue/./src/metrics/views/Help.vue?48cc","webpack://uptrace-vue/./src/metrics/views/Help.vue?2b0a","webpack://uptrace-vue/./src/metrics/views/Cheatsheet.vue","webpack://uptrace-vue/./src/metrics/views/Cheatsheet.vue?3714","webpack://uptrace-vue/./src/metrics/views/Cheatsheet.vue?c59e","webpack://uptrace-vue/./src/metrics/views/Cheatsheet.vue?3447","webpack://uptrace-vue/./src/metrics/views/DashboardList.vue","webpack://uptrace-vue/./src/metrics/use-dashboards.ts","webpack://uptrace-vue/./src/metrics/DashboardNewMenu.vue","webpack://uptrace-vue/./src/metrics/DashboardForm.vue","webpack://uptrace-vue/./src/metrics/DashboardForm.vue?ce8c","webpack://uptrace-vue/./src/metrics/DashboardForm.vue?b2ec","webpack://uptrace-vue/./src/metrics/DashboardForm.vue?394d","webpack://uptrace-vue/./src/metrics/DashboardYamlForm.vue","webpack://uptrace-vue/./src/metrics/DashboardYamlForm.vue?131e","webpack://uptrace-vue/./src/metrics/DashboardYamlForm.vue?c62a","webpack://uptrace-vue/./src/metrics/DashboardYamlForm.vue?ccfe","webpack://uptrace-vue/./src/metrics/DashboardNewMenu.vue?aafd","webpack://uptrace-vue/./src/metrics/DashboardNewMenu.vue?9a0b","webpack://uptrace-vue/./src/metrics/DashboardNewMenu.vue?681b","webpack://uptrace-vue/./src/metrics/DashboardsTable.vue","webpack://uptrace-vue/./src/metrics/DashboardsTableRow.vue","webpack://uptrace-vue/./src/metrics/DashboardYamlCard.vue","webpack://uptrace-vue/./src/metrics/DashboardYamlCard.vue?b7d3","webpack://uptrace-vue/./src/metrics/DashboardYamlCard.vue?fb62","webpack://uptrace-vue/./src/metrics/DashboardYamlCard.vue?5eb3","webpack://uptrace-vue/./src/metrics/DashPinBtn.vue","webpack://uptrace-vue/./src/metrics/DashPinBtn.vue?f82c","webpack://uptrace-vue/./src/metrics/DashPinBtn.vue?38a4","webpack://uptrace-vue/./src/metrics/DashPinBtn.vue?d240","webpack://uptrace-vue/./src/metrics/DashboardsTableRow.vue?d459","webpack://uptrace-vue/./src/metrics/DashboardsTableRow.vue?9fc5","webpack://uptrace-vue/./src/metrics/DashboardsTableRow.vue?10c8","webpack://uptrace-vue/./src/metrics/DashboardsTable.vue?9e82","webpack://uptrace-vue/./src/metrics/DashboardsTable.vue?1f53","webpack://uptrace-vue/./src/metrics/DashboardsTable.vue?44dd","webpack://uptrace-vue/./src/metrics/views/DashboardList.vue?639f","webpack://uptrace-vue/./src/metrics/views/DashboardList.vue?7ec1","webpack://uptrace-vue/./src/metrics/views/DashboardList.vue?7456","webpack://uptrace-vue/./src/metrics/views/Dashboard.vue","webpack://uptrace-vue/./src/metrics/DashPicker.vue","webpack://uptrace-vue/./src/metrics/DashPicker.vue?e1f2","webpack://uptrace-vue/./src/metrics/DashPicker.vue?1ddd","webpack://uptrace-vue/./src/metrics/DashPicker.vue?9a4a","webpack://uptrace-vue/./src/metrics/DashboardMenu.vue","webpack://uptrace-vue/./src/metrics/DashboardEditYamlForm.vue","webpack://uptrace-vue/./src/metrics/DashboardEditYamlForm.vue?4c8c","webpack://uptrace-vue/./src/metrics/DashboardEditYamlForm.vue?ae84","webpack://uptrace-vue/./src/metrics/DashboardEditYamlForm.vue?0bba","webpack://uptrace-vue/./src/metrics/DashboardMenu.vue?ac6e","webpack://uptrace-vue/./src/metrics/DashboardMenu.vue?f0eb","webpack://uptrace-vue/./src/metrics/DashboardMenu.vue?f362","webpack://uptrace-vue/./src/metrics/RelatedDashboardsTabs.vue","webpack://uptrace-vue/./src/metrics/RelatedDashboardsTabs.vue?4bec","webpack://uptrace-vue/./src/metrics/RelatedDashboardsTabs.vue?d2fe","webpack://uptrace-vue/./src/metrics/RelatedDashboardsTabs.vue?be5d","webpack://uptrace-vue/./src/metrics/views/Dashboard.vue?90d8","webpack://uptrace-vue/./src/metrics/views/Dashboard.vue?e420","webpack://uptrace-vue/./src/metrics/views/Dashboard.vue?276e","webpack://uptrace-vue/./src/metrics/views/DashboardLoading.vue","webpack://uptrace-vue/./src/metrics/views/DashboardLoading.vue?8441","webpack://uptrace-vue/./src/metrics/views/DashboardLoading.vue?5198","webpack://uptrace-vue/./src/metrics/views/DashboardLoading.vue?24c7","webpack://uptrace-vue/./src/metrics/views/DashboardTable.vue","webpack://uptrace-vue/./src/metrics/query/DashQueryBuilder.vue","webpack://uptrace-vue/./src/metrics/query/DashQueryBuilder.vue?2cb1","webpack://uptrace-vue/./src/metrics/query/DashQueryBuilder.vue?e79d","webpack://uptrace-vue/./src/metrics/query/DashQueryBuilder.vue?8a94","webpack://uptrace-vue/./src/metrics/NewGridItemMenu.vue","webpack://uptrace-vue/./src/metrics/GridItemFormSwitch.vue","webpack://uptrace-vue/./src/metrics/GridItemGaugeForm.vue","webpack://uptrace-vue/./src/metrics/use-gauges.ts","webpack://uptrace-vue/./src/metrics/GridItemFormPanes.vue","webpack://uptrace-vue/./src/metrics/GridItemFormPanes.vue?38a4","webpack://uptrace-vue/./src/metrics/GridItemFormPanes.vue?d696","webpack://uptrace-vue/./src/metrics/GridItemFormPanes.vue?aa6b","webpack://uptrace-vue/./src/metrics/GaugeCard.vue","webpack://uptrace-vue/./src/metrics/GridItemCard.vue","webpack://uptrace-vue/./src/metrics/GridItemCard.vue?0b8b","webpack://uptrace-vue/./src/metrics/GridItemCard.vue?268b","webpack://uptrace-vue/./src/metrics/GridItemCard.vue?3df4","webpack://uptrace-vue/./src/metrics/GaugeCard.vue?47bf","webpack://uptrace-vue/./src/metrics/GaugeCard.vue?4521","webpack://uptrace-vue/./src/metrics/GaugeCard.vue?ca81","webpack://uptrace-vue/./src/metrics/GaugeValuesTable.vue","webpack://uptrace-vue/./src/metrics/GaugeValuesTable.vue?68a1","webpack://uptrace-vue/./src/metrics/GaugeValuesTable.vue?7243","webpack://uptrace-vue/./src/metrics/GaugeValuesTable.vue?7ece","webpack://uptrace-vue/./src/metrics/GaugeColumnOptionsForm.vue","webpack://uptrace-vue/./src/metrics/UnitSelect.vue","webpack://uptrace-vue/./src/metrics/UnitSelect.vue?91bb","webpack://uptrace-vue/./src/metrics/UnitSelect.vue?2278","webpack://uptrace-vue/./src/metrics/UnitSelect.vue?7330","webpack://uptrace-vue/./src/metrics/GaugeColumnOptionsForm.vue?2e25","webpack://uptrace-vue/./src/metrics/GaugeColumnOptionsForm.vue?04bf","webpack://uptrace-vue/./src/metrics/GaugeColumnOptionsForm.vue?6511","webpack://uptrace-vue/./src/metrics/ValueMappingsForm.vue","webpack://uptrace-vue/./src/metrics/ValueMappingRow.vue","webpack://uptrace-vue/./src/metrics/ValueMappingRow.vue?ccbb","webpack://uptrace-vue/./src/metrics/ValueMappingRow.vue?fd8d","webpack://uptrace-vue/./src/metrics/ValueMappingRow.vue?1a5f","webpack://uptrace-vue/./src/metrics/ValueMappingsForm.vue?9636","webpack://uptrace-vue/./src/metrics/ValueMappingsForm.vue?e2ae","webpack://uptrace-vue/./src/metrics/ValueMappingsForm.vue?a691","webpack://uptrace-vue/./src/metrics/GridItemGaugeForm.vue?0b81","webpack://uptrace-vue/./src/metrics/GridItemGaugeForm.vue?f425","webpack://uptrace-vue/./src/metrics/GridItemGaugeForm.vue?8ea1","webpack://uptrace-vue/./src/metrics/GridItemChartForm.vue","webpack://uptrace-vue/./src/metrics/TimeseriesStyleForm.vue","webpack://uptrace-vue/./src/metrics/TimeseriesStyleForm.vue?e73a","webpack://uptrace-vue/./src/metrics/TimeseriesStyleForm.vue?739f","webpack://uptrace-vue/./src/metrics/TimeseriesStyleForm.vue?744a","webpack://uptrace-vue/./src/metrics/GridItemChartForm.vue?8cb9","webpack://uptrace-vue/./src/metrics/GridItemChartForm.vue?3c5b","webpack://uptrace-vue/./src/metrics/GridItemChartForm.vue?a920","webpack://uptrace-vue/./src/metrics/GridItemTableForm.vue","webpack://uptrace-vue/./src/metrics/GridItemTable.vue","webpack://uptrace-vue/./src/metrics/TimeseriesTable.vue","webpack://uptrace-vue/./src/metrics/TimeseriesTableRow.vue","webpack://uptrace-vue/./src/metrics/TimeseriesTableRow.vue?7569","webpack://uptrace-vue/./src/metrics/TimeseriesTableRow.vue?7254","webpack://uptrace-vue/./src/metrics/TimeseriesTableRow.vue?9524","webpack://uptrace-vue/./src/metrics/TimeseriesTable.vue?8c30","webpack://uptrace-vue/./src/metrics/TimeseriesTable.vue?c9cb","webpack://uptrace-vue/./src/metrics/TimeseriesTable.vue?b9ba","webpack://uptrace-vue/./src/metrics/GridItemTable.vue?9538","webpack://uptrace-vue/./src/metrics/GridItemTable.vue?e9da","webpack://uptrace-vue/./src/metrics/GridItemTable.vue?64e0","webpack://uptrace-vue/./src/metrics/GridItemTableForm.vue?7ff2","webpack://uptrace-vue/./src/metrics/GridItemTableForm.vue?8f20","webpack://uptrace-vue/./src/metrics/GridItemTableForm.vue?8c23","webpack://uptrace-vue/./src/metrics/GridItemHeatmapForm.vue","webpack://uptrace-vue/./src/components/HeatmapChart.vue","webpack://uptrace-vue/./src/components/HeatmapChart.vue?4f11","webpack://uptrace-vue/./src/components/HeatmapChart.vue?9237","webpack://uptrace-vue/./src/components/HeatmapChart.vue?afe9","webpack://uptrace-vue/./src/metrics/GridItemHeatmapForm.vue?5785","webpack://uptrace-vue/./src/metrics/GridItemHeatmapForm.vue?3b14","webpack://uptrace-vue/./src/metrics/GridItemHeatmapForm.vue?138e","webpack://uptrace-vue/./src/metrics/GridItemFormSwitch.vue?a318","webpack://uptrace-vue/./src/metrics/GridItemFormSwitch.vue?47a4","webpack://uptrace-vue/./src/metrics/GridItemFormSwitch.vue?639c","webpack://uptrace-vue/./src/metrics/NewGridItemMenu.vue?e00b","webpack://uptrace-vue/./src/metrics/NewGridItemMenu.vue?84c4","webpack://uptrace-vue/./src/metrics/NewGridItemMenu.vue?5187","webpack://uptrace-vue/./src/metrics/query/GroupingToggle.vue","webpack://uptrace-vue/./src/metrics/query/GroupingToggle.vue?1927","webpack://uptrace-vue/./src/metrics/query/GroupingToggle.vue?0169","webpack://uptrace-vue/./src/metrics/query/GroupingToggle.vue?02a2","webpack://uptrace-vue/./src/metrics/DashTableFormDialog.vue","webpack://uptrace-vue/./src/metrics/DashTableForm.vue","webpack://uptrace-vue/./src/metrics/DashTableFormPanes.vue","webpack://uptrace-vue/./src/metrics/DashTableFormPanes.vue?9dcb","webpack://uptrace-vue/./src/metrics/DashTableFormPanes.vue?a6ff","webpack://uptrace-vue/./src/metrics/DashTableFormPanes.vue?7bd2","webpack://uptrace-vue/./src/metrics/TableColumnOptionsForm.vue","webpack://uptrace-vue/./src/metrics/TableColumnOptionsForm.vue?c8d9","webpack://uptrace-vue/./src/metrics/TableColumnOptionsForm.vue?321e","webpack://uptrace-vue/./src/metrics/TableColumnOptionsForm.vue?5684","webpack://uptrace-vue/./src/metrics/DashTableForm.vue?44ae","webpack://uptrace-vue/./src/metrics/DashTableForm.vue?f6b7","webpack://uptrace-vue/./src/metrics/DashTableForm.vue?5125","webpack://uptrace-vue/./src/metrics/DashTableFormDialog.vue?c3a7","webpack://uptrace-vue/./src/metrics/DashTableFormDialog.vue?5cda","webpack://uptrace-vue/./src/metrics/DashTableFormDialog.vue?607c","webpack://uptrace-vue/./src/metrics/DashGridForTableRow.vue","webpack://uptrace-vue/./src/metrics/DashGrid.vue","webpack://uptrace-vue/./src/metrics/GridRowCard.vue","webpack://uptrace-vue/./src/metrics/GridStackCard.vue","webpack://uptrace-vue/./src/metrics/GridStackCard.vue?d01f","webpack://uptrace-vue/./src/metrics/GridStackCard.vue?2a94","webpack://uptrace-vue/./src/metrics/GridStackCard.vue?6431","webpack://uptrace-vue/./src/metrics/GridRowForm.vue","webpack://uptrace-vue/./src/metrics/GridRowForm.vue?51ea","webpack://uptrace-vue/./src/metrics/GridRowForm.vue?961b","webpack://uptrace-vue/./src/metrics/GridRowForm.vue?b21d","webpack://uptrace-vue/./src/metrics/GridRowCard.vue?9cdc","webpack://uptrace-vue/./src/metrics/GridRowCard.vue?ece3","webpack://uptrace-vue/./src/metrics/GridRowCard.vue?8887","webpack://uptrace-vue/./src/metrics/GridItemAny.vue","webpack://uptrace-vue/./src/metrics/GridItemSwitch.vue","webpack://uptrace-vue/./src/metrics/GridItemGauge.vue","webpack://uptrace-vue/./src/metrics/GridItemGauge.vue?e4e1","webpack://uptrace-vue/./src/metrics/GridItemGauge.vue?4138","webpack://uptrace-vue/./src/metrics/GridItemGauge.vue?19eb","webpack://uptrace-vue/./src/metrics/GridItemChart.vue","webpack://uptrace-vue/./src/metrics/GridItemChart.vue?b9b0","webpack://uptrace-vue/./src/metrics/GridItemChart.vue?9489","webpack://uptrace-vue/./src/metrics/GridItemChart.vue?9054","webpack://uptrace-vue/./src/metrics/GridItemHeatmap.vue","webpack://uptrace-vue/./src/metrics/GridItemHeatmap.vue?d525","webpack://uptrace-vue/./src/metrics/GridItemHeatmap.vue?9740","webpack://uptrace-vue/./src/metrics/GridItemHeatmap.vue?c362","webpack://uptrace-vue/./src/metrics/GridItemSwitch.vue?721c","webpack://uptrace-vue/./src/metrics/GridItemSwitch.vue?addf","webpack://uptrace-vue/./src/metrics/GridItemSwitch.vue?2f28","webpack://uptrace-vue/./src/metrics/GridItemAny.vue?d8f8","webpack://uptrace-vue/./src/metrics/GridItemAny.vue?49ac","webpack://uptrace-vue/./src/metrics/GridItemAny.vue?1636","webpack://uptrace-vue/./src/metrics/DashGrid.vue?8bce","webpack://uptrace-vue/./src/metrics/DashGrid.vue?47e2","webpack://uptrace-vue/./src/metrics/DashGrid.vue?d8de","webpack://uptrace-vue/./src/metrics/DashGridForTableRow.vue?1a4f","webpack://uptrace-vue/./src/metrics/DashGridForTableRow.vue?a67c","webpack://uptrace-vue/./src/metrics/DashGridForTableRow.vue?ccc8","webpack://uptrace-vue/./src/metrics/views/DashboardTable.vue?8cc2","webpack://uptrace-vue/./src/metrics/views/DashboardTable.vue?7061","webpack://uptrace-vue/./src/metrics/views/DashboardTable.vue?8f53","webpack://uptrace-vue/./src/metrics/views/DashboardGrid.vue","webpack://uptrace-vue/./src/metrics/views/DashboardGrid.vue?a204","webpack://uptrace-vue/./src/metrics/views/DashboardGrid.vue?31c2","webpack://uptrace-vue/./src/metrics/views/DashboardGrid.vue?b7ed","webpack://uptrace-vue/./src/metrics/views/DashboardHelp.vue","webpack://uptrace-vue/./src/metrics/views/DashboardHelp.vue?3e96","webpack://uptrace-vue/./src/metrics/views/DashboardHelp.vue?87a8","webpack://uptrace-vue/./src/metrics/views/DashboardHelp.vue?3869","webpack://uptrace-vue/./src/views/Login.vue","webpack://uptrace-vue/./src/views/Login.vue?0afe","webpack://uptrace-vue/./src/views/Login.vue?1655","webpack://uptrace-vue/./src/views/Login.vue?23b0","webpack://uptrace-vue/./src/org/views/UserProfile.vue","webpack://uptrace-vue/./src/org/views/UserProfile.vue?19ee","webpack://uptrace-vue/./src/org/views/UserProfile.vue?4ef2","webpack://uptrace-vue/./src/org/views/UserProfile.vue?6065","webpack://uptrace-vue/./src/org/views/DataUsage.vue","webpack://uptrace-vue/./src/org/use-data-usage.ts","webpack://uptrace-vue/./src/org/DataUsageChart.vue","webpack://uptrace-vue/./src/org/DataUsageChart.vue?826e","webpack://uptrace-vue/./src/org/DataUsageChart.vue?0de3","webpack://uptrace-vue/./src/org/DataUsageChart.vue?df85","webpack://uptrace-vue/./src/org/views/DataUsage.vue?fa95","webpack://uptrace-vue/./src/org/views/DataUsage.vue?65f3","webpack://uptrace-vue/./src/org/views/DataUsage.vue?f2cd","webpack://uptrace-vue/./src/router/index.ts","webpack://uptrace-vue/./src/use/router.ts","webpack://uptrace-vue/./src/use/date-range.ts","webpack://uptrace-vue/./src/org/use-achievements.ts","webpack://uptrace-vue/./src/system/AppNavigation.vue","webpack://uptrace-vue/./src/system/ProjectMenu.vue","webpack://uptrace-vue/./src/system/ProjectMenu.vue?b180","webpack://uptrace-vue/./src/system/ProjectMenu.vue?55aa","webpack://uptrace-vue/./src/system/ProjectMenu.vue?bc02","webpack://uptrace-vue/./src/system/ProjectNavigationList.vue","webpack://uptrace-vue/./src/system/ProjectNavigationList.vue?3842","webpack://uptrace-vue/./src/system/ProjectNavigationList.vue?edae","webpack://uptrace-vue/./src/system/ProjectNavigationList.vue?8bff","webpack://uptrace-vue/./src/system/GetStartedMenu.vue","webpack://uptrace-vue/./src/system/GetStartedMenu.vue?dda7","webpack://uptrace-vue/./src/system/GetStartedMenu.vue?aefe","webpack://uptrace-vue/./src/system/GetStartedMenu.vue?d67b","webpack://uptrace-vue/./src/system/HowToMenu.vue","webpack://uptrace-vue/./src/system/HowToMenu.vue?a049","webpack://uptrace-vue/./src/system/HowToMenu.vue?7bbf","webpack://uptrace-vue/./src/system/HowToMenu.vue?4412","webpack://uptrace-vue/./src/system/UserMenu.vue","webpack://uptrace-vue/./src/system/UserMenu.vue?be54","webpack://uptrace-vue/./src/system/UserMenu.vue?3e90","webpack://uptrace-vue/./src/system/UserMenu.vue?d3a5","webpack://uptrace-vue/./src/system/AppNavigation.vue?59ed","webpack://uptrace-vue/./src/system/AppNavigation.vue?633d","webpack://uptrace-vue/./src/system/AppNavigation.vue?f830","webpack://uptrace-vue/./src/components/GlobalSnackbar.vue","webpack://uptrace-vue/./src/components/GlobalSnackbar.vue?59d8","webpack://uptrace-vue/./src/components/GlobalSnackbar.vue?7b2f","webpack://uptrace-vue/./src/components/GlobalSnackbar.vue?1487","webpack://uptrace-vue/./src/components/GlobalConfirm.vue","webpack://uptrace-vue/./src/components/GlobalConfirm.vue?3b7a","webpack://uptrace-vue/./src/components/GlobalConfirm.vue?f092","webpack://uptrace-vue/./src/components/GlobalConfirm.vue?64c6","webpack://uptrace-vue/./src/components/AppSearch.vue","webpack://uptrace-vue/./src/components/AppSearch.vue?b66d","webpack://uptrace-vue/./src/components/AppSearch.vue?11b9","webpack://uptrace-vue/./src/components/AppSearch.vue?c707","webpack://uptrace-vue/./src/App.vue?e415","webpack://uptrace-vue/./src/App.vue?cdbc","webpack://uptrace-vue/./src/App.vue?af8a","webpack://uptrace-vue/./src/directives/autowidth.ts","webpack://uptrace-vue/./src/directives/resize.ts","webpack://uptrace-vue/./src/plugins/directives.ts","webpack://uptrace-vue/./src/plugins/frag.ts","webpack://uptrace-vue/./src/plugins/axios.ts","webpack://uptrace-vue/./src/components/PageToolbar.vue","webpack://uptrace-vue/./src/components/PageToolbar.vue?c1d0","webpack://uptrace-vue/./src/components/PageToolbar.vue?f736","webpack://uptrace-vue/./src/components/PageToolbar.vue?072b","webpack://uptrace-vue/./src/components/XPlaceholder.vue?5e94","webpack://uptrace-vue/./src/components/XPlaceholder.vue?6e79","webpack://uptrace-vue/./src/components/XPlaceholder.vue","webpack://uptrace-vue/./src/components/XPager.vue","webpack://uptrace-vue/./src/components/NumValue.vue","webpack://uptrace-vue/./src/components/XPagination.vue","webpack://uptrace-vue/./src/components/XPager.vue?38c7","webpack://uptrace-vue/./src/components/XPager.vue?6d9e","webpack://uptrace-vue/./src/components/XPagination.vue?7922","webpack://uptrace-vue/./src/components/XPagination.vue?3946","webpack://uptrace-vue/./src/components/XPagination.vue?a62f","webpack://uptrace-vue/./src/components/NumValue.vue?f242","webpack://uptrace-vue/./src/components/NumValue.vue?d336","webpack://uptrace-vue/./src/components/DateValue.vue?7c7e","webpack://uptrace-vue/./src/components/DateValue.vue?fa39","webpack://uptrace-vue/./src/components/DateValue.vue","webpack://uptrace-vue/./src/components/AnyValue.vue?8ce6","webpack://uptrace-vue/./src/components/AnyValue.vue","webpack://uptrace-vue/./src/components/DurationValue.vue","webpack://uptrace-vue/./src/components/BytesValue.vue","webpack://uptrace-vue/./src/components/AnyValue.vue?c1ac","webpack://uptrace-vue/./src/components/DurationValue.vue?a5e3","webpack://uptrace-vue/./src/components/DurationValue.vue?0582","webpack://uptrace-vue/./src/components/BytesValue.vue?898e","webpack://uptrace-vue/./src/components/BytesValue.vue?25ad","webpack://uptrace-vue/./src/components/PrismCode.vue","webpack://uptrace-vue/./src/components/CopyBtn.vue","webpack://uptrace-vue/./src/components/CopyBtn.vue?6a4a","webpack://uptrace-vue/./src/components/CopyBtn.vue?89ec","webpack://uptrace-vue/./src/components/CopyBtn.vue?5d37","webpack://uptrace-vue/./src/components/PrismCode.vue?d68c","webpack://uptrace-vue/./src/components/PrismCode.vue?b228","webpack://uptrace-vue/./src/components/PrismCode.vue?790b","webpack://uptrace-vue/./src/plugins/global.ts","webpack://uptrace-vue/./src/plugins/portal.ts","webpack://uptrace-vue/./src/main.ts","webpack://uptrace-vue/webpack/bootstrap","webpack://uptrace-vue/webpack/runtime/chunk loaded","webpack://uptrace-vue/webpack/runtime/compat get default export","webpack://uptrace-vue/webpack/runtime/define property getters","webpack://uptrace-vue/webpack/runtime/global","webpack://uptrace-vue/webpack/runtime/hasOwnProperty shorthand","webpack://uptrace-vue/webpack/runtime/make namespace object","webpack://uptrace-vue/webpack/runtime/jsonp chunk loading","webpack://uptrace-vue/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-app',[_c('AppNavigation',{model:{value:(_vm.navigation),callback:function ($$v) {_vm.navigation=$$v},expression:\"navigation\"}}),(_vm.header)?_c('v-app-bar',{staticClass:\"v-bar--underline\",attrs:{\"app\":\"\",\"absolute\":\"\",\"flat\":\"\",\"color\":_vm.$vuetify.theme.isDark ? undefined : 'white'}},[_c('v-container',{staticClass:\"pa-0 fill-height\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',{staticClass:\"flex-nowrap\",attrs:{\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-app-bar-nav-icon',{attrs:{\"variant\":\"text\",\"title\":\"Toggle navigation menu\"},on:{\"click\":function($event){$event.stopPropagation();_vm.navigation = !_vm.navigation}}})],1),(!_vm.searchVisible)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('portal-target',{attrs:{\"name\":\"navigation\"}})],1):_vm._e(),_c('v-spacer'),_c('v-col',{staticClass:\"d-flex align-center\",attrs:{\"cols\":\"auto\"}},[(_vm.project.data)?_c('AppSearch',{model:{value:(_vm.searchVisible),callback:function ($$v) {_vm.searchVisible=$$v},expression:\"searchVisible\"}}):_vm._e(),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Toggle dark mode\"},on:{\"click\":function($event){return _vm.toggleDark()}}},[_c('v-icon',[_vm._v(\"mdi-theme-light-dark\")])],1)],1),(!_vm.user.isAuth)?_c('v-col',{staticClass:\"d-flex align-center\",attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"mr-1\",attrs:{\"text\":\"\",\"to\":{ name: 'Login' }}},[_vm._v(\"Sign in\")])],1):_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"color\":\"green\",\"dark\":\"\",\"href\":\"https://app.uptrace.dev/join\",\"target\":\"_blank\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-cloud\")]),_c('span',[_vm._v(\"Try cloud\")])],1)],1)],1)],1)],1):_vm._e(),_c('v-main',[_c('GlobalSnackbar'),_c('GlobalConfirm'),_c('router-view',{attrs:{\"date-range\":_vm.dateRange}})],1),(_vm.footer)?_c('v-footer',{attrs:{\"app\":\"\",\"absolute\":\"\",\"inset\":\"\",\"color\":_vm.$vuetify.theme.isDark ? undefined : 'grey lighten-5'}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"href\":\"https://uptrace.dev/get/\",\"target\":\"_blank\",\"text\":\"\",\"rounded\":\"\",\"small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-help-circle-outline\")]),_c('span',[_vm._v(\"Documentation\")])],1),_c('v-btn',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/\",\"target\":\"_blank\",\"text\":\"\",\"rounded\":\"\",\"small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-open-source-initiative\")]),_c('span',[_vm._v(\"OpenTelemetry\")])],1),_c('v-btn',{attrs:{\"href\":\"https://join.slack.com/t/uptracedev/shared_invite/zt-1xr19nhom-cEE3QKSVt172JdQLXgXGvw\",\"target\":\"_blank\",\"text\":\"\",\"rounded\":\"\",\"small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-slack\")]),_c('span',[_vm._v(\"Slack\")])],1),_c('v-btn',{attrs:{\"href\":\"https://t.me/uptrace\",\"text\":\"\",\"rounded\":\"\",\"small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-message-outline\")]),_c('span',[_vm._v(\"Telegram\")])],1),_c('v-btn',{attrs:{\"href\":\"https://github.com/uptrace/uptrace\",\"target\":\"_blank\",\"text\":\"\",\"rounded\":\"\",\"small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-github\")]),_c('span',[_vm._v(\"GitHub\")])],1)],1)],1)],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, ref, watch, Ref } from 'vue'\n\nexport function setItem(key: string, value: any) {\n localStorage.setItem(key, JSON.stringify(value))\n}\n\nexport function getItem(key: string): any {\n const value = localStorage.getItem(key)\n if (value === null) {\n return null\n }\n try {\n return JSON.parse(value)\n } catch {\n return null\n }\n}\n\nexport function useStorage(key: string | Ref, defValue: T | null = null) {\n const keyRef = ref(key)\n const valueRef = ref()\n\n const item = computed({\n get(): T {\n return valueRef.value\n },\n set(value: T) {\n setItem(keyRef.value, value)\n valueRef.value = value\n },\n })\n\n watch(\n keyRef,\n (key) => {\n let value = getItem(key)\n if (value === null) {\n value = defValue\n }\n valueRef.value = value\n },\n { immediate: true, flush: 'sync' },\n )\n\n return item\n}\n","import Vue from 'vue'\nimport Vuetify from 'vuetify/lib/framework'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n breakpoint: {\n thresholds: {\n lg: 1536,\n },\n },\n theme: {\n options: { variations: false },\n },\n})\n","interface Store {\n (): R\n}\n\nexport function defineStore>(_create: Store): Store {\n let store: T | undefined\n\n return function create(): T {\n if (store === undefined) {\n store = _create()\n }\n return store as T\n }\n}\n","import { watch } from 'vue'\nimport vuetify from '@/plugins/vuetify'\nimport { useDark, useToggle } from '@vueuse/core'\n\n// Composables\nimport { defineStore } from '@/use/store'\n\nexport const useDarkMode = defineStore(() => {\n const isDark = useDark()\n const toggleDark = useToggle(isDark)\n\n watch(\n isDark,\n (isDark) => {\n vuetify.framework.theme.dark = isDark\n document.documentElement.style.setProperty('color-scheme', isDark ? 'dark' : 'light')\n },\n { immediate: true },\n )\n\n return { isDark, toggleDark }\n})\n","import { shallowRef, computed, proxyRefs } from 'vue'\nimport { injectLocal, provideLocal } from '@vueuse/core'\n\nexport type UseForceReload = ReturnType\n\nfunction useForceReload() {\n const loading = shallowRef(false)\n const token = shallowRef(0)\n\n function forceReload() {\n const slot = Math.trunc(Date.now() / 3000)\n if (slot === token.value) {\n return\n }\n token.value = slot\n\n loading.value = true\n setTimeout(() => {\n loading.value = false\n }, 1000)\n }\n\n const params = computed(() => {\n if (token.value) {\n return {\n _force: token.value,\n }\n }\n return {}\n })\n\n return proxyRefs({ loading, params, do: forceReload })\n}\n\nconst forceReloadKey = Symbol('force-reload')\n\nexport function provideForceReload() {\n provideLocal(forceReloadKey, useForceReload())\n}\n\nexport function injectForceReload(): UseForceReload {\n return injectLocal(forceReloadKey)!\n}\n","import { ref, proxyRefs } from 'vue'\n\nimport { defineStore } from '@/use/store'\n\nexport const useSnackbar = defineStore(() => {\n const notification = ref('')\n const active = ref(false)\n const color = ref('')\n const timeout = ref(-1)\n\n function notifySuccess(s: string) {\n notify(s)\n color.value = 'success'\n }\n\n function notifyError(s: string | Error) {\n notify(asString(s))\n color.value = 'error'\n }\n\n function notify(s: string) {\n notification.value = s\n active.value = true\n timeout.value = 10000\n }\n\n return proxyRefs({\n notification,\n active,\n color,\n timeout,\n\n notifySuccess,\n notifyError,\n })\n})\n\nfunction asString(s: string | Error): string {\n if (typeof s === 'string') {\n return s\n }\n return s.message\n}\n","export function sentence(s: string): string {\n if (!s) {\n return ''\n }\n return s.charAt(0).toUpperCase() + s.substring(1)\n}\n\nexport function escapeRe(s: string) {\n return s.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n}\n\nexport function quote(s: any): number | string {\n if (typeof s !== 'string') {\n return JSON.stringify(s)\n }\n if (!s.length) {\n return '\"\"'\n }\n\n if (s[0] === \"'\" && s[s.length - 1] === \"'\") {\n return s\n }\n if (s[0] === '\"' && s[s.length - 1] === '\"') {\n return s\n }\n\n const n = parseFloat(s)\n if (!isNaN(n) && n.toString() === s) {\n return n\n }\n\n return JSON.stringify(s)\n}\n\nexport function truncateMiddle(s: T, maxLen = 32, separator = '...'): T {\n if (typeof s !== 'string') {\n return s\n }\n if (s.length <= maxLen) {\n return s\n }\n\n const sepLen = separator.length,\n charsToShow = maxLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2)\n\n const truncated = s.substr(0, frontChars) + separator + s.substr(s.length - backChars)\n return truncated as any\n}\n\nexport function formatTemplate(format: string, ...args: any[]) {\n return format.replace(/{(\\d+)}/g, function (match, number) {\n return typeof args[number] !== 'undefined' ? args[number] : match\n })\n}\n","import { debounce } from 'lodash-es'\nimport axios from 'axios'\nimport { shallowRef, computed, watch } from 'vue'\n\n// Composables\nimport { useSnackbar } from '@/use/snackbar'\n\n// Misc\nimport { sentence } from '@/util/string'\n\ntype AsyncFunc = (...args: any[]) => Promise\n\nexport interface Config {\n debounce?: number\n ignoreErrors?: boolean\n}\n\nexport interface ApiError {\n code: string\n message: string\n\n statusCode: number\n traceId: string\n data: Record\n}\n\nexport function usePromise(fn: AsyncFunc, conf: Config = {}) {\n const snackbar = useSnackbar()\n\n const result = shallowRef()\n const resultId = shallowRef(0)\n const rawError = shallowRef()\n const status = shallowRef(Status.Unset)\n\n const pending = computed((): boolean => {\n switch (status.value) {\n case Status.Initing:\n case Status.Reloading:\n return true\n }\n return false\n })\n\n let currentId = 0\n\n let promised = (...args: any[]): Promise => {\n switch (status.value) {\n case Status.Unset:\n case Status.Rejected:\n status.value = Status.Initing\n break\n case Status.Resolved:\n status.value = Status.Reloading\n break\n }\n\n let promise: Promise\n\n currentId++\n ;(function (localID: number) {\n promise = fn(...args)\n promise.then(\n (res: any) => {\n if (localID === currentId) {\n resolve(res)\n }\n },\n (err: any) => {\n if (localID === currentId) {\n reject(err)\n }\n return err\n },\n )\n })(currentId)\n\n return promise\n }\n\n let resolve = (res: any): void => {\n result.value = res\n resultId.value = currentId\n rawError.value = undefined\n status.value = Status.Resolved\n }\n\n let reject = (err: any): void => {\n if (err === null || axios.isCancel(err)) {\n status.value = result.value !== undefined ? Status.Resolved : Status.Unset\n return\n }\n\n if (err === undefined) {\n result.value = undefined\n resultId.value = 0\n rawError.value = undefined\n status.value = Status.Unset\n return\n }\n\n result.value = undefined\n resultId.value = 0\n rawError.value = err\n status.value = Status.Rejected\n }\n\n let cancel = (): void => {\n if (status.value.pending()) {\n currentId++\n }\n }\n\n if (conf.debounce) {\n const debounced = debounce(promised, conf.debounce)\n\n const oldCancel = cancel\n cancel = () => {\n oldCancel()\n debounced.cancel()\n }\n\n const oldResolve = resolve\n const oldReject = reject\n\n promised = (...args: any[]): Promise => {\n debounced(...args)\n return new Promise((promiseResolve, promiseReject) => {\n resolve = (res: any): void => {\n oldResolve(res)\n promiseResolve(res)\n }\n reject = (err: any): void => {\n oldReject(err)\n promiseReject(err)\n }\n })\n }\n }\n\n const error = computed((): ApiError | undefined => {\n const err = rawError.value\n if (!err) {\n return undefined\n }\n const data = err.response?.data ?? {}\n return {\n code: data?.code ?? '',\n message: errorMessage.value,\n\n statusCode: data?.statusCode ?? 0,\n traceId: data?.traceId ?? '',\n data,\n }\n })\n\n const errorMessage = computed((): string => {\n const err = rawError.value\n if (!err) {\n return ''\n }\n return sentence(err.response?.data?.error?.message ?? asString(err))\n })\n\n if (!conf.ignoreErrors) {\n watch(error, (error) => {\n if (!error) {\n return\n }\n switch (error.statusCode) {\n case 400:\n case 402:\n case 403:\n snackbar.notifyError(error.message)\n }\n })\n }\n\n return {\n status,\n pending,\n\n promised,\n result,\n resultId,\n rawError,\n error,\n errorMessage,\n\n cancel,\n }\n}\n\nexport enum StatusValue {\n Unset = 'unset',\n Initing = 'initing',\n Resolved = 'resolved',\n Rejected = 'rejected',\n Reloading = 'reloading',\n}\n\nclass Status {\n static Unset = new Status(StatusValue.Unset)\n static Initing = new Status(StatusValue.Initing)\n static Resolved = new Status(StatusValue.Resolved)\n static Rejected = new Status(StatusValue.Rejected)\n static Reloading = new Status(StatusValue.Reloading)\n\n value: StatusValue\n\n constructor(value: StatusValue) {\n this.value = value\n }\n\n toString(): string {\n return this.value\n }\n\n isUnset(): boolean {\n return this.value === StatusValue.Unset\n }\n\n initing(): boolean {\n return this.value === StatusValue.Initing\n }\n\n isResolved(): boolean {\n return this.value === StatusValue.Resolved\n }\n\n reloading(): boolean {\n return this.value === StatusValue.Reloading\n }\n\n isReady(): boolean {\n return !this.pending()\n }\n\n pending(): boolean {\n switch (this.value) {\n case StatusValue.Resolved:\n case StatusValue.Rejected:\n return false\n default:\n return true\n }\n }\n\n hasData(): boolean {\n switch (this.value) {\n case StatusValue.Resolved:\n case StatusValue.Reloading:\n return true\n default:\n return false\n }\n }\n}\n\nfunction asString(s: string | Error | undefined): string {\n if (!s) {\n return ''\n }\n if (typeof s === 'string') {\n return s\n }\n if (s.message) {\n return s.message\n }\n return ''\n}\n","import axios, {\n AxiosRequestConfig as BaseAxiosRequestConfig,\n CancelTokenSource,\n AxiosResponse,\n} from 'axios'\nimport { computed } from 'vue'\n\n// Composables\nimport { usePromise, Config as PromiseConfig } from '@/use/promise'\n\nexport type AxiosConfig = PromiseConfig\n\nexport type AxiosParams = Record\n\nexport interface AxiosRequestConfig extends BaseAxiosRequestConfig {\n ignore?: boolean\n}\n\nexport function useAxios(conf: AxiosConfig = {}) {\n let cancelToken: CancelTokenSource | null = null\n\n const {\n status,\n pending: loading,\n promised,\n result,\n resultId,\n error,\n errorMessage,\n cancel,\n } = usePromise((req: AxiosRequestConfig | undefined) => {\n if (!req || !isValidReq(req)) {\n return Promise.reject(undefined)\n }\n if (req && req.ignore) {\n return Promise.reject(null)\n }\n\n if (req && !req.cancelToken) {\n cancelToken = axios.CancelToken.source()\n req = {\n ...req,\n cancelToken: cancelToken.token,\n }\n }\n\n return axios.request(req)\n }, conf)\n\n const data = computed(() => {\n return result.value?.data\n })\n\n function abort() {\n cancel()\n if (cancelToken) {\n cancelToken.cancel()\n cancelToken = null\n }\n }\n\n function request(\n config: AxiosRequestConfig | null | undefined,\n abortCtrl?: AbortController,\n ): Promise {\n // TODO: this is unexpected and should be moved out of here\n abort()\n\n if (abortCtrl) {\n abortCtrl.signal.addEventListener('abort', () => {\n abort()\n })\n }\n\n return promised(config)\n }\n\n return {\n status,\n loading,\n\n result,\n resultId,\n data,\n error,\n errorMessage,\n\n request,\n abort,\n }\n}\n\nfunction isValidReq(req: AxiosRequestConfig): boolean {\n if (req.url && req.url.includes('undefined')) {\n return false\n }\n\n if ('params' in req && req.params === undefined) {\n return false\n }\n if (req.params && !isValidData(req.params)) {\n return false\n }\n\n if ('data' in req && req.data === undefined) {\n return false\n }\n if (req.data && !isValidData(req.data)) {\n return false\n }\n\n return true\n}\n\nfunction isValidData(data: Record): boolean {\n for (let key in data) {\n if (data[key] === undefined) {\n return false\n }\n }\n return true\n}\n","import { cloneDeep } from 'lodash-es'\nimport { watch, proxyRefs, onBeforeUnmount } from 'vue'\n\nimport { useAxios, AxiosRequestConfig, AxiosConfig } from '@/use/axios'\n\nexport type AxiosRequest = AxiosRequestConfig | null | undefined\nexport type AxiosRequestSource = () => AxiosRequest\n\nexport type AxiosParams = Record | null | undefined\nexport type AxiosParamsSource = () => AxiosParams\n\nexport interface AxiosWatchOptions extends AxiosConfig {\n immediate?: boolean\n notEqual?: boolean\n debounce?: number\n once?: boolean\n}\n\nexport function watchAxios(source: AxiosRequestSource, options: AxiosWatchOptions = {}) {\n return proxyRefs(useWatchAxios(source, options))\n}\n\nexport function useWatchAxios(source: AxiosRequestSource, options: AxiosWatchOptions = {}) {\n options.immediate = true\n if (options.debounce === undefined) {\n options.debounce = 50\n }\n if (options.notEqual === undefined) {\n options.notEqual = true\n }\n\n let abortCtrl: AbortController | undefined\n let prevReq: AxiosRequestConfig | undefined\n\n const {\n status,\n loading,\n resultId,\n data,\n error,\n errorMessage,\n\n request,\n } = useAxios(options)\n\n const stopWatch = watch(\n source,\n (reqConf) => {\n if (reqConf === null) {\n if (abortCtrl) {\n abortCtrl.abort()\n }\n return\n }\n\n if (options.notEqual) {\n if (!axiosRequestChanged(reqConf, prevReq)) {\n return\n }\n }\n\n if (abortCtrl) {\n abortCtrl.abort()\n }\n makeRequest(reqConf)\n },\n { immediate: options.immediate },\n )\n onBeforeUnmount(abort)\n\n if (options.once) {\n const stopSelf = watch(status, (status) => {\n if (status.isResolved()) {\n stopWatch()\n stopSelf()\n }\n })\n }\n\n function reload() {\n if (!prevReq) {\n return Promise.reject()\n }\n\n if (abortCtrl) {\n return Promise.reject()\n }\n return makeRequest(prevReq)\n }\n\n function makeRequest(reqConf: AxiosRequestConfig | undefined) {\n abortCtrl = new AbortController()\n\n const promise = request(reqConf, abortCtrl).catch((err) => {\n if (err === undefined) {\n prevReq = undefined\n }\n })\n\n // Set prevReq immediately to ignore the reqConf flickering.\n prevReq = cloneDeep(reqConf)\n\n promise.finally(() => {\n abortCtrl = undefined\n })\n\n return promise\n }\n\n function abort() {\n if (abortCtrl) {\n abortCtrl.abort()\n abortCtrl = undefined\n prevReq = undefined\n }\n }\n\n return {\n status,\n loading,\n\n resultId,\n data,\n error,\n errorMessage,\n\n abort,\n reload,\n }\n}\n\nconst IGNORE_KEY_PREFIX = '$ignore_'\n\nfunction axiosRequestChanged(\n req: AxiosRequestConfig | undefined,\n prevReq: AxiosRequestConfig | undefined,\n): boolean {\n const ignoredKeys: string[] = []\n\n if (req && req.params) {\n const keys = Object.keys(req.params)\n .filter((key) => key.startsWith(IGNORE_KEY_PREFIX))\n .map((key) => key.slice(IGNORE_KEY_PREFIX.length))\n ignoredKeys.push(...keys)\n }\n\n return hashAxiosRequest(req, ignoredKeys) != hashAxiosRequest(prevReq, ignoredKeys)\n}\n\nfunction hashAxiosRequest(req: AxiosRequestConfig | undefined, ignoredKeys: string[]): string {\n if (!req) {\n return ''\n }\n\n return JSON.stringify(req, (key: string, value: unknown): unknown => {\n if (key.startsWith(IGNORE_KEY_PREFIX)) {\n return undefined\n }\n if (ignoredKeys.indexOf(key) >= 0) {\n return undefined\n }\n if (value === undefined) {\n return null\n }\n return value\n })\n}\n","import { computed, proxyRefs, shallowReactive } from 'vue'\n\nimport router from '@/router'\n\n// Composables\nimport { useStorage } from '@/use/local-storage'\nimport { useRoute } from '@/use/router'\nimport { defineStore } from '@/use/store'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios } from '@/use/watch-axios'\nimport { Project } from '@/org/use-projects'\n\nexport interface User {\n id: number\n name: string\n email: string\n avatar: string\n}\n\nexport const useUser = defineStore(() => {\n const route = useRoute()\n const { loading, data, request } = useAxios()\n\n const user = computed((): User => {\n return shallowReactive(data.value?.user ?? { id: 0, name: 'Guest', budget: 0 })\n })\n\n const isAuth = computed((): boolean => {\n return Boolean(user.value.id)\n })\n\n const projects = computed((): Project[] => {\n return data.value?.projects ?? []\n })\n\n const lastProjectId = useStorage(\n computed(() => `last-project-id:${user.value.id}`),\n 0,\n )\n const activeProjectId = computed(() => {\n if (route.value.params.projectId) {\n return parseInt(route.value.params.projectId)\n }\n if (!lastProjectId.value) {\n return projects.value[0]?.id\n }\n const found = projects.value.find((p) => p.id === lastProjectId.value)\n if (found) {\n return found.id\n }\n return projects.value[0]?.id\n })\n\n let req: Promise\n\n getOrLoad()\n\n function reload() {\n req = request({ url: '/internal/v1/users/current' })\n return req\n }\n\n async function getOrLoad() {\n if (!req) {\n reload()\n }\n return await req\n }\n\n function logout() {\n return request({ method: 'POST', url: '/internal/v1/users/logout' }).then(() => {\n reload().finally(() => {\n redirectToLogin()\n })\n })\n }\n\n return proxyRefs({\n loading,\n current: user,\n isAuth,\n projects,\n lastProjectId,\n activeProjectId,\n\n reload,\n getOrLoad,\n logout,\n })\n})\n\nexport function redirectToLogin() {\n router.push({ name: 'Login' }).catch(() => {})\n}\n\ninterface SsoMethod {\n name: string\n url: string\n}\n\nexport function useSso() {\n const { loading, data } = useWatchAxios(() => {\n return { url: '/internal/v1/sso/methods' }\n })\n\n const methods = computed((): SsoMethod[] => {\n return data.value?.methods ?? []\n })\n\n return proxyRefs({ loading, methods })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-sm\"},[_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(\"Page not found\")])],1),_c('v-container',{staticClass:\"mb-6\"},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-text',{staticClass:\"text-subtitle-1\"},[_vm._v(\" Sorry, the requested page can't be found. The development team has been notified. \")])],1)],1),_c('HelpLinks')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(\"See also\")])],1),_c('v-container',{staticClass:\"mb-6\"},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-text',{staticClass:\"text-subtitle-1 text--primary\"},[_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/\",\"target\":\"_blank\"}},[_vm._v(\"Documentation\")]),_vm._v(\" to get you started with OpenTelemetry distros for Uptrace. \")]),_c('li',[_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/\",\"target\":\"_blank\"}},[_vm._v(\"OpenTelemetry knowledge base\")]),_vm._v(\", for example, \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/distributed-tracing.html\",\"target\":\"_blank\"}},[_vm._v(\"tracing\")]),_vm._v(\" and \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/metrics.html\",\"target\":\"_blank\"}},[_vm._v(\"metrics\")]),_vm._v(\". \")]),_c('li',[_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/instrumentations/\",\"target\":\"_blank\"}},[_vm._v(\"Instrumentations\")]),_vm._v(\". A list of OpenTelemetry instrumentations. \")]),_c('li',[_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/attributes.html\",\"target\":\"_blank\"}},[_vm._v(\"Semantic Attributes\")]),_vm._v(\". A conventional list of semantic attributes recommended by OpenTelemetry. \")]),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/uptrace\",\"target\":\"_blank\"}},[_vm._v(\"Uptrace on GitHub\")])])])]),_c('v-card-text',{staticClass:\"text-subtitle-1 text--primary\"},[_vm._v(\" Have questions? Don't hesitate to \"),_c('a',{attrs:{\"href\":\"mailto:support@uptrace.dev\"}},[_vm._v(\"email\")]),_vm._v(\" us. We reply as soon as possible. \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'HelpLinks',\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpLinks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpLinks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HelpLinks.vue?vue&type=template&id=446e8ec1&scoped=true&\"\nimport script from \"./HelpLinks.vue?vue&type=script&lang=ts&\"\nexport * from \"./HelpLinks.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HelpLinks.vue?vue&type=style&index=0&id=446e8ec1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"446e8ec1\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Components\nimport HelpLinks from '@/components/HelpLinks.vue'\n\nexport default defineComponent({\n name: 'NotFoundPage',\n components: { HelpLinks },\n\n setup() {},\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotFoundPage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotFoundPage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotFoundPage.vue?vue&type=template&id=9f06a22a&scoped=true&\"\nimport script from \"./NotFoundPage.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotFoundPage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9f06a22a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'ProjectShow' },\"exact-path\":\"\"}},[_vm._v(\"Settings\")]),_c('v-tab',{attrs:{\"to\":{ name: 'ProjectDsn' },\"exact-path\":\"\"}},[_vm._v(\"DSN\")])],1)],1),(!_vm.project.data)?_c('v-container',[_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"card@3\"}})],1)],1)],1):_c('router-view',{attrs:{\"name\":\"tab\",\"project\":_vm.project.data,\"dsn\":_vm.project.dsn},scopedSlots:_vm._u([{key:\"breadcrumbs\",fn:function(){return [_c('v-breadcrumbs',{staticClass:\"px-1\",attrs:{\"large\":\"\",\"items\":_vm.breadcrumbs,\"divider\":\">\"}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs, Ref } from 'vue'\n\n// Composables\nimport { injectForceReload } from '@/use/force-reload'\nimport { useUser } from '@/org/use-users'\nimport { useWatchAxios } from '@/use/watch-axios'\n\nexport interface Project {\n id: number\n name: string\n groupByEnv: boolean\n groupFuncsByService: boolean\n pinnedAttrs: string[]\n largeAttrs: string[]\n token: string\n}\n\nexport function useProject() {\n const user = useUser()\n const forceReload = injectForceReload()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const projectId = user.activeProjectId\n const url = `/internal/v1/projects/${projectId}`\n return { url, params: forceReload.params }\n })\n\n const project = computed((): Project | undefined => {\n return data.value?.project\n })\n\n const dsn = computed((): string => {\n return data.value?.dsn ?? 'http://project1_secret_token@localhost:14318?grpc=14317'\n })\n\n const pinnedAttrs = computed(() => {\n return project.value?.pinnedAttrs ?? []\n })\n\n const largeAttrs = computed(() => {\n return project.value?.largeAttrs ?? []\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: project,\n dsn,\n pinnedAttrs,\n largeAttrs,\n })\n}\n\nexport function useDsn(dsn: Ref) {\n const url = computed(() => {\n return new URL(dsn.value)\n })\n\n const insecure = computed(() => {\n return url.value.protocol === 'http:'\n })\n\n const grpcEndpoint = computed(() => {\n switch (url.value.hostname) {\n case 'uptrace.dev':\n case 'api.uptrace.dev':\n return 'https://otlp.uptrace.dev:4317'\n default: {\n const port = url.value.searchParams.get('grpc') ?? 4317\n return `${url.value.protocol}//${url.value.hostname}:${port}`\n }\n }\n })\n\n const httpEndpoint = computed(() => {\n switch (url.value.hostname) {\n case 'uptrace.dev':\n case 'api.uptrace.dev':\n return 'https://otlp.uptrace.dev'\n default:\n return `${url.value.protocol}//${url.value.host}`\n }\n })\n\n return proxyRefs({\n original: dsn,\n insecure,\n grpcEndpoint,\n httpEndpoint,\n })\n}\n","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useProject } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'Project',\n\n setup() {\n const project = useProject()\n useTitle(\n computed(() => {\n return project.data?.name ?? 'Project'\n }),\n )\n\n const breadcrumbs = computed(() => {\n const ss: any[] = [{ text: 'Projects' }]\n\n if (project.data) {\n ss.push({ text: project.data.name })\n } else {\n ss.push({ text: 'Project' })\n }\n\n return ss\n })\n\n return {\n breadcrumbs,\n\n project,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Project.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Project.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Project.vue?vue&type=template&id=5e128db6&scoped=true&\"\nimport script from \"./Project.vue?vue&type=script&lang=ts&\"\nexport * from \"./Project.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Project.vue?vue&type=style&index=0&id=5e128db6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e128db6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-md\"},[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":\"\"}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Project Settings\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-text',{staticClass:\"text-subtitle-1\"},[_c('p',[_vm._v(\" You can change project settings in the \"),_c('code',[_vm._v(\"uptrace.yml\")]),_vm._v(\" config file. See \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/config.html#managing-projects\",\"target\":\"_blank\"}},[_vm._v(\"documentation\")]),_vm._v(\" for details. \")]),_c('v-form',[_c('v-text-field',{attrs:{\"disabled\":_vm.disabled,\"label\":\"Name\",\"filled\":\"\"},model:{value:(_vm.project.name),callback:function ($$v) {_vm.$set(_vm.project, \"name\", $$v)},expression:\"project.name\"}}),_c('v-select',{attrs:{\"label\":\"Pinned attributes\",\"items\":_vm.project.pinnedAttrs,\"multiple\":\"\",\"disabled\":_vm.disabled,\"filled\":\"\"},model:{value:(_vm.project.pinnedAttrs),callback:function ($$v) {_vm.$set(_vm.project, \"pinnedAttrs\", $$v)},expression:\"project.pinnedAttrs\"}}),_c('v-checkbox',{attrs:{\"label\":\"Group spans by deployment.environment attribute\",\"disabled\":_vm.disabled,\"hide-details\":\"auto\"},model:{value:(_vm.project.groupByEnv),callback:function ($$v) {_vm.$set(_vm.project, \"groupByEnv\", $$v)},expression:\"project.groupByEnv\"}}),_c('v-checkbox',{attrs:{\"label\":\"Group funcs spans by service_name attribute\",\"disabled\":_vm.disabled,\"hide-details\":\"auto\"},model:{value:(_vm.project.groupFuncsByService),callback:function ($$v) {_vm.$set(_vm.project, \"groupFuncsByService\", $$v)},expression:\"project.groupFuncsByService\"}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'ProjectSettings',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: true,\n },\n },\n\n setup(props) {\n const title = computed(() => {\n return `Settings | ${props.project.name}`\n })\n useTitle(title)\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectSettings.vue?vue&type=template&id=70527edc&scoped=true&\"\nimport script from \"./ProjectSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectSettings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70527edc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-md\"},[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":\"\"}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Data Source Name\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-card-text',{staticClass:\"text-subtitle-1\"},[_vm._v(\" Use the DSN (Data Source Name) below to \"),_c('router-link',{attrs:{\"to\":{ name: 'TracingHelp' }}},[_vm._v(\"configure your app\")]),_vm._v(\" to send data to Uptrace. You can change the token in the \"),_c('code',[_vm._v(\"uptrace.yml\")]),_vm._v(\" config file. \")],1),_c('v-data-table',{attrs:{\"hide-default-footer\":\"\",\"headers\":_vm.headers,\"items\":_vm.tokens}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'ProjectDsn',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n dsn: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n useTitle(\n computed((): string => {\n return `Data Source Name | ${props.project.name}`\n }),\n )\n\n const headers = [{ text: 'DSN', value: 'dsn', sortable: false }]\n\n const tokens = computed(() => {\n if (!props.project) {\n return []\n }\n return [{ dsn: props.dsn }]\n })\n\n return { headers, tokens }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectDsn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectDsn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectDsn.vue?vue&type=template&id=32d3227a&scoped=true&\"\nimport script from \"./ProjectDsn.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectDsn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32d3227a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'AlertList' }}},[_vm._v(\"Alerts\")]),_c('v-tab',{attrs:{\"to\":{ name: 'MonitorList' }}},[_vm._v(\"Monitors\")]),_c('v-tab',{attrs:{\"to\":{ name: 'NotifChannelList' }}},[_vm._v(\"Channels\")]),_c('v-tab',{attrs:{\"to\":{ name: 'NotifChannelEmail' }}},[_vm._v(\"Email notifications\")]),_c('v-tab',{attrs:{\"to\":{ name: 'AnnotationList' }}},[_vm._v(\"Annotations\")])],1)],1),_c('router-view',{attrs:{\"name\":\"alerting\"},scopedSlots:_vm._u([{key:\"breadcrumbs\",fn:function(){return [_c('v-breadcrumbs',{staticClass:\"px-1\",attrs:{\"large\":\"\",\"items\":_vm.breadcrumbs,\"divider\":\">\"}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useProject } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'Alerting',\n\n setup() {\n const project = useProject()\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n })\n\n bs.push({ text: 'Alerting' })\n\n return bs\n })\n\n return { breadcrumbs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Alerting.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Alerting.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Alerting.vue?vue&type=template&id=681c0fd6&scoped=true&\"\nimport script from \"./Alerting.vue?vue&type=script&lang=ts&\"\nexport * from \"./Alerting.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Alerting.vue?vue&type=style&index=0&id=681c0fd6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"681c0fd6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-toolbar-title',[_vm._v(\"Alerts\")]),_c('v-btn',{staticClass:\"ml-10\",attrs:{\"small\":\"\",\"plain\":\"\",\"href\":\"https://uptrace.dev/get/alerting.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Documentation\")]),_c('v-icon',{staticClass:\"ml-1\",attrs:{\"small\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1),_c('v-spacer'),_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})],1),_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"4\",\"md\":\"3\"}},[_c('AlertsSidebar',{attrs:{\"faceted-search\":_vm.facetedSearch,\"facets\":_vm.alerts.facets}})],1),_c('v-col',{attrs:{\"cols\":\"8\",\"md\":\"9\"}},[(_vm.alerts.items.length)?_c('v-simple-table',{staticClass:\"border-bottom\"},[_c('thead',[_c('tr',[_c('td',[_c('AlertSelection',{attrs:{\"selection\":_vm.selection},on:{\"change\":function($event){return _vm.alerts.reload()}}})],1),_c('td',{staticClass:\"d-flex align-center justify-end\"},[_c('AlertOrderPicker',{staticStyle:{\"max-width\":\"200px\"},model:{value:(_vm.alerts.order.column),callback:function ($$v) {_vm.$set(_vm.alerts.order, \"column\", $$v)},expression:\"alerts.order.column\"}})],1)])])]):_vm._e(),_c('AlertsTable',{attrs:{\"loading\":_vm.alerts.loading,\"alerts\":_vm.pageAlerts},on:{\"click:alert\":function($event){return _vm.showAlert($event)},\"click:chip\":_vm.facetedSearch.select},scopedSlots:_vm._u([{key:\"prepend-column\",fn:function({ alert }){return [_c('td',{staticClass:\"pr-0\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.selection.alertIds.includes(alert.id)},on:{\"click\":function($event){$event.stopPropagation();return _vm.selection.toggle(alert)}}})],1)]}}])}),_c('XPagination',{staticClass:\"mt-4\",attrs:{\"pager\":_vm.pager}})],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"1200\",\"content-class\":\"overflow-y-scroll dialog--top\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.dialog)?_c('v-sheet',[_c('AlertCard',{attrs:{\"loading\":_vm.alerts.loading,\"alert-id\":_vm.activeAlertId,\"fluid\":_vm.$vuetify.breakpoint.mdAndDown},on:{\"change\":_vm.alerts.reload}})],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { shallowRef, computed, watch, proxyRefs } from 'vue'\n\ninterface PagePos {\n start: number\n end: number\n}\n\nexport type UsePager = ReturnType\n\nexport function usePager(perPageValue = 10) {\n const numItem = shallowRef(0)\n const page = shallowRef(1)\n const perPage = shallowRef(perPageValue)\n\n const pos = computed((): PagePos => {\n const start = (page.value - 1) * perPage.value\n let end = start + perPage.value\n if (end > numItem.value) {\n end = numItem.value\n }\n return { start, end }\n })\n\n const numPage = computed(() => {\n const maxNumPage = 1000\n\n const numPage = Math.ceil(numItem.value / perPage.value)\n if (numPage > maxNumPage) {\n return maxNumPage\n }\n return numPage\n })\n\n const hasPrev = computed(function () {\n return page.value > 1\n })\n function prev() {\n if (hasPrev.value) {\n page.value--\n }\n }\n\n const hasNext = computed(function () {\n return page.value < numPage.value\n })\n function next() {\n if (hasNext.value) {\n page.value++\n }\n }\n\n function reset() {\n page.value = 1\n }\n\n function axiosParams() {\n return {\n page: page.value,\n limit: perPage.value,\n }\n }\n\n watch(numPage, (numPage) => {\n if (page.value > numPage) {\n page.value = 1\n }\n })\n\n return proxyRefs({\n numItem,\n page,\n perPage,\n\n pos,\n numPage,\n\n hasPrev,\n prev,\n hasNext,\n next,\n\n reset,\n axiosParams,\n })\n}\n","import { shallowRef, computed, proxyRefs, ComputedRef } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\nimport { useAxios } from '@/use/axios'\nimport { useOrder } from '@/use/order'\nimport { Facet } from '@/use/faceted-search'\n\n// Misc\nimport { Unit } from '@/util/fmt'\nimport { MetricAlias } from '@/metrics/types'\n\ninterface BaseAlert {\n id: number\n projectId: number\n\n name: string\n attrs: Record\n\n type: AlertType\n status: AlertStatus\n params: unknown\n\n spanGroupId: number\n monitorId: number\n\n time: string\n createdAt: string\n updatedAt: string\n}\n\nexport enum AlertType {\n Error = 'error',\n Metric = 'metric',\n}\n\nexport enum AlertStatus {\n Open = 'open',\n Closed = 'closed',\n}\n\nexport interface ErrorAlert extends BaseAlert {\n type: AlertType.Error\n params: {\n spanId: string\n traceId: string\n spanCount: number\n }\n}\n\nexport interface MetricAlert extends BaseAlert {\n type: AlertType.Metric\n params: MetricAlertParams\n}\n\nexport interface MetricAlertParams {\n firing: number\n initialValue: number\n currentValue: number\n normalValue: number\n\n numPointFiring: number\n\n bounds: {\n min: number | null\n max: number | null\n }\n\n monitor: {\n metrics: MetricAlias[]\n query: string\n column: string\n columnUnit: Unit\n }\n}\n\nexport interface AnomalyDetector {\n median: number\n mean: number\n leftDev: number\n rightDev: number\n}\n\nexport type Alert = ErrorAlert | MetricAlert\n\nexport type UseAlerts = ReturnType\n\nexport function useAlerts(axiosParams: ComputedRef>) {\n const route = useRoute()\n const order = useOrder()\n\n const { status, loading, data, reload } = useWatchAxios(\n () => {\n const projectId = route.value.params.projectId\n const req = {\n url: `/internal/v1/projects/${projectId}/alerts`,\n params: {\n ...order.axiosParams,\n ...axiosParams.value,\n },\n }\n return req\n },\n { debounce: 500 },\n )\n\n const alerts = computed((): Alert[] => {\n return data.value?.alerts ?? []\n })\n\n const facets = computed((): Facet[] => {\n return data.value?.facets ?? []\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n order,\n\n items: alerts,\n facets,\n })\n}\n\nexport function useAlert(reqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(reqSource)\n\n const alert = computed((): Alert | undefined => {\n return data.value?.alert\n })\n\n return proxyRefs({ status, loading, data: alert, reload })\n}\n\nexport function useAlertManager() {\n const route = useRoute()\n\n const { loading: pending, request } = useAxios()\n\n function toggle(alert: Alert) {\n if (alert.status === AlertStatus.Closed) {\n return open([alert])\n }\n return close([alert])\n }\n\n function close(alerts: Alert[]) {\n return toggleAlerts(alerts, AlertStatus.Closed)\n }\n\n function open(alerts: Alert[]) {\n return toggleAlerts(alerts, AlertStatus.Open)\n }\n\n function toggleAlerts(alerts: Alert[], status: AlertStatus) {\n const alertIds = alerts.map((alert) => alert.id)\n\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/alerts/${status}`\n return request({ method: 'PUT', url, data: { alertIds } })\n }\n\n function closeAll() {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/alerts/close-all`\n return request({ method: 'PUT', url })\n }\n\n function del(alerts: Alert[]) {\n const alertIds = alerts.map((alert) => alert.id)\n\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/alerts`\n return request({ method: 'DELETE', url, data: { alertIds } })\n }\n\n return proxyRefs({\n pending,\n\n toggle,\n close,\n open,\n closeAll,\n delete: del,\n })\n}\n\nexport type UseAlertSelection = ReturnType\n\nexport function useAlertSelection(\n alerts: ComputedRef,\n alertsOnPage: ComputedRef,\n) {\n const selectedAlertIds = shallowRef([])\n\n const activeAlerts = computed((): Alert[] => {\n return alerts.value.filter((alert: Alert) => {\n return selectedAlertIds.value.includes(alert.id)\n })\n })\n\n const selectedAlertsOnPage = computed((): Alert[] => {\n return alertsOnPage.value.filter((alert: Alert) => selectedAlertIds.value.includes(alert.id))\n })\n\n const isFullPageSelected = computed(() => {\n return alertsOnPage.value.every((alert) => selectedAlertIds.value.includes(alert.id))\n })\n\n const isAllSelected = computed((): boolean => {\n return alerts.value.every((alert) => selectedAlertIds.value.includes(alert.id))\n })\n\n const closedAlerts = computed((): Alert[] => {\n return activeAlerts.value.filter((alert: Alert) => {\n return alert.status === AlertStatus.Closed\n })\n })\n\n const openAlerts = computed((): Alert[] => {\n return activeAlerts.value.filter((alert: Alert) => {\n return alert.status !== AlertStatus.Closed\n })\n })\n\n function toggle(alert: Alert) {\n const index = selectedAlertIds.value.findIndex((alertId) => alertId === alert.id)\n if (index >= 0) {\n selectedAlertIds.value.splice(index, 1)\n } else {\n selectedAlertIds.value.push(alert.id)\n }\n selectedAlertIds.value = selectedAlertIds.value.slice()\n }\n\n function toggleAll() {\n if (isAllSelected.value) {\n selectedAlertIds.value = []\n return\n }\n\n selectedAlertIds.value = alerts.value.map((alert: Alert) => {\n return alert.id\n })\n }\n\n function togglePage() {\n if (!selectedAlertsOnPage.value.length) {\n selectedAlertIds.value = [\n ...selectedAlertIds.value,\n ...alertsOnPage.value.map((alert) => alert.id),\n ]\n return\n }\n\n selectedAlertsOnPage.value.map((alert) => {\n const index = selectedAlertIds.value.findIndex((alertId) => alertId === alert.id)\n if (index >= 0) {\n selectedAlertIds.value.splice(index, 1)\n }\n })\n selectedAlertIds.value = selectedAlertIds.value.slice()\n }\n\n function reset() {\n selectedAlertIds.value = []\n }\n\n return proxyRefs({\n alerts: activeAlerts,\n alertsOnPage: selectedAlertsOnPage,\n isFullPageSelected,\n isAllSelected,\n\n allAlerts: alerts,\n openAlerts,\n closedAlerts,\n alertIds: selectedAlertIds,\n\n toggle,\n togglePage,\n toggleAll,\n reset,\n })\n}\n","import { debounce } from 'lodash-es'\nimport type { Ref } from 'vue-demi'\nimport { ref, watch } from 'vue-demi'\n\ninterface DebouncedRef extends Ref {\n flush: () => void\n cancel: () => void\n}\n/**\n * Debounce updates of a ref.\n *\n * @return A new debounced ref.\n */\nexport function refDebounced(value: Ref, ms = 200): Readonly> {\n const debounced = ref(value.value as T) as Ref\n\n const updater = debounce(() => {\n debounced.value = value.value\n }, ms)\n\n Object.defineProperty(debounced, 'flush', {\n value() {\n updater()\n updater.flush()\n },\n enumerable: false,\n })\n Object.defineProperty(debounced, 'cancel', { value: updater.cancel, enumerable: false })\n\n watch(value, () => updater())\n\n return debounced as DebouncedRef\n}\n","import { shallowRef, computed, proxyRefs } from 'vue'\nimport { refDebounced } from '@/use/ref-debounced'\n\n// Composables\nimport { Values } from '@/use/router'\n\nexport interface Facet {\n key: string\n items: FacetItem[]\n}\n\nexport interface FacetItem {\n key: string\n value: string\n count: number\n}\n\nexport type UseFacetedSearch = ReturnType\n\nexport function useFacetedSearch() {\n const queryPrefix = 'attrs.'\n\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n const selected = shallowRef>({})\n\n const selectedLength = computed((): number => {\n return Object.keys(selected.value).length\n })\n\n function select(item: FacetItem) {\n selected.value = {\n ...selected.value,\n [item.key]: [item.value],\n }\n }\n\n function toggle(item: FacetItem) {\n let value = selected.value[item.key]\n\n if (value) {\n const idx = value.indexOf(item.value)\n if (idx >= 0) {\n value.splice(idx, 1)\n } else {\n value.push(item.value)\n }\n } else {\n value = [item.value]\n }\n\n selected.value = {\n ...selected.value,\n [item.key]: value,\n }\n }\n\n function toggleOne(item: FacetItem) {\n let value = selected.value[item.key]\n\n if (value && value.length === 1 && value.includes(item.value)) {\n value = []\n } else {\n value = [item.value]\n }\n\n selected.value = {\n ...selected.value,\n [item.key]: value,\n }\n }\n\n function isSelected(item: FacetItem): boolean {\n const value = selected.value[item.key]\n return value && value.includes(item.value)\n }\n\n function resetAll() {\n selected.value = {}\n }\n\n function axiosParams() {\n const params: Record = {}\n if (debouncedSearchInput.value) {\n params.q = debouncedSearchInput.value\n }\n for (let key in selected.value) {\n params[`attrs[${key}]`] = selected.value[key]\n }\n return params\n }\n\n function queryParams() {\n const queryParams: Record = {\n q: debouncedSearchInput.value,\n }\n for (let key in selected.value) {\n queryParams[queryPrefix + key] = selected.value[key]\n }\n return queryParams\n }\n\n function parseQueryParams(queryParams: Values) {\n searchInput.value = queryParams.string('q')\n debouncedSearchInput.flush()\n\n selected.value = {}\n queryParams.forEach((key, value) => {\n if (!key.startsWith(queryPrefix)) {\n return\n }\n key = key.slice(queryPrefix.length)\n selected.value[key] = value\n })\n }\n\n return proxyRefs({\n searchInput,\n selected,\n selectedLength,\n\n isSelected,\n select,\n toggle,\n toggleOne,\n resetAll,\n\n axiosParams,\n queryParams,\n parseQueryParams,\n })\n}\n","import { shallowRef, computed, watch, proxyRefs } from 'vue'\n\nimport { Values } from '@/use/router'\n\nexport interface Order {\n column: string\n desc: boolean\n}\n\nexport type UseOrder = ReturnType\n\nexport function useOrder() {\n const column = shallowRef('')\n const desc = shallowRef(true)\n\n const axiosParams = shallowRef({})\n let watchPaused = false\n\n const icon = computed(() => {\n return desc.value ? 'mdi-arrow-down' : 'mdi-arrow-up'\n })\n\n watch(\n () => {\n const params: Record = {}\n if (column.value) {\n params.sort_by = column.value\n params.sort_desc = desc.value\n }\n return params\n },\n (params) => {\n if (!watchPaused) {\n axiosParams.value = params\n }\n },\n { immediate: true, flush: 'sync' },\n )\n\n function queryParams() {\n if (column.value) {\n return {\n sort_by: column.value,\n sort_desc: desc.value,\n }\n }\n return {}\n }\n\n function parseQueryParams(queryParams: Values) {\n column.value = queryParams.string('sort_by')\n desc.value = queryParams.boolean('sort_desc', true)\n }\n\n function change(order: Order): boolean {\n if (column.value !== order.column || desc.value !== order.desc) {\n column.value = order.column\n desc.value = order.desc\n return true\n }\n return false\n }\n\n function toggle(columnValue: string): void {\n if (column.value === columnValue) {\n desc.value = !desc.value\n return\n }\n column.value = columnValue\n desc.value = true\n }\n\n function thClass(columnValue: string): string[] {\n const cls = ['cursor-pointer']\n if (column.value === columnValue) {\n cls.push('active')\n }\n if (desc.value) {\n cls.push('desc')\n } else {\n cls.push('asc')\n }\n return cls\n }\n\n function withPausedWatch(cb: () => void) {\n watchPaused = true\n const result = cb()\n watchPaused = false\n return result\n }\n\n function reset() {\n column.value = ''\n desc.value = true\n }\n\n return proxyRefs({\n column,\n desc,\n icon,\n\n axiosParams,\n withPausedWatch,\n\n change,\n reset,\n toggle,\n thClass,\n\n queryParams,\n parseQueryParams,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-btn',{attrs:{\"loading\":_vm.forceReload.loading,\"small\":_vm.small,\"outlined\":\"\"},on:{\"click\":function($event){return _vm.forceReload.do()}}},[_vm._v(\"Reload\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { injectForceReload } from '@/use/force-reload'\n\nexport default defineComponent({\n name: 'ForceReloadBtn',\n\n props: {\n small: {\n type: Boolean,\n default: false,\n },\n },\n\n setup() {\n const forceReload = injectForceReload()\n return { forceReload }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ForceReloadBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ForceReloadBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ForceReloadBtn.vue?vue&type=template&id=6f822228&scoped=true&\"\nimport script from \"./ForceReloadBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./ForceReloadBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f822228\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-text-field',{attrs:{\"outlined\":\"\",\"dense\":\"\",\"prepend-inner-icon\":\"mdi-magnify\",\"placeholder\":\"Search alerts...\",\"clearable\":\"\"},model:{value:(_vm.facetedSearch.q),callback:function ($$v) {_vm.$set(_vm.facetedSearch, \"q\", $$v)},expression:\"facetedSearch.q\"}}),_c('SearchFacets',{attrs:{\"facets\":_vm.facets,\"faceted-search\":_vm.facetedSearch}}),(_vm.facetedSearch.selectedLength)?_c('div',{staticClass:\"text-center\"},[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.facetedSearch.resetAll}},[_vm._v(\"Reset all\")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',_vm._l((_vm.facets),function(facet){return _c('v-sheet',{key:facet.key,staticClass:\"mb-4\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('SearchFacetList',{attrs:{\"faceted-search\":_vm.facetedSearch,\"facet\":facet}})],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list',{attrs:{\"value\":_vm.facetedSearch.selected[_vm.facet.key]}},[_c('v-subheader',[_vm._v(_vm._s(_vm.facet.key))]),(_vm.facet.items.length > _vm.pager.perPage)?_c('v-text-field',{staticClass:\"mx-2 mb-2\",attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"clearable\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}):_vm._e(),_vm._l((_vm.pagedItems),function(item){return _c('v-list-item',{key:item.value,attrs:{\"value\":item.value,\"dense\":\"\"},on:{\"click\":function($event){return _vm.facetedSearch.toggleOne(item)}}},[_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.facetedSearch.isSelected(item)},on:{\"click\":function($event){$event.stopPropagation();return _vm.facetedSearch.toggle(item)}}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.value))])],1),_c('v-list-item-action',{staticClass:\"my-0 justify-end\"},[('count' in item)?_c('v-list-item-action-text',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(item.count)+\" \")]):_vm._e()],1)],1)}),(_vm.pager.numPage > 1)?_c('XPagination',{attrs:{\"pager\":_vm.pager,\"total-visible\":\"5\",\"show-pager\":false}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { usePager } from '@/use/pager'\nimport { Facet, UseFacetedSearch } from '@/use/faceted-search'\n\nexport default defineComponent({\n name: 'SearchFacetList',\n\n props: {\n facetedSearch: {\n type: Object as PropType,\n required: true,\n },\n facet: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const searchInput = shallowRef('')\n const pager = usePager()\n\n const filteredItems = computed(() => {\n if (!searchInput.value) {\n return props.facet.items\n }\n\n return fuzzyFilter(props.facet.items, searchInput.value, { key: 'value' })\n })\n\n const pagedItems = computed(() => {\n return filteredItems.value.slice(pager.pos.start, pager.pos.end)\n })\n\n watch(\n () => filteredItems.value.length,\n (numItem) => {\n pager.numItem = numItem\n },\n { immediate: true },\n )\n\n return {\n searchInput,\n pagedItems,\n pager,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFacetList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFacetList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchFacetList.vue?vue&type=template&id=53c39372&scoped=true&\"\nimport script from \"./SearchFacetList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchFacetList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchFacetList.vue?vue&type=style&index=0&id=53c39372&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"53c39372\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { Facet, UseFacetedSearch } from '@/use/faceted-search'\n\n// Components\nimport SearchFacetList from '@/components/SearchFacetList.vue'\n\nexport default defineComponent({\n name: 'SearchFacets',\n components: { SearchFacetList },\n\n props: {\n facetedSearch: {\n type: Object as PropType,\n required: true,\n },\n facets: {\n type: Array as PropType,\n required: true,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFacets.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFacets.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchFacets.vue?vue&type=template&id=75f205c4&scoped=true&\"\nimport script from \"./SearchFacets.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchFacets.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75f205c4\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseFacetedSearch, Facet } from '@/use/faceted-search'\n\n// Components\nimport SearchFacets from '@/components/SearchFacets.vue'\n\nexport default defineComponent({\n name: 'AlertsSidebar',\n components: { SearchFacets },\n\n props: {\n facetedSearch: {\n type: Object as PropType,\n required: true,\n },\n facets: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup() {\n return {}\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsSidebar.vue?vue&type=template&id=03c36588&scoped=true&\"\nimport script from \"./AlertsSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsSidebar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsSidebar.vue?vue&type=style&index=0&id=03c36588&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03c36588\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex\"},[_c('v-simple-checkbox',{attrs:{\"value\":_vm.selection.isFullPageSelected,\"indeterminate\":_vm.selection.alertsOnPage.length > 0 && !_vm.selection.isFullPageSelected,\"ripple\":false},on:{\"click\":_vm.selection.togglePage}}),_c('v-btn',{staticClass:\"ml-3\",attrs:{\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.selection.toggleAll}},[_c('span',[_vm._v(\" \"+_vm._s(_vm.selection.isAllSelected ? 'Deselect all' : 'Select all'))]),(_vm.selection.alerts.length)?_c('span',[_vm._v(\"(\"+_vm._s(_vm.selection.alerts.length)+\")\")]):_vm._e()]),(_vm.selection.openAlerts.length)?_c('v-btn',{staticClass:\"ml-3\",attrs:{\"loading\":_vm.alertMan.pending,\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.closeAlerts}},[_vm._v(\" Close (\"+_vm._s(_vm.selection.openAlerts.length)+\") \")]):_vm._e(),(_vm.selection.closedAlerts.length)?_c('v-btn',{staticClass:\"ml-3\",attrs:{\"loading\":_vm.alertMan.pending,\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.openAlerts}},[_vm._v(\" Open (\"+_vm._s(_vm.selection.closedAlerts.length)+\") \")]):_vm._e(),(_vm.selection.alerts.length)?_c('v-btn',{staticClass:\"ml-3\",attrs:{\"loading\":_vm.alertMan.pending,\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.deleteAlerts}},[_vm._v(\" Delete (\"+_vm._s(_vm.selection.alerts.length)+\") \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { shallowRef } from 'vue'\n\nimport { defineStore } from '@/use/store'\n\nexport const useConfirm = defineStore(() => {\n const dialog = shallowRef(false)\n const message = shallowRef('')\n const title = shallowRef('')\n const width = shallowRef(400)\n\n let promiseResolve: (value: unknown) => void\n let promiseReject: () => void\n\n function open(titleValue: string, msg: string) {\n title.value = titleValue\n message.value = msg\n dialog.value = true\n\n return new Promise((resolve, reject) => {\n promiseResolve = resolve\n promiseReject = reject\n })\n }\n\n function agree() {\n promiseResolve(undefined)\n dialog.value = false\n }\n\n function cancel() {\n promiseReject()\n dialog.value = false\n }\n\n return {\n dialog,\n message,\n title,\n width,\n\n open,\n agree,\n cancel,\n }\n})\n","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\nimport { useAlertManager, UseAlertSelection } from '@/alerting/use-alerts'\n\nexport default defineComponent({\n name: 'AlertsSelection',\n\n props: {\n selection: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const confirm = useConfirm()\n const alertMan = useAlertManager()\n\n function openAlerts() {\n alertMan.open(props.selection.closedAlerts).then(() => {\n props.selection.reset()\n ctx.emit('change')\n })\n }\n\n function closeAlerts() {\n alertMan.close(props.selection.openAlerts).then(() => {\n props.selection.reset()\n ctx.emit('change')\n })\n }\n\n function deleteAlerts() {\n confirm\n .open('Delete', 'Do you really want to delete selected alerts?')\n .then(() => {\n alertMan.delete(props.selection.alerts).then(() => {\n props.selection.reset()\n ctx.emit('change')\n })\n })\n .catch(() => {})\n }\n\n return {\n alertMan,\n\n closeAlerts,\n openAlerts,\n deleteAlerts,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertSelection.vue?vue&type=template&id=1f74f78e&scoped=true&\"\nimport script from \"./AlertSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertSelection.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f74f78e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"dense\":\"\",\"solo\":\"\",\"flat\":\"\",\"filled\":\"\",\"hide-details\":\"\",\"mandatory\":\"\",\"items\":_vm.items},scopedSlots:_vm._u([{key:\"prepend-inner\",fn:function(){return [_c('v-icon',[_vm._v(\"mdi-sort-descending\")])]},proxy:true}]),model:{value:(_vm.order),callback:function ($$v) {_vm.order=$$v},expression:\"order\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, watch } from 'vue'\n\nexport default defineComponent({\n name: 'AlertsOrderPicker',\n\n props: {\n value: {\n type: String,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const order = shallowRef(props.value)\n const items = [\n {\n text: 'Updated at',\n value: 'updated_at',\n },\n {\n text: 'Created at',\n value: 'created_at',\n },\n ]\n\n watch(order, (order) => ctx.emit('input', order), { immediate: true })\n\n return {\n order,\n items,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertOrderPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertOrderPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertOrderPicker.vue?vue&type=template&id=2b260ac8&scoped=true&\"\nimport script from \"./AlertOrderPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertOrderPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b260ac8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-simple-table',{staticClass:\"table-truncate-target\"},[_c('colgroup',[_c('col'),_c('col',{staticClass:\"target\"}),_c('col'),_c('col')]),_c('thead',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}]},[_c('tr',{staticClass:\"v-data-table__progress\"},[_c('th',{staticClass:\"column\",attrs:{\"colspan\":\"99\"}},[_c('v-progress-linear',{attrs:{\"height\":\"2\",\"absolute\":\"\",\"indeterminate\":\"\"}})],1)])]),(!_vm.alerts.length)?_c('tbody',[_c('tr',{staticClass:\"v-data-table__empty-wrapper\"},[_c('td',{staticClass:\"py-16 text-subtitle-1\",attrs:{\"colspan\":\"99\"}},[_c('v-icon',{staticClass:\"mb-4\",attrs:{\"size\":\"48\"}},[_vm._v(\"mdi-magnify\")]),_c('p',[_vm._v(\"You don't have alerts that match selected filters.\")])],1)])]):_vm._e(),_c('tbody',_vm._l((_vm.alerts),function(alert){return _c('AlertsTableRow',{key:alert.id,attrs:{\"alert\":alert},on:{\"click:alert\":function($event){return _vm.$emit('click:alert', alert)},\"click:chip\":function($event){return _vm.$emit('click:chip', $event)}},scopedSlots:_vm._u([{key:\"prepend-column\",fn:function(){return [_vm._t(\"prepend-column\",null,{\"alert\":alert})]},proxy:true}],null,true)})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){return _vm.$emit('click:alert', _vm.alert)}}},[_vm._t(\"prepend-column\",null,{\"alert\":_vm.alert}),_c('td',{staticClass:\"target\"},[_c('div',{staticClass:\"mb-1 font-weight-medium\"},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"color\":_vm.statusColor}},[_vm._v(_vm._s(_vm.alert.status === _vm.AlertStatus.Open ? 'mdi-alert-circle-outline' : 'mdi-alert-circle-check-outline'))]),_vm._v(\" \"+_vm._s(_vm.alert.name)+\" \")],1),_c('AlertChips',{attrs:{\"alert\":_vm.alert},on:{\"click:chip\":function($event){return _vm.$emit('click:chip', $event)}}}),_c('span',{staticClass:\"ml-3 text-caption text--secondary\"},[_c('span',[_vm._v(\"Created \")]),_c('DateValue',{attrs:{\"value\":_vm.alert.createdAt,\"format\":\"relative\"}})],1),(_vm.alert.updatedAt !== _vm.alert.createdAt)?_c('span',{staticClass:\"ml-3 text-caption text--secondary\"},[_c('span',[_vm._v(\"Updated \")]),_c('DateValue',{attrs:{\"value\":_vm.alert.updatedAt,\"format\":\"relative\"}})],1):_vm._e()],1),_c('td',{staticClass:\"text-center text-caption font-weight-medium\"},[(_vm.alert.type === _vm.AlertType.Metric)?[_c('MetricMonitorTrigger',{attrs:{\"alert\":_vm.alert}}),_c('AlertSparklineMetric',{attrs:{\"alert\":_vm.alert}})]:[(_vm.alert.params.spanCount)?_c('div',[_c('NumValue',{attrs:{\"value\":_vm.alert.params.spanCount}}),_vm._v(\" occurrences \")],1):_vm._e(),_c('AlertSparklineError',{attrs:{\"alert\":_vm.alert}})]],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('NumValue',{attrs:{\"value\":_vm.alert.params.currentValue,\"unit\":_vm.unit}}),(_vm.alert.params.firing === 1)?[_c('span',{staticClass:\"mx-1\"},[_vm._v(\"is greater than\")]),_c('NumValue',{attrs:{\"value\":_vm.alert.params.bounds.max,\"unit\":_vm.unit,\"format\":\"short\"}})]:(_vm.alert.params.firing === -1)?[_c('span',{staticClass:\"mx-1\"},[_vm._v(\"is smaller than\")]),_c('NumValue',{attrs:{\"value\":_vm.alert.params.bounds.min,\"unit\":_vm.unit,\"format\":\"short\"}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { MetricAlert } from '@/alerting/use-alerts'\n\nexport default defineComponent({\n name: 'MetricMonitorTrigger',\n\n props: {\n alert: {\n type: Object as PropType,\n required: true,\n },\n verbose: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const unit = computed(() => {\n return props.alert.params.monitor.columnUnit\n })\n\n return { unit }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricMonitorTrigger.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricMonitorTrigger.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricMonitorTrigger.vue?vue&type=template&id=37612456&scoped=true&\"\nimport script from \"./MetricMonitorTrigger.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricMonitorTrigger.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37612456\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('SparklineChart',{attrs:{\"name\":_vm.AttrKey.spanCountPerMin,\"line\":_vm.timeseries.data[_vm.AttrKey.spanCountPerMin] ?? [],\"time\":_vm.timeseries.time}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { shallowRef, computed, watch, proxyRefs } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useOrder, Order } from '@/use/order'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\nimport { BackendQueryInfo } from '@/use/uql'\n\nexport interface ColumnInfo {\n name: string\n unit: string\n isNum: boolean\n isGroup: boolean\n}\n\nexport interface Group extends Record {\n _id: string\n _name: string\n _query: string\n}\n\nexport type UseGroups = ReturnType\n\ninterface ExploreConfig {\n order?: Order\n}\n\nexport function useGroups(axiosParamsSource: AxiosParamsSource, conf: ExploreConfig = {}) {\n const route = useRoute()\n const hasMore = shallowRef(false)\n const order = useOrder()\n\n const axiosParams = computed(() => {\n return axiosParamsSource()\n })\n\n const { status, loading, error, data } = useWatchAxios(() => {\n if (!axiosParams.value) {\n return axiosParams.value\n }\n\n const params: Record = {\n ...axiosParams.value,\n ...order.axiosParams,\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/groups`,\n params,\n }\n })\n\n const lastAxiosParams = computed(() => {\n if (loading.value) {\n return { _: undefined }\n }\n return axiosParams.value\n })\n\n const groups = computed((): Group[] => {\n const groups: Group[] = data.value?.groups ?? []\n return groups\n })\n\n const queryInfo = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n const columns = computed((): ColumnInfo[] => {\n return data.value?.columns ?? []\n })\n\n const plottableColumns = computed((): ColumnInfo[] => {\n return columns.value.filter((col) => !col.isGroup && col.isNum)\n })\n\n watch(\n () => data.value?.hasMore ?? false,\n (hasMoreValue) => {\n hasMore.value = hasMoreValue\n },\n { immediate: true },\n )\n\n watch(\n (): Order | undefined => data.value?.order,\n (orderValue) => {\n if (orderValue) {\n order.withPausedWatch(() => {\n order.change(orderValue)\n })\n }\n },\n )\n\n return proxyRefs({\n status,\n loading,\n error,\n\n order,\n axiosParams: lastAxiosParams,\n\n items: groups,\n hasMore,\n\n queryInfo,\n columns,\n plottableColumns,\n })\n}\n\nexport function useGroupTimeseries(paramsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const { data } = useWatchAxios(\n () => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/group-stats`,\n params: paramsSource(),\n cache: true,\n }\n },\n { debounce: 500 },\n )\n\n const metrics = computed((): Record => {\n return data.value ?? {}\n })\n\n const time = computed((): string[] => {\n return data.value?._time ?? []\n })\n\n return proxyRefs({ data: metrics, time })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('EChart',{attrs:{\"width\":_vm.chart.width,\"height\":_vm.chart.height,\"option\":_vm.chart.option,\"group\":_vm.group,\"no-resize\":\"\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"element-resize\",rawName:\"v-element-resize\"}],staticClass:\"echart-container\",style:({\n width: _vm.withUnit(_vm.width),\n height: _vm.withUnit(_vm.height),\n }),on:{\"resize\":_vm.onResizeDebounced}},[_c('div',{ref:\"div\"}),_c('v-menu',{attrs:{\"position-x\":_vm.popover.x,\"position-y\":_vm.popover.y,\"absolute\":\"\",\"close-on-content-click\":false,\"z-index\":\"999\"},model:{value:(_vm.popover.menu),callback:function ($$v) {_vm.$set(_vm.popover, \"menu\", $$v)},expression:\"popover.menu\"}},[(_vm.popover.annotation)?_c('v-card',[_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"text-subtitle-1\",attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"font-weight-medium\",attrs:{\"cols\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.popover.annotation.name)+\" \")]),_c('v-col',{staticClass:\"text-body-2 text--secondary\",attrs:{\"cols\":\"auto\"}},[_c('DateValue',{attrs:{\"value\":_vm.popover.annotation.createdAt,\"format\":\"relative\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"small\":\"\",\"text\":\"\",\"color\":\"primary\",\"to\":{ name: 'AnnotationShow', params: { annotationId: _vm.popover.annotation.id } }}},[_vm._v(\"Edit\")])],1)],1),(Object.keys(_vm.popover.annotation.attrs).length)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('AnnotationAttrs',{attrs:{\"attrs\":_vm.popover.annotation.attrs}})],1)],1):_vm._e(),(_vm.popover.annotation.description)?_c('v-row',[_c('v-col',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.popover.descriptionMarkdown)}})])],1):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._l((_vm.attrs),function(value,key){return [_c('v-tooltip',{key:key,attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-chip',_vm._g(_vm._b({staticClass:\"mr-1\",attrs:{\"small\":_vm.small,\"label\":\"\"}},'v-chip',attrs,false),on),[_vm._v(\" \"+_vm._s(value ? _vm.truncate(value, { length: 20 }) : key)+\" \")])]}}],null,true)},[_vm._v(\" \"+_vm._s(key)+\": \"+_vm._s(value)+\" \")])]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'AnnotationAttrs',\n\n props: {\n attrs: {\n type: Object as PropType>,\n required: true,\n },\n small: {\n type: Boolean,\n default: false,\n },\n },\n\n setup() {\n return {\n truncate,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationAttrs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationAttrs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationAttrs.vue?vue&type=template&id=42fd9112&scoped=true&\"\nimport script from \"./AnnotationAttrs.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationAttrs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42fd9112\",\n null\n \n)\n\nexport default component.exports","\nimport markdownit from 'markdown-it'\nimport { cloneDeep, debounce } from 'lodash-es'\nimport { init as initChart, ECharts } from 'echarts'\nimport colors from 'vuetify/lib/util/colors'\nimport {\n defineComponent,\n shallowRef,\n computed,\n proxyRefs,\n watch,\n onMounted,\n onBeforeUnmount,\n PropType,\n} from 'vue'\n\n// Composables\nimport { useDarkMode } from '@/use/dark-mode'\n\n// Components\nimport AnnotationAttrs from '@/alerting/AnnotationAttrs.vue'\n\n// Misc\nimport type { EChartsOption } from '@/util/chart'\nimport { Annotation } from '@/org/use-annotations'\n\ntype GroupName = string | symbol\n\nexport interface EChartProps {\n width?: number | string\n height: number | string\n option: EChartsOption\n}\n\nexport default defineComponent({\n name: 'EChart',\n components: { AnnotationAttrs },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n value: {\n type: Object as PropType,\n default: undefined,\n },\n width: {\n type: [Number, String],\n default: '100%',\n },\n height: {\n type: [Number, String],\n required: true,\n },\n option: {\n type: Object as PropType,\n default: undefined,\n },\n group: {\n type: [String, Symbol] as PropType,\n default: undefined,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n },\n\n setup(props, ctx) {\n const { isDark } = useDarkMode()\n let echart: ECharts | undefined\n const div = shallowRef()\n\n const config = computed(() => {\n if (!props.option) {\n return undefined\n }\n const conf = cloneDeep(props.option)\n for (let ann of props.annotations) {\n addAnnotation(conf, ann)\n }\n return conf\n })\n\n onMounted(() => {\n echart = init()\n\n watch(isDark, (isDark) => {\n if (echart) {\n destroy(echart)\n }\n echart = init()\n if (config.value) {\n setOptionDebounced(config.value)\n }\n })\n\n watch(\n config,\n (config) => {\n if (config) {\n setOptionDebounced(config)\n }\n },\n { immediate: true },\n )\n\n watch(\n () => props.loading,\n (loading) => {\n if (!echart) {\n return\n }\n if (loading) {\n echart.showLoading()\n } else {\n echart.hideLoading()\n }\n },\n { immediate: true },\n )\n })\n\n onBeforeUnmount(() => {\n if (!echart) {\n return\n }\n\n destroy(echart)\n echart = undefined\n })\n\n function init() {\n const echart = initChart(div.value!, isDark.value ? 'custom-dark' : undefined)\n initAnnotations(echart)\n\n ctx.emit('input', echart)\n\n if (props.group) {\n register(props.group, echart)\n }\n\n return echart\n }\n\n function destroy(echart: ECharts) {\n if (props.group) {\n unregister(props.group, echart)\n }\n echart.dispose()\n }\n\n const popover = usePopover()\n function initAnnotations(echart: ECharts) {\n const dom = echart.getDom()\n echart.on('click', function (params: any) {\n const annId = parseInt(params.seriesId, 10)\n if (!annId) {\n return\n }\n\n const found = props.annotations.find((ann) => ann.id == annId)\n if (!found) {\n return\n }\n\n const event = params.event.event\n popover.annotation = found\n popover.x = event.clientX\n popover.y = dom.getBoundingClientRect().top + dom.clientHeight - 25\n popover.menu = true\n })\n }\n\n const setOptionDebounced = debounce((option: EChartsOption) => {\n if (!echart) {\n return\n }\n echart.setOption(option, { notMerge: true, silent: true })\n }, 10)\n\n const onResizeDebounced = debounce(() => {\n if (echart) {\n echart.resize()\n }\n }, 50)\n\n return { popover, div, withUnit, onResizeDebounced }\n },\n})\n\nfunction withUnit(v: number | string): string {\n if (typeof v === 'number') {\n return v + 'px'\n }\n return v\n}\n\n//------------------------------------------------------------------------------\n\nconst groupMap: Record = {}\n\nfunction register(groupName: GroupName, echart: ECharts): void {\n let group = groupMap[groupName as string]\n if (!group) {\n group = []\n groupMap[groupName as string] = group\n }\n group.push(echart)\n connect(echart, group)\n}\n\nfunction unregister(groupName: GroupName, echart: ECharts): void {\n const group = groupMap[groupName as string]\n if (!group) {\n return\n }\n\n const idx = group.indexOf(echart)\n if (idx >= 0) {\n group.splice(idx, 1)\n }\n}\n\nexport function connect(echart: ECharts, group: ECharts[]) {\n echart.on('updateAxisPointer', function (params: any) {\n const payload = (echart as any).makeActionFromEvent(params)\n\n const axesInfo = payload.axesInfo || []\n for (let i = axesInfo.length - 1; i >= 0; i--) {\n if (axesInfo[i].axisDim === 'y') {\n axesInfo.splice(i, 1)\n }\n }\n\n for (let c of group) {\n if (c === echart) {\n continue\n }\n\n delete payload.axesInfo\n ;(c as any).dispatchAction(payload, true)\n }\n })\n}\n\nfunction addAnnotation(conf: EChartsOption, ann: Annotation) {\n let selected: Record | undefined = undefined\n if (conf.legend && conf.legend.length) {\n const legend = conf.legend[0]\n if (legend.selected) {\n selected = legend.selected\n }\n }\n\n let min = 0\n let max = Number.NaN\n\n for (let ds of conf.dataset) {\n const source = ds.source as Record\n for (let key in source) {\n if (key === 'time') {\n continue\n }\n if (selected && !selected[key]) {\n continue\n }\n\n const value = source[key]\n if (!Array.isArray(value)) {\n continue\n }\n\n const dsMin = Math.min(...value)\n if (Number.isNaN(min) || dsMin < min) {\n min = dsMin\n }\n\n const dsMax = Math.max(...value)\n if (Number.isNaN(max) || dsMax > max) {\n max = dsMax\n }\n }\n }\n\n if (Number.isNaN(max) || max === min) {\n max = min + 1\n }\n\n const time = ann.createdAt\n conf.series.push({\n id: ann.id,\n name: '_',\n type: 'line',\n data: [{ value: [time, min], symbol: 'square' }, { value: [time, max] }],\n color: ann.color || colors.pink.darken1,\n lineStyle: { width: 2, type: 'dashed' },\n symbol: 'none',\n symbolSize: 10,\n z: 999,\n triggerLineEvent: true,\n })\n}\n\nconst md = markdownit()\n\nfunction usePopover() {\n const menu = shallowRef(false)\n const annotation = shallowRef()\n const x = shallowRef(0)\n const y = shallowRef(0)\n\n const descriptionMarkdown = computed(() => {\n const text = annotation.value?.description ?? ''\n return md.render(text)\n })\n\n const attrKeys = computed(() => {\n const keys = Object.keys(annotation.value?.attrs ?? {})\n keys.sort()\n return keys\n })\n\n return proxyRefs({ menu, annotation, x, y, descriptionMarkdown, attrKeys })\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EChart.vue?vue&type=script&lang=ts&\"","export enum AttrKey {\n metricInstrument = '_instrument',\n\n spanId = '_id',\n spanParentId = '_parent_id',\n spanTraceId = '_trace_id',\n\n spanSystem = '_system',\n spanGroupId = '_group_id',\n\n spanName = '_name',\n spanEventName = '_event_name',\n\n spanIsEvent = '_is_event',\n spanKind = '_kind',\n spanTime = '_time',\n spanDuration = '_duration',\n\n spanStatusCode = '_status_code',\n spanStatusMessage = '_status_message',\n\n spanCount = '_count',\n spanCountSum = 'sum(_count)',\n spanCountPerMin = 'per_min(sum(_count))',\n spanErrorCount = '_error_count',\n spanErrorRate = '_error_rate',\n\n displayName = 'display_name',\n deploymentEnvironment = 'deployment_environment',\n service = 'service',\n serviceName = 'service_name',\n serviceVersion = 'service_version',\n hostName = 'host_name',\n enduserId = 'enduser_id',\n\n httpMethod = 'http_method',\n httpRoute = 'http_route',\n httpTarget = 'http_target',\n httpStatusCode = 'http_status_code',\n\n rpcMethod = 'rpc_method',\n\n dbSystem = 'db_system',\n dbOperation = 'db_operation',\n dbStatement = 'db_statement',\n dbSqlTable = 'db_sql_table',\n\n exceptionType = 'exception_type',\n exceptionMessage = 'exception_message',\n exceptionStacktrace = 'exception_stacktrace',\n\n logSeverity = 'log_severity',\n logSource = 'log_source',\n logFilePath = 'log_file_path',\n logFileName = 'log_file_name',\n logMessage = 'log_message',\n\n codeFunction = 'code_function',\n codeFilepath = 'code_filepath',\n\n otelLibraryName = 'otel_library_name',\n}\n\nexport enum SystemName {\n All = 'all',\n EventsAll = 'events:all',\n SpansAll = 'spans:all',\n LogAll = 'log:all',\n HttpAll = 'http:all',\n DbAll = 'db:all',\n\n LogWarn = 'log:warn',\n LogError = 'log:error',\n LogFatal = 'log:fatal',\n LogPanic = 'log:panic',\n Funcs = 'funcs',\n OtherEvents = 'other-events',\n\n LogPrefix = 'log:',\n MessagePrefix = 'message:',\n}\n\nexport enum EventName {\n Log = 'log',\n}\n\nexport function isSpanSystem(...systems: string[]): boolean {\n if (!systems.length) {\n return false\n }\n return systems.every((system) => {\n if (system === SystemName.All) {\n return false\n }\n return !isEventOrLogSystem(system)\n })\n}\n\nexport function isEventOrLogSystem(...systems: any[]): boolean {\n return isEventSystem(...systems) || isLogSystem(...systems)\n}\n\nexport function isLogSystem(...systems: any[]): boolean {\n if (!systems.length) {\n return false\n }\n return systems.every((system) => {\n if (typeof system !== 'string') {\n return true\n }\n return system.startsWith('log:')\n })\n}\n\nexport function isEventSystem(...systems: any[]): boolean {\n if (!systems.length) {\n return false\n }\n return systems.every((system) => {\n if (typeof system !== 'string') {\n return true\n }\n return (\n system === SystemName.EventsAll ||\n system === SystemName.OtherEvents ||\n system.startsWith(SystemName.MessagePrefix)\n )\n })\n}\n\nexport function isErrorSystem(...systems: string[]): boolean {\n if (!systems.length) {\n return false\n }\n return systems.every((system) => {\n switch (system) {\n case SystemName.LogError:\n case SystemName.LogFatal:\n case SystemName.LogPanic:\n return true\n }\n return false\n })\n}\n\nexport function systemMatches(system: string, pattern: string): boolean {\n switch (pattern) {\n case SystemName.All:\n return true\n case SystemName.SpansAll:\n return isSpanSystem(system)\n case SystemName.LogAll:\n return isLogSystem(system)\n case SystemName.EventsAll:\n return isEventSystem(system)\n default: {\n const [systemType, systemName] = splitTypeSystem(pattern)\n if (systemName === SystemName.All) {\n return system.startsWith(systemType + ':')\n }\n return system === pattern\n }\n }\n}\n\nexport function isGroupSystem(system: string | undefined): boolean {\n if (!system) {\n return false\n }\n return system === SystemName.All || system.endsWith(':all')\n}\n\nexport function systemType(system: string | undefined): string {\n const [typ] = splitTypeSystem(system)\n return typ\n}\n\nexport function splitTypeSystem(s: string | undefined): [string, string] {\n if (!s) {\n return ['', '']\n }\n\n const i = s.indexOf(':')\n if (i === -1) {\n return [s, s]\n }\n\n if (s.slice(i + 1) === SystemName.All) {\n return [s.slice(0, i), SystemName.All]\n }\n return [s.slice(0, i), s]\n}\n","import { AttrKey } from '@/models/otel'\n\nexport enum Metric {\n Count = 'count',\n Rate = 'rate',\n ErrorPct = 'errorPct',\n Failures = 'failures',\n Duration = 'duration',\n P50 = 'p50',\n P90 = 'p90',\n P99 = 'p99',\n Max = 'max',\n}\n\nexport enum Unit {\n None = '',\n Percents = 'percents',\n Utilization = 'utilization',\n\n Nanoseconds = 'nanoseconds',\n Microseconds = 'microseconds',\n Milliseconds = 'milliseconds',\n Seconds = 'seconds',\n\n Bytes = 'bytes',\n Kilobytes = 'kilobytes',\n Megabytes = 'megabytes',\n Gigabytes = 'gigabytes',\n Terabytes = 'terabytes',\n\n Date = 'date',\n Time = 'time',\n UnixTime = 'unix-time', // in seconds\n}\n\nexport const UNITS = [\n Unit.None,\n Unit.Bytes,\n Unit.Nanoseconds,\n Unit.Microseconds,\n Unit.Milliseconds,\n Unit.Seconds,\n Unit.Percents,\n]\n\nexport function isCustomUnit(unit: string): boolean {\n return unit.startsWith('{') && unit.endsWith('}')\n}\n\nexport function unitShortName(unit: Unit): string {\n switch (unit) {\n case Unit.None:\n return ''\n case Unit.Percents:\n return '%'\n case Unit.Utilization:\n return 'util'\n\n case Unit.Nanoseconds:\n return 'ns'\n case Unit.Microseconds:\n return 'us'\n case Unit.Milliseconds:\n return 'ms'\n case Unit.Seconds:\n return 's'\n\n case Unit.Bytes:\n return 'by'\n case Unit.Kilobytes:\n return 'kb'\n case Unit.Megabytes:\n return 'mb'\n case Unit.Gigabytes:\n return 'gb'\n case Unit.Terabytes:\n return 'tb'\n\n default:\n return unit\n }\n}\n\nexport function unitFromName(name: Metric | string, value?: unknown): Unit {\n const isNum = typeof value === 'number'\n\n if (!isNum && value !== undefined) {\n return Unit.None\n }\n\n switch (name) {\n case Metric.Count:\n case Metric.Rate:\n return Unit.None\n case Metric.ErrorPct:\n case Metric.Failures:\n return Unit.Percents\n case Metric.Duration:\n case Metric.P50:\n case Metric.P90:\n case Metric.P99:\n case Metric.Max:\n return Unit.Microseconds\n }\n\n let key = ''\n\n const m = name.match(/(\\S+)\\((\\S+)\\)/)\n if (m) {\n key = m[2]\n } else {\n key = name\n }\n\n if (isDurationField(key)) {\n return Unit.Microseconds\n }\n if (isByteField(key)) {\n return Unit.Bytes\n }\n if (isDateField(key)) {\n return Unit.Time\n }\n if (isPercentField(key)) {\n return Unit.Percents\n }\n\n return Unit.None\n}\n\nexport function isDurationField(s: string): boolean {\n return s === AttrKey.spanDuration || hasPart(s, 'duration') || hasPart(s, 'dur')\n}\n\nexport function isByteField(s: string): boolean {\n return hasPart(s, 'bytes')\n}\n\nexport function isDateField(s: string): boolean {\n return s === AttrKey.spanTime || hasPart(s, 'time') || hasPart(s, 'date')\n}\n\nexport function isRateField(s: string): boolean {\n return s === AttrKey.spanCountPerMin || hasPart(s, 'rate')\n}\n\nexport function isCountField(s: string): boolean {\n return s === AttrKey.spanCount || hasPart(s, 'count')\n}\n\nexport function isPercentField(s: string): boolean {\n return s === AttrKey.spanErrorRate || hasPart(s, 'pct') || hasPart(s, 'percent')\n}\n\nfunction hasPart(str: string, substr: string): boolean {\n return (\n str === substr || re(`^${substr}[^a-zA-Z]`).test(str) || re(`[^a-zA-Z]${substr}$`).test(str)\n )\n}\n\nfunction re(s: string) {\n return new RegExp(s, 'i')\n}\n","import { render, staticRenderFns } from \"./EChart.vue?vue&type=template&id=7d0a8685&scoped=true&\"\nimport script from \"./EChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./EChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./EChart.vue?vue&type=style&index=0&id=7d0a8685&prod&lang=scss&\"\nimport style1 from \"./EChart.vue?vue&type=style&index=1&id=7d0a8685&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d0a8685\",\n null\n \n)\n\nexport default component.exports","import numbro from 'numbro'\n\nexport interface Config {\n trimMantissa?: boolean\n forceSign?: boolean\n short?: boolean\n}\n\nexport function fixedMantissa(n: unknown, mantissa: number, conf: Config = {}): string {\n return formatNum(n, mantissa, { ...conf, trimMantissa: false })\n}\n\nexport function trimMantissa(n: unknown, mantissa: number, conf: Config = {}): string {\n return formatNum(n, mantissa, { ...conf, trimMantissa: true })\n}\n\nexport function formatNum(n: unknown, mantissa: number, conf: Config = {}): string {\n if (typeof n !== 'number') {\n return '0'\n }\n return numbro(n).format({\n mantissa,\n trimMantissa: conf.trimMantissa ?? true,\n forceSign: conf.forceSign ?? false,\n })\n}\n\nexport function mantissaSize(n: number): number {\n n = Math.abs(n)\n for (let i = 12; i >= -1; i--) {\n const threshold = 1 / Math.pow(10, i)\n if (n < threshold) {\n return i + 2\n }\n }\n return 0\n}\n\nexport function inflect(n: number, singular: string, plural: string): string {\n if (n === 1) {\n return singular\n }\n return plural\n}\n","import numbro from 'numbro'\n\nimport { trimMantissa, mantissaSize, Config } from './util'\n\nexport function num(n: any, conf: Config = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n\n if (abs < 1000) {\n return trimMantissa(n, mantissaSize(n), conf)\n }\n\n for (let suffix of ['k', 'mln', 'bln', 'tln']) {\n n /= 1000\n abs /= 1000\n if (abs < 10) {\n return trimMantissa(n, 2, conf) + suffix\n }\n if (abs < 100) {\n return trimMantissa(n, 1, conf) + suffix\n }\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + suffix\n }\n }\n\n return trimMantissa(n, 0, conf) + 'tln'\n}\n\nexport function numShort(n: any, conf = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n\n if (abs < 0.001) {\n return round(n, mantissaSize(n)).toExponential()\n }\n if (abs < 1000) {\n return trimMantissa(n, mantissaSize(n), conf)\n }\n\n for (let suffix of ['k', 'mn', 'bn', 'tn']) {\n n /= 1000\n abs /= 1000\n if (abs < 100) {\n return trimMantissa(n, 1, conf) + suffix\n }\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + suffix\n }\n }\n\n return trimMantissa(n, 0, conf) + 'tn'\n}\n\nexport function numVerbose(n: any, conf = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n return numbro(n).format({\n thousandSeparated: n >= 1e6,\n mantissa: mantissaSize(n),\n trimMantissa: true,\n ...conf,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport function percents(n: any, conf: Config = {}): string {\n if (n === null || isNaN(n)) {\n return 'null'\n }\n if (typeof n !== 'number') {\n return '0%'\n }\n const value = numbro(n).format({\n mantissa: mantissaSize(n),\n optionalMantissa: true,\n forceSign: conf.forceSign ?? false,\n })\n return value + '%'\n}\n\nexport function utilization(n: any, conf: Config = {}): string {\n if (n === null || isNaN(n)) {\n return 'null'\n }\n if (typeof n !== 'number') {\n return '0%'\n }\n\n return numbro(n).format({\n output: 'percent',\n mantissa: mantissaSize(n * 100),\n optionalMantissa: true,\n forceSign: conf.forceSign ?? false,\n })\n}\n\n//------------------------------------------------------------------------------\n\nfunction round(n: number, mantissa: number): number {\n const mul = Math.pow(10, mantissa)\n return Math.round((n + Number.EPSILON) * mul) / mul\n}\n","import enGB from 'date-fns/locale/en-GB'\nimport {\n isValid,\n parse,\n parseISO,\n format,\n formatDistanceToNow,\n formatRelative,\n addMilliseconds,\n subMilliseconds,\n} from 'date-fns'\n\nexport const MILLISECOND = 1\nexport const SECOND = 1000 * MILLISECOND\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\n\nexport function toDate(v: any): Date {\n if (v instanceof Date) {\n return v\n }\n if (typeof v === 'number') {\n return new Date(v)\n }\n if (typeof v !== 'string') {\n return new Date(NaN)\n }\n\n if (/^\\d+$/.test(v)) {\n return new Date(parseInt(v, 10) / 1e6)\n }\n\n const unix = Date.parse(v)\n return new Date(unix)\n}\n\nexport function date(v: number | string | Date | undefined, fmt = 'LLL d y'): string {\n return formatDate(v, fmt)\n}\n\nexport function dateShort(v: number | string | Date | undefined, fmt = 'LLL d'): string {\n return formatDate(v, fmt)\n}\n\nexport function datetime(v: number | string | Date | undefined, fmt = 'LLL d y HH:mm:ss'): string {\n return formatDate(v, fmt)\n}\n\nexport function datetimeShort(v: number | string | Date | undefined, fmt = 'LLL d HH:mm'): string {\n return formatDate(v, fmt)\n}\n\nexport function datetimeFull(\n v: number | string | Date | undefined,\n fmt = 'LLL d y HH:mm:ss.SSS',\n): string {\n return formatDate(v, fmt)\n}\n\nexport function time(v: number | string | Date | undefined, fmt = 'HH:mm:ss.SSS') {\n return formatDate(v, fmt)\n}\n\nfunction formatDate(v: number | string | Date | undefined, fmt: string): string {\n if (!v) {\n return String(v)\n }\n\n if (typeof v === 'string') {\n const date = parseISO(v)\n if (!isNaN(date.getTime())) {\n return format(date, fmt)\n }\n return String(v)\n }\n\n return format(v, fmt)\n}\n\nconst formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P',\n}\n\nconst locale = {\n ...enGB,\n formatRelative: (token: keyof typeof formatRelativeLocale) => formatRelativeLocale[token],\n}\n\nexport function relative(v: number | string | Date | undefined): string {\n if (!v) {\n return String(v)\n }\n if (typeof v === 'string') {\n v = parseISO(v)\n }\n return formatRelative(v, new Date(), { locale })\n}\n\nexport function fromNow(v: number | string | Date): string {\n return formatDistanceToNow(toDate(v))\n}\n\nconst basicFormat = \"yyyyMMdd'T'HHmmss\"\n\nexport function formatUTC(dt: Date): string {\n return format(toUTC(dt), basicFormat)\n}\n\nexport function parseUTC(s: string): Date {\n let dt = parse(s, basicFormat, new Date())\n if (isValid(dt)) {\n dt = toLocal(dt)\n return dt\n }\n return new Date(s)\n}\n\nexport function toUTC(dt: Date): Date {\n return addMilliseconds(dt, dt.getTimezoneOffset() * MINUTE)\n}\n\nexport function toLocal(dt: Date): Date {\n return subMilliseconds(dt, dt.getTimezoneOffset() * MINUTE)\n}\n\nexport function ceilDate(dt: Date, prec: number): Date {\n let r = dt.getTime() % prec\n if (r === 0) {\n return dt\n }\n return addMilliseconds(dt, prec - r)\n}\n\nexport function truncDate(dt: Date, prec: number): Date {\n let r = dt.getTime() % prec\n if (r === 0) {\n return dt\n }\n return subMilliseconds(dt, r)\n}\n","import { formatNum, trimMantissa, Config } from './util'\n\nexport function duration(n: number | undefined | null, conf: Config = {}): string {\n if (conf.short) {\n return durationShort(n, conf)\n }\n\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n\n if (abs < 1000) {\n return formatNum(n, 0) + 'ns'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 100) {\n return formatNum(n, 1, conf) + 'µs'\n }\n if (abs < 1000) {\n return formatNum(n, 0, conf) + 'µs'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 100) {\n return formatNum(n, 1, conf) + 'ms'\n }\n if (abs < 10000) {\n return formatNum(n, 0, conf) + 'ms'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 100) {\n return formatNum(n, 1, conf) + 's'\n }\n\n n /= 60\n abs = Math.abs(n)\n\n if (abs < 10) {\n return formatNum(n, 1, conf) + 'm'\n }\n if (abs < 100) {\n return formatNum(n, 0, conf) + 'm'\n }\n\n n /= 60\n abs = Math.abs(n)\n\n if (abs < 10) {\n return formatNum(n, 1, conf) + 'h'\n }\n return formatNum(n, 0, conf) + 'h'\n}\n\nexport function durationShort(n: number | undefined | null, conf: Config = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + 'ns'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + 'µs'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 10) {\n return trimMantissa(n, 1, conf) + 'ms'\n }\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + 'ms'\n }\n\n n /= 1000\n abs = Math.abs(n)\n\n if (abs < 100) {\n return trimMantissa(n, 1, conf) + 's'\n }\n\n n /= 60\n abs = Math.abs(n)\n\n if (abs < 10) {\n return trimMantissa(n, 1, conf) + 'm'\n }\n if (abs < 100) {\n return trimMantissa(n, 0, conf) + 'm'\n }\n\n n /= 60\n abs = Math.abs(n)\n\n if (abs < 10) {\n return trimMantissa(n, 1, conf) + 'h'\n }\n return trimMantissa(n, 0, conf) + 'h'\n}\n","import { formatNum, trimMantissa, Config } from './util'\n\nexport function bytes(n: any, conf: Config = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n if (abs < 10000) {\n return formatNum(n, 0, conf) + 'by'\n }\n\n for (let suffix of ['KB', 'MB', 'GB', 'TB', 'PB']) {\n n /= 1024\n abs /= 1024\n if (abs < 10) {\n return formatNum(n, 2, conf) + suffix\n }\n if (abs < 100) {\n return formatNum(n, 1, conf) + suffix\n }\n if (abs < 1000) {\n return formatNum(n, 0, conf) + suffix\n }\n }\n\n return formatNum(n, 0, conf) + 'PB'\n}\n\nexport function bytesShort(n: any, conf: Config = {}): string {\n if (n === null) {\n return 'null'\n }\n if (typeof n !== 'number' || n === 0) {\n return '0'\n }\n\n let abs = Math.abs(n)\n if (abs < 100) {\n return trimMantissa(n, 0, conf) + 'by'\n }\n\n for (let suffix of ['KB', 'MB', 'GB', 'TB', 'PB']) {\n n /= 1024\n abs /= 1024\n if (abs < 100) {\n return trimMantissa(n, 1, conf) + suffix\n }\n if (abs < 1000) {\n return trimMantissa(n, 0, conf) + suffix\n }\n }\n\n return trimMantissa(n, 0, conf) + 'PB'\n}\n","import { Unit } from '@/util/fmt/unit'\nimport { date, datetime } from '@/util/fmt/date'\nimport { num, numVerbose, numShort, percents, utilization } from '@/util/fmt/num'\nimport { bytes, bytesShort } from '@/util/fmt/bytes'\nimport { duration, durationShort } from '@/util/fmt/duration'\n\nexport interface Data extends Record {\n time: string[]\n count?: number[]\n rate: number[]\n errorPct?: number[]\n p50?: number[]\n p90?: number[]\n p99?: number[]\n max?: number[]\n minTime?: string\n maxTime?: string\n}\n\nexport function fmt(val: any, unit = '', ...args: any[]): string {\n return createFormatter(unit)(val, ...args)\n}\n\nexport type Formatter = (val: any, ...args: any[]) => string\n\nexport function createFormatter(unit: string): Formatter {\n if (typeof unit === 'function') {\n return unit\n }\n\n switch (unit) {\n case Unit.None:\n return none\n case Unit.Percents:\n return percents\n case Unit.Utilization:\n return utilization\n case Unit.Date:\n return date\n case Unit.Time:\n return datetime\n case Unit.Nanoseconds:\n return duration\n case Unit.Microseconds:\n return (val: any, ...args: any[]) => {\n return duration(adjustNumber(val, 1e3), ...args)\n }\n case Unit.Milliseconds:\n return (val: any, ...args: any[]) => {\n return duration(adjustNumber(val, 1e6), ...args)\n }\n case Unit.Seconds:\n return (val: any, ...args: any[]) => {\n return duration(adjustNumber(val, 1e9), ...args)\n }\n case Unit.Bytes:\n return bytes\n default:\n return (val: any) => {\n val = none(val)\n if (unit) {\n val += ' ' + unwrapUnit(unit)\n }\n return val\n }\n }\n}\n\nfunction unwrapUnit(unit: string): string {\n if (unit.length <= 2) {\n return unit\n }\n if (unit.startsWith('{') && unit.endsWith('}')) {\n return unit.slice(1, unit.length - 1)\n }\n return unit\n}\n\nexport function createShortFormatter(unit: Unit | string | Formatter): Formatter {\n if (typeof unit === 'function') {\n return unit\n }\n\n switch (unit) {\n case Unit.Percents:\n return percents\n case Unit.Utilization:\n return utilization\n case Unit.Time:\n return datetime\n case Unit.Nanoseconds:\n return durationShort\n case Unit.Microseconds:\n return (val: any, ...args: any[]) => {\n return durationShort(adjustNumber(val, 1e3), ...args)\n }\n case Unit.Milliseconds:\n return (val: any, ...args: any[]) => {\n return durationShort(adjustNumber(val, 1e6), ...args)\n }\n case Unit.Seconds:\n return (val: any, ...args: any[]) => {\n return durationShort(adjustNumber(val, 1e9), ...args)\n }\n case Unit.Bytes:\n return bytesShort\n default:\n return (val: any) => {\n // No unit.\n return noneShort(val)\n }\n }\n}\n\nexport function fmtShort(val: any, unit: Unit | string, ...args: any[]): string {\n return createShortFormatter(unit)(val, ...args)\n}\n\nexport function createVerboseFormatter(unit: Unit | string | Formatter): Formatter {\n if (typeof unit === 'function') {\n return unit\n }\n\n const fn = createFormatter(unit)\n if (fn === none) {\n return numVerbose\n }\n return fn\n}\n\nfunction none(v: unknown, conf = {}): string {\n if (v === undefined) {\n return ''\n }\n if (v === '') {\n return ''\n }\n if (typeof v === 'number') {\n return num(v, conf)\n }\n return String(v)\n}\n\nfunction noneShort(v: unknown): string {\n if (v === undefined) {\n return ''\n }\n if (v === '') {\n return ''\n }\n if (typeof v === 'number') {\n return numShort(v)\n }\n return String(v)\n}\n\nfunction adjustNumber(v: any, mod: number): any {\n if (typeof v === 'number') {\n return v * mod\n }\n return v\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst contrastColor = '#B9B8CE'\nconst backgroundColor = '#1E1E1E'\nconst axisCommon = function () {\n return {\n axisLine: {\n lineStyle: {\n color: contrastColor,\n },\n },\n splitLine: {\n lineStyle: {\n color: '#484753',\n },\n },\n splitArea: {\n areaStyle: {\n color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)'],\n },\n },\n minorSplitLine: {\n lineStyle: {\n color: '#20203B',\n },\n },\n }\n}\n\nconst colorPalette = [\n '#4992ff',\n '#7cffb2',\n '#fddd60',\n '#ff6e76',\n '#58d9f9',\n '#05c091',\n '#ff8a45',\n '#8d48e3',\n '#dd79ff',\n]\nconst theme = {\n darkMode: true,\n\n color: colorPalette,\n backgroundColor: backgroundColor,\n axisPointer: {\n lineStyle: {\n color: '#817f91',\n },\n crossStyle: {\n color: '#817f91',\n },\n label: {\n // TODO Contrast of label backgorundColor\n color: '#fff',\n },\n },\n legend: {\n textStyle: {\n color: contrastColor,\n },\n },\n textStyle: {\n color: contrastColor,\n },\n title: {\n textStyle: {\n color: '#EEF1FA',\n },\n subtextStyle: {\n color: '#B9B8CE',\n },\n },\n toolbox: {\n iconStyle: {\n borderColor: contrastColor,\n },\n },\n dataZoom: {\n borderColor: '#71708A',\n textStyle: {\n color: contrastColor,\n },\n brushStyle: {\n color: 'rgba(135,163,206,0.3)',\n },\n handleStyle: {\n color: '#353450',\n borderColor: '#C5CBE3',\n },\n moveHandleStyle: {\n color: '#B0B6C3',\n opacity: 0.3,\n },\n fillerColor: 'rgba(135,163,206,0.2)',\n emphasis: {\n handleStyle: {\n borderColor: '#91B7F2',\n color: '#4D587D',\n },\n moveHandleStyle: {\n color: '#636D9A',\n opacity: 0.7,\n },\n },\n dataBackground: {\n lineStyle: {\n color: '#71708A',\n width: 1,\n },\n areaStyle: {\n color: '#71708A',\n },\n },\n selectedDataBackground: {\n lineStyle: {\n color: '#87A3CE',\n },\n areaStyle: {\n color: '#87A3CE',\n },\n },\n },\n visualMap: {\n textStyle: {\n color: contrastColor,\n },\n },\n timeline: {\n lineStyle: {\n color: contrastColor,\n },\n label: {\n color: contrastColor,\n },\n controlStyle: {\n color: contrastColor,\n borderColor: contrastColor,\n },\n },\n calendar: {\n itemStyle: {\n color: backgroundColor,\n },\n dayLabel: {\n color: contrastColor,\n },\n monthLabel: {\n color: contrastColor,\n },\n yearLabel: {\n color: contrastColor,\n },\n },\n timeAxis: axisCommon(),\n logAxis: axisCommon(),\n valueAxis: axisCommon(),\n categoryAxis: axisCommon(),\n\n line: {\n symbol: 'circle',\n },\n graph: {\n color: colorPalette,\n },\n gauge: {\n title: {\n color: contrastColor,\n },\n axisLine: {\n lineStyle: {\n color: [[1, 'rgba(207,212,219,0.2)']],\n },\n },\n axisLabel: {\n color: contrastColor,\n },\n detail: {\n color: '#EEF1FA',\n },\n },\n candlestick: {\n itemStyle: {\n color: '#f64e56',\n color0: '#54ea92',\n borderColor: '#f64e56',\n borderColor0: '#54ea92',\n // borderColor: '#ca2824',\n // borderColor0: '#09a443'\n },\n },\n}\n;(theme.categoryAxis.splitLine as any).show = false\n\nexport default theme\n","import {\n registerTheme,\n EChartsOption as BaseEChartsOption,\n LegendComponentOption,\n GridComponentOption,\n XAXisComponentOption,\n YAXisComponentOption,\n DatasetComponentOption,\n SeriesOption,\n TooltipComponentOption,\n} from 'echarts'\n\n// Composables\nimport { useDarkMode } from '@/use/dark-mode'\n\n// Misc\nimport {\n createFormatter,\n createVerboseFormatter,\n createShortFormatter,\n Formatter,\n Unit,\n} from '@/util/fmt'\nimport { truncateMiddle } from '@/util/string'\nimport customDark from './custom-dark'\n\nregisterTheme('custom-dark', customDark)\n\nexport interface EChartsOption extends BaseEChartsOption {\n legend: LegendComponentOption[]\n grid: GridComponentOption[]\n xAxis: XAXisComponentOption[]\n yAxis: YAXisComponentOption[]\n dataset: DatasetComponentOption[]\n series: SeriesOption[]\n tooltip: TooltipComponentOption[]\n}\n\nexport function baseChartConfig(): EChartsOption {\n return {\n animation: false,\n textStyle: {\n fontFamily: '\"Roboto\", sans-serif',\n },\n\n toolbox: { show: false },\n dataZoom: [\n {\n type: 'inside',\n disabled: true,\n },\n ],\n\n legend: [],\n grid: [],\n xAxis: [],\n yAxis: [],\n dataset: [],\n series: [],\n tooltip: [],\n }\n}\n\nexport function addChartTooltip(cfg: any, tooltipCfg: TooltipComponentOption = {}) {\n const { isDark } = useDarkMode()\n cfg.tooltip.push({\n trigger: 'axis',\n appendToBody: true,\n axisPointer: {\n type: 'cross',\n link: [{ xAxisIndex: 'all' }],\n },\n className: ['echarts-tooltip', isDark.value ? 'theme--dark' : 'theme--light'].join(' '),\n ...tooltipCfg,\n })\n}\n\ninterface TooltipFormatterConfig {\n hideDate?: boolean\n highlighted?: Record\n}\n\nexport function createTooltipFormatter(\n formatter: string | Formatter | Record = Unit.None,\n conf: TooltipFormatterConfig = {},\n) {\n const cache: Record = {}\n\n function getFormatter(name: string): Formatter {\n let v = cache[name]\n if (!v) {\n if (typeof formatter === 'object') {\n v = createVerboseFormatter(formatter[name] ?? formatter[columnName(name)])\n } else {\n v = createVerboseFormatter(formatter)\n }\n cache[name] = v\n }\n return v\n }\n\n return (params: any): any => {\n const rows = []\n\n for (let p of params) {\n const value = p.value[p.encode.y[0]]\n if (value === null) {\n continue\n }\n\n const name = truncateMiddle(p.seriesName, 60)\n const fmt = getFormatter(p.seriesName)\n\n let cssClass = ''\n if (conf.highlighted && conf.highlighted[p.seriesIndex]) {\n cssClass = 'highlighted'\n }\n\n rows.push(\n `` +\n `${p.marker}` +\n `${name}` +\n `${fmt(value)}` +\n ``,\n )\n\n if (rows.length === 10) {\n break\n }\n }\n\n if (!rows.length) {\n return\n }\n\n const ss = [\n '
',\n conf.hideDate ? '' : `

${params[0].axisValueLabel}

`,\n '',\n '',\n rows.join(''),\n '',\n '
',\n ' {\n return fmt(toNumber(params.value))\n }\n}\n\nexport function axisLabelFormatter(unit = '') {\n if (unit === Unit.Percents) {\n unit = Unit.None\n }\n const fmt = createShortFormatter(unit)\n return (value: any): string => {\n return fmt(toNumber(value))\n }\n}\n\nfunction toNumber(v: any): any {\n if (typeof v === 'string') {\n const n = parseInt(v, 10)\n if (!isNaN(n)) {\n return n\n }\n }\n return v\n}\n\nexport interface MarkPoint {\n name: string\n value: number\n unit: string\n time: string\n}\n\nexport type HistogramBin = [number, number] // gte, lt\n\nexport type HeatmapPoint = [number, number, number] // [xIdx, yIdx, count]\n\nexport interface HistogramData {\n count: number[]\n bins: HistogramBin[]\n p50: number\n p90: number\n p99: number\n}\n\nexport function findBinIndex(bins: HistogramBin[], x: number): number {\n return bins.findIndex((bin) => {\n return x >= bin[0] && (bin[1] === 0 || x <= bin[1])\n })\n}\n\nexport function findBin(bins: HistogramBin[], x: number): HistogramBin | undefined {\n return bins.find((bin) => {\n return x >= bin[0] && (bin[1] === 0 || x <= bin[1])\n })\n}\n\nconst seriesNameRe = /^(.+)\\s+\\(.+\\)$/\n\nfunction columnName(s: string): string {\n const m = s.match(seriesNameRe)\n if (m) {\n return m[1]\n }\n return s\n}\n","\nimport colors from 'vuetify/lib/util/colors'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Components\nimport EChart, { EChartProps } from '@/components/EChart.vue'\n\n// Misc\nimport {\n baseChartConfig,\n addChartTooltip,\n createTooltipFormatter,\n EChartsOption,\n} from '@/util/chart'\n\nexport default defineComponent({\n name: 'SparklineChart',\n components: { EChart },\n\n props: {\n name: {\n type: String,\n required: true,\n },\n line: {\n type: Array as PropType,\n required: true,\n },\n time: {\n type: Array as PropType,\n required: true,\n },\n unit: {\n type: String,\n default: undefined,\n },\n color: {\n type: String,\n default: colors.blue.lighten1,\n },\n group: {\n type: [String, Symbol],\n default: undefined,\n },\n },\n\n setup(props) {\n const chart = computed(() => {\n const chart: Partial = {\n width: 100,\n height: 30,\n }\n\n const conf = baseChartConfig()\n addChartTooltip(conf, {\n axisPointer: undefined,\n formatter: createTooltipFormatter(props.unit),\n })\n\n conf.grid.push({\n show: true,\n top: 2,\n left: 2,\n right: 2,\n height: 27,\n borderWidth: 0,\n })\n\n conf.xAxis.push({\n type: 'time',\n show: true,\n axisLine: { lineStyle: { color: colors.grey.lighten2 } },\n axisTick: { show: false },\n axisLabel: { show: false },\n splitLine: { show: false },\n })\n\n conf.yAxis.push({\n type: 'value',\n show: false,\n })\n\n plotLine(conf, props.name, props.line, props.time)\n\n chart.option = conf\n return chart\n })\n\n function plotLine(conf: EChartsOption, name: string, line: number[], time: string[]) {\n conf.dataset.push({\n source: {\n time,\n [name]: line,\n },\n })\n\n conf.series.push({\n type: 'line',\n name: name,\n encode: { x: 'time', y: name },\n showSymbol: false,\n lineStyle: { width: 1 },\n itemStyle: { color: props.color },\n areaStyle: { opacity: 0.15 },\n })\n }\n\n return { chart }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SparklineChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SparklineChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SparklineChart.vue?vue&type=template&id=0b932398&scoped=true&\"\nimport script from \"./SparklineChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SparklineChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b932398\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, watch, PropType } from 'vue'\n\n// Composables\nimport { useDateRange } from '@/use/date-range'\nimport { ErrorAlert } from '@/alerting/use-alerts'\nimport { useGroupTimeseries } from '@/tracing/use-explore-spans'\n\n// Components\nimport SparklineChart from '@/components/SparklineChart.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'AlertSparkline',\n components: { SparklineChart },\n\n props: {\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const dateRange = useDateRange()\n watch(\n () => props.alert.updatedAt,\n (updatedAt) => {\n dateRange.changeAround(updatedAt, HOUR)\n },\n { immediate: true },\n )\n\n const timeseries = useGroupTimeseries(() => {\n return {\n ...dateRange.axiosParams(),\n query: `group by ${AttrKey.spanGroupId} | ${AttrKey.spanCountPerMin} | where ${AttrKey.spanGroupId} = ${props.alert.spanGroupId}`,\n column: AttrKey.spanCountPerMin,\n }\n })\n\n return { AttrKey, timeseries }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSparklineError.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSparklineError.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertSparklineError.vue?vue&type=template&id=128a872e&scoped=true&\"\nimport script from \"./AlertSparklineError.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertSparklineError.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"128a872e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.sparkline)?_c('SparklineChart',{attrs:{\"name\":_vm.monitor.column,\"unit\":_vm.monitor.columnUnit,\"line\":_vm.sparkline.value,\"time\":_vm.timeseries.time}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const eChart = [\n '#5470c6',\n '#91cc75',\n '#fac858',\n '#ee6666',\n '#73c0de',\n '#3ba272',\n '#fc8452',\n '#9a60b4',\n '#ea7ccc',\n]\n","import { set, del } from 'vue'\nimport { eChart as colorScheme } from '@/util/colorscheme'\n\nexport interface Dashboard {\n id: number\n projectId: number\n templateId: string\n\n name: string\n pinned: boolean\n\n minInterval: number\n timeOffset: number\n\n tableMetrics: MetricAlias[]\n tableQuery: string\n tableGrouping: string[]\n tableColumnMap: Record\n\n gridQuery: string\n gridMaxWidth: number\n}\n\nexport interface GridRow {\n id: number\n dashId: number\n\n title: string\n description: string\n expanded: boolean\n index: number\n\n items: GridItem[]\n\n createdAt: string\n updatedAt: string\n}\n\nexport interface GridItemPos {\n id: number\n width: number\n height: number\n xAxis: number\n yAxis: number\n}\n\ninterface BaseGridItem {\n id: number\n dashId: number\n dashKind: DashKind\n rowId: number\n\n title: string\n description: string\n\n width: number\n height: number\n xAxis: number\n yAxis: number\n\n type: GridItemType\n params: unknown\n\n createdAt: string\n updatedAt: string\n}\n\nexport enum DashKind {\n Invalid = '',\n Grid = 'grid',\n Table = 'table',\n}\n\nexport enum GridItemType {\n Invalid = '',\n Gauge = 'gauge',\n Chart = 'chart',\n Table = 'table',\n Heatmap = 'heatmap',\n}\n\nexport function emptyBaseGridItem(): BaseGridItem {\n return {\n id: 0,\n dashId: 0,\n dashKind: DashKind.Invalid,\n rowId: 0,\n\n title: '',\n description: '',\n\n xAxis: 0,\n yAxis: 0,\n width: 0,\n height: 0,\n\n type: GridItemType.Invalid,\n params: undefined,\n\n createdAt: '',\n updatedAt: '',\n }\n}\n\nexport interface ChartGridItem extends BaseGridItem {\n type: GridItemType.Chart\n params: ChartGridItemParams\n}\n\nexport interface ChartGridItemParams {\n chartKind: ChartKind\n metrics: MetricAlias[]\n query: string\n columnMap: Record\n timeseriesMap: Record\n connectNulls: boolean\n legend: ChartLegend\n}\n\nexport enum ChartKind {\n Line = 'line',\n Area = 'area',\n Bar = 'bar',\n StackedArea = 'stacked-area',\n StackedBar = 'stacked-bar',\n}\n\nexport interface TimeseriesStyle {\n color: string\n opacity: number\n lineWidth: number\n symbol: string\n symbolSize: number\n}\n\nexport interface ChartLegend {\n type: LegendType\n placement: LegendPlacement\n values: LegendValue[]\n maxLength?: number\n}\n\nexport enum LegendType {\n None = 'none',\n List = 'list',\n Table = 'table',\n}\n\nexport enum LegendPlacement {\n Bottom = 'bottom',\n Right = 'right',\n}\n\nexport enum LegendValue {\n Avg = 'avg',\n Min = 'min',\n Max = 'max',\n Last = 'last',\n}\n\nexport interface TableGridItem extends BaseGridItem {\n type: GridItemType.Table\n params: TableGridItemParams\n}\n\nexport interface TableGridItemParams {\n metrics: MetricAlias[]\n query: string\n columnMap: Record\n itemsPerPage: number\n denseTable: boolean\n}\n\nexport interface HeatmapGridItem extends BaseGridItem {\n type: GridItemType.Heatmap\n params: HeatmapGridItemParams\n}\n\nexport interface HeatmapGridItemParams {\n metric: string\n unit: string\n query: string\n}\n\nexport interface RowGridItem extends BaseGridItem {\n type: GridItemType.Invalid\n params: RowGridItemParams\n}\n\nexport interface RowGridItemParams {\n gridItems: GridItem[]\n}\n\nexport interface GaugeGridItem extends BaseGridItem {\n type: GridItemType.Gauge\n params: GaugeGridItemParams\n}\n\nexport interface GaugeGridItemParams {\n metrics: MetricAlias[]\n query: string\n columnMap: Record\n\n template: string\n valueMappings: ValueMapping[]\n}\n\nexport interface ValueMapping {\n op: MappingOp\n value: number\n text: string\n color: string\n}\n\nexport enum MappingOp {\n Any = 'any',\n Equal = 'eq',\n Lt = 'lt',\n Lte = 'lte',\n Gt = 'gt',\n Gte = 'gte',\n}\n\nexport function emptyValueMapping(): ValueMapping {\n return {\n op: MappingOp.Equal,\n value: 0,\n text: '',\n color: '',\n }\n}\n\nexport type GridItem = GaugeGridItem | ChartGridItem | TableGridItem | HeatmapGridItem\n\nexport interface Metric {\n id: string\n projectId: number\n\n name: string\n description: string\n instrument: Instrument\n unit: string\n attrKeys: string[]\n\n createdAt: string\n updatedAt: string\n}\n\nexport function emptyMetric() {\n return {\n id: '',\n projectId: 0,\n\n name: '',\n description: '',\n instrument: Instrument.Deleted,\n unit: '',\n attrKeys: [],\n\n createdAt: '',\n updatedAt: '',\n }\n}\n\nexport interface ActiveMetric extends Metric {\n alias: string\n}\n\nexport interface MetricAlias {\n name: string\n alias: string\n}\n\nexport enum Instrument {\n Deleted = 'deleted',\n Gauge = 'gauge',\n Additive = 'additive',\n Counter = 'counter',\n Histogram = 'histogram',\n Summary = 'summary',\n}\n\nexport interface MetricColumn {\n unit: string\n color: string\n}\n\nexport function emptyMetricColumn(): MetricColumn {\n return {\n unit: '',\n color: '',\n }\n}\n\nexport interface GaugeColumn {\n unit: string\n aggFunc: TableFunc\n}\n\nexport interface StyledGaugeColumn extends ColumnInfo, GaugeColumn {}\n\nexport function emptyGaugeColumn(): GaugeColumn {\n return {\n unit: '',\n aggFunc: TableFunc.Median,\n }\n}\n\nexport interface TableColumn extends MetricColumn {\n aggFunc: TableFunc\n sparklineDisabled: boolean\n}\n\nexport enum TableFunc {\n Min = 'min',\n Max = 'max',\n Sum = 'sum',\n Avg = 'avg',\n AvgZero = 'avg_zero',\n Median = 'median',\n Last = 'last',\n}\n\nexport const tableFuncItems = [\n { text: 'Median value', value: TableFunc.Median },\n { text: 'Min value', value: TableFunc.Min },\n { text: 'Max value', value: TableFunc.Max },\n { text: 'Sum of values', value: TableFunc.Sum },\n { text: 'Avg value', value: TableFunc.Avg },\n { text: 'Avg value after zeroing NANs', value: TableFunc.AvgZero },\n { text: 'Last value', value: TableFunc.Last },\n]\n\nexport function emptyTableColumn(): TableColumn {\n return {\n unit: '',\n color: '',\n aggFunc: TableFunc.Median,\n sparklineDisabled: false,\n }\n}\n\nexport interface Timeseries {\n id: string\n metric: string\n name: string\n unit: string\n attrs: Record\n attrsHash: string\n value: (number | null)[]\n\n last: number | null\n avg: number | null\n min: number | null\n max: number | null\n}\n\nexport interface StyledTimeseries extends Timeseries, TimeseriesStyle {}\n\nexport interface ColumnInfo {\n name: string\n unit: string\n isGroup?: boolean\n tableFunc?: string\n}\n\nexport interface StyledColumnInfo extends ColumnInfo {\n color: string\n}\n\nexport function defaultTimeseriesStyle(): TimeseriesStyle {\n return {\n color: '',\n opacity: 10,\n lineWidth: 1.5,\n symbol: 'none',\n symbolSize: 4,\n }\n}\n\nexport function defaultChartLegend(): ChartLegend {\n return {\n type: LegendType.List,\n placement: LegendPlacement.Bottom,\n values: [LegendValue.Avg],\n maxLength: 40,\n }\n}\n\ninterface BasicColumn {\n unit: string\n}\n\nexport function updateColumnMap(\n colMap: Record,\n columns: ColumnInfo[],\n empty: () => T,\n) {\n const unused = new Set(Object.keys(colMap))\n\n for (let col of columns) {\n if (col.isGroup) {\n continue\n }\n\n unused.delete(col.name)\n if (col.name in colMap) {\n continue\n }\n\n const data: Record = {\n ...empty(),\n unit: col.unit,\n }\n if (col.tableFunc) {\n data.aggFunc = col.tableFunc\n }\n\n set(colMap, col.name, data)\n }\n\n for (let colName of unused.values()) {\n del(colMap, colName)\n }\n}\n\ninterface ColoredColumn extends BasicColumn {\n color: string\n}\n\nexport function assignColors(colMap: Record, columns: ColumnInfo[]) {\n const colorSet = new Set(colorScheme)\n\n for (let colName in colMap) {\n const col = colMap[colName]\n if (col.color) {\n colorSet.delete(col.color)\n }\n }\n\n const colors = Array.from(colorSet)\n let index = 0\n for (let colName in colMap) {\n const col = colMap[colName]\n if (!col.color) {\n col.color = colors[index % colors.length]\n index++\n }\n }\n}\n\nexport interface TableRowData extends Record {\n _id: string\n _name: string\n _query: string\n _hash: string\n}\n","import { pick, orderBy, cloneDeep } from 'lodash-es'\nimport { shallowRef, reactive, computed, watch, proxyRefs, Ref } from 'vue'\nimport { refDebounced } from '@vueuse/core'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useOrder, Order } from '@/use/order'\nimport { useWatchAxios, AxiosParams, AxiosParamsSource } from '@/use/watch-axios'\nimport { BackendQueryInfo } from '@/use/uql'\n\n// Misc\nimport { eChart as colorScheme } from '@/util/colorscheme'\n\n// Misc\nimport {\n defaultTimeseriesStyle,\n Timeseries,\n StyledTimeseries,\n TimeseriesStyle,\n MetricColumn,\n TableColumn,\n ColumnInfo,\n StyledColumnInfo,\n TableRowData,\n} from '@/metrics/types'\n\nexport type UseTimeseries = ReturnType\n\ninterface TimeseriesConfig {\n cache?: boolean\n}\n\nexport function useTimeseries(axiosParamsSource: AxiosParamsSource, conf: TimeseriesConfig = {}) {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/timeseries`,\n params: axiosParamsSource(),\n cache: conf.cache ?? false,\n }\n })\n\n const query = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n const error = computed(() => {\n const parts = query.value?.parts ?? []\n for (let part of parts) {\n if (part.error) {\n return part.error\n }\n }\n return undefined\n })\n\n const timeseries = computed((): Timeseries[] => {\n const timeseries: Timeseries[] = data.value?.timeseries ?? []\n return timeseries.map((ts, i) => {\n return reactive({\n ...ts,\n\n last: lastValue(ts.value),\n avg: avgValue(ts.value),\n min: minValue(ts.value),\n max: maxValue(ts.value),\n })\n })\n })\n\n const time = computed((): string[] => {\n return data.value?.time ?? []\n })\n\n const emptyValue = computed(() => {\n const value = time.value.slice() as unknown as number[]\n value.fill(0)\n return value\n })\n\n const columns = computed((): ColumnInfo[] => {\n return data.value?.columns ?? []\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n query,\n error,\n items: timeseries,\n time,\n emptyValue,\n columns,\n })\n}\n\nfunction lastValue(ns: (number | null)[]): number | null {\n for (let i = ns.length - 1; i >= 0; i--) {\n const n = ns[i]\n if (n !== null) {\n return n\n }\n }\n return null\n}\n\nfunction avgValue(ns: (number | null)[]): number | null {\n let sum = 0\n let count = 0\n\n for (let n of ns) {\n if (n !== null) {\n sum += n\n count++\n }\n }\n\n if (count) {\n return sum / count\n }\n return 0\n}\n\nfunction minValue(ns: (number | null)[]): number | null {\n let min = Number.MAX_VALUE\n\n for (let n of ns) {\n if (n === null) {\n continue\n }\n if (n < min) {\n min = n\n }\n }\n\n if (min !== Number.MAX_VALUE) {\n return min\n }\n return null\n}\n\nfunction maxValue(ns: (number | null)[]): number | null {\n let max = Number.MIN_VALUE\n\n for (let n of ns) {\n if (n === null) {\n continue\n }\n if (n > max) {\n max = n\n }\n }\n\n if (max !== Number.MIN_VALUE) {\n return max\n }\n return null\n}\n\n//------------------------------------------------------------------------------\n\nexport function useStyledTimeseries(\n items: Ref,\n columnMap: Ref>,\n timeseriesMap: Ref>,\n) {\n return computed(() => {\n const timeseries = items.value.map((ts): StyledTimeseries => {\n return {\n ...ts,\n ...defaultTimeseriesStyle(),\n ...pick(columnMap.value[ts.metric], 'unit'),\n ...timeseriesMap.value[ts.name],\n }\n })\n\n const colorSet = new Set(colorScheme)\n const seen = new Set()\n\n for (let ts of timeseries) {\n if (!ts.color) {\n continue\n }\n\n if (seen.has(ts.color)) {\n ts.color = ''\n continue\n }\n\n colorSet.delete(ts.color)\n seen.add(ts.color)\n }\n\n const colors = Array.from(colorSet)\n let index = 0\n for (let ts of timeseries) {\n if (!ts.color) {\n ts.color = colors[index % colors.length]\n index++\n }\n }\n\n return timeseries\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport type UseTableQuery = ReturnType\n\nexport function useTableQuery(\n axiosParamsSource: AxiosParamsSource,\n columnMap: Ref>,\n) {\n const route = useRoute()\n const order = useOrder()\n\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n const hasMore = shallowRef(true)\n\n const axiosParams = computed(() => {\n return axiosParamsSource()\n })\n\n const { status, loading, error, data, reload } = useWatchAxios(() => {\n if (!axiosParams.value) {\n return axiosParams.value\n }\n\n const tableAgg: Record = {}\n for (let colName in columnMap.value) {\n const col = columnMap.value[colName]\n tableAgg[colName] = col.aggFunc\n }\n\n const params: Record = {\n ...axiosParams.value,\n ...order.axiosParams,\n search: debouncedSearchInput.value,\n table_agg: tableAgg,\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/table`,\n params,\n }\n })\n\n const lastAxiosParams = shallowRef()\n watch(data, () => {\n // Update axios params after data is fully loaded.\n lastAxiosParams.value = cloneDeep(axiosParams.value)\n })\n\n const items = computed((): TableRowData[] => {\n return data.value?.items ?? []\n })\n\n const sortedItems = computed(() => {\n const col = order.column\n if (!col) {\n return items.value\n }\n return orderBy(items.value, (item) => item[col] ?? '', order.desc ? 'desc' : 'asc')\n })\n\n const columns = computed((): ColumnInfo[] => {\n return data.value?.columns ?? []\n })\n\n const aggColumns = computed((): StyledColumnInfo[] => {\n const items = columns.value\n .filter((col) => !col.isGroup)\n .map((col) => {\n return {\n ...col,\n ...columnMap.value[col.name],\n }\n })\n\n const colorSet = new Set(colorScheme)\n\n for (let col of items) {\n if (!col.color) {\n continue\n }\n colorSet.delete(col.color)\n }\n\n const colors = Array.from(colorSet)\n let index = 0\n for (let col of items) {\n if (!col.color) {\n col.color = colors[index % colors.length]\n index++\n }\n }\n\n return items\n })\n\n const groupingColumns = computed((): string[] => {\n return columns.value.filter((col) => col.isGroup).map((col) => col.name)\n })\n\n const query = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n const queryError = computed(() => {\n const parts = query.value?.parts ?? []\n for (let part of parts) {\n if (part.error) {\n return part.error\n }\n }\n return undefined\n })\n\n watch(\n () => data.value?.hasMore ?? true,\n (hasMoreValue) => {\n hasMore.value = hasMoreValue\n },\n { immediate: true },\n )\n\n watch(\n (): Order | undefined => data.value?.order,\n (orderValue) => {\n if (orderValue) {\n order.withPausedWatch(() => {\n order.change(orderValue)\n })\n }\n },\n )\n\n return proxyRefs({\n status,\n loading,\n error,\n reload,\n\n order,\n axiosParams: lastAxiosParams,\n\n items: sortedItems,\n searchInput,\n hasMore,\n\n query,\n queryError,\n columns,\n aggColumns,\n groupingColumns,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport type UseHeatmapQuery = ReturnType\n\nexport function useHeatmapQuery(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const axiosParams = computed(() => {\n return axiosParamsSource()\n })\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n if (!axiosParams.value) {\n return axiosParams.value\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/heatmap`,\n params: axiosParams.value,\n }\n })\n\n const xAxis = computed(() => {\n return data.value?.heatmap?.xAxis ?? []\n })\n\n const yAxis = computed(() => {\n return data.value?.heatmap?.yAxis ?? []\n })\n\n const heatmapData = computed(() => {\n return data.value?.heatmap?.data ?? []\n })\n\n const query = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n const error = computed(() => {\n const parts = query.value?.parts ?? []\n for (let part of parts) {\n if (part.error) {\n return part.error\n }\n }\n return undefined\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n axiosParams,\n xAxis,\n yAxis,\n data: heatmapData,\n\n query,\n error,\n })\n}\n","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useDateRange } from '@/use/date-range'\nimport { MetricAlert } from '@/alerting/use-alerts'\nimport { useTimeseries } from '@/metrics/use-query'\n\n// Components\nimport SparklineChart from '@/components/SparklineChart.vue'\n\n// Misc\nimport { Timeseries } from '@/metrics/types'\nimport { AttrKey } from '@/models/otel'\nimport { HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'AlertSparklineMetric',\n components: { SparklineChart },\n\n props: {\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const dateRange = useDateRange()\n watch(\n () => props.alert.updatedAt,\n (updatedAt) => {\n dateRange.changeAround(updatedAt, HOUR)\n },\n { immediate: true },\n )\n\n const monitor = computed(() => {\n return props.alert.params.monitor\n })\n\n const timeseries = useTimeseries(() => {\n return {\n ...dateRange.axiosParams(),\n metric: monitor.value.metrics.map((m) => m.name),\n alias: monitor.value.metrics.map((m) => m.alias),\n query: monitor.value.query,\n }\n })\n\n const sparkline = computed((): Timeseries | undefined => {\n return timeseries.items.find((ts) => ts.metric === monitor.value.column)\n })\n\n return { AttrKey, monitor, timeseries, sparkline }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSparklineMetric.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertSparklineMetric.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertSparklineMetric.vue?vue&type=template&id=f4ed9052&scoped=true&\"\nimport script from \"./AlertSparklineMetric.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertSparklineMetric.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f4ed9052\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('v-chip',{attrs:{\"small\":\"\",\"label\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', { key: _vm.AttrKey.alertType, value: _vm.alert.type })}}},[_vm._v(\" \"+_vm._s(_vm.alert.type)+\" \")]),(_vm.alert.attrs[_vm.AttrKey.spanSystem])?_c('v-chip',{staticClass:\"ml-1\",attrs:{\"small\":\"\",\"label\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', { key: _vm.AttrKey.spanSystem, value: _vm.alert.attrs[_vm.AttrKey.spanSystem] })}}},[_vm._v(\" \"+_vm._s(_vm.alert.attrs[_vm.AttrKey.spanSystem])+\" \")]):_vm._e(),(_vm.alert.attrs[_vm.AttrKey.spanKind] && _vm.alert.attrs[_vm.AttrKey.spanKind] !== 'internal')?_c('v-chip',{staticClass:\"ml-1\",attrs:{\"small\":\"\",\"label\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', { key: _vm.AttrKey.spanKind, value: _vm.alert.attrs[_vm.AttrKey.spanKind] })}}},[_vm._v(\" \"+_vm._s(_vm.alert.attrs[_vm.AttrKey.spanKind])+\" \")]):_vm._e(),(_vm.alert.attrs[_vm.AttrKey.spanOperation])?_c('v-chip',{staticClass:\"ml-1\",attrs:{\"small\":\"\",\"label\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', {\n key: _vm.AttrKey.spanOperation,\n value: _vm.alert.attrs[_vm.AttrKey.spanOperation],\n })}}},[_vm._v(\" \"+_vm._s(_vm.alert.attrs[_vm.AttrKey.spanOperation])+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { Alert } from '@/alerting/use-alerts'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'AlertChips',\n\n props: {\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n return { AttrKey }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertChips.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertChips.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertChips.vue?vue&type=template&id=a082ecd8&scoped=true&\"\nimport script from \"./AlertChips.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertChips.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertChips.vue?vue&type=style&index=0&id=a082ecd8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a082ecd8\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Compsables\nimport { Alert, AlertType, AlertStatus } from '@/alerting/use-alerts'\n\n// Components\nimport MetricMonitorTrigger from '@/alerting/MetricMonitorTrigger.vue'\nimport AlertSparklineError from '@/alerting/AlertSparklineError.vue'\nimport AlertSparklineMetric from '@/alerting/AlertSparklineMetric.vue'\nimport AlertChips from '@/alerting/AlertChips.vue'\n\nexport default defineComponent({\n name: 'AlertsTableRow',\n components: { MetricMonitorTrigger, AlertSparklineError, AlertSparklineMetric, AlertChips },\n\n props: {\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const statusColor = computed(() => {\n switch (props.alert.status) {\n case AlertStatus.Open:\n return 'red darken-2'\n default:\n return 'green darken-2'\n }\n })\n\n return {\n AlertStatus,\n AlertType,\n statusColor,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsTableRow.vue?vue&type=template&id=ea19b5c0&scoped=true&\"\nimport script from \"./AlertsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsTableRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsTableRow.vue?vue&type=style&index=0&id=ea19b5c0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ea19b5c0\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { Alert } from '@/alerting/use-alerts'\n\n// Components\nimport AlertsTableRow from '@/alerting/AlertsTableRow.vue'\n\nexport default defineComponent({\n name: 'AlertsTable',\n components: {\n AlertsTableRow,\n },\n\n props: {\n alerts: {\n type: Array as PropType,\n required: true,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n },\n\n setup() {\n return {}\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertsTable.vue?vue&type=template&id=b7401934&scoped=true&\"\nimport script from \"./AlertsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertsTable.vue?vue&type=style&index=0&id=b7401934&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b7401934\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.alert.data)?_c('v-skeleton-loader',{attrs:{\"type\":\"article, table\"}}):[_c('PageToolbar',{attrs:{\"fluid\":_vm.fluid,\"loading\":_vm.alert.loading}},[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}}),_c('v-spacer'),_c('FixedDateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"around\":_vm.alert.data.updatedAt,\"show-reload\":\"\"}})],1),_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":_vm.fluid}},[_c('v-row',[_c('v-col',[(_vm.alert.data.type === _vm.AlertType.Error)?_c('AlertCardSpan',{attrs:{\"date-range\":_vm.dateRange,\"alert\":_vm.alert.data}},[_c('template',{slot:\"append-action\"},[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"loading\":_vm.alertMan.pending,\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.toggleAlert}},[_vm._v(\" \"+_vm._s(_vm.alert.data.status === _vm.AlertStatus.Open ? 'Close' : 'Reopen')+\" alert \")])],1)],2):_c('AlertCardMetric',{attrs:{\"date-range\":_vm.dateRange,\"alert\":_vm.alert.data}},[_c('template',{slot:\"append-action\"},[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"loading\":_vm.alertMan.pending,\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.toggleAlert}},[_vm._v(\" \"+_vm._s(_vm.alert.data.status === _vm.AlertStatus.Open ? 'Close' : 'Reopen')+\" alert \")])],1)],2)],1)],1)],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('span',{staticClass:\"text-no-wrap\"},[_c('DateValue',{staticClass:\"mr-2 text-subtitle-2\",attrs:{\"value\":_vm.around,\"format\":\"short\"}}),(_vm.dateRange.duration)?_c('PeriodPickerMenu',{attrs:{\"value\":_vm.dateRange.duration,\"periods\":_vm.periods},on:{\"input\":_vm.onInputPeriod}}):_vm._e()],1),(_vm.showReload)?_c('v-btn',{staticClass:\"ml-2 px-2\",attrs:{\"loading\":_vm.forceReload.loading,\"small\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.dateRange.reload()}}},[_vm._v(\" Reload \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"px-1\",attrs:{\"text\":\"\",\"small\":\"\"}},on),[(_vm.activePeriod)?_c('span',[_vm._v(_vm._s(_vm.activePeriod.text))]):_c('span',[_vm._v(\"Period\")]),_c('v-icon',[_vm._v(\"mdi-menu-down\")])],1)]}}])},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item-group',{attrs:{\"value\":_vm.value},on:{\"change\":_vm.onChange}},_vm._l((_vm.periods),function(item){return _c('v-list-item',{key:item.milliseconds,attrs:{\"value\":item.milliseconds}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Last \"+_vm._s(item.text))])],1)],1)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { Period } from '@/models/period'\nimport { formatDistance } from 'date-fns'\n\nexport default defineComponent({\n name: 'PeriodPickerMenu',\n\n props: {\n value: {\n type: Number,\n required: true,\n },\n periods: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, { emit }) {\n const activePeriod = computed((): Period | undefined => {\n const period = props.periods.find((p) => p.milliseconds === props.value)\n\n if (!period) {\n return {\n text: formatDistance(0, props.value),\n milliseconds: props.value,\n }\n }\n\n return period\n })\n\n function onChange(ms: number | undefined) {\n if (ms) {\n emit('input', ms)\n }\n }\n\n return { activePeriod, onChange }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PeriodPickerMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PeriodPickerMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PeriodPickerMenu.vue?vue&type=template&id=8fb8c600&scoped=true&\"\nimport script from \"./PeriodPickerMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./PeriodPickerMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8fb8c600\",\n null\n \n)\n\nexport default component.exports","import { MINUTE, HOUR, DAY } from '@/util/fmt/date'\n\nexport interface Period {\n text: string\n milliseconds: number\n}\n\nexport function periodsForDays(days: number): Period[] {\n const periods = []\n\n for (let n of [15, 30]) {\n periods.push({\n text: `${n} ${n === 1 ? 'minute' : 'minutes'}`,\n milliseconds: n * MINUTE,\n })\n }\n\n for (let n of [1, 3, 6, 12, 24]) {\n periods.push({\n text: `${n} ${n === 1 ? 'hour' : 'hours'}`,\n milliseconds: n * HOUR,\n })\n }\n\n for (let n of [3, 7, 10, 14, 30, 90]) {\n if (n <= days) {\n periods.push({ text: `${n} days`, milliseconds: n * DAY })\n }\n }\n\n return periods\n}\n","\nimport { defineComponent, computed, onMounted, watch, watchEffect, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Components\nimport PeriodPickerMenu from '@/components/date/PeriodPickerMenu.vue'\n\n// Misc\nimport { periodsForDays } from '@/models/period'\nimport { HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'FixedDateRangePicker',\n components: {\n PeriodPickerMenu,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n rangeDays: {\n type: Number,\n default: 10,\n },\n showReload: {\n type: Boolean,\n default: false,\n },\n around: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const forceReload = injectForceReload()\n\n const periods = computed(() => {\n return periodsForDays(props.rangeDays)\n })\n\n onMounted(() => {\n watchEffect(() => {\n if (props.dateRange.duration) {\n return\n }\n\n let period = periods.value.find((p) => p.milliseconds === HOUR)\n if (!period) {\n period = periods.value[0]\n }\n props.dateRange.changeAround(props.around, period.milliseconds)\n })\n })\n\n watch(\n () => props.around,\n (date) => {\n props.dateRange.changeAround(date)\n },\n { immediate: true },\n )\n\n function onInputPeriod(ms: number) {\n props.dateRange.changeAround(props.around, ms)\n }\n\n return { forceReload, periods, onInputPeriod }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FixedDateRangePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FixedDateRangePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FixedDateRangePicker.vue?vue&type=template&id=59409ee4&scoped=true&\"\nimport script from \"./FixedDateRangePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./FixedDateRangePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59409ee4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.span.data)?_c('v-skeleton-loader',{attrs:{\"type\":\"article, table\"}}):_c('SpanBodyCard',{attrs:{\"date-range\":_vm.dateRange,\"span\":_vm.span.data,\"fluid\":\"\"}},[(_vm.alert.createdAt !== _vm.alert.updatedAt)?_c('template',{slot:\"append-column\"},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"First seen\")]),_c('DateValue',{attrs:{\"value\":_vm.alert.createdAt}})],1)],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, watch, proxyRefs } from 'vue'\n\n// Composables\nimport { usePager } from '@/use/pager'\nimport { useOrder, Order } from '@/use/order'\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\nimport { BackendQueryInfo } from '@/use/uql'\n\n// Misc\nimport { Span } from '@/models/span'\n\ninterface SpansConfig {\n perPage?: number\n}\n\nexport type UseSpans = ReturnType\n\nexport function useSpans(reqSource: AxiosRequestSource, conf: SpansConfig = {}) {\n const pager = usePager(conf.perPage ?? 15)\n const order = useOrder()\n\n const { status, loading, error, data, reload } = useWatchAxios(() => {\n const req = reqSource()\n if (!req) {\n return req\n }\n req.params = {\n ...req.params,\n ...order.axiosParams,\n ...pager.axiosParams(),\n }\n return req\n })\n\n const spans = computed((): Span[] => {\n const spans = data.value?.spans ?? []\n return spans\n })\n\n const queryInfo = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n watch(data, (data) => {\n pager.numItem = data?.count ?? 0\n })\n\n watch(\n (): Order | undefined => data.value?.order,\n (orderValue) => {\n if (orderValue) {\n order.withPausedWatch(() => {\n order.change(orderValue)\n })\n }\n },\n )\n\n return proxyRefs({\n pager,\n order,\n\n status,\n loading,\n error,\n reload,\n\n items: spans,\n queryInfo,\n })\n}\n\nexport function useSpan(axiosReqSource: AxiosRequestSource) {\n const { loading, data } = useWatchAxios(axiosReqSource)\n\n const span = computed((): Span | undefined => {\n return data.value?.span\n })\n\n return proxyRefs({ loading, data: span })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{staticClass:\"px-2 text-subtitle-1\"},[_c('v-col',{staticClass:\"word-break-all\"},[_vm._v(\" \"+_vm._s(_vm.span.displayName)+\" \")])],1),_c('v-row',{staticClass:\"px-2 text-subtitle-2 text-center\",attrs:{\"align\":\"end\"}},[(_vm.span.attrs[_vm.AttrKey.deploymentEnvironment])?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Env\")]),_c('div',[_vm._v(_vm._s(_vm.span.attrs[_vm.AttrKey.deploymentEnvironment]))])]):_vm._e(),(_vm.span.attrs[_vm.AttrKey.serviceName])?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Service\")]),_c('div',[_vm._v(_vm._s(_vm.span.attrs[_vm.AttrKey.serviceName]))])]):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Kind\")]),_c('div',[_vm._v(_vm._s(_vm.span.kind))])]),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Status\")]),_c('div',[(_vm.span.statusMessage)?_c('v-tooltip',{attrs:{\"max-width\":\"600\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({class:{ 'error--text': _vm.span.statusCode === 'error' }},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.span.statusCode)+\" \")])]}}],null,false,1248835450)},[_c('div',[_vm._v(_vm._s(_vm.span.statusMessage))])]):_c('div',{class:{ 'error--text': _vm.span.statusCode === 'error' }},[_vm._v(\" \"+_vm._s(_vm.span.statusCode)+\" \")])],1)]):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Time\")]),_c('DateValue',{attrs:{\"value\":_vm.span.time,\"format\":\"short\"}})],1),(_vm.span.duration)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Duration\")]),_c('DurationValue',{attrs:{\"value\":_vm.span.duration,\"fixed\":\"\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"mb-0\"},[(_vm.traceRoute)?_c('v-btn',{attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":_vm.traceRoute,\"exact\":\"\"}},[_vm._v(\" View trace \")]):_vm._e(),(_vm.spanGroupRoute)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":_vm.spanGroupRoute,\"exact\":\"\"}},[_vm._v(\" View spans \")]):_vm._e(),(_vm.$slots['append-action'])?_vm._t(\"append-action\"):_c('NewMonitorMenu',{staticClass:\"ml-2\",attrs:{\"systems\":[_vm.span.system],\"name\":`${_vm.span.system} > ${_vm.span.displayName}`,\"where\":`where ${_vm.AttrKey.spanGroupId} = '${_vm.span.groupId}'`,\"verbose\":\"\"}})],2)])],1),_c('v-row',[_c('v-col',[_c('v-sheet',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-tabs',{staticClass:\"bg--light-primary\",attrs:{\"background-color\":\"transparent\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab',{attrs:{\"href\":\"#attrs\"}},[_vm._v(\"Attrs\")]),(_vm.span.events && _vm.span.events.length)?_c('v-tab',{attrs:{\"href\":\"#events\"}},[_vm._v(\" Events (\"+_vm._s(_vm.span.events.length)+\") \")]):_vm._e(),_c('v-tab',{attrs:{\"href\":\"#group\"}},[_vm._v(\"Group\")])],1),_c('v-tabs-items',{model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab-item',{staticClass:\"pa-4\",attrs:{\"value\":\"attrs\"}},[_c('SpanAttrs',{attrs:{\"date-range\":_vm.dateRange,\"attrs\":_vm.span.attrs,\"system\":_vm.span.system,\"group-id\":_vm.span.groupId}})],1),_c('v-tab-item',{attrs:{\"value\":\"events\"}},[_c('EventPanels',{attrs:{\"date-range\":_vm.dateRange,\"events\":_vm.span.events,\"annotations\":_vm.annotations}})],1),_c('v-tab-item',{attrs:{\"value\":\"group\"}},[_c('GroupInfoCard',{attrs:{\"date-range\":_vm.dateRange,\"system\":_vm.span.system,\"group-id\":_vm.span.groupId,\"annotations\":_vm.annotations}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { shallowRef, reactive, computed, watch, proxyRefs, provide, inject } from 'vue'\n\n// Composables\nimport { Values } from '@/use/router'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { quote, escapeRe } from '@/util/string'\n\nconst QUERY_PART_SEP = ' | '\n\nexport interface BackendPart {\n query: string\n error?: string\n disabled?: boolean\n}\n\nexport interface QueryPart {\n id: number\n query: string\n error: string\n disabled: boolean\n}\n\nexport interface BackendQueryInfo {\n parts: BackendPart[]\n}\n\nexport type UseUql = ReturnType\n\nexport function useUql(queryValue = '') {\n const rawMode = shallowRef(false)\n const parts = shallowRef([])\n\n const query = computed({\n set(s: string) {\n parts.value = parseParts(s).map((part) => reactive(part))\n },\n get(): string {\n return formatParts(parts.value)\n },\n })\n query.value = queryValue ?? ''\n\n const whereQuery = computed((): string => {\n return parts.value\n .filter((part) => /where\\s+/i.test(part.query))\n .map((part) => part.query)\n .join(QUERY_PART_SEP)\n })\n\n function addPart(part: QueryPart) {\n parts.value.push(reactive(part))\n // eslint-disable-next-line no-self-assign\n parts.value = parts.value.slice()\n }\n\n function removePart(needle: QueryPart) {\n const index = parts.value.findIndex((part) => part.id === needle.id)\n parts.value.splice(index, 1)\n // eslint-disable-next-line no-self-assign\n parts.value = parts.value.slice()\n }\n\n function cleanup() {\n parts.value = parts.value.filter((part) => part.query.length > 0)\n }\n\n function setQueryInfo(other: BackendQueryInfo) {\n // Don't remove any parts.\n parts.value.forEach((part: QueryPart, i: number) => {\n const otherPart = other.parts[i]\n if (!otherPart) {\n return\n }\n part.query = otherPart.query\n part.error = otherPart.error ?? ''\n part.disabled = otherPart.disabled ?? false\n })\n }\n\n function axiosParams() {\n return {\n query: query.value,\n }\n }\n\n function queryParams(paramName = 'query') {\n return {\n [paramName]: query.value,\n }\n }\n\n function parseQueryParams(queryParams: Values, paramName = 'query') {\n query.value = queryParams.string(paramName)\n }\n\n function createEditor() {\n return new QueryEditor(query.value)\n }\n\n function commitEdits(editor: QueryEditor) {\n query.value = editor.toString()\n }\n\n return proxyRefs({\n rawMode,\n query,\n whereQuery,\n parts,\n\n addPart,\n removePart,\n cleanup,\n\n setQueryInfo,\n axiosParams,\n\n queryParams,\n parseQueryParams,\n\n createEditor,\n commitEdits,\n })\n}\n\nexport function parseParts(query: any): QueryPart[] {\n if (typeof query !== 'string' || !query) {\n return []\n }\n return splitQuery(query).map((part) => {\n return createQueryPart(part)\n })\n}\n\nexport function createQueryPart(query = ''): QueryPart {\n return {\n id: Math.random() * Number.MAX_VALUE,\n query,\n error: '',\n disabled: false,\n }\n}\n\nexport function formatParts(parts: QueryPart[]): string {\n return parts\n .filter((part) => part.query.length > 0)\n .map((part) => part.query)\n .join(QUERY_PART_SEP)\n}\n\n//------------------------------------------------------------------------------\n\nexport function createQueryEditor(query = '') {\n return new QueryEditor(query)\n}\n\nexport class QueryEditor {\n parts: string[]\n\n constructor(query = '') {\n this.parts = splitQuery(query)\n }\n\n toString() {\n return joinQuery(this.parts)\n }\n\n exploreAttr(column: string, isSpan = false) {\n return this.add(exploreAttr(column, isSpan))\n }\n\n add(query: string) {\n for (let otherPart of splitQuery(query)) {\n const i = this.parts.findIndex((part) => part === otherPart)\n if (i === -1) {\n this.parts.push(otherPart)\n }\n }\n return this\n }\n\n where(column: string, op?: string, value?: any) {\n if (op === undefined) {\n return this.replaceOrPush(\n new RegExp(`^where\\\\s+${escapeRe(column)}$`, 'i'),\n `where ${column}`,\n )\n }\n if (value === undefined) {\n return this.replaceOrPush(\n new RegExp(`^where\\\\s+${escapeRe(column)}\\\\s+${op}$`, 'i'),\n `where ${column} ${op}`,\n )\n }\n return this.replaceOrPush(\n new RegExp(`^where\\\\s+${escapeRe(column)}\\\\s+${op}\\\\s+.+$`, 'i'),\n `where ${column} ${op} ${quote(value)}`,\n )\n }\n\n replaceOrPush(re: RegExp, query: string) {\n if (!this.replace(re, query)) {\n this.parts.push(query)\n }\n return this\n }\n\n replaceOrUnshift(re: RegExp, query: string) {\n if (!this.replace(re, query)) {\n this.parts.unshift(query)\n }\n return this\n }\n\n replace(re: RegExp, query: string) {\n const i = this.parts.findIndex((part) => re.test(part))\n if (i >= 0) {\n this.parts[i] = query\n return true\n }\n return false\n }\n\n filter(fn: (part: string) => boolean) {\n this.parts = this.parts.filter(fn)\n return this\n }\n\n groupBy(column: string) {\n return this.add(`group by ${column}`)\n }\n\n resetGroupBy(column = '') {\n this.filter((part) => !/^group by /i.test(part))\n if (column) {\n this.groupBy(column)\n }\n return this\n }\n}\n\nexport function splitQuery(query: string): string[] {\n return query\n .split(QUERY_PART_SEP)\n .map((part) => part.trim())\n .filter((part) => part.length)\n}\n\nexport function joinQuery(parts: string[]): string {\n return parts\n .filter((part) => {\n if (typeof part !== 'string') {\n return false\n }\n return part.trim()\n })\n .join(QUERY_PART_SEP)\n}\n\nexport function buildWhere(column: string, op: string, value?: any) {\n if (value === undefined) {\n return `where ${column} ${op}`\n }\n return `where ${column} ${op} ${quote(value)}`\n}\n\nexport function exploreAttr(column: string, isSpan = false) {\n const ss = [`group by ${column}`, AttrKey.spanCountPerMin]\n if (isSpan) {\n ss.push(AttrKey.spanErrorRate, `{p50,p90,p99}(${AttrKey.spanDuration})`)\n } else {\n ss.push(`max(${AttrKey.spanTime})`)\n }\n return ss.join(QUERY_PART_SEP)\n}\n\n//------------------------------------------------------------------------------\n\nconst injectionKey = Symbol('query-store')\n\nexport function injectQueryStore() {\n return inject(injectionKey, undefined) ?? useQueryStore(undefined)\n}\n\nexport function provideQueryStore(store: QueryStore) {\n provide(injectionKey, store)\n}\n\nexport type QueryStore = ReturnType\n\nexport function useQueryStore(uql: UseUql | undefined) {\n const query = shallowRef('')\n const where = shallowRef('')\n\n if (uql) {\n watch(\n () => uql.query,\n (queryValue) => {\n query.value = queryValue\n },\n { flush: 'sync' },\n )\n watch(\n () => uql.whereQuery,\n (whereQuery) => {\n where.value = whereQuery\n },\n { flush: 'sync' },\n )\n }\n\n return { query, where }\n}\n","import { computed, proxyRefs, provide, inject, watch, ComputedRef } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { usePager } from '@/use/pager'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\n\nexport interface Annotation {\n id: number\n projectId: number\n\n name: string\n description: string\n color: string\n attrs: Record\n createdAt: string\n}\n\nexport function emptyAnnotation(): Annotation {\n return {\n id: 0,\n projectId: 0,\n\n name: '',\n description: '',\n color: '#4CAF50',\n attrs: {},\n createdAt: '',\n }\n}\n\nconst injectionKey = Symbol('annotations')\n\nexport interface Attr {\n key: string\n value: string\n}\n\nexport function useAnnotations(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n const pager = usePager()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const projectId = route.value.params.projectId\n const req = {\n url: `/internal/v1/projects/${projectId}/annotations`,\n params: {\n ...axiosParamsSource(),\n ...pager.axiosParams(),\n },\n }\n return req\n })\n\n const annotations = computed((): Annotation[] => {\n return data.value?.annotations ?? []\n })\n\n const count = computed(() => {\n return data.value?.count ?? 0\n })\n\n provide(injectionKey, annotations)\n\n watch(count, (count) => {\n pager.numItem = count\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n items: annotations,\n pager,\n count,\n })\n}\n\nexport function useAnnotation() {\n const route = useRoute()\n\n const { loading, data, reload } = useWatchAxios(() => {\n const { projectId, annotationId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/annotations/${annotationId}`\n return { url }\n })\n\n const annotation = computed((): Annotation | undefined => {\n return data.value?.annotation\n })\n\n return proxyRefs({ loading, data: annotation, reload })\n}\n\nexport function useAnnotationManager() {\n const route = useRoute()\n\n const { loading: pending, request } = useAxios()\n\n function create(annotation: Partial) {\n const projectId = route.value.params.projectId\n const url = `/internal/v1/projects/${projectId}/annotations`\n return request({ method: 'POST', url, data: annotation })\n }\n\n function update(annotation: Partial) {\n const projectId = route.value.params.projectId\n const url = `/internal/v1/projects/${projectId}/annotations/${annotation.id}`\n return request({ method: 'PUT', url, data: annotation })\n }\n\n function del(annotation: Partial) {\n const projectId = route.value.params.projectId\n const url = `/internal/v1/projects/${projectId}/annotations/${annotation.id}`\n return request({ method: 'DELETE', url })\n }\n\n return proxyRefs({\n pending,\n\n create,\n update,\n del,\n })\n}\n\nexport function injectAnnotations() {\n return inject>(\n injectionKey,\n computed(() => {\n return []\n }),\n )\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline-block\"},[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [(_vm.verbose)?_c('v-btn',_vm._g(_vm._b({attrs:{\"depressed\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('span',[_vm._v(\"Monitor\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1):_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_vm._t(\"header-item\"),_vm._l((_vm.menuItems),function(item,index){return _c('v-list-item',{key:index,attrs:{\"to\":item.route}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { snakeCase } from 'lodash-es'\nimport { shallowRef, computed, watch, proxyRefs, ShallowRef } from 'vue'\nimport { refDebounced } from '@vueuse/core'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Misc\nimport { emptyMetric, Metric, ActiveMetric, MetricAlias, Instrument } from '@/metrics/types'\n\nexport type UseMetrics = ReturnType\n\nexport function useMetrics(\n axiosParamsSource: AxiosParamsSource | undefined = undefined,\n debounce = 0,\n) {\n const route = useRoute()\n const forceReload = injectForceReload()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const params = axiosParamsSource ? axiosParamsSource() : {}\n if (!params) {\n return params\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}`,\n params: {\n ...forceReload.params,\n ...params,\n },\n }\n })\n\n const metrics = computed((): Metric[] => {\n return data.value?.metrics ?? []\n })\n\n const noData = computed((): boolean => {\n return status.value.hasData() && metrics.value.length === 0\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n noData,\n items: metrics,\n })\n}\n\nexport function metricShortName(name: string): string {\n const ident: string[] = []\n\n const ss = name.split(/[./]/).reverse()\n for (let s of ss) {\n s = s.replaceAll(/[^a-z0-9]+/gi, '_')\n ident.push(s)\n\n if (s.length >= 2 && s.match(/[a-z][a-z0-9_]+/i)) {\n break\n }\n }\n\n return ident.reverse().join('.')\n}\n\n//------------------------------------------------------------------------------\n\nexport interface ExploredMetric {\n name: string\n attrKeys: string[]\n instrument: Instrument\n numTimeseries: number\n}\n\nexport function useExploreMetrics(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n const hasMore = shallowRef(false)\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const params = axiosParamsSource()\n\n if (params) {\n params.search_input = debouncedSearchInput.value\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/stats`,\n params,\n }\n })\n\n const metrics = computed((): ExploredMetric[] => {\n return data.value?.metrics ?? []\n })\n\n watch(\n () => data.value?.hasMore ?? false,\n (hasMoreValue) => {\n hasMore.value = hasMoreValue\n },\n )\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n searchInput,\n items: metrics,\n hasMore,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport function useActiveMetrics(activeMetrics: ShallowRef) {\n const route = useRoute()\n\n const { data } = useWatchAxios(() => {\n if (!activeMetrics.value.length) {\n return undefined\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/describe`,\n params: {\n metric: activeMetrics.value.map((m) => m.name),\n },\n }\n })\n\n const metrics = computed((): ActiveMetric[] => {\n const metrics: ActiveMetric[] = data.value?.metrics ?? []\n return activeMetrics.value.map((metric) => {\n const found = metrics.find((m) => m.name === metric.name)\n if (!found) {\n return {\n ...emptyMetric(),\n ...metric,\n }\n }\n return {\n ...found,\n ...metric,\n }\n })\n })\n\n return metrics\n}\n\nexport function defaultMetricQuery(instrument: Instrument, alias: string) {\n alias = '$' + alias\n switch (instrument) {\n case Instrument.Deleted:\n return ''\n case Instrument.Gauge:\n return `avg(${alias})`\n case Instrument.Additive:\n return `sum(${alias})`\n case Instrument.Counter:\n return `per_min(sum(${alias}))`\n case Instrument.Histogram:\n return `avg(${alias}) | per_min(count(${alias}))`\n case Instrument.Summary:\n return `avg(${alias})`\n default:\n // eslint-disable-next-line no-console\n console.error('unknown metric instrument', instrument)\n return alias\n }\n}\n\nexport function defaultMetricAlias(metricName: string): string {\n let i = metricName.lastIndexOf('.')\n if (i >= 0) {\n metricName = metricName.slice(i + 1)\n if (metricName.length < 20) {\n return snakeCase(metricName)\n }\n }\n\n i = metricName.lastIndexOf('_')\n if (i >= 0) {\n metricName = metricName.slice(i + 1)\n }\n return snakeCase(metricName)\n}\n","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { joinQuery } from '@/use/uql'\nimport { defaultMetricAlias } from '@/metrics/use-metrics'\n\n// Misc\nimport { isEventSystem, isLogSystem } from '@/models/otel'\n\nexport default defineComponent({\n name: 'NewMonitorMenu',\n\n props: {\n systems: {\n type: Array as PropType,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n where: {\n type: String,\n default: undefined,\n },\n verbose: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const menu = shallowRef(false)\n\n const menuItems = computed(() => {\n if (isLogSystem(...props.systems)) {\n const metricName = 'uptrace_tracing_logs'\n return [\n {\n title: 'Monitor number of logs',\n route: routeFor(metricName, 'per_min(sum($logs))'),\n },\n ]\n }\n\n if (isEventSystem(...props.systems)) {\n const metricName = 'uptrace_tracing_events'\n return [\n {\n title: 'Monitor number of events',\n route: routeFor(metricName, 'per_min(sum($events))'),\n },\n ]\n }\n\n const metricName = 'uptrace_tracing_spans'\n return [\n {\n title: 'Monitor number of spans',\n route: routeFor(metricName, 'per_min(count($spans))'),\n },\n {\n title: 'Monitor number of failed spans',\n route: routeFor(metricName, 'per_min(count($spans{_status_code=\"error\"}))'),\n },\n {\n title: 'Monitor error rate',\n route: routeFor(\n metricName,\n 'count($spans{.status_code=\"error\"}) / count($spans) as err_rate',\n ),\n },\n {\n title: 'Monitor p50 duration',\n route: routeFor(metricName, 'p50($spans)'),\n },\n {\n title: 'Monitor p90 duration',\n route: routeFor(metricName, 'p90($spans)'),\n },\n {\n title: 'Monitor p99 duration',\n route: routeFor(metricName, 'p99($spans)'),\n },\n {\n title: 'Monitor avg duration',\n route: routeFor(metricName, 'avg($spans)'),\n },\n ]\n })\n\n function routeFor(metricName: string, query: string) {\n return {\n name: 'MonitorMetricNew',\n query: {\n name: props.name,\n metric: metricName,\n alias: defaultMetricAlias(metricName),\n query: joinQuery([query, props.where]),\n },\n }\n }\n\n return {\n menu,\n menuItems,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewMonitorMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewMonitorMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewMonitorMenu.vue?vue&type=template&id=165488fc&scoped=true&\"\nimport script from \"./NewMonitorMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewMonitorMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"165488fc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"3\",\"md\":\"2\"}},[_c('v-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Filter keys\",\"clearable\":\"\",\"dense\":\"\",\"outlined\":\"\",\"hide-details\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1),_c('v-col',{attrs:{\"cols\":\"9\",\"md\":\"10\"}},[_c('v-slide-group',{attrs:{\"center-active\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.activePrefix),callback:function ($$v) {_vm.activePrefix=$$v},expression:\"activePrefix\"}},_vm._l((_vm.prefixes),function(item,i){return _c('v-slide-item',{key:item.prefix,attrs:{\"value\":item},scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-btn',{staticClass:\"text-transform-none\",class:{ 'ml-1': i > 0 },attrs:{\"input-value\":active,\"active-class\":\"light-blue white--text\",\"small\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":toggle}},[_vm._v(\" \"+_vm._s(item.prefix)+\" \")])]}}],null,true)})}),1)],1)],1),_c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-tabs',{staticClass:\"align-center\",model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab',{attrs:{\"href\":\"#table\"}},[_vm._v(\"Table\")]),_c('v-tab',{attrs:{\"href\":\"#json\"}},[_vm._v(\"JSON\")]),(_vm.dbStmtPretty)?_c('v-tab',{attrs:{\"href\":\"#dbStmtPretty\"}},[_vm._v(\"SQL:pretty\")]):_vm._e(),(_vm.dbStmt)?_c('v-tab',{attrs:{\"href\":\"#dbStmt\"}},[_vm._v(\" \"+_vm._s(_vm.dbStmtPretty ? 'SQL:original' : _vm.AttrKey.dbStatement)+\" \")]):_vm._e(),(_vm.exceptionStacktrace)?_c('v-tab',{attrs:{\"href\":\"#exceptionStacktrace\"}},[_vm._v(\"Stacktrace\")]):_vm._e(),_vm._l((_vm.largeAttrs),function(attrValue,attrKey){return _c('v-tab',{key:attrKey,attrs:{\"href\":`#attr-${attrKey}`}},[_vm._v(_vm._s(attrKey))])})],2)],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-tabs-items',{model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab-item',{attrs:{\"value\":\"table\"}},[_c('SpanAttrsTable',{attrs:{\"date-range\":_vm.dateRange,\"attrs\":_vm.attrs,\"attr-keys\":_vm.attrKeys,\"system\":_vm.system,\"group-id\":_vm.groupId}})],1),_c('v-tab-item',{attrs:{\"value\":\"json\"}},[_c('PrismCode',{attrs:{\"code\":_vm.prettyPrint(_vm.filteredAttrs),\"language\":\"json\"}})],1),_c('v-tab-item',{attrs:{\"value\":\"dbStmtPretty\"}},[_c('PrismCode',{attrs:{\"code\":_vm.dbStmtPretty,\"language\":\"sql\"}})],1),_c('v-tab-item',{attrs:{\"value\":\"dbStmt\"}},[(_vm.dbStmtJson)?_c('PrismCode',{attrs:{\"code\":_vm.dbStmtJson,\"language\":\"json\"}}):_c('PrismCode',{attrs:{\"code\":_vm.dbStmt,\"language\":\"sql\"}})],1),_c('v-tab-item',{attrs:{\"value\":\"exceptionStacktrace\"}},[_c('PrismCode',{attrs:{\"code\":_vm.exceptionStacktrace}})],1),_vm._l((_vm.largeAttrs),function(attrValue,attrKey){return _c('v-tab-item',{key:attrKey,attrs:{\"value\":`attr-${attrKey}`}},[_c('PrismCode',{attrs:{\"code\":attrValue}})],1)})],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-simple-table',{staticClass:\"v-data-table--border table-scroll-target\"},[_c('colgroup',[_c('col'),_c('col',{staticClass:\"target\"}),_c('col')]),_c('thead',{staticClass:\"v-data-table-header\"},[_c('tr',[_c('th',[_vm._v(\"Key\")]),_c('th',{staticClass:\"target\"},[_vm._v(\"Value\")]),_c('th')])]),(!_vm.attrKeys.length)?_c('tbody',[_c('tr',{staticClass:\"v-data-table__empty-wrapper\"},[_c('td',{attrs:{\"colspan\":\"99\"}},[_vm._v(\"There are no attributes matching the filters.\")])])]):_vm._e(),_c('tbody',_vm._l((_vm.attrKeys),function(attrKey){return _c('SpanAttrsTableRow',{key:attrKey,attrs:{\"date-range\":_vm.dateRange,\"system\":_vm.system,\"group-id\":_vm.groupId,\"attr-key\":attrKey,\"attr-value\":_vm.attrs[attrKey]}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"frag\",rawName:\"v-frag\"}]},[_c('tr',[_c('th',{staticClass:\"user-select-text\"},[_vm._v(_vm._s(_vm.attrKey))]),_c('td',{staticClass:\"target\"},_vm._l((_vm.attrValues),function(attrValue,i){return _c('SpanAttrValue',{key:i,attrs:{\"date-range\":_vm.dateRange,\"system\":_vm.system,\"group-id\":_vm.groupId,\"attr-key\":_vm.attrKey,\"attr-value\":attrValue}})}),1),_c('td',[(_vm.isExpanded)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Hide spans\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.expand(false)}}},[_c('v-icon',{attrs:{\"size\":\"30\"}},[_vm._v(\"mdi-chevron-up\")])],1):_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"View spans\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.expand(true)}}},[_c('v-icon',{attrs:{\"size\":\"30\"}},[_vm._v(\"mdi-chevron-down\")])],1)],1)]),(_vm.isExpanded)?_c('tr',{staticClass:\"v-data-table__expanded v-data-table__expanded__content\"},[_c('td',{staticClass:\"pt-4 pb-2\",attrs:{\"colspan\":\"99\"}},[_c('SpanAttrValues',{attrs:{\"date-range\":_vm.dateRange,\"system\":_vm.system,\"group-id\":_vm.groupId,\"attr-key\":_vm.attrKey,\"attr-value\":_vm.attrValue}})],1)]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.menuItems.length)?_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,2097855828),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((_vm.menuItems),function(item){return _c('v-list-item',_vm._b({key:item.text},'v-list-item',item.attrs,false),[_c('v-list-item-content',{staticClass:\"text-body-2\"},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)],1)}),1)],1):_vm._e(),_c('AnyValue',{attrs:{\"value\":_vm.attrValue,\"name\":_vm.attrKey}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore } from '@/use/uql'\n\n// Misc\nimport { isSpanSystem, AttrKey } from '@/models/otel'\nimport { truncateMiddle, quote } from '@/util/string'\n\nexport default defineComponent({\n name: 'SpanAttrValue',\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n attrKey: {\n type: String,\n required: true,\n },\n attrValue: {\n type: undefined,\n required: true,\n },\n },\n\n setup(props) {\n const menu = shallowRef(false)\n const { query, where } = injectQueryStore()\n\n const menuItems = computed(() => {\n const quotedValue = quote(truncateMiddle(props.attrValue, 60))\n\n const items = [\n {\n text: `Group by ${props.attrKey}`,\n attrs: createLink('SpanGroupList', {\n query: createQueryEditor()\n .exploreAttr(props.attrKey, isSpanSystem(props.system))\n .add(where.value)\n .where(AttrKey.spanGroupId, '=', props.groupId)\n .where(props.attrKey, 'exists')\n .toString(),\n }),\n },\n ]\n\n if (query.value) {\n items.push({\n text: `${props.attrKey} = ${quotedValue}`,\n attrs: createLink(undefined, {\n query: createQueryEditor()\n .add(query.value)\n .where(props.attrKey, '=', props.attrValue)\n .toString(),\n }),\n })\n } else {\n items.push({\n text: `Groups with ${props.attrKey} = ${quotedValue}`,\n attrs: createLink('SpanGroupList', {\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, isSpanSystem(props.system))\n .where(props.attrKey, '=', props.attrValue)\n .toString(),\n }),\n })\n }\n\n return items\n })\n\n function createLink(routeName: string | undefined, queryParams: Record = {}) {\n return {\n to: {\n name: routeName,\n query: {\n ...props.dateRange.queryParams(),\n ...queryParams,\n },\n },\n exact: true,\n }\n }\n\n return { menu, menuItems }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrValue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanAttrValue.vue?vue&type=template&id=87385966&scoped=true&\"\nimport script from \"./SpanAttrValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanAttrValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"87385966\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":[_vm.system],\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams,\"show-plotted-column-items\":\"\",\"hide-actions\":\"\"},scopedSlots:_vm._u([(_vm.queryPartItems.length)?{key:\"actions\",fn:function(){return [_c('v-slide-group',{attrs:{\"multiple\":\"\",\"center-active\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.activeQueryParts),callback:function ($$v) {_vm.activeQueryParts=$$v},expression:\"activeQueryParts\"}},_vm._l((_vm.queryPartItems),function(item,i){return _c('v-slide-item',{key:item.value,attrs:{\"value\":item.value},scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-btn',{staticClass:\"text-transform-none\",class:{ 'ml-1': i > 0 },attrs:{\"input-value\":active,\"active-class\":\"light-blue white--text\",\"small\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":toggle}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])]}}],null,true)})}),1)]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { createQueryEditor } from '@/use/uql'\nimport { UseDateRange } from '@/use/date-range'\nimport { injectQueryStore } from '@/use/uql'\nimport { useGroups } from '@/tracing/use-explore-spans'\n\n// Misc\nimport { isSpanSystem, AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'SpanAttrValues',\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n attrKey: {\n type: String,\n required: true,\n },\n attrValue: {\n type: undefined,\n required: true,\n },\n },\n\n setup(props) {\n const plottedColumns = [AttrKey.spanCountPerMin, `p50(${AttrKey.spanDuration})`]\n const activeQueryParts = shallowRef(plottedColumns)\n\n const queryPartItems = computed(() => {\n const items = [\n {\n value: AttrKey.spanCount,\n },\n {\n value: AttrKey.spanCountPerMin,\n },\n {\n value: `min(${AttrKey.spanTime})`,\n },\n {\n value: `max(${AttrKey.spanTime})`,\n },\n ]\n\n if (isSpanSystem(props.system)) {\n items.push(\n {\n value: `p50(${AttrKey.spanDuration})`,\n },\n {\n value: `p90(${AttrKey.spanDuration})`,\n },\n {\n value: `p99(${AttrKey.spanDuration})`,\n },\n )\n }\n\n return items.map((item) => {\n return {\n value: item.value,\n text: item.value,\n }\n })\n })\n\n const { where } = injectQueryStore()\n\n const query = computed(() => {\n const editor = createQueryEditor().add(`group by ${props.attrKey}`)\n\n for (let item of queryPartItems.value) {\n if (activeQueryParts.value.includes(item.value)) {\n editor.add(item.value)\n }\n }\n\n editor.where(props.attrKey, 'exists').add(where.value)\n\n return editor.toString()\n })\n\n const groups = useGroups(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.system,\n group_id: props.groupId,\n query: query.value,\n }\n })\n\n return {\n plottedColumns,\n\n query,\n groups,\n\n activeQueryParts,\n queryPartItems,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrValues.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrValues.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanAttrValues.vue?vue&type=template&id=399a5c6e&scoped=true&\"\nimport script from \"./SpanAttrValues.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanAttrValues.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"399a5c6e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport SpanAttrValue from '@/tracing/SpanAttrValue.vue'\nimport SpanAttrValues from '@/tracing/SpanAttrValues.vue'\n\nexport default defineComponent({\n name: 'SpanAttrsTableRow',\n components: { SpanAttrValue, SpanAttrValues },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n attrKey: {\n type: String,\n required: true,\n },\n attrValue: {\n type: undefined,\n required: true,\n },\n },\n\n setup(props) {\n const isExpanded = shallowRef(false)\n\n function expand(flag: boolean) {\n isExpanded.value = flag\n }\n\n const attrValues = computed(() => {\n if (Array.isArray(props.attrValue)) {\n return props.attrValue\n }\n return [props.attrValue]\n })\n\n return { isExpanded, expand, attrValues }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanAttrsTableRow.vue?vue&type=template&id=cfc31ac2&scoped=true&\"\nimport script from \"./SpanAttrsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanAttrsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfc31ac2\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport SpanAttrsTableRow from '@/tracing/SpanAttrsTableRow.vue'\n\n// Utitlies\nimport { AttrMap } from '@/models/span'\nimport { AttrKey, isEventSystem } from '@/models/otel'\n\nexport default defineComponent({\n name: 'SpanAttrsTable',\n components: { SpanAttrsTableRow },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n attrs: {\n type: Object as PropType,\n required: true,\n },\n attrKeys: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const isEvent = computed((): boolean => {\n return isEventSystem(props.system)\n })\n\n return {\n AttrKey,\n isEvent,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanAttrsTable.vue?vue&type=template&id=65944007&scoped=true&\"\nimport script from \"./SpanAttrsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanAttrsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65944007\",\n null\n \n)\n\nexport default component.exports","export interface Prefix {\n prefix: string\n keys: string[]\n}\n\nexport const OTHER_PREFIX = 'other'\nconst sep = '_'\n\nexport function buildPrefixes(keys: string[]) {\n const prefixMap = new Map()\n for (let key of keys) {\n addKey(prefixMap, key)\n }\n\n for (let i = 1; i < 32; i++) {\n if (prefixMap.size < 10) {\n break\n }\n compactPrefixMap(prefixMap, i)\n }\n const prefixes = prefixMapToList(prefixMap)\n\n const otherKeys = buildOtherKeys(keys, prefixes)\n if (otherKeys.length) {\n prefixes.push({ prefix: OTHER_PREFIX, keys: otherKeys })\n }\n\n return prefixes\n}\n\nfunction addKey(prefixMap: Map, key: string) {\n let prefix = key\n while (true) {\n const i = prefix.lastIndexOf(sep)\n if (i === -1) {\n return\n }\n\n prefix = prefix.slice(0, i)\n const keys = prefixMap.get(prefix) ?? []\n keys.push(key)\n prefixMap.set(prefix, keys)\n }\n}\n\nfunction compactPrefixMap(prefixMap: Map, threshold = 1) {\n prefixMap.forEach((keys, prefix) => {\n if (keys.length <= 1) {\n prefixMap.delete(prefix)\n return\n }\n\n prefixMap.forEach((otherKeys, otherPrefix) => {\n if (otherPrefix === prefix) {\n return\n }\n if (!otherPrefix.startsWith(prefix + sep)) {\n return\n }\n\n if (keys.length - otherKeys.length <= threshold) {\n prefixMap.delete(otherPrefix)\n }\n })\n })\n}\n\nfunction prefixMapToList(prefixMap: Map): Prefix[] {\n const prefixes: Prefix[] = []\n prefixMap.forEach((keys, prefix) => {\n prefixes.push({ prefix, keys })\n })\n prefixes.sort((a, b) => a.prefix.localeCompare(b.prefix))\n return prefixes\n}\n\nfunction buildOtherKeys(keys: string[], prefixes: Prefix[]) {\n const other = []\n for (let key of keys) {\n if (!keyMatches(key, prefixes)) {\n other.push(key)\n }\n }\n return other\n}\n\nfunction keyMatches(key: string, prefixes: Prefix[]) {\n for (let prefix of prefixes) {\n if (key.startsWith(prefix.prefix)) {\n return true\n }\n }\n return false\n}\n","export function parseJson(value: any): any {\n if (!value) {\n return false\n }\n if (typeof value === 'object' && !Array.isArray(value)) {\n return value\n }\n if (typeof value !== 'string') {\n return undefined\n }\n\n if (!isJson(value)) {\n return undefined\n }\n\n try {\n return JSON.parse(value)\n } catch (_) {\n return undefined\n }\n}\n\nexport function isJson(value: string): boolean {\n if (value.length < 2) {\n return false\n }\n\n const s = value.trim()\n const res = s[0] + s[s.length - 1]\n return res === '{}'\n}\n\nexport function prettyPrint(v: any): string {\n return JSON.stringify(v, null, 2)\n}\n","\nimport { format, supportedDialects } from 'sql-formatter'\nimport { pick } from 'lodash-es'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useProject } from '@/org/use-projects'\n\n// Components\nimport SpanAttrsTable from '@/tracing/SpanAttrsTable.vue'\n\n// Misc\nimport { AttrMap } from '@/models/span'\nimport { AttrKey } from '@/models/otel'\nimport { buildPrefixes, Prefix } from '@/models/key-prefixes'\nimport { parseJson, prettyPrint } from '@/util/json'\n\nconst specialKeys = [AttrKey.dbStatement, AttrKey.exceptionStacktrace] as string[]\n\nconst LARGE_ATTR_THRESHOLD = 500\n\nexport default defineComponent({\n name: 'SpanAttrs',\n components: { SpanAttrsTable },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n attrs: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n default: undefined,\n },\n groupId: {\n type: String,\n default: undefined,\n },\n },\n\n setup(props) {\n const activeTab = shallowRef()\n const searchInput = shallowRef('')\n\n const activePrefix = shallowRef()\n const prefixes = computed(() => {\n const keys = []\n for (let key in props.attrs) {\n if (!isBlacklistedKey(key)) {\n keys.push(key)\n }\n }\n return buildPrefixes(keys)\n })\n\n const axiosParams = computed(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.system,\n group_id: props.groupId,\n }\n })\n\n const dbStmt = computed((): string => {\n return props.attrs[AttrKey.dbStatement] ?? ''\n })\n\n const sqlLanguage = computed(() => {\n const system = props.attrs[AttrKey.dbSystem]\n if (!system) {\n return 'sql'\n }\n\n if (supportedDialects.indexOf(system) >= 0) {\n return system\n }\n\n return 'sql'\n })\n\n const dbStmtPretty = computed((): string => {\n try {\n return format(dbStmt.value, {\n language: sqlLanguage.value,\n })\n } catch (err) {\n return ''\n }\n })\n\n const dbStmtJson = computed((): any => {\n const obj = parseJson(props.attrs[AttrKey.dbStatement])\n if (!obj) {\n return undefined\n }\n return prettyPrint(obj)\n })\n\n const exceptionStacktrace = computed((): string => {\n return props.attrs[AttrKey.exceptionStacktrace] ?? ''\n })\n\n const project = useProject()\n\n const largeAttrs = computed((): Record => {\n const attrs: Record = {}\n\n for (let key in props.attrs) {\n if (isInternalKey(key) || specialKeys.includes(key)) {\n continue\n }\n\n const value = props.attrs[key]\n\n const json = parseJson(value)\n if (json) {\n const pretty = prettyPrint(json)\n if (project.largeAttrs.includes(key) || pretty.length >= LARGE_ATTR_THRESHOLD) {\n attrs[key] = prettyPrint(json)\n continue\n }\n }\n\n if (project.largeAttrs.includes(key)) {\n attrs[key] = value\n }\n\n switch (typeof value) {\n case 'string':\n if (value.length >= LARGE_ATTR_THRESHOLD) {\n attrs[key] = value\n }\n }\n }\n\n return attrs\n })\n\n const attrKeys = computed((): string[] => {\n let keys = Object.keys(props.attrs)\n keys = keys.filter((key) => !isBlacklistedKey(key))\n\n if (activePrefix.value) {\n keys = activePrefix.value.keys\n }\n\n if (searchInput.value) {\n keys = fuzzyFilter(keys, searchInput.value)\n }\n\n keys.sort()\n\n return keys\n })\n\n const filteredAttrs = computed(() => {\n return pick(props.attrs, attrKeys.value)\n })\n\n function isBlacklistedKey(key: string): boolean {\n return isInternalKey(key) || key in largeAttrs.value || specialKeys.includes(key)\n }\n\n return {\n AttrKey,\n\n activeTab,\n searchInput,\n activePrefix,\n prefixes,\n\n axiosParams,\n\n dbStmt,\n dbStmtPretty,\n dbStmtJson,\n exceptionStacktrace,\n\n largeAttrs,\n attrKeys,\n filteredAttrs,\n prettyPrint,\n }\n },\n})\n\nfunction isInternalKey(key: string): boolean {\n return key.startsWith('_')\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanAttrs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanAttrs.vue?vue&type=template&id=b13b55ea&scoped=true&\"\nimport script from \"./SpanAttrs.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanAttrs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b13b55ea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-expansion-panels',{attrs:{\"flat\":_vm.flat,\"multiple\":\"\"},model:{value:(_vm.panels),callback:function ($$v) {_vm.panels=$$v},expression:\"panels\"}},_vm._l((_vm.events),function(event,i){return _c('v-expansion-panel',{key:i,attrs:{\"readonly\":!_vm.hasAttrs(event)}},[_c('v-expansion-panel-header',{staticClass:\"user-select-text\"},[_c('span',[_c('DateValue',{staticClass:\"mr-5 text-caption\",attrs:{\"value\":event.time,\"format\":\"time\"}}),(event.span)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:span', event.span)}}},[_c('v-icon',[_vm._v(\"mdi-link\")])],1):_vm._e(),_c('span',{staticClass:\"text-subtitle-1\"},[_vm._v(_vm._s(event.name))]),(event.span)?[_c('span',{staticClass:\"mx-2\"},[_vm._v(\" • \")]),_c('span',{staticClass:\"text-subtitle-1\"},[_vm._v(_vm._s(event.span.displayName))])]:_vm._e()],2)]),(_vm.hasAttrs(event))?_c('v-expansion-panel-content',[_c('EventPanelContent',{attrs:{\"date-range\":_vm.dateRange,\"event\":event,\"annotations\":_vm.annotations},scopedSlots:_vm._u([{key:\"append-action\",fn:function(){return [(event.span)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"depressed\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:span', event.span)}}},[_vm._v(\" Go to span \")]):_vm._e()]},proxy:true}],null,true)})],1):_vm._e()],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{staticClass:\"text-subtitle-2 text-center\",attrs:{\"align\":\"end\"}},[(_vm.event.attrs[_vm.AttrKey.serviceName])?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Service\")]),_c('div',[_vm._v(_vm._s(_vm.event.attrs[_vm.AttrKey.serviceName]))])]):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Time\")]),_c('DateValue',{attrs:{\"value\":_vm.event.time,\"format\":\"full\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.spanListRoute)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":_vm.spanListRoute,\"exact\":\"\"}},[_vm._v(\"View group\")]):_vm._e(),(_vm.event.groupId)?_c('NewMonitorMenu',{staticClass:\"ml-2\",attrs:{\"systems\":[_vm.event.system],\"name\":`${_vm.event.system} > ${_vm.event.name}`,\"where\":`where ${_vm.AttrKey.spanGroupId} = '${_vm.event.groupId}'`,\"verbose\":\"\"}}):_vm._e(),_vm._t(\"append-action\")],2)],1),(_vm.percentiles.status.hasData())?_c('v-row',[_c('v-col',[_c('EventRateChart',{attrs:{\"loading\":_vm.percentiles.loading,\"time\":_vm.percentiles.stats.time,\"count-per-min\":_vm.percentiles.stats.rate,\"annotations\":_vm.annotations}})],1)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('SpanAttrs',{attrs:{\"date-range\":_vm.dateRange,\"attrs\":_vm.event.attrs,\"system\":_vm.event.system,\"group-id\":_vm.event.groupId}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\n\nexport type UsePercentiles = ReturnType\n\nexport function usePercentiles(axiosSource: AxiosRequestSource) {\n const { status, loading, data } = useWatchAxios(axiosSource)\n\n const stats = computed(() => {\n return data.value?.stats ?? {}\n })\n\n return proxyRefs({\n status,\n loading,\n\n stats,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.chart.height,\"option\":_vm.chart.option,\"annotations\":_vm.annotations}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport colors from 'vuetify/lib/util/colors'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport EChart, { EChartProps } from '@/components/EChart.vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\nimport {\n baseChartConfig,\n addChartTooltip,\n axisLabelFormatter,\n axisPointerFormatter,\n} from '@/util/chart'\nimport { Annotation } from '@/org/types'\n\nexport default defineComponent({\n name: 'PercentilesChart',\n components: { EChart },\n\n props: {\n selDateRange: {\n type: Object as PropType,\n default: undefined,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n time: {\n type: Array as PropType,\n default: () => [],\n },\n countPerMin: {\n type: Array as PropType,\n default: () => [],\n },\n group: {\n type: [String, Symbol],\n default: '',\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n },\n\n setup(props) {\n const computedGroup = computed(() => {\n if (props.group) {\n return props.group\n }\n return Symbol()\n })\n\n const chart = computed((): EChartProps => {\n const conf = baseChartConfig()\n addChartTooltip(conf)\n\n const chart = {\n height: 160,\n option: conf,\n }\n\n conf.xAxis.push({\n type: 'time',\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(Unit.Time),\n },\n },\n })\n\n conf.yAxis.push({\n type: 'value',\n axisLabel: {\n formatter: axisLabelFormatter(),\n },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(),\n },\n },\n })\n\n conf.dataset.push({\n source: {\n time: props.time,\n countPerMin: props.countPerMin,\n },\n })\n\n conf.series.push({\n name: 'events per min',\n type: 'bar',\n itemStyle: { color: colors.blue.darken1 },\n encode: { x: 'time', y: 'countPerMin' },\n })\n\n conf.grid.push({\n top: 15,\n left: 45,\n right: 30,\n height: 120,\n })\n\n return chart\n })\n\n return {\n computedGroup,\n chart,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRateChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRateChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventRateChart.vue?vue&type=template&id=a6645cf2&scoped=true&\"\nimport script from \"./EventRateChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventRateChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a6645cf2\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType, computed } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { usePercentiles } from '@/tracing/use-percentiles'\nimport { createQueryEditor } from '@/use/uql'\n\n// Components\nimport EventRateChart from '@/components/EventRateChart.vue'\nimport SpanAttrs from '@/tracing/SpanAttrs.vue'\nimport NewMonitorMenu from '@/tracing/NewMonitorMenu.vue'\n\n// Misc\nimport { SpanEvent } from '@/models/span'\nimport { AttrKey } from '@/models/otel'\nimport { Annotation } from '@/org/types'\n\nexport default defineComponent({\n name: 'EventPanelContent',\n components: { EventRateChart, SpanAttrs, NewMonitorMenu },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n event: {\n type: Object as PropType,\n required: true,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n },\n\n setup(props) {\n const { route } = useRouter()\n\n const percentiles = usePercentiles(() => {\n if (!props.event.groupId) {\n return undefined\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/percentiles`,\n params: {\n ...props.dateRange.axiosParams(),\n system: props.event.system,\n group_id: props.event.groupId,\n },\n }\n })\n\n const spanListRoute = computed(() => {\n if (!props.event.groupId) {\n return undefined\n }\n return {\n name: 'SpanList',\n query: {\n ...props.dateRange.queryParams(),\n system: props.event.system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, true)\n .where(AttrKey.spanGroupId, '=', props.event.groupId)\n .toString(),\n },\n }\n })\n\n return {\n AttrKey,\n\n percentiles,\n spanListRoute,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventPanelContent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventPanelContent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventPanelContent.vue?vue&type=template&id=093cc8dd&scoped=true&\"\nimport script from \"./EventPanelContent.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventPanelContent.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"093cc8dd\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport EventPanelContent from '@/tracing/EventPanelContent.vue'\n\n// Misc\nimport { SpanEvent } from '@/models/span'\n\nexport default defineComponent({\n name: 'EventPanels',\n components: { EventPanelContent },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n events: {\n type: Array as PropType,\n required: true,\n },\n flat: {\n type: Boolean,\n default: false,\n },\n annotations: {\n type: Array,\n default: () => [],\n },\n },\n\n setup(props) {\n const panels = shallowRef([])\n\n watch(\n () => props.events,\n (events) => {\n if (events.length === 1) {\n panels.value = [0]\n } else {\n panels.value = []\n }\n },\n { immediate: true },\n )\n\n function hasAttrs(event: SpanEvent): boolean {\n return Boolean(event.attrs && Object.keys(event.attrs).length)\n }\n\n return { panels, hasAttrs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventPanels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EventPanels.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventPanels.vue?vue&type=template&id=93ebacf8&scoped=true&\"\nimport script from \"./EventPanels.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventPanels.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93ebacf8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{staticClass:\"px-2 text-subtitle-2 text-center\",attrs:{\"align\":\"end\",\"dense\":_vm.$vuetify.breakpoint.mdAndDown}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(_vm._s(_vm.AttrKey.spanGroupId))]),_c('div',[_vm._v(_vm._s(_vm.groupId))])]),(_vm.group.firstSeenAt)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"First seen at\")]),_c('div',[_c('DateValue',{attrs:{\"value\":_vm.group.firstSeenAt,\"format\":\"short\"}})],1)]):_vm._e(),(_vm.group.lastSeenAt)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Last seen at\")]),_c('div',[_c('DateValue',{attrs:{\"value\":_vm.group.lastSeenAt,\"format\":\"short\"}})],1)]):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Rate\")]),_c('div',[_c('NumValue',{attrs:{\"value\":_vm.group.getMetric('per_min(sum(_count))')}}),_vm._v(\" / min\")],1)]),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Err rate\")]),_c('div',[_c('PctValue',{attrs:{\"a\":_vm.group.getMetric('_error_count'),\"b\":_vm.group.getMetric('_count')}})],1)]):_vm._e(),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"P50\")]),_c('div',[_c('DurationValue',{attrs:{\"value\":_vm.group.getMetric('p50(_duration)')}})],1)]):_vm._e(),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"P90\")]),_c('div',[_c('DurationValue',{attrs:{\"value\":_vm.group.getMetric('p90(_duration)')}})],1)]):_vm._e(),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"P99\")]),_c('div',[_c('DurationValue',{attrs:{\"value\":_vm.group.getMetric('p99(_duration)')}})],1)]):_vm._e(),(_vm.isSpan)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Max\")]),_c('div',[_c('DurationValue',{attrs:{\"value\":_vm.group.getMetric('max(_duration)')}})],1)]):_vm._e()],1),_c('v-row',[_c('v-col',[_c('v-expansion-panels',{attrs:{\"value\":[0],\"multiple\":\"\"}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\"Percentiles chart\")]),_c('v-expansion-panel-content',[_c('PercentilesChartLazy',{attrs:{\"axios-params\":_vm.axiosParams,\"annotations\":_vm.annotations}})],1)],1),(_vm.isSpan)?_c('v-expansion-panel',[_c('v-expansion-panel-header',[_c('div',{staticClass:\"d-flex align-center\"},[_c('div',{staticStyle:{\"min-width\":\"280px\"}},[_vm._v(\"Slowest spans\")]),_c('v-btn',{attrs:{\"to\":{\n name: 'SpanList',\n query: {\n system: _vm.system,\n query: _vm.slowestSpansQuery,\n sort_by: _vm.AttrKey.spanDuration,\n },\n },\"exact\":\"\",\"small\":\"\",\"outlined\":\"\",\"plain\":\"\"}},[_vm._v(\"Open in explorer\")])],1)]),_c('v-expansion-panel-content',[_c('UqlCardReadonly',{staticClass:\"mb-4\",attrs:{\"query\":_vm.slowestSpansQuery}}),_c('PagedSpansCardLazy',{attrs:{\"date-range\":_vm.dateRange,\"is-span\":_vm.isSpan,\"axios-params\":_vm.slowestSpansAxiosParams}})],1)],1):_vm._e(),(_vm.isSpan)?_c('v-expansion-panel',[_c('v-expansion-panel-header',[_c('div',{staticClass:\"d-flex align-center\"},[_c('div',{staticStyle:{\"min-width\":\"280px\"}},[_vm._v(\"Spans with .status_code = 'error'\")]),_c('v-btn',{attrs:{\"to\":{\n name: 'SpanList',\n query: {\n system: _vm.system,\n query: _vm.failedSpansQuery,\n sort_by: _vm.AttrKey.spanDuration,\n },\n },\"exact\":\"\",\"small\":\"\",\"outlined\":\"\",\"plain\":\"\"}},[_vm._v(\"Open in explorer\")])],1)]),_c('v-expansion-panel-content',[_c('UqlCardReadonly',{staticClass:\"mb-4\",attrs:{\"query\":_vm.failedSpansQuery}}),_c('PagedSpansCardLazy',{attrs:{\"date-range\":_vm.dateRange,\"is-span\":_vm.isSpan,\"axios-params\":_vm.failedSpansAxiosParams}})],1)],1):_vm._e(),(_vm.isSpan)?_c('v-expansion-panel',[_c('v-expansion-panel-header',[_c('div',{staticClass:\"d-flex align-center\"},[_c('div',{staticStyle:{\"min-width\":\"280px\"}},[_vm._v(\"Status messages\")]),_c('v-btn',{attrs:{\"to\":{\n name: 'SpanGroupList',\n query: { system: _vm.system, query: _vm.statusMessagesQuery },\n },\"exact\":\"\",\"small\":\"\",\"outlined\":\"\",\"plain\":\"\"}},[_vm._v(\"Open in explorer\")])],1)]),_c('v-expansion-panel-content',[_c('UqlCardReadonly',{staticClass:\"mb-4\",attrs:{\"query\":_vm.statusMessagesQuery}}),_c('PagedGroupsCardLazy',{attrs:{\"date-range\":_vm.dateRange,\"systems\":[_vm.system],\"query\":_vm.statusMessagesQuery}})],1)],1):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs } from 'vue'\n\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\n\nexport function useGroup(axiosSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(() => {\n return axiosSource()\n })\n\n const firstSeenAt = computed((): string => {\n return data.value?.firstSeenAt\n })\n\n const lastSeenAt = computed((): string => {\n return data.value?.lastSeenAt\n })\n\n const summary = computed(() => {\n return data.value?.summary ?? {}\n })\n\n function getMetric(name: string): number {\n return summary.value[name] ?? 0\n }\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n firstSeenAt,\n lastSeenAt,\n summary,\n getMetric,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.percentiles.status.hasData() || 'p50' in _vm.percentiles.stats)?_c('PercentilesChart',{attrs:{\"loading\":_vm.percentiles.loading,\"time\":_vm.percentiles.stats.time,\"count-per-min\":_vm.percentiles.stats.rate,\"errors-per-min\":_vm.percentiles.stats.errorRate,\"p50\":_vm.percentiles.stats.p50,\"p90\":_vm.percentiles.stats.p90,\"p99\":_vm.percentiles.stats.p99,\"max\":_vm.percentiles.stats.max,\"mark-point\":_vm.markPoint,\"annotations\":_vm.annotations}}):_c('EventRateChart',{attrs:{\"loading\":_vm.percentiles.loading,\"time\":_vm.percentiles.stats.time,\"count-per-min\":_vm.percentiles.stats.rate,\"mark-point\":_vm.markPoint,\"annotations\":_vm.annotations}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.percentilesChart.height,\"option\":_vm.percentilesChart.option,\"group\":_vm.internalGroup}}),_c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.rateChart.height,\"option\":_vm.rateChart.option,\"group\":_vm.internalGroup,\"annotations\":_vm.annotations}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport colors from 'vuetify/lib/util/colors'\nimport { graphic } from 'echarts'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport EChart from '@/components/EChart.vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\nimport {\n baseChartConfig,\n addChartTooltip,\n createTooltipFormatter,\n axisLabelFormatter,\n axisPointerFormatter,\n MarkPoint,\n EChartsOption,\n} from '@/util/chart'\nimport { Annotation } from '@/org/types'\n\nexport default defineComponent({\n name: 'PercentilesChart',\n components: { EChart },\n\n props: {\n selDateRange: {\n type: Object as PropType,\n default: undefined,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n time: {\n type: Array as PropType,\n default: () => [],\n },\n p50: {\n type: Array as PropType,\n default: () => [],\n },\n p90: {\n type: Array as PropType,\n default: () => [],\n },\n p99: {\n type: Array as PropType,\n default: () => [],\n },\n max: {\n type: Array as PropType,\n default: () => [],\n },\n countPerMin: {\n type: Array as PropType,\n default: () => [],\n },\n errorsPerMin: {\n type: Array as PropType,\n default: () => [],\n },\n group: {\n type: [String, Symbol],\n default: '',\n },\n markPoint: {\n type: Object as PropType,\n default: undefined,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n },\n\n setup(props) {\n const internalGroup = computed(() => {\n if (props.group) {\n return props.group\n }\n return Symbol()\n })\n\n const percentilesChart = computed(() => {\n const conf = baseChartConfig()\n addChartTooltip(conf, {\n formatter: createTooltipFormatter(Unit.Nanoseconds, { hideDate: true }),\n })\n\n const chart = {\n height: 110,\n option: conf,\n }\n\n conf.xAxis.push({\n type: 'time',\n axisTick: { show: false },\n splitLine: { show: false },\n axisLabel: { show: false },\n axisPointer: { label: { show: false } },\n })\n\n conf.yAxis.push({\n type: 'value',\n axisLabel: {\n formatter: axisLabelFormatter(Unit.Nanoseconds),\n },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(Unit.Nanoseconds),\n },\n },\n splitNumber: 4,\n })\n\n conf.dataset.push({\n source: {\n time: props.time,\n p50: props.p50,\n p90: props.p90,\n p99: props.p99,\n max: props.max,\n },\n })\n\n const legend: string[] = []\n\n const items = [\n { name: 'p50', value: props.p50, color: colors.green.lighten2 },\n { name: 'p90', value: props.p90, color: colors.orange.base },\n { name: 'p99', value: props.p99, color: colors.pink.lighten2 },\n { name: 'max', value: props.max, color: colors.red.darken2 },\n ]\n items.forEach((item, index) => {\n if (!item.value.length) {\n return\n }\n legend.push(item.name)\n\n conf.series.push({\n z: items.length - index,\n name: item.name,\n type: 'line',\n symbol: 'none',\n itemStyle: {\n color: item.color,\n },\n areaStyle: {\n color: new graphic.LinearGradient(0, 0, 0, 1, [\n { offset: 0, color: item.color },\n { offset: 1, color: '#ffe' },\n ]),\n },\n encode: { x: 'time', y: item.name },\n })\n })\n\n conf.legend.push({\n type: 'scroll',\n width: '90%',\n data: legend,\n selected: {\n p50: true,\n p90: true,\n p99: false,\n max: false,\n },\n })\n\n conf.grid.push({\n top: 30,\n left: 45,\n right: 30,\n height: 75,\n })\n\n if (props.markPoint) {\n addMarkPoint(chart.option, props.markPoint)\n }\n\n return chart\n })\n\n const rateChart = computed(() => {\n const conf = baseChartConfig()\n addChartTooltip(conf, {\n formatter: createTooltipFormatter(Unit.None, { hideDate: true }),\n })\n\n const chart = {\n height: 110,\n option: conf,\n }\n\n conf.xAxis.push({\n type: 'time',\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(Unit.Time),\n },\n },\n })\n\n conf.yAxis.push({\n type: 'value',\n axisLabel: {\n formatter: axisLabelFormatter(),\n },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(),\n },\n },\n splitNumber: 4,\n })\n\n conf.dataset.push({\n source: {\n time: props.time,\n countPerMin: props.countPerMin,\n errorsPerMin: props.errorsPerMin,\n },\n })\n conf.series.push({\n datasetIndex: conf.dataset.length - 1,\n name: 'count per min',\n type: 'line',\n symbol: 'none',\n itemStyle: { color: colors.blue.lighten1 },\n areaStyle: { opacity: 0.15 },\n encode: { x: 'time', y: 'countPerMin' },\n })\n\n conf.series.push({\n datasetIndex: conf.dataset.length - 1,\n name: 'errors per min',\n type: 'line',\n symbol: 'none',\n itemStyle: { color: colors.red.base },\n encode: { x: 'time', y: 'errorsPerMin' },\n })\n\n conf.grid.push({\n top: 15,\n left: 45,\n right: 30,\n height: 70,\n })\n\n return chart\n })\n\n return {\n internalGroup,\n percentilesChart,\n rateChart,\n }\n },\n})\n\nfunction addMarkPoint(conf: EChartsOption, markPoint: MarkPoint) {\n conf.series.push({\n name: markPoint.name,\n type: 'scatter',\n data: [[new Date(markPoint.time), markPoint.value]],\n })\n if (conf.legend.length) {\n // @ts-expect-error\n conf.legend[0].data.push('span')\n // @ts-expect-error\n conf.legend[0].selected.span = false\n }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentilesChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentilesChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PercentilesChart.vue?vue&type=template&id=f0131726&scoped=true&\"\nimport script from \"./PercentilesChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./PercentilesChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f0131726\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { usePercentiles } from '@/tracing/use-percentiles'\n\n// Components\nimport PercentilesChart from '@/components/PercentilesChart.vue'\nimport EventRateChart from '@/components/EventRateChart.vue'\nimport { MarkPoint } from '@/util/chart'\n\n// Misc\nimport { Annotation } from '@/org/types'\n\nexport default defineComponent({\n name: 'PercentilesChartLazy',\n components: { PercentilesChart, EventRateChart },\n\n props: {\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n markPoint: {\n type: Object as PropType,\n default: undefined,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n },\n\n setup(props) {\n const route = useRoute()\n\n const percentiles = usePercentiles(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/percentiles`,\n params: props.axiosParams,\n cache: true,\n }\n })\n\n return { percentiles }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentilesChartLazy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PercentilesChartLazy.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PercentilesChartLazy.vue?vue&type=template&id=4b2da158&scoped=true&\"\nimport script from \"./PercentilesChartLazy.vue?vue&type=script&lang=ts&\"\nexport * from \"./PercentilesChartLazy.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b2da158\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',_vm._l((_vm.parts),function(part,i){return _c('UptraceQueryChip',{key:i,staticClass:\"mr-2 mb-1\",attrs:{\"query\":part}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline-block\",staticStyle:{\"max-width\":\"600px\"}},[_c('v-chip',{class:{ disabled: _vm.disabled },attrs:{\"label\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:edit')}}},[(_vm.deletable)?_c('v-icon',{attrs:{\"left\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:delete')}}},[_vm._v(\"mdi-close\")]):_vm._e(),(_vm.info.keyword)?_c('span',{staticClass:\"mr-1 font-weight-medium\"},[_vm._v(_vm._s(_vm.info.keyword))]):_vm._e(),_c('span',{staticClass:\"d-inline-block text-truncate\"},[_vm._v(_vm._s(_vm.info.expr))])],1),(_vm.error)?_c('div',{staticClass:\"ml-2 text-caption red--text text--darken-2 text-no-wrap text-truncate\"},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\nexport default defineComponent({\n name: 'UptraceQueryChip',\n\n props: {\n query: {\n type: String,\n required: true,\n },\n error: {\n type: String,\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n deletable: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const info = computed(() => {\n return splitKeywordExpr(props.query)\n })\n return { info }\n },\n})\n\nconst GROUP_BY = /^group\\s+by\\s+(.+)/i\nconst WHERE = /^where\\s+(.+)/i\n\nfunction splitKeywordExpr(s: string) {\n let m = s.match(GROUP_BY)\n if (m) {\n return { keyword: 'group by', expr: m[1] }\n }\n\n m = s.match(WHERE)\n if (m) {\n return { keyword: 'where', expr: m[1] }\n }\n\n return { keyword: '', expr: s }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UptraceQueryChip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UptraceQueryChip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UptraceQueryChip.vue?vue&type=template&id=3b3e6575&scoped=true&\"\nimport script from \"./UptraceQueryChip.vue?vue&type=script&lang=ts&\"\nexport * from \"./UptraceQueryChip.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UptraceQueryChip.vue?vue&type=style&index=0&id=3b3e6575&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b3e6575\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { splitQuery } from '@/use/uql'\n\n// Components\nimport UptraceQueryChip from '@/components/UptraceQueryChip.vue'\n\nexport default defineComponent({\n name: 'UqlCardReadonly',\n components: { UptraceQueryChip },\n\n props: {\n query: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const parts = computed(() => {\n return splitQuery(props.query)\n })\n\n return { parts }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UqlCardReadonly.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UqlCardReadonly.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UqlCardReadonly.vue?vue&type=template&id=0e41a8fa&scoped=true&\"\nimport script from \"./UqlCardReadonly.vue?vue&type=script&lang=ts&\"\nexport * from \"./UqlCardReadonly.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e41a8fa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems,\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"show-plotted-column-items\":_vm.showPlottedColumnItems,\"hide-actions\":_vm.hideActions,\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams},on:{\"update:plotted-columns\":function($event){return _vm.$emit('@update:plotted-columns', $event)},\"update:num-group\":function($event){return _vm.$emit('@update:num-group', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useGroups } from '@/tracing/use-explore-spans'\n\nexport default defineComponent({\n name: 'PagedGroupsCardLazy',\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n plottedColumns: {\n type: Array as PropType,\n default: () => [],\n },\n showPlottedColumnItems: {\n type: Boolean,\n default: false,\n },\n hideActions: {\n type: Boolean,\n default: false,\n },\n query: {\n type: String,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const groups = useGroups(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.systems,\n query: props.query,\n }\n })\n\n return {\n groups,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedGroupsCardLazy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedGroupsCardLazy.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PagedGroupsCardLazy.vue?vue&type=template&id=4da79dac&scoped=true&\"\nimport script from \"./PagedGroupsCardLazy.vue?vue&type=script&lang=ts&\"\nexport * from \"./PagedGroupsCardLazy.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4da79dac\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore } from '@/use/uql'\nimport { useGroup } from '@/tracing/use-groups'\n\n// Components\nimport PercentilesChartLazy from '@/components/PercentilesChartLazy.vue'\nimport UqlCardReadonly from '@/components/UqlCardReadonly.vue'\nimport PagedGroupsCardLazy from '@/tracing/PagedGroupsCardLazy.vue'\n\n// Misc\nimport { isSpanSystem, SystemName, AttrKey } from '@/models/otel'\nimport { Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'GroupInfoCard',\n components: {\n PercentilesChartLazy,\n UqlCardReadonly,\n PagedGroupsCardLazy,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n system: {\n type: String,\n required: true,\n },\n groupId: {\n type: String,\n required: true,\n },\n annotations: {\n type: Array,\n default: () => [],\n },\n },\n\n setup(props) {\n const route = useRoute()\n const { where } = injectQueryStore()\n\n const axiosParams = computed(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.system,\n group_id: props.groupId,\n query: where.value,\n }\n })\n\n const group = useGroup(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/groups/${props.groupId}`,\n params: axiosParams.value,\n }\n })\n\n const isSpan = computed((): boolean => {\n return isSpanSystem(props.system)\n })\n\n const slowestSpansQuery = computed(() => {\n return createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, true)\n .where(AttrKey.spanGroupId, '=', props.groupId)\n .add(where.value)\n .toString()\n })\n const slowestSpansAxiosParams = computed(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.system,\n query: slowestSpansQuery.value,\n }\n })\n\n const failedSpansQuery = computed(() => {\n return createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, true)\n .where(AttrKey.spanGroupId, '=', props.groupId)\n .where(AttrKey.spanStatusCode, '=', 'error')\n .add(where.value)\n .toString()\n })\n const failedSpansAxiosParams = computed(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.system,\n query: failedSpansQuery.value,\n }\n })\n\n const statusMessagesQuery = computed(() => {\n return createQueryEditor()\n .exploreAttr(AttrKey.spanStatusMessage, true)\n .where(AttrKey.spanGroupId, '=', props.groupId)\n .where(AttrKey.spanStatusMessage, '!=', '')\n .add(where.value)\n .toString()\n })\n\n return {\n SystemName,\n AttrKey,\n Unit,\n\n axiosParams,\n group,\n isSpan,\n slowestSpansQuery,\n slowestSpansAxiosParams,\n failedSpansQuery,\n failedSpansAxiosParams,\n statusMessagesQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupInfoCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupInfoCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupInfoCard.vue?vue&type=template&id=b5d55466&scoped=true&\"\nimport script from \"./GroupInfoCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupInfoCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b5d55466\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, ref, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore } from '@/use/uql'\nimport { injectAnnotations } from '@/org/use-annotations'\n\n// Components\nimport NewMonitorMenu from '@/tracing/NewMonitorMenu.vue'\nimport SpanAttrs from '@/tracing/SpanAttrs.vue'\nimport EventPanels from '@/tracing/EventPanels.vue'\nimport GroupInfoCard from '@/tracing/GroupInfoCard.vue'\n\n// Misc\nimport { AttrKey, isSpanSystem } from '@/models/otel'\nimport { Span } from '@/models/span'\n\nexport default defineComponent({\n name: 'SpanBodyCard',\n components: {\n NewMonitorMenu,\n SpanAttrs,\n EventPanels,\n GroupInfoCard,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n span: {\n type: Object as PropType,\n required: true,\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const { where } = injectQueryStore()\n const activeTab = ref('attrs')\n\n const isSpan = computed((): boolean => {\n return isSpanSystem(props.span.system)\n })\n\n const axiosParams = computed(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: props.span.system,\n group_id: props.span.groupId,\n query: where.value,\n }\n })\n\n const traceRoute = computed(() => {\n if (props.span.standalone) {\n return null\n }\n if (route.value.name === 'TraceShow' && route.value.params.traceId === props.span.traceId) {\n return null\n }\n\n return {\n name: 'TraceShow',\n params: {\n traceId: props.span.traceId,\n },\n }\n })\n\n const spanGroupRoute = computed(() => {\n switch (route.value.name) {\n case 'SpanList':\n case 'SpanGroupList':\n return undefined\n }\n\n return {\n name: 'SpanList',\n query: {\n ...props.dateRange.queryParams(),\n system: props.span.system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, isSpan.value)\n .where(AttrKey.spanGroupId, '=', props.span.groupId)\n .toString(),\n },\n }\n })\n\n return {\n AttrKey,\n activeTab,\n isSpan,\n\n annotations: injectAnnotations(),\n\n axiosParams,\n\n spanGroupRoute,\n traceRoute,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanBodyCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanBodyCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanBodyCard.vue?vue&type=template&id=3705f8b1&scoped=true&\"\nimport script from \"./SpanBodyCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanBodyCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3705f8b1\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { useSpan } from '@/tracing/use-spans'\nimport { ErrorAlert } from '@/alerting/use-alerts'\n\n// Components\nimport SpanBodyCard from '@/tracing/SpanBodyCard.vue'\n\nexport default defineComponent({\n name: 'AlertCardSpan',\n components: {\n SpanBodyCard,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n\n const span = useSpan(() => {\n const { projectId } = route.value.params\n const { traceId, spanId } = props.alert.params\n return {\n url: `/internal/v1/tracing/${projectId}/traces/${traceId}/${spanId}`,\n params: {\n ...props.dateRange.axiosParams(),\n },\n }\n })\n\n return { span }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCardSpan.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCardSpan.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertCardSpan.vue?vue&type=template&id=859408aa&scoped=true&\"\nimport script from \"./AlertCardSpan.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertCardSpan.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"859408aa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{staticClass:\"px-2 text-subtitle-1\"},[_c('v-col',[_c('UqlCardReadonly',{attrs:{\"query\":_vm.query}})],1)],1),_c('v-row',{staticClass:\"px-2 text-subtitle-2 text-center\",attrs:{\"align\":\"end\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Status\")]),_c('div',[_vm._v(_vm._s(_vm.alert.status))])]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Trigger\")]),_c('MetricMonitorTrigger',{attrs:{\"alert\":_vm.alert}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Time\")]),_c('DateValue',{attrs:{\"value\":_vm.alert.time}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":{ name: 'MonitorMetricShow', params: { monitorId: _vm.alert.monitorId } },\"exact\":\"\"}},[_vm._v(\"View monitor\")]),(_vm.routeForSpans)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"to\":_vm.routeForSpans,\"depressed\":\"\",\"small\":\"\"}},[_vm._v(\"Matching spans\")]):_vm._e(),(_vm.$slots['append-action'])?_vm._t(\"append-action\"):_vm._e()],2)],1),_c('v-row',[_c('v-col',[_vm._v(\" You specified that value should be between \"),_c('strong',[_vm._v(_vm._s(_vm.minValue))]),_vm._v(\" and \"),_c('strong',[_vm._v(_vm._s(_vm.maxValue))]),_vm._v(\". The actual value of \"),_c('strong',[_vm._v(_vm._s(_vm.currentValue))]),_vm._v(\" (\"+_vm._s(_vm.currentValueVerbose)+\") has been \"+_vm._s(_vm.params.firing === -1 ? 'smaller' : 'greater')+\" than this range for at least \"),_c('strong',[_vm._v(_vm._s(_vm.duration))]),_vm._v(\". \")])],1),_c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"pa-4\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('MetricChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"height\":300,\"min-allowed-value\":_vm.alert.params.bounds.min,\"max-allowed-value\":_vm.alert.params.bounds.max,\"mark-point\":_vm.markPoint,\"show-legend\":\"\"}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.chart.option)?[(_vm.resolved)?_c('v-card',{staticClass:\"d-flex justify-center align-center\",attrs:{\"height\":_vm.chart.height,\"flat\":\"\"}},[_c('div',{staticClass:\"text-h3 grey--text text--lighten-2\"},[_vm._v(\"NO DATA\")])]):_c('v-skeleton-loader',{attrs:{\"height\":_vm.chart.height,\"type\":\"image\",\"boilerplate\":!_vm.loading}})]:_c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.chart.height,\"option\":_vm.chart.option,\"group\":_vm.group,\"annotations\":_vm.annotations},model:{value:(_vm.echart),callback:function ($$v) {_vm.echart=$$v},expression:\"echart\"}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport colors from 'vuetify/lib/util/colors'\nimport { ECharts } from 'echarts'\nimport { defineComponent, shallowRef, computed, onMounted, PropType } from 'vue'\n\n// Components\nimport EChart, { EChartProps } from '@/components/EChart.vue'\n\n// Misc\nimport { ChartKind, StyledTimeseries } from '@/metrics/types'\nimport { Annotation } from '@/org/types'\nimport { EventBus } from '@/models/eventbus'\nimport { createFormatter, isCustomUnit, Unit, Formatter } from '@/util/fmt'\nimport {\n baseChartConfig,\n axisLabelFormatter,\n axisPointerFormatter,\n addChartTooltip,\n createTooltipFormatter,\n EChartsOption,\n MarkPoint,\n} from '@/util/chart'\n\nexport default defineComponent({\n name: 'MetricChart',\n components: { EChart },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n resolved: {\n type: Boolean,\n default: false,\n },\n timeseries: {\n type: Array as PropType,\n required: true,\n },\n time: {\n type: Array as PropType,\n required: true,\n },\n height: {\n type: Number,\n default: 200,\n },\n chartKind: {\n type: String as PropType,\n default: ChartKind.Line,\n },\n group: {\n type: [String, Symbol],\n default: () => Symbol(),\n },\n minAllowedValue: {\n type: [Number, String],\n default: '',\n },\n maxAllowedValue: {\n type: [Number, String],\n default: '',\n },\n markPoint: {\n type: Object as PropType,\n default: undefined,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n eventBus: {\n type: Object as PropType,\n default: undefined,\n },\n },\n\n setup(props) {\n const echart = shallowRef()\n\n const columnFormatter = computed(() => {\n const formatter: Record = {}\n for (let ts of props.timeseries) {\n formatter[ts.name] = createFormatter(ts.unit)\n }\n if (props.markPoint) {\n formatter[props.markPoint.name] = createFormatter(props.markPoint.unit)\n }\n return formatter\n })\n\n const chart = computed(() => {\n const chart: Partial = { height: props.height }\n\n if (!props.timeseries.length) {\n return chart\n }\n\n const conf = baseChartConfig()\n conf.toolbox = {\n feature: {\n saveAsImage: {},\n },\n }\n\n addChartTooltip(conf, {\n formatter: createTooltipFormatter(columnFormatter.value),\n })\n\n conf.xAxis.push({\n type: 'time',\n axisLabel: {\n hideOverlap: true,\n },\n axisPointer: {\n label: {\n show: false,\n formatter: axisPointerFormatter(Unit.Time),\n },\n },\n })\n\n props.timeseries.forEach((ts, index) => {\n plotTimeseries(conf, props.chartKind, ts, props.timeseries.length - index)\n })\n\n if (typeof props.minAllowedValue === 'number' || typeof props.maxAllowedValue === 'number') {\n const series = conf.series[0]\n series.markArea = {\n itemStyle: {\n color: 'green',\n opacity: 0.2,\n borderWidth: 1,\n borderType: 'dashed',\n },\n data: [\n [\n {\n name: 'Allowed values range is in green',\n xAxis: 'min',\n yAxis: props.minAllowedValue !== '' ? props.minAllowedValue : 0,\n },\n {\n xAxis: 'max',\n yAxis: props.maxAllowedValue !== '' ? props.maxAllowedValue : 'max',\n },\n ],\n ],\n }\n }\n\n if (props.markPoint) {\n addMarkPoint(conf, props.markPoint)\n }\n\n conf.grid.push({\n top: '20px',\n left: '60px',\n right: conf.yAxis.length > 1 ? '60px' : '20px',\n height: String(props.height - 50) + 'px',\n })\n\n chart.option = conf\n return chart\n })\n\n onMounted(() => {\n if (!props.eventBus) {\n return\n }\n\n interface HoverEvent {\n item: StyledTimeseries\n hover: boolean\n }\n\n props.eventBus.on('hover', (event: HoverEvent) => {\n if (!echart.value || !props.timeseries.length) {\n return\n }\n\n if (!event.hover) {\n echart.value.dispatchAction({ type: 'highlight', seriesIndex: 0 })\n echart.value.dispatchAction({ type: 'downplay' })\n return\n }\n\n const ts = event.item\n const index = props.timeseries.findIndex((el) => el.id === ts.id)\n if (index === -1) {\n echart.value.dispatchAction({ type: 'highlight', seriesIndex: 0 })\n echart.value.dispatchAction({ type: 'downplay' })\n } else {\n echart.value.dispatchAction({ type: 'highlight', seriesIndex: index })\n }\n })\n })\n\n function plotTimeseries(\n conf: EChartsOption,\n chartKind: ChartKind,\n ts: StyledTimeseries,\n zIndex: number,\n ) {\n conf.dataset.push({\n source: {\n time: props.time,\n value: ts.value as number[],\n },\n })\n\n const series: Record = {\n yAxisIndex: yAxisIndex(conf, ts.unit),\n datasetIndex: conf.dataset.length - 1,\n name: ts.name,\n type: 'line',\n encode: { x: 'time', y: 'value' },\n symbol: ts.symbol,\n symbolSize: ts.symbolSize,\n color: ts.color,\n emphasis: { focus: 'series' },\n connectNulls: false,\n }\n\n switch (chartKind) {\n case ChartKind.Line:\n series.lineStyle = { width: ts.lineWidth }\n break\n case ChartKind.Area:\n series.z = zIndex\n series.lineStyle = { width: ts.lineWidth }\n series.areaStyle = { opacity: ts.opacity / 100 }\n break\n case ChartKind.Bar:\n series.type = 'bar'\n series.areaStyle = { opacity: ts.opacity / 100 }\n break\n case ChartKind.StackedArea:\n series.stack = 'all'\n series.lineStyle = { width: ts.lineWidth }\n series.areaStyle = { opacity: ts.opacity / 100 }\n break\n case ChartKind.StackedBar:\n series.type = 'bar'\n series.stack = 'all'\n series.areaStyle = { opacity: ts.opacity / 100 }\n break\n }\n\n conf.series.push(series)\n }\n\n function yAxisIndex(conf: EChartsOption, unit: string): number {\n if (isCustomUnit(unit)) {\n unit = ''\n }\n\n const index = conf.yAxis.findIndex((yAxis) => yAxis.id === unit)\n if (index >= 0) {\n return index\n }\n\n conf.yAxis.push({\n id: unit,\n type: 'value',\n axisLabel: {\n formatter: axisLabelFormatter(unit),\n },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(unit),\n },\n },\n splitLine: { show: false },\n min: (value) => {\n const values = [0, value.min]\n if (typeof props.minAllowedValue === 'number') {\n values.push(props.minAllowedValue)\n }\n if (typeof props.maxAllowedValue === 'number') {\n values.push(props.maxAllowedValue)\n }\n return Math.min(...values)\n },\n max: (value) => {\n const values = [value.max]\n if (typeof props.minAllowedValue === 'number') {\n values.push(props.minAllowedValue)\n }\n if (typeof props.maxAllowedValue === 'number') {\n values.push(props.maxAllowedValue)\n }\n return Math.max(...values)\n },\n })\n\n return conf.yAxis.length - 1\n }\n\n return { echart, chart }\n },\n})\n\nfunction addMarkPoint(conf: EChartsOption, markPoint: MarkPoint) {\n conf.series.push({\n name: markPoint.name,\n type: 'scatter',\n data: [[markPoint.time, markPoint.value]],\n symbolSize: 15,\n color: colors.red.darken2,\n z: 999,\n })\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricChart.vue?vue&type=script&lang=ts&\"","// Misc\nimport { MetricAlias } from '@/metrics/types'\nimport { AttrMatcher } from '@/use/attr-matcher'\n\nexport interface BaseMonitor {\n id: number\n projectId: number\n\n type: MonitorType\n name: string\n state: MonitorState\n\n notifyEveryoneByEmail: boolean\n params: Record\n\n createdAt: string\n updatedAt: string | null\n\n channelIds: number[]\n alertCount?: number\n}\n\nexport enum MonitorType {\n Metric = 'metric',\n Error = 'error',\n}\n\nexport interface MetricMonitor extends BaseMonitor {\n type: MonitorType.Metric\n params: MetricMonitorParams\n}\n\nexport interface MetricMonitorParams {\n metrics: MetricAlias[]\n query: string\n column: string\n columnUnit: string\n\n checkNumPoint: number\n timeOffset: number\n\n minAllowedValue: number | string | null\n maxAllowedValue: number | string | null\n}\n\nexport interface ErrorMonitor extends BaseMonitor {\n type: MonitorType.Error\n params: ErrorMonitorParams\n}\n\nexport interface ErrorMonitorParams {\n notifyOnNewErrors: boolean\n notifyOnRecurringErrors: boolean\n matchers: AttrMatcher[]\n}\n\nexport type Monitor = MetricMonitor | ErrorMonitor\n\nexport enum MonitorState {\n Active = 'active',\n Paused = 'paused',\n Firing = 'firing',\n NoData = 'no-data',\n}\n\nexport function emptyMetricMonitor(): MetricMonitor {\n return {\n id: 0,\n projectId: 0,\n\n name: '',\n state: MonitorState.Active,\n\n notifyEveryoneByEmail: true,\n\n type: MonitorType.Metric,\n params: {\n metrics: [],\n query: '',\n column: '',\n columnUnit: '',\n\n checkNumPoint: 5,\n timeOffset: 0,\n\n minAllowedValue: null,\n maxAllowedValue: null,\n },\n\n channelIds: [],\n\n createdAt: '',\n updatedAt: '',\n }\n}\n","import { render, staticRenderFns } from \"./MetricChart.vue?vue&type=template&id=35b9c3b7&scoped=true&\"\nimport script from \"./MetricChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35b9c3b7\",\n null\n \n)\n\nexport default component.exports","\nimport colors from 'vuetify/lib/util/colors'\nimport { formatDuration } from 'date-fns'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { joinQuery } from '@/use/uql'\nimport { UseDateRange } from '@/use/date-range'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\nimport { MetricAlert, AlertStatus } from '@/alerting/use-alerts'\n\n// Components\nimport UqlCardReadonly from '@/components/UqlCardReadonly.vue'\nimport MetricChart from '@/metrics/MetricChart.vue'\nimport MetricMonitorTrigger from '@/alerting/MetricMonitorTrigger.vue'\n\n// Utils\nimport { MetricColumn } from '@/metrics/types'\nimport { SystemName, AttrKey } from '@/models/otel'\nimport { fmt, numVerbose } from '@/util/fmt'\nimport { MINUTE, HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'MetricAlertCard',\n components: {\n UqlCardReadonly,\n MetricChart,\n MetricMonitorTrigger,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n alert: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const params = computed(() => {\n return props.alert.params\n })\n const monitor = computed(() => {\n return props.alert.params.monitor\n })\n const minValue = computed(() => {\n if (params.value.bounds.min === null) {\n return '-Inf'\n }\n return fmt(params.value.bounds.min, monitor.value.columnUnit)\n })\n const maxValue = computed(() => {\n if (params.value.bounds.max === null) {\n return '+Inf'\n }\n return fmt(params.value.bounds.max, monitor.value.columnUnit)\n })\n const currentValue = computed(() => {\n return fmt(params.value.currentValue, monitor.value.columnUnit)\n })\n const currentValueVerbose = computed(() => {\n return numVerbose(params.value.currentValue)\n })\n const duration = computed(() => {\n const dur = params.value.numPointFiring * MINUTE\n const hours = Math.trunc(dur / HOUR)\n const minutes = Math.trunc((dur - hours * HOUR) / MINUTE)\n return formatDuration({ hours, minutes })\n })\n\n const columnMap = computed((): Record => {\n return {\n [monitor.value.column]: {\n unit: monitor.value.columnUnit,\n color: colors.blue.lighten1,\n },\n }\n })\n\n const timeseries = useTimeseries(() => {\n return {\n ...props.dateRange.axiosParams(),\n metric: monitor.value.metrics.map((m) => m.name),\n alias: monitor.value.metrics.map((m) => m.alias),\n query: monitor.value.query,\n }\n })\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n columnMap,\n computed(() => ({})),\n )\n\n const query = computed(() => {\n const tables = []\n for (let metric of monitor.value.metrics) {\n tables.push(`${metric.name} as $${metric.alias}`)\n }\n return joinQuery([monitor.value.query, `from ${tables.join(', ')}`])\n })\n\n const routeForSpans = computed(() => {\n const where = monitor.value.query.split(' | ').filter((part) => part.startsWith('where '))\n if (!where.length) {\n return undefined\n }\n\n return {\n name: 'SpanList',\n query: {\n system: SystemName.All,\n query: [\n AttrKey.spanCountPerMin,\n AttrKey.spanErrorRate,\n `{p50,p90,p99}(${AttrKey.spanDuration})`,\n ...where,\n ].join(' | '),\n },\n }\n })\n\n const markPoint = computed(() => {\n return {\n name: 'outlier',\n value: props.alert.params.currentValue,\n unit: monitor.value.columnUnit,\n time: props.alert.time,\n }\n })\n\n return {\n AlertStatus,\n\n params,\n minValue,\n maxValue,\n currentValue,\n currentValueVerbose,\n duration,\n\n query,\n timeseries,\n styledTimeseries,\n routeForSpans,\n markPoint,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCardMetric.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCardMetric.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertCardMetric.vue?vue&type=template&id=da97dec4&scoped=true&\"\nimport script from \"./AlertCardMetric.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertCardMetric.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"da97dec4\",\n null\n \n)\n\nexport default component.exports","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useDateRange } from '@/use/date-range'\nimport { useProject } from '@/org/use-projects'\nimport { useAlert, useAlertManager, AlertType, AlertStatus } from '@/alerting/use-alerts'\n\n// Components\nimport FixedDateRangePicker from '@/components/date/FixedDateRangePicker.vue'\nimport AlertCardSpan from '@/alerting/AlertCardSpan.vue'\nimport AlertCardMetric from '@/alerting/AlertCardMetric.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'AlertCard',\n components: { FixedDateRangePicker, AlertCardSpan, AlertCardMetric },\n\n props: {\n alertId: {\n type: Number,\n required: true,\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n const dateRange = useDateRange()\n const project = useProject()\n\n const alert = useAlert(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/alerts/${props.alertId}`,\n }\n })\n const alertMan = useAlertManager()\n\n useTitle(\n computed(() => {\n return alert.data?.name ?? 'Alert'\n }),\n )\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n })\n\n bs.push({\n text: 'Alerts',\n to: {\n name: 'AlertList',\n },\n exact: true,\n })\n\n if (!alert.data) {\n bs.push({ text: 'Alert' })\n return bs\n }\n\n bs.push({\n text: truncate(alert.data.name, { length: 60 }),\n to: {\n name: 'AlertShow',\n params: { alertId: alert.data.id },\n },\n })\n\n return bs\n })\n\n function toggleAlert() {\n if (!alert.data) {\n return\n }\n alertMan.toggle(alert.data).then(() => {\n alert.reload()\n ctx.emit('change', alert)\n })\n }\n\n return {\n AlertType,\n AlertStatus,\n AttrKey,\n\n dateRange,\n breadcrumbs,\n\n alert,\n alertMan,\n\n toggleAlert,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertCard.vue?vue&type=template&id=52206300&scoped=true&\"\nimport script from \"./AlertCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52206300\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useSyncQueryParams } from '@/use/router'\nimport { injectForceReload } from '@/use/force-reload'\nimport { usePager } from '@/use/pager'\nimport { useFacetedSearch } from '@/use/faceted-search'\nimport { useAlerts, useAlertSelection, Alert } from '@/alerting/use-alerts'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport AlertsSidebar from '@/alerting/AlertsSidebar.vue'\nimport AlertSelection from '@/alerting/AlertSelection.vue'\nimport AlertOrderPicker from '@/alerting/AlertOrderPicker.vue'\nimport AlertsTable from '@/alerting/AlertsTable.vue'\nimport AlertCard from '@/alerting/AlertCard.vue'\n\nexport default defineComponent({\n name: 'AlertList',\n components: {\n ForceReloadBtn,\n AlertsSidebar,\n AlertSelection,\n AlertOrderPicker,\n AlertsTable,\n AlertCard,\n },\n\n setup() {\n useTitle('Alerts')\n const forceReload = injectForceReload()\n\n const dialog = shallowRef(false)\n const activeAlertId = shallowRef()\n\n const pager = usePager()\n const facetedSearch = useFacetedSearch()\n const alerts = useAlerts(\n computed(() => {\n const params: Record = {\n ...forceReload.params,\n ...facetedSearch.axiosParams(),\n }\n\n return params\n }),\n )\n const pageAlerts = computed(() => {\n return alerts.items.slice(pager.pos.start, pager.pos.end)\n })\n\n const selection = useAlertSelection(\n computed(() => {\n return alerts.items\n }),\n pageAlerts,\n )\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n if (queryParams.empty()) {\n queryParams.setDefault('attrs.alert_status', 'open')\n }\n\n queryParams.setDefault('sort_by', 'updated_at')\n queryParams.setDefault('sort_desc', true)\n\n alerts.order.parseQueryParams(queryParams)\n facetedSearch.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...alerts.order.queryParams(),\n ...facetedSearch.queryParams(),\n }\n },\n })\n\n watch(\n () => alerts.items.length,\n (numItem) => {\n pager.numItem = numItem\n },\n )\n\n function showAlert(alert: Alert) {\n activeAlertId.value = alert.id\n dialog.value = true\n }\n\n return {\n dialog,\n activeAlertId,\n showAlert,\n\n facetedSearch,\n alerts,\n selection,\n\n pager,\n pageAlerts,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertList.vue?vue&type=template&id=11e87576&scoped=true&\"\nimport script from \"./AlertList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AlertList.vue?vue&type=style&index=0&id=11e87576&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11e87576\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('AlertCard',{attrs:{\"alert-id\":_vm.$route.params.alertId,\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useDateRange } from '@/use/date-range'\n\n// Components\nimport AlertCard from '@/alerting/AlertCard.vue'\n\nexport default defineComponent({\n name: 'AlertShow',\n components: { AlertCard },\n\n setup() {\n const dateRange = useDateRange()\n\n return {\n dateRange,\n alert,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertShow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertShow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AlertShow.vue?vue&type=template&id=02882746&scoped=true&\"\nimport script from \"./AlertShow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AlertShow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02882746\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-toolbar-title',[_vm._v(\"Monitors\")]),_c('v-spacer'),_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})],1),_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',[_c('MonitorNewMenu',{on:{\"create\":function($event){return _vm.monitors.reload()}}})],1)],1),_c('v-row',[_c('v-col',[_c('v-sheet',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-text-field',{staticStyle:{\"max-width\":\"350px\"},attrs:{\"placeholder\":\"Search monitors...\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.monitors.searchInput),callback:function ($$v) {_vm.$set(_vm.monitors, \"searchInput\", $$v)},expression:\"monitors.searchInput\"}}),_c('v-spacer'),(_vm.monitors.items.length)?_c('div',{staticClass:\"text-body-2\"},[_c('NumValue',{staticClass:\"font-weight-bold\",attrs:{\"value\":_vm.monitors.items.length,\"format\":\"verbose\"}}),_c('span',[_vm._v(\" monitors\")])],1):_vm._e()],1),_c('div',{staticClass:\"pa-4\"},[(!_vm.monitors.status.hasData())?_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"height\":\"600px\"}}):[_c('MonitorStateCounts',{attrs:{\"states\":_vm.monitors.states},on:{\"input\":function($event){_vm.monitors.stateFilter = $event}}}),_c('MonitorsTable',{attrs:{\"loading\":_vm.monitors.loading,\"monitors\":_vm.monitors.items,\"order\":_vm.monitors.order},on:{\"change\":function($event){return _vm.monitors.reload()}}})]],2)],1),_c('XPagination',{attrs:{\"pager\":_vm.monitors.pager}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, shallowRef, watch, ref, proxyRefs } from 'vue'\nimport { refDebounced } from '@/use/ref-debounced'\n\n// Composables\nimport { useOrder } from '@/use/order'\nimport { useRoute, Values } from '@/use/router'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios } from '@/use/watch-axios'\nimport { usePager } from '@/use/pager'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Misc\nimport { Monitor, MonitorType, MonitorState, MetricMonitor, ErrorMonitor } from '@/alerting/types'\n\nexport function createEmptyErrorMonitor(): ErrorMonitor {\n return {\n id: 0,\n projectId: 0,\n\n name: '',\n state: MonitorState.Active,\n\n notifyEveryoneByEmail: true,\n\n type: MonitorType.Error,\n params: {\n notifyOnNewErrors: true,\n notifyOnRecurringErrors: true,\n matchers: [],\n },\n\n channelIds: [],\n\n createdAt: '',\n updatedAt: '',\n }\n}\n\nexport interface StateCount {\n state: string\n count: number\n}\n\nexport type UseMonitors = ReturnType\n\nexport function useMonitors() {\n const route = useRoute()\n const forceReload = injectForceReload()\n const pager = usePager()\n const order = useOrder()\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n\n const stateFilter = ref()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n const params: Record = {\n ...forceReload.params,\n ...pager.axiosParams(),\n state: stateFilter.value ?? null,\n ...order.axiosParams,\n }\n\n if (debouncedSearchInput.value) {\n params.q = debouncedSearchInput.value\n }\n\n return {\n url: `/internal/v1/projects/${projectId}/monitors`,\n params,\n }\n })\n\n const monitors = computed((): Monitor[] => {\n return data.value?.monitors ?? []\n })\n\n const states = computed((): StateCount[] => {\n return data.value?.states ?? []\n })\n\n const count = computed(() => {\n return data.value?.count ?? 0\n })\n\n function queryParams() {\n const queryParams: Record = {\n q: debouncedSearchInput.value,\n ...order.queryParams(),\n }\n\n return queryParams\n }\n\n function parseQueryParams(queryParams: Values) {\n searchInput.value = queryParams.string('q')\n debouncedSearchInput.flush()\n\n order.parseQueryParams(queryParams)\n }\n\n watch(count, (count) => {\n pager.numItem = count\n })\n\n return proxyRefs({\n pager,\n\n status,\n loading,\n\n items: monitors,\n searchInput,\n order,\n count,\n states,\n stateFilter,\n\n queryParams,\n parseQueryParams,\n reload,\n })\n}\n\nexport function useMonitorManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function createMetricMonitor(monitor: Partial) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/monitors/metric`\n\n return request({ method: 'POST', url, data: monitor }).then((resp) => {\n return resp.data.monitor as MetricMonitor\n })\n }\n\n function updateMetricMonitor(monitor: MetricMonitor) {\n const { id, projectId } = monitor\n const url = `/internal/v1/projects/${projectId}/monitors/${id}/metric`\n\n return request({ method: 'PUT', url, data: monitor }).then((resp) => {\n return resp.data.monitor as MetricMonitor\n })\n }\n\n function createErrorMonitor(monitor: Partial) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/monitors/error`\n\n return request({ method: 'POST', url, data: monitor }).then((resp) => {\n return resp.data.monitor as ErrorMonitor\n })\n }\n\n function updateErrorMonitor(monitor: ErrorMonitor) {\n const { id, projectId } = monitor\n const url = `/internal/v1/projects/${projectId}/monitors/${id}/error`\n\n return request({ method: 'PUT', url, data: monitor }).then((resp) => {\n return resp.data.monitor as ErrorMonitor\n })\n }\n\n function createMonitorFromYaml(yaml: string) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/monitors/yaml`\n\n return request({ method: 'POST', url, data: yaml }).then((resp) => {\n return resp.data.monitors as Monitor[]\n })\n }\n\n function activate(monitor: Monitor) {\n monitor.state = MonitorState.Active\n return updateState(monitor)\n }\n\n function pause(monitor: Monitor) {\n monitor.state = MonitorState.Paused\n return updateState(monitor)\n }\n\n function updateState(monitor: Monitor) {\n const { id, projectId, state } = monitor\n const url = `/internal/v1/projects/${projectId}/monitors/${id}/${state}`\n\n return request({ method: 'PUT', url, data: monitor }).then((resp) => {\n return resp.data.monitor as Monitor\n })\n }\n\n function del(monitor: Monitor) {\n const { id, projectId } = monitor\n const url = `/internal/v1/projects/${projectId}/monitors/${id}`\n\n return request({ method: 'DELETE', url })\n }\n\n return proxyRefs({\n pending,\n\n createMetricMonitor,\n updateMetricMonitor,\n\n createErrorMonitor,\n updateErrorMonitor,\n\n createMonitorFromYaml,\n\n del,\n pause,\n activate,\n })\n}\n\nexport function useMetricMonitor() {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId, monitorId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/monitors/${monitorId}`,\n }\n })\n\n const monitor = computed((): MetricMonitor | undefined => {\n return data.value?.monitor\n })\n\n return proxyRefs({\n status,\n loading,\n\n data: monitor,\n\n reload,\n })\n}\n\nexport function useErrorMonitor() {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId, monitorId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/monitors/${monitorId}`,\n }\n })\n\n const monitor = computed((): ErrorMonitor | undefined => {\n return data.value?.monitor\n })\n\n return proxyRefs({\n status,\n loading,\n\n data: monitor,\n\n reload,\n })\n}\n\nexport function routeForMonitor(monitor: Monitor) {\n return {\n name: monitor.type === MonitorType.Metric ? 'MonitorMetricShow' : 'MonitorErrorShow',\n params: { monitorId: String(monitor.id) },\n }\n}\n\nexport function useYamlMonitor(monitorId: number) {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/monitors/${monitorId}/yaml`,\n }\n })\n\n const yaml = computed(() => {\n return data.value ?? ''\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: yaml,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\"}},'v-btn',attrs,false),on),[_vm._v(\" New monitor \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":{ name: 'MonitorMetricNew' }}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-chart-line\")])],1),_c('v-list-item-title',[_vm._v(\"New metrics monitor\")])],1),_c('v-list-item',{attrs:{\"to\":{ name: 'MonitorErrorNew' }}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-bug-outline\")])],1),_c('v-list-item-title',[_vm._v(\"New errors monitor\")])],1),_c('v-list-item',{on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-code-string\")])],1),_c('v-list-item-title',[_vm._v(\"New monitor from YAML\")])],1)],1)],1),_c('DialogCard',{attrs:{\"max-width\":\"800\",\"title\":\"New monitor from YAML\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.dialog)?_c('MonitorYamlForm',{on:{\"create\":function($event){_vm.$emit('create')\n _vm.dialog = false}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"max-width\":_vm.maxWidth,\"fullscreen\":_vm.fullscreen},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('v-card',{attrs:{\"flat\":\"\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.title))]),_vm._t(\"toolbar-append\"),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('input', false)}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],2),_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'DialogCard',\n\n props: {\n value: {\n type: Boolean,\n required: true,\n },\n title: {\n type: String,\n required: true,\n },\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n fullscreen: {\n type: Boolean,\n default: false,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DialogCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DialogCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DialogCard.vue?vue&type=template&id=f95615ee&scoped=true&\"\nimport script from \"./DialogCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./DialogCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f95615ee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.saveYaml.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',[_c('v-col',[_c('v-textarea',{attrs:{\"placeholder\":\"To create a monitor, paste here a a monitor definition in YAML format\",\"auto-grow\":\"\",\"filled\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.yaml},model:{value:(_vm.yaml),callback:function ($$v) {_vm.yaml=$$v},expression:\"yaml\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.isValid,\"loading\":_vm.monitorMan.pending,\"color\":\"primary\",\"type\":\"submit\"}},[_vm._v(\" Create monitor \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const requiredRule = (v: string) => (v && v.length != 0) || 'Field is required'\n\nexport const emailRule = (v: string) => isEmail(v) || 'E-mail must be valid'\n\nconst emailRe = /^[^\\s<>]+@[^\\s<>]+\\.[^\\s<>]+$/\n\nexport function isEmail(v: string): boolean {\n return emailRe.test(v)\n}\n\nexport function optionalRule(v: string): boolean {\n return true\n}\n\nexport function minMaxRule(min: number, max: number) {\n return (num: number) => {\n if (num < min) {\n return `Must be greater than ${min}`\n }\n if (num > max) {\n return `Must be smaller than ${max}`\n }\n return true\n }\n}\n\nexport function minMaxStringLengthRule(min: number, max: number) {\n return (s: string) => {\n const length = s.length\n if (length < min) {\n return `Must be at least ${min} characters long`\n }\n if (length > max) {\n return `Must be no more than ${max} characters long`\n }\n return true\n }\n}\n","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Composables\nimport { useMonitorManager, routeForMonitor } from '@/alerting/use-monitors'\nimport { useRouterOnly } from '@/use/router'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'MonitorYamlForm',\n\n setup(_props, ctx) {\n const isValid = shallowRef(true)\n const rules = {\n yaml: [requiredRule],\n }\n\n const router = useRouterOnly()\n const yaml = shallowRef('')\n const monitorMan = useMonitorManager()\n\n function saveYaml() {\n monitorMan.createMonitorFromYaml(yaml.value).then((monitors) => {\n ctx.emit('create')\n\n if (monitors.length === 1) {\n router.push(routeForMonitor(monitors[0]))\n }\n })\n }\n\n return {\n isValid,\n rules,\n yaml,\n monitorMan,\n\n saveYaml,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorYamlForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorYamlForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorYamlForm.vue?vue&type=template&id=628ed5b0&scoped=true&\"\nimport script from \"./MonitorYamlForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorYamlForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"628ed5b0\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Components\nimport DialogCard from '@/components/DialogCard.vue'\nimport MonitorYamlForm from '@/alerting/MonitorYamlForm.vue'\n\nexport default defineComponent({\n name: 'MonitorNewMenu',\n\n components: { DialogCard, MonitorYamlForm },\n\n setup() {\n const dialog = shallowRef(false)\n const menu = shallowRef(false)\n\n return { dialog, menu }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorNewMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorNewMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorNewMenu.vue?vue&type=template&id=cffe1944&scoped=true&\"\nimport script from \"./MonitorNewMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorNewMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cffe1944\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"headers\":_vm.headers,\"loading\":_vm.loading,\"items\":_vm.monitors,\"hide-default-footer\":\"\",\"no-data-text\":\"There are no monitors\",\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc,\"must-sort\":\"\"},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":[function($event){return _vm.$set(_vm.order, \"column\", $event)},function($event){_vm.$nextTick(() => (_vm.order.desc = true))}],\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('MonitorsTableRow',{attrs:{\"monitor\":item},on:{\"change\":function($event){return _vm.$emit('change', $event)},\"click:show-yaml\":function($event){return _vm.$emit('click:show-yaml', $event)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){_vm.$router.push(_vm.routeForMonitor(_vm.monitor))}}},[_c('td',[_vm._v(\" \"+_vm._s(_vm.monitor.name)+\" \")]),_c('td',{staticClass:\"text-no-wrap\"},[_c('MonitorTypeIcon',{staticClass:\"mr-2\",attrs:{\"type\":_vm.monitor.type}}),_c('span',[_vm._v(_vm._s(_vm.monitor.type))])],1),_c('td',{staticClass:\"text-center\"},[_c('MonitorStateAvatar',{attrs:{\"state\":_vm.monitor.state}})],1),_c('td',{staticClass:\"text-center\"},[(_vm.monitor.alertOpenCount)?_c('v-chip',{attrs:{\"to\":_vm.routeForOpenAlerts,\"label\":\"\",\"color\":\"red lighten-5\",\"light\":\"\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.monitor.alertOpenCount))]),_c('span',{staticClass:\"ml-1\"},[_vm._v(\" open\")])]):_vm._e(),(_vm.monitor.alertClosedCount)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"to\":_vm.routeForClosedAlerts,\"label\":\"\",\"color\":\"green lighten-5\",\"light\":\"\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.monitor.alertClosedCount))]),_c('span',{staticClass:\"ml-1\"},[_vm._v(\" closed\")])]):_vm._e()],1),_c('td',[(_vm.monitor.updatedAt)?_c('DateValue',{attrs:{\"value\":_vm.monitor.updatedAt,\"format\":\"relative\"}}):_vm._e()],1),_c('td',{staticClass:\"text-right text-no-wrap\"},[(_vm.monitor.state != _vm.MonitorState.Paused)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Pause monitor\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.pauseMonitor(_vm.monitor)}}},[_c('v-icon',[_vm._v(\"mdi-pause\")])],1):_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Resume monitor\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.activateMonitor(_vm.monitor)}}},[_c('v-icon',[_vm._v(\"mdi-play\")])],1),_c('v-btn',{attrs:{\"to\":_vm.routeForMonitor(_vm.monitor),\"icon\":\"\",\"title\":\"Edit monitor\"},on:{\"click\":function($event){$event.stopPropagation();}}},[_c('v-icon',[_vm._v(\"mdi-pencil-outline\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.monitorMan.pending,\"icon\":\"\",\"title\":\"Delete monitor\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteMonitor.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: onMenu, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),onMenu),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.openMonitorDialog(_vm.monitor)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-eye\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"View Yaml\")])],1)],1)],1)],1)],1),(_vm.dialog)?_c('MonitorYamlDialog',{attrs:{\"monitor\":_vm.activeMonitor},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-icon',{attrs:{\"title\":_vm.type}},[_vm._v(_vm._s(_vm.icon))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { MonitorType } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorTypeIcon',\n\n props: {\n type: {\n type: String as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const icon = computed(() => {\n switch (props.type) {\n case MonitorType.Metric:\n return 'mdi-chart-line'\n case MonitorType.Error:\n return 'mdi-bug-outline'\n default:\n return 'mdi-alert'\n }\n })\n\n return { icon }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorTypeIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorTypeIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorTypeIcon.vue?vue&type=template&id=1b706605&scoped=true&\"\nimport script from \"./MonitorTypeIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorTypeIcon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b706605\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"text-no-wrap\"},[_c('v-avatar',_vm._b({staticClass:\"mr-2\",attrs:{\"size\":\"12\"}},'v-avatar',_vm.attrs,false)),_c('span',[_vm._v(_vm._s(_vm.state))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { MonitorState } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorStateAvatar',\n\n props: {\n state: {\n type: String as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const attrs = computed(() => {\n switch (props.state) {\n case MonitorState.Active:\n return { color: 'success' }\n case MonitorState.Firing:\n return { color: 'error', dark: true }\n default:\n return { color: 'grey' }\n }\n })\n\n return { attrs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorStateAvatar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorStateAvatar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorStateAvatar.vue?vue&type=template&id=eb86b200&scoped=true&\"\nimport script from \"./MonitorStateAvatar.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorStateAvatar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MonitorStateAvatar.vue?vue&type=style&index=0&id=eb86b200&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eb86b200\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('DialogCard',{attrs:{\"value\":_vm.value,\"max-width\":\"800\",\"title\":_vm.monitor.name},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[_c('div',{staticClass:\"container--fixed-sm\"},[_c('v-container',[(_vm.yaml.data)?_c('PrismCode',{attrs:{\"code\":_vm.yaml.data,\"language\":\"yaml\"}}):_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useYamlMonitor } from '@/alerting/use-monitors'\n\n// Components\nimport DialogCard from '@/components/DialogCard.vue'\n\n// Misc\nimport { Monitor } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorYamlDialog',\n\n components: { DialogCard },\n\n props: {\n value: {\n type: Boolean,\n required: true,\n },\n monitor: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const yaml = useYamlMonitor(props.monitor.id)\n\n return {\n yaml,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorYamlDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorYamlDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorYamlDialog.vue?vue&type=template&id=61340302&scoped=true&\"\nimport script from \"./MonitorYamlDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorYamlDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61340302\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\nimport { useMonitorManager, routeForMonitor } from '@/alerting/use-monitors'\nimport { AlertStatus } from '@/alerting/use-alerts'\n\n// Components\nimport MonitorTypeIcon from '@/alerting/MonitorTypeIcon.vue'\nimport MonitorStateAvatar from '@/alerting/MonitorStateAvatar.vue'\nimport MonitorYamlDialog from '@/alerting/MonitorYamlDialog.vue'\n\n// Misc\nimport { Monitor, MonitorType, MonitorState } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorsTableRow',\n components: { MonitorTypeIcon, MonitorStateAvatar, MonitorYamlDialog },\n\n props: {\n monitor: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const menu = shallowRef(false)\n const activeMonitor = shallowRef()\n const dialog = shallowRef(false)\n const confirm = useConfirm()\n const monitorMan = useMonitorManager()\n\n const routeForOpenAlerts = computed(() => {\n return routeForAlerts(AlertStatus.Open)\n })\n\n const routeForClosedAlerts = computed(() => {\n return routeForAlerts(AlertStatus.Closed)\n })\n\n function routeForAlerts(status: AlertStatus) {\n return {\n name: 'AlertList',\n query: {\n q: 'monitor:' + props.monitor.id,\n 'attrs.alert_status': status,\n },\n }\n }\n\n function activateMonitor() {\n monitorMan.activate(props.monitor).then(() => {\n ctx.emit('change', props.monitor)\n })\n }\n\n function pauseMonitor(monitor: Monitor) {\n monitorMan.pause(monitor).then(() => {\n ctx.emit('change', props.monitor)\n })\n }\n\n function deleteMonitor() {\n confirm\n .open('Delete monitor', `Do you really want to delete \"${props.monitor.name}\" monitor?`)\n .then(() => monitorMan.del(props.monitor))\n .then((monitor) => ctx.emit('change', monitor))\n .catch(() => {})\n }\n\n function openMonitorDialog(monitor: Monitor) {\n activeMonitor.value = monitor\n dialog.value = true\n }\n\n return {\n MonitorType,\n MonitorState,\n\n menu,\n dialog,\n activeMonitor,\n routeForMonitor,\n routeForOpenAlerts,\n routeForClosedAlerts,\n\n monitorMan,\n activateMonitor,\n pauseMonitor,\n deleteMonitor,\n openMonitorDialog,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorsTableRow.vue?vue&type=template&id=8f388a6c&scoped=true&\"\nimport script from \"./MonitorsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorsTableRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MonitorsTableRow.vue?vue&type=style&index=0&id=8f388a6c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8f388a6c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Components\nimport MonitorsTableRow from '@/alerting/MonitorsTableRow.vue'\n\n// Composables\nimport { UseOrder } from '@/use/order'\n\n// Misc\nimport { Monitor } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorsTable',\n components: { MonitorsTableRow },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n monitors: {\n type: Array as PropType,\n required: true,\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup() {\n const headers = computed(() => {\n const headers = []\n headers.push({ text: 'Monitor Name', value: 'name', sortable: true, align: 'start' })\n headers.push({ text: 'Type', value: 'type', sortable: true, align: 'start' })\n headers.push({ text: 'State', value: 'state', sortable: true, align: 'center' })\n headers.push({ text: 'Alerts', value: 'alertCount', sortable: false, align: 'center' })\n headers.push({ text: 'Updated at', value: 'updatedAt', sortable: true, align: 'start' })\n headers.push({ text: 'Actions', value: 'actions', sortable: false, align: 'end' })\n return headers\n })\n\n return { headers }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorsTable.vue?vue&type=template&id=15ac6514&scoped=true&\"\nimport script from \"./MonitorsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15ac6514\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-btn-toggle',{staticClass:\"mb-2\",attrs:{\"color\":\"blue accent-3\",\"tile\":\"\",\"group\":\"\"},on:{\"change\":function($event){return _vm.$emit('input', $event)}}},_vm._l((_vm.states),function(item){return _c('v-btn',{key:item.state,attrs:{\"value\":item.state,\"small\":\"\"}},[_c('MonitorStateAvatar',{attrs:{\"state\":item.state}}),_c('span',{staticClass:\"ml-1\"},[_vm._v(\"(\"+_vm._s(item.count)+\")\")])],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { StateCount } from '@/alerting/use-monitors'\n\n// Components\nimport MonitorStateAvatar from '@/alerting/MonitorStateAvatar.vue'\n\nexport default defineComponent({\n name: 'MonitorStateCounts',\n components: { MonitorStateAvatar },\n\n props: {\n states: {\n type: Array as PropType,\n required: true,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorStateCounts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorStateCounts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorStateCounts.vue?vue&type=template&id=73811906&scoped=true&\"\nimport script from \"./MonitorStateCounts.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorStateCounts.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73811906\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useTitle } from '@vueuse/core'\nimport { useMetrics } from '@/metrics/use-metrics'\nimport { useMonitors } from '@/alerting/use-monitors'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport MonitorNewMenu from '@/alerting/MonitorNewMenu.vue'\nimport MonitorsTable from '@/alerting/MonitorsTable.vue'\nimport MonitorStateCounts from '@/alerting/MonitorStateCounts.vue'\n\nexport default defineComponent({\n name: 'MonitorList',\n components: {\n ForceReloadBtn,\n MonitorNewMenu,\n MonitorsTable,\n MonitorStateCounts,\n },\n\n setup() {\n useTitle('Monitors')\n\n const project = useProject()\n const metrics = useMetrics()\n const monitors = useMonitors()\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('sort_by', 'updatedAt')\n queryParams.setDefault('sort_desc', true)\n\n monitors.parseQueryParams(queryParams)\n },\n toQuery() {\n const queryParams: Record = {\n ...monitors.queryParams(),\n }\n\n return queryParams\n },\n })\n\n return {\n project,\n metrics,\n monitors,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorList.vue?vue&type=template&id=d939bb14&scoped=true&\"\nimport script from \"./MonitorList.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d939bb14\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('MonitorMetricForm',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.metrics.items,\"monitor\":_vm.activeMonitor,\"column-map\":_vm.columnMap},on:{\"saved\":_vm.onSave,\"click:cancel\":_vm.onCancel},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex align-center justify-end flex-wrap\"},[_c('div',{staticClass:\"d-flex align-center flex-nowrap\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.dateRange.hasPrevPeriod,\"title\":\"Previous period\"},on:{\"click\":_vm.dateRange.prevPeriod}},[_c('v-icon',{staticClass:\"small\"},[_vm._v(\"mdi-chevron-left\")])],1),_c('DateRangePickerMenu',{attrs:{\"date-range\":_vm.dateRange}}),_c('PeriodPickerMenu',{attrs:{\"value\":_vm.dateRange.duration,\"periods\":_vm.periods},on:{\"input\":function($event){return _vm.dateRange.changeDuration($event)}}}),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.dateRange.hasNextPeriod,\"title\":\"Next period\"},on:{\"click\":_vm.dateRange.nextPeriod}},[_c('v-icon',{staticClass:\"small\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('v-btn',{staticClass:\"ml-1 px-2\",attrs:{\"loading\":_vm.forceReload.loading,\"small\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.dateRange.reload}},[_vm._v(\" Reload \")]),(_vm.dateRange.isNow)?_c('v-btn',{staticClass:\"ml-1\",attrs:{\"icon\":\"\",\"title\":_vm.dateRange.autoReloadEnabled ? 'Stop auto-reloading' : 'Start auto-reloading'},on:{\"click\":function($event){return _vm.dateRange.toggleAutoReload()}}},[_c('v-icon',[_vm._v(_vm._s(_vm.dateRange.autoReloadEnabled ? 'mdi-pause' : 'mdi-play'))])],1):_c('v-btn',{staticClass:\"ml-2 px-2\",attrs:{\"small\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.dateRange.reloadNow}},[_vm._v(\" Reset \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"transition\":\"slide-x-transition\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(tooltip){return [(_vm.dateRange.isNow && !_vm.forceDateRange)?_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',{ ...tooltip.attrs, ...attrs },false),{ ...tooltip.on, ...on }),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-calendar-blank\")])],1):(_vm.dateRange.isValid)?_c('v-btn',_vm._g(_vm._b({staticClass:\"px-2\",attrs:{\"text\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-calendar-blank\")]),_c('DateRange',{attrs:{\"start\":_vm.dateRange.gte,\"end\":_vm.dateRange.lt}})],1):_vm._e()]}}],null,true)},[_c('DateRange',{attrs:{\"start\":_vm.dateRange.gte,\"end\":_vm.dateRange.lt}})],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-card',{attrs:{\"width\":\"auto\"}},[_c('v-card-text',{staticClass:\"pa-5\"},[_c('CustomDurationPicker',{attrs:{\"value\":_vm.dateRange.duration},on:{\"input\":_vm.applyDuration}}),_c('div',{staticClass:\"my-5 d-flex align-center\"},[_c('v-divider'),_c('div',{staticClass:\"mx-2 text-subtitle-1 grey--text text--lighten-1\"},[_vm._v(\"or\")]),_c('v-divider')],1),_c('CustomDateRangePicker',{attrs:{\"date-range\":_vm.dateRange},on:{\"input\":_vm.applyRange}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"text-body-1\"},[_vm._v(\"Last\")]),_c('v-col',[_c('v-text-field',{staticStyle:{\"width\":\"78px\"},attrs:{\"type\":\"number\",\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"mandatory\":\"\"},model:{value:(_vm.amount),callback:function ($$v) {_vm.amount=_vm._n($$v)},expression:\"amount\"}})],1),_c('v-col',[_c('v-select',{staticStyle:{\"width\":\"118px\"},attrs:{\"items\":_vm.units,\"item-text\":\"name\",\"item-value\":\"ms\",\"hide-details\":\"\",\"outlined\":\"\",\"dense\":\"\",\"mandatory\":\"\"},model:{value:(_vm.unit),callback:function ($$v) {_vm.unit=$$v},expression:\"unit\"}})],1),_c('v-col',[_c('v-btn',{staticClass:\"primary d-inline-block mx-1\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":_vm.apply}},[_vm._v(\"Apply\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, watch } from 'vue'\n\n// Misc\nimport { MINUTE, HOUR, DAY } from '@/util/fmt/date'\n\ninterface Unit {\n name: string\n ms: number\n}\n\nexport default defineComponent({\n name: 'DateRangeDurationPicker',\n\n props: {\n value: {\n type: Number,\n required: true,\n },\n },\n\n setup(props, { emit }) {\n const units: Unit[] = [\n {\n name: 'minutes',\n ms: MINUTE,\n },\n {\n name: 'hours',\n ms: HOUR,\n },\n {\n name: 'days',\n ms: DAY,\n },\n ]\n\n const amount = shallowRef(1)\n const unit = shallowRef(HOUR)\n\n const isValid = computed(() => {\n if (amount.value * unit.value > 0) {\n return true\n }\n\n return false\n })\n\n function apply() {\n emit('input', amount.value * unit.value)\n }\n\n watch(\n () => props.value,\n (ms: number) => {\n const found = findUnit(ms)\n amount.value = Math.floor(ms / found.ms)\n unit.value = found.ms\n },\n { immediate: true },\n )\n\n function findUnit(ms: number): Unit {\n for (let i = units.length - 1; i >= 0; i--) {\n const unit = units[i]\n\n if (ms / unit.ms >= 1000) {\n const found = units[i + 1]\n if (found) {\n return found\n }\n }\n\n if (ms % unit.ms === 0) {\n return unit\n }\n }\n\n return units[0]\n }\n\n return {\n units,\n amount,\n unit,\n isValid,\n\n apply,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDurationPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDurationPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomDurationPicker.vue?vue&type=template&id=d6b4ae88&scoped=true&\"\nimport script from \"./CustomDurationPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomDurationPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d6b4ae88\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pt-3 text-body-1\"},[_vm._v(\"From date\")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateTextInput',{on:{\"input\":_vm.updateLt},model:{value:(_vm.gte),callback:function ($$v) {_vm.gte=$$v},expression:\"gte\"}})],1)],1),_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pt-3 text-body-1\"},[_vm._v(\"To date\")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateTextInput',{model:{value:(_vm.lt),callback:function ($$v) {_vm.lt=$$v},expression:\"lt\"}})],1)],1),_c('v-row',[_c('v-col'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-spacer'),_c('v-btn',{staticClass:\"primary\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":_vm.apply}},[_vm._v(\"Apply\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-menu',{attrs:{\"close-on-content-click\":false,\"transition\":\"slide-x-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({},'v-icon',attrs,false),on),[_vm._v(\"mdi-calendar\")]),_c('v-text-field',{staticClass:\"d-inline-block ml-2\",staticStyle:{\"width\":\"115px\"},attrs:{\"dense\":\"\",\"outlined\":\"\",\"hint\":\"dd-mm-yyyy\",\"persistent-hint\":\"\",\"rules\":_vm.rules.date},on:{\"blur\":_vm.onBlur},model:{value:(_vm.formattedDate),callback:function ($$v) {_vm.formattedDate=$$v},expression:\"formattedDate\"}})]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-date-picker',{attrs:{\"no-title\":\"\"},on:{\"input\":function($event){_vm.menu = false}},model:{value:(_vm.datePicker),callback:function ($$v) {_vm.datePicker=$$v},expression:\"datePicker\"}})],1),_c('v-text-field',{staticClass:\"d-inline-block ml-4\",staticStyle:{\"width\":\"75px\"},attrs:{\"outlined\":\"\",\"dense\":\"\",\"hint\":\"24 hours\",\"persistent-hint\":\"\",\"rules\":_vm.rules.time},on:{\"blur\":_vm.onBlur},model:{value:(_vm.formattedTime),callback:function ($$v) {_vm.formattedTime=$$v},expression:\"formattedTime\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, watch } from 'vue'\n\n// Misc\nimport { parse, format, isValid } from 'date-fns'\nimport { toLocal } from '@/util/fmt/date'\n\nconst DATE_FORMAT = 'dd-MM-yyyy'\nconst TIME_FORMAT = 'H:mm'\n\nexport default defineComponent({\n name: 'DateTextInput',\n\n props: {\n value: {\n type: Date,\n required: true,\n },\n },\n\n setup(props, { emit }) {\n const menu = shallowRef(false)\n const formattedDate = shallowRef('')\n const formattedTime = shallowRef('')\n\n const datePicker = computed({\n get(): string {\n return toLocal(props.value).toISOString().substr(0, 10)\n },\n set(s: string) {\n formattedDate.value = format(new Date(s), DATE_FORMAT)\n\n const date = parseDateTime(`${formattedDate.value} ${formattedTime.value}`)\n emit('input', date)\n },\n })\n\n watch(\n () => props.value,\n (date: Date) => {\n formattedDate.value = format(date, DATE_FORMAT)\n formattedTime.value = format(date, TIME_FORMAT)\n },\n { immediate: true },\n )\n\n const rules = {\n time: [(v: string) => isValidDateTime(v, TIME_FORMAT) || '24 hours'],\n date: [(v: string) => isValidDateTime(v, DATE_FORMAT) || 'dd-mm-yyyy'],\n }\n\n function isValidDateTime(s: string, format: string): boolean {\n return isValid(parse(s, format, new Date()))\n }\n\n function onBlur() {\n const date = parseDateTime(`${formattedDate.value} ${formattedTime.value}`)\n if (!isValid(date)) {\n return\n }\n\n emit('input', date)\n }\n\n return {\n menu,\n datePicker,\n formattedDate,\n formattedTime,\n rules,\n\n onBlur,\n }\n },\n})\n\nfunction parseDateTime(s: string) {\n return parse(s, `${DATE_FORMAT} ${TIME_FORMAT}`, new Date())\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateTextInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateTextInput.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./DateRange.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateRange.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0946d246\",\n null\n \n)\n\nexport default component.exports","import { computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios, AxiosRequestSource, AxiosParamsSource } from '@/use/watch-axios'\nimport { AttrMatcher } from '@/use/attr-matcher'\n\nexport enum NotifChannelType {\n Slack = 'slack',\n Telegram = 'telegram',\n Webhook = 'webhook',\n Alertmanager = 'alertmanager',\n}\n\nexport enum NotifChannelState {\n Delivering = 'delivering',\n Paused = 'paused',\n Disabled = 'disabled',\n}\n\ninterface BaseNotifChannel {\n id: number\n orgId: number\n\n name: string\n state: NotifChannelState\n\n type: NotifChannelType\n params: Record\n}\n\nexport type NotifChannel = SlackNotifChannel | TelegramNotifChannel | WebhookNotifChannel\n\nexport interface SlackNotifChannel extends BaseNotifChannel {\n type: NotifChannelType.Slack\n params: SlackNotifChannelParams\n}\n\nexport interface SlackNotifChannelParams {\n webhookUrl: string\n}\n\nexport interface TelegramNotifChannel extends BaseNotifChannel {\n type: NotifChannelType.Telegram\n params: TelegramNotifChannelParams\n}\n\nexport interface TelegramNotifChannelParams {\n chatId: number | null\n}\n\nexport interface WebhookNotifChannel extends BaseNotifChannel {\n type: NotifChannelType.Webhook | NotifChannelType.Alertmanager\n params: WebhookNotifChannelParams\n}\n\nexport interface WebhookNotifChannelParams {\n url: string\n payload: string\n}\n\nexport type UseNotifChannels = ReturnType\n\nexport function useNotifChannels(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n const req = {\n url: `/internal/v1/projects/${projectId}/notification-channels`,\n params: axiosParamsSource(),\n }\n return req\n })\n\n const channels = computed((): NotifChannel[] => {\n return data.value?.channels ?? []\n })\n\n return proxyRefs({\n status,\n loading,\n items: channels,\n\n reload,\n })\n}\n\nexport function emptySlackNotifChannel(): SlackNotifChannel {\n return {\n id: 0,\n orgId: 0,\n state: NotifChannelState.Delivering,\n name: '',\n\n type: NotifChannelType.Slack,\n params: {\n webhookUrl: '',\n },\n }\n}\n\nexport function emptyTelegramNotifChannel(): TelegramNotifChannel {\n return {\n id: 0,\n orgId: 0,\n state: NotifChannelState.Delivering,\n name: '',\n\n type: NotifChannelType.Telegram,\n params: {\n chatId: null,\n },\n }\n}\n\nexport function emptyWebhookNotifChannel(): WebhookNotifChannel {\n return {\n id: 0,\n orgId: 0,\n state: NotifChannelState.Delivering,\n name: '',\n\n type: NotifChannelType.Webhook,\n params: {\n url: '',\n payload: '',\n },\n }\n}\n\nexport function emptyAlertmanagerNotifChannel(): WebhookNotifChannel {\n return {\n id: 0,\n orgId: 0,\n state: NotifChannelState.Delivering,\n name: '',\n\n type: NotifChannelType.Alertmanager,\n params: {\n url: '',\n payload: '',\n },\n }\n}\n\n//------------------------------------------------------------------------------\n\nexport function useSlackNotifChannel(axiosReqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(axiosReqSource)\n\n const channel = computed((): SlackNotifChannel | undefined => {\n return data.value?.channel\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: channel,\n })\n}\n\nexport function useTelegramNotifChannel(axiosReqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(axiosReqSource)\n\n const channel = computed((): TelegramNotifChannel | undefined => {\n return data.value?.channel\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: channel,\n })\n}\n\nexport function useWebhookNotifChannel(axiosReqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(axiosReqSource)\n\n const channel = computed((): WebhookNotifChannel | undefined => {\n return data.value?.channel\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: channel,\n })\n}\n\nexport function useAlertmanagerNotifChannel(axiosReqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(axiosReqSource)\n\n const channel = computed((): WebhookNotifChannel | undefined => {\n return data.value?.channel\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: channel,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport function useNotifChannelManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function pause(channelId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/${channelId}/paused`\n return request({ method: 'PUT', url })\n }\n\n function unpause(channelId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/${channelId}/unpaused`\n return request({ method: 'PUT', url })\n }\n\n function del(channelId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/${channelId}`\n return request({ method: 'DELETE', url })\n }\n\n //------------------------------------------------------------------------------\n\n function slackCreate(channel: SlackNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/slack`\n return request({ method: 'POST', url, data: channel }).then((resp) => {\n return resp.data.channel as SlackNotifChannel\n })\n }\n\n function slackUpdate(channel: SlackNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/slack/${channel.id}`\n return request({ method: 'PUT', url, data: channel }).then((resp) => {\n return resp.data.channel as SlackNotifChannel\n })\n }\n\n //------------------------------------------------------------------------------\n\n function telegramCreate(channel: TelegramNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/telegram`\n return request({ method: 'POST', url, data: channel }).then((resp) => {\n return resp.data.channel as TelegramNotifChannel\n })\n }\n\n function telegramUpdate(channel: TelegramNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/telegram/${channel.id}`\n return request({ method: 'PUT', url, data: channel }).then((resp) => {\n return resp.data.channel as TelegramNotifChannel\n })\n }\n\n //------------------------------------------------------------------------------\n\n function webhookCreate(channel: WebhookNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/webhook`\n return request({ method: 'POST', url, data: channel }).then((resp) => {\n return resp.data.channel as WebhookNotifChannel\n })\n }\n\n function webhookUpdate(channel: WebhookNotifChannel) {\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/webhook/${channel.id}`\n return request({ method: 'PUT', url, data: channel }).then((resp) => {\n return resp.data.channel as WebhookNotifChannel\n })\n }\n\n //------------------------------------------------------------------------------\n\n function emailUpdate(channel: EmailNotifChannel) {\n const errorMatchers = channel.errorMatchers.filter((m) => m.attr && m.value)\n const data = {\n ...channel,\n errorMatchers,\n }\n\n const { projectId } = route.value.params\n const url = `/internal/v1/projects/${projectId}/notification-channels/email`\n return request({ method: 'PUT', url, data })\n }\n\n return proxyRefs({\n pending,\n\n pause,\n unpause,\n delete: del,\n\n slackCreate,\n slackUpdate,\n\n telegramCreate,\n telegramUpdate,\n\n webhookCreate,\n webhookUpdate,\n\n emailUpdate,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport interface EmailNotifChannel {\n notifyOnMetrics: boolean\n notifyOnNewErrors: boolean\n notifyOnRecurringErrors: boolean\n errorMatchers: AttrMatcher[]\n}\n\nexport function useEmailChannel() {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/notification-channels/email`,\n }\n })\n\n const channel = computed((): EmailNotifChannel | undefined => {\n const channel = data.value?.channel\n if (!channel) {\n return channel\n }\n channel.errorMatchers ??= []\n return channel\n })\n\n return proxyRefs({\n status,\n loading,\n\n channel,\n\n reload,\n })\n}\n","import { render, staticRenderFns } from \"./DateTextInput.vue?vue&type=template&id=cce8eb98&scoped=true&\"\nimport script from \"./DateTextInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateTextInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cce8eb98\",\n null\n \n)\n\nexport default component.exports","\nimport { addMilliseconds } from 'date-fns'\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport DateTextInput from '@/components/date/DateTextInput.vue'\n\n// Misc\nimport { HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'CustomDateRangePicker',\n components: { DateTextInput },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, { emit }) {\n const gte = shallowRef(new Date(Date.now() - HOUR))\n const lt = shallowRef(new Date())\n\n const isValid = computed((): boolean => {\n return gte.value! < lt.value!\n })\n\n watch(\n () => props.dateRange.gte,\n (date: Date | undefined) => {\n if (date) {\n gte.value = date\n }\n },\n { immediate: true },\n )\n\n watch(\n () => props.dateRange.lt,\n (date: Date | undefined) => {\n if (date) {\n lt.value = date\n }\n },\n { immediate: true },\n )\n\n function updateLt(gteValue: Date) {\n lt.value = addMilliseconds(gteValue, props.dateRange.duration)\n }\n\n function apply() {\n emit('input', gte.value, lt.value)\n }\n\n return {\n gte,\n lt,\n isValid,\n\n apply,\n updateLt,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDateRangePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomDateRangePicker.vue?vue&type=template&id=05e88d72&scoped=true&\"\nimport script from \"./CustomDateRangePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomDateRangePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05e88d72\",\n null\n \n)\n\nexport default component.exports","\nimport { format } from 'date-fns'\nimport { defineComponent, h } from 'vue'\nimport { toDate } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'DateRange',\n\n props: {\n start: {\n type: [Number, String, Date],\n required: true,\n },\n end: {\n type: [Number, String, Date],\n required: true,\n },\n },\n\n setup(props) {\n return () => {\n if (!props.start || !props.end) {\n return h('span', '')\n }\n\n const start = toDate(props.start)\n const end = toDate(props.end)\n\n if (start.getHours() === end.getHours() && start.getMinutes() === end.getMinutes()) {\n const endPattern = start.getMonth() === end.getMonth() ? 'dd HH:mm' : 'LLL dd HH:mm'\n return h('span', [h('span', `${format(start, 'LLL dd')} - ${format(end, endPattern)}`)])\n }\n\n if (start.getMonth() === end.getMonth() && start.getDate() == end.getDate()) {\n return h('span', [h('span', `${format(start, 'LLL dd HH:mm')} - ${format(end, 'HH:mm')}`)])\n }\n\n const fullFormat = 'LLL d HH:mm'\n return h('span', [\n h('span', format(start, fullFormat)),\n h('span', ' - '),\n h('span', format(end, fullFormat)),\n ])\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRange.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRange.vue?vue&type=script&lang=ts&\"","\nimport { defineComponent, ref, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport CustomDurationPicker from '@/components/date/CustomDurationPicker.vue'\nimport CustomDateRangePicker from '@/components/date/CustomDateRangePicker.vue'\nimport DateRange from '@/components/date/DateRange.vue'\n\nexport default defineComponent({\n name: 'DateRangePickerMenu',\n components: {\n CustomDurationPicker,\n CustomDateRangePicker,\n DateRange,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n forceDateRange: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const menu = ref(false)\n\n function applyDuration(ms: number) {\n props.dateRange.changeDuration(ms)\n props.dateRange.reloadNow()\n menu.value = false\n }\n\n function applyRange(gte: Date, lt: Date) {\n props.dateRange.change(gte, lt)\n menu.value = false\n }\n\n return {\n menu,\n\n applyDuration,\n applyRange,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRangePickerMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRangePickerMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DateRangePickerMenu.vue?vue&type=template&id=51629e56&scoped=true&\"\nimport script from \"./DateRangePickerMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateRangePickerMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51629e56\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watchEffect, onMounted, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Components\nimport DateRangePickerMenu from '@/components/date/DateRangePickerMenu.vue'\nimport PeriodPickerMenu from '@/components/date/PeriodPickerMenu.vue'\n\n// Misc\nimport { periodsForDays, Period } from '@/models/period'\nimport { HOUR } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'DateRangePicker',\n components: { DateRangePickerMenu, PeriodPickerMenu },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n rangeDays: {\n type: Number,\n default: 3,\n },\n defaultPeriod: {\n type: Number,\n default: HOUR,\n },\n },\n\n setup(props) {\n const forceReload = injectForceReload()\n\n const periods = computed(() => {\n return periodsForDays(props.rangeDays)\n })\n\n onMounted(() => {\n watchEffect(() => {\n if (!periods.value.length || props.dateRange.duration) {\n return\n }\n\n const period = periods.value.find((p: Period) => p.milliseconds === props.defaultPeriod)\n if (period) {\n props.dateRange.changeDuration(period.milliseconds)\n } else {\n props.dateRange.changeDuration(periods.value[0].milliseconds)\n }\n })\n })\n\n return { forceReload, periods }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRangePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateRangePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DateRangePicker.vue?vue&type=template&id=7fc95277&scoped=true&\"\nimport script from \"./DateRangePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateRangePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fc95277\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('MonitorMetricFormPanes',_vm._g({attrs:{\"date-range\":_vm.dateRange,\"monitor\":_vm.monitor},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._t(\"title\")]},proxy:true},{key:\"picker\",fn:function(){return [_c('MetricsPicker',{attrs:{\"metrics\":_vm.metrics,\"uql\":_vm.uql,\"editable\":\"\"},model:{value:(_vm.monitor.params.metrics),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"metrics\", $$v)},expression:\"monitor.params.metrics\"}})]},proxy:true},{key:\"preview\",fn:function(){return [_c('v-container',{attrs:{\"fluild\":\"\"}},[(!_vm.activeMetrics.length)?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":\"\"}})],1)],1):[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"disabled\":!_vm.activeMetrics.length,\"show-agg\":\"\",\"show-group-by\":\"\",\"show-dash-where\":\"\"}}),(Object.keys(_vm.internalColumnMap).length > 1)?_c('div',{staticClass:\"mt-1 d-flex align-center\"},[_c('div',[_c('v-icon',{staticClass:\"mr-3\",attrs:{\"size\":\"30\",\"color\":\"red darken-1\"}},[_vm._v(\"mdi-alert-circle\")])],1),_c('div',{staticClass:\"text-body-2\"},[_vm._v(\" The query returns \"+_vm._s(Object.keys(_vm.internalColumnMap).length)+\" columns, but only a single column is allowed.\"),_c('br'),_vm._v(\" To keep the column but hide the result, underscore the alias, for example, \"),_c('code',[_vm._v(\"count($metric) as _tmp_count\")]),_vm._v(\". \")])]):(\n _vm.timeseries.status.hasData() && Object.keys(_vm.internalColumnMap).length === 0\n )?_c('div',{staticClass:\"mt-1 d-flex align-center\"},[_c('div',[_c('v-icon',{staticClass:\"mr-3\",attrs:{\"size\":\"30\",\"color\":\"red darken-1\"}},[_vm._v(\"mdi-alert-circle\")])],1),_c('div',{staticClass:\"text-body-2\"},[_vm._v(\"The query must return at least one column to monitor.\")])]):_vm._e()],1)],1),_c('v-row',{staticClass:\"mb-n6\"},[_c('v-col',_vm._l((_vm.internalColumnMap),function(col,colName){return _c('v-chip',{key:colName,staticClass:\"ma-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('span',[_vm._v(_vm._s(colName))]),_c('UnitPicker',{attrs:{\"target-class\":\"mr-n4\"},model:{value:(col.unit),callback:function ($$v) {_vm.$set(col, \"unit\", $$v)},expression:\"col.unit\"}})],1)}),1)],1),_c('v-row',[_c('v-col',[_c('MetricChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"min-allowed-value\":_vm.monitor.params.minAllowedValue,\"max-allowed-value\":_vm.monitor.params.maxAllowedValue,\"event-bus\":_vm.eventBus}})],1)],1),(_vm.timeseries.items.length)?_c('v-row',{attrs:{\"no-gutters\":\"\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('ChartLegendTable',{attrs:{\"timeseries\":_vm.styledTimeseries},on:{\"hover:item\":function($event){return _vm.eventBus.emit('hover', $event)}}})],1)],1):_vm._e()]],2)]},proxy:true},{key:\"options\",fn:function({ form }){return [_c('MonitorMetricFormOptions',{attrs:{\"monitor\":_vm.monitor,\"column-map\":_vm.internalColumnMap,\"timeseries\":_vm.timeseries.items,\"form\":form}})]}}],null,true)},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('BtnSelectMenu',{attrs:{\"value\":_vm.value,\"items\":_vm.items,\"color\":\"transparent\",\"target-class\":_vm.targetClass},on:{\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"text-none\",class:_vm.targetClass,attrs:{\"disabled\":_vm.disabled,\"color\":_vm.color,\"elevation\":_vm.elevation,\"outlined\":_vm.outlined}},'v-btn',attrs,false),on),[(_vm.active)?_c('span',[_vm._v(_vm._s(_vm.active.short ? _vm.active.short : _vm.active.text))]):_c('span',[_vm._v(\"Please select\")]),_c('v-icon',[_vm._v(\"mdi-menu-down\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-card',[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item-group',{attrs:{\"value\":_vm.value,\"mandatory\":\"\"}},_vm._l((_vm.items),function(item){return _c('v-list-item',{key:item.value,attrs:{\"value\":item.value},on:{\"click\":function($event){return _vm.$emit('input', item.value)}}},[_vm._t(\"item\",function(){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))]),(item.hint)?_c('v-list-item-subtitle',[_vm._v(_vm._s(item.hint))]):_vm._e()],1)]},{\"item\":item})],2)}),1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\ninterface Item {\n value: string\n text: string\n short?: string\n}\n\nexport default defineComponent({\n name: 'BtnSelectMenu',\n\n props: {\n value: {\n type: [Number, String],\n default: undefined,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n dense: {\n type: Boolean,\n default: false,\n },\n color: {\n type: String,\n default: undefined,\n },\n elevation: {\n type: Number,\n default: 0,\n },\n outlined: {\n type: Boolean,\n default: false,\n },\n targetClass: {\n type: String,\n default: '',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const menu = shallowRef(false)\n\n const active = computed(() => {\n return props.items.find((item) => item.value === props.value)\n })\n\n watch(\n active,\n (active) => {\n if (active === undefined && props.items.length) {\n ctx.emit('input', props.items[0].value)\n }\n },\n { immediate: true },\n )\n\n return { menu, active }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnSelectMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./BtnSelectMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BtnSelectMenu.vue?vue&type=template&id=421e928e&scoped=true&\"\nimport script from \"./BtnSelectMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./BtnSelectMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"421e928e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed } from 'vue'\n\n// Components\nimport BtnSelectMenu from '@/components/BtnSelectMenu.vue'\n\n// Misc\nimport { unitShortName, Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'UnitPicker',\n components: { BtnSelectMenu },\n\n props: {\n value: {\n type: String,\n required: true,\n },\n targetClass: {\n type: String,\n default: '',\n },\n },\n\n setup(props) {\n const availableItems = computed(() => {\n const items = [\n { short: 'unit', text: 'none', value: Unit.None },\n { short: '', text: '', value: Unit.Bytes },\n { short: '', text: '', value: Unit.Nanoseconds },\n { short: '', text: '', value: Unit.Microseconds },\n { short: '', text: '', value: Unit.Milliseconds },\n { short: '', text: '', value: Unit.Seconds },\n { short: '', text: '', value: Unit.Utilization, hint: '0 <= n <= 1' },\n { short: '', text: '', value: Unit.Percents, hint: '0 <= n <= 100%' },\n ]\n if (props.value) {\n const i = items.findIndex((item) => item.value === props.value)\n if (i === -1) {\n items.push({ short: '', text: '', value: props.value as Unit })\n }\n }\n return items\n })\n\n const items = computed(() => {\n return availableItems.value.map((item) => {\n if (!item.short) {\n item.short = unitShortName(item.value)\n }\n if (!item.text) {\n item.text = item.value\n }\n return item\n })\n })\n\n return { items }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UnitPicker.vue?vue&type=template&id=1fcdcdae&scoped=true&\"\nimport script from \"./UnitPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./UnitPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fcdcdae\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",staticClass:\"bg--none\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit()}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"max-width\":_vm.maxWidth}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_vm._t(\"title\"),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.monitor.id)?_c('v-btn',{staticClass:\"mr-2\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel', _vm.monitor)}}},[_vm._v(\" Cancel \")]):_vm._e(),_c('v-btn',{attrs:{\"loading\":_vm.monitorMan.pending,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\" \"+_vm._s(_vm.monitor.id ? 'Update' : 'Create')+\" \")])],1)],2),_c('splitpanes',{staticClass:\"default-theme\",staticStyle:{\"height\":\"calc(100vh - 64px)\"}},[_c('pane',{attrs:{\"size\":\"65\"}},[_c('splitpanes',{attrs:{\"horizontal\":\"\"}},[_c('pane',{attrs:{\"size\":\"30\",\"min-size\":\"10\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",staticStyle:{\"max-width\":\"920px\"},attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"picker\")],2)],1)],1)],1),_c('pane',{attrs:{\"size\":\"70\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"preview\")],2)],1)],1)],1)],1)],1),_c('pane',{attrs:{\"size\":\"35\"}},[_vm._t(\"options\",null,{\"form\":_vm.form})],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Splitpanes, Pane } from 'splitpanes'\nimport 'splitpanes/dist/splitpanes.css'\n\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useProject } from '@/org/use-projects'\nimport { useMonitorManager } from '@/alerting/use-monitors'\n\n// Misc\nimport { MetricMonitor, Monitor } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorMetricFormPanes',\n components: {\n Splitpanes,\n Pane,\n },\n\n props: {\n monitor: {\n type: Object as PropType,\n required: true,\n },\n maxWidth: {\n type: Number,\n default: 1416,\n },\n },\n\n setup(props, ctx) {\n const form = shallowRef()\n const isValid = shallowRef(false)\n\n const project = useProject()\n const monitorMan = useMonitorManager()\n function submit() {\n if (!form.value.validate()) {\n return\n }\n\n save().then((monitor: Monitor) => {\n ctx.emit('saved', monitor)\n })\n }\n function save() {\n if (props.monitor.id) {\n return monitorMan.updateMetricMonitor(props.monitor)\n }\n return monitorMan.createMetricMonitor(props.monitor)\n }\n\n return {\n form,\n isValid,\n\n project,\n monitorMan,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricFormPanes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricFormPanes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorMetricFormPanes.vue?vue&type=template&id=6198354e&scoped=true&\"\nimport script from \"./MonitorMetricFormPanes.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorMetricFormPanes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6198354e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluild\":\"\"}},[_c('v-row',[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":\"Monitor options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Monitor name\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.name},model:{value:(_vm.monitor.name),callback:function ($$v) {_vm.$set(_vm.monitor, \"name\", $$v)},expression:\"monitor.name\"}}),_c('PanelSection',{attrs:{\"title\":\"Time offset\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"hint\":\"Shift time to the past (positive offset) or future (negative offset)\",\"placeholder\":\"-60\",\"suffix\":\"minutes\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.timeOffset},model:{value:(_vm.timeOffset),callback:function ($$v) {_vm.timeOffset=_vm._n($$v)},expression:\"timeOffset\"}})],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":\"Trigger conditions\",\"expanded\":\"\"}},[_c('PanelSection',{attrs:{\"title\":\"Check the last\"}},[_c('v-select',{attrs:{\"hint\":\"Create an alert if the last N points are outside of the allowed range\",\"persistent-hint\":\"\",\"items\":_vm.checkNumPointItems,\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.monitor.params.checkNumPoint),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"checkNumPoint\", $$v)},expression:\"monitor.params.checkNumPoint\"}})],1),_c('PanelSection',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(\"Min allowed value\")]),(_vm.observedMin)?_c('span',{staticClass:\"ml-1\"},[_vm._v(\" (observed min: \"),_c('strong',[_vm._v(_vm._s(_vm.numVerbose(_vm.observedMin)))]),_vm._v(\") \")]):_vm._e()]},proxy:true}])},[_c('v-text-field',{attrs:{\"type\":\"number\",\"suffix\":_vm.activeColumn?.unit,\"hint\":\"Leave empty to disable\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"clearable\":\"\",\"rules\":_vm.rules.minAllowedValue},model:{value:(_vm.monitor.params.minAllowedValue),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"minAllowedValue\", _vm._n($$v))},expression:\"monitor.params.minAllowedValue\"}})],1),_c('PanelSection',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(\"Max allowed value\")]),(_vm.observedMax)?_c('span',{staticClass:\"ml-1\"},[_vm._v(\" (observed max: \"),_c('strong',[_vm._v(_vm._s(_vm.numVerbose(_vm.observedMax)))]),_vm._v(\") \")]):_vm._e()]},proxy:true}])},[_c('v-text-field',{attrs:{\"type\":\"number\",\"suffix\":_vm.activeColumn?.unit,\"hint\":\"Leave empty to disable\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"clearable\":\"\",\"rules\":_vm.rules.maxAllowedValue},model:{value:(_vm.monitor.params.maxAllowedValue),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"maxAllowedValue\", _vm._n($$v))},expression:\"monitor.params.maxAllowedValue\"}})],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":\"Notifications\",\"expanded\":\"\"}},[_c('v-checkbox',{staticClass:\"mt-0 mb-4\",attrs:{\"label\":\"Notify everyone by email\",\"hide-details\":\"auto\"},model:{value:(_vm.monitor.notifyEveryoneByEmail),callback:function ($$v) {_vm.$set(_vm.monitor, \"notifyEveryoneByEmail\", $$v)},expression:\"monitor.notifyEveryoneByEmail\"}}),_c('PanelSection',{attrs:{\"title\":\"Notification channels, e.g. Slack, Telegram, etc.\"}},[_c('v-select',{attrs:{\"multiple\":\"\",\"menu-props\":\"offsetY\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"items\":_vm.channels.items,\"item-text\":\"name\",\"item-value\":\"id\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.monitor.channelIds.includes(item.id)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.name)+\" (\"+_vm._s(item.type)+\")\")])],1)]}}]),model:{value:(_vm.monitor.channelIds),callback:function ($$v) {_vm.$set(_vm.monitor, \"channelIds\", $$v)},expression:\"monitor.channelIds\"}})],1)],1)],1)],1),_c('v-row',[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":\"Flapping monitors\"}},[_c('p',{staticClass:\"text--secondary\"},[_vm._v(\" Flapping alerts occur when the monitor triggers the same alert in a short period of time. To reduce the noise, you can re-evaluate the alert thresholds or configure additional conditions required to close the alert. \")]),_c('p',{staticClass:\"text--secondary\"},[_vm._v(\" For example, the filesystem utilization monitor can go back and forth from \"),_c('code',[_vm._v(\"0.89\")]),_vm._v(\" to \"),_c('code',[_vm._v(\"0.9\")]),_vm._v(\", causing the alert status to constantly change. By configuring the minimum deviation value to \"),_c('code',[_vm._v(\"0.1\")]),_vm._v(\", the alert won't be closed until the utilization value changes from \"),_c('code',[_vm._v(\"0.9\")]),_vm._v(\" to \"),_c('code',[_vm._v(\"0.8\")]),_vm._v(\". \")]),_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":\"Enable flapping alerts mitigations\"},model:{value:(_vm.monitor.params.flapping),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"flapping\", $$v)},expression:\"monitor.params.flapping\"}}),_c('PanelSection',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',[_vm._v(\"Min change in value to trigger an alert\")]),(_vm.observedAvg)?_c('span',{staticClass:\"ml-1\"},[_vm._v(\" (observed average: \"),_c('strong',[_vm._v(_vm._s(_vm.numVerbose(_vm.observedAvg)))]),_vm._v(\") \")]):_vm._e()]},proxy:true}])},[_c('v-text-field',{attrs:{\"type\":\"number\",\"placeholder\":\"Number\",\"suffix\":_vm.activeColumn?.unit,\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.minDevValue,\"hide-details\":\"auto\",\"disabled\":!_vm.monitor.params.flapping},model:{value:(_vm.monitor.params.minDevValue),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"minDevValue\", _vm._n($$v))},expression:\"monitor.params.minDevValue\"}})],1),_c('PanelSection',{attrs:{\"title\":\"Min deviation fraction\"}},[_c('v-text-field',{attrs:{\"type\":\"number\",\"placeholder\":\"Number\",\"hint\":\"0.2 means that value must change by at least 20%\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.minDevFraction,\"disabled\":!_vm.monitor.params.flapping},model:{value:(_vm.monitor.params.minDevFraction),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"minDevFraction\", _vm._n($$v))},expression:\"monitor.params.minDevFraction\"}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"panel\"},[_c('div',{staticClass:\"py-2 d-flex align-center cursor-pointer\",on:{\"click\":function($event){_vm.expandedInternal = !_vm.expandedInternal}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.expandedInternal ? 'mdi-chevron-down' : 'mdi-chevron-up'))]),_c('div',{staticClass:\"text-subtitle-2 grey--text text--darken-4\"},[_vm._v(_vm._s(_vm.title))])],1),(_vm.expandedInternal)?_c('div',{staticClass:\"py-2 px-4\"},[_vm._t(\"default\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef } from 'vue'\n\nexport default defineComponent({\n name: 'SinglePanel',\n\n props: {\n title: {\n type: String,\n required: true,\n },\n expanded: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const expandedInternal = shallowRef(props.expanded)\n\n return { expandedInternal }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SinglePanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SinglePanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SinglePanel.vue?vue&type=template&id=dd1253d8&scoped=true&\"\nimport script from \"./SinglePanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./SinglePanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SinglePanel.vue?vue&type=style&index=0&id=dd1253d8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd1253d8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"mb-4\"},[_c('div',{staticClass:\"mb-1 text-subtitle-2 text--secondary font-weight-regular\"},[_vm._t(\"title\",function(){return [_vm._v(_vm._s(_vm.title))]})],2),_c('div',[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'PanelSection',\n\n props: {\n title: {\n type: String,\n default: '',\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PanelSection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PanelSection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PanelSection.vue?vue&type=template&id=7da821cb&scoped=true&\"\nimport script from \"./PanelSection.vue?vue&type=script&lang=ts&\"\nexport * from \"./PanelSection.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7da821cb\",\n null\n \n)\n\nexport default component.exports","\nimport { formatDuration } from 'date-fns'\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannels } from '@/alerting/use-notif-channels'\n\n// Components\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport PanelSection from '@/components/PanelSection.vue'\n\n// Misc\nimport { Timeseries, MetricColumn } from '@/metrics/types'\nimport { MetricMonitor } from '@/alerting/types'\nimport { requiredRule, minMaxRule } from '@/util/validation'\nimport { inflect, numVerbose } from '@/util/fmt'\nimport { MINUTE, HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'MonitorMetricFormOptions',\n components: {\n SinglePanel,\n PanelSection,\n },\n\n props: {\n monitor: {\n type: Object as PropType,\n required: true,\n },\n columnMap: {\n type: Object as PropType>,\n required: true,\n },\n timeseries: {\n type: Array as PropType,\n required: true,\n },\n form: {\n type: Object,\n default: undefined,\n },\n },\n\n setup(props, ctx) {\n const channels = useNotifChannels(() => {\n return {}\n })\n const timeOffset = computed({\n get() {\n return props.monitor.params.timeOffset / MINUTE\n },\n set(minutes: number) {\n props.monitor.params.timeOffset = minutes * MINUTE\n },\n })\n\n const rules = {\n name: [requiredRule],\n boundsSource: [requiredRule],\n minAllowedValue: [\n (v: any) => {\n if (\n typeof props.monitor.params.minAllowedValue !== 'number' &&\n typeof props.monitor.params.maxAllowedValue !== 'number'\n ) {\n return 'At least min or max value is required'\n }\n return true\n },\n ],\n maxAllowedValue: [\n (v: any) => {\n if (\n typeof props.monitor.params.minAllowedValue !== 'number' &&\n typeof props.monitor.params.maxAllowedValue !== 'number'\n ) {\n return 'At least min or max value is required'\n }\n if (\n typeof props.monitor.params.minAllowedValue !== 'number' ||\n typeof props.monitor.params.maxAllowedValue !== 'number'\n ) {\n return true\n }\n if (props.monitor.params.maxAllowedValue < props.monitor.params.minAllowedValue) {\n return 'Max value should be greater than or equal min'\n }\n return true\n },\n ],\n timeOffset: [minMaxRule(-300, 300)],\n }\n const checkNumPointItems = computed(() => {\n const maxDuration = 24 * HOUR\n\n const items = []\n\n for (let n of [1, 3, 5, 10, 15]) {\n const duration = n * MINUTE\n if (duration > maxDuration) {\n break\n }\n\n const noun = inflect(n, 'point', 'points')\n const hours = Math.trunc(duration / HOUR)\n const minutes = Math.trunc((duration - hours * HOUR) / MINUTE)\n const durationStr = formatDuration({ hours, minutes })\n\n items.push({\n text: `${n} ${noun} (${durationStr})`,\n value: n,\n })\n }\n\n return items\n })\n\n const activeColumn = computed(() => {\n const columns = Object.keys(props.columnMap)\n\n if (columns.length !== 1) {\n return undefined\n }\n\n const colName = columns[0]\n const col = props.columnMap[colName]\n return {\n ...col,\n name: colName,\n }\n })\n watch(\n activeColumn,\n (activeColumn) => {\n props.monitor.params.column = activeColumn?.name ?? ''\n props.monitor.params.columnUnit = activeColumn?.unit ?? ''\n },\n { immediate: true },\n )\n\n const observedMin = computed(() => {\n let min = Number.MAX_VALUE\n\n for (let ts of props.timeseries) {\n if (ts.min === null) {\n continue\n }\n if (ts.min < min) {\n min = ts.min\n }\n }\n\n if (min !== Number.MAX_VALUE) {\n return min\n }\n return undefined\n })\n\n const observedMax = computed(() => {\n let max = Number.MIN_VALUE\n\n for (let ts of props.timeseries) {\n if (ts.max === null) {\n continue\n }\n if (ts.max > max) {\n max = ts.max\n }\n }\n\n if (max !== Number.MIN_VALUE) {\n return max\n }\n return undefined\n })\n\n const observedAvg = computed(() => {\n let sum = 0\n let count = 0\n\n for (let ts of props.timeseries) {\n for (let num of ts.value) {\n if (num !== null) {\n sum += num\n count++\n }\n }\n }\n\n if (count) {\n return sum / count\n }\n return 0\n })\n\n watch(\n () => props.monitor.params.minAllowedValue,\n () => props.form?.validate(),\n )\n watch(\n () => props.monitor.params.maxAllowedValue,\n () => props.form?.validate(),\n )\n\n return {\n channels,\n timeOffset,\n\n rules,\n checkNumPointItems,\n\n observedMin,\n observedMax,\n observedAvg,\n activeColumn,\n numVerbose,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricFormOptions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricFormOptions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorMetricFormOptions.vue?vue&type=template&id=3d822dec&scoped=true&\"\nimport script from \"./MonitorMetricFormOptions.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorMetricFormOptions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d822dec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-row',{staticClass:\"mb-n6\",attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"text-subtitle-1 text--secondary\",attrs:{\"cols\":\"auto\"}},[_vm._v(\" Active metrics \"),(!_vm.attrFilterEnabled)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"icon\":\"\",\"title\":\"Show metrics filter\"},on:{\"click\":function($event){_vm.attrFilterEnabled = true}}},[_c('v-icon',[_vm._v(\"mdi-filter\")])],1):_vm._e()],1),(_vm.attrFilterEnabled)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-autocomplete',{staticStyle:{\"min-width\":\"320px\"},attrs:{\"multiple\":\"\",\"loading\":_vm.attrKeysDs.loading,\"items\":_vm.attrKeysDs.filteredItems,\"error-messages\":_vm.attrKeysDs.errorMessages,\"search-input\":_vm.attrKeysDs.searchInput,\"label\":\"Show all metrics\",\"placeholder\":\"Show metrics with given attributes...\",\"dense\":\"\",\"solo\":\"\",\"flat\":\"\",\"filled\":\"\",\"no-filter\":\"\",\"auto-select-first\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.attrKeysDs, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.attrKeysDs, \"searchInput\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeAttrKeys.includes(item.value)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1),_c('v-list-item-action',[_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(item.count))])],1)]}}],null,false,1569889427),model:{value:(_vm.activeAttrKeys),callback:function ($$v) {_vm.activeAttrKeys=$$v},expression:\"activeAttrKeys\"}})],1):_vm._e()],1),(!_vm.activeMetrics.length)?_c('v-row',{staticClass:\"text-body-2\",attrs:{\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-icon',{attrs:{\"color\":\"orange\"}},[_vm._v(\"mdi-lightbulb\")])],1),_c('v-col',[_vm._v(\" Select a metric, specify a short alias, and click the \\\"Apply\\\" button to add default aggregations. \")])],1):_vm._e(),_c('v-row',[_c('v-col',[_vm._l((_vm.value),function(metric,i){return _c('MetricPicker',{key:`${metric.alias}-${i}`,attrs:{\"loading\":_vm.metrics.loading,\"metrics\":_vm.metrics.items,\"value\":metric,\"active-metrics\":_vm.value,\"query\":_vm.uql.query},on:{\"click:apply\":function($event){return _vm.updateMetric(metric, $event)},\"click:remove\":function($event){return _vm.removeMetric(i, metric)}}})}),(_vm.activeMetrics.length < 10)?_c('MetricPicker',{attrs:{\"loading\":_vm.metrics.loading,\"metrics\":_vm.metrics.items,\"active-metrics\":_vm.value,\"query\":_vm.uql.query},on:{\"click:apply\":function($event){return _vm.addMetric($event)}}}):_vm._e()],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { shallowRef, computed, watch, proxyRefs } from 'vue'\nimport { refDebounced } from '@vueuse/core'\n\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\n\nexport interface Item {\n value: string\n text: string\n}\n\ninterface Config {\n dataKey?: string\n suggestSearchInput?: boolean\n}\n\nexport type UseDataSource = ReturnType\n\nexport function useDataSource(\n axiosReqSource: AxiosRequestSource,\n conf: Config = {},\n) {\n return proxyRefs(useDataSourceRefs(axiosReqSource, conf))\n}\n\nexport function useDataSourceRefs(\n axiosReqSource: AxiosRequestSource,\n conf: Config = {},\n) {\n const dataKey = conf.dataKey ?? 'items'\n const suggestSearchInput = conf.suggestSearchInput ?? false\n\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 1000)\n const hasMore = shallowRef(false)\n\n const { status, loading, data, errorMessage, reload } = useWatchAxios(() => {\n const req = axiosReqSource()\n if (!req) {\n return req\n }\n\n req.params ??= {}\n req.params.search_input = debouncedSearchInput.value\n if (!hasMore.value) {\n req.params.$ignore_search_input = true\n }\n\n return req\n })\n\n const items = computed((): T[] => {\n const items: T[] = data.value?.[dataKey] ?? []\n return items.map((item) => normItem(item))\n })\n\n function normItem(item: T) {\n if (item.text) {\n return item\n }\n return {\n ...item,\n text: itemText(item.value),\n }\n }\n\n const filteredItems = computed((): T[] => {\n let filtered = items.value.slice()\n\n if (!searchInput.value) {\n return filtered\n }\n\n if (!hasMore.value) {\n // @ts-ignore\n filtered = fuzzyFilter(filtered, searchInput.value, { key: 'text' })\n }\n\n if (suggestSearchInput) {\n const item = normItem({ value: searchInput.value } as T)\n if (filtered.length <= 5) {\n filtered.push(item)\n } else {\n filtered.unshift(item)\n }\n }\n\n return filtered\n })\n\n const values = computed((): string[] => {\n return items.value.map((item) => item.value)\n })\n\n const filteredValues = computed((): string[] => {\n return filteredItems.value.map((item) => item.value)\n })\n\n watch(\n () => data.value?.hasMore ?? false,\n (hasMoreValue) => {\n hasMore.value = hasMoreValue\n },\n )\n\n return {\n searchInput,\n errorMessages: errorMessage,\n\n status,\n loading,\n data,\n reload,\n\n items,\n filteredItems,\n\n values,\n filteredValues,\n }\n}\n\nfunction itemText(value: string): string {\n if (value === '') {\n return ''\n }\n return value\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"formRef\",on:{\"submit\":function($event){$event.preventDefault();return _vm.apply.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',{attrs:{\"dense\":_vm.$vuetify.breakpoint.mdAndDown,\"align\":\"start\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Remove metric\",\"disabled\":!('click:remove' in _vm.$listeners)},on:{\"click\":function($event){return _vm.$emit('click:remove')}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-autocomplete',{attrs:{\"loading\":_vm.loading,\"items\":_vm.filteredMetrics,\"item-text\":\"name\",\"item-value\":\"name\",\"auto-select-first\":\"\",\"label\":\"Select a metric...\",\"rules\":_vm.rules.name,\"hide-details\":\"auto\",\"disabled\":_vm.disabled,\"dense\":\"\",\"solo\":\"\",\"flat\":\"\",\"filled\":\"\",\"search-input\":_vm.searchInput,\"no-filter\":\"\"},on:{\"update:searchInput\":function($event){_vm.searchInput=$event},\"update:search-input\":function($event){_vm.searchInput=$event},\"change\":_vm.onMetricNameChange},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-content',[_c('v-list-item-title',[_c('span',[_vm._v(_vm._s(item.name))]),_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"small\":\"\",\"title\":\"Instrument\"}},[_vm._v(_vm._s(item.instrument))]),(item.unit)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"small\":\"\",\"title\":\"Unit\"}},[_vm._v(_vm._s(item.unit))]):_vm._e()],1),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(item.description)+\" \")])],1)]}}]),model:{value:(_vm.metricName),callback:function ($$v) {_vm.metricName=$$v},expression:\"metricName\"}})],1),_c('v-col',{staticClass:\"mt-2 text--secondary\",attrs:{\"cols\":\"auto\"}},[_vm._v(\"AS\")]),_c('v-col',[_c('v-text-field',{ref:\"metricAliasRef\",attrs:{\"placeholder\":\"short_alias\",\"rules\":_vm.rules.alias,\"hide-details\":\"auto\",\"prefix\":\"$\",\"dense\":\"\",\"solo\":\"\",\"flat\":\"\",\"filled\":\"\",\"clearable\":\"\"},model:{value:(_vm.metricAlias),callback:function ($$v) {_vm.metricAlias=$$v},expression:\"metricAlias\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"disabled\":_vm.applyDisabled}},[_vm._v(\"Apply\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { defaultMetricAlias } from '@/metrics/use-metrics'\n\n// Misc\nimport { unitShortName } from '@/util/fmt'\nimport { requiredRule } from '@/util/validation'\nimport { escapeRe } from '@/util/string'\n\n// Misc\nimport { emptyMetric, Metric, MetricAlias } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'MetricPicker',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n\n value: {\n type: Object as PropType,\n default: undefined,\n },\n activeMetrics: {\n type: Array as PropType,\n required: true,\n },\n query: {\n type: String,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const metricAliasRef = shallowRef()\n const searchInput = shallowRef('')\n\n const metricName = shallowRef(props.value?.name ?? '')\n const metricAlias = shallowRef(props.value?.alias ?? '')\n\n const formRef = shallowRef()\n const isValid = shallowRef(false)\n const rules = computed(() => {\n return {\n name: [requiredRule],\n alias: [\n (v: string) => {\n if (!metricName.value) {\n return true\n }\n if (!v) {\n return 'Alias is required'\n }\n if (!/^[a-z0-9_]*$/i.test(v)) {\n return 'Only letters and numbers are allowed'\n }\n\n if (v !== props.value?.alias) {\n const found = props.activeMetrics.find((m) => m.alias === v)\n if (found) {\n return 'Alias is duplicated'\n }\n }\n\n return true\n },\n ],\n }\n })\n\n const filteredMetrics = computed((): Metric[] => {\n let metrics = props.metrics.slice()\n if (searchInput.value) {\n metrics = fuzzyFilter(metrics, searchInput.value, { key: 'name' })\n }\n if (props.value && props.value.name) {\n const index = metrics.findIndex((m) => m.name === props.value.name)\n if (index === -1) {\n const metric = emptyMetric()\n metric.name = props.value.name\n metrics.push(metric)\n }\n }\n return metrics\n })\n\n const applyDisabled = computed((): boolean => {\n if (!metricName.value || !metricAlias.value) {\n return true\n }\n if (props.value) {\n if (metricName.value !== props.value.name || metricAlias.value !== props.value.alias) {\n return false\n }\n }\n if (!createRegexp(metricAlias.value).test(props.query)) {\n return false\n }\n return true\n })\n\n function apply() {\n metricAlias.value = metricAlias.value.toLowerCase()\n ctx.emit('click:apply', { name: metricName.value, alias: metricAlias.value })\n if (!props.value) {\n reset()\n }\n }\n\n function reset() {\n metricName.value = ''\n metricAlias.value = ''\n formRef.value.reset()\n }\n\n function onMetricNameChange(metricName: string | null) {\n if (!metricName) {\n return\n }\n\n metricAlias.value = defaultMetricAlias(metricName)\n metricAliasRef.value.focus()\n }\n\n return {\n searchInput,\n metricAliasRef,\n metricName,\n metricAlias,\n\n formRef,\n isValid,\n rules,\n filteredMetrics,\n\n applyDisabled,\n apply,\n\n unitShortName,\n onMetricNameChange,\n }\n },\n})\n\nfunction createRegexp(alias: string, flags = '') {\n return new RegExp(escapeRe('$' + alias) + '\\\\b', flags)\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricPicker.vue?vue&type=template&id=49f1d7a9&scoped=true&\"\nimport script from \"./MetricPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49f1d7a9\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useDataSource } from '@/use/datasource'\nimport { injectForceReload } from '@/use/force-reload'\nimport { createQueryEditor, UseUql } from '@/use/uql'\nimport { useMetrics, useActiveMetrics, defaultMetricQuery } from '@/metrics/use-metrics'\nimport { MetricAlias } from '@/metrics/types'\n\n// Components\nimport MetricPicker from '@/metrics/MetricPicker.vue'\n\n// Misc\nimport { escapeRe } from '@/util/string'\n\nexport default defineComponent({\n name: 'MetricsPicker',\n components: { MetricPicker },\n\n props: {\n value: {\n type: Array as PropType,\n required: true,\n },\n requiredAttrs: {\n type: Array as PropType,\n default: () => [],\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n autoGrouping: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n const forceReload = injectForceReload()\n\n const attrFilterEnabled = shallowRef(false)\n const activeAttrKeys = shallowRef([])\n watch(\n () => props.requiredAttrs,\n (grouping) => {\n activeAttrKeys.value = grouping\n if (grouping.length) {\n attrFilterEnabled.value = true\n }\n },\n { immediate: true },\n )\n\n const attrKeysDs = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes`,\n params: {\n ...forceReload.params,\n },\n }\n })\n const metrics = useMetrics(() => {\n return {\n attr_key: activeAttrKeys.value,\n }\n })\n const activeMetrics = useActiveMetrics(computed(() => props.value))\n\n function addMetric(newMetric: MetricAlias) {\n updateQuery({ name: '', alias: '' }, newMetric)\n\n const activeMetrics = props.value.slice()\n activeMetrics.push(newMetric)\n ctx.emit('input', activeMetrics)\n }\n\n function updateMetric(oldMetric: MetricAlias, newMetric: MetricAlias) {\n updateQuery(oldMetric, newMetric)\n\n oldMetric.name = newMetric.name\n oldMetric.alias = newMetric.alias\n }\n\n function updateQuery(oldMetric: MetricAlias, newMetric: MetricAlias) {\n if (oldMetric.alias) {\n const re = createRegexp(oldMetric.alias)\n if (re.test(props.uql.query)) {\n props.uql.query = props.uql.query.replaceAll(\n createRegexp(oldMetric.alias, 'g'),\n '$' + newMetric.alias,\n )\n return\n }\n }\n\n const metric = metrics.items.find((m) => m.name === newMetric.name)\n if (!metric) {\n return\n }\n\n const editor = createQueryEditor(props.uql.query)\n\n if (props.autoGrouping && !props.uql.query) {\n for (let attrKey of metric.attrKeys) {\n editor.groupBy(attrKey)\n }\n }\n\n const column = defaultMetricQuery(metric.instrument, newMetric.alias)\n editor.add(column)\n\n props.uql.query = editor.toString()\n }\n\n function removeMetric(index: number, metric: MetricAlias) {\n const re = createRegexp(metric.alias)\n props.uql.parts = props.uql.parts.filter((part) => {\n return !re.test(part.query)\n })\n\n const activeMetrics = props.value.slice()\n activeMetrics.splice(index, 1)\n ctx.emit('input', activeMetrics)\n }\n\n return {\n attrFilterEnabled,\n activeAttrKeys,\n attrKeysDs,\n metrics,\n\n activeMetrics,\n addMetric,\n updateMetric,\n removeMetric,\n }\n },\n})\n\nfunction createRegexp(alias: string, flags = '') {\n return new RegExp(escapeRe('$' + alias) + '\\\\b', flags)\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricsPicker.vue?vue&type=template&id=4e86714a&scoped=true&\"\nimport script from \"./MetricsPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricsPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e86714a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('UptraceQuery',{attrs:{\"uql\":_vm.uql,\"hint\":\"Select some metrics and use Aggregate button to plot something...\",\"disabled\":_vm.disabled}},[_c('div',{staticClass:\"d-flex align-center\"},[(_vm.showAgg)?_c('MetricsAggMenu',{attrs:{\"metrics\":_vm.metrics,\"uql\":_vm.uql,\"disabled\":_vm.disabled}}):_vm._e(),(_vm.showGroupBy)?_c('DashGroupingMenu',{attrs:{\"uql\":_vm.uql,\"attr-keys\":_vm.keysDs.values,\"disabled\":_vm.disabled}}):_vm._e(),(_vm.showDashWhere)?_c('DashWhereBtn',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams}}):_vm._e(),_c('QueryHelpDialog'),_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.uql.rawMode = !_vm.uql.rawMode}}},[_vm._v(_vm._s(_vm.uql.rawMode ? 'Cancel' : 'Edit'))])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"uptrace-query text-truncate\"},[(_vm.$slots.default)?_c('v-row',{staticStyle:{\"margin-bottom\":\"1px\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',[_vm._t(\"default\")],2),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._t(\"prepend-actions\")],2)],1):_vm._e(),(_vm.uql.rawMode)?[_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',[_c('v-textarea',{attrs:{\"rows\":\"1\",\"outlined\":\"\",\"clearable\":\"\",\"auto-grow\":\"\",\"autofocus\":\"\",\"hide-details\":\"auto\",\"spellcheck\":\"false\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.stopPropagation();$event.preventDefault();},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.stopPropagation();$event.preventDefault();return _vm.apply.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();$event.preventDefault();return _vm.cancel.apply(null, arguments)}]},model:{value:(_vm.query),callback:function ($$v) {_vm.query=$$v},expression:\"query\"}})],1)],1),_c('v-row',{staticClass:\"mt-1\",attrs:{\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"text-caption grey--text text--darken-2\",attrs:{\"cols\":\"auto\"}},[_vm._v(\" Press ENTER to apply and ESC to cancel \")]),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"small\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")]),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"small\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.apply}},[_vm._v(\"OK\")])],1)],1)]:(!_vm.uql.parts.length)?_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"my-1 px-2 text-body-2\"},[(_vm.disabled)?_c('div',{staticClass:\"text--disabled\"},[_vm._v(\"The query is empty...\")]):_c('div',{staticClass:\"text--secondary cursor-pointer\",on:{\"click\":function($event){_vm.uql.rawMode = true}}},[_vm._v(\" \"+_vm._s(_vm.hint)+\" \")])])],1):_c('v-row',{attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('v-col',[_c('draggable',{staticClass:\"d-flex flex-wrap\",attrs:{\"handle\":\".draggable-handle\"},model:{value:(_vm.uql.parts),callback:function ($$v) {_vm.$set(_vm.uql, \"parts\", $$v)},expression:\"uql.parts\"}},[_vm._l((_vm.uql.parts),function(part){return _c('div',{key:part.id,staticClass:\"mr-1 mb-1 d-flex text-truncate\"},[(part.id === _vm.partEditor.partId)?_c('v-text-field',{directives:[{name:\"autowidth\",rawName:\"v-autowidth\",value:({ minWidth: 200, maxWidth: 580 }),expression:\"{ minWidth: 200, maxWidth: 580 }\"}],staticStyle:{\"max-width\":\"600px\"},attrs:{\"error-messages\":part.error,\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"autofocus\":\"\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.stopPropagation();$event.preventDefault();},\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.stopPropagation();$event.preventDefault();return _vm.partEditor.applyEdits(part)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;$event.stopPropagation();$event.preventDefault();return _vm.partEditor.cancelEdits(part)}],\"blur\":function($event){return _vm.partEditor.applyEdits(part)}},model:{value:(_vm.partEditor.query),callback:function ($$v) {_vm.$set(_vm.partEditor, \"query\", $$v)},expression:\"partEditor.query\"}}):[_c('v-icon',{staticClass:\"d-block draggable-handle\",staticStyle:{\"margin-top\":\"2px\",\"margin-right\":\"-1px\"},attrs:{\"title\":\"Drag and drop to change order\"}},[_vm._v(\"mdi-drag\")]),_c('UptraceQueryChip',{key:part.id,staticClass:\"mr-2 mb-1\",attrs:{\"query\":part.query,\"error\":part.error,\"disabled\":part.disabled || _vm.disabled,\"deletable\":\"\"},on:{\"click:edit\":function($event){return _vm.partEditor.startEditing(part)},\"click:delete\":function($event){return _vm.uql.removePart(part)}}})]],2)}),(!_vm.partEditor.editing)?_c('v-btn',{key:\"add-btn\",staticClass:\"py-4\",attrs:{\"depressed\":\"\",\"small\":\"\"},on:{\"click\":_vm.partEditor.add}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"Add expr\")])],1):_vm._e()],2)],1)],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, watch, computed, proxyRefs, PropType } from 'vue'\n\n// Composables\nimport { createQueryPart, QueryPart, UseUql } from '@/use/uql'\n\n// Components\nimport draggable from 'vuedraggable'\nimport UptraceQueryChip from '@/components/UptraceQueryChip.vue'\n\nexport default defineComponent({\n name: 'UptraceQuery',\n components: { draggable, UptraceQueryChip },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n hint: {\n type: String,\n default: 'Click to edit the query...',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const query = shallowRef('')\n\n watch(\n () => props.uql.query,\n (s) => {\n query.value = s\n },\n { immediate: true },\n )\n\n function apply() {\n exitRawMode(true)\n }\n\n function cancel() {\n exitRawMode(false)\n }\n\n function exitRawMode(save: boolean) {\n props.uql.rawMode = false\n if (save) {\n props.uql.query = query.value\n } else {\n query.value = props.uql.query\n }\n }\n\n return {\n query,\n\n partEditor: usePartEditor(props.uql),\n apply,\n cancel,\n }\n },\n})\n\nfunction usePartEditor(uql: UseUql) {\n const partId = shallowRef()\n const partQuery = shallowRef('')\n\n const editing = computed(() => {\n return partId.value !== undefined\n })\n\n function addPart() {\n const part = createQueryPart()\n uql.addPart(part)\n\n startEditing(part)\n }\n\n function startEditing(part: QueryPart) {\n partId.value = part.id\n partQuery.value = part.query\n }\n\n function applyEdits(part: QueryPart) {\n if (partQuery.value !== part.query) {\n part.error = ''\n }\n part.query = partQuery.value\n\n cancelEdits()\n }\n\n function cancelEdits() {\n partId.value = undefined\n partQuery.value = ''\n uql.cleanup()\n }\n\n return proxyRefs({\n partId: partId,\n query: partQuery,\n editing,\n\n add: addPart,\n startEditing,\n applyEdits,\n cancelEdits,\n })\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UptraceQuery.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UptraceQuery.vue?vue&type=script&lang=ts&\"","export enum Category {\n All = 'all',\n Pinned = 'pinned',\n Found = 'found',\n Other = 'other',\n Otel = 'otel',\n}\n\nexport interface Item {\n value: string\n text?: string\n count: number\n}\n\nexport interface Filter {\n attr: string\n op: string\n value: string[]\n}\n","import { render, staticRenderFns } from \"./UptraceQuery.vue?vue&type=template&id=2d8ca0c7&scoped=true&\"\nimport script from \"./UptraceQuery.vue?vue&type=script&lang=ts&\"\nexport * from \"./UptraceQuery.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./UptraceQuery.vue?vue&type=style&index=0&id=2d8ca0c7&prod&lang=scss&scoped=true&\"\nimport style1 from \"./UptraceQuery.vue?vue&type=style&index=1&id=2d8ca0c7&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d8ca0c7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\",\"disabled\":_vm.disabled}},'v-btn',attrs,false),on),[_vm._v(\" Group by \")])]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('SearchableList',{attrs:{\"items\":_vm.attrKeys},on:{\"input\":function($event){return _vm.groupBy($event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-sheet',{attrs:{\"max-height\":\"320\",\"loading\":_vm.loading}},[_c('XPlaceholder',{scopedSlots:_vm._u([(_vm.loading)?{key:\"placeholder\",fn:function(){return [_c('v-skeleton-loader',{attrs:{\"width\":\"200\",\"type\":\"list-item@3\",\"loading\":\"\"}})]},proxy:true}:null],null,true)},[(_vm.showFilter)?_c('v-card-text',{staticClass:\"mb-n2\"},[_c('v-text-field',{attrs:{\"placeholder\":\"Fuzzy filter\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"autofocus\":\"\",\"clearable\":\"\"},on:{\"click\":function($event){$event.stopPropagation();}},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}})],1):_vm._e(),(!_vm.items.length)?_c('v-card-text',[_vm._v(\"There are no any suggestions.\")]):_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((_vm.filteredItems),function(item,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){return _vm.onClick(item)}}},[_vm._t(\"item\",function(){return [_c('v-list-item-content',[_c('v-list-item-title',{staticStyle:{\"text-overflow\":\"clip\"}},[_vm._v(\" \"+_vm._s(_vm.truncateMiddle(item.text, 80))+\" \")])],1)]},{\"item\":item})],2)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, watch } from 'vue'\n\n// Misc\nimport { truncateMiddle } from '@/util/string'\n\ninterface Item {\n text: string\n value: any\n}\n\nexport default defineComponent({\n name: 'SearchableList',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n items: {\n type: Array,\n required: true,\n },\n numItem: {\n type: Number,\n default: undefined,\n },\n searchInput: {\n type: String,\n default: '',\n },\n returnObject: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const search = shallowRef('')\n\n const normalizedItems = computed((): Item[] => {\n return props.items.map((item) => {\n if (typeof item === 'string') {\n return { text: item, value: item }\n }\n return item as Item\n })\n })\n\n const filteredItems = computed((): Item[] => {\n let items = normalizedItems.value.slice()\n\n if (!search.value) {\n return items\n }\n\n // @ts-ignore\n return fuzzyFilter(items, search.value, { key: 'text' })\n })\n\n const showFilter = computed(() => {\n if (props.numItem) {\n return props.numItem > 10\n }\n return props.items.length > 10\n })\n\n watch(\n () => props.searchInput,\n (s) => {\n search.value = s\n },\n { immediate: true },\n )\n\n watch(search, (search) => {\n ctx.emit('update:searchInput', search)\n })\n\n function onClick(item: Item) {\n if (props.returnObject) {\n ctx.emit('input', item)\n } else {\n ctx.emit('input', item.value)\n }\n }\n\n return { search, filteredItems, showFilter, onClick, truncateMiddle }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchableList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchableList.vue?vue&type=template&id=376c93be&scoped=true&\"\nimport script from \"./SearchableList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchableList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"376c93be\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport SearchableList from '@/components/SearchableList.vue'\n\nexport default defineComponent({\n name: 'DashGroupingMenu',\n components: { SearchableList },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n attrKeys: {\n type: Array as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const menu = shallowRef(false)\n\n function groupBy(AttrKey: string) {\n const editor = props.uql.createEditor()\n editor.add(`group by ${AttrKey}`)\n props.uql.commitEdits(editor)\n\n menu.value = false\n }\n\n return {\n menu,\n groupBy,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGroupingMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGroupingMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashGroupingMenu.vue?vue&type=template&id=88edd15e&scoped=true&\"\nimport script from \"./DashGroupingMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashGroupingMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"88edd15e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.drawer = !_vm.drawer}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-filter\")]),_c('span',[_vm._v(\"Where\")])],1),_c('v-navigation-drawer',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:({\n handler: _vm.onClickOutside,\n closeConditional: _vm.closeConditional,\n }),expression:\"{\\n handler: onClickOutside,\\n closeConditional,\\n }\"}],attrs:{\"app\":\"\",\"right\":\"\",\"width\":_vm.width,\"temporary\":_vm.temporary,\"stateless\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-system-bar',{attrs:{\"window\":\"\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.temporary ? 'Keep menu open' : 'Hide menu'},on:{\"click\":function($event){_vm.temporary = !_vm.temporary}}},[_c('v-icon',[_vm._v(_vm._s(_vm.temporary ? 'mdi-dock-right' : 'mdi-dock-window'))])],1),(!_vm.temporary)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Close menu\"},on:{\"click\":function($event){_vm.drawer = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):_vm._e(),_c('v-btn-toggle',{staticClass:\"ml-4\",attrs:{\"group\":\"\",\"dense\":\"\"},model:{value:(_vm.width),callback:function ($$v) {_vm.width=$$v},expression:\"width\"}},[_c('v-btn',{attrs:{\"value\":300,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-s\")])],1),_c('v-btn',{attrs:{\"value\":400,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-m\")])],1),_c('v-btn',{attrs:{\"value\":500,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-l\")])],1)],1)],1),_c('FacetList',{attrs:{\"component\":\"metrics\",\"uql\":_vm.uql,\"axios-params\":_vm.facetParams},on:{\"input\":function($event){_vm.drawer = $event}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.attrs.status.hasData())?_vm._l((5),function(i){return _c('v-skeleton-loader',{key:i,staticClass:\"mx-auto\",attrs:{\"type\":\"card\"}})}):(!_vm.sortedCategories.length)?[_c('v-container',{staticClass:\"fill-height\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-center\"},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"mb-4\"},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"mdi-magnify\")])],1),_c('p',{staticClass:\"text-body-1 text--secondary\"},[_vm._v(\" There are no matching attributes.\"),_c('br'),_vm._v(\" Try to change filters. \")])])],1)],1)],1)]:_c('v-container',{staticClass:\"py-6\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Filter attributes\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"autofocus\":\"\",\"clearable\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1)],1),_vm._l((_vm.sortedCategories),function(category){return _c('v-row',{key:category},[_c('v-col',[_c('FacetCategory',{attrs:{\"component\":_vm.component,\"axios-params\":_vm.axiosParams,\"filters-state\":_vm.filtersState,\"category\":category,\"items\":_vm.categories[category],\"expanded\":_vm.isExpanded(category)},on:{\"update:filter\":function($event){return _vm.updateQuery($event)},\"update:pinned\":function($event){return _vm.attrs.reload()},\"click:close\":function($event){return _vm.$emit('input', false)}}})],1)],1)})],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',[_c('v-col',{staticClass:\"py-2 cursor-pointer\",class:_vm.$vuetify.theme.isDark ? 'grey darken-4' : 'grey lighten-3',on:{\"click\":function($event){_vm.expandedInternal = !_vm.expandedInternal}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.expandedInternal ? 'mdi-chevron-down' : 'mdi-chevron-up'))]),_c('span',{staticClass:\"text--secondary text-uppercase font-weight-medium\"},[_vm._v(_vm._s(_vm.category)+\" (\"+_vm._s(_vm.items.length)+\")\")])],1)],1),(_vm.expandedInternal)?_c('v-row',[_c('v-col',{staticClass:\"pa-0 pb-4\"},[_vm._l((_vm.items),function(item,i){return [(i > 0)?_c('v-divider',{key:`${item.value}-divider`}):_vm._e(),_c('FacetItem',{key:item.value,attrs:{\"component\":_vm.component,\"axios-params\":_vm.axiosParams,\"value\":_vm.filtersState[item.value],\"attr\":item.value,\"pending\":_vm.pinnedFacetMan.pending,\"expanded\":_vm.itemExpanded(item, i),\"pinned\":item.pinned},on:{\"input\":function($event){return _vm.$emit('update:filter', { attr: item.value, op: '=', value: $event })},\"update:filter\":function($event){return _vm.$emit('update:filter', $event)},\"click:close\":function($event){return _vm.$emit('click:close')},\"click:pin\":function($event){return _vm.pinFacet(item.value)},\"click:unpin\":function($event){return _vm.unpinFacet(item.value)}}})]})],2)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { proxyRefs } from 'vue'\n\n// Composables\nimport { useAxios } from '@/use/axios'\n\nexport function usePinnedFacetManager() {\n const url = `/internal/v1/pinned-facets`\n const { loading: pending, request } = useAxios()\n\n function add(attr: string) {\n return request({ method: 'POST', url, data: { attr } })\n }\n\n function remove(attr: string) {\n return request({ method: 'DELETE', url, data: { attr } })\n }\n\n return proxyRefs({ pending, add, remove })\n}\n","interface FilterState {\n attr: string\n values: string[]\n}\n\nexport function extractFilterState(s: string): FilterState | null {\n const lexer = new Lexer(s)\n\n let t = lexer.nextToken()\n if (t.text.toLowerCase() !== 'where') {\n return null\n }\n\n t = lexer.nextToken()\n if (t.id !== TokenID.Ident) {\n return null\n }\n\n const attr = t.text\n const values = []\n\n t = lexer.nextToken()\n switch (t.text.toLowerCase()) {\n case '=':\n case '==': {\n const value = nextValue(lexer)\n if (value !== '') {\n values.push(value)\n }\n break\n }\n case 'in': {\n t = lexer.nextToken()\n if (t.text !== '(') {\n return null\n }\n\n for (let i = 0; i < 10; i++) {\n if (i > 0) {\n t = lexer.nextToken()\n if (t.text !== ',') {\n break\n }\n }\n\n const value = nextValue(lexer)\n if (value !== '') {\n values.push(value)\n }\n }\n break\n }\n default:\n return null\n }\n\n if (values.length) {\n return { attr, values }\n }\n return null\n}\n\nfunction nextValue(lexer: Lexer): string {\n const t = lexer.nextToken()\n switch (t.id) {\n case TokenID.Ident:\n case TokenID.Value:\n return t.text\n default:\n return ''\n }\n}\n\ninterface Token {\n id: TokenID\n text: string\n}\n\nexport enum TokenID {\n Invalid = 0,\n Char,\n Ident,\n Value,\n}\n\nexport const EOF = { id: TokenID.Invalid, text: '' }\n\nexport class Lexer {\n s = ''\n i = 0\n\n constructor(s: string) {\n this.s = s\n }\n\n nextToken(): Token {\n if (!this.isValid()) {\n return EOF\n }\n\n const ch = this.nextChar()\n\n switch (ch) {\n case \"'\":\n case '\"':\n return this.quotedValue(ch)\n }\n\n if (isWhitespace(ch)) {\n return this.nextToken()\n }\n if (ch === '_' || isAlpha(ch)) {\n return this.ident(this.i - 1)\n }\n if (isDigit(ch)) {\n return this.value(this.i - 1)\n }\n return { id: TokenID.Char, text: ch }\n }\n\n private quotedValue(quote: string): Token {\n const text = this.readUnquoted(quote)\n return { id: TokenID.Value, text }\n }\n\n private ident(start: number): Token {\n while (this.isValid()) {\n const ch = this.peekChar()\n if (!isIdent(ch)) {\n break\n }\n this.advance()\n }\n\n const text = this.s.slice(start, this.i)\n return { id: TokenID.Ident, text }\n }\n\n private value(start: number): Token {\n while (this.isValid()) {\n const ch = this.peekChar()\n if (isWhitespace(ch)) {\n break\n }\n this.advance()\n }\n\n const text = this.s.slice(start, this.i)\n return { id: TokenID.Value, text }\n }\n\n private readUnquoted(quote: string) {\n const buf = []\n\n while (this.isValid()) {\n const ch = this.nextChar()\n\n switch (ch) {\n case '\\\\': {\n const next = this.nextChar()\n switch (next) {\n case quote:\n buf.push(quote)\n break\n case '\\\\':\n buf.push('\\\\')\n break\n case 'n':\n buf.push('\\n')\n break\n case 'r':\n buf.push('\\r')\n break\n case 't':\n buf.push('\\t')\n break\n }\n break\n }\n case quote:\n return buf.join('')\n default:\n buf.push(ch)\n break\n }\n }\n\n return buf.join('')\n }\n\n private isValid() {\n return this.i < this.s.length\n }\n\n nextChar() {\n const ch = this.s.charAt(this.i)\n this.i++\n return ch\n }\n\n private peekChar() {\n if (this.isValid()) {\n return this.s.charAt(this.i)\n }\n return ''\n }\n\n private advance() {\n this.i++\n }\n}\n\nfunction isAlpha(ch: string): boolean {\n return ch.toUpperCase() != ch.toLowerCase()\n}\n\nfunction isIdent(ch: string): boolean {\n switch (ch) {\n case '.':\n case '_':\n return true\n default:\n return isAlpha(ch)\n }\n}\n\nfunction isWhitespace(ch: string): boolean {\n return /\\s/.test(ch)\n}\n\nfunction isDigit(ch: string): boolean {\n return /\\d/.test(ch)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"position\":\"relative\"}},[(_vm.values.loading)?_c('v-progress-linear',{staticClass:\"mx-4\",attrs:{\"absolute\":\"\",\"indeterminate\":\"\"}}):_vm._e(),_c('div',{staticClass:\"pa-3\"},[_c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',[_c('div',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){_vm.expandedInternal = !_vm.expandedInternal}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.expandedInternal ? 'mdi-chevron-down' : 'mdi-chevron-up'))]),_c('span',{staticClass:\"text-subtitle-2\"},[_vm._v(_vm._s(_vm.attr))]),(_vm.pinned)?_c('v-btn',{staticClass:\"ml-1\",attrs:{\"loading\":_vm.pending,\"icon\":\"\",\"small\":\"\",\"title\":\"Unpin attribute\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('click:unpin')}}},[_c('v-icon',{attrs:{\"size\":\"20\",\"color\":\"green darken-1\"}},[_vm._v(\"mdi-pin\")])],1):_c('v-btn',{staticClass:\"ml-1\",attrs:{\"loading\":_vm.pending,\"icon\":\"\",\"small\":\"\",\"title\":\"Pin attribute to the top\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.$emit('click:pin')}}},[_c('v-icon',{attrs:{\"size\":\"20\"}},[_vm._v(\"mdi-pin-outline\")])],1)],1)])],1),(_vm.showSearch)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[(_vm.showSearch)?_c('v-text-field',{attrs:{\"loading\":_vm.values.loading,\"prepend-inner-icon\":\"mdi-magnify\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"clearable\":\"\"},model:{value:(_vm.values.searchInput),callback:function ($$v) {_vm.$set(_vm.values, \"searchInput\", $$v)},expression:\"values.searchInput\"}}):_vm._e()],1)],1):_vm._e(),(_vm.values.searchInput)?_c('v-row',{staticClass:\"mt-1\",attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',{staticClass:\"px-1\",on:{\"click\":function($event){return _vm.$emit('update:filter', _vm.likeFilter)}}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.filterString(_vm.likeFilter)))])],1)],1),_c('v-list-item',{staticClass:\"px-1\",on:{\"click\":function($event){return _vm.$emit('update:filter', _vm.notLikeFilter)}}},[_c('v-list-item-icon',{staticClass:\"mr-4\"},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.filterString(_vm.notLikeFilter)))])],1)],1)],1)],1)],1):_vm._e(),(_vm.expandedInternal)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('FacetItemBody',{attrs:{\"value\":_vm.value,\"items\":_vm.values.filteredItems,\"search-query\":_vm.values.searchInput},on:{\"update:searchQuery\":function($event){return _vm.$set(_vm.values, \"searchInput\", $event)},\"update:search-query\":function($event){return _vm.$set(_vm.values, \"searchInput\", $event)},\"input\":function($event){return _vm.$emit('input', $event)},\"click:close\":function($event){return _vm.$emit('click:close')}}})],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\"}},[(!_vm.items.length)?_c('div',{staticClass:\"py-4 text-body-2 text--secondary text-center\"},[_vm._v(\" No matching values \")]):_c('v-list',{staticClass:\"py-0\",attrs:{\"dense\":\"\"}},_vm._l((_vm.pagedItems),function(item){return _c('v-list-item',{key:item.value,staticClass:\"px-1\",on:{\"click\":function($event){_vm.toggleOne(String(item.value))}}},[_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.values.includes(String(item.value))},on:{\"click\":function($event){$event.stopPropagation();_vm.toggle(String(item.value))}}})],1),_c('v-list-item-content',{staticClass:\"text-truncate\"},[_c('v-list-item-title',[_vm._v(_vm._s(item.value))])],1),(item.count)?_c('v-list-item-action',{staticClass:\"my-0\"},[_c('v-list-item-action-text',[_c('NumValue',{attrs:{\"value\":item.count}})],1)],1):_vm._e()],1)}),1),(_vm.pager.numPage > 1)?_c('XPagination',{attrs:{\"pager\":_vm.pager,\"total-visible\":\"5\",\"show-pager\":false}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, ref, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { usePager } from '@/use/pager'\nimport { Item } from '@/components/facet/types'\n\nexport default defineComponent({\n name: 'FacetItemBody',\n\n props: {\n value: {\n type: Array as PropType,\n default: undefined,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const pager = usePager()\n const values = ref([])\n\n const pagedItems = computed(() => {\n return props.items.slice(pager.pos.start, pager.pos.end)\n })\n\n watch(\n () => props.value,\n (value) => {\n values.value = value ?? []\n },\n { immediate: true },\n )\n\n watch(\n () => props.items.length,\n (numItem) => {\n pager.numItem = numItem\n },\n { immediate: true },\n )\n\n function toggle(itemValue: string) {\n const selected = values.value.slice()\n const index = selected.indexOf(itemValue)\n if (index >= 0) {\n selected.splice(index, 1)\n } else {\n selected.push(itemValue)\n }\n ctx.emit('input', selected)\n }\n\n function toggleOne(itemValue: string) {\n let selected = [itemValue]\n if (values.value.length === 1 && values.value.includes(itemValue)) {\n selected = []\n }\n ctx.emit('input', selected)\n }\n\n return { pager, values, pagedItems, toggle, toggleOne }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetItemBody.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetItemBody.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetItemBody.vue?vue&type=template&id=73b65795&scoped=true&\"\nimport script from \"./FacetItemBody.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetItemBody.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73b65795\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useDataSource } from '@/use/datasource'\nimport { Filter } from '@/components/facet/types'\n\n// Components\nimport FacetItemBody from '@/components/facet/FacetItemBody.vue'\n\nexport default defineComponent({\n name: 'SpanFacet',\n components: { FacetItemBody },\n\n props: {\n component: {\n type: String,\n required: true,\n },\n axiosParams: {\n type: undefined as unknown as PropType | null>,\n required: true,\n },\n value: {\n type: Array as PropType,\n default: undefined,\n },\n attr: {\n type: String,\n required: true,\n },\n expanded: {\n type: Boolean,\n required: true,\n },\n pinned: {\n type: Boolean,\n required: true,\n },\n pending: {\n type: Boolean,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const expandedInternal = shallowRef(props.expanded)\n\n const values = useDataSource(() => {\n if (!props.axiosParams) {\n return props.axiosParams\n }\n if (!expandedInternal.value) {\n return undefined\n }\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/${props.component}/${projectId}/attributes/${props.attr}`,\n params: {\n ...props.axiosParams,\n },\n debounce: 500,\n }\n })\n\n const showSearch = computed(() => {\n return expandedInternal.value && (values.items.length > 10 || values.searchInput)\n })\n\n const likeFilter = computed(() => {\n return {\n attr: props.attr,\n op: 'like',\n value: [`%${values.searchInput}%`],\n }\n })\n\n const notLikeFilter = computed(() => {\n return {\n attr: props.attr,\n op: 'not like',\n value: [`%${values.searchInput}%`],\n }\n })\n\n function filterString(f: Filter) {\n return `${f.attr} ${f.op} ${f.value}`\n }\n\n return {\n expandedInternal,\n values,\n showSearch,\n\n likeFilter,\n notLikeFilter,\n filterString,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetItem.vue?vue&type=template&id=2102f9ca&scoped=true&\"\nimport script from \"./FacetItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FacetItem.vue?vue&type=style&index=0&id=2102f9ca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2102f9ca\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { Item, Category } from '@/components/facet/types'\nimport { usePinnedFacetManager } from '@/components/facet/use-pinned-facets'\n\n// Components\nimport FacetItem from '@/components/facet/FacetItem.vue'\n\nexport default defineComponent({\n name: 'FacetItemsCategory',\n components: { FacetItem },\n\n props: {\n component: {\n type: String,\n required: true,\n },\n axiosParams: {\n type: undefined as unknown as PropType | null>,\n required: true,\n },\n\n filtersState: {\n type: Object as PropType>,\n required: true,\n },\n category: {\n type: String,\n required: true,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n expanded: {\n type: Boolean,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const pinnedFacetMan = usePinnedFacetManager()\n const expandedInternal = shallowRef(props.expanded)\n\n function pinFacet(attr: string) {\n pinnedFacetMan.add(attr).then(() => {\n ctx.emit('update:pinned')\n })\n }\n\n function unpinFacet(attr: string) {\n pinnedFacetMan.remove(attr).then(() => {\n ctx.emit('update:pinned')\n })\n }\n\n function itemExpanded(item: Item, index: number): boolean {\n switch (props.category) {\n case Category.All:\n return index < 5\n case Category.Pinned:\n return index < 3\n default:\n return item.value in props.filtersState\n }\n }\n\n return {\n expandedInternal,\n itemExpanded,\n\n pinnedFacetMan,\n pinFacet,\n unpinFacet,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetCategory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetCategory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetCategory.vue?vue&type=template&id=180b81da&scoped=true&\"\nimport script from \"./FacetCategory.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetCategory.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"180b81da\",\n null\n \n)\n\nexport default component.exports","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, onBeforeMount, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { UseUql } from '@/use/uql'\nimport { useDataSource, Item as BaseItem } from '@/use/datasource'\nimport { Category, Filter } from '@/components/facet/types'\n\n// Components\nimport FacetCategory from '@/components/facet/FacetCategory.vue'\n\n// Misc\nimport { extractFilterState } from '@/components/facet/lexer'\nimport { AttrKey } from '@/models/otel'\nimport { quote, escapeRe } from '@/util/string'\n\ntype KVs = Record\n\ninterface Item extends BaseItem {\n pinned: boolean\n}\n\nexport default defineComponent({\n name: 'FacetList',\n components: { FacetCategory },\n\n props: {\n component: {\n type: String,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: undefined as unknown as PropType | null>,\n required: true,\n },\n attrPrefix: {\n type: String,\n default: '',\n },\n },\n\n setup(props) {\n const route = useRoute()\n const searchInput = shallowRef('')\n\n const attrs = useDataSource(() => {\n if (!props.axiosParams) {\n return props.axiosParams\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/${props.component}/${projectId}/attributes`,\n params: props.axiosParams,\n }\n })\n\n const attrKeys = computed(() => {\n return attrs.items.filter((item) => {\n if (!item.value.startsWith('.')) {\n return true\n }\n return (\n [\n AttrKey.spanSystem,\n AttrKey.spanGroupId,\n AttrKey.spanName,\n AttrKey.spanEventName,\n AttrKey.spanKind,\n AttrKey.spanStatusCode,\n AttrKey.spanStatusMessage,\n ].indexOf(item.value as AttrKey) >= 0\n )\n })\n })\n\n const categories = computed((): Record => {\n if (searchInput.value) {\n const items = fuzzyFilter(attrKeys.value, searchInput.value, { key: 'text' })\n return { [Category.Found]: items }\n }\n\n if (attrKeys.value.length <= 10) {\n return { [Category.All]: attrKeys.value }\n }\n\n const categories: Record = {}\n const pinnedCategory = []\n const otherCategory = []\n\n for (let item of attrKeys.value) {\n if (item.pinned) {\n pinnedCategory.push(item)\n continue\n }\n\n const categoryName = attrCategory(item.value)\n if (!categoryName) {\n otherCategory.push(item)\n continue\n }\n\n let category = categories[categoryName]\n if (!category) {\n category = []\n categories[categoryName] = category\n }\n category.push(item)\n }\n\n for (let categoryName in categories) {\n const items = categories[categoryName]\n if (items.length === 1) {\n delete categories[categoryName]\n otherCategory.push(items[0])\n }\n }\n\n if (pinnedCategory.length) {\n categories[Category.Pinned] = pinnedCategory\n }\n if (otherCategory.length) {\n categories[Category.Other] = otherCategory\n }\n\n return categories\n })\n\n const sortedCategories = computed(() => {\n const sorted = Object.keys(categories.value).sort()\n\n const i = sorted.indexOf(Category.Pinned)\n if (i > 0) {\n sorted.splice(i, 1)\n sorted.unshift(Category.Pinned)\n }\n\n return sorted\n })\n\n const filtersState = computed((): KVs => {\n const kvs: KVs = {}\n for (let part of props.uql.parts) {\n const state = extractFilterState(part.query)\n if (state) {\n kvs[state.attr] = state.values\n }\n }\n return kvs\n })\n\n onBeforeMount(() => {\n const { envs, services } = route.value.query\n const items = [\n { attr: AttrKey.deploymentEnvironment, value: envs },\n { attr: AttrKey.service, value: services },\n ]\n\n for (let item of items) {\n if (!item.value) {\n continue\n }\n if (Array.isArray(item.value)) {\n updateQuery({\n attr: item.attr,\n op: 'in',\n value: item.value as string[],\n })\n } else if (item.value) {\n updateQuery({\n attr: item.attr,\n op: '=',\n value: [item.value],\n })\n }\n }\n })\n\n function attrCategory(attr: string): string {\n switch (attr) {\n case AttrKey.service:\n return AttrKey.service\n }\n\n if (attr.startsWith('_')) {\n return Category.Otel\n }\n\n const index = attr.indexOf('_')\n if (index >= 0) {\n return attr.slice(0, index)\n }\n return ''\n }\n\n function hasActiveFilters(items: Item[]): boolean {\n return items.filter((item) => filtersState.value[item.value]).length > 0\n }\n\n function updateQuery(filter: Filter) {\n let { attr, op, value } = filter\n if (props.attrPrefix) {\n attr = props.attrPrefix + attr\n }\n\n const editor = props.uql.createEditor()\n const re = new RegExp(`^where\\\\s+${escapeRe(attr)}\\\\s+(=|in|like|not\\\\s+like)\\\\s+`, 'i')\n\n if (!value.length) {\n editor.filter((part) => !re.test(part))\n props.uql.query = editor.toString()\n return\n }\n\n let query: string\n if (value.length === 1) {\n query = `where ${attr} ${op} ${quote(value[0])}`\n } else {\n const values = value.map((value) => quote(value)).join(', ')\n query = `where ${attr} in (${values})`\n }\n\n editor.replaceOrPush(re, query)\n props.uql.query = editor.toString()\n }\n\n function isExpanded(category: string): boolean {\n if (sortedCategories.value.length === 1) {\n return true\n }\n if (searchInput.value && category === Category.Found) {\n return true\n }\n return category === Category.Pinned || hasActiveFilters(categories.value[category])\n }\n\n return {\n searchInput,\n attrs,\n\n categories,\n sortedCategories,\n filtersState,\n\n hasActiveFilters,\n updateQuery,\n isExpanded,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./FacetList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FacetList.vue?vue&type=template&id=8a3462a2&scoped=true&\"\nimport script from \"./FacetList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FacetList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a3462a2\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useStorage } from '@/use/local-storage'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport FacetList from '@/components/facet/FacetList.vue'\n\nexport default defineComponent({\n name: 'DashWhereBtn',\n components: { FacetList },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n },\n\n setup(props) {\n const drawer = shallowRef(false)\n const width = useStorage('tracing-width', 400)\n const temporary = useStorage('tracing-temporary', true)\n\n const facetParams = computed(() => {\n if (!drawer.value) {\n return null\n }\n return {\n ...props.axiosParams,\n query: props.uql.whereQuery,\n }\n })\n\n function onClickOutside() {\n if (temporary.value) {\n drawer.value = false\n }\n }\n\n function closeConditional() {\n return drawer.value\n }\n\n return {\n facetParams,\n\n drawer,\n width,\n temporary,\n\n onClickOutside,\n closeConditional,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashWhereBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashWhereBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashWhereBtn.vue?vue&type=template&id=efcc92da&scoped=true&\"\nimport script from \"./DashWhereBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashWhereBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"efcc92da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\",\"disabled\":_vm.disabled}},'v-btn',attrs,false),on),[_vm._v(\" Aggregate \")])]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-card',[_c('v-list',{attrs:{\"dense\":\"\"}},[_vm._l((_vm.items),function(item){return [_c('v-menu',{key:item.metric.alias,attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"transition\":\"slide-x-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({},'v-list-item',attrs,false),on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"$\"+_vm._s(item.metric.alias))])],1),_c('v-list-item-icon',{staticClass:\"align-self-center\"},[_c('v-icon',[_vm._v(\"mdi-menu-right\")])],1)],1)]}}],null,true)},[_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((item.columns),function(col){return _c('v-list-item',{key:col.value,on:{\"click\":function($event){return _vm.aggBy(col.value)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(col.value))]),(col.hint)?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(col.hint)+\" \")]):_vm._e()],1)],1)}),1)],1)]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseUql } from '@/use/uql'\n\n// Misc\nimport { ActiveMetric as Metric, Instrument } from '@/metrics/types'\n\ninterface MetricItem {\n metric: Metric\n columns: ColumnItem[]\n}\n\ninterface ColumnItem {\n value: string\n hint?: string\n}\n\nexport default defineComponent({\n name: 'MetricsAggMenu',\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const menu = shallowRef(false)\n\n const items = computed((): MetricItem[] => {\n const items = []\n for (let metric of props.metrics) {\n items.push({\n metric,\n columns: metricColumns(metric),\n })\n }\n return items\n })\n\n function aggBy(column: string) {\n const editor = props.uql.createEditor()\n editor.add(column)\n props.uql.commitEdits(editor)\n\n menu.value = false\n }\n\n return {\n menu,\n items,\n\n aggBy,\n }\n },\n})\n\nfunction metricColumns(metric: Metric): ColumnItem[] {\n const alias = '$' + metric.alias\n switch (metric.instrument) {\n case Instrument.Deleted:\n return []\n\n case Instrument.Counter:\n return [\n //{ value: alias, hint: `sum of timeseries` },\n { value: `sum(${alias})`, hint: `sum of timeseries` },\n { value: `per_min(sum(${alias}))`, hint: `sum(${alias}) / _minutes` },\n { value: `per_sec(sum(${alias}))`, hint: `sum(${alias}) / _seconds` },\n ]\n\n case Instrument.Gauge:\n return [\n //{ value: alias, hint: `avg of timeseries` },\n { value: `avg(${alias})`, hint: 'avg of timeseries' },\n { value: `min(${alias})`, hint: 'min of timeseries' },\n { value: `max(${alias})`, hint: 'max of timeseries' },\n { value: `sum(${alias})`, hint: 'sum of timeseries' },\n ]\n\n case Instrument.Additive:\n return [\n //{ value: alias, hint: `sum of timeseries` },\n { value: `sum(${alias})`, hint: 'sum of timeseries' },\n { value: `avg(${alias})`, hint: 'avg of timeseries' },\n { value: `min(${alias})`, hint: 'min of timeseries' },\n { value: `max(${alias})`, hint: 'max of timeseries' },\n { value: `per_min(sum(${alias}))`, hint: `sum(${alias}) / _minutes` },\n { value: `per_sec(sum(${alias}))`, hint: `sum(${alias}) / _seconds` },\n ]\n\n case Instrument.Histogram:\n return [\n { value: `count(${alias})`, hint: 'number of observed values' },\n { value: `per_min(count(${alias}))`, hint: `count(${alias}) / _minutes` },\n { value: `per_sec(count(${alias}))`, hint: `count(${alias}) / _seconds` },\n { value: `p50(${alias})`, hint: 'p50 of timeseries' },\n { value: `p75(${alias})`, hint: 'p75 of timeseries' },\n { value: `p90(${alias})`, hint: 'p90 of timeseries' },\n { value: `p95(${alias})`, hint: 'p95 of timeseries' },\n { value: `p99(${alias})`, hint: 'p99 of timeseries' },\n { value: `avg(${alias})`, hint: `sum(${alias}) / count(${alias})` },\n { value: `min(${alias})`, hint: 'min of timeseries' },\n { value: `max(${alias})`, hint: 'max of timeseries' },\n ]\n\n case Instrument.Summary:\n return [\n { value: `avg(${alias})`, hint: 'avg of timeseries' },\n { value: `min(${alias})`, hint: 'min of timeseries' },\n { value: `max(${alias})`, hint: 'max of timeseries' },\n { value: `count(${alias})`, hint: 'number of observed values' },\n { value: `sum(${alias})`, hint: 'sum of timeseries' },\n { value: `per_min(count(${alias}))`, hint: `count(${alias}) / _minutes` },\n { value: `per_sec(count(${alias}))`, hint: `count(${alias}) / _seconds` },\n ]\n\n default:\n throw new Error(`unknown instrument: ${metric.instrument}`)\n }\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsAggMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsAggMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricsAggMenu.vue?vue&type=template&id=847c424c&scoped=true&\"\nimport script from \"./MetricsAggMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricsAggMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MetricsAggMenu.vue?vue&type=style&index=0&id=847c424c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"847c424c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"1200\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.dialog = false}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Help \")])]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"Uptrace Metrics Cheat Sheet\")]),_c('v-btn',{staticClass:\"ml-6 primary\",attrs:{\"href\":\"https://uptrace.dev/get/querying-metrics.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Documentation\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{staticClass:\"pa-6\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('CheatsheetCard')],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"Close\")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\",\"href\":\"https://uptrace.dev/get/querying-metrics.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Read more\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Filtering timeseries\")]),_c('QueryExample',{attrs:{\"query\":\"$metric1 | $metric2\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Metric names start with \"),_c('code',[_vm._v(\"$\")]),_vm._v(\". Each expr is separated with \"),_c('code',[_vm._v(\"|\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cpu_time{cpu=\\\"0\\\",mode=\\\"idle\\\"}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Select timeseries with given attributes.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cpu_time{cpu!=\\\"0\\\",mode~\\\"user|system\\\"}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Equal \"),_c('code',[_vm._v(\"=\")]),_vm._v(\", not equal \"),_c('code',[_vm._v(\"!=\")]),_vm._v(\", regexp match \"),_c('code',[_vm._v(\"~\")]),_vm._v(\", regexp no match \"),_c('code',[_vm._v(\"!~\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$hits{host_name=localhost} | $misses{host_name=localhost}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Filter timeseries by \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$hits | $misses | where host_name = 'localhost'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Filter all timeseries at once by \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$hits | $misses | where host_name exists\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Filter timeseries that have \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\" attribute.\")]},proxy:true}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Grouping and joining\")]),_c('QueryExample',{attrs:{\"query\":\"$hits + $misses group by service_name, host_name\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" One-to-one join by matching attributes with expr-wide grouping. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"sum($cpu_secs by (mode)) / sum($cpu_secs) as cpu_util\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"One-to-many join with individual grouping.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"sum(irate($cpu_secs by (mode, cpu)) by (mode))\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Different grouping for \"),_c('code',[_vm._v(\"irate\")]),_vm._v(\" and \"),_c('code',[_vm._v(\"sum\")]),_vm._v(\" functions.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cpu_time{cpu=\\\"0\\\",mode=\\\"idle\\\"} as cpu0_idle_time\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Timeseries can have an alias.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cache{type=\\\"hits\\\"} as _hits | $cache{type=\\\"misses\\\"} as _misses | _misses / (_hits + _misses) as hit_rate\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Join timeseries using the aliases. Underscored aliases are not displayed. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$m1 by (hostname as host) + $m2 by (host_name as host)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" To rename attributes, specify aliases in grouping expressions. \")]},proxy:true}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Counter Instrument: $cache\")]),_c('QueryExample',{attrs:{\"query\":\"$cache{type=hits}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Select number of cache hits.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cache{type=misses}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Number of cache misses.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cache{type=hits} + $cache{type=misses}\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Sum of cache hits and misses.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$cache\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Sum of cache hits, misses, and possibly other types/timeseries.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"per_min($cache) | per_sec($cache)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Number of cache operations per minute and per second. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"sum($cache) / _minutes | sum($cache) / _seconds\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"The same as the previous query.\")]},proxy:true}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Histogram Instrument: $srv_duration\")]),_c('QueryExample',{attrs:{\"query\":\"p50($srv_duration)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"P50 duration.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"p90($srv_duration{env=prod}) | p90($srv_duration{env=dev})\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"P90 duration in \"),_c('code',[_vm._v(\"prod\")]),_vm._v(\" and \"),_c('code',[_vm._v(\"env\")]),_vm._v(\" environments.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"avg($srv_duration) group by host_name\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Avg duration on each hostname.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"avg($srv_duration{host_name~\\\"api\\\\d+$\\\"})\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Avg duration on hostnames matching the regexp.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"per_min(count($srv_duration)) | per_sec(count($srv_duration))\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Number of requests per minute and per second.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"min($srv_duration) | max($srv_duration)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Min and max duration.\")]},proxy:true}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Uniq\")]),_c('QueryExample',{attrs:{\"query\":\"uniq($status) as num_checks\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count the number of timeseries.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"uniq($hits, host_name, service_name) as num_timeseries\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count the number of unique combinations of \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\" and \"),_c('code',[_vm._v(\"service_name\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"uniq($hits by (service_name), host_name) as num_timeseries\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count the number of unique \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\" for each \"),_c('code',[_vm._v(\"service_name\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"uniq($status{_value=1}) as num_up | uniq($status{_value=0}) as num_down\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Number of timeseries with the given values.\")]},proxy:true}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Advanced\")]),_c('QueryExample',{attrs:{\"query\":\"delta($kafka_part_offset) as messages_processed\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Calculate the difference between the current and previous values.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"$load_avg_15m / uniq($cpu_time, cpu) as cpu_util\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Calculate CPU utilization using \"),_c('code',[_vm._v(\"system.cpu.load_average.15m\")]),_vm._v(\" and \"),_c('code',[_vm._v(\"system.cpu.time\")]),_vm._v(\".\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"min($cache._time), max($cache._time)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Get the first/last time the metric received an update.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by lower(service_name) as service\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"You can use \"),_c('code',[_vm._v(\"lower\")]),_vm._v(\" and \"),_c('code',[_vm._v(\"upper\")]),_vm._v(\" functions in groupings.\")]},proxy:true}])})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"mb-5\"},[_c('p',{staticClass:\"mb-1\"},[_vm._t(\"description\")],2),_c('PrismCode',{staticClass:\"mt-1\",attrs:{\"code\":_vm.query}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'SpanQueryExample',\n\n props: {\n query: {\n type: String,\n required: true,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryExample.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryExample.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QueryExample.vue?vue&type=template&id=81f20f72&scoped=true&\"\nimport script from \"./QueryExample.vue?vue&type=script&lang=ts&\"\nexport * from \"./QueryExample.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./QueryExample.vue?vue&type=style&index=0&id=81f20f72&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"81f20f72\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Components\nimport QueryExample from '@/components/QueryExample.vue'\n\nexport default defineComponent({\n name: 'CheatSheetCard',\n components: { QueryExample },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CheatsheetCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CheatsheetCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CheatsheetCard.vue?vue&type=template&id=70945862&scoped=true&\"\nimport script from \"./CheatsheetCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CheatsheetCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70945862\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Components\nimport CheatsheetCard from '@/metrics/CheatsheetCard.vue'\n\nexport default defineComponent({\n name: 'QueryHelpDialog',\n components: { CheatsheetCard },\n\n setup() {\n const dialog = shallowRef(false)\n return { dialog }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryHelpDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryHelpDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QueryHelpDialog.vue?vue&type=template&id=88794d14&scoped=true&\"\nimport script from \"./QueryHelpDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./QueryHelpDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"88794d14\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useDataSource } from '@/use/datasource'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseUql } from '@/use/uql'\nimport { ActiveMetric } from '@/metrics/types'\n\n// Components\nimport UptraceQuery from '@/components/UptraceQuery.vue'\nimport DashGroupingMenu from '@/metrics/query/DashGroupingMenu.vue'\nimport DashWhereBtn from '@/metrics/query/DashWhereBtn.vue'\nimport MetricsAggMenu from '@/metrics/query/MetricsAggMenu.vue'\nimport QueryHelpDialog from '@/metrics/query/QueryHelpDialog.vue'\n\nexport default defineComponent({\n name: 'MetricsQueryBuilder',\n components: {\n UptraceQuery,\n DashGroupingMenu,\n MetricsAggMenu,\n DashWhereBtn,\n QueryHelpDialog,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n showAgg: {\n type: Boolean,\n default: false,\n },\n showGroupBy: {\n type: Boolean,\n default: false,\n },\n showDashWhere: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const route = useRoute()\n\n const axiosParams = computed(() => {\n if (!props.metrics.length) {\n return { _: undefined }\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.metrics.map((metric) => metric.name),\n }\n })\n\n const keysDs = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes`,\n params: axiosParams.value,\n }\n })\n\n return { axiosParams, keysDs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsQueryBuilder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsQueryBuilder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricsQueryBuilder.vue?vue&type=template&id=2ba01649&scoped=true&\"\nimport script from \"./MetricsQueryBuilder.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricsQueryBuilder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ba01649\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{ref:\"table\",attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.timeseries,\"items-per-page\":9,\"hide-default-footer\":_vm.timeseries.length <= 9,\"no-data-text\":\"There are no metrics\",\"dense\":\"\",\"show-expand\":_vm.showExpand,\"single-expand\":\"\"},on:{\"current-items\":function($event){return _vm.onCurrentItems($event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, isSelected, select, isExpanded, expand }){return [_c('tr',{class:{ 'cursor-pointer': 'click' in _vm.$listeners, 'text--secondary': !isSelected },on:{\"mouseenter\":function($event){return _vm.$emit('hover:item', { item: item, hover: true })},\"mouseleave\":function($event){return _vm.$emit('hover:item', { item: item, hover: false })},\"click\":function($event){return expand(!isExpanded)}}},[_c('td',{staticClass:\"cursor-pointer text-caption\",on:{\"click\":function($event){$event.stopPropagation();return select(!isSelected)}}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"size\":\"16\",\"color\":isSelected ? item.color : 'grey'}},[_vm._v(\"mdi-circle\")]),_c('span',{staticClass:\"word-break-all\"},[_vm._v(_vm._s(item.name))])],1),(_vm.values.indexOf(_vm.LegendValue.Avg) >= 0)?_c('td',{staticClass:\"text-right text-caption font-weight-medium\"},[_c('NumValue',{attrs:{\"value\":item.avg,\"unit\":item.unit,\"format\":\"short\"}})],1):_vm._e(),(_vm.values.indexOf(_vm.LegendValue.Last) >= 0)?_c('td',{staticClass:\"text-right text-caption font-weight-medium\"},[_c('NumValue',{attrs:{\"value\":item.last,\"unit\":item.unit,\"format\":\"short\"}})],1):_vm._e(),(_vm.values.indexOf(_vm.LegendValue.Min) >= 0)?_c('td',{staticClass:\"text-right text-caption font-weight-medium\"},[_c('NumValue',{attrs:{\"value\":item.min,\"unit\":item.unit,\"format\":\"short\"}})],1):_vm._e(),(_vm.values.indexOf(_vm.LegendValue.Max) >= 0)?_c('td',{staticClass:\"text-right text-caption font-weight-medium\"},[_c('NumValue',{attrs:{\"value\":item.max,\"unit\":item.unit,\"format\":\"short\"}})],1):_vm._e(),(_vm.showExpand)?_c('td',[(isExpanded)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Hide spans\"},on:{\"click\":function($event){$event.stopPropagation();return expand(false)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-up\")])],1):_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"View spans\"},on:{\"click\":function($event){$event.stopPropagation();return expand(true)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-down\")])],1)],1):_vm._e()])]}},{key:\"expanded-item\",fn:function({ headers, item }){return [_vm._t(\"expanded-item\",null,{\"headers\":headers,\"item\":item,\"expandItem\":_vm.table.expand})]}}],null,true),model:{value:(_vm.selectedItems),callback:function ($$v) {_vm.selectedItems=$$v},expression:\"selectedItems\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Misc\nimport { StyledTimeseries, LegendValue } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'ChartLegendTable',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n timeseries: {\n type: Array as PropType,\n required: true,\n },\n values: {\n type: Array as PropType,\n default: () => [LegendValue.Avg, LegendValue.Min, LegendValue.Max],\n },\n maxLength: {\n type: Number,\n default: 40,\n },\n },\n\n setup(props, ctx) {\n const table = shallowRef()\n const selectedItems = shallowRef()\n\n const showExpand = computed(() => {\n return 'expanded-item' in ctx.slots\n })\n\n const headers = computed(() => {\n const headers = []\n\n headers.push({ text: 'metric', value: 'name', sortable: true, align: 'start' })\n\n for (let value of props.values) {\n switch (value) {\n case LegendValue.Avg:\n headers.push({ text: 'avg', value: 'avg', sortable: true, align: 'end' })\n break\n case LegendValue.Last:\n headers.push({ text: 'last', value: 'last', sortable: true, align: 'end' })\n break\n case LegendValue.Min:\n headers.push({ text: 'min', value: 'min', sortable: true, align: 'end' })\n break\n case LegendValue.Max:\n headers.push({ text: 'max', value: 'max', sortable: true, align: 'end' })\n break\n default:\n console.error(`unsupported legend value: ${value}`)\n }\n }\n\n if (showExpand.value) {\n headers.push({ text: '', value: 'data-table-expand', sortable: false })\n }\n\n return headers\n })\n\n function onCurrentItems(items: StyledTimeseries[]) {\n selectedItems.value = items\n }\n\n watch(selectedItems, (items) => {\n ctx.emit('current-items', items)\n })\n\n return {\n LegendValue,\n table,\n selectedItems,\n showExpand,\n headers,\n onCurrentItems,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLegendTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLegendTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChartLegendTable.vue?vue&type=template&id=1cacafd8&scoped=true&\"\nimport script from \"./ChartLegendTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChartLegendTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ChartLegendTable.vue?vue&type=style&index=0&id=1cacafd8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1cacafd8\",\n null\n \n)\n\nexport default component.exports","export interface Event {\n scope: Record\n callback: Callback\n}\n\ntype Callback = (...args: any[]) => void\n\nexport class EventBus {\n events: { [key: string]: Event[] }\n\n constructor() {\n this.events = {}\n }\n\n on(type: string, callback: Callback, scope: Record = {}) {\n if (typeof this.events[type] === 'undefined') {\n this.events[type] = []\n }\n this.events[type].push({ scope, callback })\n }\n\n off(type: string, callback: Callback, scope: Record = {}) {\n if (typeof this.events[type] === 'undefined') {\n return\n }\n\n this.events[type] = this.events[type].filter((event: Event) => {\n event.scope !== scope || event.callback !== callback\n })\n }\n\n has(type: string, callback: Callback, scope: Record = {}) {\n if (typeof this.events[type] === 'undefined') {\n return false\n }\n\n let numOfCallbacks = this.events[type].length\n if (callback === undefined && scope === undefined) {\n return numOfCallbacks\n }\n\n return this.events[type].some((event: Event) => {\n const scopeIsSame = scope ? event.scope === scope : true\n const callbackIsSame = event.callback === callback\n if (scopeIsSame && callbackIsSame) {\n return true\n }\n })\n }\n\n emit(type: string, ...args: any[]) {\n if (typeof this.events[type] === 'undefined') {\n return\n }\n\n for (const event of this.events[type]) {\n if (event && event.callback) {\n event.callback.apply(event.scope, args)\n }\n }\n }\n}\n\nexport const global = new EventBus()\n","\nimport { defineComponent, ref, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql } from '@/use/uql'\nimport { useActiveMetrics } from '@/metrics/use-metrics'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\n\n// Components\nimport UnitPicker from '@/components/UnitPicker.vue'\nimport MonitorMetricFormPanes from '@/alerting/MonitorMetricFormPanes.vue'\nimport MonitorMetricFormOptions from '@/alerting/MonitorMetricFormOptions.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport MetricChart from '@/metrics/MetricChart.vue'\nimport ChartLegendTable from '@/metrics/ChartLegendTable.vue'\n\n// Misc\nimport { EventBus } from '@/models/eventbus'\nimport { updateColumnMap, emptyMetricColumn, Metric, MetricColumn } from '@/metrics/types'\nimport { MetricMonitor } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorMetricForm',\n components: {\n MonitorMetricFormPanes,\n MonitorMetricFormOptions,\n UnitPicker,\n MetricsPicker,\n MetricsQueryBuilder,\n MetricChart,\n ChartLegendTable,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n monitor: {\n type: Object as PropType,\n required: true,\n },\n columnMap: {\n type: Object as PropType>,\n default: undefined,\n },\n },\n\n setup(props, ctx) {\n const eventBus = new EventBus()\n\n const internalColumnMap = ref>({})\n watch(\n () => props.columnMap,\n (columnMap) => {\n if (!columnMap) {\n return\n }\n for (let key in columnMap) {\n internalColumnMap.value[key] = columnMap[key]\n }\n },\n { immediate: true },\n )\n\n const uql = useUql()\n const activeMetrics = useActiveMetrics(computed(() => props.monitor.params.metrics))\n const axiosParams = computed(() => {\n if (!props.monitor.params.query) {\n return undefined\n }\n\n const metrics = props.monitor.params.metrics.filter((m) => m.name && m.alias)\n if (!metrics.length) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n time_offset: props.monitor.params.timeOffset,\n\n metric: metrics.map((m) => m.name),\n alias: metrics.map((m) => m.alias),\n query: props.monitor.params.query,\n }\n })\n\n const timeseries = useTimeseries(() => {\n return axiosParams.value\n })\n\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n computed(() => internalColumnMap.value),\n computed(() => ({})),\n )\n\n watch(\n () => props.monitor.params.query,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n watch(\n () => uql.query,\n (query) => {\n props.monitor.params.query = query\n },\n )\n\n watch(\n () => timeseries.query,\n (queryInfo) => {\n if (queryInfo) {\n uql.setQueryInfo(queryInfo)\n }\n },\n { immediate: true },\n )\n watch(\n () => timeseries.columns,\n (columns) => {\n updateColumnMap(internalColumnMap.value, columns, emptyMetricColumn)\n\n const params = props.monitor.params\n if (params.column in internalColumnMap.value) {\n internalColumnMap.value[params.column].unit = params.columnUnit\n }\n },\n )\n\n return {\n internalColumnMap,\n eventBus,\n\n uql,\n activeMetrics,\n axiosParams,\n timeseries,\n styledTimeseries,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetricForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorMetricForm.vue?vue&type=template&id=f37100ea&scoped=true&\"\nimport script from \"./MonitorMetricForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorMetricForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f37100ea\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, reactive, computed, onBeforeUnmount, inject, Ref } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRouterOnly, useRoute } from '@/use/router'\nimport { provideForceReload } from '@/use/force-reload'\nimport { useDateRange } from '@/use/date-range'\nimport { useProject } from '@/org/use-projects'\nimport { useMetrics } from '@/metrics/use-metrics'\nimport { useMetricMonitor } from '@/alerting/use-monitors'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport MonitorMetricForm from '@/alerting/MonitorMetricForm.vue'\n\n// Misc\nimport { emptyMetricMonitor, Monitor, MetricMonitor } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorMetric',\n components: {\n DateRangePicker,\n MonitorMetricForm,\n },\n\n setup(_props, ctx) {\n const router = useRouterOnly()\n const route = useRoute()\n\n provideForceReload()\n const dateRange = useDateRange()\n const project = useProject()\n\n const header = inject>('header')!\n const footer = inject>('footer')!\n header.value = false\n footer.value = false\n onBeforeUnmount(() => {\n header.value = true\n footer.value = true\n })\n\n const metrics = useMetrics()\n const metricMonitor = useMetricMonitor()\n const activeMonitor = computed(() => {\n if (metricMonitor.data) {\n return reactive(cloneDeep(metricMonitor.data))\n }\n\n const monitor = reactive(emptyMetricMonitor())\n initMonitorFromRoute(monitor)\n return monitor\n })\n\n useTitle(\n computed(() => {\n if (activeMonitor.value) {\n return 'Edit Metric Monitor'\n }\n return 'New Metric Monitor'\n }),\n )\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Monitors',\n to: {\n name: 'MonitorList',\n },\n exact: true,\n })\n\n if (activeMonitor.value) {\n bs.push({ text: 'Edit metric monitor' })\n } else {\n bs.push({ text: 'New metric monitor' })\n }\n\n return bs\n })\n\n const columnMap = computed(() => {\n const columns = route.value.query.columns\n if (columns && typeof columns === 'string') {\n return JSON.parse(columns)\n }\n return {}\n })\n\n function initMonitorFromRoute(monitor: MetricMonitor) {\n const routeQuery = route.value.query\n monitor.name = asString(routeQuery.name)\n monitor.params.query = asString(routeQuery.query)\n\n if ('time_offset' in routeQuery) {\n monitor.params.timeOffset = parseInt(asString(routeQuery.time_offset), 10)\n }\n\n const metrics = asArray(routeQuery.metric)\n if (!metrics || !metrics.length) {\n return\n }\n\n const aliases = asArray(routeQuery.alias)\n if (!aliases || !aliases.length) {\n return\n }\n\n if (metrics.length !== aliases.length) {\n return\n }\n\n metrics.forEach((metric, index) => {\n monitor.params.metrics.push({ name: metric, alias: aliases[index] })\n })\n }\n\n function onSave(monitor: Monitor) {\n redirectToMonitors(monitor)\n }\n function onCancel(monitor: Monitor) {\n redirectToMonitors(monitor)\n }\n function redirectToMonitors(monitor: Monitor) {\n router.push({ name: 'MonitorList', query: { q: 'monitor:' + monitor.id } })\n }\n\n return {\n dateRange,\n breadcrumbs,\n\n metrics,\n activeMonitor,\n columnMap,\n\n onSave,\n onCancel,\n }\n },\n})\n\nfunction asString(v: any): string {\n switch (typeof v) {\n case 'string':\n return v\n case 'number':\n return String(v)\n default:\n return ''\n }\n}\n\nfunction asArray(v: any): string[] {\n if (!v) {\n return []\n }\n if (Array.isArray(v)) {\n return v\n }\n return [v]\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetric.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorMetric.vue?vue&type=script&lang=ts&\"","import { reactive } from 'vue'\n\nexport interface AttrMatcher {\n attr: string\n op: AttrMatcherOp\n value: string\n}\n\nexport enum AttrMatcherOp {\n Equal = '=',\n NotEqual = '!=',\n}\n\nexport function emptyAttrMatcher(): AttrMatcher {\n return reactive({ attr: '', op: AttrMatcherOp.Equal, value: '' })\n}\n","import { render, staticRenderFns } from \"./MonitorMetric.vue?vue&type=template&id=31187be2&scoped=true&\"\nimport script from \"./MonitorMetric.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorMetric.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31187be2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-md\"},[_c('PageToolbar',[_c('v-breadcrumbs',{attrs:{\"large\":\"\",\"items\":_vm.breadcrumbs,\"divider\":\">\"}}),_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":1}})],1),_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[(!_vm.monitor.data)?_c('v-skeleton-loader',{attrs:{\"type\":\"card\",\"height\":\"800\"}}):[_c('v-row',{staticClass:\"mb-2 px-4 text-subtitle-2 text-center\",attrs:{\"align\":\"end\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Updated at\")]),(_vm.monitor.data.updatedAt)?_c('DateValue',{attrs:{\"value\":_vm.monitor.data.updatedAt,\"format\":\"relative\"}}):_c('div',[_vm._v(\"None\")])],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"State\")]),_c('div',[_c('MonitorStateAvatar',{attrs:{\"state\":_vm.monitor.data.state}})],1)]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.monitor.data.state != _vm.MonitorState.Paused)?_c('v-btn',{attrs:{\"loading\":_vm.monitorMan.pending,\"depressed\":\"\",\"small\":\"\",\"title\":\"Pause monitor\"},on:{\"click\":function($event){return _vm.pauseMonitor(_vm.monitor)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-pause\")]),_vm._v(\" Pause monitor \")],1):_c('v-btn',{attrs:{\"loading\":_vm.monitorMan.pending,\"depressed\":\"\",\"small\":\"\",\"title\":\"Resume monitor\"},on:{\"click\":function($event){return _vm.activateMonitor(_vm.monitor)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-play\")]),_vm._v(\" Resume monitor \")],1)],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('MonitorErrorForm',{attrs:{\"date-range\":_vm.dateRange,\"monitor\":_vm.reactive(_vm.monitor.data)},on:{\"click:save\":_vm.onSave,\"click:cancel\":_vm.onCancel}})]],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"pr-4\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{attrs:{\"color\":\"blue darken-1\",\"size\":\"40\"}},[_c('span',{staticClass:\"white--text text-h5\"},[_vm._v(\"1\")])])],1),_c('v-col',{staticClass:\"text-h5\"},[_vm._v(\"Specify errors to monitor (optional)\")])],1),_c('v-row',[_c('v-col',{staticClass:\"mt-1 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Notify on\")]),_c('v-col',[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":\"Notify on new errors\",\"hide-details\":\"auto\"},model:{value:(_vm.monitor.params.notifyOnNewErrors),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"notifyOnNewErrors\", $$v)},expression:\"monitor.params.notifyOnNewErrors\"}}),_c('v-checkbox',{attrs:{\"label\":\"Notify on recurring errors\",\"hide-details\":\"auto\"},model:{value:(_vm.monitor.params.notifyOnRecurringErrors),callback:function ($$v) {_vm.$set(_vm.monitor.params, \"notifyOnRecurringErrors\", $$v)},expression:\"monitor.params.notifyOnRecurringErrors\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"mt-2 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Conditions (joined with AND)\")]),_c('v-col',[_c('div',{staticClass:\"mb-4\"},_vm._l((_vm.monitor.params.matchers),function(matcher,i){return _c('AttrMatcher',{key:i,attrs:{\"matcher\":matcher},on:{\"click:remove\":function($event){return _vm.removeMatcher(i)}}})}),1),_c('v-btn',{attrs:{\"outlined\":\"\"},on:{\"click\":_vm.addMatcher}},[_vm._v(\"Add condition\")])],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"pr-4\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{attrs:{\"color\":\"blue darken-1\",\"size\":\"40\"}},[_c('span',{staticClass:\"white--text text-h5\"},[_vm._v(\"3\")])])],1),_c('v-col',{staticClass:\"text-h5\"},[_vm._v(\"Select notification channels\")])],1),_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Email notifications\")]),_c('v-col',{staticClass:\"d-flex align-center\"},[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"label\":\"Notify everyone by email\",\"hide-details\":\"auto\"},model:{value:(_vm.monitor.notifyEveryoneByEmail),callback:function ($$v) {_vm.$set(_vm.monitor, \"notifyEveryoneByEmail\", $$v)},expression:\"monitor.notifyEveryoneByEmail\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"mt-3 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Slack and PagerDuty\")]),_c('v-col',{attrs:{\"cols\":\"9\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"multiple\":\"\",\"label\":\"Notification channels\",\"filled\":\"\",\"dense\":\"\",\"items\":_vm.channels.items,\"item-text\":\"name\",\"item-value\":\"id\",\"hide-details\":\"auto\"},model:{value:(_vm.monitor.channelIds),callback:function ($$v) {_vm.$set(_vm.monitor, \"channelIds\", $$v)},expression:\"monitor.channelIds\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',[_c('v-col',{staticClass:\"mt-4 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Monitor name\")]),_c('v-col',{attrs:{\"cols\":\"9\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"hint\":\"Short name that describes the monitor\",\"persistent-hint\":\"\",\"filled\":\"\",\"rules\":_vm.rules.name,\"hide-details\":\"auto\"},model:{value:(_vm.monitor.name),callback:function ($$v) {_vm.$set(_vm.monitor, \"name\", $$v)},expression:\"monitor.name\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{staticClass:\"pa-6\",attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"mr-2\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"disabled\":!_vm.isValid,\"loading\":_vm.monitorMan.pending}},[_vm._v(_vm._s(_vm.monitor.id ? 'Save' : 'Create'))])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{attrs:{\"align\":\"start\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:remove')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Attribute name\",\"placeholder\":\"deployment.environment\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.attr,\"hide-details\":\"auto\"},model:{value:(_vm.matcher.attr),callback:function ($$v) {_vm.$set(_vm.matcher, \"attr\", $$v)},expression:\"matcher.attr\"}})],1),_c('v-col',{attrs:{\"cols\":\"2\"}},[_c('v-select',{attrs:{\"items\":_vm.opItems,\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.matcher.op),callback:function ($$v) {_vm.$set(_vm.matcher, \"op\", $$v)},expression:\"matcher.op\"}})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Attribute value\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.value,\"hide-details\":\"auto\"},model:{value:(_vm.matcher.value),callback:function ($$v) {_vm.$set(_vm.matcher, \"value\", $$v)},expression:\"matcher.value\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { AttrMatcher, AttrMatcherOp } from '@/use/attr-matcher'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'SamplingRuleMatcherRow',\n\n props: {\n matcher: {\n type: Object as PropType,\n required: true,\n },\n required: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const opItems = [\n { text: '==', value: AttrMatcherOp.Equal },\n { text: '!=', value: AttrMatcherOp.NotEqual },\n ]\n const rules = computed(() => {\n const rules: Record = {\n attr: [],\n value: [],\n }\n if (props.required) {\n rules.attr.push(requiredRule)\n rules.value.push(requiredRule)\n }\n return rules\n })\n\n return { opItems, rules }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AttrMatcher.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AttrMatcher.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AttrMatcher.vue?vue&type=template&id=9bebeb58&scoped=true&\"\nimport script from \"./AttrMatcher.vue?vue&type=script&lang=ts&\"\nexport * from \"./AttrMatcher.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9bebeb58\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, watch, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannels } from '@/alerting/use-notif-channels'\nimport { useMonitorManager } from '@/alerting/use-monitors'\nimport { emptyAttrMatcher } from '@/use/attr-matcher'\n\n// Components\nimport AttrMatcher from '@/components/AttrMatcher.vue'\n\n// Misc\nimport { ErrorMonitor } from '@/alerting/types'\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'MonitorErrorForm',\n components: { AttrMatcher },\n\n props: {\n monitor: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const channels = useNotifChannels(() => {\n return {}\n })\n\n const form = shallowRef()\n const isValid = shallowRef(false)\n const rules = {\n name: [requiredRule],\n }\n\n const monitorMan = useMonitorManager()\n\n watch(\n () => props.monitor.params.matchers.length,\n (length) => {\n if (!length) {\n props.monitor.params.matchers = [emptyAttrMatcher()]\n }\n },\n { immediate: true },\n )\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n const data = {\n ...props.monitor,\n params: {\n ...props.monitor.params,\n matchers: props.monitor.params.matchers.filter((m) => m.attr && m.value),\n },\n }\n\n if (props.monitor.id) {\n return monitorMan.updateErrorMonitor(data)\n }\n return monitorMan.createErrorMonitor(data)\n }\n\n function addMatcher() {\n props.monitor.params.matchers.push(emptyAttrMatcher())\n }\n\n function removeMatcher(i: number) {\n props.monitor.params.matchers.splice(i, 1)\n }\n\n return {\n channels,\n\n form,\n isValid,\n rules,\n submit,\n\n monitorMan,\n addMatcher,\n removeMatcher,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorErrorForm.vue?vue&type=template&id=7dfeb210&scoped=true&\"\nimport script from \"./MonitorErrorForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorErrorForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7dfeb210\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, reactive } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRouterOnly, useSyncQueryParams } from '@/use/router'\nimport { useDateRange } from '@/use/date-range'\nimport { useProject } from '@/org/use-projects'\nimport { useErrorMonitor, useMonitorManager } from '@/alerting/use-monitors'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport MonitorErrorForm from '@/alerting/MonitorErrorForm.vue'\nimport MonitorStateAvatar from '@/alerting/MonitorStateAvatar.vue'\n\n// Misc\nimport { MonitorState } from '@/alerting/types'\n\nexport default defineComponent({\n name: 'MonitorErrorShow',\n components: {\n DateRangePicker,\n MonitorErrorForm,\n MonitorStateAvatar,\n },\n\n setup() {\n useTitle('Metrics Monitor')\n const router = useRouterOnly()\n const dateRange = useDateRange()\n const project = useProject()\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Monitors',\n to: {\n name: 'MonitorList',\n },\n exact: true,\n })\n\n bs.push({ text: 'Edit error monitor' })\n\n return bs\n })\n\n const monitor = useErrorMonitor()\n const monitorMan = useMonitorManager()\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n dateRange.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...dateRange.queryParams(),\n }\n },\n })\n\n function onSave() {\n redirectToMonitors()\n }\n function onCancel() {\n redirectToMonitors()\n }\n function redirectToMonitors() {\n router.push({ name: 'MonitorList' })\n }\n\n function activateMonitor() {\n if (!monitor.data) {\n return\n }\n monitorMan.activate(monitor.data).then(() => {\n monitor.reload()\n })\n }\n\n function pauseMonitor() {\n if (!monitor.data) {\n return\n }\n monitorMan.pause(monitor.data).then(() => {\n monitor.reload()\n })\n }\n\n return {\n MonitorState,\n\n dateRange,\n breadcrumbs,\n\n monitor,\n\n onSave,\n onCancel,\n\n monitorMan,\n activateMonitor,\n pauseMonitor,\n reactive,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorShow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorShow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorErrorShow.vue?vue&type=template&id=51785dc4&scoped=true&\"\nimport script from \"./MonitorErrorShow.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorErrorShow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"51785dc4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-lg\"},[_c('PageToolbar',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}}),_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}})],1),_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[_c('v-row',[_c('v-col',[_c('MonitorErrorForm',{attrs:{\"date-range\":_vm.dateRange,\"monitor\":_vm.monitor,\"column-map\":_vm.columnMap},on:{\"click:save\":_vm.onSave,\"click:cancel\":_vm.onCancel}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, ref, reactive, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRouterOnly } from '@/use/router'\nimport { useDateRange } from '@/use/date-range'\nimport { useProject } from '@/org/use-projects'\nimport { createEmptyErrorMonitor } from '@/alerting/use-monitors'\nimport { MetricColumn } from '@/metrics/types'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport MonitorErrorForm from '@/alerting/MonitorErrorForm.vue'\n\nexport default defineComponent({\n name: 'MonitorErrorNew',\n components: {\n DateRangePicker,\n MonitorErrorForm,\n },\n\n setup(_props, ctx) {\n useTitle('New Metrics Monitor')\n const router = useRouterOnly()\n const dateRange = useDateRange()\n const project = useProject()\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Monitors',\n to: {\n name: 'MonitorList',\n },\n exact: true,\n })\n\n bs.push({ text: 'New error monitor' })\n\n return bs\n })\n\n const monitor = reactive(createEmptyErrorMonitor())\n const columnMap = ref>({})\n\n function onSave() {\n redirectToMonitors()\n }\n function onCancel() {\n redirectToMonitors()\n }\n function redirectToMonitors() {\n router.push({ name: 'MonitorList' })\n }\n\n return {\n dateRange,\n breadcrumbs,\n\n monitor,\n columnMap,\n\n onSave,\n onCancel,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorNew.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MonitorErrorNew.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MonitorErrorNew.vue?vue&type=template&id=7d982731&scoped=true&\"\nimport script from \"./MonitorErrorNew.vue?vue&type=script&lang=ts&\"\nexport * from \"./MonitorErrorNew.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7d982731\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-md\"},[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":\"\"}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Notification Channels\")]),_c('v-spacer'),_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('NotifChannelNewMenu',{on:{\"click:new\":function($event){_vm.activeChannel = $event\n _vm.dialog = true}}})],1)],1),_c('v-row',[_c('v-col',[_c('v-sheet',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('div',{staticClass:\"pa-4\"},[_c('NotifChannelsTable',{attrs:{\"loading\":_vm.channels.loading,\"channels\":_vm.channels.items},on:{\"change\":_vm.channels.reload}})],1)])],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"700\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.activeChannel)?_c('v-card',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"New \"+_vm._s(_vm.activeChannel.type)+\" notification channel\")]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),(_vm.activeChannel.type === _vm.NotifChannelType.Slack)?_c('NotifChannelSlackForm',{attrs:{\"channel\":_vm.activeChannel},on:{\"click:save\":_vm.channels.reload,\"click:close\":function($event){_vm.dialog = false}}}):(_vm.activeChannel.type === _vm.NotifChannelType.Telegram)?_c('NotifChannelTelegramForm',{attrs:{\"channel\":_vm.activeChannel},on:{\"click:save\":_vm.channels.reload,\"click:close\":function($event){_vm.dialog = false}}}):(_vm.activeChannel.type === _vm.NotifChannelType.Alertmanager)?_c('NotifChannelAlertmanagerForm',{attrs:{\"channel\":_vm.activeChannel},on:{\"click:save\":_vm.channels.reload,\"click:close\":function($event){_vm.dialog = false}}}):(_vm.activeChannel.type === _vm.NotifChannelType.Webhook)?_c('NotifChannelWebhookForm',{attrs:{\"channel\":_vm.activeChannel},on:{\"click:save\":_vm.channels.reload,\"click:close\":function($event){_vm.dialog = false}}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"dark\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Create channel \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){_vm.$emit('click:new', _vm.reactive(_vm.emptySlackNotifChannel()))}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-list-item-title',[_vm._v(\"Slack\")])],1),_c('v-list-item',{on:{\"click\":function($event){_vm.$emit('click:new', _vm.reactive(_vm.emptyTelegramNotifChannel()))}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-list-item-title',[_vm._v(\"Telegram\")])],1),_c('v-list-item',{on:{\"click\":function($event){_vm.$emit('click:new', _vm.reactive(_vm.emptyWebhookNotifChannel()))}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-list-item-title',[_vm._v(\"WebHook\")])],1),_c('v-list-item',{on:{\"click\":function($event){_vm.$emit('click:new', _vm.reactive(_vm.emptyAlertmanagerNotifChannel()))}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-list-item-title',[_vm._v(\"AlertManager\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, reactive } from 'vue'\n\n// Composables\nimport {\n emptySlackNotifChannel,\n emptyTelegramNotifChannel,\n emptyWebhookNotifChannel,\n emptyAlertmanagerNotifChannel,\n} from '@/alerting/use-notif-channels'\n\nexport default defineComponent({\n name: 'NotifChannelNewMenu',\n\n setup() {\n const menu = shallowRef(false)\n return {\n menu,\n emptySlackNotifChannel,\n emptyTelegramNotifChannel,\n emptyWebhookNotifChannel,\n emptyAlertmanagerNotifChannel,\n reactive,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelNewMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelNewMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelNewMenu.vue?vue&type=template&id=0a4850ea&scoped=true&\"\nimport script from \"./NotifChannelNewMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelNewMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0a4850ea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1 text--primary\"},[_c('p',[_vm._v(\" To receive notifications via Slack, you need to create an \"),_c('a',{attrs:{\"href\":\"https://api.slack.com/messaging/webhooks\",\"target\":\"_blank\"}},[_vm._v(\"incoming webhook\")]),_vm._v(\" on Slack and use the created webhook URL to configure Uptrace. \")])])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-text-field',{attrs:{\"label\":\"Channel name\",\"hint\":\"Short name that clearly describes the channel\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.rules.name,\"autofocus\":\"\"},model:{value:(_vm.channel.name),callback:function ($$v) {_vm.$set(_vm.channel, \"name\", $$v)},expression:\"channel.name\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Slack webhook URL\",\"placeholder\":\"https://hooks.slack.com/services/********\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.webhookUrl},model:{value:(_vm.channel.params.webhookUrl),callback:function ($$v) {_vm.$set(_vm.channel.params, \"webhookUrl\", $$v)},expression:\"channel.params.webhookUrl\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.channel.id ? 'Save' : 'Create'))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannelManager, SlackNotifChannel } from '@/alerting/use-notif-channels'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'NotifChannelSlackForm',\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const man = useNotifChannelManager()\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const rules = {\n name: [requiredRule],\n webhookUrl: [requiredRule],\n }\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n ctx.emit('click:close')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n if (props.channel.id) {\n return man.slackUpdate(props.channel)\n }\n return man.slackCreate(props.channel)\n }\n\n return {\n man,\n\n form,\n isValid,\n rules,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelSlackForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelSlackForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelSlackForm.vue?vue&type=template&id=14a6e616&scoped=true&\"\nimport script from \"./NotifChannelSlackForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelSlackForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14a6e616\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('p',[_vm._v(\"To receive alerts via Telegram:\")]),_c('ol',{staticClass:\"mb-4\"},[_c('li',{staticClass:\"mb-1\"},[_c('a',{attrs:{\"href\":\"https://sendpulse.com/knowledge-base/chatbot/telegram/create-telegram-chatbot\",\"target\":\"_blank\"}},[_vm._v(\"Create\")]),_vm._v(\" a new Telegram bot and configure \"),_c('code',[_vm._v(\"telegram.bot_token\")]),_vm._v(\" in the config. \")]),_c('li',{staticClass:\"mb-1\"},[_vm._v(\" Add the created bot to the Telegram channel where you want to receive notifications. \")]),_c('li',[_vm._v(\" Get the channel's \"),_c('code',[_vm._v(\"chat.id\")]),_vm._v(\" by adding \"),_c('a',{attrs:{\"href\":\"https://t.me/username_to_id_bot\",\"target\":\"_blank\"}},[_vm._v(\"@username_to_id_bot\")]),_vm._v(\" to the channel. \")])]),_c('p',[_vm._v(\"Note that the chat id is not static and changes whenever you change permissions.\")])])],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{staticStyle:{\"max-width\":\"400px\"},attrs:{\"label\":\"Notification channel name\",\"hint\":\"Concise name that clearly describes the channel\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.rules.name,\"autofocus\":\"\"},model:{value:(_vm.channel.name),callback:function ($$v) {_vm.$set(_vm.channel, \"name\", $$v)},expression:\"channel.name\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{staticStyle:{\"max-width\":\"400px\"},attrs:{\"type\":\"number\",\"label\":\"Telegram chat ID\",\"placeholder\":\"-1091960820965\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.chatId},model:{value:(_vm.channel.params.chatId),callback:function ($$v) {_vm.$set(_vm.channel.params, \"chatId\", _vm._n($$v))},expression:\"channel.params.chatId\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.channel.id ? 'Save' : 'Create'))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannelManager, TelegramNotifChannel } from '@/alerting/use-notif-channels'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'NotifChannelTelegramForm',\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const man = useNotifChannelManager()\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const rules = {\n name: [requiredRule],\n chatId: [requiredRule],\n }\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n ctx.emit('click:close')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n if (props.channel.id) {\n return man.telegramUpdate(props.channel)\n }\n return man.telegramCreate(props.channel)\n }\n\n return {\n man,\n\n form,\n isValid,\n rules,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelTelegramForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelTelegramForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelTelegramForm.vue?vue&type=template&id=dd45255e&scoped=true&\"\nimport script from \"./NotifChannelTelegramForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelTelegramForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dd45255e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1 text--primary\"},[_vm._v(\" You can use webhooks to receive alerts in the JSON format via HTTP POST requests. The endpoint must respond with \"),_c('code',[_vm._v(\"2xx\")]),_vm._v(\" status code or the request will be retried. \")])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-text-field',{attrs:{\"label\":\"Channel name\",\"hint\":\"Short name that clearly describes the channel\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.rules.name,\"autofocus\":\"\"},model:{value:(_vm.channel.name),callback:function ($$v) {_vm.$set(_vm.channel, \"name\", $$v)},expression:\"channel.name\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Webhook URL\",\"placeholder\":\"https://mydomain.com/uptrace-webhook\",\"hint\":\"Publicly accessible HTTP endpoint\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.url},model:{value:(_vm.channel.params.url),callback:function ($$v) {_vm.$set(_vm.channel.params, \"url\", $$v)},expression:\"channel.params.url\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-textarea',{attrs:{\"label\":\"Optional JSON payload\",\"placeholder\":\"{ \\\"custom_key\\\": \\\"custom_value\\\" }\",\"hint\":\"Custom user payload. Must be a valid JSON, e.g. strings must be quoted.\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.payload},model:{value:(_vm.channel.params.payload),callback:function ($$v) {_vm.$set(_vm.channel.params, \"payload\", $$v)},expression:\"channel.params.payload\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.channel.id ? 'Save' : 'Create'))])],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',[_c('v-col',[_c('p',[_vm._v(\"An example of the JSON message posted by Uptrace:\")]),_c('PrismCode',{staticClass:\"mb-4\",attrs:{\"code\":_vm.alertExample,\"language\":\"json\"}}),_c('p',[_vm._v(\"The JSON message contains the following fields:\")]),_c('v-simple-table',[_c('tbody',[_c('tr',[_c('th',[_vm._v(\"id\")]),_c('td',[_vm._v(\" A unique message/notification id. Each alert may receive multiple notifications for different states and events, for example, when alert is opened and closed. \")])]),_c('tr',[_c('th',[_vm._v(\"eventName\")]),_c('td',[_vm._v(\" Possible values: \"),_c('code',[_vm._v(\"created\")]),_vm._v(\", \"),_c('code',[_vm._v(\"state-changed\")]),_vm._v(\", \"),_c('code',[_vm._v(\"recurring\")]),_vm._v(\" (for recurring errors). \")])]),_c('tr',[_c('th',[_vm._v(\"payload\")]),_c('td',[_vm._v(\"Payload provided by the user.\")])]),_c('tr',[_c('th',[_vm._v(\"createdAt\")]),_c('td',[_vm._v(\"Current time in the RFC3339 nano format.\")])]),_c('tr',[_c('th',[_vm._v(\"alert.id\")]),_c('td',[_vm._v(\"Alert id.\")])]),_c('tr',[_c('th',[_vm._v(\"alert.url\")]),_c('td',[_vm._v(\"An absolute URL to view the alert in Uptrace UI.\")])]),_c('tr',[_c('th',[_vm._v(\"alert.name\")]),_c('td',[_vm._v(\"Alert name.\")])]),_c('tr',[_c('th',[_vm._v(\"alert.type\")]),_c('td',[_vm._v(\" Possible values: \"),_c('code',[_vm._v(\"metric\")]),_vm._v(\" for metric monitors, \"),_c('code',[_vm._v(\"error\")]),_vm._v(\" for error monitors. \")])]),_c('tr',[_c('th',[_vm._v(\"alert.state\")]),_c('td',[_vm._v(\"Possible values: \"),_c('code',[_vm._v(\"open\")]),_vm._v(\", \"),_c('code',[_vm._v(\"closed\")]),_vm._v(\".\")])]),_c('tr',[_c('th',[_vm._v(\"alert.createdAt\")]),_c('td',[_vm._v(\"The time when the alert was created.\")])])])])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannelManager, WebhookNotifChannel } from '@/alerting/use-notif-channels'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'NotifChannelWebhookForm',\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const man = useNotifChannelManager()\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const rules = {\n name: [requiredRule],\n url: [requiredRule],\n payload: [\n (v: any) => {\n if (!v) {\n return true\n }\n try {\n JSON.parse(v)\n } catch (err) {\n return String(err)\n }\n return true\n },\n ],\n }\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n ctx.emit('click:close')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n if (props.channel.id) {\n return man.webhookUpdate(props.channel)\n }\n return man.webhookCreate(props.channel)\n }\n\n return {\n man,\n\n form,\n isValid,\n rules,\n submit,\n\n alertExample,\n }\n },\n})\n\nconst alertExample = `{\n \"id\": \"1676471814931265794\",\n \"eventName\": \"created\",\n \"payload\": { \"custom_key\": \"custom_value\" },\n \"createdAt\": \"2023-02-15T14:36:54.931265914Z\",\n\n \"alert\": {\n \"id\": \"123\",\n \"url\": \"https://app.uptrace.dev/alerting/1/alerts/123\",\n \"name\": \"Test message\",\n \"type\": \"metric\",\n \"state\": \"open\",\n \"createdAt\": \"2023-02-15T14:36:54.931265914Z\"\n }\n}\n`.trim()\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelWebhookForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelWebhookForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelWebhookForm.vue?vue&type=template&id=da46dbf2&scoped=true&\"\nimport script from \"./NotifChannelWebhookForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelWebhookForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"da46dbf2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1 text--primary\"},[_vm._v(\" This notification channel allows to receive Uptrace alerts using AlertManager JSON v2 API. You can then use AlertManager to manage alerts and receive notifications. \")])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-text-field',{attrs:{\"label\":\"Channel name\",\"hint\":\"Short name that clearly describes the channel\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.rules.name,\"autofocus\":\"\"},model:{value:(_vm.channel.name),callback:function ($$v) {_vm.$set(_vm.channel, \"name\", $$v)},expression:\"channel.name\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"AlertManager URL\",\"placeholder\":\"https://alertmanager-host.com:9093/api/v2/alerts\",\"hint\":\"Publicly accessible AlertManager endpoint\",\"persistent-hint\":\"\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.url},model:{value:(_vm.channel.params.url),callback:function ($$v) {_vm.$set(_vm.channel.params, \"url\", $$v)},expression:\"channel.params.url\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.channel.id ? 'Save' : 'Create'))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useNotifChannelManager, WebhookNotifChannel } from '@/alerting/use-notif-channels'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'NotifChannelWebhookForm',\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const man = useNotifChannelManager()\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const rules = {\n name: [requiredRule],\n url: [requiredRule],\n }\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n ctx.emit('click:close')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n if (props.channel.id) {\n return man.webhookUpdate(props.channel)\n }\n return man.webhookCreate(props.channel)\n }\n\n return {\n man,\n\n form,\n isValid,\n rules,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelAlertmanagerForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelAlertmanagerForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelAlertmanagerForm.vue?vue&type=template&id=3cc4b325&scoped=true&\"\nimport script from \"./NotifChannelAlertmanagerForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelAlertmanagerForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cc4b325\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"headers\":_vm.headers,\"loading\":_vm.loading,\"items\":_vm.channels,\"hide-default-footer\":_vm.channels.length <= 10,\"no-data-text\":\"There are no notification channels\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('NotifChannelsTableRow',{attrs:{\"channel\":item},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){_vm.$router.push(_vm.channelRoute(_vm.channel))}}},[_c('td',[_vm._v(_vm._s(_vm.channel.name))]),_c('td',[_vm._v(_vm._s(_vm.channel.type))]),_c('td',{staticClass:\"text-center\"},[_c('NotifChannelStateAvatar',{staticClass:\"mr-2\",attrs:{\"state\":_vm.channel.state}})],1),_c('td',{staticClass:\"text-center\"},[(_vm.channel.state === _vm.NotifChannelState.Delivering)?_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"icon\":\"\",\"title\":\"Pause channel\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.pauseChannel(_vm.channel)}}},[_c('v-icon',[_vm._v(\"mdi-pause\")])],1):_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"icon\":\"\",\"title\":\"Unpause channel\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.unpauseChannel(_vm.channel)}}},[_c('v-icon',[_vm._v(\"mdi-play\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"icon\":\"\",\"title\":\"Edit channel\",\"to\":_vm.channelRoute(_vm.channel)}},[_c('v-icon',[_vm._v(\"mdi-pencil-outline\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"icon\":\"\",\"title\":\"Delete channel\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteChannel(_vm.channel)}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{staticClass:\"text-no-wrap\"},[_c('v-avatar',_vm._b({staticClass:\"mr-2\",attrs:{\"size\":\"12\"}},'v-avatar',_vm.attrs,false)),_c('span',[_vm._v(_vm._s(_vm.state))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { NotifChannelState } from '@/alerting/use-notif-channels'\n\nexport default defineComponent({\n name: 'NotifChannelStateAvatar',\n\n props: {\n state: {\n type: String as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const attrs = computed(() => {\n switch (props.state) {\n case NotifChannelState.Delivering:\n return { color: 'success' }\n case NotifChannelState.Disabled:\n return { color: 'error', dark: true }\n default:\n return { color: 'grey' }\n }\n })\n\n return { attrs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelStateAvatar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelStateAvatar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelStateAvatar.vue?vue&type=template&id=350716ec&scoped=true&\"\nimport script from \"./NotifChannelStateAvatar.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelStateAvatar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NotifChannelStateAvatar.vue?vue&type=style&index=0&id=350716ec&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"350716ec\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\nimport {\n useNotifChannelManager,\n NotifChannel,\n NotifChannelType,\n NotifChannelState,\n} from '@/alerting/use-notif-channels'\n\n// Components\n\nimport NotifChannelStateAvatar from '@/alerting/NotifChannelStateAvatar.vue'\n\nexport default defineComponent({\n name: 'NotifChannelsTable',\n components: { NotifChannelStateAvatar },\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(_props, ctx) {\n const confirm = useConfirm()\n const man = useNotifChannelManager()\n\n function pauseChannel(channel: NotifChannel) {\n man.pause(channel.id).then(() => {\n ctx.emit('change')\n })\n }\n\n function unpauseChannel(channel: NotifChannel) {\n man.unpause(channel.id).then(() => {\n ctx.emit('change')\n })\n }\n\n function deleteChannel(channel: NotifChannel) {\n confirm\n .open('Delete channel', `Do you really want to delete \"${channel.name}\" channel?`)\n .then(\n () => {\n man.delete(channel.id).then(() => {\n ctx.emit('change')\n })\n },\n () => {},\n )\n }\n\n function channelRoute(channel: NotifChannel) {\n switch (channel.type) {\n case NotifChannelType.Slack:\n return { name: 'NotifChannelShowSlack', params: { channelId: channel.id } }\n case NotifChannelType.Telegram:\n return { name: 'NotifChannelShowTelegram', params: { channelId: channel.id } }\n case NotifChannelType.Webhook:\n return { name: 'NotifChannelShowWebhook', params: { channelId: channel.id } }\n case NotifChannelType.Alertmanager:\n return { name: 'NotifChannelShowAlertmanager', params: { channelId: channel.id } }\n }\n }\n\n return {\n NotifChannelState,\n\n man,\n pauseChannel,\n unpauseChannel,\n deleteChannel,\n channelRoute,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelsTableRow.vue?vue&type=template&id=06db9350&scoped=true&\"\nimport script from \"./NotifChannelsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06db9350\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { NotifChannel } from '@/alerting/use-notif-channels'\n\nimport NotifChannelsTableRow from '@/alerting/NotifChannelsTableRow.vue'\n\nexport default defineComponent({\n name: 'NotifChannelsTable',\n components: { NotifChannelsTableRow },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n channels: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup() {\n const headers = computed(() => {\n const headers = []\n headers.push({ text: 'Name', value: 'name', sortable: true, align: 'start' })\n headers.push({ text: 'Type', value: 'type', sortable: true, align: 'start' })\n headers.push({ text: 'State', value: 'state', sortable: true, align: 'center' })\n headers.push({ text: 'Actions', value: 'actions', sortable: false, align: 'center' })\n return headers\n })\n\n return { headers }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelsTable.vue?vue&type=template&id=75438b47&scoped=true&\"\nimport script from \"./NotifChannelsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75438b47\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { injectForceReload } from '@/use/force-reload'\nimport { useNotifChannels, NotifChannel, NotifChannelType } from '@/alerting/use-notif-channels'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport NotifChannelNewMenu from '@/alerting/NotifChannelNewMenu.vue'\nimport NotifChannelSlackForm from '@/alerting/NotifChannelSlackForm.vue'\nimport NotifChannelTelegramForm from '@/alerting/NotifChannelTelegramForm.vue'\nimport NotifChannelWebhookForm from '@/alerting/NotifChannelWebhookForm.vue'\nimport NotifChannelAlertmanagerForm from '@/alerting/NotifChannelAlertmanagerForm.vue'\nimport NotifChannelsTable from '@/alerting/NotifChannelsTable.vue'\n\nexport default defineComponent({\n name: 'ChannelList',\n components: {\n ForceReloadBtn,\n NotifChannelNewMenu,\n NotifChannelSlackForm,\n NotifChannelTelegramForm,\n NotifChannelWebhookForm,\n NotifChannelAlertmanagerForm,\n NotifChannelsTable,\n },\n\n setup() {\n useTitle('Notification Channels')\n const forceReload = injectForceReload()\n\n const channels = useNotifChannels(() => {\n return forceReload.params\n })\n\n const internalDialog = shallowRef(false)\n const activeChannel = shallowRef()\n const dialog = computed({\n get(): boolean {\n return Boolean(internalDialog.value && activeChannel.value)\n },\n set(dialog: boolean) {\n internalDialog.value = dialog\n if (!dialog) {\n activeChannel.value = undefined\n }\n },\n })\n\n return {\n NotifChannelType,\n\n channels,\n\n dialog,\n activeChannel,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChannelList.vue?vue&type=template&id=597eaf88&scoped=true&\"\nimport script from \"./ChannelList.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChannelList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"597eaf88\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.channel.data)?_c('v-skeleton-loader',{attrs:{\"width\":\"600\",\"type\":\"card\"}}):_c('v-card',{attrs:{\"width\":\"600\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('div',{staticClass:\"pa-4\"},[_c('NotifChannelSlackForm',{attrs:{\"channel\":_vm.channel.data},on:{\"click:close\":function($event){return _vm.$router.push({ name: 'NotifChannelList' })}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useSlackNotifChannel } from '@/alerting/use-notif-channels'\n\n// Components\nimport NotifChannelSlackForm from '@/alerting/NotifChannelSlackForm.vue'\n\nexport default defineComponent({\n name: 'ChannelShowSlack',\n components: { NotifChannelSlackForm },\n\n setup() {\n useTitle('Slack Channel')\n const route = useRoute()\n const project = useProject()\n\n const channel = useSlackNotifChannel(() => {\n const { projectId, channelId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/notification-channels/slack/${channelId}`,\n }\n })\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Channels',\n to: {\n name: 'NotifChannelList',\n },\n exact: true,\n })\n\n bs.push({ text: 'Slack' })\n\n return bs\n })\n\n return { channel, breadcrumbs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowSlack.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowSlack.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChannelShowSlack.vue?vue&type=template&id=59821a32&scoped=true&\"\nimport script from \"./ChannelShowSlack.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChannelShowSlack.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59821a32\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.channel.data)?_c('v-skeleton-loader',{attrs:{\"width\":\"600\",\"type\":\"card\"}}):_c('v-card',{attrs:{\"width\":\"600\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('div',{staticClass:\"pa-4\"},[_c('NotifChannelTelegramForm',{attrs:{\"channel\":_vm.channel.data},on:{\"click:close\":function($event){return _vm.$router.push({ name: 'NotifChannelList' })}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useTelegramNotifChannel } from '@/alerting/use-notif-channels'\n\n// Components\nimport NotifChannelTelegramForm from '@/alerting/NotifChannelTelegramForm.vue'\n\nexport default defineComponent({\n name: 'ChannelShowTelegram',\n components: { NotifChannelTelegramForm },\n\n setup() {\n useTitle('Telegram Channel')\n const route = useRoute()\n const project = useProject()\n\n const channel = useTelegramNotifChannel(() => {\n const { projectId, channelId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/notification-channels/telegram/${channelId}`,\n }\n })\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Channels',\n to: {\n name: 'NotifChannelList',\n },\n exact: true,\n })\n\n bs.push({ text: 'Telegram' })\n\n return bs\n })\n\n return { channel, breadcrumbs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowTelegram.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowTelegram.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChannelShowTelegram.vue?vue&type=template&id=6249865f&scoped=true&\"\nimport script from \"./ChannelShowTelegram.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChannelShowTelegram.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6249865f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.channel.data)?_c('v-skeleton-loader',{attrs:{\"width\":\"600\",\"type\":\"card\"}}):_c('v-card',{attrs:{\"width\":\"600\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('div',{staticClass:\"pa-4\"},[_c('NotifChannelWebhookForm',{attrs:{\"channel\":_vm.channel.data},on:{\"click:close\":function($event){return _vm.$router.push({ name: 'NotifChannelList' })}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useWebhookNotifChannel } from '@/alerting/use-notif-channels'\n\n// Components\nimport NotifChannelWebhookForm from '@/alerting/NotifChannelWebhookForm.vue'\n\nexport default defineComponent({\n name: 'ChannelShowWebhook',\n components: { NotifChannelWebhookForm },\n\n setup() {\n useTitle('Webhook Channel')\n const route = useRoute()\n const project = useProject()\n\n const channel = useWebhookNotifChannel(() => {\n const { projectId, channelId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/notification-channels/webhook/${channelId}`,\n }\n })\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Channels',\n to: {\n name: 'NotifChannelList',\n },\n exact: true,\n })\n\n bs.push({ text: 'Webhook' })\n\n return bs\n })\n\n return { channel, breadcrumbs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowWebhook.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowWebhook.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChannelShowWebhook.vue?vue&type=template&id=22bab7c6&scoped=true&\"\nimport script from \"./ChannelShowWebhook.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChannelShowWebhook.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22bab7c6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.channel.data)?_c('v-skeleton-loader',{attrs:{\"width\":\"600\",\"type\":\"card\"}}):_c('v-card',{attrs:{\"width\":\"600\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('div',{staticClass:\"pa-4\"},[_c('NotifChannelAlertmanagerForm',{attrs:{\"channel\":_vm.channel.data},on:{\"click:close\":function($event){return _vm.$router.push({ name: 'NotifChannelList' })}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useAlertmanagerNotifChannel } from '@/alerting/use-notif-channels'\n\n// Components\nimport NotifChannelAlertmanagerForm from '@/alerting/NotifChannelAlertmanagerForm.vue'\n\nexport default defineComponent({\n name: 'ChannelShowChannel',\n components: { NotifChannelAlertmanagerForm },\n\n setup() {\n useTitle('AlertManager Channel')\n const route = useRoute()\n const project = useProject()\n\n const channel = useAlertmanagerNotifChannel(() => {\n const { projectId, channelId } = route.value.params\n return {\n url: `/internal/v1/projects/${projectId}/notification-channels/webhook/${channelId}`,\n }\n })\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Channels',\n to: {\n name: 'NotifChannelList',\n },\n exact: true,\n })\n\n bs.push({ text: 'AlertManager' })\n\n return bs\n })\n\n return { channel, breadcrumbs }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowAlertmanager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChannelShowAlertmanager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChannelShowAlertmanager.vue?vue&type=template&id=39db638a&scoped=true&\"\nimport script from \"./ChannelShowAlertmanager.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChannelShowAlertmanager.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39db638a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{staticStyle:{\"height\":\"calc(100vh - 128px)\"},attrs:{\"align\":\"center\"}},[_c('v-col',[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"max-width\":\"600\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Email notifications\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"pa-4\"},[(!_vm.email.channel)?_c('v-skeleton-loader',{attrs:{\"type\":\"card\"}}):_c('NotifChannelEmailForm',{attrs:{\"channel\":_vm.reactive(_vm.email.channel)}})],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1\"},[_c('p',[_vm._v(\" These settings allow to configure personal email notifications for the project. They don't impact other users and projects. \")])])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"filled\":\"\",\"dense\":\"\",\"disabled\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.user.current.email),callback:function ($$v) {_vm.$set(_vm.user.current, \"email\", $$v)},expression:\"user.current.email\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-checkbox',{attrs:{\"label\":\"Notify on metric alerts via email\",\"hide-details\":\"auto\"},model:{value:(_vm.channel.notifyOnMetrics),callback:function ($$v) {_vm.$set(_vm.channel, \"notifyOnMetrics\", $$v)},expression:\"channel.notifyOnMetrics\"}}),_c('v-checkbox',{attrs:{\"label\":\"Notify on new errors via email\",\"hide-details\":\"auto\"},model:{value:(_vm.channel.notifyOnNewErrors),callback:function ($$v) {_vm.$set(_vm.channel, \"notifyOnNewErrors\", $$v)},expression:\"channel.notifyOnNewErrors\"}}),_c('v-checkbox',{attrs:{\"label\":\"Notify on recurring errors via email\",\"hide-details\":\"auto\"},model:{value:(_vm.channel.notifyOnRecurringErrors),callback:function ($$v) {_vm.$set(_vm.channel, \"notifyOnRecurringErrors\", $$v)},expression:\"channel.notifyOnRecurringErrors\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"loading\":_vm.man.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(\"Save\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useSnackbar } from '@/use/snackbar'\nimport { useUser } from '@/org/use-users'\nimport { useNotifChannelManager, EmailNotifChannel } from '@/alerting/use-notif-channels'\n\nexport default defineComponent({\n name: 'NotifChannelEmailForm',\n\n props: {\n channel: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const snackbar = useSnackbar()\n const user = useUser()\n const man = useNotifChannelManager()\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n\n function submit() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n man.emailUpdate(props.channel).then(() => {\n snackbar.notifySuccess(`Email notification settings have been updated successfully`)\n })\n }\n\n return {\n user,\n man,\n\n form,\n isValid,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelEmailForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NotifChannelEmailForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NotifChannelEmailForm.vue?vue&type=template&id=2a7303f6&scoped=true&\"\nimport script from \"./NotifChannelEmailForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./NotifChannelEmailForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2a7303f6\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, reactive } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useEmailChannel } from '@/alerting/use-notif-channels'\n\n// Components\nimport NotifChannelEmailForm from '@/alerting/NotifChannelEmailForm.vue'\n\nexport default defineComponent({\n name: 'EmailNotifications',\n components: { NotifChannelEmailForm },\n\n setup() {\n useTitle('Email notifications')\n const email = useEmailChannel()\n\n return { email, reactive }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailNotifications.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailNotifications.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmailNotifications.vue?vue&type=template&id=6defed33&scoped=true&\"\nimport script from \"./EmailNotifications.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmailNotifications.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6defed33\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-md\"},[_c('v-container',{staticClass:\"py-1\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[_vm._t(\"breadcrumbs\")],2),_c('PageToolbar',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-toolbar-title',[_vm._v(\"Annotations\")]),_c('v-spacer'),_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})],1),_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"color\":\"primary\",\"dark\":\"\"},on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"Create annotation\")])],1)],1)],1),_c('v-row',[_c('v-col',[_c('v-sheet',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('div',{staticClass:\"pa-4\"},[(!_vm.annotations.status.hasData())?_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"height\":\"600px\"}}):[_c('AnnotationsTable',{attrs:{\"loading\":_vm.annotations.loading,\"order\":_vm.order,\"annotations\":_vm.annotations.items},on:{\"change\":function($event){return _vm.annotations.reload()}}})]],2)]),_c('XPagination',{attrs:{\"pager\":_vm.annotations.pager}})],1)],1)],1),(_vm.dialog)?_c('v-dialog',{attrs:{\"max-width\":\"700\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"New Annotation\")]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('AnnotationForm',{attrs:{\"annotation\":_vm.emptyAnnotation()},on:{\"click:save\":_vm.annotations.reload,\"click:close\":function($event){_vm.dialog = false}}})],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"headers\":_vm.headers,\"loading\":_vm.loading,\"items\":_vm.annotations,\"hide-default-footer\":\"\",\"no-data-text\":\"There are no annotations\",\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc,\"must-sort\":\"\"},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":[function($event){return _vm.$set(_vm.order, \"column\", $event)},function($event){_vm.$nextTick(() => (_vm.order.desc = true))}],\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('AnnotationsTableRow',{attrs:{\"annotation\":item},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('td',[_c('v-avatar',{staticClass:\"mr-2\",attrs:{\"size\":\"12\",\"color\":_vm.annotation.color}}),_vm._v(\" \"+_vm._s(_vm.annotation.name)+\" \")],1),_c('td',[_c('AnnotationAttrs',{attrs:{\"attrs\":_vm.annotation.attrs,\"small\":\"\"}})],1),_c('td',{staticClass:\"text-no-wrap text-center\"},[_c('v-btn',{attrs:{\"to\":{ name: 'AnnotationShow', params: { annotationId: _vm.annotation.id } },\"icon\":\"\",\"title\":\"Edit annotation\"}},[_c('v-icon',[_vm._v(\"mdi-pencil-outline\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.annotationMan.pending,\"icon\":\"\",\"title\":\"Delete annotation\"},on:{\"click\":_vm.deleteAnnotation}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1)],1),_c('td',{staticClass:\"text-right text-no-wrap\"},[_c('DateValue',{attrs:{\"value\":_vm.annotation.createdAt,\"format\":\"relative\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\nimport { useAnnotationManager, Annotation } from '@/org/use-annotations'\n\n// Components\nimport AnnotationAttrs from '@/alerting/AnnotationAttrs.vue'\n\nexport default defineComponent({\n name: 'AnnotationsTableRow',\n components: { AnnotationAttrs },\n\n props: {\n annotation: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const confirm = useConfirm()\n const annotationMan = useAnnotationManager()\n\n function deleteAnnotation() {\n confirm\n .open(\n 'Delete annotation',\n `Do you really want to delete \"${props.annotation.name}\" annotation?`,\n )\n .then(() => annotationMan.del(props.annotation))\n .then((annotation) => ctx.emit('change', annotation))\n .catch(() => {})\n }\n\n return {\n annotationMan,\n\n deleteAnnotation,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationsTableRow.vue?vue&type=template&id=7b24fceb&scoped=true&\"\nimport script from \"./AnnotationsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b24fceb\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { Annotation } from '@/org/use-annotations'\nimport { UseOrder } from '@/use/order'\n\n// Components\nimport AnnotationsTableRow from '@/alerting/AnnotationsTableRow.vue'\n\nexport default defineComponent({\n name: 'AnnotationsTable',\n components: { AnnotationsTableRow },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n annotations: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const headers = computed(() => {\n const headers = []\n headers.push({ text: 'Name', value: 'name', sortable: true, align: 'start' })\n headers.push({ text: 'Attributes', value: 'attrs', sortable: false, align: 'start' })\n headers.push({ text: 'Actions', value: 'actions', sortable: false, align: 'center' })\n headers.push({ text: 'Created at', value: 'createdAt', sortable: true, align: 'end' })\n return headers\n })\n\n return {\n headers,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationsTable.vue?vue&type=template&id=b010be54&scoped=true&\"\nimport script from \"./AnnotationsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b010be54\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{staticStyle:{\"max-width\":\"400px\"},attrs:{\"label\":\"Name\",\"hint\":\"Annotation name\",\"outlined\":\"\",\"dense\":\"\",\"required\":\"\",\"rules\":_vm.rules.name},model:{value:(_vm.annotation.name),callback:function ($$v) {_vm.$set(_vm.annotation, \"name\", $$v)},expression:\"annotation.name\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-textarea',{staticStyle:{\"max-width\":\"400px\"},attrs:{\"label\":\"Description\",\"hint\":\"Annotation description text in Markdown format\",\"auto-grow\":\"\",\"outlined\":\"\",\"dense\":\"\",\"rules\":_vm.rules.description},model:{value:(_vm.annotation.description),callback:function ($$v) {_vm.$set(_vm.annotation, \"description\", $$v)},expression:\"annotation.description\"}})],1)],1),_c('v-row',{staticClass:\"mb-3\",attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{staticClass:\"text--secondary\",attrs:{\"cols\":\"auto\"}},[_vm._v(\" Color \")]),_c('v-col',[_c('v-dialog',{attrs:{\"width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-chip',_vm._g(_vm._b({staticClass:\"ml-2\",attrs:{\"outlined\":\"\",\"label\":\"\",\"title\":\"Change color\"}},'v-chip',attrs,false),on),[_c('v-avatar',{attrs:{\"color\":_vm.annotation.color,\"size\":\"10\",\"left\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.annotation.color))])],1)]}}])},[_c('v-card',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-color-picker',{attrs:{\"show-swatches\":\"\",\"swatches-max-height\":\"100%\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1)],1)],1)],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('div',{staticClass:\"text-subtitle-1 text--secondary\"},[_vm._v(\"Attributes\")]),_c('v-card',{staticClass:\"px-4 py-5\",attrs:{\"flat\":\"\",\"tile\":\"\",\"color\":\"bg--none\"}},[_vm._l((_vm.attrs),function(attr,i){return _c('v-row',{key:i,attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('AnnotationAttrRow',{attrs:{\"attr\":attr,\"required\":\"\"},on:{\"click:remove\":function($event){return _vm.removeAttr(i)}}})],1)],1)}),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-btn',{attrs:{\"small\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.addAttr}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"Add attribute\")])],1)],1)],1)],2)],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"disabled\":!_vm.isValid,\"loading\":_vm.annotationMan.pending,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(_vm._s(_vm.annotation.id ? 'Save' : 'Create'))])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{attrs:{\"align\":\"start\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Remove attribute\"},on:{\"click\":function($event){return _vm.$emit('click:remove')}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Attribute name\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.attr.key),callback:function ($$v) {_vm.$set(_vm.attr, \"key\", $$v)},expression:\"attr.key\"}})],1),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Attribute value\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.attr.value),callback:function ($$v) {_vm.$set(_vm.attr, \"value\", $$v)},expression:\"attr.value\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { Attr } from '@/org/use-annotations'\n\nexport default defineComponent({\n name: 'AnnotationAttrRow',\n\n props: {\n attr: {\n type: Object as PropType,\n required: true,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationAttrRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationAttrRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationAttrRow.vue?vue&type=template&id=1093f415&scoped=true&\"\nimport script from \"./AnnotationAttrRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationAttrRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1093f415\",\n null\n \n)\n\nexport default component.exports","\nimport Color from 'color'\nimport { defineComponent, ref, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useAnnotationManager, Attr } from '@/org/use-annotations'\n\n// Components\nimport AnnotationAttrRow from '@/alerting/AnnotationAttrRow.vue'\n\n// Misc\nimport { Annotation } from '@/org/use-annotations'\nimport { requiredRule, minMaxStringLengthRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'AnnotationForm',\n components: { AnnotationAttrRow },\n\n props: {\n annotation: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const attrs = ref([\n ...Object.entries(props.annotation.attrs).map(([key, value]) => ({ key, value })),\n { key: '', value: '' },\n ])\n const annotationMan = useAnnotationManager()\n\n const color = computed({\n get(): string {\n return Color(props.annotation.color).hex()\n },\n set(color: string) {\n props.annotation.color = color\n },\n })\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const rules = {\n name: [requiredRule],\n description: [minMaxStringLengthRule(0, 5000)],\n }\n\n function submit() {\n save().then(() => {\n ctx.emit('click:save')\n ctx.emit('click:close')\n })\n }\n\n function save() {\n if (!form.value.validate()) {\n return Promise.reject()\n }\n\n props.annotation.attrs = attrs.value\n .filter((attr) => attr.key !== '')\n .reduce((acc: Record, attr) => {\n acc[attr.key] = attr.value\n return acc\n }, {})\n\n if (props.annotation.id) {\n return annotationMan.update(props.annotation)\n }\n return annotationMan.create(props.annotation)\n }\n\n function addAttr() {\n attrs.value.push({ key: '', value: '' })\n }\n\n function removeAttr(i: number) {\n attrs.value.splice(i, 1)\n }\n\n return {\n annotationMan,\n color,\n attrs,\n\n form,\n isValid,\n rules,\n\n submit,\n addAttr,\n removeAttr,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationForm.vue?vue&type=template&id=6b343b4e&scoped=true&\"\nimport script from \"./AnnotationForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b343b4e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useSyncQueryParams } from '@/use/router'\nimport { injectForceReload } from '@/use/force-reload'\nimport { useOrder } from '@/use/order'\nimport { useAnnotations, emptyAnnotation } from '@/org/use-annotations'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport AnnotationsTable from '@/alerting/AnnotationsTable.vue'\nimport AnnotationForm from '@/alerting/AnnotationForm.vue'\n\nexport default defineComponent({\n name: 'AnnotationList',\n components: {\n ForceReloadBtn,\n AnnotationsTable,\n AnnotationForm,\n },\n\n setup() {\n useTitle('Annotations')\n const dialog = shallowRef(false)\n const forceReload = injectForceReload()\n const order = useOrder()\n\n const annotations = useAnnotations(() => {\n return {\n ...forceReload.params,\n ...order.axiosParams,\n }\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('sort_by', 'createdAt')\n queryParams.setDefault('sort_desc', true)\n\n order.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...order.queryParams(),\n }\n },\n })\n\n return {\n dialog,\n\n order,\n annotations,\n\n emptyAnnotation,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationList.vue?vue&type=template&id=a7e35fe8&scoped=true&\"\nimport script from \"./AnnotationList.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a7e35fe8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(!_vm.annotation.data)?_c('v-skeleton-loader',{attrs:{\"width\":\"600\",\"type\":\"card\"}}):_c('v-card',{attrs:{\"width\":\"600\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-breadcrumbs',{staticClass:\"pl-0\",attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}})],1),_c('div',{staticClass:\"pa-4\"},[_c('AnnotationForm',{attrs:{\"annotation\":_vm.annotation.data},on:{\"click:close\":function($event){return _vm.$router.push({ name: 'AnnotationList' })}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useProject } from '@/org/use-projects'\nimport { useTitle } from '@vueuse/core'\nimport { useAnnotation } from '@/org/use-annotations'\n\n// Components\nimport AnnotationForm from '@/alerting/AnnotationForm.vue'\n\nexport default defineComponent({\n name: 'AnnotationShow',\n components: { AnnotationForm },\n\n setup() {\n useTitle('Annotation')\n\n const project = useProject()\n const annotation = useAnnotation()\n\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: project.data?.name ?? 'Project',\n to: {\n name: 'ProjectShow',\n },\n exact: true,\n })\n\n bs.push({\n text: 'Annotations',\n to: {\n name: 'AnnotationList',\n },\n exact: true,\n })\n\n bs.push({ text: 'Annotation' })\n\n return bs\n })\n\n return {\n annotation,\n breadcrumbs,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationShow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnnotationShow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AnnotationShow.vue?vue&type=template&id=9a55dbea&scoped=true&\"\nimport script from \"./AnnotationShow.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnnotationShow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a55dbea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'SystemOverview', query: _vm.pick(_vm.$route.query, 'system', 'query') },\"exact-path\":\"\"}},[_vm._v(\" Systems \")]),_c('v-tab',{attrs:{\"to\":{ name: 'ServiceGraph', query: _vm.pick(_vm.$route.query, 'system', 'query') },\"exact-path\":\"\"}},[_vm._v(\" Graph \")]),_c('v-tab',{attrs:{\"to\":{ name: 'SlowestGroups', query: _vm.pick(_vm.$route.query, 'system', 'query') },\"exact-path\":\"\"}},[_vm._v(\"Slowest\")]),_vm._l((_vm.chosenSystems),function(system){return _c('v-tab',{key:system.name,attrs:{\"to\":{\n name: 'SystemGroupList',\n params: { system: system.name },\n query: _vm.pick(_vm.$route.query, 'system', 'query'),\n },\"exact-path\":\"\"}},[_vm._v(\" \"+_vm._s(system.name)+\" (\"+_vm._s(system.groupCount)+\") \")])}),_vm._l((_vm.project.pinnedAttrs),function(attr){return _c('v-tab',{key:attr,attrs:{\"to\":{\n name: 'AttrOverview',\n params: { attr },\n query: _vm.pick(_vm.$route.query, 'system', 'query'),\n },\"exact-path\":\"\"}},[_vm._v(_vm._s(attr))])})],2)],1),(_vm.systems.dataHint)?_c('TracingPlaceholder',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems}}):[_c('PageToolbar',{attrs:{\"loading\":_vm.systems.loading,\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-toolbar-items',[(_vm.systems.items.length)?_c('SystemPicker',{attrs:{\"systems\":_vm.systems.items,\"outlined\":\"\"},model:{value:(_vm.systems.activeSystems),callback:function ($$v) {_vm.$set(_vm.systems, \"activeSystems\", $$v)},expression:\"systems.activeSystems\"}}):_vm._e(),_c('QuickSpanFilter',{staticClass:\"ml-2\",attrs:{\"date-range\":_vm.dateRange,\"uql\":_vm.uql,\"name\":\"env\",\"attr-key\":_vm.AttrKey.deploymentEnvironment}}),_c('QuickSpanFilter',{staticClass:\"ml-2\",attrs:{\"date-range\":_vm.dateRange,\"uql\":_vm.uql,\"name\":\"service\",\"attr-key\":_vm.AttrKey.serviceName}})],1),_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":30}})],1),_c('router-view',{attrs:{\"name\":\"overview\",\"date-range\":_vm.dateRange,\"systems\":_vm.systems,\"uql\":_vm.uql}})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { cloneDeep } from 'lodash-es'\nimport { shallowRef, computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useRoute, Values } from '@/use/router'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\n\n// Misc\nimport { isGroupSystem, isLogSystem, isEventSystem, isSpanSystem, SystemName } from '@/models/otel'\nimport { DataHint } from '@/org/types'\n\nexport interface System {\n system: string\n\n count: number\n errorCount: number\n rate: number\n errorRate: number\n groupCount: number\n}\n\nexport type UseSystems = ReturnType\n\nconst SORTED_SYSTEMS = [\n SystemName.All,\n SystemName.SpansAll,\n SystemName.LogAll,\n SystemName.EventsAll,\n 'log',\n 'log:trace',\n 'log:debug',\n 'log:info',\n 'log:warn',\n 'log:error',\n 'log:fatal',\n]\n\nexport function useSystems(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const { status, loading, data } = useWatchAxios(\n () => {\n const { projectId } = route.value.params\n const req = {\n url: `/internal/v1/tracing/${projectId}/systems`,\n params: axiosParamsSource(),\n cache: true,\n }\n return req\n },\n { debounce: 0 },\n )\n\n const count = computed(() => {\n return data.value?.systems?.length ?? 0\n })\n\n const systems = computed((): System[] => {\n let systems: System[] = data.value?.systems ?? []\n\n systems = cloneDeep(systems)\n sortSystems(systems)\n addAllSystem(systems, SystemName.All)\n //addAllSystemForEachType(systems)\n return systems\n })\n\n const types = computed((): string[] => {\n return systemTypes(systems.value)\n })\n\n const dataHint = computed((): DataHint | undefined => {\n return data.value?.dataHint\n })\n\n const internalValue = shallowRef([])\n\n const activeSystems = computed({\n get(): string[] {\n return internalValue.value\n },\n set(system: string | string[]) {\n if (Array.isArray(system)) {\n internalValue.value = system\n } else if (system) {\n internalValue.value = [system]\n } else {\n internalValue.value = []\n }\n },\n })\n\n const isSpan = computed(() => {\n return isSpanSystem(...activeSystems.value)\n })\n\n const groupName = computed(() => {\n if (isLogSystem(...activeSystems.value)) {\n return SystemName.LogAll\n }\n if (isEventSystem(...activeSystems.value)) {\n return SystemName.EventsAll\n }\n return SystemName.SpansAll\n })\n\n function reset(): void {\n activeSystems.value = []\n }\n\n function axiosParams() {\n return {\n system: activeSystems.value,\n }\n }\n\n function queryParams() {\n return { system: activeSystems.value }\n }\n function parseQueryParams(queryParams: Values) {\n activeSystems.value = queryParams.array('system')\n }\n\n return proxyRefs({\n status,\n loading,\n\n count,\n items: systems,\n types,\n dataHint,\n\n activeSystems,\n isSpan,\n groupName,\n\n reset,\n axiosParams,\n\n queryParams,\n parseQueryParams,\n })\n}\n\n// function addAllSystemForEachType(systems: System[]) {\n// if (!systems.length) {\n// return\n// }\n\n// const typeMap: Record = {}\n\n// for (let sys of systems) {\n// let typ = sys.system\n\n// const i = typ.indexOf(':')\n// if (i >= 0) {\n// typ = typ.slice(0, i)\n// }\n\n// const typeSys = typeMap[typ]\n// if (typeSys) {\n// typeSys.count += sys.count\n// typeSys.rate += sys.rate\n// typeSys.errorCount += sys.errorCount\n// typeSys.errorRate += sys.errorRate\n// typeSys.groupCount += sys.groupCount\n// typeSys.numChildren!++\n// continue\n// }\n\n// typeMap[typ] = {\n// ...sys,\n// system: typ,\n// numChildren: 1,\n// }\n// }\n\n// for (let systemType in typeMap) {\n// const typ = typeMap[systemType]\n// if (typ.numChildren <= 1) {\n// continue\n// }\n\n// for (let item of systems) {\n// if (item.system.startsWith(typ.system)) {\n// item.indent = true\n// }\n// }\n\n// systems.push({\n// ...typ,\n// system: typ.system + ':all',\n// isGroup: true,\n// })\n// }\n// }\n\nexport function addAllSystem(systems: System[], systemName: string) {\n const index = systems.findIndex((item) => item.system === systemName)\n if (index >= 0) {\n return\n }\n\n const system = createAllSystem(systems, systemName)\n systems.unshift(system)\n}\n\nfunction createAllSystem(systems: System[], systemName: string): System {\n const allSystem = {\n system: systemName,\n count: 0,\n rate: 0,\n errorCount: 0,\n errorRate: 0,\n groupCount: 0,\n }\n for (let system of systems) {\n if (!isGroupSystem(system.system)) {\n allSystem.count += system.count\n allSystem.rate += system.rate\n allSystem.errorCount += system.errorCount\n allSystem.groupCount += system.groupCount\n }\n }\n allSystem.errorRate = allSystem.errorCount / allSystem.count\n return allSystem\n}\n\nexport function systemTypes(systems: System[]): string[] {\n const types = new Set()\n\n for (let sys of systems) {\n let systemType = sys.system\n\n const i = systemType.indexOf(':')\n if (i >= 0) {\n systemType = systemType.slice(0, i)\n }\n\n types.add(systemType)\n }\n\n return Array.from(types)\n}\n\nexport function sortSystems(systems: System[]) {\n systems.sort((a, b) => {\n const ai = SORTED_SYSTEMS.indexOf(a.system)\n const bi = SORTED_SYSTEMS.indexOf(b.system)\n if (ai >= 0 && bi >= 0) {\n return ai - bi\n }\n if (ai >= 0) {\n return -1\n }\n if (bi >= 0) {\n return 1\n }\n return a.system.localeCompare(b.system)\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.systems.dataHint?.before || _vm.systems.dataHint?.after)?[_c('PageToolbar',[_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":30}})],1),_c('v-card',{staticClass:\"text-center\",staticStyle:{\"margin-top\":\"180px\"},attrs:{\"flat\":\"\"}},[_c('v-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.systems.loading),expression:\"!systems.loading\"}],attrs:{\"size\":\"48\"}},[_vm._v(\"mdi-calendar-range\")]),_c('v-progress-circular',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.systems.loading),expression:\"systems.loading\"}],attrs:{\"color\":\"purple\",\"size\":\"48\",\"indeterminate\":\"\"}}),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"disabled\":!_vm.systems.dataHint?.before,\"x-large\":\"\",\"icon\":\"\",\"title\":\"Previous period with data\"},on:{\"click\":function($event){return _vm.changeAround(_vm.systems.dataHint?.before)}}},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"mdi-chevron-left\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-card',{attrs:{\"width\":\"360\",\"flat\":\"\"}},[_c('v-card-text',[_vm._v(\" There are no results for the selected date range.\"),_c('br'),_vm._v(\" Use \"),_c('strong',[_vm._v(\"arrows\")]),_vm._v(\" to jump to the periods with data. \")])],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"disabled\":!_vm.systems.dataHint?.after,\"icon\":\"\",\"x-large\":\"\",\"title\":\"Next period with data\"},on:{\"click\":function($event){return _vm.changeAround(_vm.systems.dataHint?.after)}}},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1)]:(_vm.systems.status.hasData())?_c('HelpCard',{attrs:{\"loading\":_vm.systems.loading,\"show-reload\":\"\"}}):_c('v-skeleton-loader',{attrs:{\"type\":\"card,table\"}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-sm\"},[_c('PageToolbar',{attrs:{\"loading\":_vm.loading}},[_c('v-toolbar-title',[_vm._v(\"Send data to Uptrace\")]),_c('v-spacer'),(_vm.showReload)?_c('ForceReloadBtn',{attrs:{\"small\":\"\"}}):_vm._e()],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',[_c('v-col',[_vm._v(\" To start sending data to Uptrace, you need to configure OpenTelemetry SDK. Use the following \"),_c('strong',[_vm._v(\"DSN\")]),_vm._v(\" to configure OpenTelemetry for your programming language: \")])],1),_c('v-row',[_c('v-col',[_c('OtelSdkCard',{attrs:{\"dsn\":_vm.project.dsn}})],1)],1)],1),_c('PageToolbar',{attrs:{\"loading\":_vm.loading}},[_c('v-toolbar-title',[_vm._v(\"Already using OpenTelemetry Collector?\")])],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',[_c('v-col',[_vm._v(\" In case you are already using \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/collector.html\",\"target\":\"_blank\"}},[_vm._v(\"OpenTelemetry Collector\")]),_vm._v(\", you can send data to Uptrace using \"),_c('a',{attrs:{\"href\":\"https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter\",\"target\":\"_blank\"}},[_vm._v(\"otlpexporter\")]),_vm._v(\". \")])],1),_c('v-row',[_c('v-col',[_c('CollectorTabs',{attrs:{\"dsn\":_vm.project.dsn}})],1)],1)],1),_c('PageToolbar',{attrs:{\"loading\":_vm.loading}},[_c('v-toolbar-title',[_vm._v(\"Quickstart\")])],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',{attrs:{\"align\":\"end\"}},_vm._l((_vm.frameworks),function(item){return _c('v-col',{key:item.name,staticClass:\"flex-grow-1\",attrs:{\"cols\":\"6\",\"sm\":\"3\",\"lg\":\"2\"}},[_c('DevIcon',_vm._b({},'DevIcon',item,false))],1)}),1)],1),_c('HelpLinks')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',[_c('v-col',[_c('PrismCode',{attrs:{\"code\":`export UPTRACE_DSN=\"${_vm.dsn}\"`,\"language\":\"shell\"}})],1)],1),_c('v-row',[_c('v-col',[_c('DistroIcons')],1)],1),_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1\"},[_vm._v(\" If you are already using OpenTelemetry SDK with OTLP exporter, you can reconfigure it to export data to Uptrace using the following environment variables: \")])],1),_c('v-row',[_c('v-col',[_c('PrismCode',{attrs:{\"code\":_vm.envVars,\"language\":\"shell\"}})],1)],1),_c('v-row',[_c('v-col',[_vm._v(\"For more details, see the documentation for your programming language above.\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{attrs:{\"align\":\"end\"}},_vm._l((_vm.distros),function(distro){return _c('v-col',{key:distro.name,staticClass:\"flex-grow-1\",attrs:{\"cols\":\"6\",\"sm\":\"3\"}},[_c('DevIcon',{attrs:{\"name\":distro.name,\"icon\":distro.icon,\"href\":distro.href}})],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-card',{staticClass:\"mx-auto\",attrs:{\"flat\":!hover}},[_c('v-card-text',{staticClass:\"text-center py-1\"},[(_vm.to)?_c('router-link',{attrs:{\"to\":_vm.to}},[_c('v-img',{staticClass:\"mx-auto\",attrs:{\"src\":_vm.icon,\"max-width\":\"80\",\"aspect-ratio\":\"1\",\"contain\":\"\",\"alt\":_vm.name}}),_c('div',{staticClass:\"mt-2 text-subtitle-1 text-no-wrap\"},[_vm._v(_vm._s(_vm.name))])],1):_c('a',{attrs:{\"href\":_vm.href,\"title\":`${_vm.name} integration`,\"target\":\"_blank\"}},[_c('v-img',{staticClass:\"mx-auto\",attrs:{\"src\":_vm.icon,\"max-width\":\"80\",\"aspect-ratio\":\"1\",\"contain\":\"\",\"alt\":_vm.name}}),_c('div',{staticClass:\"mt-2 text-subtitle-1 text-no-wrap\"},[_vm._v(_vm._s(_vm.name))])],1)],1)],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'DevIcon',\n\n props: {\n name: {\n type: String,\n required: true,\n },\n icon: {\n type: String,\n required: true,\n },\n href: {\n type: String,\n default: '',\n },\n to: {\n type: Object,\n default: undefined,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DevIcon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DevIcon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DevIcon.vue?vue&type=template&id=ee6eb280&scoped=true&\"\nimport script from \"./DevIcon.vue?vue&type=script&lang=ts&\"\nexport * from \"./DevIcon.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DevIcon.vue?vue&type=style&index=0&id=ee6eb280&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee6eb280\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed } from 'vue'\n\n// Components\nimport DevIcon from '@/components/DevIcon.vue'\n\nexport default defineComponent({\n name: 'DistroIcons',\n components: { DevIcon },\n\n setup() {\n const distros = computed(() => {\n const items = [\n {\n name: 'Go',\n icon: 'devicon/go-original.svg',\n href: link('go'),\n },\n {\n name: 'Python',\n icon: 'devicon/python-original.svg',\n href: link('python'),\n },\n {\n name: 'Ruby',\n icon: 'devicon/ruby-original.svg',\n href: link('ruby'),\n },\n {\n name: 'Node.js',\n icon: 'devicon/nodejs-original.svg',\n href: link('js-node'),\n },\n {\n name: '.NET',\n icon: 'devicon/dot-net-original.svg',\n href: link('dotnet'),\n },\n {\n name: 'Java',\n icon: 'devicon/java-original.svg',\n href: link('java'),\n },\n {\n name: 'Erlang',\n icon: 'devicon/erlang-original.svg',\n href: link('erlang-elixir'),\n },\n {\n name: 'Elixir',\n icon: 'devicon/elixir-original.svg',\n href: link('erlang-elixir'),\n },\n {\n name: 'Rust',\n icon: 'devicon/rust-plain.svg',\n href: link('rust'),\n },\n {\n name: 'PHP',\n icon: 'devicon/php-original.svg',\n href: link('php'),\n },\n ]\n\n const publicPath = process.env.BASE_URL\n for (let item of items) {\n item.icon = publicPath + item.icon\n }\n\n return items\n })\n\n function link(lang: string): string {\n return `https://uptrace.dev/get/opentelemetry-${lang}.html`\n }\n\n return { distros }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DistroIcons.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DistroIcons.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DistroIcons.vue?vue&type=template&id=24df6640&scoped=true&\"\nimport script from \"./DistroIcons.vue?vue&type=script&lang=ts&\"\nexport * from \"./DistroIcons.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"24df6640\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useDsn } from '@/org/use-projects'\n\n// Components\nimport DistroIcons from '@/components/DistroIcons.vue'\n\nexport default defineComponent({\n name: 'OtelSdkCard',\n components: { DistroIcons },\n\n props: {\n dsn: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const dsn = useDsn(computed(() => props.dsn))\n const envVars = computed(() => {\n return `\n# Uncomment the appropriate protocol for your programming language.\n# Only for OTLP/gRPC.\n#export OTEL_EXPORTER_OTLP_ENDPOINT=\"${dsn.grpcEndpoint}\"\n# Only for OTLP/HTTP.\n#export OTEL_EXPORTER_OTLP_ENDPOINT=\"${dsn.httpEndpoint}\"\n\n# Pass Uptrace DSN in gRPC/HTTP headers.\nexport OTEL_EXPORTER_OTLP_HEADERS=\"uptrace-dsn=${props.dsn}\"\n\n# Enable gzip compression.\nexport OTEL_EXPORTER_OTLP_COMPRESSION=gzip\n\n# Enable exponential histograms.\nexport OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=BASE2_EXPONENTIAL_BUCKET_HISTOGRAM\n\n# Prefer delta temporality.\nexport OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=DELTA\n `.trim()\n })\n return { envVars }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OtelSdkCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OtelSdkCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OtelSdkCard.vue?vue&type=template&id=36df73f2&scoped=true&\"\nimport script from \"./OtelSdkCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./OtelSdkCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36df73f2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-alert',{staticClass:\"mb-0\",attrs:{\"type\":\"info\",\"prominent\":\"\",\"border\":\"left\",\"outlined\":\"\"}},[_vm._v(\" Don't forget to add the Uptrace exporter to \"),_c('code',[_vm._v(\"service.pipelines\")]),_vm._v(\" section, because unused exporters are silently ignored. \")])],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-tabs',{model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab',{attrs:{\"href\":\"#grpc\"}},[_vm._v(\"GRPC\")]),_c('v-tab',{attrs:{\"href\":\"#http\"}},[_vm._v(\"HTTP\")])],1),_c('v-tabs-items',{model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab-item',{attrs:{\"value\":\"grpc\"}},[_c('PrismCode',{attrs:{\"language\":\"yaml\",\"code\":_vm.otlpGrpc}})],1),_c('v-tab-item',{attrs:{\"value\":\"http\"}},[_c('PrismCode',{attrs:{\"language\":\"yaml\",\"code\":_vm.otlpHttp}})],1)],1)],1)],1),_c('v-row',[_c('v-col',[_vm._v(\" Note that the configuration above is minimal and only collects \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/collector-host-metrics.html\",\"target\":\"_blank\"}},[_vm._v(\"host metrics\")]),_vm._v(\". To gather more metrics, you will need to configure additional receivers from the list below, for example, \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/monitor/opentelemetry-postgresql.html\",\"target\":\"_blank\"}},[_vm._v(\"PostgreSQL\")]),_vm._v(\" or \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/monitor/opentelemetry-mysql.html\",\"target\":\"_blank\"}},[_vm._v(\"MySQL\")]),_vm._v(\" receivers. \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed } from 'vue'\n\n// Composables\nimport { useDsn } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'CollectorTabs',\n\n props: {\n dsn: {\n type: String,\n default: '',\n },\n },\n\n setup(props) {\n const activeTab = shallowRef()\n const dsn = useDsn(computed(() => props.dsn))\n\n const otlpGrpc = computed(() => {\n return `\nprocessors:\n resourcedetection:\n detectors: [env, system]\n cumulativetodelta:\n batch:\n send_batch_size: 10000\n timeout: 10s\n\nreceivers:\n otlp:\n protocols:\n grpc:\n http:\n hostmetrics:\n scrapers:\n cpu:\n disk:\n filesystem:\n load:\n memory:\n network:\n paging:\n\nexporters:\n debug:\n otlp/uptrace:\n endpoint: ${dsn.grpcEndpoint}\n tls: { insecure: ${dsn.insecure} }\n headers:\n uptrace-dsn: '${props.dsn}'\n\nservice:\n pipelines:\n traces:\n receivers: [otlp]\n processors: [batch]\n exporters: [otlp/uptrace, debug]\n metrics:\n receivers: [otlp]\n processors: [cumulativetodelta, batch]\n exporters: [otlp/uptrace, debug]\n metrics/host:\n receivers: [hostmetrics]\n processors: [cumulativetodelta, batch, resourcedetection]\n exporters: [otlp/uptrace, debug]\n logs:\n receivers: [otlp]\n processors: [batch]\n exporters: [otlp/uptrace, debug]\n `.trim()\n })\n\n const otlpHttp = computed(() => {\n return `\nprocessors:\n resourcedetection:\n detectors: [env, system]\n cumulativetodelta:\n batch:\n send_batch_size: 10000\n timeout: 10s\n\nreceivers:\n otlp:\n protocols:\n grpc:\n http:\n hostmetrics:\n scrapers:\n cpu:\n disk:\n filesystem:\n load:\n memory:\n network:\n paging:\n\nexporters:\n debug:\n otlphttp/uptrace:\n endpoint: ${dsn.httpEndpoint}\n headers:\n uptrace-dsn: '${props.dsn}'\n\nservice:\n pipelines:\n traces:\n receivers: [otlp]\n processors: [batch]\n exporters: [otlphttp/uptrace, debug]\n metrics:\n receivers: [otlp]\n processors: [cumulativetodelta, batch]\n exporters: [otlphttp/uptrace, debug]\n metrics/host:\n receivers: [hostmetrics]\n processors: [cumulativetodelta, batch, resourcedetection]\n exporters: [otlphttp/uptrace, debug]\n logs:\n receivers: [otlp]\n processors: [batch]\n exporters: [otlphttp/uptrace, debug]\n `.trim()\n })\n\n return { activeTab, otlpGrpc, otlpHttp }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectorTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectorTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CollectorTabs.vue?vue&type=template&id=76ac5217&scoped=true&\"\nimport script from \"./CollectorTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./CollectorTabs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76ac5217\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useProject } from '@/org/use-projects'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport OtelSdkCard from '@/components/OtelSdkCard.vue'\nimport CollectorTabs from '@/components/CollectorTabs.vue'\nimport DevIcon from '@/components/DevIcon.vue'\nimport HelpLinks from '@/components/HelpLinks.vue'\n\nexport default defineComponent({\n name: 'HelpCard',\n components: {\n ForceReloadBtn,\n OtelSdkCard,\n CollectorTabs,\n DevIcon,\n HelpLinks,\n },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n showReload: {\n type: Boolean,\n default: false,\n },\n },\n\n setup() {\n const project = useProject()\n\n const frameworks = computed(() => {\n const items = [\n {\n name: 'net/http',\n icon: 'devicon/net-http.svg',\n href: instrumentationLink('opentelemetry-go-net-http.html'),\n },\n {\n name: 'Gin',\n icon: 'devicon/gin.svg',\n href: instrumentationLink('opentelemetry-gin.html'),\n },\n {\n name: 'Beego',\n icon: 'devicon/beego.svg',\n href: instrumentationLink('opentelemetry-beego.html'),\n },\n {\n name: 'Django',\n icon: 'devicon/django.svg',\n href: instrumentationLink('opentelemetry-django.html'),\n },\n {\n name: 'Flask',\n icon: 'devicon/flask.svg',\n href: instrumentationLink('opentelemetry-flask.html'),\n },\n {\n name: 'FastAPI',\n icon: 'devicon/fastapi-original.svg',\n href: instrumentationLink('opentelemetry-fastapi.html'),\n },\n {\n name: 'SQLAlchemy',\n icon: 'devicon/sqlalchemy-original.svg',\n href: instrumentationLink('opentelemetry-sqlalchemy.html'),\n },\n {\n name: 'Rails',\n icon: 'devicon/rails.svg',\n href: instrumentationLink('opentelemetry-rails.html'),\n },\n {\n name: 'Express',\n icon: 'devicon/express.svg',\n href: instrumentationLink('opentelemetry-express.html'),\n },\n {\n name: 'Spring Boot',\n icon: 'devicon/spring-original.svg',\n href: instrumentationLink('opentelemetry-spring-boot.html'),\n },\n {\n name: 'Phoenix',\n icon: 'devicon/phoenix-original.svg',\n href: instrumentationLink('opentelemetry-phoenix.html'),\n },\n ]\n\n const publicPath = process.env.BASE_URL\n for (let item of items) {\n item.icon = publicPath + item.icon\n }\n\n return items\n })\n\n function instrumentationLink(file: string): string {\n return `https://uptrace.dev/get/instrument/${file}`\n }\n\n return { project, frameworks }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HelpCard.vue?vue&type=template&id=4c289c48&scoped=true&\"\nimport script from \"./HelpCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./HelpCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c289c48\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useRoute, useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseSystems } from '@/tracing/system/use-systems'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport HelpCard from '@/tracing/HelpCard.vue'\n\nexport default defineComponent({\n name: 'TracingPlaceholder',\n components: { DateRangePicker, HelpCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...route.value.query,\n ...props.dateRange.queryParams(),\n }\n },\n })\n\n function changeAround(dt: string) {\n props.dateRange.changeAround(dt)\n }\n\n return { changeAround }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingPlaceholder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingPlaceholder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TracingPlaceholder.vue?vue&type=template&id=751a4ece&scoped=true&\"\nimport script from \"./TracingPlaceholder.vue?vue&type=script&lang=ts&\"\nexport * from \"./TracingPlaceholder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"751a4ece\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{directives:[{name:\"autowidth\",rawName:\"v-autowidth\",value:({ minWidth: 60 }),expression:\"{ minWidth: 60 }\"}],ref:\"autocomplete\",staticClass:\"v-select--fit\",attrs:{\"value\":_vm.internalValue,\"items\":_vm.filteredSystems,\"item-value\":\"system\",\"item-text\":\"system\",\"search-input\":_vm.searchInput,\"no-filter\":\"\",\"placeholder\":\"system\",\"prefix\":\"system: \",\"multiple\":\"\",\"clearable\":\"\",\"auto-select-first\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\",\"background-color\":\"bg--light-primary\",\"menu-props\":{ maxHeight: 500 }},on:{\"update:searchInput\":function($event){_vm.searchInput=$event},\"update:search-input\":function($event){_vm.searchInput=$event},\"click:clear\":function($event){return _vm.$emit('input', [])}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, attrs }){return [_c('v-list-item',_vm._b({staticClass:\"px-0\"},'v-list-item',attrs,false),[_c('v-menu',{key:item.system,attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ attrs, on }){return [_c('v-list-item',_vm._g(_vm._b({on:{\"click\":function($event){return _vm.toggleOne(item.system)}}},'v-list-item',attrs,false),on),[_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.value.includes(item.system)},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle(item.system)}}})],1),_c('v-list-item-content',[_c('v-list-item-title',{class:{ 'pl-4': item.indent }},[_vm._v(\" \"+_vm._s(item.system)+\" (\"),_c('NumValue',{attrs:{\"value\":item.groupCount}}),_vm._v(\") \")],1)],1),_c('v-list-item-icon',[(item.children && item.children.length)?_c('v-icon',{attrs:{\"dense\":\"\"}},[_vm._v(\"mdi-menu-right\")]):_vm._e()],1)],1)]}}],null,true)},[_c('v-card',{attrs:{\"flat\":\"\",\"max-height\":\"95vh\"}},[(item.children && item.children.length)?_c('v-list',{attrs:{\"dense\":\"\"}},_vm._l((item.children),function(child){return _c('v-list-item',{key:child.system,on:{\"click\":function($event){return _vm.toggleOne(child.system)}}},[_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.value.includes(child.system)},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle(child.system)}}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.trimPrefix(child.system, item.system))+\" (\"),_c('NumValue',{attrs:{\"value\":child.groupCount}}),_vm._v(\") \")],1)],1)],1)}),1):_vm._e()],1)],1)],1)]}},{key:\"selection\",fn:function({ index, item }){return [(index === 2)?_c('div',{staticClass:\"v-select__selection\"},[_vm._v(\", \"+_vm._s(_vm.value.length - 2)+\" more\")]):(index < 2)?_c('div',{staticClass:\"v-select__selection text-truncate\"},[_vm._v(\" \"+_vm._s(_vm.withComma(item, index))+\" \")]):_vm._e()]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, watch, watchEffect, PropType } from 'vue'\n\n// Composables\nimport { sortSystems, System } from '@/tracing/system/use-systems'\n\n// Misc\nimport { truncateMiddle } from '@/util/string'\nimport { systemType, isGroupSystem, SystemName } from '@/models/otel'\n\nconst ALL_SYSTEMS = [\n SystemName.All,\n SystemName.SpansAll,\n SystemName.LogAll,\n SystemName.EventsAll,\n] as string[]\n\nexport default defineComponent({\n name: 'SystemPicker',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n value: {\n type: Array as PropType,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n outlined: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const autocomplete = shallowRef()\n\n const searchInput = shallowRef('')\n watch(\n () => autocomplete.value?.isMenuActive ?? false,\n (isMenuActive) => {\n if (!isMenuActive) {\n searchInput.value = ''\n }\n },\n )\n\n const internalValue = computed(() => {\n if (autocomplete.value?.isMenuActive) {\n return []\n }\n return props.value\n })\n\n const _tree = computed(() => {\n const systems = props.systems.slice()\n return buildSystemTree(systems)\n })\n const tree = shallowRef([])\n watch(\n () => {\n if (autocomplete.value?.isMenuActive) {\n return undefined\n }\n\n const systems = _tree.value.slice()\n\n for (let system of props.value) {\n const foundIndex = systems.findIndex((item) => item.system === system)\n if (foundIndex >= 0) {\n continue\n }\n\n const type = systemType(system)\n const typeIndex = systems.findIndex((item) => item.system === type + ':all')\n\n const found = props.systems.find((item) => item.system === system)\n if (found) {\n systems.push({\n ...found,\n indent: typeIndex >= 0,\n children: [],\n })\n continue\n }\n\n systems.push({\n system,\n count: 0,\n rate: 0,\n errorCount: 0,\n errorRate: 0,\n groupCount: 0,\n indent: typeIndex >= 0,\n children: [],\n })\n }\n\n sortSystems(systems)\n\n return systems\n },\n (treeValue) => {\n if (treeValue) {\n tree.value = treeValue\n }\n },\n { immediate: true },\n )\n\n const filteredSystems = computed(() => {\n if (!searchInput.value) {\n return tree.value\n }\n return fuzzyFilter(props.systems, searchInput.value, { key: 'system' })\n })\n\n watchEffect(\n () => {\n if (props.value.length || props.loading) {\n return\n }\n if (props.systems.length) {\n ctx.emit('input', props.systems[0].system)\n }\n },\n { flush: 'post' },\n )\n\n function toggle(system: string) {\n let activeSystems = props.value.slice()\n\n const index = activeSystems.indexOf(system)\n if (index >= 0) {\n activeSystems.splice(index, 1)\n if (activeSystems.length) {\n ctx.emit('input', activeSystems)\n return\n }\n\n if (props.systems.length) {\n ctx.emit('input', [props.systems[0].system])\n return\n }\n\n ctx.emit('input', [])\n return\n }\n\n if (ALL_SYSTEMS.includes(system)) {\n ctx.emit('input', [system])\n return\n }\n\n activeSystems = activeSystems.filter((system) => !ALL_SYSTEMS.includes(system))\n\n if (isGroupSystem(system)) {\n const type = systemType(system)\n activeSystems = activeSystems.filter((system) => !system.startsWith(type + ':'))\n } else if (activeSystems.length) {\n const type = systemType(system)\n activeSystems = activeSystems.filter((system) => system !== type + ':all')\n }\n\n activeSystems.push(system)\n ctx.emit('input', activeSystems)\n }\n\n function toggleOne(system: string) {\n if (props.value.length === 1 && props.value.includes(system)) {\n if (props.systems.length) {\n ctx.emit('input', [props.systems[0].system])\n return\n }\n\n ctx.emit('input', [])\n return\n }\n\n ctx.emit('input', [system])\n return\n }\n\n return {\n autocomplete,\n searchInput,\n\n internalValue,\n filteredSystems,\n toggle,\n toggleOne,\n\n withComma,\n trimPrefix,\n }\n },\n})\n\nfunction withComma(item: System, index: number): string {\n const text = truncateMiddle(item.system, 20)\n if (index > 0) {\n return ', ' + text\n }\n return text\n}\n\ninterface SystemNode extends System {\n indent?: boolean\n children?: System[]\n}\n\nfunction buildSystemTree(systems: System[]): SystemNode[] {\n const typeMap = new Map()\n\n for (let sys of systems) {\n if (isGroupSystem(sys.system)) {\n continue\n }\n\n let typ = sys.system\n\n const i = typ.indexOf(':')\n if (i >= 0) {\n typ = typ.slice(0, i)\n }\n\n const typeSys = typeMap.get(typ)\n if (typeSys) {\n typeSys.count += sys.count\n typeSys.rate += sys.rate\n typeSys.errorCount += sys.errorCount\n typeSys.errorRate += sys.errorRate\n typeSys.groupCount += sys.groupCount\n typeSys.children!.push(sys)\n continue\n }\n\n typeMap.set(typ, {\n ...sys,\n system: typ + ':all',\n children: [sys],\n })\n }\n\n const nodes: SystemNode[] = []\n\n typeMap.forEach((system) => {\n if (system.children!.length === 1) {\n nodes.push({\n ...system.children![0],\n })\n } else {\n nodes.push(system)\n }\n })\n\n if (nodes.length === 1 && nodes[0].children) {\n return nodes[0].children\n }\n return nodes\n}\n\nfunction trimPrefix(str: string, prefix: string): string {\n if (prefix.endsWith(':all')) {\n prefix = prefix.slice(0, -3)\n }\n if (str.startsWith(prefix)) {\n return str.slice(prefix.length)\n }\n return str\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SystemPicker.vue?vue&type=template&id=a83a78b6&scoped=true&\"\nimport script from \"./SystemPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./SystemPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a83a78b6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{directives:[{name:\"autowidth\",rawName:\"v-autowidth\",value:({ minWidth: 40 }),expression:\"{ minWidth: 40 }\"}],ref:\"autocomplete\",staticClass:\"v-select--fit\",attrs:{\"items\":_vm.attrValues.filteredItems,\"search-input\":_vm.attrValues.searchInput,\"no-filter\":\"\",\"placeholder\":\"none\",\"prefix\":`${_vm.name}: `,\"multiple\":\"\",\"clearable\":\"\",\"auto-select-first\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\",\"background-color\":\"bg--light-primary\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.attrValues, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.attrValues, \"searchInput\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, attrs }){return [_c('v-list-item',_vm._b({on:{\"click\":function($event){return _vm.toggleOne(item.value)}}},'v-list-item',attrs,false),[_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeValue.includes(item.value)},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle(item.value)}}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.value))])],1),_c('v-list-item-action',{staticClass:\"my-0\"},[_c('v-list-item-action-text',[_c('NumValue',{attrs:{\"value\":item.count}})],1)],1)],1)]}},{key:\"selection\",fn:function({ index, item }){return [(index === 2)?_c('div',{staticClass:\"v-select__selection\"},[_vm._v(\", \"+_vm._s(_vm.activeValue.length - 2)+\" more\")]):(index < 2)?_c('div',{staticClass:\"v-select__selection\"},[_vm._v(\" \"+_vm._s(_vm.withComma(item, index))+\" \")]):_vm._e()]}},{key:\"no-data\",fn:function(){return [_c('div',[_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"text-subtitle-1 font-weight-regular\"},[_vm._v(\" To start filtering, set \"),_c('code',[_vm._v(_vm._s(_vm.attrKey))]),_vm._v(\" attribute. \")])],1)],1),_c('div',{staticClass:\"my-4 d-flex justify-center\"},[_c('v-btn',{attrs:{\"href\":\"https://uptrace.dev/get/get-started.html#resource-attributes\",\"target\":\"_blank\",\"color\":\"primary\"}},[_c('span',[_vm._v(\"Open documentation\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1)],1)],1)]},proxy:true}]),model:{value:(_vm.activeValue),callback:function ($$v) {_vm.activeValue=$$v},expression:\"activeValue\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseUql } from '@/use/uql'\nimport { useDataSource, Item } from '@/use/datasource'\n\n// Misc\nimport { truncateMiddle } from '@/util/string'\nimport { extractFilterState } from '@/components/facet/lexer'\nimport { quote, escapeRe } from '@/util/string'\n\nexport default defineComponent({\n name: 'QuickSpanFilter',\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n name: {\n type: String,\n required: true,\n },\n attrKey: {\n type: String,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n const autocomplete = shallowRef()\n\n const attrValues = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes/${props.attrKey}`,\n params: {\n ...props.dateRange.axiosParams(),\n ...props.uql.axiosParams(),\n },\n cache: true,\n }\n })\n\n const activeValue = computed({\n get() {\n for (let part of props.uql.parts) {\n const state = extractFilterState(part.query)\n if (!state) {\n continue\n }\n if (state.attr === props.attrKey) {\n return state.values\n }\n }\n return []\n },\n set(values: string[]) {\n const editor = props.uql.createEditor()\n const re = new RegExp(\n `^where\\\\s+${escapeRe(props.attrKey)}\\\\s+(=|in|like|not\\\\s+like)\\\\s+`,\n 'i',\n )\n\n if (!values.length) {\n editor.filter((part) => !re.test(part))\n props.uql.query = editor.toString()\n return\n }\n\n let query: string\n if (values.length === 1) {\n query = `where ${props.attrKey} = ${quote(values[0])}`\n } else {\n const str = values.map((value) => quote(value)).join(', ')\n query = `where ${props.attrKey} in (${str})`\n }\n\n editor.replaceOrPush(re, query)\n props.uql.query = editor.toString()\n },\n })\n\n function withComma(item: Item, index: number): string {\n const value = truncateMiddle(item.value, 20)\n if (index > 0) {\n return ', ' + value\n }\n return value\n }\n\n function toggle(value: string) {\n const values = activeValue.value.slice()\n\n const index = values.indexOf(value)\n if (index >= 0) {\n values.splice(index, 1)\n } else {\n values.push(value)\n }\n\n activeValue.value = values\n }\n\n function toggleOne(itemValue: string) {\n let values: string[] = [itemValue]\n if (activeValue.value.length === 1 && activeValue.value.includes(itemValue)) {\n values = []\n }\n activeValue.value = values\n }\n\n return {\n autocomplete,\n activeValue,\n attrValues,\n withComma,\n toggle,\n toggleOne,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSpanFilter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSpanFilter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuickSpanFilter.vue?vue&type=template&id=01199939&scoped=true&\"\nimport script from \"./QuickSpanFilter.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuickSpanFilter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01199939\",\n null\n \n)\n\nexport default component.exports","\nimport { pick } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, useQueryStore, provideQueryStore } from '@/use/uql'\nimport { useProject } from '@/org/use-projects'\nimport { useAnnotations } from '@/org/use-annotations'\nimport { useSystems } from '@/tracing/system/use-systems'\n\n// Components\nimport TracingPlaceholder from '@/tracing/TracingPlaceholder.vue'\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport SystemPicker from '@/tracing/system/SystemPicker.vue'\nimport QuickSpanFilter from '@/tracing/query/QuickSpanFilter.vue'\n\n// Misc\nimport { isGroupSystem, isErrorSystem, AttrKey } from '@/models/otel'\nimport { DAY } from '@/util/fmt/date'\n\ninterface ChosenSystem {\n name: string\n groupCount: number\n}\n\nexport default defineComponent({\n name: 'Overview',\n components: {\n TracingPlaceholder,\n DateRangePicker,\n SystemPicker,\n QuickSpanFilter,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n useTitle('Overview')\n\n const project = useProject()\n\n const uql = useUql()\n provideQueryStore(useQueryStore(uql))\n\n useAnnotations(() => {\n return {\n ...props.dateRange.axiosParams(),\n }\n })\n\n const systems = useSystems(() => {\n return {\n ...props.dateRange.axiosParams(),\n ...uql.axiosParams(),\n }\n })\n\n const chosenSystems = computed((): ChosenSystem[] => {\n if (props.dateRange.duration > 3 * DAY) {\n return []\n }\n\n const chosenMap = new Map()\n\n for (let system of systems.items) {\n if (isGroupSystem(system.system)) {\n continue\n }\n if (!isErrorSystem(system.system)) {\n continue\n }\n\n const found = chosenMap.get(system.system)\n if (found) {\n found.groupCount += system.groupCount\n } else {\n chosenMap.set(system.system, {\n name: system.system,\n groupCount: system.groupCount,\n })\n }\n }\n\n return Array.from(chosenMap.values())\n })\n\n return {\n AttrKey,\n\n uql,\n project,\n systems,\n\n chosenSystems,\n pick,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Overview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Overview.vue?vue&type=template&id=ee15253a&scoped=true&\"\nimport script from \"./Overview.vue?vue&type=script&lang=ts&\"\nexport * from \"./Overview.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Overview.vue?vue&type=style&index=0&id=ee15253a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee15253a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[(_vm.attr === _vm.AttrKey.spanSystem)?_c('v-row',[_c('v-col',[_c('SystemQuickMetrics',{attrs:{\"loading\":!_vm.systems.status.hasData(),\"systems\":_vm.systems.items}})],1)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.attr)+\" overview\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary\",attrs:{\"to\":_vm.groupListRoute,\"small\":\"\"}},[_vm._v(\"View groups\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[(_vm.groups.error)?_c('ApiErrorCard',{attrs:{\"error\":_vm.groups.error}}):_c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems.activeSystems,\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams}})],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-center\"},[(_vm.error.statusCode)?_c('h1',{staticClass:\"text-h1\"},[_vm._v(_vm._s(_vm.error.statusCode))]):_vm._e(),_c('h2',{staticClass:\"mt-4 text-h5\"},[_vm._v(_vm._s(_vm.error.message))])])],1),(_vm.error.statusCode === 504)?_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-card',{attrs:{\"max-width\":\"700\",\"flat\":\"\"}},[_c('p',[_vm._v(\" Your query is taking a long time to complete. To improve the performance of your query, try the following: \")]),_c('ul',{staticClass:\"mb-4\"},[_c('li',[_vm._v(\" Narrow the date range, for example, select the \\\"Last 1 hour\\\" period if possible. \")]),_c('li',[_vm._v(\" Select a more specific system, for example, you can select the \"),_c('code',[_vm._v(\"http:all\")]),_vm._v(\" system if you're analyzing HTTP requests. \")]),_c('li',[_vm._v(\" Further narrow the scope by adding the \"),_c('code',[_vm._v(\".group_id\")]),_vm._v(\" filter, for example, \"),_c('code',[_vm._v(\"where .group_id = 123456789\")]),_vm._v(\". \")]),_c('li',[_vm._v(\" Consider using \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/enterprise.html\"}},[_vm._v(\"Uptrace Enterprise\")]),_vm._v(\" edition which supports data pre-aggregation for common queries. \")])]),_c('p',[_vm._v(\" You can also get in touch with us by \"),_c('a',{attrs:{\"href\":\"mailto:support@uptrace.dev\"}},[_vm._v(\"sending an email\")]),_vm._v(\" including the information below. \")]),_c('div',{staticClass:\"text--secondary\"},[_c('div',[_vm._v(\"Request id: \"+_vm._s(_vm.error.traceId))]),(_vm.progress.rows)?_c('div',[_vm._v(\"Rows read: \"),_c('NumValue',{attrs:{\"value\":_vm.progress.rows}})],1):_vm._e(),(_vm.progress.bytes)?_c('div',[_vm._v(\"Bytes read: \"),_c('BytesValue',{attrs:{\"value\":_vm.progress.bytes}})],1):_vm._e(),(_vm.progress.totalRows)?_c('div',[_vm._v(\" Total rows: \"),_c('NumValue',{attrs:{\"value\":_vm.progress.totalRows}})],1):_vm._e()])])],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { ApiError } from '@/use/promise'\n\ninterface Progress {\n rows: number\n bytes: number\n totalRows: number\n}\n\nexport default defineComponent({\n name: 'ApiErrorCard',\n props: {\n error: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const progress = computed((): Progress => {\n return props.error.data?.progress ?? {}\n })\n\n return { progress }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ApiErrorCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ApiErrorCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ApiErrorCard.vue?vue&type=template&id=15974870&scoped=true&\"\nimport script from \"./ApiErrorCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ApiErrorCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ApiErrorCard.vue?vue&type=style&index=0&id=15974870&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15974870\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.loading)?_c('v-row',_vm._l((8),function(i){return _c('v-col',{key:i},[_c('v-skeleton-loader',{attrs:{\"type\":\"card\",\"height\":\"100px\"}})],1)}),1):_c('v-row',{staticClass:\"metrics\",attrs:{\"justify\":\"center\",\"dense\":_vm.$vuetify.breakpoint.mdAndDown}},[_vm._l((_vm.metrics),function(metric,metricName){return [(metric.count || metric.rate)?_c('v-col',{key:metricName,attrs:{\"cols\":\"auto\"}},[_c('SystemQuickMetricCard',{attrs:{\"metric\":metric},scopedSlots:_vm._u([(metricName === 'failures')?{key:\"default\",fn:function({ metric }){return [_c('PctValue',{attrs:{\"a\":metric.errorCount,\"b\":metric.count}})]}}:null],null,true)})],1):_vm._e()]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"border-bottom\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\",\"min-width\":\"120\"}},[_c('v-row',{staticClass:\"no-gutters\"},[_c('v-col',{staticClass:\"px-3 py-4\"},[_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('div',_vm._g(_vm._b({staticClass:\"body-2 text-truncate text-uppercase blue-grey--text text--lighten-2\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.metric.name)+\" \")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.metric.tooltip))])]),_c('div',{staticClass:\"pt-4 text-h5 text-truncate\"},[_vm._t(\"default\",function(){return [_c('NumValue',{attrs:{\"value\":_vm.metric.rate,\"unit\":_vm.Unit.Rate,\"title\":`{0} ${_vm.metric.suffix}`}})]},{\"metric\":_vm.metric}),(_vm.metric.suffix)?_c('span',{staticClass:\"ml-2 text-subtitle-1 blue-grey--text text--lighten-3\"},[_vm._v(_vm._s(_vm.metric.suffix))]):_vm._e()],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'SystemMetricCard',\n\n props: {\n metric: {\n type: Object,\n required: true,\n },\n },\n\n setup() {\n return { Unit }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemQuickMetricCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemQuickMetricCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SystemQuickMetricCard.vue?vue&type=template&id=05ef845c&scoped=true&\"\nimport script from \"./SystemQuickMetricCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SystemQuickMetricCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SystemQuickMetricCard.vue?vue&type=style&index=0&id=05ef845c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05ef845c\",\n null\n \n)\n\nexport default component.exports","\nimport colors from 'vuetify/lib/util/colors'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { System } from '@/tracing/system/use-systems'\n\n// Components\nimport SystemQuickMetricCard from '@/tracing/system/SystemQuickMetricCard.vue'\n\n// Misc\nimport { isEventSystem, isGroupSystem, AttrKey } from '@/models/otel'\nimport { Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'SystemQuickMetrics',\n components: { SystemQuickMetricCard },\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const metrics = computed(() => {\n const metrics = {\n all: {\n name: 'Spans',\n tooltip: 'Total number of spans per minute',\n color: colors.teal.base,\n rate: 0,\n suffix: 'span/min',\n },\n http: {\n name: 'HTTP',\n tooltip: 'Number of HTTP requests per minute',\n color: colors.blue.base,\n rate: 0,\n suffix: 'req/min',\n },\n rpc: {\n name: 'RPC',\n tooltip: 'Number of RPC requests per minute',\n color: colors.orange.base,\n rate: 0,\n suffix: 'req/min',\n },\n db: {\n name: 'Database',\n tooltip: 'Number of database queries per minute',\n color: colors.purple.base,\n rate: 0,\n suffix: 'op/min',\n },\n inMemDb: {\n name: 'In-memory DB',\n tooltip: 'Number of in-memory database commands per minute',\n color: colors.indigo.base,\n rate: 0,\n suffix: 'op/min',\n },\n failures: {\n name: 'Failures',\n tooltip: `Number of spans with ${AttrKey.spanStatusCode} = \"error\" divided by total number of spans`,\n color: colors.red.base,\n count: 0,\n errorCount: 0,\n },\n logs: {\n name: 'Logs',\n tooltip: 'Number of logs per minute',\n rate: 0,\n suffix: 'log/min',\n },\n }\n\n for (let system of props.systems) {\n if (isGroupSystem(system.system)) {\n continue\n }\n\n metrics.all.rate += system.rate\n\n if (!isEventSystem(system.system)) {\n metrics.failures.count += system.count\n metrics.failures.errorCount += system.errorCount\n }\n\n if (system.system.startsWith('http:')) {\n metrics.http.rate += system.rate\n continue\n }\n\n if (system.system.startsWith('rpc:')) {\n metrics.rpc.rate += system.rate\n continue\n }\n\n if (isInMemDb(system.system)) {\n metrics.inMemDb.rate += system.rate\n continue\n }\n\n if (isDb(system.system)) {\n metrics.db.rate += system.rate\n continue\n }\n\n if (system.system.startsWith('log:')) {\n metrics.logs.rate += system.rate\n continue\n }\n }\n\n return metrics\n })\n\n return { Unit, metrics }\n },\n})\n\nfunction isDb(system: string): boolean {\n return system.startsWith('db:')\n}\n\nfunction isInMemDb(system: string): boolean {\n switch (system) {\n case 'db:redis':\n case 'db:memcache':\n return true\n }\n return false\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemQuickMetrics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemQuickMetrics.vue?vue&type=script&lang=ts&\"","\nimport Vue from 'vue'\nimport { VIcon } from 'vuetify/lib'\nimport { PropType } from 'vue'\n\n// Composables\nimport { UseOrder } from '@/use/order'\n\n// Styles\nimport 'vuetify/src/components/VDataTable/VDataTableHeader.sass'\n\nenum Align {\n Start = 'start',\n End = 'end',\n Center = 'center',\n}\n\nexport default Vue.component('ThSort', {\n functional: true,\n props: {\n value: {\n type: String,\n default: '',\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n align: {\n type: String as PropType,\n default: 'start',\n },\n },\n render(h, { props, data, slots }) {\n const content = [h('span', slots().default)]\n\n const icon = h(\n VIcon,\n {\n props: { size: 18 },\n class: 'v-data-table-header__icon',\n },\n 'mdi-arrow-up',\n )\n\n let textAlign: string\n\n switch (props.align) {\n case Align.Start:\n textAlign = 'text-left'\n content.push(icon)\n break\n case Align.End:\n textAlign = 'text-right'\n content.unshift(icon)\n break\n case Align.Center:\n textAlign = 'text-center'\n content.push(icon)\n break\n default:\n throw new Error(`unknown ${props.align}`)\n }\n\n return h(\n 'th',\n {\n ...data,\n class: ['text-no-wrap', textAlign, props.order.thClass(props.value)],\n on: {\n click() {\n props.order.toggle(props.value)\n },\n },\n },\n content,\n )\n },\n})\n","import { render, staticRenderFns } from \"./SystemQuickMetrics.vue?vue&type=template&id=f7786d3e&scoped=true&\"\nimport script from \"./SystemQuickMetrics.vue?vue&type=script&lang=ts&\"\nexport * from \"./SystemQuickMetrics.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f7786d3e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.groups.length)?_c('v-row',{attrs:{\"dense\":\"\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"7\",\"lg\":\"8\",\"xl\":\"9\"}},[_vm._t(\"actions\",function(){return [(_vm.systemFilterItems.length > 1)?_c('v-slide-group',{attrs:{\"multiple\":\"\",\"center-active\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.systemFilter),callback:function ($$v) {_vm.systemFilter=$$v},expression:\"systemFilter\"}},_vm._l((_vm.systemFilterItems),function(item,i){return _c('v-slide-item',{key:item.system,attrs:{\"value\":item.system},scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-btn',{class:{ 'ml-1': i > 0 },attrs:{\"input-value\":active,\"active-class\":\"light-blue white--text\",\"small\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":toggle}},[_vm._v(\" \"+_vm._s(item.system)+\" (\"+_vm._s(item.numGroup)+\") \")])]}}],null,true)})}),1):_vm._e()]})],2),_c('v-spacer'),(_vm.showPlottedColumnItems)?_c('v-col',{attrs:{\"cols\":\"5\",\"lg\":\"4\",\"xl\":\"3\"}},[_c('v-select',{attrs:{\"items\":_vm.plottableColumnItems,\"multiple\":\"\",\"dense\":\"\",\"filled\":\"\",\"hide-details\":\"auto\"},on:{\"input\":function($event){return _vm.$emit('update:plotted-columns', $event)}},model:{value:(_vm.internalPlottedColumns),callback:function ($$v) {_vm.internalPlottedColumns=$$v},expression:\"internalPlottedColumns\"}})],1):_vm._e()],1):_vm._e(),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('GroupsTable',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems,\"loading\":_vm.loading,\"groups\":_vm.pagedGroups,\"columns\":_vm.columns,\"plottable-columns\":_vm.plottableColumns,\"plotted-columns\":_vm.internalPlottedColumns,\"order\":_vm.order,\"axios-params\":_vm.axiosParams,\"show-system\":_vm.showSystem,\"hide-actions\":_vm.hideActions},on:{\"click:metrics\":function($event){_vm.activeGroup = $event\n _vm.dialog = true}}})],1)],1),_c('v-row',[_c('v-col',[_c('XPagination',{attrs:{\"pager\":_vm.pager}})],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"1400\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.activeGroup)?_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.activeGroup._query))]),_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}}),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('GroupMetrics',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeGroup.metrics,\"where\":_vm.activeGroup._query}})],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.groups,\"item-key\":\"_id\",\"items-per-page\":15,\"hide-default-footer\":\"\",\"single-expand\":\"\",\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc,\"must-sort\":\"\",\"dense\":_vm.dense},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, isExpanded, expand }){return [_c('GroupsTableRow',{attrs:{\"systems\":_vm.systems,\"grouping-columns\":_vm.groupingColumns,\"plain-columns\":_vm.plainColumns,\"plottable-columns\":_vm.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"axios-params\":_vm.axiosParams,\"headers\":_vm.headers,\"column-map\":_vm.columnMap,\"group\":item,\"is-span\":_vm.isSpanSystemGroup(item),\"hide-actions\":_vm.hideActions,\"is-expanded\":isExpanded,\"expand\":expand},on:{\"click:metrics\":function($event){return _vm.$emit('click:metrics', $event)}}})]}},{key:\"expanded-item\",fn:function({ headers, item }){return [_c('tr',{staticClass:\"v-data-table__expanded v-data-table__expanded__content\"},[_c('td',{staticClass:\"pt-2 pb-4\",attrs:{\"colspan\":headers.length}},[_c('PagedSpansCardLazy',{attrs:{\"date-range\":_vm.dateRange,\"axios-params\":_vm.axiosParams,\"where\":item._query,\"is-span\":_vm.isSpanSystemGroup(item)}})],1)])]}},{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"pa-4\"},[_c('div',{staticClass:\"mb-4\"},[_vm._v(\"There are no matching groups.Try to change filters.\")]),_c('v-btn',{attrs:{\"to\":{ name: 'TracingHelp' }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-help-circle-outline\")]),_c('span',[_vm._v(\"Help\")])],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{class:{ 'cursor-pointer': !_vm.hideActions },on:{\"click\":function($event){!_vm.hideActions && _vm.expand(!_vm.isExpanded)}}},[(_vm.headerValues.includes('_name'))?_c('td',{staticClass:\"word-break-all\"},[_vm._v(\" \"+_vm._s(_vm.group[_vm.AttrKey.displayName])+\" \")]):_vm._e(),_vm._l((_vm.plainColumns),function(col){return _c('td',{key:col.name},[_c('AnyValue',{attrs:{\"value\":_vm.group[col.name],\"unit\":col.unit}})],1)}),(_vm.headerValues.includes(_vm.AttrKey.spanSystem))?_c('td',[_c('router-link',{attrs:{\"to\":_vm.systemRoute},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_vm._v(\" \"+_vm._s(_vm.group[_vm.AttrKey.spanSystem])+\" \")])],1):_vm._e(),_vm._l((_vm.plottableColumns),function(col){return _c('td',{key:col.name},[_c('div',{staticClass:\"d-flex align-center\"},[(_vm.plottedColumns.includes(col.name))?_c('SparklineChart',{staticClass:\"mr-2\",attrs:{\"name\":col.name,\"line\":_vm.timeseries.data[col.name] ?? [],\"time\":_vm.timeseries.time,\"unit\":col.unit,\"color\":_vm.columnMap[col.name].color}}):_vm._e(),_c('NumValue',{attrs:{\"value\":_vm.group[col.name],\"name\":col.name,\"unit\":col.unit}})],1)])}),(!_vm.hideActions)?_c('td',{staticClass:\"text-right text-no-wrap\"},[_c('NewMonitorMenu',{attrs:{\"systems\":_vm.systemsForGroup(_vm.group),\"name\":_vm.group._name,\"where\":_vm.group._query},scopedSlots:_vm._u([{key:\"header-item\",fn:function(){return [_vm._t(\"summary-item\",null,{\"group\":_vm.group,\"isSpan\":_vm.isSpan})]},proxy:true}],null,true)}),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Filter spans for this group\",\"to\":_vm.itemListRoute},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_c('v-icon',[_vm._v(\"mdi-filter-variant\")])],1),(_vm.isExpanded)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Hide spans\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.expand(false)}}},[_c('v-icon',{attrs:{\"size\":\"30\"}},[_vm._v(\"mdi-chevron-up\")])],1):_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"View spans\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.expand(true)}}},[_c('v-icon',{attrs:{\"size\":\"30\"}},[_vm._v(\"mdi-chevron-down\")])],1)],1):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { omit, truncate } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { createQueryEditor, joinQuery, injectQueryStore } from '@/use/uql'\nimport { useGroupTimeseries, Group, ColumnInfo } from '@/tracing/use-explore-spans'\n\n// Components\nimport SparklineChart from '@/components/SparklineChart.vue'\nimport NewMonitorMenu from '@/tracing/NewMonitorMenu.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { MetricColumn } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GroupsTableRow',\n components: { SparklineChart, NewMonitorMenu },\n\n props: {\n systems: {\n type: Array as PropType,\n required: true,\n },\n query: {\n type: String,\n default: '',\n },\n groupingColumns: {\n type: Array as PropType,\n required: true,\n },\n plainColumns: {\n type: Array as PropType,\n required: true,\n },\n plottableColumns: {\n type: Array as PropType,\n required: true,\n },\n plottedColumns: {\n type: Array as PropType,\n required: true,\n },\n isSpan: {\n type: Boolean,\n required: true,\n },\n axiosParams: {\n type: Object,\n default: undefined,\n },\n\n headers: {\n type: Array,\n required: true,\n },\n columnMap: {\n type: Object as PropType>,\n required: true,\n },\n group: {\n type: Object as PropType,\n required: true,\n },\n hideActions: {\n type: Boolean,\n default: false,\n },\n isExpanded: {\n type: Boolean,\n required: true,\n },\n expand: {\n type: Function,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const { query, where } = injectQueryStore()\n\n const timeseries = useGroupTimeseries(() => {\n if (!props.plottedColumns.length) {\n return undefined\n }\n\n const query = joinQuery([props.axiosParams.query, props.group._query])\n return {\n ...props.axiosParams,\n query,\n column: props.plottedColumns,\n }\n })\n\n const headerValues = computed((): string[] => {\n return props.headers.map((header: any) => header.value)\n })\n\n const systemRoute = computed(() => {\n const query = createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, props.isSpan)\n .add(where.value)\n .toString()\n return {\n name: 'SpanGroupList',\n query: {\n ...omit(route.value.query, 'columns'),\n query: query,\n system: props.group[AttrKey.spanSystem],\n },\n }\n })\n\n const itemListRoute = computed(() => {\n const editor = query.value\n ? createQueryEditor(query.value)\n : createQueryEditor().exploreAttr(AttrKey.spanGroupId, props.isSpan)\n editor.add(props.group._query)\n\n for (let colName of props.groupingColumns) {\n const value = props.group[colName]\n editor.where(colName, '=', value)\n }\n\n const queryParams: Record = {\n ...route.value.query,\n query: editor.toString(),\n }\n\n const system = props.group[AttrKey.spanSystem]\n if (system) {\n queryParams.system = system\n }\n\n return {\n name: 'SpanList',\n query: queryParams,\n }\n })\n\n function systemsForGroup(): string[] {\n const system = props.group[AttrKey.spanSystem]\n if (system) {\n return [system]\n }\n return props.systems\n }\n\n return {\n AttrKey,\n\n timeseries,\n headerValues,\n\n systemRoute,\n itemListRoute,\n\n systemsForGroup,\n truncate,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupsTableRow.vue?vue&type=template&id=639342b8&scoped=true&\"\nimport script from \"./GroupsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639342b8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('SpansTable',_vm._g({staticClass:\"mb-4\",attrs:{\"date-range\":_vm.dateRange,\"loading\":_vm.spans.loading,\"spans\":_vm.spans.items,\"order\":_vm.spans.order,\"pager\":_vm.spans.pager,\"is-span\":_vm.isSpan}},_vm.listeners)),_c('XPagination',{attrs:{\"pager\":_vm.spans.pager}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-simple-table',[(_vm.spans.length)?_c('thead',{staticClass:\"v-data-table-header\"},[_c('tr',[_c('th',[_vm._v(\"Span Name\")]),(_vm.showSystem)?_c('th',[_vm._v(\"System\")]):_vm._e(),_c('th'),_vm._l((_vm.columns),function(col){return _c('ThOrder',{key:col,attrs:{\"value\":col,\"order\":_vm.order}},[_c('span',[_vm._v(_vm._s(col))])])}),_c('ThOrder',{attrs:{\"value\":_vm.AttrKey.spanTime,\"order\":_vm.order}},[_vm._v(\"Time\")]),(_vm.isSpan)?_c('ThOrder',{attrs:{\"value\":_vm.AttrKey.spanDuration,\"order\":_vm.order,\"align\":\"end\"}},[_c('span',[_vm._v(\"Dur.\")])]):_vm._e()],2)]):_vm._e(),(_vm.loading)?_c('thead',[_c('tr',{staticClass:\"v-data-table__progress\"},[_c('th',{staticClass:\"column\",attrs:{\"colspan\":\"99\"}},[_c('v-progress-linear',{attrs:{\"height\":\"2\",\"absolute\":\"\",\"indeterminate\":\"\"}})],1)])]):_vm._e(),(!_vm.spans.length)?_c('tbody',[_c('tr',{staticClass:\"v-data-table__empty-wrapper\"},[_c('td',{staticClass:\"py-16\",attrs:{\"colspan\":\"99\"}},[_c('div',{staticClass:\"mb-4\"},[_vm._v(\"There are no matching spans. Try to change filters.\")]),_c('v-btn',{attrs:{\"to\":{ name: 'TracingHelp' }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-help-circle-outline\")]),_c('span',[_vm._v(\"Help\")])],1)],1)])]):_vm._e(),_c('tbody',[_vm._l((_vm.spans),function(span,index){return [_c('tr',{key:`a-${index}`,staticClass:\"cursor-pointer\",on:{\"click\":function($event){return _vm.showSpan(span)}}},[_c('td',{staticClass:\"word-break-all\"},[_vm._v(\" \"+_vm._s(span.displayName)+\" \")]),(_vm.showSystem)?_c('td',[_c('router-link',{attrs:{\"to\":_vm.systemRoute(span)},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(_vm._s(span.system))])],1):_vm._e(),_c('td',[_c('SpanChips',{attrs:{\"span\":span,\"clickable\":'click:chip' in _vm.$listeners},on:{\"click:chip\":function($event){return _vm.$emit('click:chip', $event)}}})],1),_vm._l((_vm.columns),function(col){return _c('td',{key:col},[_c('AnyValue',{attrs:{\"value\":span.attrs[col],\"name\":col}})],1)}),_c('td',{staticClass:\"text-no-wrap\"},[_c('DateValue',{attrs:{\"value\":span.time,\"format\":\"relative\"}})],1),(_vm.isSpan)?_c('td',{staticClass:\"text-right\"},[_c('DurationValue',{attrs:{\"value\":span.duration,\"fixed\":\"\"}})],1):_vm._e()],2)]})],2)]),_c('v-dialog',{attrs:{\"max-width\":\"1280\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-sheet',[(_vm.activeSpan)?_c('SpanCard',{attrs:{\"date-range\":_vm.internalDateRange,\"span\":_vm.activeSpan,\"fluid\":\"\",\"show-toolbar\":\"\"}}):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('PageToolbar',{attrs:{\"loading\":_vm.loading,\"fluid\":_vm.fluid}},[_c('v-breadcrumbs',{attrs:{\"items\":_vm.breadcrumbs,\"divider\":\">\",\"large\":\"\"}}),_c('v-spacer'),_c('FixedDateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"around\":_vm.span.time}})],1),_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":_vm.fluid}},[_c('SpanBodyCard',{attrs:{\"date-range\":_vm.dateRange,\"span\":_vm.span},on:{\"find:span\":function($event){return _vm.$emit('find:span', $event)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor } from '@/use/uql'\n\n// Components\nimport FixedDateRangePicker from '@/components/date/FixedDateRangePicker.vue'\nimport SpanBodyCard from '@/tracing/SpanBodyCard.vue'\n\n// Utitlies\nimport { Span } from '@/models/span'\nimport { isSpanSystem, AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'SpanCard',\n components: { FixedDateRangePicker, SpanBodyCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n span: {\n type: Object as PropType,\n required: true,\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const breadcrumbs = computed(() => {\n const bs: any[] = []\n\n bs.push({\n text: props.span.system,\n to: {\n name: 'SpanGroupList',\n params: { projectId: props.span.projectId },\n query: {\n ...props.dateRange.queryParams(),\n system: props.span.system,\n },\n },\n exact: true,\n })\n\n bs.push({\n text: truncate(props.span.displayName, { length: 40 }),\n to: {\n name: 'SpanList',\n params: { projectId: props.span.projectId },\n query: {\n ...props.dateRange.queryParams(),\n system: props.span.system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, isSpanSystem(props.span.system))\n .where(AttrKey.spanGroupId, '=', props.span.groupId)\n .toString(),\n },\n },\n exact: true,\n })\n\n if (!props.span.standalone && props.span.traceId) {\n bs.push({\n text: props.span.traceId,\n to: {\n name: 'TraceShow',\n params: {\n projectId: props.span.projectId,\n traceId: props.span.traceId,\n },\n },\n exact: true,\n })\n }\n\n bs.push({\n text: props.span.id !== '0' ? props.span.id : props.span.traceId,\n to: {\n name: 'TraceSpanShow',\n params: {\n projectId: props.span.projectId,\n traceId: props.span.traceId,\n spanId: props.span.id,\n },\n },\n exact: true,\n })\n\n return bs\n })\n\n return { breadcrumbs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanCard.vue?vue&type=template&id=37cbc885&scoped=true&\"\nimport script from \"./SpanCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37cbc885\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./ThOrder.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThOrder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1633cb46\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ThOrder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ThOrder.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[(_vm.span.statusCode === 'error')?_c('v-btn',{staticClass:\"mr-1\",class:{ 'cursor-default': !_vm.clickable },attrs:{\"icon\":\"\",\"title\":`${_vm.AttrKey.spanStatusCode} = 'error'`},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', { key: _vm.AttrKey.spanStatusCode, value: 'error' })}}},[_c('v-icon',{attrs:{\"color\":\"error\"}},[_vm._v(\" mdi-alert-circle-outline \")])],1):_vm._e(),(_vm.traceId)?_c('v-chip',{attrs:{\"to\":_vm.traceRoute,\"title\":\"View trace\",\"color\":\"bg--light-primary\",\"label\":\"\",\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.traceId)+\" \")]):_vm._e(),_vm._l((_vm.chips),function(chip){return _c('v-chip',{key:chip.key,staticClass:\"ml-1\",class:{ 'cursor-default': !_vm.clickable },attrs:{\"color\":\"bg--light-primary\",\"label\":\"\",\"small\":\"\",\"title\":`${chip.key}: ${chip.value}`},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:chip', chip)}}},[_vm._v(\" \"+_vm._s(chip.text)+\" \")])}),(_vm.events.length)?_c('v-chip',{staticClass:\"ml-1\",attrs:{\"color\":\"bg--light-primary\",\"label\":\"\",\"small\":\"\"}},[_c('strong',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.events.length))]),_c('span',[_vm._v(_vm._s(_vm.events.length === 1 ? 'event' : 'events'))])]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { isEventSystem, AttrKey } from '@/models/otel'\nimport { AttrMap, Span, SpanEvent } from '@/models/span'\n\nexport interface SpanChip {\n key: string\n value: any\n text: string\n}\n\nexport default defineComponent({\n name: 'SpanChips',\n\n props: {\n span: {\n type: Object as PropType,\n required: true,\n },\n showOperation: {\n type: Boolean,\n default: false,\n },\n traceMode: {\n type: Boolean,\n default: false,\n },\n clickable: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const traceId = computed(() => {\n if (props.traceMode) {\n return ''\n }\n if (props.span.standalone) {\n return ''\n }\n return props.span.traceId.slice(-6)\n })\n const traceRoute = computed(() => {\n if (!traceId.value) {\n return ''\n }\n return {\n name: 'TraceShow',\n params: {\n traceId: props.span.traceId,\n },\n query: {\n span: isEventSystem(props.span.system) ? props.span.parentId : props.span.id,\n },\n }\n })\n\n const events = computed((): SpanEvent[] => {\n return props.span?.events ?? []\n })\n\n const chips = computed(() => {\n const chips: SpanChip[] = []\n\n const env = props.span.attrs[AttrKey.deploymentEnvironment]\n if (env) {\n chips.push({ key: AttrKey.deploymentEnvironment, value: env, text: env })\n }\n\n const service = props.span.attrs[AttrKey.serviceName]\n if (service) {\n chips.push({ key: AttrKey.serviceName, value: service, text: service })\n }\n\n // Add kind to distinguish `client` and `server` spans.\n if (props.span.kind !== 'internal') {\n chips.push({ key: AttrKey.spanKind, value: props.span.kind, text: props.span.kind })\n }\n\n if (props.traceMode) {\n const spanSystem = props.span.system\n if (!spanSystem.endsWith(`:${service}`)) {\n chips.push({ key: AttrKey.spanSystem, value: spanSystem, text: spanSystem })\n }\n }\n\n pushHttpStatusChip(chips, props.span.attrs)\n\n return chips\n })\n\n return {\n AttrKey,\n\n traceId,\n traceRoute,\n\n events,\n chips,\n }\n },\n})\n\nfunction pushHttpStatusChip(chips: SpanChip[], attrs: AttrMap) {\n const httpCode = attrs[AttrKey.httpStatusCode]\n if (typeof httpCode === 'number' && httpCode != 0 && (httpCode < 200 || httpCode >= 300)) {\n chips.push({ key: AttrKey.httpStatusCode, value: httpCode, text: String(httpCode) })\n }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanChips.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanChips.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanChips.vue?vue&type=template&id=45b9c4c6&scoped=true&\"\nimport script from \"./SpanChips.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanChips.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpanChips.vue?vue&type=style&index=0&id=45b9c4c6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45b9c4c6\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, nextTick, watch, PropType } from 'vue'\n\n// Composables\nimport { useDateRange, UseDateRange } from '@/use/date-range'\nimport { useRoute } from '@/use/router'\nimport { UsePager } from '@/use/pager'\nimport { UseOrder } from '@/use/order'\nimport { useAnnotations } from '@/org/use-annotations'\n\n// Components\nimport SpanCard from '@/tracing/SpanCard.vue'\nimport ThOrder from '@/components/ThOrder.vue'\nimport SpanChips from '@/tracing/SpanChips.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { Span } from '@/models/span'\n\nexport default defineComponent({\n name: 'SpansTable',\n components: {\n ThOrder,\n SpanCard,\n SpanChips,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n loading: {\n type: Boolean,\n required: true,\n },\n spans: {\n type: Array as PropType,\n required: true,\n },\n pager: {\n type: Object as PropType,\n required: true,\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n columns: {\n type: Array as PropType,\n default: () => [],\n },\n isSpan: {\n type: Boolean,\n required: true,\n },\n showSystem: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const route = useRoute()\n\n function systemRoute(span: Span) {\n return {\n query: {\n ...route.value.query,\n system: span.system,\n },\n }\n }\n\n function onSortBy() {\n nextTick(() => {\n props.order.desc = true\n })\n }\n\n // Dialog\n //-------\n\n const internalDateRange = useDateRange()\n useAnnotations(() => {\n return {\n ...internalDateRange.axiosParams(),\n }\n })\n\n const dialog = shallowRef(false)\n const activeSpan = shallowRef()\n\n watch(route, () => {\n dialog.value = false\n })\n\n watch(dialog, (dialog) => {\n if (dialog) {\n internalDateRange.syncWith(props.dateRange)\n }\n })\n\n function showSpan(span: Span) {\n activeSpan.value = span\n dialog.value = true\n }\n\n return {\n internalDateRange,\n AttrKey,\n dialog,\n activeSpan,\n\n systemRoute,\n onSortBy,\n\n showSpan,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpansTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpansTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpansTable.vue?vue&type=template&id=7e47123f&scoped=true&\"\nimport script from \"./SpansTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpansTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e47123f\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useRouter } from '@/use/router'\nimport { useSpans } from '@/tracing/use-spans'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport SpansTable from '@/tracing/SpansTable.vue'\nimport { SpanChip } from '@/tracing/SpanChips.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'PagedSpansCardLazy',\n components: { SpansTable },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n isSpan: {\n type: Boolean,\n required: true,\n },\n uql: {\n type: Object as PropType,\n default: undefined,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n system: {\n type: String,\n default: undefined,\n },\n where: {\n type: String,\n default: '',\n },\n },\n\n setup(props) {\n const { route } = useRouter()\n\n const spans = useSpans(() => {\n const query = [props.axiosParams.query, props.where].filter((s) => s).join(' | ')\n const params: Record = {\n ...props.axiosParams,\n query,\n }\n\n if (props.system) {\n params.system = props.system\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/spans`,\n params,\n }\n })\n\n spans.order.column = props.isSpan ? AttrKey.spanDuration : AttrKey.spanTime\n spans.order.desc = true\n\n const listeners = computed(() => {\n if (!props.uql) {\n return {}\n }\n return { 'click:chip': onChipClick }\n })\n\n function onChipClick(chip: SpanChip) {\n const editor = props.uql.createEditor()\n editor.where(chip.key, '=', chip.value)\n props.uql.commitEdits(editor)\n }\n\n return { spans, listeners, onChipClick }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedSpansCardLazy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedSpansCardLazy.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PagedSpansCardLazy.vue?vue&type=template&id=1809a107&scoped=true&\"\nimport script from \"./PagedSpansCardLazy.vue?vue&type=script&lang=ts&\"\nexport * from \"./PagedSpansCardLazy.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1809a107\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { UseOrder } from '@/use/order'\nimport { Group, ColumnInfo } from '@/tracing/use-explore-spans'\n\n// Components\nimport GroupsTableRow from '@/tracing/GroupsTableRow.vue'\nimport PagedSpansCardLazy from '@/tracing/PagedSpansCardLazy.vue'\n\n// Misc\nimport { isSpanSystem, AttrKey } from '@/models/otel'\nimport { updateColumnMap, emptyMetricColumn, MetricColumn } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GroupsTable',\n components: {\n GroupsTableRow,\n PagedSpansCardLazy,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n query: {\n type: String,\n default: '',\n },\n loading: {\n type: Boolean,\n required: true,\n },\n groups: {\n type: Array as PropType,\n required: true,\n },\n columns: {\n type: Array as PropType,\n required: true,\n },\n plottableColumns: {\n type: Array as PropType,\n required: true,\n },\n plottedColumns: {\n type: Array as PropType,\n default: () => [],\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n dense: {\n type: Boolean,\n default: false,\n },\n showSystem: {\n type: Boolean,\n default: false,\n },\n hideActions: {\n type: Boolean,\n default: false,\n },\n axiosParams: {\n type: Object,\n required: true,\n },\n },\n\n setup(props) {\n const hasGroupName = computed((): boolean => {\n return hasColumn(AttrKey.displayName)\n })\n\n const hasSystemColumn = computed(() => {\n if (props.columns.findIndex((col) => col.name === AttrKey.spanSystem) >= 0) {\n return true\n }\n if (!props.showSystem) {\n return false\n }\n return hasColumn(AttrKey.spanSystem)\n })\n\n const groupingColumns = computed(() => {\n return props.columns.filter((col) => col.isGroup).map((col) => col.name)\n })\n\n const plainColumns = computed(() => {\n const blacklist: string[] = [AttrKey.spanSystem as string]\n if (hasGroupName.value) {\n blacklist.push(AttrKey.spanGroupId, AttrKey.displayName)\n }\n return props.columns.filter((col) => {\n if (props.plottableColumns.findIndex((item) => item.name === col.name) >= 0) {\n return false\n }\n if (blacklist.indexOf(col.name) >= 0) {\n return false\n }\n return true\n })\n })\n\n const headers = computed(() => {\n const headers = []\n\n if (hasGroupName.value) {\n headers.push({\n text: 'Group name',\n value: '_name',\n sortable: true,\n align: 'start',\n })\n }\n\n for (let col of plainColumns.value) {\n headers.push({\n text: shortColumnName(col.name),\n value: col.name,\n sortable: true,\n align: 'start',\n })\n }\n\n if (hasSystemColumn.value) {\n headers.push({\n text: 'System',\n value: AttrKey.spanSystem,\n sortable: true,\n align: 'start',\n })\n }\n\n for (let col of props.plottableColumns) {\n headers.push({\n text: shortColumnName(col.name),\n value: col.name,\n sortable: true,\n align: 'start',\n })\n }\n\n headers.push({ text: '', value: 'actions', sortable: false, align: 'end' })\n\n return headers\n })\n\n const columnMap = computed((): Record => {\n const colMap: Record = {}\n updateColumnMap(colMap, props.columns, emptyMetricColumn)\n return colMap\n })\n\n function hasColumn(name: string): boolean {\n if (props.groups.length) {\n const item = props.groups[0]\n return name in item\n }\n\n const index = props.columns.findIndex((col) => col.name === name)\n return index >= 0\n }\n\n function shortColumnName(name: string) {\n switch (name) {\n case AttrKey.spanCountPerMin:\n return 'count'\n case AttrKey.spanErrorCount:\n return 'errors'\n case AttrKey.spanErrorRate:\n return 'err%'\n }\n\n let m = name.match(/^([0-9a-z]+)\\(_duration\\)$/)\n if (m) {\n return m[1]\n }\n\n m = name.match(/^(\\w+)_per_(\\w+)$/)\n if (m) {\n return `${m[1]}/${m[2]}`\n }\n\n return name\n }\n\n function isSpanSystemGroup(group: Group) {\n const system = group[AttrKey.spanSystem]\n if (system) {\n return isSpanSystem(system)\n }\n return isSpanSystem(...props.systems)\n }\n\n return {\n AttrKey,\n\n groupingColumns,\n plainColumns,\n headers,\n columnMap,\n\n isSpanSystemGroup,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupsTable.vue?vue&type=template&id=150362e6&scoped=true&\"\nimport script from \"./GroupsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GroupsTable.vue?vue&type=style&index=0&id=150362e6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"150362e6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{staticClass:\"mb-3\",attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"3\",\"md\":\"2\"}},[_c('v-text-field',{staticClass:\"pt-0\",attrs:{\"placeholder\":\"Filter metrics\",\"clearable\":\"\",\"dense\":\"\",\"outlined\":\"\",\"hide-details\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1),_c('v-col',{attrs:{\"cols\":\"9\",\"md\":\"10\"}},[_c('v-slide-group',{staticClass:\"ml-2\",attrs:{\"center-active\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.activePrefix),callback:function ($$v) {_vm.activePrefix=$$v},expression:\"activePrefix\"}},_vm._l((_vm.prefixes),function(item,i){return _c('v-slide-item',{key:item.prefix,attrs:{\"value\":item},scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-btn',{class:{ 'ml-1': i > 0 },attrs:{\"input-value\":active,\"active-class\":\"light-blue white--text\",\"small\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":toggle}},[_vm._v(\" \"+_vm._s(item.prefix)+\" \")])]}}],null,true)})}),1)],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},_vm._l((_vm.filteredMetrics),function(metric,i){return _c('v-col',{key:metric.name,attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-expansion-panels',{attrs:{\"value\":i < 20 ? 0 : undefined}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',{staticClass:\"user-select-text\",attrs:{\"title\":metric.description}},[_c('div',[_c('span',{staticClass:\"text-subtitle-2\"},[_vm._v(_vm._s(metric.name)+\" (\"+_vm._s(metric.numTimeseries)+\")\")]),(metric.instrument)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"title\":\"Instrument\"}},[_vm._v(_vm._s(metric.instrument))]):_vm._e(),(metric.unit)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"title\":\"Unit\"}},[_vm._v(_vm._s(metric.unit))]):_vm._e()],1)]),_c('v-expansion-panel-content',[_c('GroupMetricsItem',{attrs:{\"date-range\":_vm.dateRange,\"metric\":metric,\"where\":_vm.where}})],1)],1)],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('LegendaryChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"legend\":_vm.legend}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',{attrs:{\"no-gutters\":\"\",\"justify\":\"space-around\"}},[_c('v-col',{attrs:{\"cols\":_vm.legend.placement === _vm.LegendPlacement.Bottom ? 12 : ''}},[_c('MetricChart',{attrs:{\"loading\":_vm.loading,\"resolved\":_vm.resolved,\"timeseries\":_vm.activeTimeseries,\"time\":_vm.time,\"chart-kind\":_vm.chartKind,\"height\":_vm.chartHeight,\"annotations\":_vm.annotations,\"event-bus\":_vm.eventBus}})],1),(_vm.legend.type !== _vm.LegendType.None)?_c('v-col',{directives:[{name:\"element-resize\",rawName:\"v-element-resize\"}],staticClass:\"pr-2\",attrs:{\"cols\":\"auto\"},on:{\"resize\":_vm.onLegendResize}},[(_vm.legend.type === _vm.LegendType.Table)?_c('ChartLegendTable',{attrs:{\"loading\":_vm.loading,\"timeseries\":_vm.timeseries,\"values\":_vm.legend.values,\"max-length\":_vm.legend.maxLength ?? 40},on:{\"current-items\":function($event){_vm.currentTimeseries = $event},\"hover:item\":function($event){return _vm.eventBus.emit('hover', $event)}}}):(_vm.legend.type === _vm.LegendType.List)?_c('ChartLegendList',{attrs:{\"loading\":_vm.loading,\"timeseries\":_vm.timeseries,\"values\":_vm.legend.values,\"direction\":_vm.legend.placement === _vm.LegendPlacement.Bottom ? 'row' : 'column'},on:{\"current-items\":function($event){_vm.currentTimeseries = $event},\"hover:item\":function($event){return _vm.eventBus.emit('hover', $event)}}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex flex-wrap justify-center text-caption\",class:`flex-${_vm.direction}`},_vm._l((_vm.timeseries),function(item){return _c('div',{key:item.name,staticClass:\"mx-2 d-flex align-center cursor-pointer\",class:{ 'text--secondary': !_vm.isSelected(item) },on:{\"mouseenter\":function($event){return _vm.$emit('hover:item', { item: item, hover: true })},\"mouseleave\":function($event){return _vm.$emit('hover:item', { item: item, hover: false })},\"click\":function($event){$event.stopPropagation();return _vm.toggle(item)}}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"size\":\"16\",\"color\":_vm.isSelected(item) ? item.color : 'grey'}},[_vm._v(\"mdi-circle\")]),_c('div',[_vm._v(_vm._s(_vm.truncateMiddle(item.name, 60)))]),_vm._l((_vm.values),function(metric){return _c('div',{key:metric,staticClass:\"ml-1 font-weight-medium\"},[_c('NumValue',{attrs:{\"value\":item[metric],\"unit\":item.unit,\"format\":\"short\",\"title\":`${metric}: {0}`}})],1)})],2)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, watch, PropType } from 'vue'\n\n// Misc\nimport { StyledTimeseries, LegendValue } from '@/metrics/types'\nimport { truncateMiddle } from '@/util/string'\n\nexport default defineComponent({\n name: 'ChartLegendList',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n timeseries: {\n type: Array as PropType,\n required: true,\n },\n values: {\n type: Array as PropType,\n default: () => [LegendValue.Avg, LegendValue.Last, LegendValue.Min, LegendValue.Max],\n },\n direction: {\n type: String,\n default: 'row',\n },\n },\n\n setup(props, ctx) {\n const selectedTimeseries = shallowRef([])\n watch(\n () => props.timeseries,\n (timeseries) => {\n selectedTimeseries.value = timeseries\n },\n { immediate: true },\n )\n watch(\n selectedTimeseries,\n (selectedTimeseries) => {\n ctx.emit('current-items', selectedTimeseries)\n },\n { immediate: true },\n )\n\n function toggle(ts: StyledTimeseries) {\n const items = selectedTimeseries.value.slice()\n const index = items.findIndex((item) => item.id === ts.id)\n if (index >= 0) {\n items.splice(index, 1)\n } else {\n items.push(ts)\n }\n selectedTimeseries.value = items\n }\n\n function isSelected(ts: StyledTimeseries): boolean {\n const index = selectedTimeseries.value.findIndex((item) => item.id === ts.id)\n return index >= 0\n }\n\n return {\n selectedTimeseries,\n toggle,\n isSelected,\n\n truncateMiddle,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLegendList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ChartLegendList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChartLegendList.vue?vue&type=template&id=1e45853b&scoped=true&\"\nimport script from \"./ChartLegendList.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChartLegendList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e45853b\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { injectAnnotations } from '@/org/use-annotations'\n\n// Components\nimport MetricChart from '@/metrics/MetricChart.vue'\nimport ChartLegendTable from '@/metrics/ChartLegendTable.vue'\nimport ChartLegendList from '@/metrics/ChartLegendList.vue'\n\n// Misc\nimport { EventBus } from '@/models/eventbus'\nimport {\n ChartKind,\n ChartLegend,\n LegendType,\n LegendPlacement,\n StyledTimeseries,\n} from '@/metrics/types'\n\nexport default defineComponent({\n name: 'LegendaryChart',\n components: {\n ChartLegendTable,\n ChartLegendList,\n MetricChart,\n },\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n resolved: {\n type: Boolean,\n required: true,\n },\n timeseries: {\n type: Array as PropType,\n required: true,\n },\n time: {\n type: Array as PropType,\n required: true,\n },\n chartKind: {\n type: String as PropType,\n default: ChartKind.Line,\n },\n legend: {\n type: Object as PropType,\n required: true,\n },\n height: {\n type: Number,\n default: 200,\n },\n },\n\n setup(props, ctx) {\n const eventBus = new EventBus()\n\n const legendHeight = shallowRef(0)\n function onLegendResize(event: any) {\n legendHeight.value = event.detail.height\n }\n\n const chartHeight = computed(() => {\n const minHeight = 140\n\n if (\n props.legend.type === LegendType.None ||\n props.legend.placement === LegendPlacement.Right\n ) {\n return props.height\n }\n\n switch (props.legend.type) {\n case LegendType.Table: {\n const height = props.height - legendHeight.value\n return Math.max(height, minHeight)\n }\n case LegendType.List: {\n const height = props.height - legendHeight.value\n return Math.max(height, minHeight)\n }\n default:\n console.error(`unsupported legend type: ${props.legend.type}`)\n return props.height\n }\n })\n\n const currentTimeseries = shallowRef()\n const activeTimeseries = computed(() => {\n if (props.legend.type !== LegendType.None && currentTimeseries.value) {\n return currentTimeseries.value\n }\n return props.timeseries\n })\n\n return {\n LegendType,\n LegendPlacement,\n\n annotations: injectAnnotations(),\n\n chartHeight,\n\n eventBus,\n currentTimeseries,\n activeTimeseries,\n\n onLegendResize,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./LegendaryChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./LegendaryChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LegendaryChart.vue?vue&type=template&id=5ac98e33&scoped=true&\"\nimport script from \"./LegendaryChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./LegendaryChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ac98e33\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { defaultMetricAlias, defaultMetricQuery } from '@/metrics/use-metrics'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\n\n// Components\nimport LegendaryChart from '@/metrics/LegendaryChart.vue'\n\n// Misc\nimport { Metric, LegendType, LegendPlacement, LegendValue } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GroupMetricsItem',\n components: { LegendaryChart },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metric: {\n type: Object as PropType,\n required: true,\n },\n where: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const legend = computed(() => {\n return {\n type: LegendType.List,\n placement: LegendPlacement.Bottom,\n values: [LegendValue.Avg],\n }\n })\n\n const timeseries = useTimeseries(() => {\n const alias = defaultMetricAlias(props.metric.name)\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.metric.name,\n alias,\n query: defaultMetricQuery(props.metric.instrument, alias) + ' | ' + props.where,\n }\n })\n\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n computed(() => ({})),\n computed(() => ({})),\n )\n\n return { legend, timeseries, styledTimeseries }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupMetricsItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupMetricsItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupMetricsItem.vue?vue&type=template&id=9913eeaa&scoped=true&\"\nimport script from \"./GroupMetricsItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupMetricsItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9913eeaa\",\n null\n \n)\n\nexport default component.exports","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport GroupMetricsItem from '@/metrics/GroupMetricsItem.vue'\n\n// Misc\nimport { Metric } from '@/metrics/types'\nimport { buildPrefixes, Prefix } from '@/models/key-prefixes'\n\nexport default defineComponent({\n name: 'GroupMetrics',\n components: { GroupMetricsItem },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n where: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const searchInput = shallowRef('')\n const activePrefix = shallowRef()\n const prefixes = computed(() => {\n const keys = props.metrics.map((metric) => metric.name)\n return buildPrefixes(keys)\n })\n\n const filteredMetrics = computed((): Metric[] => {\n let metrics = props.metrics\n\n if (activePrefix.value) {\n metrics = props.metrics.filter((metric) => {\n return activePrefix.value!.keys.includes(metric.name)\n })\n }\n\n if (searchInput.value) {\n metrics = fuzzyFilter(metrics, searchInput.value, { key: 'name' })\n }\n\n return metrics\n })\n\n return {\n searchInput,\n activePrefix,\n prefixes,\n filteredMetrics,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupMetrics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupMetrics.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupMetrics.vue?vue&type=template&id=058c1ccc&scoped=true&\"\nimport script from \"./GroupMetrics.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupMetrics.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GroupMetrics.vue?vue&type=style&index=0&id=058c1ccc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"058c1ccc\",\n null\n \n)\n\nexport default component.exports","\nimport { orderBy } from 'lodash-es'\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { usePager } from '@/use/pager'\nimport { UseOrder } from '@/use/order'\nimport { UseDateRange } from '@/use/date-range'\nimport { Group, ColumnInfo } from '@/tracing/use-explore-spans'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport GroupsTable from '@/tracing/GroupsTable.vue'\nimport GroupMetrics from '@/metrics/GroupMetrics.vue'\n\n// Misc\nimport { isGroupSystem, AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'PagedGroupsCard',\n components: { DateRangePicker, GroupsTable, GroupMetrics },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n loading: {\n type: Boolean,\n required: true,\n },\n groups: {\n type: Array as PropType,\n required: true,\n },\n columns: {\n type: Array as PropType,\n required: true,\n },\n plottableColumns: {\n type: Array as PropType,\n required: true,\n },\n plottedColumns: {\n type: Array as PropType,\n default: () => [],\n },\n showPlottedColumnItems: {\n type: Boolean,\n default: false,\n },\n hideActions: {\n type: Boolean,\n default: false,\n },\n\n order: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n default: undefined,\n },\n },\n\n setup(props, ctx) {\n const dialog = shallowRef(false)\n const activeGroup = shallowRef()\n\n const showSystem = computed(() => {\n const systems = props.systems\n if (systems.length > 1) {\n return true\n }\n if (systems.length === 1) {\n return isGroupSystem(systems[0])\n }\n return false\n })\n\n const systemFilter = shallowRef([])\n const systemFilterItems = computed((): SystemFilter[] => {\n const items = buildSystemFilters(props.groups)\n if (items.length <= 5) {\n return items\n }\n return buildTypeFilters(props.groups)\n })\n watch(systemFilterItems, () => {\n systemFilter.value = []\n })\n\n const filteredGroups = computed(() => {\n if (!systemFilter.value.length) {\n return props.groups\n }\n\n return props.groups.filter((group) => {\n const system = group[AttrKey.spanSystem]\n if (!system) {\n return true\n }\n\n for (let needle of systemFilter.value) {\n if (system.startsWith(needle)) {\n return true\n }\n }\n return false\n })\n })\n\n const pager = usePager(15)\n const pagedGroups = computed((): Group[] => {\n const pagedGroups = filteredGroups.value.slice(pager.pos.start, pager.pos.end)\n return pagedGroups\n })\n watch(\n () => filteredGroups.value.length,\n (numItem) => {\n pager.numItem = numItem\n ctx.emit('update:num-group', numItem)\n },\n { immediate: true },\n )\n\n const internalPlottedColumns = shallowRef()\n watch(\n () => props.plottedColumns,\n (plottedColumns) => {\n internalPlottedColumns.value = plottedColumns\n },\n { immediate: true },\n )\n const plottableColumnItems = computed(() => {\n const items = props.plottableColumns.map((col) => {\n return { text: col.name, value: col.name }\n })\n return items\n })\n\n return {\n dialog,\n activeGroup,\n\n pagedGroups,\n pager,\n\n internalPlottedColumns,\n plottableColumnItems,\n\n showSystem,\n systemFilter,\n systemFilterItems,\n }\n },\n})\n\ninterface SystemFilter {\n system: string\n numGroup: number\n}\n\nfunction buildSystemFilters(groups: Group[]) {\n const systemMap: Record = {}\n\n for (let group of groups) {\n const system = group[AttrKey.spanSystem]\n if (!system) {\n continue\n }\n\n let item = systemMap[system]\n if (!item) {\n item = {\n system,\n numGroup: 0,\n }\n systemMap[system] = item\n }\n item.numGroup++\n }\n\n const filters: SystemFilter[] = []\n\n for (let system in systemMap) {\n filters.push(systemMap[system])\n }\n\n orderBy(filters, 'system')\n return filters\n}\n\nfunction buildTypeFilters(groups: Group[]) {\n const systemMap: Record = {}\n\n for (let group of groups) {\n let system = group[AttrKey.spanSystem]\n if (!system) {\n continue\n }\n\n const i = system.indexOf(':')\n if (i >= 0) {\n system = system.slice(0, i)\n }\n\n let item = systemMap[system]\n if (!item) {\n item = {\n system,\n numGroup: 0,\n }\n systemMap[system] = item\n }\n item.numGroup++\n }\n\n const filters: SystemFilter[] = []\n\n for (let system in systemMap) {\n filters.push(systemMap[system])\n }\n\n orderBy(filters, 'system')\n return filters\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedGroupsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PagedGroupsCard.vue?vue&type=script&lang=ts&\"","import { computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\ninterface ServiceGraphStats {\n durationMin: number\n durationMax: number\n durationSum: number\n durationAvg: number\n count: number\n rate: number\n errorCount: number\n errorRate: number\n}\n\nexport interface ServiceGraphNode extends ServiceGraphStats {\n id: string\n name: string\n attr: string\n}\n\nexport interface ServiceGraphEdge extends ServiceGraphStats {\n type: EdgeType\n\n clientId: string\n clientAttr: string\n clientName: string\n\n serverId: string\n serverAttr: string\n serverName: string\n}\n\nexport enum EdgeType {\n Unset = 'unset',\n Http = 'http',\n Db = 'db',\n Messaging = 'messaging',\n}\n\nexport enum NodeSizeMode {\n Incoming = 'incoming',\n Outgoing = 'outgoing',\n}\n\nexport enum NodeSizeMetric {\n Rate = 'rate',\n Duration = 'duration',\n}\n\nexport type UseServiceGraph = ReturnType\n\nexport function useServiceGraph(axiosParamsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/service-graph`,\n params: axiosParamsSource(),\n }\n })\n\n const edges = computed((): ServiceGraphEdge[] => {\n const edges: ServiceGraphEdge[] = data.value?.edges ?? []\n return edges.map((edge) => {\n let clientId = edge.clientName\n if (edge.clientAttr && edge.clientAttr !== AttrKey.spanSystem) {\n clientId = edge.clientAttr + '=' + edge.clientName\n }\n\n let serverId = edge.serverName\n if (edge.serverAttr && edge.serverAttr !== AttrKey.spanSystem) {\n serverId = edge.serverAttr + '=' + edge.serverName\n }\n\n return {\n ...edge,\n clientId,\n serverId,\n }\n })\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n edges,\n })\n}\n","import { render, staticRenderFns } from \"./PagedGroupsCard.vue?vue&type=template&id=68919983&scoped=true&\"\nimport script from \"./PagedGroupsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./PagedGroupsCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68919983\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useRouter, useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore, provideQueryStore, UseUql } from '@/use/uql'\nimport { useGroups } from '@/tracing/use-explore-spans'\nimport { UseSystems } from '@/tracing/system/use-systems'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport SystemQuickMetrics from '@/tracing/system/SystemQuickMetrics.vue'\nimport PagedGroupsCard from '@/tracing/PagedGroupsCard.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'OverviewAttr',\n components: { ApiErrorCard, SystemQuickMetrics, PagedGroupsCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const { route } = useRouter()\n const { where } = injectQueryStore()\n\n const attr = computed(() => {\n return route.value.params.attr ?? AttrKey.spanSystem\n })\n\n const query = computed(() => {\n return createQueryEditor()\n .exploreAttr(attr.value, true)\n .add(`max(${AttrKey.spanDuration})`)\n .add(where.value)\n .toString()\n })\n provideQueryStore({ query: computed(() => ''), where })\n\n const groups = useGroups(() => {\n return {\n ...props.dateRange.axiosParams(),\n ...props.systems.axiosParams(),\n query: query.value,\n }\n })\n\n const plottedColumns = computed(() => {\n return groups.plottableColumns\n .map((col) => col.name)\n .filter((colName) => colName !== `max(${AttrKey.spanDuration})`)\n })\n\n const groupListRoute = computed(() => {\n return {\n name: 'SpanGroupList',\n query: {\n ...props.systems.queryParams(),\n ...groups.order.queryParams(),\n query: query.value,\n },\n }\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n groups.order.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...groups.order.queryParams(),\n }\n },\n })\n\n return {\n AttrKey,\n\n attr,\n groups,\n plottedColumns,\n groupListRoute,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewAttr.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewAttr.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewAttr.vue?vue&type=template&id=f86de2a6&\"\nimport script from \"./OverviewAttr.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewAttr.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"Slowest groups\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary\",attrs:{\"to\":_vm.groupListRoute,\"small\":\"\"}},[_vm._v(\"View groups\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.groups.error)?_c('ApiErrorCard',{attrs:{\"error\":_vm.groups.error}}):_c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems.activeSystems,\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"show-plotted-column-items\":\"\",\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore, provideQueryStore, UseUql } from '@/use/uql'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { useGroups } from '@/tracing/use-explore-spans'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport PagedGroupsCard from '@/tracing/PagedGroupsCard.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'OverviewSlowestGroups',\n components: { ApiErrorCard, PagedGroupsCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const { where } = injectQueryStore()\n\n const query = computed(() => {\n return createQueryEditor().exploreAttr(AttrKey.spanGroupId, true).add(where.value).toString()\n })\n provideQueryStore({ query: computed(() => ''), where })\n\n const groups = useGroups(\n () => {\n return {\n ...props.dateRange.axiosParams(),\n ...props.systems.axiosParams(),\n query: query.value,\n }\n },\n {\n order: {\n column: `p50(${AttrKey.spanDuration})`,\n desc: true,\n },\n },\n )\n\n const plottedColumns = [AttrKey.spanCountPerMin, `p50(${AttrKey.spanDuration})`]\n const groupListRoute = computed(() => {\n return {\n name: 'SpanGroupList',\n query: {\n ...groups.order.queryParams(),\n system: props.systems,\n query: query.value,\n },\n }\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('sort_by', `p50(${AttrKey.spanDuration})`)\n queryParams.setDefault('sort_desc', true)\n\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n groups.order.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...groups.order.queryParams(),\n }\n },\n })\n\n return {\n AttrKey,\n\n groups,\n\n plottedColumns,\n groupListRoute,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewSlowestGroups.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewSlowestGroups.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewSlowestGroups.vue?vue&type=template&id=1a8339da&scoped=true&\"\nimport script from \"./OverviewSlowestGroups.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewSlowestGroups.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a8339da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.system)+\" groups\")]),_c('v-spacer'),_c('v-btn',{staticClass:\"primary\",attrs:{\"to\":_vm.groupListRoute,\"small\":\"\"}},[_vm._v(\"View groups\")])],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[(_vm.groups.error)?_c('ApiErrorCard',{attrs:{\"error\":_vm.groups.error}}):_c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":[_vm.system],\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":[_vm.AttrKey.spanCountPerMin],\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams}})],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useRoute, useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { createQueryEditor, injectQueryStore, provideQueryStore, UseUql } from '@/use/uql'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { useGroups } from '@/tracing/use-explore-spans'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport PagedGroupsCard from '@/tracing/PagedGroupsCard.vue'\n\n// Misc\nimport { AttrKey, isSpanSystem } from '@/models/otel'\n\nexport default defineComponent({\n name: 'OverviewGroups',\n components: { ApiErrorCard, PagedGroupsCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const { where } = injectQueryStore()\n\n const system = computed(() => {\n return route.value.params.system\n })\n\n const query = computed(() => {\n return createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, isSpanSystem(system.value))\n .add(where.value)\n .toString()\n })\n provideQueryStore({ query, where })\n\n const groups = useGroups(() => {\n return {\n ...props.dateRange.axiosParams(),\n system: system.value,\n query: query.value,\n }\n })\n\n const groupListRoute = computed(() => {\n return {\n name: 'SpanGroupList',\n query: {\n ...groups.order.queryParams(),\n system: system.value,\n query: query.value,\n },\n }\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('sort_by', `per_min(${AttrKey.spanCount})`)\n queryParams.setDefault('sort_desc', true)\n\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n groups.order.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...groups.order.queryParams(),\n }\n },\n })\n\n return {\n AttrKey,\n system,\n groups,\n groupListRoute,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewGroups.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewGroups.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewGroups.vue?vue&type=template&id=df7c784c&scoped=true&\"\nimport script from \"./OverviewGroups.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewGroups.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"df7c784c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[(!_vm.serviceGraph.status.hasData())?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"card\",\"loading\":\"\"}})],1)],1):(!_vm.serviceGraph.edges.length)?_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"lg\":\"6\"}},[_c('ServiceGraphHelpCard')],1)],1):_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticStyle:{\"height\":\"95vh\"},attrs:{\"cols\":\"9\"}},[_c('ServiceGraphChart',{ref:\"graphRef\",attrs:{\"loading\":_vm.serviceGraph.loading,\"edges\":_vm.edges,\"node-size-metric\":_vm.nodeSizeMetric,\"node-size-mode\":_vm.nodeSizeMode},on:{\"click:node\":function($event){_vm.activeItem = $event},\"click:edge\":function($event){_vm.activeItem = $event}}})],1),_c('v-col',{attrs:{\"cols\":\"3\"}},[(_vm.activeItem)?[_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"small\":\"\"},on:{\"click\":_vm.reset}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-close-thick\")]),_vm._v(\" Reset selection \")],1)],1)],1),_c('v-row',{staticClass:\"mb-n8\"},[(_vm.tracingGroupsRoute)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"to\":_vm.tracingGroupsRoute,\"depressed\":\"\",\"small\":\"\"}},[_vm._v(\"Explore groups\")])],1):_vm._e(),(_vm.monitorMenuItems.length)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"depressed\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('span',[_vm._v(\"Monitor\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1)]}}],null,false,922448211)},[_c('v-list',_vm._l((_vm.monitorMenuItems),function(item,index){return _c('v-list-item',{key:index,attrs:{\"to\":item.route}},[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)}),1)],1)],1):_vm._e()],1),_c('v-row',[_c('v-col',[_c('v-simple-table',[_c('tbody',[(_vm.activeItem.name)?_c('tr',[_c('th',[_vm._v(\"Node\")]),_c('td',[_vm._v(_vm._s(_vm.activeItem.name))])]):[_c('tr',[_c('th',[_vm._v(\"Edge type\")]),_c('td',[_vm._v(_vm._s(_vm.activeItem.type))])]),_c('tr',[_c('th',[_vm._v(\"Client\")]),_c('td',[_vm._v(_vm._s(_vm.activeItem.clientName))])]),_c('tr',[_c('th',[_vm._v(\"Server\")]),_c('td',[_vm._v(_vm._s(_vm.activeItem.serverName))])])],_c('tr',[_c('th',[_vm._v(\"Calls per min\")]),_c('td',[_c('NumValue',{attrs:{\"value\":_vm.activeItem.rate,\"verbosity\":\"max\"}})],1)]),_c('tr',[_c('th',[_vm._v(\"Err. rate\")]),_c('td',[_c('PctValue',{attrs:{\"a\":_vm.activeItem.errorCount,\"b\":_vm.activeItem.count}})],1)]),_c('tr',[_c('th',[_vm._v(\"Avg duration\")]),_c('td',[_c('DurationValue',{attrs:{\"value\":_vm.activeItem.durationAvg}})],1)]),_c('tr',[_c('th',[_vm._v(\"Min duration\")]),_c('td',[_c('DurationValue',{attrs:{\"value\":_vm.activeItem.durationMin}})],1)]),_c('tr',[_c('th',[_vm._v(\"Max duration\")]),_c('td',[_c('DurationValue',{attrs:{\"value\":_vm.activeItem.durationMax}})],1)])],2)])],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1)]:_vm._e(),_c('v-row',[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.edgeTypeItems,\"multiple\":\"\",\"label\":\"Edge type\",\"solo\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeEdgeTypes.includes(item.value)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_c('div',{domProps:{\"innerHTML\":_vm._s(item.text)}})])],1),_c('v-list-item-action',[_c('v-list-item-action-text',[_c('NumValue',{attrs:{\"value\":item.count}})],1)],1)]}}]),model:{value:(_vm.activeEdgeTypes),callback:function ($$v) {_vm.activeEdgeTypes=$$v},expression:\"activeEdgeTypes\"}})],1)],1),_c('v-row',[_c('v-col',[_c('div',{staticClass:\"text-body-2 text--secondary\"},[_vm._v(\"Size nodes by\")]),_c('v-btn-toggle',{attrs:{\"tile\":\"\",\"group\":\"\",\"dense\":\"\"},model:{value:(_vm.nodeSizeMode),callback:function ($$v) {_vm.nodeSizeMode=$$v},expression:\"nodeSizeMode\"}},[_c('v-btn',{attrs:{\"value\":\"incoming\"}},[_vm._v(\"Incoming\")]),_c('v-btn',{attrs:{\"value\":\"outgoing\"}},[_vm._v(\"Outgoing\")])],1),_c('v-btn-toggle',{attrs:{\"tile\":\"\",\"group\":\"\",\"dense\":\"\"},model:{value:(_vm.nodeSizeMetric),callback:function ($$v) {_vm.nodeSizeMetric=$$v},expression:\"nodeSizeMetric\"}},[_c('v-btn',{attrs:{\"value\":\"duration\"}},[_vm._v(\"Duration\")]),_c('v-btn',{attrs:{\"value\":\"rate\"}},[_vm._v(\"Rate\")])],1)],1)],1),(_vm.maxDuration !== _vm.minDuration)?_c('v-row',[_c('v-col',{staticClass:\"text--secondary\"},[_vm._v(\" Edge duration: \"),_c('DurationValue',{attrs:{\"value\":_vm.durationRange[0]}}),_vm._v(\" - \"),_c('DurationValue',{attrs:{\"value\":_vm.durationRange[1]}}),_c('v-range-slider',{attrs:{\"min\":_vm.minDuration,\"max\":_vm.maxDuration,\"hide-details\":\"\"},model:{value:(_vm.durationRange),callback:function ($$v) {_vm.durationRange=$$v},expression:\"durationRange\"}})],1)],1):_vm._e(),(_vm.maxRate !== _vm.minRate)?_c('v-row',[_c('v-col',{staticClass:\"text--secondary\"},[_vm._v(\" Edge call rate: \"),_c('NumValue',{attrs:{\"value\":_vm.rateRange[0]}}),_vm._v(\" - \"),_c('NumValue',{attrs:{\"value\":_vm.rateRange[1]}}),_c('v-range-slider',{attrs:{\"min\":_vm.minRate,\"max\":_vm.maxRate,\"hide-details\":\"\"},model:{value:(_vm.rateRange),callback:function ($$v) {_vm.rateRange=$$v},expression:\"rateRange\"}})],1)],1):_vm._e(),(_vm.maxErrorRate !== _vm.minErrorRate)?_c('v-row',[_c('v-col',{staticClass:\"text--secondary\"},[_vm._v(\" Edge error rate: \"),_c('NumValue',{attrs:{\"value\":_vm.errorRateRange[0],\"unit\":\"utilization\"}}),_vm._v(\" - \"),_c('NumValue',{attrs:{\"value\":_vm.errorRateRange[1],\"unit\":\"utilization\"}}),_c('v-range-slider',{attrs:{\"min\":_vm.minErrorRate,\"max\":_vm.maxErrorRate,\"step\":_vm.errorRateStep,\"hide-details\":\"\"},model:{value:(_vm.errorRateRange),callback:function ($$v) {_vm.errorRateRange=$$v},expression:\"errorRateRange\"}})],1)],1):_vm._e(),_c('v-row',[_c('v-col',{staticClass:\"text-center\"},[_c('ServiceGraphHelpDialog')],1)],1)],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.chartProps.height,\"option\":_vm.chartProps.option},on:{\"input\":_vm.onInit}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const lerp = (a: number, b: number, t: number) => (b - a) * t + a\nconst unlerp = (a: number, b: number, t: number) => (t - a) / (b - a)\n\nexport function mapNumber(t: number, a1: number, b1: number, a2: number, b2: number) {\n if (isNaN(t)) {\n return a2\n }\n return lerp(a2, b2, unlerp(a1, b1, t))\n}\n","\nimport { escape } from 'lodash-es'\nimport * as echarts from 'echarts'\nimport colors from 'vuetify/lib/util/colors'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useDarkMode } from '@/use/dark-mode'\nimport {\n ServiceGraphNode,\n ServiceGraphEdge,\n NodeSizeMode,\n NodeSizeMetric,\n} from '@/tracing/use-service-graph'\n\n// Components\nimport EChart from '@/components/EChart.vue'\n\n// Misc\nimport { num, numShort, duration, durationShort, utilization } from '@/util/fmt'\nimport { mapNumber } from '@/util/mapping'\n\nexport default defineComponent({\n name: 'ServiceGraphChart',\n components: { EChart },\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n edges: {\n type: Array as PropType,\n required: true,\n },\n nodeSizeMode: {\n type: String as PropType,\n required: true,\n },\n nodeSizeMetric: {\n type: String as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const { isDark } = useDarkMode()\n\n const activeNode = shallowRef('')\n const activeEdge = shallowRef('')\n const highlightedId = shallowRef('')\n function reset() {\n activeNode.value = ''\n activeEdge.value = ''\n highlightedId.value = ''\n }\n\n const edges = computed(() => {\n if (!activeNode.value) {\n return props.edges\n }\n\n return props.edges.filter((edge) => {\n return edge.clientId === activeNode.value || edge.serverId === activeNode.value\n })\n })\n\n const graphEdges = computed(() => {\n const graphEdges = []\n\n for (let edge of edges.value) {\n const graphEdge: Record = {\n id: `${edge.clientId} -> ${edge.serverId}`,\n name: '',\n source: edge.clientId,\n target: edge.serverId,\n label: { show: false },\n lineStyle: { width: 0.5, opacity: 1, color: colors.green.darken2 },\n _edge: edge,\n }\n graphEdges.push(graphEdge)\n\n switch (props.nodeSizeMetric) {\n case NodeSizeMetric.Rate:\n graphEdge.name = numShort(edge.rate)\n break\n case NodeSizeMetric.Duration:\n graphEdge.name = durationShort(edge.durationAvg)\n break\n default:\n console.error(`unsupported node size metric: ${props.nodeSizeMetric}`)\n break\n }\n\n if (edge.errorRate >= 0.05) {\n graphEdge.lineStyle.color = colors.red.darken2\n } else if (edge.errorRate >= 0.005) {\n graphEdge.lineStyle.color = colors.pink.darken2\n }\n\n if (edges.value.length < 8) {\n graphEdge.label.show = true\n graphEdge.symbol = ['none', 'arrow']\n graphEdge.symbolSize = [0, 10]\n } else if (edges.value.length < 16) {\n graphEdge.label.show = true\n }\n\n const id = highlightedId.value || activeEdge.value\n if (id) {\n if (graphEdge.id === id || graphEdge.source === id || graphEdge.target === id) {\n graphEdge.label.show = true\n graphEdge.lineStyle.width = 2\n graphEdge.symbol = ['none', 'arrow']\n graphEdge.symbolSize = [0, 10]\n } else {\n graphEdge.lineStyle.opacity = 0.1\n }\n }\n }\n\n return graphEdges\n })\n\n const nodes = computed(() => {\n const nodeMap = new Map()\n\n for (let edge of edges.value) {\n let client = nodeMap.get(edge.clientId)\n if (!client) {\n client = emptyNode()\n client.id = edge.clientId\n client.name = edge.clientName\n nodeMap.set(edge.clientId, client)\n }\n\n let server = nodeMap.get(edge.serverId)\n if (!server) {\n server = emptyNode()\n server.id = edge.serverId\n server.name = edge.serverName\n server.attr = edge.serverAttr\n nodeMap.set(edge.serverId, server)\n }\n\n let node: ServiceGraphNode | undefined\n\n switch (props.nodeSizeMode) {\n case NodeSizeMode.Incoming:\n node = server\n break\n case NodeSizeMode.Outgoing:\n node = client\n break\n default:\n console.error(`unsupported node size mode: ${props.nodeSizeMode}`)\n break\n }\n\n if (!node) {\n continue\n }\n\n if (node.count === 0) {\n node.durationMin = edge.durationMin\n node.durationMax = edge.durationMax\n } else {\n node.durationMin = Math.min(node.durationMin, edge.durationMin)\n node.durationMax = Math.min(node.durationMin, edge.durationMax)\n }\n node.durationSum += edge.durationSum\n node.count += edge.count\n node.rate += edge.rate\n node.errorCount += edge.errorCount\n }\n\n const nodes: ServiceGraphNode[] = []\n\n for (let node of nodeMap.values()) {\n nodes.push(node)\n\n if (node.count > 0) {\n node.errorRate = node.errorCount / node.count\n node.durationAvg = node.durationSum / node.count\n }\n }\n\n return nodes\n })\n\n const graphNodes = computed(() => {\n let maxRate = 0\n let maxDuration = 0\n\n for (let node of nodes.value) {\n if (node.rate > maxRate) {\n maxRate = node.rate\n }\n if (node.durationAvg > maxDuration) {\n maxDuration = node.durationAvg\n }\n }\n\n let graphNodes = []\n\n for (let node of nodes.value) {\n const graphNode = {\n id: node.id,\n name: node.id,\n symbolSize: 10,\n itemStyle: { color: colors.green.lighten2 },\n _node: node,\n }\n graphNodes.push(graphNode)\n\n if (node.errorRate >= 0.05) {\n graphNode.itemStyle.color = colors.red.lighten2\n } else if (node.errorRate >= 0.005) {\n graphNode.itemStyle.color = colors.pink.lighten2\n }\n\n switch (props.nodeSizeMetric) {\n case NodeSizeMetric.Rate:\n graphNode.symbolSize = mapNumber(node.rate, 0, maxRate, 10, 40)\n break\n case NodeSizeMetric.Duration:\n graphNode.symbolSize = mapNumber(node.durationAvg, 0, maxDuration, 10, 40)\n break\n default:\n console.error(`unsupported node size metric: ${props.nodeSizeMetric}`)\n break\n }\n }\n\n return graphNodes\n })\n\n const chartProps = computed(() => {\n const series: Record = {\n name: 'Service Graph',\n type: 'graph',\n\n data: graphNodes.value,\n edges: graphEdges.value,\n\n roam: true, // enable zoom\n scaleLimit: {\n min: 0.4,\n max: 3,\n },\n\n label: {\n show: true,\n position: 'right',\n fontSize: 12,\n formatter: (params: any) => {\n return params.data._node.name\n },\n },\n edgeLabel: {\n //position: 'start',\n fontSize: 12,\n color: '#000',\n formatter: (params: any) => {\n return params.data.name\n },\n },\n\n lineStyle: {\n width: 0.5,\n color: 'source',\n curveness: 0.3,\n },\n }\n\n const chart = {\n height: '100%',\n option: {\n textStyle: {\n fontFamily: '\"Roboto\", sans-serif',\n },\n tooltip: {\n className: ['echarts-tooltip', isDark.value ? 'theme--dark' : 'theme--light'].join(' '),\n formatter: (params: any) => {\n let title = ''\n const rows = []\n\n switch (params.dataType) {\n case 'node': {\n const node = params.data._node\n title = `${escape(node.id)} (${props.nodeSizeMode} calls)`\n rows.push('', 'Calls per min', `${num(node.rate)}`, '')\n rows.push(\n '',\n 'Err. rate',\n `${utilization(node.errorRate)}`,\n '',\n )\n rows.push(\n '',\n 'Duration',\n `${duration(node.durationAvg)}`,\n '',\n )\n break\n }\n case 'edge': {\n const edge = params.data._edge\n title = `${escape(edge.clientId)} → ${escape(edge.serverId)}`\n rows.push('', 'Calls per min', `${num(edge.rate)}`, '')\n rows.push(\n '',\n 'Err. rate',\n `${utilization(edge.errorRate)}`,\n '',\n )\n rows.push(\n '',\n 'Duration',\n `${duration(edge.durationAvg)}`,\n '',\n )\n break\n }\n default:\n return undefined\n }\n\n const ss = [\n '
',\n `

${title}

`,\n '',\n '',\n rows.join(''),\n '',\n '
',\n `
Click to focus and view details on the right...
`,\n ' {\n if (params.dataType === 'node') {\n activeNode.value = params.data.id\n activeEdge.value = ''\n ctx.emit('click:node', params.data._node)\n } else {\n activeNode.value = ''\n activeEdge.value = params.data.id\n ctx.emit('click:edge', params.data._edge)\n }\n highlightedId.value = ''\n })\n echart.on('mouseover', (params: any) => {\n highlightedId.value = params.data.id\n })\n echart.on('mouseout', (params: any) => {\n highlightedId.value = ''\n })\n }\n\n return { chartProps, onInit, reset }\n },\n})\n\nfunction emptyNode(): ServiceGraphNode {\n return {\n id: '',\n name: '',\n attr: '',\n\n durationMin: 0,\n durationMax: 0,\n durationSum: 0,\n durationAvg: 0,\n count: 0,\n rate: 0,\n errorCount: 0,\n errorRate: 0,\n }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceGraphChart.vue?vue&type=template&id=0f86e524&scoped=true&\"\nimport script from \"./ServiceGraphChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ServiceGraphChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f86e524\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"width\":\"700\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"block\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-help-circle-outline\")]),_vm._v(\" Help \")],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Service Graph\")]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('ServiceGraphHelpCard')],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\"}},[_c('p',[_vm._v(\" Service Graphs provide a visual representation of service interactions, dependencies, and performance metrics. Service graphs are built by analyzing span relationships and require specific span attributes. \")]),_c('p',[_vm._v(\" To have a service graph or to improve the quality of the existing service graph, consider adding the following attributes: \")]),_c('ul',{staticClass:\"mb-4\"},[_c('li',[_c('code',[_vm._v(\"service.name\")]),_vm._v(\" is an attribute that represents the logical name of the service. Required. \")]),_c('li',[_c('code',[_vm._v(\"_kind\")]),_vm._v(\" (\"),_c('code',[_vm._v(\"span_kind\")]),_vm._v(\") categorizes the type of work being represented by the span. Make sure your traces have \"),_c('code',[_vm._v(\"client/server\")]),_vm._v(\" or \"),_c('code',[_vm._v(\"producer/consumer\")]),_vm._v(\" span pairs. Required. \")]),_c('li',[_c('code',[_vm._v(\"_status_code\")]),_vm._v(\" (\"),_c('code',[_vm._v(\"span_status_code\")]),_vm._v(\") provides information about the result of a specific operation or unit of work represented by this span. This attribute helps to monitor and understand the success, failure, or other conditions of a given operation. Recommended. \")]),_c('li',[_c('code',[_vm._v(\"rpc.service\")]),_vm._v(\" represents the full (logical) name of the service being called. Optional. \")]),_c('li',[_c('code',[_vm._v(\"db.name\")]),_vm._v(\" contains the name of the database being accessed. Recommended if you have multiple databases. \")]),_c('li',[_c('code',[_vm._v(\"server.socket.domain\")]),_vm._v(\" represents the domain name of an immediate peer. Required for HTTP calls. \")]),_c('li',[_c('code',[_vm._v(\"server.socket.address\")]),_vm._v(\" represents the physical server IP address or Unix socket address. Required for HTTP calls if \"),_c('code',[_vm._v(\"server.socket.domain\")]),_vm._v(\" is not provided. \")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'ServiceGraphHelpCard',\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphHelpCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphHelpCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceGraphHelpCard.vue?vue&type=template&id=698b18b1&scoped=true&\"\nimport script from \"./ServiceGraphHelpCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ServiceGraphHelpCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ServiceGraphHelpCard.vue?vue&type=style&index=0&id=698b18b1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"698b18b1\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Components\nimport ServiceGraphHelpCard from '@/tracing/ServiceGraphHelpCard.vue'\n\nexport default defineComponent({\n name: 'ServiceGraphHelpDialog',\n components: { ServiceGraphHelpCard },\n\n setup() {\n const dialog = shallowRef(false)\n\n return { dialog }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphHelpDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ServiceGraphHelpDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceGraphHelpDialog.vue?vue&type=template&id=12882b44&scoped=true&\"\nimport script from \"./ServiceGraphHelpDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ServiceGraphHelpDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ServiceGraphHelpDialog.vue?vue&type=style&index=0&id=12882b44&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12882b44\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { injectQueryStore, createQueryEditor, joinQuery, UseUql } from '@/use/uql'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport {\n useServiceGraph,\n ServiceGraphNode,\n ServiceGraphEdge,\n NodeSizeMode,\n NodeSizeMetric,\n} from '@/tracing/use-service-graph'\n\n// Components\nimport ServiceGraphChart from '@/tracing/ServiceGraphChart.vue'\nimport ServiceGraphHelpDialog from '@/tracing/ServiceGraphHelpDialog.vue'\nimport ServiceGraphHelpCard from '@/tracing/ServiceGraphHelpCard.vue'\n\n// Misc\nimport { SystemName, AttrKey } from '@/models/otel'\nimport { quote } from '@/util/string'\n\ninterface Item {\n text: string\n value: string\n count: number\n}\n\nexport default defineComponent({\n name: 'OverviewServiceGraph',\n components: { ServiceGraphChart, ServiceGraphHelpDialog, ServiceGraphHelpCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n useTitle('Service Graph')\n const { where } = injectQueryStore()\n\n const nodeSizeMode = shallowRef(NodeSizeMode.Incoming)\n const nodeSizeMetric = shallowRef(NodeSizeMetric.Duration)\n\n const graphRef = shallowRef()\n const activeItem = shallowRef()\n function reset() {\n graphRef.value?.reset()\n activeItem.value = undefined\n }\n\n const serviceGraph = useServiceGraph(() => {\n return {\n ...props.dateRange.axiosParams(),\n ...props.systems.axiosParams(),\n query: where.value,\n }\n })\n\n const activeEdgeTypes = shallowRef([])\n const edgeTypeItems = computed((): Item[] => {\n const map = new Map()\n\n for (let edge of serviceGraph.edges) {\n const count = map.get(edge.type) ?? 0\n map.set(edge.type, count + 1)\n }\n\n const items: Item[] = []\n\n map.forEach((value, key) => {\n items.push({\n text: key,\n value: key,\n count: value,\n })\n })\n\n return items\n })\n watch(edgeTypeItems, (items) => {\n activeEdgeTypes.value = items.map((item) => item.value)\n })\n\n const durationRange = shallowRef([0, 0])\n const minDuration = computed(() => {\n let min = Number.MAX_VALUE\n for (let edge of serviceGraph.edges) {\n if (edge.durationAvg < min) {\n min = edge.durationAvg\n }\n }\n if (min !== Number.MAX_VALUE) {\n return Math.floor(min)\n }\n return 0\n })\n const maxDuration = computed(() => {\n let max = 0\n for (let edge of serviceGraph.edges) {\n if (edge.durationAvg > max) {\n max = edge.durationAvg\n }\n }\n return Math.ceil(max)\n })\n watch(\n () => [minDuration.value, maxDuration.value],\n (range) => {\n durationRange.value = range\n },\n )\n\n const rateRange = shallowRef([0, 0])\n const minRate = computed(() => {\n let min = Number.MAX_VALUE\n for (let edge of serviceGraph.edges) {\n if (edge.rate < min) {\n min = edge.rate\n }\n }\n if (min !== Number.MAX_VALUE) {\n return Math.floor(min)\n }\n return 0\n })\n const maxRate = computed(() => {\n let max = 0\n for (let edge of serviceGraph.edges) {\n if (edge.rate > max) {\n max = edge.rate\n }\n }\n return Math.ceil(max)\n })\n watch(\n () => [minRate.value, maxRate.value],\n (range) => {\n rateRange.value = range\n },\n )\n\n const errorRateRange = shallowRef([0, 0])\n const minErrorRate = computed(() => {\n let min = Number.MAX_VALUE\n for (let edge of serviceGraph.edges) {\n if (edge.errorRate < min) {\n min = edge.errorRate\n }\n }\n if (min !== Number.MAX_VALUE) {\n return min\n }\n return 0\n })\n const _maxErrorRate = computed(() => {\n let max = 0\n for (let edge of serviceGraph.edges) {\n if (edge.errorRate > max) {\n max = edge.errorRate\n }\n }\n return max\n })\n const errorRateStep = computed(() => {\n const delta = _maxErrorRate.value - minErrorRate.value\n if (delta >= 0.1) {\n return 0.01\n }\n return 0.001\n })\n const maxErrorRate = computed(() => {\n const prec = 1 / errorRateStep.value\n return Math.ceil((_maxErrorRate.value + Number.EPSILON) * prec) / prec\n })\n watch(\n () => [minErrorRate.value, maxErrorRate.value],\n (range) => {\n errorRateRange.value = range\n },\n )\n\n const edges = computed(() => {\n return serviceGraph.edges.filter((edge) => {\n return (\n activeEdgeTypes.value.includes(edge.type) &&\n edge.durationAvg >= durationRange.value[0] &&\n edge.durationAvg <= durationRange.value[1] &&\n edge.rate >= rateRange.value[0] &&\n edge.rate <= rateRange.value[1] &&\n edge.errorRate >= errorRateRange.value[0] &&\n edge.errorRate <= errorRateRange.value[1]\n )\n })\n })\n\n const tracingGroupsRoute = computed(() => {\n if (!activeItem.value) {\n return undefined\n }\n\n if (activeItem.value.name) {\n return tracingGroupsRouteForNode(activeItem.value as ServiceGraphNode)\n }\n return tracingGroupsRouteForLink(activeItem.value as ServiceGraphEdge)\n })\n\n function tracingGroupsRouteForNode(node: ServiceGraphNode) {\n const routeQuery: Record = {}\n const query = createQueryEditor(where.value).exploreAttr(AttrKey.spanGroupId, true)\n\n if (node.attr === AttrKey.spanSystem) {\n routeQuery.system = node.name\n } else if (node.attr) {\n query.where(node.attr, '=', node.name)\n } else {\n routeQuery.system = SystemName.SpansAll\n query.where(AttrKey.serviceName, '=', node.name)\n }\n\n return {\n name: 'SpanGroupList',\n query: {\n ...routeQuery,\n query: query.toString(),\n },\n }\n }\n\n function tracingGroupsRouteForLink(link: ServiceGraphEdge) {\n if (!link.serverAttr) {\n return undefined\n }\n\n const routeQuery: Record = {}\n const query = createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId)\n .add(where.value)\n .where(AttrKey.serviceName, '=', link.clientName)\n\n if (link.serverAttr === AttrKey.spanSystem) {\n routeQuery.system = link.serverName\n } else if (link.serverAttr) {\n query.where(link.serverAttr, '=', link.serverName)\n }\n\n return {\n name: 'SpanGroupList',\n query: {\n ...routeQuery,\n query: query.toString(),\n },\n }\n }\n\n const monitorMenuItems = computed(() => {\n if (!activeItem.value) {\n return []\n }\n\n if (activeItem.value.name) {\n const node = activeItem.value as ServiceGraphNode\n return [\n monitorMenuItemFor(\n 'Monitor number of requests',\n `${node.name} number of requests`,\n 'uptrace_service_graph_client_duration',\n 'client_duration',\n `count($client_duration{server=${quote(node.name)}})`,\n ),\n monitorMenuItemFor(\n 'Monitor number of failed requests',\n `${node.name} number of failed requests`,\n 'uptrace_service_graph_failed_requests',\n 'failed_requests',\n `count(failed_requests{server=${quote(node.name)}})`,\n ),\n monitorMenuItemFor(\n 'Monitor client-side duration',\n `${node.name} client-side duration`,\n 'uptrace_service_graph_client_duration',\n 'client_duration',\n `avg($client_duration{server=${quote(node.name)}})`,\n ),\n monitorMenuItemFor(\n 'Monitor server-side duration',\n `${node.name} server-side duration`,\n 'uptrace_service_graph_server_duration',\n 'server_duration',\n `avg($server_duration{server=${quote(node.name)}})`,\n ),\n ]\n }\n\n const link = activeItem.value as ServiceGraphEdge\n return [\n monitorMenuItemFor(\n 'Monitor number of calls',\n `${link.clientName} → ${link.serverName} number of calls`,\n 'uptrace_service_graph_client_duration',\n 'client_duration',\n joinQuery([\n `count($client_duration{client=${quote(link.clientName)}, server=${quote(\n link.serverName,\n )}})`,\n ]),\n ),\n monitorMenuItemFor(\n 'Monitor number of failed requests',\n `${link.clientName} → ${link.serverName} number of calls`,\n 'uptrace_service_graph_failed_requests',\n 'failed_requests',\n joinQuery([\n `count($failed_requests{client=${quote(link.clientName)}, server=${quote(\n link.serverName,\n )}})`,\n ]),\n ),\n monitorMenuItemFor(\n 'Monitor client-side duration',\n `${link.clientName} → ${link.serverName} client-side duration`,\n 'uptrace_service_graph_client_duration',\n 'client_duration',\n joinQuery([\n `avg($client_duration{client=${quote(link.clientName)}, server=${quote(\n link.serverName,\n )}})`,\n ]),\n ),\n monitorMenuItemFor(\n 'Monitor server-side duration',\n `${link.clientName} → ${link.serverName} server-side duration`,\n 'uptrace_service_graph_server_duration',\n 'server_duration',\n joinQuery([\n `count($server_duration{client=${quote(link.clientName)}, server=${quote(\n link.serverName,\n )}})`,\n ]),\n ),\n ]\n })\n\n function monitorMenuItemFor(\n title: string,\n monitorName: string,\n metricName: string,\n metricAlias: string,\n query: string,\n ) {\n return {\n title,\n route: {\n name: 'MonitorMetricNew',\n query: {\n name: monitorName,\n metric: metricName,\n alias: metricAlias,\n query,\n },\n },\n }\n }\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n }\n },\n })\n\n return {\n graphRef,\n reset,\n\n nodeSizeMode,\n nodeSizeMetric,\n serviceGraph,\n activeEdgeTypes,\n edgeTypeItems,\n edges,\n activeItem,\n\n durationRange,\n minDuration,\n maxDuration,\n\n rateRange,\n minRate,\n maxRate,\n\n errorRateRange,\n minErrorRate,\n maxErrorRate,\n errorRateStep,\n\n tracingGroupsRoute,\n monitorMenuItems,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewServiceGraph.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./OverviewServiceGraph.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OverviewServiceGraph.vue?vue&type=template&id=e0b146b0&scoped=true&\"\nimport script from \"./OverviewServiceGraph.vue?vue&type=script&lang=ts&\"\nexport * from \"./OverviewServiceGraph.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0b146b0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('HelpCard')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\n\n// Components\nimport HelpCard from '@/tracing/HelpCard.vue'\n\nexport default defineComponent({\n name: 'Tracing',\n components: { HelpCard },\n\n setup() {\n useTitle('Getting started with Uptrace')\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Help.vue?vue&type=template&id=5ff28c40&scoped=true&\"\nimport script from \"./Help.vue?vue&type=script&lang=ts&\"\nexport * from \"./Help.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ff28c40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-x-lg\"},[_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(\"Querying Spans Cheatsheet\")]),_c('v-btn',{staticClass:\"ml-6 primary\",attrs:{\"href\":\"https://uptrace.dev/get/querying-spans.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Documentation\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1)],1),_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[_c('v-row',[_c('v-col',[_c('CheatsheetCard')],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Filtering\")]),_c('QueryExample',{attrs:{\"query\":\"where _kind = 'server'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Filters start with \"),_c('code',[_vm._v(\"where\")]),_vm._v(\" and look like SQL. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where _name like '%foo%' | where user_name like '%foo%'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Span fields start with an underscore. User-defined attribute names are unchanged. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where display_name contains 'get|post'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Search for spans that contain \\\"get\\\" or \\\"post\\\" (case-insensitive). \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where display_name like 'prefix%' or display_name like '%suffix'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Filter spans that start or end with a prefix:\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where _status_code = 'error'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Select failed spans using \"),_c('code',[_vm._v(\".status_code\")]),_vm._v(\" attribute. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where log_message like '%group%does not exist%'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Search logs using SQL LIKE operator (case-insensitive). \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where log_message ~ 'group(.*)does not exist'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Search logs using a regexp (slower than like). \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"where _duration > 10ms and _duration <= 0.5s\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Filter spans by duration.\")]},proxy:true}])})],1),_c('v-col',[_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Grouping\")]),_c('QueryExample',{attrs:{\"query\":\"group by service_name, host_name\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Group by multiple columns.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by lower(service_name), upper(host_name)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Lower/upper case the column value.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by lower(service_name) as service, upper(host_name) as host\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Aliases.\")]},proxy:true}])}),_c('h2',{staticClass:\"mb-5 text-h5\"},[_vm._v(\"Aggregation\")]),_c('QueryExample',{attrs:{\"query\":\"sum(_count) | per_min(sum(_count)) | _error_count | _error_rate\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count number of spans and errors.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"sum(_count) | group by service_name, service_version\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count number of spans for each service.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by service_name | p50(_duration)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Select median span duration for each service.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by _group_id | top3(enduser_id)\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Select top 3 users for each group of spans.\")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by http_status_code | per_min(sum(_count)) | where http_status_code exists\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\" Filter and group spans by \"),_c('code',[_vm._v(\"http_status_code\")]),_vm._v(\" attribute. \")]},proxy:true}])}),_c('QueryExample',{attrs:{\"query\":\"group by _group_id | uniq(enduser_id) | where _status_code = 'error'\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_vm._v(\"Count number of the affected users.\")]},proxy:true}])})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Components\nimport QueryExample from '@/components/QueryExample.vue'\n\nexport default defineComponent({\n name: 'CheatSheetCard',\n components: { QueryExample },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CheatsheetCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CheatsheetCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CheatsheetCard.vue?vue&type=template&id=5cfacbc7&scoped=true&\"\nimport script from \"./CheatsheetCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./CheatsheetCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cfacbc7\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\n\n// Components\nimport CheatsheetCard from '@/tracing/CheatsheetCard.vue'\n\nexport default defineComponent({\n name: 'Cheatcheet',\n components: { CheatsheetCard },\n\n setup() {\n useTitle('Querying Spans Cheatsheet')\n return {}\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Cheatsheet.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Cheatsheet.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Cheatsheet.vue?vue&type=template&id=a5647cbe&scoped=true&\"\nimport script from \"./Cheatsheet.vue?vue&type=script&lang=ts&\"\nexport * from \"./Cheatsheet.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a5647cbe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('SystemGroupPicker',{attrs:{\"loading\":_vm.systems.loading,\"value\":_vm.systems.activeSystems,\"systems\":_vm.systems.items},on:{\"update:systems\":function($event){_vm.systemItems = $event}}})],1),(_vm.systems.dataHint)?_c('TracingPlaceholder',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems}}):[_c('div',{staticClass:\"border-bottom\"},[_c('v-container',{staticClass:\"pb-0\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',{staticClass:\"mb-4\",attrs:{\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('SystemPicker',{attrs:{\"loading\":_vm.systems.loading,\"systems\":_vm.systemItems},model:{value:(_vm.systems.activeSystems),callback:function ($$v) {_vm.$set(_vm.systems, \"activeSystems\", $$v)},expression:\"systems.activeSystems\"}})],1),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange}})],1)],1),_c('v-row',{attrs:{\"align\":\"end\",\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":_vm.routes.groupList,\"exact-path\":\"\"}},[_vm._v(\"Groups\")]),_c('v-tab',{attrs:{\"to\":_vm.routes.spanList,\"exact-path\":\"\"}},[_vm._v(_vm._s(_vm.spanListName))]),_c('v-tab',{attrs:{\"to\":_vm.routes.timeseries,\"exact-path\":\"\"}},[_vm._v(\"Timeseries\")])],1)],1),_c('v-col',{staticClass:\"ml-16 align-self-center\",attrs:{\"cols\":\"auto\"}},[_c('SavedViews')],1)],1)],1)],1),_c('v-container',{staticClass:\"pt-2\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('UptraceQuery',{staticClass:\"mt-1 mb-3\",attrs:{\"uql\":_vm.uql}},[_c('SpanQueryBuilder',{attrs:{\"uql\":_vm.uql,\"systems\":_vm.systems,\"axios-params\":_vm.axiosParams,\"agg-disabled\":_vm.$route.name === 'SpanList'},on:{\"click:reset\":function($event){return _vm.resetQuery(true)}}})],1),_c('router-view',{attrs:{\"name\":\"tracing\",\"date-range\":_vm.dateRange,\"systems\":_vm.systems,\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"search-input\":_vm.searchInput},on:{\"update:searchInput\":function($event){_vm.searchInput=$event},\"update:search-input\":function($event){_vm.searchInput=$event}}},[_c('template',{slot:\"search-filter\"},[_c('QuickSearch',{model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1)],2)],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tabs',{attrs:{\"value\":_vm.activeGroupSystem,\"optional\":_vm.optional}},_vm._l((_vm.groups),function(group){return _c('v-tab',{key:group.system,attrs:{\"tab-value\":group.system},on:{\"click\":function($event){_vm.$router.push(_vm.routeFor(group.system)).catch(() => {})}}},[_vm._v(\" \"+_vm._s(group.name)+\" (\"+_vm._s(group.count)+\") \")])}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { createQueryEditor, injectQueryStore } from '@/use/uql'\nimport { addAllSystem, System } from '@/tracing/system/use-systems'\n\n// Misc\nimport {\n isGroupSystem,\n isSpanSystem,\n isLogSystem,\n isEventSystem,\n systemMatches,\n SystemName,\n AttrKey,\n} from '@/models/otel'\n\ninterface Group {\n name: string\n system: SystemName\n count: number\n}\n\nexport default defineComponent({\n name: 'SystemGroupPicker',\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n value: {\n type: Array as PropType,\n default: () => [],\n },\n optional: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const spanSystems = computed(() => {\n const systems = props.systems.filter((item) => isSpanSystem(item.system))\n addAllSystem(systems, SystemName.SpansAll)\n return systems\n })\n\n const activeSpanSystems = computed(() => {\n if (!isSpanSystem(...props.value)) {\n return spanSystems.value\n }\n return spanSystems.value.filter((item) => {\n for (let system of props.value) {\n if (systemMatches(item.system, system)) {\n return true\n }\n }\n return false\n })\n })\n\n const logSystems = computed(() => {\n const systems = props.systems.filter((item) => isLogSystem(item.system))\n addAllSystem(systems, SystemName.LogAll)\n return systems\n })\n\n const activeLogSystems = computed(() => {\n if (!isLogSystem(...props.value)) {\n return logSystems.value\n }\n return logSystems.value.filter((item) => {\n for (let system of props.value) {\n if (systemMatches(item.system, system)) {\n return true\n }\n }\n return false\n })\n })\n\n const eventSystems = computed(() => {\n const systems = props.systems.filter((item) => isEventSystem(item.system))\n addAllSystem(systems, SystemName.EventsAll)\n return systems\n })\n\n const activeEventSystems = computed(() => {\n if (!isEventSystem(...props.value)) {\n return eventSystems.value\n }\n return eventSystems.value.filter((item) => {\n for (let system of props.value) {\n if (systemMatches(item.system, system)) {\n return true\n }\n }\n return false\n })\n })\n\n const groups = computed(() => {\n const groups: Group[] = []\n\n if (spanSystems.value.length > 1 || isSpanSystem(...props.value)) {\n groups.push({\n name: 'Spans',\n system: SystemName.SpansAll,\n count: countGroups(activeSpanSystems.value),\n })\n }\n\n if (logSystems.value.length > 1 || isLogSystem(...props.value)) {\n groups.push({\n name: 'Logs',\n system: SystemName.LogAll,\n count: countGroups(activeLogSystems.value),\n })\n }\n\n if (eventSystems.value.length > 1 || isEventSystem(...props.value)) {\n groups.push({\n name: 'Events',\n system: SystemName.EventsAll,\n count: countGroups(activeEventSystems.value),\n })\n }\n\n return groups\n })\n\n const activeGroupSystem = computed(() => {\n if (!props.value.length) {\n if (!props.optional && groups.value.length) {\n return groups.value[0].system\n }\n return undefined\n }\n\n const system = props.value[0]\n if (isLogSystem(system)) {\n return SystemName.LogAll\n }\n if (isEventSystem(system)) {\n return SystemName.EventsAll\n }\n return SystemName.SpansAll\n })\n\n const systemItems = computed(() => {\n if (props.loading) {\n return []\n }\n\n switch (activeGroupSystem.value) {\n case SystemName.SpansAll:\n return spanSystems.value\n case SystemName.EventsAll:\n return eventSystems.value\n case SystemName.LogAll:\n return logSystems.value\n default:\n return []\n }\n })\n\n watch(\n systemItems,\n (systemItems) => {\n ctx.emit('update:systems', systemItems)\n },\n { immediate: true, flush: 'sync' },\n )\n\n const { where } = injectQueryStore()\n function routeFor(system: string) {\n return {\n name: 'SpanGroupList',\n query: {\n system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, isSpanSystem(system))\n .add(where.value)\n .toString(),\n },\n }\n }\n\n return { groups, activeGroupSystem, routeFor }\n },\n})\n\nfunction countGroups(systems: System[]) {\n let sum = 0\n for (let system of systems) {\n if (!isGroupSystem(system.system)) {\n sum += system.groupCount\n }\n }\n return sum\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemGroupPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemGroupPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SystemGroupPicker.vue?vue&type=template&id=54c0d4dc&scoped=true&\"\nimport script from \"./SystemGroupPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./SystemGroupPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54c0d4dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('ListViewsDrawer',{attrs:{\"views\":_vm.views}}),_c('SaveViewDrawer',{attrs:{\"views\":_vm.views,\"disabled\":!_vm.user.isAuth}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\nimport { User } from '@/org/use-users'\n\nexport interface SavedView {\n id: number\n\n userId: number\n projectId: number\n\n name: string\n route: string\n params: Record\n query: Record\n pinned: boolean\n\n user?: User\n}\n\nexport type UseSavedViews = ReturnType\n\nexport function useSavedViews(paramsSource: AxiosParamsSource) {\n const route = useRoute()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/saved-views`,\n params: paramsSource(),\n }\n })\n\n const views = computed(() => {\n return data.value?.views ?? []\n })\n\n return proxyRefs({\n status,\n loading,\n\n items: views,\n\n reload,\n })\n}\n\nexport function useSavedViewManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function save(view: Partial) {\n const { projectId } = route.value.params\n const url = `/internal/v1/tracing/${projectId}/saved-views`\n return request({ method: 'POST', url, data: view })\n }\n\n function del(viewId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/tracing/${projectId}/saved-views/${viewId}`\n return request({ method: 'DELETE', url })\n }\n\n function pin(viewId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/tracing/${projectId}/saved-views/${viewId}/pinned`\n return request({ method: 'PUT', url })\n }\n\n function unpin(viewId: number) {\n const { projectId } = route.value.params\n const url = `/internal/v1/tracing/${projectId}/saved-views/${viewId}/unpinned`\n return request({ method: 'PUT', url })\n }\n\n return proxyRefs({ pending, save, del, pin, unpin })\n}\n","\nimport { defineComponent, shallowRef, computed, watch, proxyRefs, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { AxiosParams } from '@/use/axios'\nimport { useDataSource, Item } from '@/use/datasource'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport Combobox from '@/components/Combobox.vue'\nimport UqlChip from '@/components/UqlChip.vue'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\nimport { quote } from '@/util/string'\nimport { AttrKey } from '@/models/otel'\n\ninterface Column extends Item {\n ordered?: boolean\n searchable?: boolean\n}\n\nenum Op {\n Exists = 'exists',\n NotExists = 'not exists',\n\n Like = 'like',\n NotLike = 'not like',\n\n Contains = 'contains',\n NotContains = 'not contains',\n}\n\nexport default defineComponent({\n name: 'WhereFilterMenu',\n components: { Combobox, UqlChip },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const menu = shallowRef(false)\n const formRef = shallowRef()\n const form = useForm()\n\n const columnsDs = useDataSource(\n () => {\n if (!menu.value) {\n return null\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes?with_columns`,\n params: props.axiosParams,\n }\n },\n { suggestSearchInput: true },\n )\n\n const opItems = computed((): string[] => {\n const ops = []\n ops.push(Op.Contains, Op.NotContains, Op.Like, Op.NotLike)\n ops.push('=', '!=', '<', '<=', '>', '>=')\n ops.push(Op.Exists, Op.NotExists)\n return ops\n })\n\n const valuesDs = useDataSource(\n () => {\n if (!menu.value || !form.column || !form.column.value) {\n return\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes/${form.column.value}`,\n params: {\n ...props.axiosParams,\n },\n }\n },\n { suggestSearchInput: true },\n )\n\n const valuePlaceholder = computed((): string => {\n switch (form.op) {\n case Op.Like:\n case Op.NotLike:\n return '%substring% or %suffix or prefix%'\n case Op.Contains:\n case Op.NotContains:\n return 'substr1|substr2|substr3'\n default:\n return ''\n }\n })\n\n const valueHint = computed((): string => {\n switch (form.op) {\n case Op.Like:\n case Op.NotLike:\n return '\"%\" matches zero or more characters'\n case Op.Contains:\n case Op.NotContains:\n return 'Case-insensitive options separated with \"|\"'\n default:\n return ''\n }\n })\n\n const valueDisabled = computed((): boolean => {\n switch (form.op) {\n case Op.Exists:\n case Op.NotExists:\n return true\n default:\n return false\n }\n })\n\n function addFilter() {\n setTimeout(() => {\n if (!form.column || !form.op) {\n return\n }\n\n const editor = props.uql.createEditor()\n\n if (valueDisabled.value) {\n editor.add(`where ${form.column.value} ${form.op}`)\n } else {\n const value = form.columnValue?.value ?? ''\n editor.add(`where ${form.column.value} ${form.op} ${quote(value)}`)\n }\n\n props.uql.commitEdits(editor)\n\n form.column = undefined\n form.op = ''\n form.columnValue = undefined\n formRef.value.resetValidation()\n\n menu.value = false\n }, 10)\n }\n\n watch(valueDisabled, (disabled) => {\n if (disabled) {\n form.columnValue = undefined\n }\n })\n\n return {\n AttrKey,\n menu,\n form,\n formRef,\n\n columnsDs,\n opItems,\n valuesDs,\n valuePlaceholder,\n valueHint,\n valueDisabled,\n\n addFilter,\n }\n },\n})\n\nfunction useForm() {\n const isValid = shallowRef(false)\n const rules = {\n column: [requiredRule],\n op: [requiredRule],\n columnValue: [],\n }\n\n const column = shallowRef()\n const op = shallowRef('')\n const columnValue = shallowRef()\n\n return proxyRefs({\n isValid,\n rules,\n\n column,\n op,\n columnValue,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline-block\"},[_c('v-btn',{attrs:{\"small\":\"\",\"plain\":\"\"},on:{\"click\":function($event){_vm.drawer = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-dock-left\")]),_c('span',[_vm._v(\"Views\")])],1),_c('v-navigation-drawer',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:({\n handler: _vm.onClickOutside,\n closeConditional: _vm.closeConditional,\n }),expression:\"{\\n handler: onClickOutside,\\n closeConditional,\\n }\"}],attrs:{\"app\":\"\",\"temporary\":\"\",\"stateless\":\"\",\"width\":\"500\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-container',{staticClass:\"py-6\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"no-gutters\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Filter views\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"autofocus\":\"\",\"clearable\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',[_c('v-col',[_c('SavedViewsList',{attrs:{\"loading\":_vm.views.loading,\"items\":_vm.filteredViews,\"views\":_vm.views},on:{\"click:item\":function($event){_vm.drawer = false}}})],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"loading\":_vm.loading,\"flat\":\"\"}},[(!_vm.items.length)?_c('v-card-text',{staticClass:\"text-center\"},[_vm._v(\" The list is empty.\"),_c('br'),_vm._v(\" Have you saved any views yet? \")]):_c('v-list',{staticClass:\"py-0\"},[_vm._l((_vm.items),function(item,i){return [(i > 0)?_c('v-divider',{key:`divider-${item.id}`}):_vm._e(),_c('v-list-item',{key:item.id,attrs:{\"to\":{ name: item.route, params: item.params, query: item.query },\"exact\":\"\",\"three-line\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:item', item)}}},[_c('v-list-item-content',[_c('v-list-item-title',[(_vm.tabName(item))?[_c('span',[_vm._v(_vm._s(_vm.tabName(item)))]),_c('span',{staticClass:\"px-2\"},[_vm._v(\">\")])]:_vm._e(),(item.query.system)?[_c('span',[_vm._v(_vm._s(_vm.querySystem(item.query)))]),_c('span',{staticClass:\"px-2\"},[_vm._v(\">\")])]:_vm._e(),_c('span',[_vm._v(_vm._s(item.name))]),(item.pinned)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"loading\":_vm.pendingView?.id === item.id,\"icon\":\"\",\"title\":\"Unpin view\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.unpinView(item)}}},[_c('v-icon',{attrs:{\"size\":\"20\",\"color\":\"green darken-2\"}},[_vm._v(\"mdi-pin\")])],1):_c('v-btn',{staticClass:\"ml-2\",attrs:{\"loading\":_vm.pendingView?.id === item.id,\"icon\":\"\",\"title\":\"Pin view to the top\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.pinView(item)}}},[_c('v-icon',{attrs:{\"size\":\"20\"}},[_vm._v(\"mdi-pin-outline\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.pendingView?.id === item.id,\"icon\":\"\",\"title\":\"Delete view\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteView(item)}}},[_c('v-icon',{attrs:{\"size\":\"20\"}},[_vm._v(\"mdi-delete-outline\")])],1)],2),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.subtitle(item)))])],1),(item.user)?_c('v-list-item-avatar',{staticClass:\"align-self-center\",attrs:{\"title\":`Saved by ${item.user.name}`}},[_c('v-img',{attrs:{\"src\":item.user.avatar}})],1):_vm._e()],1)]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useSavedViewManager, SavedView, UseSavedViews } from '@/tracing/views/use-saved-views'\n\nexport default defineComponent({\n name: 'SavedViewList',\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n editMode: {\n type: Boolean,\n default: false,\n },\n views: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const viewMan = useSavedViewManager()\n const pendingView = shallowRef()\n\n function pinView(view: SavedView) {\n pendingView.value = view\n viewMan.pin(view.id).finally(() => {\n pendingView.value = undefined\n props.views.reload()\n })\n }\n\n function unpinView(view: SavedView) {\n pendingView.value = view\n viewMan.unpin(view.id).finally(() => {\n pendingView.value = undefined\n props.views.reload()\n })\n }\n\n function deleteView(view: SavedView) {\n pendingView.value = view\n viewMan.del(view.id).finally(() => {\n pendingView.value = undefined\n props.views.reload()\n })\n }\n\n function tabName(item: SavedView): string {\n switch (item.route) {\n case 'SpanGroupList':\n return 'Groups'\n case 'SpanList':\n return 'Spans'\n case 'SpanTimeseries':\n return 'Timeseries'\n default:\n return ''\n }\n }\n\n function subtitle(item: SavedView): string {\n return item.query.query ?? ''\n }\n\n function querySystem(query: Record): string {\n const system = query.system\n if (Array.isArray(system) && system.length) {\n return system[0]\n }\n return system\n }\n\n return {\n viewMan,\n pendingView,\n pinView,\n unpinView,\n deleteView,\n\n tabName,\n subtitle,\n querySystem,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SavedViewsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SavedViewsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SavedViewsList.vue?vue&type=template&id=67a06d56&scoped=true&\"\nimport script from \"./SavedViewsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SavedViewsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67a06d56\",\n null\n \n)\n\nexport default component.exports","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { SavedView, UseSavedViews } from '@/tracing/views/use-saved-views'\n\n// Components\nimport SavedViewsList from '@/tracing/views/SavedViewsList.vue'\n\nexport default defineComponent({\n name: 'ListViewDrawer',\n components: { SavedViewsList },\n\n props: {\n views: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const searchInput = shallowRef('')\n const drawer = shallowRef(false)\n\n const filteredViews = computed((): SavedView[] => {\n if (!searchInput.value) {\n return props.views.items\n }\n return fuzzyFilter(props.views.items, searchInput.value, { key: 'name' })\n })\n\n function onClickOutside() {\n drawer.value = false\n }\n\n function closeConditional() {\n return drawer.value\n }\n\n return {\n searchInput,\n filteredViews,\n\n drawer,\n onClickOutside,\n closeConditional,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ListViewsDrawer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ListViewsDrawer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListViewsDrawer.vue?vue&type=template&id=3e1ce433&scoped=true&\"\nimport script from \"./ListViewsDrawer.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListViewsDrawer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e1ce433\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline-block\"},[_c('v-btn',{staticClass:\"ml-2\",attrs:{\"small\":\"\",\"plain\":\"\",\"disabled\":_vm.disabled},on:{\"click\":function($event){_vm.drawer = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"Save view\")])],1),_c('v-navigation-drawer',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:({\n handler: _vm.onClickOutside,\n closeConditional: _vm.closeConditional,\n }),expression:\"{\\n handler: onClickOutside,\\n closeConditional,\\n }\"}],attrs:{\"app\":\"\",\"temporary\":\"\",\"stateless\":\"\",\"width\":\"500\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-container',{staticClass:\"py-6\",attrs:{\"fluid\":\"\"}},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.saveView.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"New view\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\",\"autofocus\":\"\",\"rules\":_vm.rules.name,\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\",\"justify\":\"end\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.drawer = false}}},[_vm._v(\"Cancel\")]),_c('v-btn',{staticClass:\"primary ml-2\",attrs:{\"loading\":_vm.viewMan.pending,\"disabled\":!_vm.isValid,\"type\":\"submit\",\"small\":\"\"}},[_vm._v(\"Save\")])],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',[_c('v-col',[_c('SavedViewsList',{attrs:{\"loading\":_vm.views.loading,\"items\":_vm.views.items,\"views\":_vm.views},on:{\"click:item\":function($event){_vm.drawer = false}}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { omit } from 'lodash-es'\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useSavedViewManager, UseSavedViews } from '@/tracing/views/use-saved-views'\n\n// Components\nimport SavedViewsList from '@/tracing/views/SavedViewsList.vue'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'SaveViewDrawer',\n components: { SavedViewsList },\n\n props: {\n views: {\n type: Object as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const drawer = shallowRef(false)\n\n const form = shallowRef()\n const isValid = shallowRef(true)\n const name = shallowRef('')\n const rules = {\n name: [requiredRule],\n }\n const viewMan = useSavedViewManager()\n\n function saveView() {\n if (!form.value.validate()) {\n return\n }\n\n viewMan\n .save({\n name: name.value,\n route: route.value.name as string,\n params: route.value.params,\n query: omit(route.value.query, 'time_gte'),\n })\n .then(() => {\n name.value = ''\n form.value.reset()\n props.views.reload()\n })\n }\n\n function onClickOutside() {\n drawer.value = false\n }\n\n function closeConditional() {\n return drawer.value\n }\n\n return {\n form,\n isValid,\n name,\n rules,\n viewMan,\n saveView,\n\n drawer,\n onClickOutside,\n closeConditional,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SaveViewDrawer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SaveViewDrawer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SaveViewDrawer.vue?vue&type=template&id=6a2b8552&scoped=true&\"\nimport script from \"./SaveViewDrawer.vue?vue&type=script&lang=ts&\"\nexport * from \"./SaveViewDrawer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a2b8552\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useUser } from '@/org/use-users'\nimport { useSavedViews } from '@/tracing/views/use-saved-views'\n\n// Components\nimport ListViewsDrawer from '@/tracing/views/ListViewsDrawer.vue'\nimport SaveViewDrawer from '@/tracing/views/SaveViewDrawer.vue'\n\nexport default defineComponent({\n name: 'SavedViews',\n components: { ListViewsDrawer, SaveViewDrawer },\n\n setup() {\n const user = useUser()\n\n const views = useSavedViews(() => {\n return {}\n })\n\n return {\n user,\n views,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SavedViews.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SavedViews.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SavedViews.vue?vue&type=template&id=7a66bab4&scoped=true&\"\nimport script from \"./SavedViews.vue?vue&type=script&lang=ts&\"\nexport * from \"./SavedViews.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a66bab4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex\"},[_c('WhereSidebarBtn',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams}}),_c('SearchFilterMenu',{attrs:{\"systems\":_vm.systems,\"uql\":_vm.uql}}),(_vm.systems.isSpan)?_c('DurationFilterMenu',{attrs:{\"uql\":_vm.uql}}):_vm._e(),_c('AttrFilterMenu',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"attr-key\":_vm.AttrKey.spanStatusCode,\"label\":\"Status\"}}),_c('AdvancedMenu',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"agg-disabled\":_vm.aggDisabled}}),_c('v-divider',{staticClass:\"mx-2\",attrs:{\"vertical\":\"\"}}),_c('QueryHelpDialog'),_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:reset')}}},[_vm._v(\"Reset\")]),_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.uql.rawMode = true}}},[_vm._v(\"Edit\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\"Search\")])]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addFilter.apply(null, arguments)}}},[_c('v-card',{attrs:{\"width\":\"550\"}},[_c('v-card-text',{staticClass:\"pa-6\"},[_c('v-row',[_c('v-col',[_c('v-btn-toggle',{attrs:{\"dense\":\"\",\"tile\":\"\",\"color\":\"primary\"},model:{value:(_vm.activeItem),callback:function ($$v) {_vm.activeItem=$$v},expression:\"activeItem\"}},_vm._l((_vm.items),function(item){return _c('v-btn',{key:item.value,attrs:{\"value\":item}},[_vm._v(\" \"+_vm._s(item.value)+\" \")])}),1)],1)],1),_c('v-row',[_c('v-col',[(_vm.activeItem)?_vm._l((_vm.activeItem.attrs),function(attr){return _c('v-chip',{key:attr,staticClass:\"mr-1\"},[_vm._v(_vm._s(attr))])}):_vm._e()],2)],1),_c('v-row',[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Contains substr1|substr2|substr3\",\"hint\":\"Case-insensitive options separated with \\\"|\\\"\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"autofocus\":\"\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.isValid}},[_vm._v(\"Filter\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, watchEffect, PropType } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { UseUql } from '@/use/uql'\n\n// Misc\nimport { AttrKey, SystemName } from '@/models/otel'\nimport { quote, escapeRe } from '@/util/string'\n\nexport default defineComponent({\n name: 'SearchFilterMenu',\n\n props: {\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const { router, route } = useRouter()\n const menu = shallowRef(false)\n const activeItem = shallowRef()\n const searchInput = shallowRef('')\n\n const items = computed(() => {\n return [\n {\n value: 'any',\n attrs: [AttrKey.displayName],\n system: SystemName.SpansAll,\n },\n {\n value: 'spans',\n attrs: [AttrKey.spanName],\n system: SystemName.SpansAll,\n },\n {\n value: 'events',\n attrs: [AttrKey.spanEventName],\n system: SystemName.EventsAll,\n },\n {\n value: 'http',\n attrs: [AttrKey.httpMethod, AttrKey.httpRoute, AttrKey.httpTarget],\n system: SystemName.HttpAll,\n },\n {\n value: 'logs',\n attrs: [AttrKey.logSeverity, AttrKey.logMessage],\n system: SystemName.LogAll,\n },\n {\n value: 'exceptions',\n attrs: [AttrKey.exceptionType, AttrKey.exceptionMessage],\n system: SystemName.LogAll,\n },\n {\n value: 'funcs',\n attrs: [AttrKey.codeFunction, AttrKey.codeFilepath],\n system: SystemName.SpansAll,\n },\n {\n value: 'db',\n attrs: [AttrKey.dbOperation, AttrKey.dbSqlTable, AttrKey.dbStatement],\n system: SystemName.DbAll,\n },\n ]\n })\n\n const isValid = computed(() => {\n return activeItem.value && searchInput.value\n })\n\n watchEffect(() => {\n if (!activeItem.value && items.value.length) {\n activeItem.value = items.value[0]\n }\n })\n\n function addFilter() {\n if (!isValid.value || !activeItem.value) {\n menu.value = false\n return\n }\n\n let system: any = activeItem.value.system\n if (!system) {\n system = props.systems.activeSystems\n }\n\n const attrs = activeItem.value.attrs\n const key = attrs.length > 1 ? `{${attrs.join(',')}}` : attrs[0]\n const quotedValue = quote(searchInput.value)\n\n const editor = props.uql.createEditor()\n editor.replaceOrPush(\n new RegExp(`^where\\\\s+${escapeRe(key)}\\\\s+contains\\\\s+.+`, 'i'),\n `where ${key} contains ${quotedValue}`,\n )\n const query = editor.toString()\n\n router.push({\n name: 'SpanGroupList',\n query: {\n ...route.value.query,\n system,\n query,\n },\n })\n\n menu.value = false\n }\n\n return {\n AttrKey,\n menu,\n\n activeItem,\n items,\n searchInput,\n isValid,\n\n addFilter,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchFilterMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchFilterMenu.vue?vue&type=template&id=75179ed8&scoped=true&\"\nimport script from \"./SearchFilterMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchFilterMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchFilterMenu.vue?vue&type=style&index=0&id=75179ed8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"75179ed8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Duration \")])]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.addFilter.apply(null, arguments)}}},[_c('v-card',{attrs:{\"width\":\"360px\"}},[_c('v-card-text',{staticClass:\"py-6\"},[_c('v-row',{staticClass:\"mb-n4\",attrs:{\"align\":\"center\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"0\",\"label\":\">= duration\",\"suffix\":\"ms\",\"outlined\":\"\",\"dense\":\"\",\"autofocus\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.gte),callback:function ($$v) {_vm.gte=$$v},expression:\"gte\"}})],1),_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":\"auto\"}},[_vm._v(\"AND\")]),_c('v-col',[_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":_vm.gte + 1,\"label\":\"< duration\",\"suffix\":\"ms\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.lt),callback:function ($$v) {_vm.lt=$$v},expression:\"lt\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"disabled\":!_vm.isValid}},[_vm._v(\"Filter\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseUql } from '@/use/uql'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'DurationFilterMenu',\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const menu = shallowRef(false)\n const gte = shallowRef()\n const lt = shallowRef()\n\n const isValid = computed((): boolean => {\n return gte.value || lt.value\n })\n\n function addFilter() {\n if (!isValid.value) {\n menu.value = false\n return\n }\n\n const editor = props.uql.createEditor()\n\n if (gte.value) {\n editor.replaceOrPush(\n /^where\\s+span\\.duration\\s+>=\\s.+$/i,\n `where ${AttrKey.spanDuration} >= ${gte.value}ms`,\n )\n }\n if (lt.value) {\n editor.replaceOrPush(\n /^where\\s+span\\.duration\\s+<\\s.+$/i,\n `where ${AttrKey.spanDuration} < ${lt.value}ms`,\n )\n }\n\n props.uql.commitEdits(editor)\n\n menu.value = false\n gte.value = undefined\n lt.value = undefined\n }\n\n return { menu, gte, lt, isValid, addFilter }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DurationFilterMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DurationFilterMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DurationFilterMenu.vue?vue&type=template&id=11c4f732&scoped=true&\"\nimport script from \"./DurationFilterMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./DurationFilterMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11c4f732\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_c('span',[_vm._v(_vm._s(_vm.label))]),(_vm.showIcon)?_c('v-icon',{staticClass:\"ml-0\",attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")]):_vm._e()],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('SearchableList',{attrs:{\"loading\":_vm.suggestions.loading,\"items\":_vm.suggestions.filteredItems,\"num-item\":_vm.suggestions.items.length,\"search-input\":_vm.suggestions.searchInput,\"return-object\":\"\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.suggestions, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.suggestions, \"searchInput\", $event)},\"input\":function($event){return _vm.addFilter($event.value, '=')}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.truncateMiddle(item.value, 60))+\" \")])],1),_c('v-list-item-action',{staticClass:\"my-0\",on:{\"click\":function($event){$event.stopPropagation();return _vm.addFilter(item.value, '!=')}}},[_c('v-btn',{attrs:{\"icon\":\"\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-not-equal\")])],1)],1)]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { AxiosParams } from '@/use/axios'\nimport { UseUql } from '@/use/uql'\nimport { useDataSource } from '@/use/datasource'\n\n// Components\nimport SearchableList from '@/components/SearchableList.vue'\n\n// Misc\nimport { truncateMiddle } from '@/util/string'\n\nexport default defineComponent({\n name: 'AttrFilterMenu',\n components: { SearchableList },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType,\n required: true,\n },\n attrKey: {\n type: String,\n required: true,\n },\n label: {\n type: String,\n required: true,\n },\n showIcon: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const { route } = useRouter()\n const menu = shallowRef(false)\n\n const suggestions = useDataSource(() => {\n if (!menu.value) {\n return null\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes/${props.attrKey}`,\n params: {\n ...props.axiosParams,\n },\n }\n })\n\n function addFilter(attrValue: string, op: string) {\n const editor = props.uql.createEditor()\n editor.where(props.attrKey, op, attrValue)\n props.uql.commitEdits(editor)\n\n menu.value = false\n ctx.emit('change')\n }\n\n return { menu, suggestions, addFilter, truncateMiddle }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AttrFilterMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AttrFilterMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AttrFilterMenu.vue?vue&type=template&id=1b24fcf4&scoped=true&\"\nimport script from \"./AttrFilterMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./AttrFilterMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b24fcf4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}])},[_c('v-list',[_c('WhereMenu',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams}}),_c('AggByMenu',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"disabled\":_vm.aggDisabled}}),_c('GroupByMenu',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"disabled\":_vm.aggDisabled}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({},'v-list-item',attrs,false),on),[_c('v-list-item-title',[_vm._v(\"Where\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-card',{staticClass:\"pa-3\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-form',{ref:\"formRef\",staticClass:\"pa-3\",staticStyle:{\"width\":\"400px\"},model:{value:(_vm.form.isValid),callback:function ($$v) {_vm.$set(_vm.form, \"isValid\", $$v)},expression:\"form.isValid\"}},[_c('v-row',[_c('v-col',{staticClass:\"space-around\"},[_c('UqlChip',{attrs:{\"uql\":_vm.uql,\"column\":\"span.event_count\",\"op\":\">\",\"value\":\"0\",\"tooltip\":\"Filter spans with events\"},on:{\"click\":function($event){_vm.menu = false}}}),_c('UqlChip',{attrs:{\"uql\":_vm.uql,\"column\":\"span.event_log_count\",\"op\":\">\",\"value\":\"0\",\"tooltip\":\"Filter spans with logs\"},on:{\"click\":function($event){_vm.menu = false}}}),_c('UqlChip',{attrs:{\"uql\":_vm.uql,\"column\":\"span.event_error_count\",\"op\":\">\",\"value\":\"0\",\"tooltip\":\"Filter spans with errors\"},on:{\"click\":function($event){_vm.menu = false}}})],1)],1),_c('v-divider',{staticClass:\"my-6\"}),_c('v-row',[_c('v-col',{staticClass:\"grey--text text--darken-3\"},[_vm._v(\"For example, \"),_c('strong',[_vm._v(\"where span.duration > 100ms\")]),_vm._v(\".\")])],1),_c('v-row',{staticClass:\"mb-n3\"},[_c('v-col',{staticClass:\"pt-4 pr-2\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{attrs:{\"color\":\"grey\",\"size\":\"30\"}},[_c('span',{staticClass:\"white--text text-h6\"},[_vm._v(\"1\")])])],1),_c('v-col',[_c('v-autocomplete',{attrs:{\"loading\":_vm.columnsDs.loading,\"items\":_vm.columnsDs.items,\"rules\":_vm.form.rules.column,\"label\":\"Column\",\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.form.column),callback:function ($$v) {_vm.$set(_vm.form, \"column\", $$v)},expression:\"form.column\"}})],1)],1),_c('v-row',{staticClass:\"mb-n3\"},[_c('v-col',{staticClass:\"pt-4 pr-2\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{attrs:{\"color\":\"grey\",\"size\":\"30\"}},[_c('span',{staticClass:\"white--text text-h6\"},[_vm._v(\"2\")])])],1),_c('v-col',[_c('v-autocomplete',{staticClass:\"fit\",staticStyle:{\"width\":\"200px\"},attrs:{\"rules\":_vm.form.rules.op,\"label\":\"Operator\",\"items\":_vm.opItems,\"outlined\":\"\",\"dense\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.form.op),callback:function ($$v) {_vm.$set(_vm.form, \"op\", $$v)},expression:\"form.op\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pt-4 pr-2\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{attrs:{\"color\":\"grey\",\"size\":\"30\"}},[_c('span',{staticClass:\"white--text text-h6\"},[_vm._v(\"3\")])])],1),_c('v-col',[_c('Combobox',{attrs:{\"data-source\":_vm.valuesDs,\"rules\":_vm.form.rules.columnValue,\"label\":\"Value\",\"placeholder\":_vm.valuePlaceholder,\"hint\":_vm.valueHint,\"disabled\":_vm.valueDisabled,\"dense\":\"\"},model:{value:(_vm.form.columnValue),callback:function ($$v) {_vm.$set(_vm.form, \"columnValue\", $$v)},expression:\"form.columnValue\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"primary\",attrs:{\"disabled\":!_vm.form.isValid},on:{\"click\":_vm.addFilter}},[_vm._v(\"Filter\")])],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-combobox',_vm._b({staticClass:\"pt-0\",attrs:{\"value\":_vm.value,\"persistent-hint\":\"\",\"loading\":_vm.dataSource.loading,\"items\":_vm.dataSource.filteredItems,\"error-messages\":_vm.dataSource.errorMessages,\"search-input\":_vm.dataSource.searchInput,\"return-object\":\"\",\"no-filter\":\"\",\"auto-select-first\":\"\",\"clearable\":\"\",\"outlined\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.dataSource, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.dataSource, \"searchInput\", $event)},\"input\":_vm.onInput},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.truncateMiddle(item.value, 80)))])],1),(item.hint)?_c('v-list-item-action',[_c('v-list-item-action-text',[_vm._v(_vm._s(item.hint))])],1):_vm._e()]}}])},'v-combobox',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseDataSource, Item } from '@/use/datasource'\n\n// Misc\nimport { truncateMiddle } from '@/util/string'\n\nexport default defineComponent({\n name: 'UptraceCombobox',\n\n props: {\n value: {\n type: Object as PropType,\n default: undefined,\n },\n dataSource: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, { emit }) {\n function onInput(value: Item | string | undefined) {\n if (typeof value === 'string') {\n value = { value, text: value }\n }\n emit('input', value)\n }\n\n return {\n onInput,\n truncateMiddle,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Combobox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Combobox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Combobox.vue?vue&type=template&id=d9479af4&scoped=true&\"\nimport script from \"./Combobox.vue?vue&type=script&lang=ts&\"\nexport * from \"./Combobox.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d9479af4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tooltip',{attrs:{\"disabled\":!_vm.tooltip,\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-chip',_vm._g(_vm._b({attrs:{\"label\":\"\"},on:{\"click\":_vm.apply}},'v-chip',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.text)+\" \")])]}}])},[_vm._v(\" \"+_vm._s(_vm.tooltip)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseUql } from '@/use/uql'\n\n// Misc\nimport { quote } from '@/util/string'\n\nexport default defineComponent({\n name: 'UqlChip',\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n column: {\n type: String,\n default: '',\n },\n group: {\n type: String,\n default: '',\n },\n op: {\n type: String,\n default: '',\n },\n value: {\n type: undefined,\n default: undefined,\n },\n query: {\n type: String,\n default: '',\n },\n tooltip: {\n type: String,\n default: undefined,\n },\n },\n\n setup(props, ctx) {\n const text = computed(() => {\n if (props.group) {\n return props.group\n }\n\n if (props.column) {\n const parts = [props.column, props.op]\n\n if (props.value) {\n parts.push(quote(props.value) as string)\n }\n\n return parts.join(' ')\n }\n\n if (props.query) {\n return props.query\n }\n\n return ''\n })\n\n function apply() {\n ctx.emit('click')\n\n if (props.group) {\n const editor = props.uql.createEditor()\n editor.resetGroupBy(props.group)\n props.uql.commitEdits(editor)\n return\n }\n\n if (props.column && !props.op) {\n return aggBy(props.column)\n }\n\n if (props.column && props.op) {\n const editor = props.uql.createEditor()\n editor.where(props.column, props.op, props.value)\n props.uql.commitEdits(editor)\n return\n }\n\n if (props.query) {\n props.uql.query = props.query\n return\n }\n }\n\n function aggBy(column: string) {\n const editor = props.uql.createEditor()\n editor.add(column)\n props.uql.commitEdits(editor)\n }\n\n return {\n text,\n\n apply,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UqlChip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UqlChip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UqlChip.vue?vue&type=template&id=a7188904&scoped=true&\"\nimport script from \"./UqlChip.vue?vue&type=script&lang=ts&\"\nexport * from \"./UqlChip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a7188904\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./WhereMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./WhereMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WhereMenu.vue?vue&type=template&id=7acae1b7&scoped=true&\"\nimport script from \"./WhereMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./WhereMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WhereMenu.vue?vue&type=style&index=0&id=7acae1b7&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7acae1b7\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({attrs:{\"disabled\":_vm.disabled}},'v-list-item',attrs,false),on),[_c('v-list-item-title',[_vm._v(\"Aggregate\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.addFilter.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{attrs:{\"width\":\"400px\"}},[_c('v-card-text',{staticClass:\"py-6 text-body-2\"},[_c('v-row',[_c('v-col',{staticClass:\"no-transform space-around\"},_vm._l((_vm.aggColumns),function(col){return _c('UqlChip',{key:col.name,attrs:{\"uql\":_vm.uql,\"column\":col.name,\"tooltip\":col.tooltip},on:{\"click\":function($event){_vm.menu = false}}})}),1)],1),_c('div',{staticClass:\"mt-3 mb-4 d-flex align-center\"},[_c('v-divider'),_c('div',{staticClass:\"mx-2 grey--text text--lighten-1\"},[_vm._v(\"or\")]),_c('v-divider')],1),_c('v-row',{staticClass:\"mb-n1\"},[_c('v-col',[_vm._v(\"Select a function and then a column: \"),_c('strong',[_vm._v(\"func(column)\")]),_vm._v(\".\")])],1),_c('v-row',{staticClass:\"mb-n6\",attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":5}},[_c('v-autocomplete',{staticClass:\"fit\",attrs:{\"rules\":_vm.rules.func,\"label\":\"Function\",\"items\":_vm.funcItems,\"return-object\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.func),callback:function ($$v) {_vm.func=$$v},expression:\"func\"}})],1),_c('v-col',{attrs:{\"cols\":7}},[_c('Combobox',{staticClass:\"fit\",attrs:{\"data-source\":_vm.suggestions,\"label\":\"Column\",\"rules\":_vm.rules.column,\"disabled\":!_vm.func,\"dense\":\"\"},model:{value:(_vm.column),callback:function ($$v) {_vm.column=$$v},expression:\"column\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.isValid}},[_vm._v(\"Add column\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { AxiosParams } from '@/use/axios'\nimport { useDataSource, Item } from '@/use/datasource'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport Combobox from '@/components/Combobox.vue'\nimport UqlChip from '@/components/UqlChip.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { requiredRule } from '@/util/validation'\n\nconst AGG_FUNCS = [\n { name: 'sum' },\n { name: 'avg' },\n { name: 'min' },\n { name: 'max' },\n { name: 'uniq' },\n\n { name: 'any' },\n { name: 'anyLast' },\n { name: 'top3' },\n { name: 'top10' },\n\n { name: 'p50' },\n { name: 'p75' },\n { name: 'p90' },\n { name: 'p95' },\n { name: 'p99' },\n]\ninterface FuncItem {\n text: string\n value: string\n}\n\nconst aggColumns = [\n { name: AttrKey.spanCount, tooltip: 'Number of spans in a group' },\n { name: AttrKey.spanCountPerMin, tooltip: 'Number of spans per minute in a group' },\n { name: AttrKey.spanErrorCount, tooltip: 'Number of spans with .status_code = \"error\"' },\n { name: AttrKey.spanErrorRate, tooltip: 'Percent of spans with .status_code = \"error\"' },\n { name: `p75(${AttrKey.spanDuration})`, tooltip: '75th percentile of .duration' },\n { name: `max(${AttrKey.spanDuration})`, tooltip: 'Max .duration' },\n { name: `uniq(${AttrKey.enduserId})`, tooltip: 'Number of distinct enduser.id' },\n]\n\nexport default defineComponent({\n name: 'AggFilterMenu',\n components: { Combobox, UqlChip },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const { route } = useRouter()\n\n const menu = shallowRef(false)\n const func = shallowRef()\n const column = shallowRef()\n\n const form = shallowRef()\n const isValid = shallowRef(false)\n const rules = {\n func: [requiredRule],\n column: [isColumnValid],\n }\n\n const suggestions = useDataSource(\n () => {\n if (!menu.value) {\n return null\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes`,\n params: {\n ...props.axiosParams,\n func: func.value?.value,\n },\n }\n },\n { suggestSearchInput: true },\n )\n\n const funcItems = computed((): FuncItem[] => {\n const items: FuncItem[] = []\n for (let func of AGG_FUNCS) {\n items.push({ value: func.name, text: func.name + '(...)' })\n }\n return items\n })\n\n function addFilter() {\n if (!func.value || !column.value) {\n return\n }\n\n const query = `${func.value.value}(${column.value.value})`\n aggBy(query)\n\n func.value = undefined\n column.value = undefined\n form.value.resetValidation()\n }\n\n function aggBy(column: string) {\n const editor = props.uql.createEditor()\n editor.add(column)\n props.uql.commitEdits(editor)\n\n menu.value = false\n }\n\n function isColumnValid(s: any) {\n const isValid = Boolean(func.value && s)\n return isValid || 'Column is required'\n }\n\n return {\n menu,\n\n form,\n isValid,\n rules,\n suggestions,\n\n aggColumns,\n func,\n funcItems,\n column,\n\n addFilter,\n aggBy,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AggByMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AggByMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AggByMenu.vue?vue&type=template&id=78d9aed1&scoped=true&\"\nimport script from \"./AggByMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./AggByMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AggByMenu.vue?vue&type=style&index=0&id=78d9aed1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78d9aed1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({attrs:{\"disabled\":_vm.disabled}},'v-list-item',attrs,false),on),[_c('v-list-item-title',[_vm._v(\"Group by\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-form',{ref:\"form\",model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{attrs:{\"width\":\"400px\"}},[_c('v-card-text',{staticClass:\"py-6\"},[_c('v-row',[_c('v-col',{staticClass:\"space-around no-transform\"},_vm._l((_vm.groupColumns),function(column){return _c('UqlChip',{key:column,attrs:{\"uql\":_vm.uql,\"group\":column},on:{\"click\":function($event){_vm.menu = false}}})}),1)],1),_c('div',{staticClass:\"mt-2 mb-3 d-flex align-center\"},[_c('v-divider'),_c('div',{staticClass:\"mx-2 grey--text text--lighten-1\"},[_vm._v(\"or\")]),_c('v-divider')],1),_c('v-row',{staticClass:\"mb-n1\"},[_c('v-col',[_vm._v(\"Select a grouping column.\")])],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('Combobox',{staticClass:\"fit\",attrs:{\"data-source\":_vm.suggestions,\"rules\":_vm.rules.column,\"label\":\"Column\",\"dense\":\"\"},model:{value:(_vm.column),callback:function ($$v) {_vm.column=$$v},expression:\"column\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"mr-2 secondary\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":_vm.add}},[_vm._v(\"Add\")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":_vm.replace}},[_vm._v(\"Replace\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { AxiosParams } from '@/use/axios'\nimport { useDataSource, Item } from '@/use/datasource'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport Combobox from '@/components/Combobox.vue'\nimport UqlChip from '@/components/UqlChip.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { requiredRule } from '@/util/validation'\n\nconst groupColumns = [\n AttrKey.spanSystem,\n AttrKey.spanGroupId,\n AttrKey.serviceName,\n AttrKey.hostName,\n]\n\nexport default defineComponent({\n name: 'GroupByMenu',\n components: { Combobox, UqlChip },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const { route } = useRouter()\n\n const menu = shallowRef(false)\n const column = shallowRef()\n\n const form = shallowRef()\n const isValid = shallowRef(false)\n const rules = {\n column: [requiredRule],\n }\n\n const suggestions = useDataSource(\n () => {\n if (!menu.value) {\n return null\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/attributes`,\n params: {\n ...props.axiosParams,\n },\n }\n },\n { suggestSearchInput: true },\n )\n\n function add() {\n updateQuery(false)\n }\n\n function replace() {\n updateQuery(true)\n }\n\n function updateQuery(replace = false) {\n if (!column.value) {\n return\n }\n\n const editor = props.uql.createEditor()\n if (replace) {\n editor.resetGroupBy(column.value.value)\n } else {\n editor.groupBy(column.value.value)\n }\n props.uql.commitEdits(editor)\n\n column.value = undefined\n form.value.resetValidation()\n menu.value = false\n }\n\n return {\n menu,\n\n form,\n isValid,\n rules,\n suggestions,\n\n groupColumns,\n column,\n\n add,\n replace,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupByMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupByMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupByMenu.vue?vue&type=template&id=455e3776&scoped=true&\"\nimport script from \"./GroupByMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupByMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GroupByMenu.vue?vue&type=style&index=0&id=455e3776&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"455e3776\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport WhereMenu from '@/tracing/query/WhereMenu.vue'\nimport AggByMenu from '@/tracing/query/AggByMenu.vue'\nimport GroupByMenu from '@/tracing/query/GroupByMenu.vue'\n\nexport default defineComponent({\n name: 'AdvancedMenu',\n components: { WhereMenu, AggByMenu, GroupByMenu },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n aggDisabled: {\n type: Boolean,\n default: false,\n },\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdvancedMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AdvancedMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AdvancedMenu.vue?vue&type=template&id=b23c822a&scoped=true&\"\nimport script from \"./AdvancedMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./AdvancedMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b23c822a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":1280},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.dialog = false}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Help \")])]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"Spans Querying Cheat Sheet\")]),_c('v-btn',{staticClass:\"ml-6 primary\",attrs:{\"href\":\"https://uptrace.dev/get/querying-spans.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Documentation\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('CheatsheetCard')],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"Close\")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\",\"href\":\"https://uptrace.dev/get/querying-spans.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Read more\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Components\nimport CheatsheetCard from '@/tracing/CheatsheetCard.vue'\n\nexport default defineComponent({\n name: 'QueryHelpDialog',\n components: { CheatsheetCard },\n\n setup() {\n const dialog = shallowRef(false)\n return { dialog }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryHelpDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QueryHelpDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QueryHelpDialog.vue?vue&type=template&id=35ecbf35&scoped=true&\"\nimport script from \"./QueryHelpDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./QueryHelpDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35ecbf35\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.drawer = !_vm.drawer}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-filter\")]),_c('span',[_vm._v(\"Filters\")])],1),_c('v-navigation-drawer',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:({\n handler: _vm.onClickOutside,\n closeConditional: _vm.closeConditional,\n }),expression:\"{\\n handler: onClickOutside,\\n closeConditional,\\n }\"}],attrs:{\"app\":\"\",\"right\":\"\",\"width\":_vm.width,\"temporary\":_vm.temporary,\"stateless\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-system-bar',{attrs:{\"window\":\"\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.temporary ? 'Keep menu open' : 'Hide menu'},on:{\"click\":function($event){_vm.temporary = !_vm.temporary}}},[_c('v-icon',[_vm._v(_vm._s(_vm.temporary ? 'mdi-dock-right' : 'mdi-dock-window'))])],1),(!_vm.temporary)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Close menu\"},on:{\"click\":function($event){_vm.drawer = false}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):_vm._e(),_c('v-btn-toggle',{staticClass:\"ml-4\",attrs:{\"group\":\"\",\"dense\":\"\"},model:{value:(_vm.width),callback:function ($$v) {_vm.width=$$v},expression:\"width\"}},[_c('v-btn',{attrs:{\"value\":300,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-s\")])],1),_c('v-btn',{attrs:{\"value\":400,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-m\")])],1),_c('v-btn',{attrs:{\"value\":500,\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-size-l\")])],1)],1)],1),_c('FacetList',{attrs:{\"component\":\"tracing\",\"uql\":_vm.uql,\"axios-params\":_vm.facetParams},on:{\"input\":function($event){_vm.drawer = $event}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useStorage } from '@/use/local-storage'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport FacetList from '@/components/facet/FacetList.vue'\n\nexport default defineComponent({\n name: 'WhereSidebarBtn',\n components: { FacetList },\n\n props: {\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n },\n\n setup(props) {\n const drawer = shallowRef(false)\n const width = useStorage('tracing-width', 400)\n const temporary = useStorage('tracing-temporary', true)\n\n const facetParams = computed(() => {\n if (!drawer.value) {\n return null\n }\n return {\n ...props.axiosParams,\n query: props.uql.whereQuery,\n }\n })\n\n function onClickOutside() {\n if (temporary.value) {\n drawer.value = false\n }\n }\n\n function closeConditional() {\n return drawer.value\n }\n\n return {\n drawer,\n width,\n temporary,\n facetParams,\n\n onClickOutside,\n closeConditional,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./WhereSidebarBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./WhereSidebarBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WhereSidebarBtn.vue?vue&type=template&id=9c116176&scoped=true&\"\nimport script from \"./WhereSidebarBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./WhereSidebarBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9c116176\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport SearchFilterMenu from '@/tracing/query/SearchFilterMenu.vue'\nimport DurationFilterMenu from '@/tracing/query/DurationFilterMenu.vue'\nimport AttrFilterMenu from '@/tracing/query/AttrFilterMenu.vue'\nimport AdvancedMenu from '@/tracing/query/AdvancedMenu.vue'\nimport QueryHelpDialog from '@/tracing/query/QueryHelpDialog.vue'\nimport WhereSidebarBtn from '@/tracing/query/WhereSidebarBtn.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'SpanQueryBuilder',\n components: {\n SearchFilterMenu,\n DurationFilterMenu,\n AttrFilterMenu,\n AdvancedMenu,\n QueryHelpDialog,\n WhereSidebarBtn,\n },\n\n props: {\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object,\n required: true,\n },\n aggDisabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const drawer = shallowRef(false)\n\n const facetParams = computed(() => {\n if (!drawer.value) {\n return null\n }\n return {\n ...props.axiosParams,\n query: props.uql.whereQuery,\n }\n })\n\n function onClickOutside() {\n drawer.value = false\n }\n\n function closeConditional() {\n return drawer.value\n }\n\n return { AttrKey, drawer, facetParams, onClickOutside, closeConditional }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanQueryBuilder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanQueryBuilder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanQueryBuilder.vue?vue&type=template&id=e63d678c&scoped=true&\"\nimport script from \"./SpanQueryBuilder.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanQueryBuilder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e63d678c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-text-field',{staticStyle:{\"max-width\":\"350px\"},attrs:{\"value\":_vm.value,\"placeholder\":\"Search: option1|option2 -exclude\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"append-outer\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\",\"max-width\":\"500\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({},on),[_vm._v(\" mdi-help-circle-outline \")])]}}])},[_c('ul',{staticClass:\"pa-2\"},[_c('li',[_c('strong',[_vm._v(\"option1|option2\")]),_vm._v(\". Include items that contain \\\"option1\\\" OR \\\"option2\\\". \")]),_c('li',[_c('strong',[_vm._v(\"word1 word2\")]),_vm._v(\". Include items that contain \\\"word1\\\" AND \\\"word2\\\".\")]),_c('li',[_c('strong',[_vm._v(\"\\\"whole phrase\\\"\")]),_vm._v(\". Include items that contain \\\"whole phrase\\\".\")]),_c('li',[_c('strong',[_vm._v(\"-word\")]),_vm._v(\". Exclude items that contain \\\"word\\\".\")]),_c('li',[_c('strong',[_vm._v(\"~regexp\")]),_vm._v(\". Include items that match the regexp \\\"word\\\".\")])]),_c('p',[_vm._v(\" You can create complex queries combining the options above, for example, \"),_c('strong',[_vm._v(\"option1|\\\"whole phrase\\\" -foo -bar -foo|bar ~regexp\")]),_vm._v(\". \")])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'QuickSearch',\n\n props: {\n value: {\n type: String,\n default: '',\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./QuickSearch.vue?vue&type=template&id=9846ed7a&scoped=true&\"\nimport script from \"./QuickSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./QuickSearch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./QuickSearch.vue?vue&type=style&index=0&id=9846ed7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9846ed7a\",\n null\n \n)\n\nexport default component.exports","\nimport { pick } from 'lodash-es'\nimport { defineComponent, shallowRef, computed, proxyRefs, PropType } from 'vue'\nimport { refDebounced } from '@vueuse/core'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { useUser } from '@/org/use-users'\nimport { useSystems, System } from '@/tracing/system/use-systems'\nimport { useUql, createQueryEditor, provideQueryStore, useQueryStore } from '@/use/uql'\n\n// Components\nimport TracingPlaceholder from '@/tracing/TracingPlaceholder.vue'\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport SystemPicker from '@/tracing/system/SystemPicker.vue'\nimport SystemGroupPicker from '@/tracing/system/SystemGroupPicker.vue'\nimport SavedViews from '@/tracing/views/SavedViews.vue'\nimport UptraceQuery from '@/components/UptraceQuery.vue'\nimport SpanQueryBuilder from '@/tracing/query/SpanQueryBuilder.vue'\nimport QuickSearch from '@/components/QuickSearch.vue'\n\n// Misc\nimport { SystemName, AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'Tracing',\n components: {\n TracingPlaceholder,\n DateRangePicker,\n SystemPicker,\n SystemGroupPicker,\n SavedViews,\n UptraceQuery,\n SpanQueryBuilder,\n QuickSearch,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n props.dateRange.roundUp()\n useTitle('Explore spans')\n\n const user = useUser()\n\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n\n const uql = useUql()\n provideQueryStore(useQueryStore(uql))\n\n const systems = useSystems(() => {\n return {\n ...props.dateRange.axiosParams(),\n query: uql.whereQuery,\n }\n })\n\n const systemItems = shallowRef([])\n\n const axiosParams = computed(() => {\n const params: Record = {\n ...props.dateRange.axiosParams(),\n ...systems.axiosParams(),\n ...uql.axiosParams(),\n }\n if (debouncedSearchInput.value) {\n params.search = debouncedSearchInput.value\n }\n return params\n })\n\n const spanListName = computed(() => {\n switch (systems.groupName) {\n case SystemName.LogAll:\n return 'Logs'\n case SystemName.EventsAll:\n return 'Events'\n default:\n return 'Spans'\n }\n })\n\n function resetQuery(clear = false) {\n uql.query = createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, systems.isSpan)\n .add(clear ? '' : uql.whereQuery)\n .toString()\n }\n\n return {\n user,\n systems,\n systemItems,\n\n uql,\n axiosParams,\n searchInput,\n spanListName,\n\n routes: useRoutes(),\n\n resetQuery,\n }\n },\n})\n\nfunction useRoutes() {\n const route = useRoute()\n\n const groupList = computed(() => {\n return routeFor('SpanGroupList')\n })\n\n const spanList = computed(() => {\n return routeFor('SpanList')\n })\n\n const timeseries = computed(() => {\n return routeFor('SpanTimeseries')\n })\n\n function routeFor(routeName: string) {\n return {\n name: routeName,\n query: pick(route.value.query, ['system', 'query', 'time_gte', 'time_dur']),\n }\n }\n\n return proxyRefs({\n groupList,\n spanList,\n timeseries,\n })\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tracing.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Tracing.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tracing.vue?vue&type=template&id=32378f74&scoped=true&\"\nimport script from \"./Tracing.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tracing.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Tracing.vue?vue&type=style&index=0&id=32378f74&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32378f74\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_vm._t(\"search-filter\"),_c('v-spacer'),_c('div',{staticClass:\"text-body-2\"},[(_vm.groups.hasMore)?_c('span',[_vm._v(\"more than \")]):_vm._e(),_c('strong',[_c('NumValue',{attrs:{\"value\":_vm.numGroup,\"verbose\":\"\"}})],1),_vm._v(\" groups \")])],2),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[(_vm.groups.error)?_c('ApiErrorCard',{attrs:{\"error\":_vm.groups.error}}):_c('PagedGroupsCard',{attrs:{\"date-range\":_vm.dateRange,\"systems\":_vm.systems.activeSystems,\"uql\":_vm.uql,\"loading\":_vm.groups.loading,\"groups\":_vm.groups.items,\"columns\":_vm.groups.columns,\"plottable-columns\":_vm.groups.plottableColumns,\"plotted-columns\":_vm.plottedColumns,\"show-plotted-column-items\":\"\",\"order\":_vm.groups.order,\"axios-params\":_vm.groups.axiosParams},on:{\"update:plotted-columns\":function($event){_vm.plottedColumns = $event},\"update:num-group\":function($event){_vm.numGroup = $event}}})],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, watch, watchEffect, onMounted, PropType } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { createQueryEditor, UseUql } from '@/use/uql'\nimport { useGroups } from '@/tracing/use-explore-spans'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport PagedGroupsCard from '@/tracing/PagedGroupsCard.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'TracingGroups',\n components: { ApiErrorCard, PagedGroupsCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n searchInput: {\n type: String,\n default: '',\n },\n },\n\n setup(props, ctx) {\n const groups = useGroups(() => {\n return props.axiosParams\n })\n const numGroup = shallowRef(0)\n\n const plottedColumns = shallowRef()\n watchEffect(() => {\n if (!groups.plottableColumns.length) {\n plottedColumns.value = undefined\n return\n }\n\n if (!plottedColumns.value) {\n plottedColumns.value = groups.plottableColumns.slice(0, 1).map((col) => col.name)\n return\n }\n\n plottedColumns.value = plottedColumns.value.filter((colName) => {\n return groups.plottableColumns.findIndex((item) => item.name === colName) >= 0\n })\n })\n\n onMounted(() => {\n watch(\n () => props.systems.activeSystems,\n (activeSystems) => {\n if (!activeSystems.length) {\n return\n }\n if (props.uql.query) {\n return\n }\n props.uql.query = createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, props.systems.isSpan)\n .toString()\n },\n { immediate: true },\n )\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n groups.order.parseQueryParams(queryParams)\n\n if (!queryParams.has('query') && props.systems.activeSystems.length) {\n queryParams.set(\n 'query',\n createQueryEditor().exploreAttr(AttrKey.spanGroupId, props.systems.isSpan).toString(),\n )\n }\n props.uql.parseQueryParams(queryParams)\n\n if (queryParams.has('column')) {\n plottedColumns.value = queryParams.array('column')\n } else {\n plottedColumns.value = undefined // accompanied with watchEffect\n }\n\n const search = queryParams.string('search')\n if (search) {\n ctx.emit('update:search-input', search)\n }\n },\n toQuery() {\n const queryParams: Record = {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...groups.order.queryParams(),\n }\n if (plottedColumns.value) {\n queryParams.column = plottedColumns.value.length ? plottedColumns.value : null\n }\n if (props.searchInput) {\n queryParams.search = props.searchInput\n }\n return queryParams\n },\n })\n\n watch(\n () => groups.queryInfo,\n (queryInfo) => {\n if (queryInfo) {\n props.uql.setQueryInfo(queryInfo)\n }\n },\n )\n\n return {\n groups,\n\n numGroup,\n plottedColumns,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingGroups.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingGroups.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TracingGroups.vue?vue&type=template&id=21af2d34&scoped=true&\"\nimport script from \"./TracingGroups.vue?vue&type=script&lang=ts&\"\nexport * from \"./TracingGroups.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21af2d34\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_vm._t(\"search-filter\"),_c('SpansTableSettings',{staticClass:\"ml-2\",attrs:{\"spans\":_vm.spans.items},on:{\"input\":function($event){_vm.tableColumns = $event}}}),_c('v-spacer'),_c('div',{staticClass:\"text-body-2\"},[_c('strong',[_c('NumValue',{attrs:{\"value\":_vm.spans.pager.numItem,\"verbose\":\"\"}})],1),_vm._v(\" spans \")])],2),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('PercentilesChartLazy',{staticClass:\"pa-4\",attrs:{\"axios-params\":_vm.axiosParams,\"annotations\":_vm.annotations.items}})],1)],1),(_vm.spans.error)?_c('v-row',[_c('v-col',[_c('ApiErrorCard',{attrs:{\"error\":_vm.spans.error}})],1)],1):_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('SpansTable',{attrs:{\"date-range\":_vm.dateRange,\"loading\":_vm.spans.loading,\"spans\":_vm.spans.items,\"order\":_vm.spans.order,\"pager\":_vm.spans.pager,\"is-span\":_vm.systems.isSpan,\"columns\":_vm.tableColumns,\"show-system\":_vm.showSystem},on:{\"click:chip\":_vm.onChipClick}})],1)],1),_c('v-row',[_c('v-col',[_c('XPagination',{attrs:{\"pager\":_vm.spans.pager}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":\"600\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-2\",attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-cog\")])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\"Table settings\")]),_c('v-divider'),_c('v-card-text',[_c('v-autocomplete',{staticClass:\"mt-4\",attrs:{\"items\":_vm.attrs,\"label\":\"Columns\",\"multiple\":\"\",\"auto-select-first\":\"\",\"chips\":\"\",\"deletable-chips\":\"\",\"outlined\":\"\",\"hide-details\":\"auto\"},on:{\"change\":function($event){return _vm.$emit('input', $event)}}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Misc\nimport { Span } from '@/models/span'\n\nexport default defineComponent({\n name: 'SpansTableSettings',\n\n props: {\n spans: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const dialog = shallowRef(false)\n\n const attrs = computed((): string[] => {\n if (!dialog.value) {\n return []\n }\n\n const AttrKeys: Record = {}\n\n for (let span of props.spans) {\n const keys = Object.keys(span.attrs).filter((key) => !key.startsWith('_'))\n for (let key of keys) {\n AttrKeys[key] = null\n }\n }\n\n return Object.keys(AttrKeys).sort()\n })\n\n return { dialog, attrs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpansTableSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpansTableSettings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpansTableSettings.vue?vue&type=template&id=7f7d194c&scoped=true&\"\nimport script from \"./SpansTableSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpansTableSettings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f7d194c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useRouter, useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { UseUql } from '@/use/uql'\nimport { useAnnotations } from '@/org/use-annotations'\nimport { useSpans } from '@/tracing/use-spans'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport SpansTable from '@/tracing/SpansTable.vue'\nimport SpansTableSettings from '@/tracing/SpansTableSettings.vue'\nimport { SpanChip } from '@/tracing/SpanChips.vue'\nimport PercentilesChartLazy from '@/components/PercentilesChartLazy.vue'\n\n// Misc\nimport { isLogSystem, isGroupSystem, AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'TracingSpans',\n components: {\n ApiErrorCard,\n SpansTable,\n SpansTableSettings,\n PercentilesChartLazy,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n searchInput: {\n type: String,\n default: '',\n },\n },\n\n setup(props, ctx) {\n const { route } = useRouter()\n const tableColumns = shallowRef([])\n\n const annotations = useAnnotations(() => {\n return {\n ...props.dateRange.axiosParams(),\n }\n })\n\n const spans = useSpans(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/spans`,\n params: props.axiosParams,\n }\n })\n\n const showSystem = computed(() => {\n const systems = props.systems.activeSystems\n if (isLogSystem(...systems)) {\n return false\n }\n if (systems.length > 1) {\n return true\n }\n if (systems.length === 1) {\n return isGroupSystem(systems[0])\n }\n return false\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n spans.order.parseQueryParams(queryParams)\n\n const search = queryParams.string('search')\n if (search) {\n ctx.emit('update:search-input', search)\n }\n },\n toQuery() {\n const queryParams: Record = {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...spans.order.queryParams(),\n }\n if (props.searchInput) {\n queryParams.search = props.searchInput\n }\n return queryParams\n },\n })\n\n watch(\n () => spans.queryInfo,\n (queryInfo) => {\n if (queryInfo) {\n props.uql.setQueryInfo(queryInfo)\n }\n },\n )\n\n watch(\n () => props.systems.activeSystems,\n (system, oldSystem) => {\n if (!spans.order.column || oldSystem) {\n resetOrder()\n }\n },\n )\n\n function resetOrder() {\n spans.order.column = ''\n spans.order.desc = true\n if (!props.systems.activeSystems) {\n return\n }\n spans.order.column = props.systems.isSpan ? AttrKey.spanDuration : AttrKey.spanTime\n }\n\n function onChipClick(chip: SpanChip) {\n const editor = props.uql.createEditor()\n editor.where(chip.key, '=', chip.value)\n props.uql.commitEdits(editor)\n }\n\n return {\n annotations,\n\n spans,\n showSystem,\n tableColumns,\n\n onChipClick,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingSpans.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingSpans.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TracingSpans.vue?vue&type=template&id=ce72daaa&scoped=true&\"\nimport script from \"./TracingSpans.vue?vue&type=script&lang=ts&\"\nexport * from \"./TracingSpans.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ce72daaa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\",\"color\":\"bg--light-primary\"}},[_vm._t(\"search-filter\"),_c('v-spacer')],2),(_vm.timeseries.error)?_c('v-container',[_c('v-row',[_c('v-col',[_c('ApiErrorCard',{attrs:{\"error\":_vm.timeseries.error}})],1)],1)],1):_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":\"\"}},[(!_vm.timeseries.status.isResolved())?_vm._l((2),function(i){return _c('v-row',{key:i},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"image\"}})],1)],1)}):[_c('v-row',{attrs:{\"dense\":\"\"}},_vm._l((_vm.timeseries.metricColumns),function(col){return _c('v-col',{key:col.name,attrs:{\"cols\":\"12\",\"md\":_vm.rowCols}},[_c('TimeseriesMetric',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"metric\":col.name,\"unit\":col.unit,\"groups\":_vm.selectedGroups,\"time\":_vm.timeseries.time,\"event-bus\":_vm.eventBus}})],1)}),1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('TimeseriesGroupsTable',{attrs:{\"date-range\":_vm.dateRange,\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams,\"order\":_vm.order,\"groups\":_vm.timeseries.groups,\"grouping-columns\":_vm.timeseries.groupingColumns,\"metric-columns\":_vm.timeseries.metricColumns,\"is-span\":_vm.systems.isSpan},on:{\"current-items\":function($event){return _vm.setPageGroups($event)},\"hover:item\":function($event){return _vm.eventBus.emit('hover', $event)}}})],1)],1)]],2)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, shallowReactive, proxyRefs } from 'vue'\nimport { useWatchAxios, AxiosRequestSource } from '@/use/watch-axios'\nimport { BackendQueryInfo } from '@/use/uql'\nimport { ColumnInfo } from '@/tracing/use-explore-spans'\n\nexport type { ColumnInfo }\n\nexport interface TimeseriesGroup extends Record {\n _id: string\n _name: string\n _query: string\n\n _selected: boolean\n _hovered: boolean\n _color: string\n}\n\nexport function useTimeseries(reqSource: AxiosRequestSource) {\n const { status, loading, error, data, reload } = useWatchAxios(() => {\n return reqSource()\n })\n\n const groups = computed((): TimeseriesGroup[] => {\n const groups: TimeseriesGroup[] = data.value?.groups ?? []\n\n return groups.map((group) => {\n const data: Record = {}\n\n for (let key in group) {\n const value = group[key]\n if (Array.isArray(value)) {\n data['_avg_' + key] = avg(value)\n }\n }\n\n group = {\n ...group,\n ...data,\n _selected: true,\n _hovered: false,\n _color: '',\n }\n\n return shallowReactive(group)\n })\n })\n\n const time = computed((): string[] => {\n return data.value?.time ?? []\n })\n\n const emptyValue = computed(() => {\n const value = time.value.slice() as unknown as number[]\n value.fill(0)\n return value\n })\n\n const queryInfo = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n const columns = computed((): ColumnInfo[] => {\n const columns = data.value?.columns ?? []\n return columns\n })\n\n const groupingColumns = computed(() => {\n return columns.value.filter((col) => col.isGroup)\n })\n\n const metricColumns = computed(() => {\n return columns.value.filter((col) => !col.isGroup && col.isNum)\n })\n\n return proxyRefs({\n status,\n loading,\n error,\n reload,\n\n groups,\n time,\n emptyValue,\n\n queryInfo,\n columns,\n groupingColumns,\n metricColumns,\n })\n}\n\nfunction avg(ns: number[]) {\n return ns.reduce((p, c) => p + c, 0) / ns.length\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('h2',{staticClass:\"text-subtitle-1 font-weight-bold\"},[_vm._v(_vm._s(_vm.metric))]),_c('MetricChart',{attrs:{\"loading\":_vm.loading,\"resolved\":_vm.resolved,\"timeseries\":_vm.timeseries,\"time\":_vm.time,\"event-bus\":_vm.eventBus,\"group\":_vm.chartGroup}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Components\nimport MetricChart from '@/metrics/MetricChart.vue'\n\n// Misc\nimport { EventBus } from '@/models/eventbus'\nimport { TimeseriesGroup } from '@/tracing/use-timeseries'\n\nexport default defineComponent({\n name: 'TimeseriesMetric',\n components: { MetricChart },\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n resolved: {\n type: Boolean,\n required: true,\n },\n metric: {\n type: String,\n required: true,\n },\n unit: {\n type: String,\n default: undefined,\n },\n groups: {\n type: Array as PropType,\n required: true,\n },\n time: {\n type: Array as PropType,\n required: true,\n },\n eventBus: {\n type: Object as PropType,\n default: undefined,\n },\n chartGroup: {\n type: [String, Symbol],\n default: () => Symbol(),\n },\n },\n\n setup(props) {\n const timeseries = computed(() => {\n return props.groups.map((group, i) => {\n return {\n id: group._id,\n name: group._name,\n metric: props.metric,\n value: group[props.metric],\n unit: props.unit,\n color: group._color,\n lineWidth: 2,\n }\n })\n })\n\n return { timeseries }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesMetric.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesMetric.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeseriesMetric.vue?vue&type=template&id=b8271f12&scoped=true&\"\nimport script from \"./TimeseriesMetric.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeseriesMetric.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b8271f12\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"headers\":_vm.headers,\"items\":_vm.groups,\"items-per-page\":9,\"hide-default-footer\":_vm.groups.length <= 9,\"no-data-text\":\"There are no metrics\",\"item-key\":\"_id\",\"show-select\":\"\",\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc,\"must-sort\":\"\",\"show-expand\":\"\",\"single-expand\":\"\"},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"current-items\":function($event){return _vm.$emit('current-items', $event)}},scopedSlots:_vm._u([{key:`header.data-table-select`,fn:function(){return [_c('v-simple-checkbox',{staticClass:\"mr-0\",attrs:{\"value\":_vm.hasSelected,\"ripple\":false},on:{\"click\":_vm.toggleSelected}})]},proxy:true},{key:\"item\",fn:function({ item, isExpanded, expand }){return [_c('tr',{staticClass:\"cursor-pointer\",on:{\"mouseenter\":function($event){return _vm.$emit('hover:item', { item: { id: item._id }, hover: true })},\"mouseleave\":function($event){return _vm.$emit('hover:item', { item: { id: item._id }, hover: false })},\"click\":function($event){return expand(!isExpanded)}}},[_c('td',[_c('v-simple-checkbox',{attrs:{\"value\":item._selected,\"color\":item._color,\"ripple\":false},on:{\"click\":function($event){$event.stopPropagation();item._selected = !item._selected}}})],1),_vm._l((_vm.groupingColumns),function(col){return _c('td',{key:col.name},[(col.name === _vm.AttrKey.spanGroupId && item._name)?_c('span',[_vm._v(\" \"+_vm._s(_vm.truncate(item._name, { length: 120 }))+\" \")]):_c('span',[_c('AnyValue',{attrs:{\"value\":item[col.name],\"name\":col.name}})],1)])}),_vm._l((_vm.metricColumns),function(col){return _c('td',{key:col.name,staticClass:\"text-right\"},[_c('NumValue',{attrs:{\"value\":item['_avg_' + col.name],\"unit\":col.unit}})],1)}),_c('td',[(isExpanded)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Hide spans\"},on:{\"click\":function($event){$event.stopPropagation();return expand(false)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-up\")])],1):_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"View spans\"},on:{\"click\":function($event){$event.stopPropagation();return expand(true)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-down\")])],1)],1)],2)]}},{key:\"expanded-item\",fn:function({ headers, item }){return [_c('tr',{staticClass:\"v-data-table__expanded v-data-table__expanded__content\"},[_c('td',{staticClass:\"pa-4\",attrs:{\"colspan\":headers.length}},[_c('PagedSpansCardLazy',{attrs:{\"date-range\":_vm.dateRange,\"is-span\":_vm.isSpan,\"axios-params\":_vm.axiosParams,\"where\":item._query}})],1)])]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { UseOrder } from '@/use/order'\nimport { UseUql } from '@/use/uql'\nimport { TimeseriesGroup, ColumnInfo } from '@/tracing/use-timeseries'\n\n// Components\nimport PagedSpansCardLazy from '@/tracing/PagedSpansCardLazy.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'TimeseriesGroupsTable',\n components: { PagedSpansCardLazy },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n default: undefined,\n },\n axiosParams: {\n type: Object as PropType>,\n default: undefined,\n },\n\n order: {\n type: Object as PropType,\n required: true,\n },\n groups: {\n type: Array as PropType,\n required: true,\n },\n groupingColumns: {\n type: Array as PropType,\n required: true,\n },\n metricColumns: {\n type: Array as PropType,\n required: true,\n },\n isSpan: {\n type: Boolean,\n required: true,\n },\n },\n\n setup(props) {\n const headers = computed(() => {\n const headers = []\n for (let col of props.groupingColumns) {\n headers.push({ text: col.name, value: col.name, sortable: true, align: 'start' })\n }\n for (let col of props.metricColumns) {\n headers.push({ text: col.name, value: '_avg_' + col.name, sortable: true, align: 'end' })\n }\n headers.push({ text: '', value: 'data-table-expand', sortable: false })\n return headers\n })\n\n const hasSelected = computed((): boolean => {\n return props.groups.some((item) => item._selected)\n })\n\n function toggleSelected() {\n const selected = !hasSelected.value\n props.groups.forEach((item) => {\n item._selected = selected\n })\n }\n\n return {\n AttrKey,\n\n headers,\n\n hasSelected,\n toggleSelected,\n truncate,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesGroupsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesGroupsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeseriesGroupsTable.vue?vue&type=template&id=bd244292&scoped=true&\"\nimport script from \"./TimeseriesGroupsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeseriesGroupsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd244292\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useRoute, useSyncQueryParams } from '@/use/router'\nimport { useOrder } from '@/use/order'\nimport { UseDateRange } from '@/use/date-range'\nimport { UseSystems } from '@/tracing/system/use-systems'\nimport { UseUql } from '@/use/uql'\nimport { useTimeseries, TimeseriesGroup } from '@/tracing/use-timeseries'\n\n// Components\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport TimeseriesMetric from '@/tracing/TimeseriesMetric.vue'\nimport TimeseriesGroupsTable from '@/tracing/TimeseriesGroupsTable.vue'\n\n// Misc\nimport { eChart as colorScheme } from '@/util/colorscheme'\nimport { EventBus } from '@/models/eventbus'\n\nexport default defineComponent({\n name: 'TracingTimeseries',\n components: { ApiErrorCard, TimeseriesMetric, TimeseriesGroupsTable },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n systems: {\n type: Object as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n required: true,\n },\n searchInput: {\n type: String,\n default: '',\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n const eventBus = new EventBus()\n const pageGroups = shallowRef([])\n const order = useOrder()\n\n const timeseries = useTimeseries(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/timeseries`,\n params: props.axiosParams,\n }\n })\n\n const rowCols = computed(() => {\n return timeseries.metricColumns.length > 1 ? 6 : 12\n })\n\n const selectedGroups = computed(() => {\n return pageGroups.value.filter((group) => group._selected || group._hovered)\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n props.systems.parseQueryParams(queryParams)\n props.uql.parseQueryParams(queryParams)\n order.parseQueryParams(queryParams)\n\n const search = queryParams.string('search')\n if (search) {\n ctx.emit('update:search-input', search)\n }\n },\n toQuery() {\n const queryParams: Record = {\n ...props.dateRange.queryParams(),\n ...props.systems.queryParams(),\n ...props.uql.queryParams(),\n ...order.queryParams(),\n }\n if (props.searchInput) {\n queryParams.search = props.searchInput\n }\n return queryParams\n },\n })\n\n watch(\n () => timeseries.metricColumns,\n (columns) => {\n if (!order.column && columns.length) {\n order.column = '_avg_' + columns[0].name\n }\n },\n { flush: 'pre' },\n )\n\n watch(\n () => timeseries.queryInfo,\n (queryInfo) => {\n if (queryInfo) {\n props.uql.setQueryInfo(queryInfo)\n }\n },\n )\n\n function setPageGroups(groups: TimeseriesGroup[]) {\n groups.map((group, index) => {\n group._color = colorScheme[index % colorScheme.length]\n })\n pageGroups.value = groups\n }\n\n return {\n eventBus,\n rowCols,\n\n timeseries,\n\n order,\n pageGroups,\n selectedGroups,\n setPageGroups,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingTimeseries.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TracingTimeseries.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TracingTimeseries.vue?vue&type=template&id=7a2a5cdb&scoped=true&\"\nimport script from \"./TracingTimeseries.vue?vue&type=script&lang=ts&\"\nexport * from \"./TracingTimeseries.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a2a5cdb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"frag\",rawName:\"v-frag\"}]},[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('SystemGroupPicker',{attrs:{\"loading\":_vm.systems.loading,\"systems\":_vm.systems.items,\"optional\":\"\"}})],1),(_vm.trace.status.initing())?[_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-skeleton-loader',{attrs:{\"type\":\"article, image, table\"}})],1)]:(_vm.trace.error)?_c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('ApiErrorCard',{attrs:{\"error\":_vm.trace.error}})],1)],1)],1):[_c('PageToolbar',{attrs:{\"loading\":_vm.trace.loading,\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-breadcrumbs',{attrs:{\"items\":_vm.meta.breadcrumbs,\"divider\":\">\",\"large\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-breadcrumbs-item',{attrs:{\"to\":item.to,\"exact\":item.exact}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])]}}])}),_c('v-spacer'),(_vm.trace.root)?_c('FixedDateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"around\":_vm.trace.root.time,\"show-reload\":\"\"}}):_vm._e()],1),_c('v-container',{staticClass:\"py-4\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[(_vm.trace.hasMore)?_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"lg\":\"9\"}},[_c('v-alert',{attrs:{\"type\":\"warning\",\"border\":\"bottom\",\"colored-border\":\"\",\"elevation\":\"2\"}},[_c('p',[_vm._v(\" This trace is truncated because it contains more than 10,000 spans and browsers can't display that many spans. \")]),_c('p',[_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/enterprise.html#huge-traces\",\"target\":\"_blank\"}},[_vm._v(\"Uptrace Enterprise Edition\")]),_vm._v(\" supports huge traces with 100,000 spans and more by grouping and aggregating similar spans together. You can still explore the individual spans by clicking on the aggregated span groups. \")])])],1)],1):_vm._e(),(_vm.trace.root)?_c('v-row',{staticClass:\"px-2 text-body-2\"},[_c('v-col',{staticClass:\"word-break-all\"},[_vm._v(\" \"+_vm._s(_vm.trace.root.displayName)+\" \")])],1):_vm._e(),(_vm.trace.root)?_c('v-row',{staticClass:\"px-2 text-subtitle-2 text-center\",attrs:{\"align\":\"end\"}},[(_vm.trace.root.kind)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Kind\")]),_c('div',[_vm._v(_vm._s(_vm.trace.root.kind))])]):_vm._e(),(_vm.trace.root.statusCode)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Status\")]),_c('div',{class:{ 'error--text': _vm.trace.root.statusCode === 'error' }},[_vm._v(\" \"+_vm._s(_vm.trace.root.statusCode)+\" \")])]):_vm._e(),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Time\")]),_c('DateValue',{attrs:{\"value\":_vm.trace.root.time,\"format\":\"full\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"grey--text font-weight-regular\"},[_vm._v(\"Duration\")]),_c('DurationValue',{attrs:{\"value\":_vm.trace.root.duration,\"fixed\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.groupRoute)?_c('v-btn',{attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":_vm.groupRoute,\"exact\":\"\"}},[_vm._v(\"View group\")]):_vm._e(),(_vm.exploreTraceRoute)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"depressed\":\"\",\"small\":\"\",\"to\":_vm.exploreTraceRoute,\"exact\":\"\"}},[_vm._v(\"Explore trace\")]):_vm._e()],1)],1):_vm._e(),(_vm.trace.root && _vm.trace.root.groupId)?_c('v-row',[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-card-text',[_c('PercentilesChartLazy',{attrs:{\"axios-params\":_vm.axiosParams,\"annotations\":_vm.annotations.items}})],1)],1)],1)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('SpanSystemBarChart',{attrs:{\"systems\":_vm.trace.coloredSystems}})],1)],1),_c('v-row',[_c('v-col',[_c('TraceTabs',{attrs:{\"date-range\":_vm.dateRange,\"trace\":_vm.trace,\"root-span-id\":_vm.rootSpanId,\"annotations\":_vm.annotations.items},on:{\"click:crop\":function($event){_vm.rootSpanId = $event}}})],1)],1)],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface Tree {\n parent: T | null\n children?: T[]\n}\n\ntype Func = (child: T, parent: T | null) => boolean\n\nexport function walkTree>(root: T, fn: Func) {\n if (fn(root, null) === false) {\n return\n }\n _walk(root, fn)\n}\n\nfunction _walk>(parent: T, fn: Func) {\n if (!parent.children) {\n return true\n }\n\n for (let child of parent.children) {\n if (fn(child, parent) === false) {\n return false\n }\n if (_walk(child, fn) === false) {\n return false\n }\n }\n\n return true\n}\n","// Misc\nimport { Span } from '@/models/span'\nimport { walkTree } from '@/models/tree'\nimport { ColoredSpan } from '@/models/colored-system'\n\nexport interface Trace {\n id: string\n time: string\n duration: number\n}\n\ninterface LabelStyle {\n position: string\n bottom: string\n left?: string\n right?: string\n}\n\ninterface SpanBar {\n startPct: number\n endPct: number\n duration: number\n durationSelf: number\n}\n\nexport interface TraceSpan extends Omit, ColoredSpan {\n level: number\n startPct: number\n endPct: number\n\n bars: SpanBar[]\n labelStyle: LabelStyle\n}\n\nexport function traceSpans(rootSpan: Span, trace: Trace) {\n const spans = _traceSpans(rootSpan as unknown as TraceSpan, trace)\n return spans\n}\n\nfunction _traceSpans(root: TraceSpan, trace: Trace) {\n const spans: TraceSpan[] = []\n\n walkTree(root, (span: TraceSpan, parent: TraceSpan | null) => {\n span.parent = parent\n spans.push(span)\n\n span.level = parent ? parent.level + 1 : 0\n span.labelStyle = spanLabelStyle(span.startPct, span.endPct)\n span.bars = []\n\n span.bars.push({\n startPct: span.startPct,\n endPct: span.endPct,\n duration: span.duration,\n durationSelf: span.durationSelf,\n })\n\n return true\n })\n\n return spans\n}\n\nexport function spanLabelStyle(startPct: number, endPct: number): LabelStyle {\n const labelStyle: LabelStyle = {\n position: 'absolute',\n bottom: '6px',\n }\n\n if (startPct <= 0.5) {\n labelStyle.left = pct(startPct)\n } else {\n labelStyle.right = pct(1 - endPct)\n }\n\n return labelStyle\n}\n\nexport function spanBarStyle(span: TraceSpan, bar: SpanBar, color: string) {\n const startPct = Math.max(bar.startPct, span.startPct)\n const endPct = Math.min(bar.endPct, span.endPct)\n\n let width: any = endPct - startPct\n if (width >= 0.001) {\n width = pct(width)\n } else {\n width = '1px'\n }\n\n return { left: pct(bar.startPct), width, backgroundColor: color }\n}\n\nfunction pct(n: number) {\n return n * 100 + '%'\n}\n","import Color from 'color'\n\n// Misc\nimport { AttrKey, SystemName } from '@/models/otel'\nimport { walkTree, Tree } from '@/models/tree'\nimport { eChart as colorSet } from '@/util/colorscheme'\n\nconst SYSTEM_LIMIT = 6\n\nexport interface ColoredSystem {\n name: string\n duration: number\n color: string\n barStyle?: { [key: string]: string }\n}\n\ntype ColoredSystemMap = Record\n\nexport interface ColoredSpan extends Tree {\n system: string\n durationSelf: number\n attrs: Record\n\n _systemName: string\n color: SpanColor\n}\n\nexport interface SpanColor {\n base: string\n lighten: string\n darken: string\n}\n\nexport function spanColoredSystems>(root: T): ColoredSystem[] {\n const sysMap: ColoredSystemMap = {}\n\n walkTree(root, (span, parent) => {\n span._systemName = span.system\n if (span._systemName === SystemName.Funcs) {\n const service = parent?._systemName ?? span.attrs[AttrKey.serviceName]\n if (service) {\n span._systemName = service\n }\n }\n\n if (!span._systemName) {\n return true\n }\n\n let sysInfo = sysMap[span._systemName]\n if (!sysInfo) {\n sysInfo = {\n name: span._systemName,\n duration: 0,\n color: '',\n }\n sysMap[span._systemName] = sysInfo\n }\n\n const dur = span.durationSelf\n if (dur) {\n sysInfo.duration += dur\n }\n\n return true\n })\n\n let systems = systemMapToList(sysMap)\n const otherSystem = {\n name: 'other',\n duration: 0,\n color: colorSet[colorSet.length - 1],\n }\n\n for (let system of systems.slice(SYSTEM_LIMIT)) {\n otherSystem.duration += system.duration\n delete sysMap[system.name]\n }\n\n systems = systems.slice(0, SYSTEM_LIMIT)\n if (otherSystem.duration > 0) {\n systems.push(otherSystem)\n }\n\n // last color is reserved for other\n for (let i = 0; i < systems.length && i < colorSet.length - 1; i++) {\n const system = systems[i]\n system.color = colorSet[i]\n }\n\n walkTree(root, (span) => {\n const color = sysMap[span._systemName]?.color || otherSystem.color\n span.color = {\n base: color,\n lighten: Color(color).lighten(0.33).hex(),\n darken: Color(color).darken(0.33).hex(),\n }\n return true\n })\n\n return systems\n}\n\nfunction systemMapToList(map: ColoredSystemMap): ColoredSystem[] {\n const list: ColoredSystem[] = []\n\n for (let k in map) {\n list.push(map[k])\n }\n\n list.sort((a, b) => {\n if (a.duration < b.duration) return 1\n if (a.duration > b.duration) return -1\n return 0\n })\n\n for (let i = 0; i < list.length && i < colorSet.length - 1; i++) {\n const system = list[i]\n system.color = colorSet[i]\n }\n\n return list\n}\n","import { orderBy } from 'lodash-es'\nimport { ref, computed, watch, proxyRefs, shallowReactive, set } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\n\nimport { injectForceReload } from '@/use/force-reload'\nimport { traceSpans, Trace, TraceSpan } from '@/models/trace-span'\nimport { SpanEvent } from '@/models/span'\nimport { spanColoredSystems, ColoredSystem } from '@/models/colored-system'\n\n// Misc\nimport { walkTree } from '@/models/tree'\n\nexport type { TraceSpan }\n\nexport type UseTrace = ReturnType\n\nexport function useTrace(axiosParams: AxiosParamsSource) {\n const { route } = useRouter()\n const forceReload = injectForceReload()\n\n const activeSpanId = ref('')\n const coloredSystems = ref([])\n const { isVisible, isExpanded, toggleTree, showTree } = useHiddenSpans()\n\n const { status, loading, error, data } = useWatchAxios(() => {\n const { projectId, traceId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/traces/${traceId}`,\n params: {\n ...forceReload.params,\n ...axiosParams(),\n },\n }\n })\n\n const id = computed((): string | undefined => {\n return route.value.params.traceId\n })\n\n const trace = computed((): Trace | undefined => {\n return data.value?.trace\n })\n\n const root = computed((): TraceSpan | undefined => {\n return data.value?.root\n })\n\n const hasMore = computed((): boolean => {\n return data.value?.hasMore ?? false\n })\n\n const spans = computed((): TraceSpan[] => {\n const root = data.value?.root\n if (!root) {\n return []\n }\n\n const spans = traceSpans(root, trace.value!)\n return spans\n })\n\n const activeSpan = computed((): TraceSpan | undefined => {\n if (!activeSpanId.value) {\n return\n }\n return spans.value.find((span) => span.id === activeSpanId.value)\n })\n\n const events = computed((): Record => {\n const eventMap: Record = {}\n\n for (let span of spans.value) {\n if (!span.events) {\n continue\n }\n\n for (let event of span.events) {\n if (!event.system) {\n continue\n }\n let arr = eventMap[event.system]\n if (!arr) {\n arr = []\n eventMap[event.system] = arr\n }\n\n arr.push(event)\n }\n }\n\n for (let system in eventMap) {\n eventMap[system] = orderBy(eventMap[system], (event) => event.time)\n }\n\n return eventMap\n })\n\n watch(\n spans,\n (spans) => {\n if (!spans.length) {\n return\n }\n\n const root = spans[0]\n if (root.children) {\n for (let child of root.children) {\n walkTree(child, (span) => {\n toggleTree(span)\n return true\n })\n }\n }\n },\n { immediate: true },\n )\n\n watch(activeSpan, (span) => {\n if (span) {\n showTree(span)\n }\n })\n\n watch(\n root,\n (root) => {\n if (root) {\n coloredSystems.value = spanColoredSystems(root)\n }\n },\n { flush: 'sync' },\n )\n\n return proxyRefs({\n activeSpanId,\n activeSpan,\n\n status,\n loading,\n error,\n\n coloredSystems,\n root,\n hasMore,\n\n spans,\n id,\n trace,\n events,\n\n isVisible,\n isExpanded,\n toggleTree,\n showTree,\n })\n}\n\nfunction useHiddenSpans() {\n const hidden = shallowReactive>({})\n const collapsed = shallowReactive>({})\n\n function isVisible(span: TraceSpan): boolean {\n if (!(span.id in hidden)) {\n set(hidden, span.id, 0)\n }\n return !hidden[span.id]\n }\n\n function isExpanded(span: TraceSpan): boolean {\n if (!(span.id in collapsed)) {\n set(collapsed, span.id, false)\n }\n return !collapsed[span.id]\n }\n\n function toggleTree(span: TraceSpan): void {\n set(collapsed, span.id, isExpanded(span))\n hideChildren(span, isExpanded(span) ? 1 : -1)\n }\n\n function hideChildren(span: TraceSpan, n = 1) {\n if (!span.children) {\n return\n }\n for (let s of span.children) {\n set(hidden, s.id, (hidden[s.id] ?? 0) + n)\n hideChildren(s, n)\n }\n }\n\n function showTree(span: TraceSpan | null): void {\n span = span!.parent\n while (span) {\n if (!isExpanded(span)) {\n toggleTree(span)\n }\n span = span.parent\n }\n }\n\n return { isVisible, isExpanded, toggleTree, showTree }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-sheet',{attrs:{\"outlined\":\"\",\"rounded\":\"t-lg\"}},[_c('v-row',{staticClass:\"pa-2\",attrs:{\"dense\":\"\",\"justify\":\"space-around\"}},_vm._l((_vm.styledSystems),function(sys){return _c('v-col',{key:sys.system,staticClass:\"text-center text-subtitle-2\",attrs:{\"cols\":\"auto\"}},[_c('v-avatar',{staticClass:\"mr-2\",attrs:{\"color\":sys.color,\"size\":\"12\"}}),_c('span',{staticClass:\"d-inline-flex mr-1\"},[_vm._v(_vm._s(_vm.truncate(sys.name, { length: 32 })))]),_c('PctValue',{staticClass:\"d-inline-flex blue-grey--text\",attrs:{\"a\":sys.duration,\"b\":_vm.totalDuration,\"unit\":_vm.Unit.Nanoseconds}})],1)}),1)],1),_c('div',{staticClass:\"d-flex\"},_vm._l((_vm.styledSystems),function(sys){return _c('v-tooltip',{key:sys.name,attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',_vm._g({staticClass:\"bar\",style:(sys.barStyle)},on))]}}],null,true)},[_c('div',[_c('span',[_vm._v(_vm._s(sys.name))]),_c('DurationValue',{staticClass:\"ml-1\",attrs:{\"value\":sys.duration}})],1)])}),1),_c('v-progress-linear',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],attrs:{\"indeterminate\":\"\",\"absolute\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue'\nimport { PropType } from 'vue'\n\n// Misc\nimport { utilization } from '@/util/fmt/num'\nimport { createFormatter, Unit } from '@/util/fmt'\nimport { formatTemplate } from '@/util/string'\n\nexport default Vue.component('PctValue', {\n functional: true,\n props: {\n a: {\n type: Number,\n required: true,\n },\n b: {\n type: Number,\n required: true,\n },\n name: {\n type: String,\n default: '',\n },\n unit: {\n type: String as PropType,\n default: Unit.None,\n },\n title: {\n type: String,\n default: '{0} of {1}',\n },\n },\n render(h, { props, data }) {\n const fmt = createFormatter(props.unit)\n data.attrs = {\n ...data.attrs,\n title: formatTemplate(props.title, fmt(props.a), fmt(props.b)),\n }\n return h('span', data, utilization(div(props.a, props.b)))\n },\n})\n\nfunction div(a: number, b: number): number {\n if (b === 0) {\n return 1\n }\n\n const pct = a / b\n if (pct > 1 || pct === Infinity) {\n return 1\n }\n if (pct === -Infinity) {\n return -1\n }\n return pct\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PctValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PctValue.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./PctValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./PctValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"635c092a\",\n null\n \n)\n\nexport default component.exports","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Components\nimport PctValue from '@/components/PctValue.vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\nimport { ColoredSystem } from '@/models/colored-system'\n\nexport default defineComponent({\n name: 'SpanSystemBarChart',\n components: { PctValue },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n systems: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const totalDuration = computed(() => {\n return props.systems.reduce((acc, system) => {\n return acc + system.duration\n }, 0)\n })\n\n const styledSystems = computed(() => {\n return props.systems.map((system) => {\n return {\n ...system,\n barStyle: {\n width: pct(system.duration, totalDuration.value),\n 'background-color': system.color,\n },\n }\n })\n })\n\n return {\n Unit,\n\n totalDuration,\n styledSystems,\n\n truncate,\n }\n },\n})\n\nfunction pct(a: number, b: number) {\n if (b === 0 || a >= b) {\n return '100%'\n }\n const pct = (a / b) * 100\n return pct + '%'\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanSystemBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./SpanSystemBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpanSystemBarChart.vue?vue&type=template&id=31f51111&scoped=true&\"\nimport script from \"./SpanSystemBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpanSystemBarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpanSystemBarChart.vue?vue&type=style&index=0&id=31f51111&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31f51111\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.trace)?_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-tabs',{staticClass:\"bg--light-primary\",attrs:{\"background-color\":\"transparent\"},model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab',{attrs:{\"href\":\"#trace\"}},[_vm._v(\"Trace\")]),_vm._l((_vm.trace.events),function(events,system){return _c('v-tab',{key:system,attrs:{\"href\":`#${system}`}},[_vm._v(\" \"+_vm._s(system)+\" (\"+_vm._s(events.length)+\") \")])})],2),_c('v-tabs-items',{model:{value:(_vm.activeTab),callback:function ($$v) {_vm.activeTab=$$v},expression:\"activeTab\"}},[_c('v-tab-item',{staticClass:\"px-4 py-6\",attrs:{\"value\":\"trace\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[(_vm.rootSpanId)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-chip',{attrs:{\"close\":\"\",\"color\":\"primary\",\"outlined\":\"\"},on:{\"click:close\":function($event){return _vm.$emit('click:crop', undefined)}}},[_c('span',[_vm._v(\"Focused on span: \")]),_c('strong',{staticClass:\"ml-1\"},[_vm._v(_vm._s(_vm.rootSpanId))])])],1):_vm._e()],1),_c('v-row',[_c('v-col',[_c('TraceTimeline',{attrs:{\"date-range\":_vm.dateRange,\"trace\":_vm.trace,\"root-span-id\":_vm.rootSpanId},on:{\"click:crop\":function($event){return _vm.$emit('click:crop', $event)}}})],1)],1)],1)],1),_vm._l((_vm.trace.events),function(events,system){return _c('v-tab-item',{key:system,attrs:{\"value\":system}},[_c('EventPanels',{attrs:{\"date-range\":_vm.dateRange,\"events\":events,\"annotations\":_vm.annotations}})],1)})],2)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('table',{staticClass:\"trace-table trace-table--timeline\"},[_vm._m(0),_vm._m(1),_c('tbody',[_vm._l((_vm.trace.spans),function(span){return [(_vm.trace.isVisible(span))?_c('tr',{key:`span-${span.id}`,staticClass:\"cursor-pointer\",class:{ active: span === _vm.trace.activeSpan },attrs:{\"id\":`span-${span.id}`},on:{\"click\":function($event){return _vm.showSpan(span)}}},[_c('td',{style:({ paddingLeft: 36 + 20 * span.level + 'px' })},[_c('v-btn',{staticClass:\"ml-n9\",attrs:{\"icon\":\"\",\"disabled\":!span.children},on:{\"click\":function($event){$event.stopPropagation();return _vm.trace.toggleTree(span)}}},[_c('v-icon',{attrs:{\"size\":\"28\"}},[_vm._v(_vm._s(_vm.trace.isExpanded(span) ? 'mdi-chevron-down' : 'mdi-chevron-right'))])],1),_c('span',{staticClass:\"cursor-pointer span-name\"},[_vm._v(_vm._s(_vm.spanName(span, 100)))]),_c('span',{staticClass:\"ml-1\"},[(span.id !== _vm.rootSpanId && span.parentId)?_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Focus on this sub-tree and drop the rest\"},nativeOn:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click:crop', span.id)}}},[_c('v-icon',[_vm._v(\"mdi-crop\")])],1):_vm._e()],1),_c('SpanChips',{staticClass:\"ml-2\",attrs:{\"span\":span,\"trace-mode\":\"\"}})],1),_c('td',{staticClass:\"text-body-2\",staticStyle:{\"position\":\"relative\"}},[_c('span',{style:(span.labelStyle)},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(span.children && _vm.trace.isExpanded(span)),expression:\"span.children && trace.isExpanded(span)\"}]},[_c('DurationValue',{attrs:{\"value\":span.durationSelf}}),_c('span',{staticClass:\"mx-1\"},[_vm._v(\"of\")])],1),_c('DurationValue',{attrs:{\"value\":span.duration}})],1),_vm._l((span.bars),function(bar,i){return _c('span',{key:i,staticClass:\"span-bar\",style:(_vm.spanBarStyle(span, bar, span.color.base)),attrs:{\"title\":`${_vm.duration(bar.duration)} ${_vm.spanName(span)}`}})}),(span.children)?_c('TraceTimelineChildrenBars',{attrs:{\"trace\":_vm.trace,\"span\":span,\"children\":span.children,\"hidden\":!_vm.trace.isExpanded(span)}}):_vm._e()],2)]):_vm._e()]})],2)]),_c('v-dialog',{attrs:{\"max-width\":\"1280\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-sheet',[(_vm.trace.activeSpan)?_c('SpanCard',{key:_vm.trace.activeSpan.id,attrs:{\"date-range\":_vm.dateRange,\"span\":_vm.trace.activeSpan,\"fluid\":\"\"}}):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('colgroup',[_c('col',{staticStyle:{\"width\":\"50%\"}}),_c('col',{staticStyle:{\"width\":\"50%\"}})])\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('thead',[_c('tr',[_c('th',{staticClass:\"px-2\"},[_vm._v(\"Operation\")]),_c('th',[_vm._v(\"Timeline\")])])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._l((_vm.internalChildren),function(child){return [_vm._l((child.bars),function(bar,i){return _c('span',{key:`${child.id}-${i}`,staticClass:\"span-bar\",style:(_vm.spanBarStyle(_vm.span, bar, _vm.hidden ? child.color.base : _vm.span.color.lighten)),attrs:{\"title\":`${_vm.duration(bar.duration)} ${child.name}`}})}),(child.children)?_c('TraceTimelineChildrenBars',{key:child.id,attrs:{\"trace\":_vm.trace,\"span\":_vm.span,\"children\":child.children,\"hidden\":_vm.hidden}}):_vm._e()]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { TraceSpan, UseTrace } from '@/tracing/use-trace'\n\n// Misc\nimport { duration } from '@/util/fmt/duration'\nimport { spanBarStyle } from '@/models/trace-span'\n\nexport default defineComponent({\n name: 'TraceTimelineChildrenBars',\n\n props: {\n trace: {\n type: Object as PropType,\n required: true,\n },\n span: {\n type: Object as PropType,\n required: true,\n },\n children: {\n type: Array as PropType,\n required: true,\n },\n hidden: {\n type: Boolean,\n required: true,\n },\n },\n\n setup(props) {\n const internalChildren = computed(() => {\n return props.children.filter((child) => child.kind !== 'consumer')\n })\n\n return { internalChildren, duration, spanBarStyle }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTimelineChildrenBars.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTimelineChildrenBars.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceTimelineChildrenBars.vue?vue&type=template&id=88ccea44&\"\nimport script from \"./TraceTimelineChildrenBars.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceTimelineChildrenBars.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { truncate } from 'lodash-es'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport type AttrMap = { [key: string]: any }\n\nexport interface Span {\n id: string\n parentId?: string\n traceId: string\n standalone?: boolean\n\n projectId: number\n groupId: string\n\n system: string\n kind: string\n\n name: string\n eventName?: string\n displayName: string\n\n time: string\n duration: number\n durationSelf: number\n\n statusCode: string\n statusMessage: string\n\n attrs: AttrMap\n events?: SpanEvent[]\n children?: Span[]\n}\n\nexport interface SpanEvent {\n name: string\n time: string\n attrs: AttrMap\n\n system?: string\n groupId?: string\n}\n\nexport function spanName(span: Span, maxLength = 120): string {\n if (span.system === 'db:redis') {\n const stmt = span.attrs[AttrKey.dbStatement]\n if (stmt) {\n return truncate(stmt, { length: maxLength })\n }\n }\n return truncate(span.name, { length: maxLength })\n}\n","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { UseTrace, TraceSpan } from '@/tracing/use-trace'\n\n// Components\nimport SpanCard from '@/tracing/SpanCard.vue'\nimport SpanChips from '@/tracing/SpanChips.vue'\nimport TraceTimelineChildrenBars from '@/tracing/TraceTimelineChildrenBars.vue'\n\n// Misc\nimport { spanName } from '@/models/span'\nimport { spanBarStyle } from '@/models/trace-span'\nimport { duration } from '@/util/fmt/duration'\n\nexport default defineComponent({\n name: 'TraceTimeline',\n components: { SpanCard, SpanChips, TraceTimelineChildrenBars },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n trace: {\n type: Object as PropType,\n required: true,\n },\n rootSpanId: {\n type: String,\n default: undefined,\n },\n },\n\n setup(props) {\n const dialog = shallowRef(false)\n\n function showSpan(span: TraceSpan) {\n dialog.value = true\n props.trace.activeSpanId = span.id\n }\n\n return { dialog, showSpan, spanName, duration, spanBarStyle }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTimeline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTimeline.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceTimeline.vue?vue&type=template&id=708808b4&scoped=true&\"\nimport script from \"./TraceTimeline.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceTimeline.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TraceTimeline.vue?vue&type=style&index=0&id=708808b4&prod&lang=scss&\"\nimport style1 from \"./TraceTimeline.vue?vue&type=style&index=1&id=708808b4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"708808b4\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, ref, PropType } from 'vue'\n\n// Composables\nimport { UseTrace } from '@/tracing/use-trace'\nimport { UseDateRange } from '@/use/date-range'\nimport { Annotation } from '@/org/use-annotations'\n\n// Components\nimport TraceTimeline from '@/tracing/TraceTimeline.vue'\nimport EventPanels from '@/tracing/EventPanels.vue'\n\nexport default defineComponent({\n name: 'TraceTabs',\n components: {\n TraceTimeline,\n EventPanels,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n trace: {\n type: Object as PropType,\n default: undefined,\n },\n annotations: {\n type: Array as PropType,\n default: () => [],\n },\n rootSpanId: {\n type: String,\n default: undefined,\n },\n },\n\n setup() {\n const activeTab = ref()\n\n return {\n activeTab,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceTabs.vue?vue&type=template&id=4f1f8d94&scoped=true&\"\nimport script from \"./TraceTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceTabs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f1f8d94\",\n null\n \n)\n\nexport default component.exports","\nimport { truncate } from 'lodash-es'\nimport { defineComponent, shallowRef, computed, watch, proxyRefs } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { useTitle } from '@vueuse/core'\nimport { useDateRange, UseDateRange } from '@/use/date-range'\nimport { useSystems } from '@/tracing/system/use-systems'\nimport { useTrace, UseTrace } from '@/tracing/use-trace'\nimport { createQueryEditor } from '@/use/uql'\nimport { useAnnotations } from '@/org/use-annotations'\n\n// Components\nimport SystemGroupPicker from '@/tracing/system/SystemGroupPicker.vue'\nimport FixedDateRangePicker from '@/components/date/FixedDateRangePicker.vue'\nimport PercentilesChartLazy from '@/components/PercentilesChartLazy.vue'\nimport SpanSystemBarChart from '@/components/SpanSystemBarChart.vue'\nimport TraceTabs from '@/tracing/TraceTabs.vue'\n\n// Misc\nimport { AttrKey, SystemName } from '@/models/otel'\n\nexport default defineComponent({\n name: 'TraceShow',\n components: {\n SystemGroupPicker,\n FixedDateRangePicker,\n PercentilesChartLazy,\n SpanSystemBarChart,\n TraceTabs,\n },\n\n setup() {\n useTitle('View trace')\n const rootSpanId = shallowRef('')\n\n const dateRange = useDateRange()\n const trace = useTrace(() => {\n if (!rootSpanId.value) {\n return {}\n }\n\n return { root_span_id: rootSpanId.value }\n })\n\n const annotations = useAnnotations(() => {\n return {\n ...dateRange.axiosParams(),\n }\n })\n const systems = useSystems(() => {\n return {\n ...dateRange.axiosParams(),\n }\n })\n\n const axiosParams = computed(() => {\n if (!trace.root) {\n return\n }\n return {\n ...dateRange.axiosParams(),\n system: trace.root.system,\n group_id: trace.root.groupId,\n }\n })\n\n const groupRoute = computed(() => {\n if (!trace.root) {\n return\n }\n\n return {\n name: 'SpanList',\n query: {\n ...dateRange.queryParams(),\n system: trace.root.system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, true)\n .where(AttrKey.spanGroupId, '=', trace.root.groupId)\n .toString(),\n },\n }\n })\n\n const exploreTraceRoute = computed(() => {\n if (!trace.root) {\n return\n }\n\n return {\n name: 'SpanGroupList',\n query: {\n ...dateRange.queryParams(),\n system: SystemName.SpansAll,\n query: [\n `where ${AttrKey.spanTraceId} = ${trace.root.traceId}`,\n `group by ${AttrKey.spanGroupId}`,\n AttrKey.spanCount,\n AttrKey.spanErrorCount,\n `{p50,p90,p99,sum}(${AttrKey.spanDuration})`,\n ].join(' | '),\n plot: null,\n },\n }\n })\n\n watch(\n () => trace.root,\n (span) => {\n if (span) {\n useTitle(span.name)\n }\n },\n )\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n rootSpanId.value = queryParams.string('root_span')\n },\n toQuery() {\n const queryParams: Record = {}\n\n if (rootSpanId.value) {\n queryParams.root_span = rootSpanId.value\n }\n\n return queryParams\n },\n })\n\n return {\n dateRange,\n annotations,\n systems,\n\n trace,\n rootSpanId,\n\n meta: useMeta(dateRange, trace),\n\n axiosParams,\n groupRoute,\n exploreTraceRoute,\n }\n },\n})\n\nfunction useMeta(dateRange: UseDateRange, trace: UseTrace) {\n const breadcrumbs = computed(() => {\n const root = trace.root\n const bs: any[] = []\n\n if (!root) {\n return bs\n }\n\n if (root.system) {\n bs.push({\n text: root.system,\n to: {\n name: 'SpanGroupList',\n query: {\n ...dateRange.queryParams(),\n system: root.system,\n },\n },\n exact: true,\n })\n }\n\n if (root.system && root.groupId) {\n bs.push({\n text: truncate(root.displayName, { length: 60 }),\n to: {\n name: 'SpanList',\n query: {\n ...dateRange.queryParams(),\n system: root.system,\n query: createQueryEditor()\n .exploreAttr(AttrKey.spanGroupId, true)\n .where(AttrKey.spanGroupId, '=', root.groupId)\n .toString(),\n },\n },\n exact: true,\n })\n }\n\n bs.push({\n text: trace.id,\n })\n\n return bs\n })\n\n return proxyRefs({ breadcrumbs })\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceShow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceShow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceShow.vue?vue&type=template&id=e8c29c4a&scoped=true&\"\nimport script from \"./TraceShow.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceShow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e8c29c4a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height\",attrs:{\"fluid\":\"\"}},[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"flat\":\"\"}},[_c('v-card-text',{staticClass:\"text-h5 text-center\"},[_vm._v(\" Trace \"),_c('strong',[_vm._v(_vm._s(_vm.$route.params.traceId))]),_vm._v(\" not found.\"),_c('br'),_vm._v(\" It may take up to \"),_c('strong',[_vm._v(\"30 seconds\")]),_vm._v(\" to process a trace. \")]),_c('v-card-actions',{staticClass:\"justify-center\"},[_c('v-btn',{attrs:{\"loading\":_vm.traceSearch.loading,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.reload()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-refresh\")]),_c('span',[_vm._v(\"Try again\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs } from 'vue'\n\n// Composables\nimport { useAxios } from '@/use/axios'\n\nexport interface SpanInfo {\n projectId: number\n traceId: string\n id: string\n standalone: boolean\n}\n\nexport function useTraceSearch() {\n const { loading, data, request } = useAxios()\n\n const span = computed((): SpanInfo | undefined => {\n return data.value?.span\n })\n\n function find(traceId: string) {\n request({ url: `/internal/v1/traces/search`, params: { trace_id: traceId } })\n }\n\n return proxyRefs({ loading, span, find })\n}\n","\nimport { defineComponent, watch } from 'vue'\n\n// Composables\nimport { useRouter } from '@/use/router'\nimport { useTraceSearch } from '@/tracing/use-trace-search'\n\nexport default defineComponent({\n name: 'TraceFind',\n\n setup() {\n const { router, route } = useRouter()\n const traceSearch = useTraceSearch()\n\n watch(\n () => traceSearch.span,\n (span) => {\n if (!span) {\n return\n }\n\n if (span.standalone) {\n router.replace({\n name: 'SpanShow',\n params: {\n projectId: String(span.projectId),\n traceId: span.traceId,\n spanId: span.id,\n },\n })\n } else {\n router.replace({\n name: 'TraceShow',\n params: {\n projectId: String(span.projectId),\n traceId: span.traceId,\n },\n query: route.value.query,\n })\n }\n },\n )\n\n watch(\n () => route.value.params.traceId,\n (traceId) => {\n traceSearch.find(traceId)\n },\n { immediate: true },\n )\n\n function reload() {\n traceSearch.find(route.value.params.traceId)\n }\n\n return { traceSearch, reload }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceFind.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceFind.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceFind.vue?vue&type=template&id=19c761a9&scoped=true&\"\nimport script from \"./TraceFind.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceFind.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19c761a9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('SystemGroupPicker',{attrs:{\"loading\":_vm.systems.loading,\"systems\":_vm.systems.items,\"optional\":\"\"}})],1),(_vm.span.loading)?_c('v-progress-linear',{attrs:{\"absolute\":\"\",\"indeterminate\":\"\"}}):_vm._e(),(_vm.span.data)?_c('SpanCard',{attrs:{\"date-range\":_vm.dateRange,\"span\":_vm.span.data,\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, watch } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { injectForceReload } from '@/use/force-reload'\nimport { useDateRange } from '@/use/date-range'\nimport { useSystems } from '@/tracing/system/use-systems'\nimport { useSpan } from '@/tracing/use-spans'\n\n// Components\nimport SystemGroupPicker from '@/tracing/system/SystemGroupPicker.vue'\nimport SpanCard from '@/tracing/SpanCard.vue'\n\nexport default defineComponent({\n name: 'TraceSpanShow',\n components: { SystemGroupPicker, SpanCard },\n\n setup() {\n const route = useRoute()\n const dateRange = useDateRange()\n const systems = useSystems(() => {\n return {\n ...dateRange.axiosParams(),\n }\n })\n\n const forceReload = injectForceReload()\n const span = useSpan(() => {\n const { projectId, traceId, spanId } = route.value.params\n return {\n url: `/internal/v1/tracing/${projectId}/traces/${traceId}/${spanId}`,\n params: forceReload.params,\n }\n })\n\n watch(\n () => span.data,\n (span) => {\n if (span) {\n useTitle(span.name)\n }\n },\n )\n\n return { dateRange, systems, span }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceSpanShow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TraceSpanShow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TraceSpanShow.vue?vue&type=template&id=0da62f8e&scoped=true&\"\nimport script from \"./TraceSpanShow.vue?vue&type=script&lang=ts&\"\nexport * from \"./TraceSpanShow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0da62f8e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'DashboardList' },\"exact-path\":\"\"}},[_vm._v(\"Dashboards\")]),_c('v-tab',{attrs:{\"to\":{ name: 'MetricsExplore' },\"exact-path\":\"\"}},[_vm._v(\"Explore Metrics\")])],1)],1),(_vm.metrics.noData)?_c('HelpCard',{attrs:{\"loading\":_vm.metrics.loading,\"show-reload\":\"\"}}):_c('router-view',{attrs:{\"name\":\"metrics\",\"date-range\":_vm.dateRange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-sm\"},[(_vm.loading)?_c('v-progress-linear',{attrs:{\"top\":\"\",\"absolute\":\"\",\"indeterminate\":\"\"}}):_vm._e(),_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(\"Send metrics to Uptrace\")]),_c('v-spacer'),(_vm.showReload)?_c('ForceReloadBtn',{attrs:{\"small\":\"\"}}):_vm._e()],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1\"},[_c('p',[_vm._v(\"There are two types of metrics that you can collect:\")]),_c('ol',{staticClass:\"mb-4\"},[_c('li',[_c('a',{attrs:{\"href\":\"#in-app\"}},[_vm._v(\"In-app metrics\")]),_vm._v(\" using OpenTelemetry SDK, for example, Go runtime metrics or built-in HTTP server metrics. \")]),_c('li',[_c('a',{attrs:{\"href\":\"#infra\"}},[_vm._v(\"Infrastructure metrics\")]),_vm._v(\" using OpenTelemetry Collector or \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/ingest/prometheus.html\",\"target\":\"_blank\"}},[_vm._v(\"Prometheus Remote Write\")]),_vm._v(\", for example, Linux/Windows system metrics or PostgreSQL metrics. \")])]),_c('p',[_vm._v(\" Once the metrics start coming in, Uptrace will automatically create dashboards from built-in templates maintained by the community. No need to import anything. \")]),_c('p',[_vm._v(\" To play with live metrics, you can check out the publicly available \"),_c('a',{attrs:{\"href\":\"https://app.uptrace.dev/metrics/1/\",\"target\":\"_blank\"}},[_vm._v(\"Uptrace Cloud demo\")]),_vm._v(\". \")])])],1)],1),_c('PageToolbar',{attrs:{\"id\":\"in-app\"}},[_c('v-toolbar-title',[_vm._v(\"In-app metrics\")])],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',[_c('v-col',[_vm._v(\" To start sending in-app metrics to Uptrace, you need to configure OpenTelemetry Metrics SDK. Use the following \"),_c('strong',[_vm._v(\"DSN\")]),_vm._v(\" to configure OpenTelemetry for your programming language: \")])],1),_c('v-row',[_c('v-col',[_c('OtelSdkCard',{attrs:{\"dsn\":_vm.project.dsn}})],1)],1)],1),_c('PageToolbar',{attrs:{\"id\":\"infra\"}},[_c('v-toolbar-title',[_vm._v(\"Infrastructure metrics\")])],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',[_c('v-col',{staticClass:\"text-subtitle-1\"},[_vm._v(\" To start monitoring your infrastructure, you need to \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/collector.html\",\"target\":\"_blank\"}},[_vm._v(\"install OpenTelemetry Collector\")]),_vm._v(\" on each host that you want to monitor. Collector acts as an agent that pulls metrics from monitored systems and exports them to Uptrace using the OTLP exporter. \")])],1),_c('v-row',[_c('v-col',[_c('CollectorTabs',{attrs:{\"dsn\":_vm.project.dsn}})],1)],1)],1),_c('PageToolbar',{attrs:{\"loading\":_vm.loading}},[_c('v-toolbar-title',[_vm._v(\"Supported software\")])],1),_c('v-container',{staticClass:\"mb-6 px-4 py-6\"},[_c('v-row',{attrs:{\"align\":\"end\"}},_vm._l((_vm.receivers),function(item){return _c('v-col',{key:item.name,staticClass:\"flex-grow-1\",attrs:{\"cols\":\"6\",\"sm\":\"3\",\"lg\":\"2\"}},[_c('DevIcon',_vm._b({},'DevIcon',item,false))],1)}),1)],1),_c('HelpLinks')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\n\n// Composables\nimport { useProject } from '@/org/use-projects'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\nimport CollectorTabs from '@/components/CollectorTabs.vue'\nimport OtelSdkCard from '@/components/OtelSdkCard.vue'\nimport DevIcon from '@/components/DevIcon.vue'\nimport HelpLinks from '@/components/HelpLinks.vue'\n\nexport default defineComponent({\n name: 'HelpCard',\n components: { ForceReloadBtn, CollectorTabs, OtelSdkCard, DevIcon, HelpLinks },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n showReload: {\n type: Boolean,\n default: false,\n },\n },\n\n setup() {\n const project = useProject()\n\n const receivers = computed(() => {\n return [\n {\n name: 'AWS',\n icon: '/devicon/amazonwebservices-original.svg',\n href: 'https://uptrace.dev/get/ingest/aws-cloudwatch.html',\n },\n {\n name: 'PostgreSQL',\n icon: '/devicon/postgresql-original.svg',\n href: monitorLink('postgresql'),\n },\n {\n name: 'MySQL',\n icon: '/devicon/mysql-original.svg',\n href: monitorLink('mysql'),\n },\n {\n name: 'SQLServer',\n icon: '/devicon/microsoftsqlserver-original.svg',\n href: receiverLink('pulsar'),\n },\n {\n name: 'Riak',\n icon: '/devicon/riak.svg',\n href: receiverLink('riak'),\n },\n {\n name: 'Redis',\n icon: '/devicon/redis-original.svg',\n href: monitorLink('redis'),\n },\n {\n name: 'MongoDB',\n icon: '/devicon/mongodb-original.svg',\n href: receiverLink('mongodb'),\n },\n {\n name: 'Apache',\n icon: '/devicon/apache-original.svg',\n href: receiverLink('apache'),\n },\n {\n name: 'Nginx',\n icon: '/devicon/nginx-original.svg',\n href: receiverLink('nginx'),\n },\n {\n name: 'Kafka',\n icon: '/devicon/apachekafka-original.svg',\n href: receiverLink('kafkametrics'),\n },\n {\n name: 'Docker',\n icon: '/devicon/docker-original.svg',\n href: monitorLink('docker'),\n },\n {\n name: 'Kubernetes',\n icon: '/devicon/kubernetes-plain.svg',\n href: monitorLink('kubernetes'),\n },\n {\n name: 'Zookeeper',\n icon: '/devicon/devicon-original.svg',\n href: receiverLink('zookeeper'),\n },\n {\n name: 'Memcached',\n icon: '/devicon/devicon-original.svg',\n href: receiverLink('memcached'),\n },\n {\n name: 'Foundry',\n icon: '/devicon/cloud-foundry.svg',\n href: receiverLink('cloudfoundry'),\n },\n {\n name: 'CouchDB',\n icon: '/devicon/couchdb-original.svg',\n href: receiverLink('couchdb'),\n },\n {\n name: 'Elastic',\n icon: '/devicon/elastic-search.svg',\n href: receiverLink('elasticsearch'),\n },\n {\n name: 'IIS',\n icon: '/devicon/iis.svg',\n href: receiverLink('iis'),\n },\n {\n name: 'InfluxDB',\n icon: '/devicon/influxdb.svg',\n href: receiverLink('influxdb'),\n },\n {\n name: 'RabbitMQ',\n icon: '/devicon/rabbitmq.svg',\n href: receiverLink('rabbitmq'),\n },\n {\n name: 'Pulsar',\n icon: '/devicon/pulsar.svg',\n href: receiverLink('pulsar'),\n },\n ]\n })\n\n function receiverLink(receiver: string): string {\n return `https://uptrace.dev/opentelemetry/collector-config.html?receiver=${receiver}`\n }\n\n function monitorLink(name: string): string {\n return `https://uptrace.dev/get/monitor/opentelemetry-${name}.html`\n }\n\n return { project, receivers }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HelpCard.vue?vue&type=template&id=6d62447e&scoped=true&\"\nimport script from \"./HelpCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./HelpCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d62447e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useMetrics } from '@/metrics/use-metrics'\n\n// Components\nimport HelpCard from '@/metrics/HelpCard.vue'\n\nexport default defineComponent({\n name: 'MetricsLayout',\n components: { HelpCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const metrics = useMetrics()\n\n return { metrics }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=25bd7500&scoped=true&\"\nimport script from \"./Layout.vue?vue&type=script&lang=ts&\"\nexport * from \"./Layout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Layout.vue?vue&type=style&index=0&id=25bd7500&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"25bd7500\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}})],1)],1),_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"br--primary\"}},[_c('v-toolbar-title',[_vm._v(\"Metrics\")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-text-field',{staticStyle:{\"min-width\":\"300px\"},attrs:{\"placeholder\":\"Quick search: option1|option2\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.metrics.searchInput),callback:function ($$v) {_vm.$set(_vm.metrics, \"searchInput\", $$v)},expression:\"metrics.searchInput\"}})],1),_c('v-spacer'),_c('div',{staticClass:\"text-body-2\"},[(_vm.metrics.hasMore)?_c('span',[_vm._v(\"more than \")]):_vm._e(),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.metrics.items.length))]),_c('span',[_vm._v(\" metrics\")])])],1),_c('div',{staticClass:\"pa-4\"},[_c('v-row',{staticClass:\"mb-4\"},[_c('v-col',[_c('v-autocomplete',{staticStyle:{\"min-width\":\"300px\"},attrs:{\"multiple\":\"\",\"loading\":_vm.attrKeysDs.loading,\"items\":_vm.attrKeysDs.filteredItems,\"error-messages\":_vm.attrKeysDs.errorMessages,\"search-input\":_vm.attrKeysDs.searchInput,\"placeholder\":\"Filter by attributes presence\",\"outlined\":\"\",\"dense\":\"\",\"no-filter\":\"\",\"auto-select-first\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.attrKeysDs, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.attrKeysDs, \"searchInput\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeAttrKeys.includes(item.value)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1),_c('v-list-item-action',[_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(item.count))])],1)]}}]),model:{value:(_vm.activeAttrKeys),callback:function ($$v) {_vm.activeAttrKeys=$$v},expression:\"activeAttrKeys\"}})],1),_c('v-col',[_c('v-autocomplete',{staticStyle:{\"min-width\":\"300px\"},attrs:{\"multiple\":\"\",\"loading\":_vm.instrumentDs.loading,\"items\":_vm.instrumentDs.filteredItems,\"error-messages\":_vm.instrumentDs.errorMessages,\"search-input\":_vm.instrumentDs.searchInput,\"placeholder\":\"Filter by instruments\",\"outlined\":\"\",\"dense\":\"\",\"no-filter\":\"\",\"auto-select-first\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.instrumentDs, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.instrumentDs, \"searchInput\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeInstruments.includes(item.value)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1),_c('v-list-item-action',[_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(item.count))])],1)]}}]),model:{value:(_vm.activeInstruments),callback:function ($$v) {_vm.activeInstruments=$$v},expression:\"activeInstruments\"}})],1),_c('v-col',[_c('v-autocomplete',{staticStyle:{\"min-width\":\"300px\"},attrs:{\"multiple\":\"\",\"loading\":_vm.otelLibraryDs.loading,\"items\":_vm.otelLibraryDs.filteredItems,\"error-messages\":_vm.otelLibraryDs.errorMessages,\"search-input\":_vm.otelLibraryDs.searchInput,\"placeholder\":\"Filter by instrumentation libraries\",\"outlined\":\"\",\"dense\":\"\",\"no-filter\":\"\",\"auto-select-first\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){return _vm.$set(_vm.otelLibraryDs, \"searchInput\", $event)},\"update:search-input\":function($event){return _vm.$set(_vm.otelLibraryDs, \"searchInput\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-action',{staticClass:\"my-0 mr-4\"},[_c('v-checkbox',{attrs:{\"input-value\":_vm.activeOtelLibraries.includes(item.value)}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1),_c('v-list-item-action',[_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(item.count))])],1)]}}]),model:{value:(_vm.activeOtelLibraries),callback:function ($$v) {_vm.activeOtelLibraries=$$v},expression:\"activeOtelLibraries\"}})],1)],1),_c('MetricsTable',{attrs:{\"loading\":_vm.metrics.loading,\"metrics\":_vm.metrics.items},on:{\"click:item\":function($event){_vm.activeMetric = $event\n _vm.dialog = true}}})],1)],1)],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"1200\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.dialog && _vm.activeMetric)?_c('ExploreMetric',{attrs:{\"date-range\":_vm.dateRange,\"metric\":_vm.activeMetric},on:{\"click:close\":function($event){_vm.dialog = false}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.metrics,\"item-key\":\"name\",\"sort-by\":\"numTimeseries\",\"sort-desc\":true,\"must-sort\":\"\",\"hide-default-footer\":_vm.metrics.length <= 10,\"no-data-text\":\"There are no metrics\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('tr',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){return _vm.$emit('click:item', item)}}},[_c('td',[_c('div',{staticClass:\"text-subtitle-2\"},[_c('span',[_vm._v(_vm._s(item.name))]),_c('span',{staticClass:\"ml-1 font-weight-regular text--secondary\"},[_vm._v(\" \"+_vm._s(item.description))])]),(item.attrKeys)?_c('div',{staticClass:\"text-caption text--secondary\"},[_vm._v(\" \"+_vm._s(item.attrKeys.join(', '))+\" \")]):_vm._e()]),_c('td',[_vm._v(\" \"+_vm._s(item.instrument)+\" \")]),_c('td',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(item.numTimeseries)+\" \")])])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { ExploredMetric } from '@/metrics/use-metrics'\n\nexport default defineComponent({\n name: 'MetricsTable',\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup() {\n const headers = computed(() => {\n const headers = []\n headers.push({ text: 'Metric', value: 'name', sortable: true, align: 'start' })\n headers.push({ text: 'Instrument', value: 'instrument', sortable: true, align: 'start' })\n headers.push({ text: 'Timeseries', value: 'numTimeseries', sortable: true, align: 'end' })\n return headers\n })\n\n return { headers }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./MetricsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MetricsTable.vue?vue&type=template&id=02464832&scoped=true&\"\nimport script from \"./MetricsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./MetricsTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MetricsTable.vue?vue&type=style&index=0&id=02464832&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02464832\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Metric explorer\")]),_c('v-spacer'),_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}}),_c('v-toolbar-items',{staticClass:\"ml-4\"},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:close')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{staticClass:\"pa-4\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('MetricsPicker',{attrs:{\"uql\":_vm.uql},model:{value:(_vm.metricAliases),callback:function ($$v) {_vm.metricAliases=$$v},expression:\"metricAliases\"}})],1)],1),_c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"pa-4\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"show-agg\":\"\",\"show-group-by\":\"\",\"show-dash-where\":\"\",\"disabled\":!_vm.activeMetrics.length}})],1)],1)],1),_c('v-row',[_c('v-col',[_c('v-divider')],1)],1),_c('v-row',{staticClass:\"mb-n6\"},[_c('v-col',{attrs:{\"cols\":\"auto\"}},_vm._l((_vm.columnMap),function(col,colName){return _c('v-chip',{key:colName,staticClass:\"ma-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('span',[_vm._v(_vm._s(colName))]),_c('UnitPicker',{attrs:{\"target-class\":\"mr-n4\"},model:{value:(col.unit),callback:function ($$v) {_vm.$set(col, \"unit\", $$v)},expression:\"col.unit\"}})],1)}),1)],1),_c('v-row',[_c('v-col',[_c('LegendaryChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"legend\":_vm.legend,\"height\":400}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, ref, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql } from '@/use/uql'\nimport {\n useActiveMetrics,\n defaultMetricAlias,\n defaultMetricQuery,\n ExploredMetric,\n} from '@/metrics/use-metrics'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\nimport { MetricAlias, LegendType, LegendPlacement, LegendValue } from '@/metrics/types'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport UnitPicker from '@/components/UnitPicker.vue'\nimport LegendaryChart from '@/metrics/LegendaryChart.vue'\n\n// Misc\nimport { updateColumnMap, assignColors, emptyMetricColumn, MetricColumn } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'ExploreMetric',\n components: { DateRangePicker, MetricsPicker, MetricsQueryBuilder, UnitPicker, LegendaryChart },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metric: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n useTitle('Explore Metrics')\n const uql = useUql('')\n\n const metricAliases = shallowRef([])\n watch(\n () => props.metric,\n (metric) => {\n const alias = defaultMetricAlias(metric.name)\n metricAliases.value = [\n {\n name: metric.name,\n alias,\n },\n ]\n const column = defaultMetricQuery(metric.instrument, alias)\n uql.query = `${column}`\n },\n { immediate: true },\n )\n\n const legend = computed(() => {\n return {\n type: LegendType.Table,\n placement: LegendPlacement.Bottom,\n values: [LegendValue.Avg, LegendValue.Last, LegendValue.Min, LegendValue.Max],\n maxLength: 150,\n }\n })\n\n const activeMetrics = useActiveMetrics(metricAliases)\n\n const timeseries = useTimeseries(() => {\n if (!metricAliases.value.length || !uql.query) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: metricAliases.value.map((m) => m.name),\n alias: metricAliases.value.map((m) => m.alias),\n query: uql.query,\n }\n })\n\n const columnMap = ref>({})\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n columnMap,\n computed(() => ({})),\n )\n\n watch(\n () => timeseries.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n { immediate: true },\n )\n\n watch(\n () => timeseries.columns,\n (columns) => {\n updateColumnMap(columnMap.value, columns, emptyMetricColumn)\n assignColors(columnMap.value, columns)\n },\n )\n\n return { uql, legend, metricAliases, activeMetrics, columnMap, timeseries, styledTimeseries }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExploreMetric.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ExploreMetric.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ExploreMetric.vue?vue&type=template&id=6316f3e3&scoped=true&\"\nimport script from \"./ExploreMetric.vue?vue&type=script&lang=ts&\"\nexport * from \"./ExploreMetric.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6316f3e3\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRoute } from '@/use/router'\nimport { useDataSource } from '@/use/datasource'\nimport { UseDateRange } from '@/use/date-range'\nimport { useExploreMetrics, ExploredMetric } from '@/metrics/use-metrics'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport MetricsTable from '@/metrics/MetricsTable.vue'\nimport ExploreMetric from '@/metrics/ExploreMetric.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\n\nexport default defineComponent({\n name: 'Explore',\n components: { DateRangePicker, MetricsTable, ExploreMetric },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n useTitle('Explore Metrics')\n const route = useRoute()\n\n const activeAttrKeys = shallowRef([])\n const activeInstruments = shallowRef([])\n const activeOtelLibraries = shallowRef([])\n\n const attrKeysDs = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes`,\n params: {\n ...props.dateRange.axiosParams(),\n instrument: activeInstruments.value,\n otel_library_name: activeOtelLibraries.value,\n },\n }\n })\n\n const instrumentDs = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes/${AttrKey.metricInstrument}`,\n params: {\n ...props.dateRange.axiosParams(),\n attr_key: activeAttrKeys.value,\n otel_library_name: activeOtelLibraries.value,\n },\n }\n })\n\n const otelLibraryDs = useDataSource(() => {\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes/${AttrKey.otelLibraryName}`,\n params: {\n ...props.dateRange.axiosParams(),\n attr_key: activeAttrKeys.value,\n instrument: activeInstruments.value,\n },\n }\n })\n\n const metrics = useExploreMetrics(() => {\n return {\n ...props.dateRange.axiosParams(),\n attr_key: activeAttrKeys.value,\n instrument: activeInstruments.value,\n otel_library_name: activeOtelLibraries.value,\n }\n })\n\n const dialog = shallowRef(false)\n const activeMetric = shallowRef()\n\n return {\n activeAttrKeys,\n attrKeysDs,\n activeInstruments,\n instrumentDs,\n activeOtelLibraries,\n otelLibraryDs,\n metrics,\n\n dialog,\n activeMetric,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Explore.vue?vue&type=template&id=e8666c46&scoped=true&\"\nimport script from \"./Explore.vue?vue&type=script&lang=ts&\"\nexport * from \"./Explore.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Explore.vue?vue&type=style&index=0&id=e8666c46&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e8666c46\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('HelpCard')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Components\nimport HelpCard from '@/metrics/HelpCard.vue'\n\nexport default defineComponent({\n name: 'MetricsHelp',\n components: { HelpCard },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Help.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Help.vue?vue&type=template&id=1a681170&scoped=true&\"\nimport script from \"./Help.vue?vue&type=script&lang=ts&\"\nexport * from \"./Help.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a681170\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-x-lg\"},[_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(\"Querying Metrics Cheatsheet\")]),_c('v-btn',{staticClass:\"ml-6 primary\",attrs:{\"href\":\"https://uptrace.dev/get/querying-metrics.html\",\"target\":\"_blank\"}},[_c('span',[_vm._v(\"Documentation\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-open-in-new\")])],1)],1),_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.mdAndDown}},[_c('v-row',[_c('v-col',[_c('CheatsheetCard')],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\n\n// Components\nimport CheatsheetCard from '@/metrics/CheatsheetCard.vue'\n\nexport default defineComponent({\n name: 'Cheatcheet',\n components: { CheatsheetCard },\n\n setup() {\n useTitle('Querying Metrics Cheatsheet')\n return {}\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Cheatsheet.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Cheatsheet.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Cheatsheet.vue?vue&type=template&id=3dc40d3d&scoped=true&\"\nimport script from \"./Cheatsheet.vue?vue&type=script&lang=ts&\"\nexport * from \"./Cheatsheet.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3dc40d3d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-x-lg\"},[_c('v-container',{attrs:{\"fluid\":!_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',[_c('v-col',[_c('DashboardNewMenu',{attrs:{\"loading:\":_vm.dashboards.loading},on:{\"created\":function($event){return _vm.dashboards.reload()}}})],1)],1),_c('v-row',[_c('v-col',[_c('v-sheet',{staticClass:\"mb-4\",attrs:{\"rounded\":\"lg\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-title',[_vm._v(\"Dashboards\")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-text-field',{staticStyle:{\"max-width\":\"350px\"},attrs:{\"placeholder\":\"Search dashboards...\",\"prepend-inner-icon\":\"mdi-magnify\",\"clearable\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}})],1),_c('v-spacer'),(_vm.dashboards.items.length)?_c('div',{staticClass:\"text-body-2\"},[_c('NumValue',{staticClass:\"font-weight-bold\",attrs:{\"value\":_vm.dashboards.items.length,\"format\":\"verbose\"}}),_c('span',[_vm._v(\" dashboards\")])],1):_vm._e()],1),(false)?_c('span',[_c('v-checkbox',{staticClass:\"d-inline-block\",attrs:{\"hide-details\":\"auto\"},model:{value:(_vm.dashboards.pinnedFilter),callback:function ($$v) {_vm.$set(_vm.dashboards, \"pinnedFilter\", $$v)},expression:\"dashboards.pinnedFilter\"}}),_vm._v(\"show pinned dashboards \")],1):_vm._e(),_c('div',{staticClass:\"pa-4\"},[_c('DashboardsTable',{attrs:{\"dashboards\":_vm.dashboards.items,\"loading\":_vm.dashboards.loading,\"order\":_vm.dashboards.order},on:{\"change\":_vm.dashboards.reload}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { omit, mergeWith } from 'lodash-es'\nimport { ref, reactive, computed, watch, proxyRefs } from 'vue'\n\n// Composables\nimport { useOrder } from '@/use/order'\nimport { useRoute } from '@/use/router'\nimport { useAxios } from '@/use/axios'\nimport { useWatchAxios, AxiosRequestSource, AxiosParamsSource } from '@/use/watch-axios'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Misc\nimport {\n defaultChartLegend,\n Dashboard,\n GridRow,\n GridItem,\n GridItemType,\n MetricColumn,\n MetricAlias,\n} from '@/metrics/types'\n\nexport type UseDashboards = ReturnType\n\nexport function useDashboards(axiosParamsSource: AxiosParamsSource | undefined = undefined) {\n const route = useRoute()\n const forceReload = injectForceReload()\n const order = useOrder()\n const dashboards = ref([])\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId } = route.value.params\n const axiosParams = axiosParamsSource ? axiosParamsSource() : {}\n\n const params: Record = {\n ...forceReload.params,\n ...order.axiosParams,\n ...axiosParams,\n }\n\n return {\n url: `/internal/v1/metrics/${projectId}/dashboards`,\n params,\n }\n })\n\n const isEmpty = computed((): boolean => {\n return status.value.hasData() && !dashboards.value.length\n })\n\n watch(\n data,\n (data) => {\n dashboards.value = (data?.dashboards ?? []).map((d: any) => reactive(d))\n },\n { immediate: true },\n )\n\n return proxyRefs({\n loading,\n isEmpty,\n items: dashboards,\n order,\n\n reload,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport type UseDashboard = ReturnType\n\nexport function useDashboard() {\n const route = useRoute()\n const forceReload = injectForceReload()\n\n const { status, loading, data, reload } = useWatchAxios(() => {\n const { projectId, dashId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/dashboards/${dashId}`,\n params: forceReload.params,\n }\n })\n\n const dashboard = computed((): Dashboard | undefined => {\n const dash = data.value?.dashboard\n if (!dash) {\n return undefined\n }\n dash.tableMetrics ??= []\n dash.tableGrouping ??= []\n dash.tableColumnMap ??= {}\n return dash\n })\n\n const tableItems = computed((): GridItem[] => {\n const tableItems = data.value?.tableItems ?? []\n for (let gridItem of tableItems) {\n fixupGridItem(gridItem)\n }\n return tableItems\n })\n\n const gridRows = computed((): GridRow[] => {\n const gridRows = data.value?.gridRows ?? []\n for (let gridRow of gridRows) {\n for (let gridItem of gridRow.items) {\n fixupGridItem(gridItem)\n }\n }\n return gridRows\n })\n\n const gridMetrics = computed((): string[] => {\n return data.value?.gridMetrics\n })\n\n const yamlUrl = computed((): string => {\n return data.value?.yamlUrl ?? ''\n })\n\n const isTemplate = computed((): boolean => {\n return Boolean(dashboard.value?.templateId)\n })\n\n const tableMetrics = computed({\n get() {\n return dashboard.value?.tableMetrics ?? []\n },\n set(v: MetricAlias[]) {\n if (dashboard.value) {\n dashboard.value.tableMetrics = v\n }\n },\n })\n\n const tableColumnMap = computed((): Record => {\n return dashboard.value?.tableColumnMap ?? {}\n })\n\n return proxyRefs({\n status,\n loading,\n axiosData: data,\n reload,\n\n data: dashboard,\n gridRows,\n gridMetrics,\n tableItems,\n isTemplate,\n yamlUrl,\n\n tableMetrics,\n tableColumnMap,\n })\n}\n\nexport function useYamlDashboard(reqSource: AxiosRequestSource) {\n const { status, loading, data, reload } = useWatchAxios(reqSource)\n\n const yaml = computed(() => {\n return data.value ?? ''\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n yaml,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport function useDashboardManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function create(dash: Dashboard) {\n const { projectId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards`\n\n return request({ method: 'POST', url, data: dash }).then((resp) => {\n return resp.data.dashboard as Dashboard\n })\n }\n\n function update(dash: Dashboard) {\n const { projectId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dash.id}`\n\n return request({ method: 'PUT', url, data: dash })\n }\n\n function updateTable(data: Partial) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/table`\n\n return request({ method: 'PUT', url, data })\n }\n\n function updateGrid(dash: Pick) {\n const { projectId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dash.id}/grid`\n\n return request({ method: 'PUT', url, data: dash })\n }\n\n function createYaml(data: string) {\n const { projectId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/yaml`\n\n return request({ method: 'POST', url, data }).then((resp) => {\n return resp.data.dashboard as Dashboard\n })\n }\n\n function updateYaml(data: string) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/yaml`\n\n return request({ method: 'PUT', url, data })\n }\n\n function clone(dash: Dashboard) {\n const url = `/internal/v1/metrics/${dash.projectId}/dashboards/${dash.id}`\n\n return request({ method: 'POST', url }).then((resp) => {\n return resp.data.dashboard as Dashboard\n })\n }\n\n function reset(dash: Dashboard) {\n const url = `/internal/v1/metrics/${dash.projectId}/dashboards/${dash.id}/reset`\n return request({ method: 'PUT', url })\n }\n\n function pin(dash: Dashboard) {\n const url = `/internal/v1/metrics/${dash.projectId}/dashboards/${dash.id}/pinned`\n\n return request({ method: 'PUT', url })\n }\n\n function unpin(dash: Dashboard) {\n const url = `/internal/v1/metrics/${dash.projectId}/dashboards/${dash.id}/unpinned`\n\n return request({ method: 'PUT', url })\n }\n\n function del(dash: Dashboard) {\n const url = `/internal/v1/metrics/${dash.projectId}/dashboards/${dash.id}`\n\n return request({ method: 'DELETE', url }).then((resp) => {\n return resp.data.dashboard as Dashboard\n })\n }\n\n return proxyRefs({\n pending,\n create,\n update,\n updateTable,\n updateGrid,\n createYaml,\n updateYaml,\n clone,\n reset,\n pin,\n unpin,\n delete: del,\n })\n}\n\n//------------------------------------------------------------------------------\n\nexport function useGridItemManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function save(gridItem: GridItem) {\n if (gridItem.id) {\n return update(gridItem)\n }\n return create(omit(gridItem, 'id'))\n }\n\n function create(gridItem: Omit) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/grid`\n\n return request({ method: 'POST', url, data: gridItem }).then((resp) => {\n return resp.data.gridItem as GridItem\n })\n }\n\n function update(gridItem: GridItem) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/grid/${gridItem.id}`\n\n return request({ method: 'PUT', url, data: gridItem }).then((resp) => {\n return resp.data.gridItem as GridItem\n })\n }\n\n function del(gridItem: GridItem) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/grid/${gridItem.id}`\n\n return request({ method: 'DELETE', url, data: gridItem }).then((resp) => {\n return resp.data.gridItem as GridItem\n })\n }\n\n return proxyRefs({ pending, create, update, save, delete: del })\n}\n\n//------------------------------------------------------------------------------\n\nexport function useGridRow(axiosReqSource: AxiosRequestSource) {\n const { status, loading, resultId, data, reload } = useWatchAxios(axiosReqSource)\n\n const gridRow = computed((): GridRow | undefined => {\n return data.value?.gridRow\n })\n\n const gridItems = computed((): GridItem[] => {\n const gridItems = data.value?.gridItems ?? []\n for (let gridItem of gridItems) {\n fixupGridItem(gridItem)\n }\n return gridItems\n })\n\n return proxyRefs({\n status,\n loading,\n resultId,\n reload,\n\n data: gridRow,\n items: gridItems,\n })\n}\n\nfunction fixupGridItem(gridItem: GridItem) {\n switch (gridItem.type) {\n case GridItemType.Chart:\n gridItem.params.metrics ??= []\n gridItem.params.columnMap ??= {}\n gridItem.params.timeseriesMap ??= {}\n gridItem.params.legend = mergeWith(\n gridItem.params.legend,\n defaultChartLegend(),\n (objValue, srcValue) => objValue || srcValue,\n )\n break\n case GridItemType.Table:\n gridItem.params.metrics ??= []\n gridItem.params.columnMap ??= {}\n break\n case GridItemType.Heatmap:\n break\n case GridItemType.Gauge:\n gridItem.params.metrics ??= []\n gridItem.params.columnMap ??= {}\n gridItem.params.valueMappings ??= []\n break\n }\n}\n\nexport function useGridRowManager() {\n const route = useRoute()\n const { loading: pending, request } = useAxios()\n\n function save(gridRow: GridRow) {\n if (gridRow.id) {\n return update(gridRow)\n }\n return create(omit(gridRow, 'id'))\n }\n\n function create(gridRow: Partial) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/rows`\n\n return request({ method: 'POST', url, data: gridRow }).then((resp) => {\n return resp.data.gridRow as GridRow\n })\n }\n\n function update(gridRow: GridRow) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/rows/${gridRow.id}`\n\n return request({ method: 'PUT', url, data: gridRow }).then((resp) => {\n return resp.data.gridRow as GridRow\n })\n }\n\n function del(gridRow: GridRow) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/rows/${gridRow.id}`\n\n return request({ method: 'DELETE', url, data: gridRow }).then((resp) => {\n return resp.data.gridRow as GridItem\n })\n }\n\n function moveUp(gridRow: GridRow) {\n return move(gridRow, 'up')\n }\n\n function moveDown(gridRow: GridRow) {\n return move(gridRow, 'down')\n }\n\n function move(gridRow: GridRow, verb: string) {\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/rows/${gridRow.id}/${verb}`\n return request({ method: 'PUT', url, data: gridRow }).then((resp) => {\n return resp.data.gridRow as GridRow\n })\n }\n\n return proxyRefs({ pending, create, update, save, delete: del, moveUp, moveDown })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"color\":\"primary\"}},on),[_vm._v(\" New dashboard \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-dialog',{attrs:{\"max-width\":\"500px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"ripple\":\"\"}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"New dashboard\")])],1)],1)]}}]),model:{value:(_vm.newDialog),callback:function ($$v) {_vm.newDialog=$$v},expression:\"newDialog\"}},[_c('DashboardForm',{on:{\"saved\":function($event){_vm.closeDialog()\n _vm.$emit('created', $event)},\"click:cancel\":function($event){_vm.newDialog = false}}})],1),_c('v-dialog',{attrs:{\"max-width\":\"800px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"ripple\":\"\"}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"New dashboard from YAML\")])],1)],1)]}}]),model:{value:(_vm.newYamlDialog),callback:function ($$v) {_vm.newYamlDialog=$$v},expression:\"newYamlDialog\"}},[(_vm.newYamlDialog)?_c('DashboardYamlForm',{on:{\"created\":function($event){_vm.closeDialog()\n _vm.$emit('created', $event)},\"click:cancel\":function($event){_vm.newYamlDialog = false}}}):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.dashboard.id ? 'Edit' : 'New')+\" dashboard\")]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Dashboard name\",\"rules\":_vm.rules.name,\"dense\":\"\",\"filled\":\"\",\"required\":\"\",\"autofocus\":\"\"},model:{value:(_vm.dashboard.name),callback:function ($$v) {_vm.$set(_vm.dashboard, \"name\", $$v)},expression:\"dashboard.name\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.minIntervalItems,\"label\":\"Min interval\",\"hint\":\"Min limit for the automatically calculated interval\",\"persistent-hint\":\"\",\"dense\":\"\",\"filled\":\"\"},model:{value:(_vm.dashboard.minInterval),callback:function ($$v) {_vm.$set(_vm.dashboard, \"minInterval\", $$v)},expression:\"dashboard.minInterval\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-text-field',{attrs:{\"type\":\"number\",\"label\":\"Time offset\",\"hint\":\"Shift time to the past (positive offset) or future (negative offset)\",\"placeholder\":\"15\",\"suffix\":\"minutes\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.timeOffset},model:{value:(_vm.timeOffset),callback:function ($$v) {_vm.timeOffset=_vm._n($$v)},expression:\"timeOffset\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-select',{attrs:{\"items\":_vm.gridMaxWidthItems,\"label\":\"Grid max width\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.dashboard.gridMaxWidth),callback:function ($$v) {_vm.$set(_vm.dashboard, \"gridMaxWidth\", $$v)},expression:\"dashboard.gridMaxWidth\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"type\":\"submit\",\"color\":\"primary\",\"disabled\":!_vm.isValid,\"loading\":_vm.dashMan.pending}},[_vm._v(\" \"+_vm._s(_vm.dashboard.id ? 'Update' : 'Create')+\" \")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, reactive, computed, PropType } from 'vue'\n\n// Composables\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\nimport { requiredRule, minMaxRule } from '@/util/validation'\nimport { MINUTE } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'DashboardForm',\n\n props: {\n dashboard: {\n type: Object as PropType,\n default: () => emptyDashboard(),\n },\n },\n\n setup(props, ctx) {\n const isValid = shallowRef(false)\n const rules = {\n name: [requiredRule],\n timeOffset: [minMaxRule(-300, 300)],\n }\n\n const minIntervalItems = computed(() => {\n return [\n { text: 'Not set', value: 0 },\n { text: '2 minutes', value: 2 * MINUTE },\n { text: '3 minutes', value: 3 * MINUTE },\n { text: '5 minutes', value: 5 * MINUTE },\n { text: '10 minutes', value: 10 * MINUTE },\n { text: '15 minutes', value: 15 * MINUTE },\n ]\n })\n\n const timeOffset = computed({\n get() {\n return props.dashboard.timeOffset / MINUTE\n },\n set(minutes: number) {\n props.dashboard.timeOffset = minutes * MINUTE\n },\n })\n\n const gridMaxWidthItems = computed(() => {\n return [\n { text: '1400px', value: 1416 },\n { text: '1600px', value: 1600 },\n { text: '1800px', value: 1800 },\n { text: '2000px', value: 2000 },\n ]\n })\n\n const dashMan = useDashboardManager()\n\n function submit() {\n if (!isValid.value) {\n return\n }\n\n if (props.dashboard.id) {\n dashMan.update(props.dashboard).then((dash) => {\n ctx.emit('saved', dash)\n })\n } else {\n dashMan.create(props.dashboard).then((dash) => {\n ctx.emit('saved', dash)\n })\n }\n }\n\n return {\n isValid,\n rules,\n minIntervalItems,\n timeOffset,\n gridMaxWidthItems,\n\n dashMan,\n submit,\n\n emptyDashboard,\n }\n },\n})\n\nfunction emptyDashboard(): Dashboard {\n return reactive({\n id: 0,\n projectId: 0,\n templateId: '',\n\n name: '',\n pinned: false,\n\n minInterval: 0,\n timeOffset: 0,\n\n tableMetrics: [],\n tableQuery: '',\n tableGrouping: [],\n tableColumnMap: {},\n\n gridQuery: '',\n gridMaxWidth: 1416,\n })\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardForm.vue?vue&type=template&id=5bd522fb&scoped=true&\"\nimport script from \"./DashboardForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd522fb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.saveYaml.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"New dashboard from YAML\")]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-textarea',{attrs:{\"placeholder\":\"To create a dashboard, paste here a dashboard template in YAML format\",\"rows\":\"20\",\"auto-grow\":\"\",\"filled\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.yaml},model:{value:(_vm.yaml),callback:function ($$v) {_vm.yaml=$$v},expression:\"yaml\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{attrs:{\"disabled\":!_vm.isValid,\"loading\":_vm.dashboardMan.pending,\"color\":\"primary\",\"type\":\"submit\"}},[_vm._v(\" Create dashboard \")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Composables\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'DashboardYamlForm',\n\n setup(_props, ctx) {\n const isValid = shallowRef(true)\n const rules = {\n yaml: [requiredRule],\n }\n\n const yaml = shallowRef('')\n const dashboardMan = useDashboardManager()\n\n function saveYaml() {\n dashboardMan.createYaml(yaml.value).then((dashboard) => {\n ctx.emit('created', dashboard)\n })\n }\n\n return {\n isValid,\n rules,\n yaml,\n dashboardMan,\n\n saveYaml,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardYamlForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardYamlForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardYamlForm.vue?vue&type=template&id=9191c5e4&scoped=true&\"\nimport script from \"./DashboardYamlForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardYamlForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9191c5e4\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\n\n// Components\nimport DashboardForm from '@/metrics/DashboardForm.vue'\nimport DashboardYamlForm from '@/metrics/DashboardYamlForm.vue'\n\nexport default defineComponent({\n name: 'DashboardMenu',\n components: { DashboardForm, DashboardYamlForm },\n\n setup() {\n const menu = shallowRef(false)\n const newDialog = shallowRef(false)\n const newYamlDialog = shallowRef(false)\n\n function closeDialog() {\n newDialog.value = false\n newYamlDialog.value = false\n menu.value = false\n }\n\n return {\n menu,\n newDialog,\n newYamlDialog,\n closeDialog,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardNewMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardNewMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardNewMenu.vue?vue&type=template&id=3a3bc7c2&scoped=true&\"\nimport script from \"./DashboardNewMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardNewMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3a3bc7c2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"headers\":_vm.headers,\"loading\":_vm.loading,\"items\":_vm.dashboards,\"items-per-page\":_vm.itemsPerPage,\"hide-default-footer\":_vm.dashboards.length <= _vm.itemsPerPage,\"no-data-text\":\"There are no dashboards\",\"custom-sort\":(items) => items,\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":[function($event){return _vm.$set(_vm.order, \"column\", $event)},function($event){_vm.$nextTick(() => (_vm.order.desc = true))}],\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('DashboardsTableRow',{attrs:{\"dashboard\":item,\"headers\":_vm.headers},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"cursor-pointer\",on:{\"click\":function($event){return _vm.$router.push({ name: 'DashboardShow', params: { dashId: _vm.dashboard.id } })}}},[_c('td',[_c('DashPinBtn',{attrs:{\"dashboard\":_vm.dashboard},on:{\"update\":function($event){return _vm.$emit('change')}}}),_c('router-link',{staticClass:\"text--primary text-decoration-none\",attrs:{\"to\":{ name: 'DashboardShow', params: { dashId: _vm.dashboard.id } }},nativeOn:{\"click\":function($event){$event.stopPropagation();}}},[_vm._v(_vm._s(_vm.dashboard.name))])],1),_c('td',[(_vm.dashboard.updatedAt)?_c('DateValue',{attrs:{\"value\":_vm.dashboard.updatedAt,\"format\":\"relative\"}}):_vm._e()],1),_c('td',{staticClass:\"text-right text-no-wrap\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Delete dashboard\",\"loading\":_vm.dashboardMan.pending},on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteDashboard.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: onMenu, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),onMenu),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _vm.openDashboardYamlDialog(_vm.dashboard)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"View YAML\")])],1)],1),_c('v-list-item',{on:{\"click\":_vm.cloneDashboard}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Clone\")])],1)],1)],1)],1)],1),(_vm.yamlDialog)?_c('v-dialog',{attrs:{\"max-width\":\"800px\"},model:{value:(_vm.yamlDialog),callback:function ($$v) {_vm.yamlDialog=$$v},expression:\"yamlDialog\"}},[(_vm.yamlDialog)?_c('DashboardYamlCard',{attrs:{\"dashboard\":_vm.dashboard},on:{\"click:cancel\":function($event){_vm.yamlDialog = false}}}):_vm._e()],1):_vm._e(),(_vm.editDialog)?_c('v-dialog',{attrs:{\"max-width\":\"500\",\"title\":_vm.dashboard.name},model:{value:(_vm.editDialog),callback:function ($$v) {_vm.editDialog=$$v},expression:\"editDialog\"}},[_c('DashboardForm',{attrs:{\"dashboard\":_vm.reactive(_vm.cloneDeep(_vm.dashboard))},on:{\"saved\":function($event){_vm.editDialog = false\n _vm.$emit('change', $event)},\"click:cancel\":function($event){_vm.editDialog = false}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"max-width\":\"800\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.dashboard?.name || 'Dashboard'))]),_c('v-spacer'),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1)],1),_c('v-container',[(_vm.dash.yaml)?_c('PrismCode',{attrs:{\"code\":_vm.dash.yaml,\"language\":\"yaml\",\"target-style\":\"max-height: 75vh; overflow-y: auto\"}}):_c('v-skeleton-loader',{attrs:{\"type\":\"article\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useYamlDashboard } from '@/metrics/use-dashboards'\nimport { injectForceReload } from '@/use/force-reload'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardYamlCard',\n\n props: {\n dashboard: {\n type: Object as PropType,\n default: undefined,\n },\n },\n\n setup(props) {\n const route = useRoute()\n const forceReload = injectForceReload()\n\n const dash = useYamlDashboard(() => {\n if (!props.dashboard.id) {\n return\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/dashboards/${props.dashboard.id}/yaml`,\n params: forceReload.params,\n }\n })\n\n return { dash }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardYamlCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardYamlCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardYamlCard.vue?vue&type=template&id=0e97dfc8&scoped=true&\"\nimport script from \"./DashboardYamlCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardYamlCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0e97dfc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[(_vm.dashboard.pinned)?_c('v-btn',{attrs:{\"loading\":_vm.dashMan.pending,\"icon\":\"\",\"title\":\"Unpin dashboard\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.unpinDashboard.apply(null, arguments)}}},[_c('v-icon',{attrs:{\"color\":\"green darken-1\"}},[_vm._v(\"mdi-pin\")])],1):_c('v-btn',{attrs:{\"loading\":_vm.dashMan.pending,\"icon\":\"\",\"title\":\"Pin dashboard\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.pinDashboard.apply(null, arguments)}}},[_c('v-icon',[_vm._v(\"mdi-pin-outline\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashPinBtn',\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const dashMan = useDashboardManager()\n\n function pinDashboard() {\n dashMan.pin(props.dashboard).then((dash) => {\n ctx.emit('update', dash)\n })\n }\n\n function unpinDashboard() {\n dashMan.unpin(props.dashboard).then((dash) => {\n ctx.emit('update', dash)\n })\n }\n\n return {\n dashMan,\n\n pinDashboard,\n unpinDashboard,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashPinBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashPinBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashPinBtn.vue?vue&type=template&id=4a703b57&scoped=true&\"\nimport script from \"./DashPinBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashPinBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a703b57\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, reactive, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useRouterOnly } from '@/use/router'\nimport { useConfirm } from '@/use/confirm'\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Components\nimport DashboardForm from '@/metrics/DashboardForm.vue'\nimport DashboardYamlCard from '@/metrics/DashboardYamlCard.vue'\nimport DashPinBtn from '@/metrics/DashPinBtn.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardsTableRow',\n components: { DashboardForm, DashboardYamlCard, DashPinBtn },\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n headers: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const router = useRouterOnly()\n const menu = shallowRef(false)\n const activeDashboard = shallowRef()\n const editDialog = shallowRef(false)\n const yamlDialog = shallowRef(false)\n const confirm = useConfirm()\n const dashboardMan = useDashboardManager()\n\n function openDashboardYamlDialog(dashboard: Dashboard) {\n activeDashboard.value = dashboard\n yamlDialog.value = true\n }\n\n function cloneDashboard() {\n dashboardMan.clone(props.dashboard).then((dash) => {\n ctx.emit('change', dash)\n\n router.push({\n name: 'DashboardTable',\n params: { dashId: String(dash.id) },\n })\n })\n }\n\n function deleteDashboard() {\n confirm\n .open('Delete', `Do you really want to delete \"${props.dashboard.name}\" dashboard?`)\n .then(() => {\n dashboardMan.delete(props.dashboard).then(() => {\n ctx.emit('change')\n })\n })\n .catch(() => {})\n }\n\n return {\n cloneDeep,\n reactive,\n\n menu,\n yamlDialog,\n editDialog,\n activeDashboard,\n\n dashboardMan,\n cloneDashboard,\n deleteDashboard,\n openDashboardYamlDialog,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardsTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardsTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardsTableRow.vue?vue&type=template&id=407abfe2&scoped=true&\"\nimport script from \"./DashboardsTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardsTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"407abfe2\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseOrder } from '@/use/order'\n\n// Components\nimport DashboardsTableRow from '@/metrics/DashboardsTableRow.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardsTable',\n components: { DashboardsTableRow },\n\n props: {\n dashboards: {\n type: Array as PropType,\n required: true,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPage: {\n type: Number,\n default: 100,\n },\n },\n\n setup(props) {\n const headers = computed(() => {\n const headers = []\n headers.push({ text: 'Dashboard Name', value: 'name', sortable: true, align: 'start' })\n headers.push({ text: 'Updated at', value: 'updatedAt', sortable: true, align: 'start' })\n headers.push({ text: 'Actions', value: 'actions', sortable: false, align: 'end' })\n return headers\n })\n\n return { headers }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardsTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardsTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardsTable.vue?vue&type=template&id=0f32abc6&scoped=true&\"\nimport script from \"./DashboardsTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardsTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f32abc6\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef } from 'vue'\nimport { refDebounced } from '@/use/ref-debounced'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { useProject } from '@/org/use-projects'\nimport { useDashboards } from '@/metrics/use-dashboards'\n\n// Components\nimport DashboardNewMenu from '@/metrics/DashboardNewMenu.vue'\nimport DashboardsTable from '@/metrics/DashboardsTable.vue'\n\nexport default defineComponent({\n name: 'DashboardList',\n components: {\n DashboardNewMenu,\n DashboardsTable,\n },\n\n setup(props) {\n const searchInput = shallowRef('')\n const debouncedSearchInput = refDebounced(searchInput, 600)\n const pinnedFilter = shallowRef(false)\n\n const project = useProject()\n const dashboards = useDashboards(() => {\n const params: Record = {}\n\n if (debouncedSearchInput.value) {\n params.q = debouncedSearchInput.value\n }\n\n if (pinnedFilter.value) {\n params.pinned = true\n }\n\n return params\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('sort_by', 'name')\n queryParams.setDefault('sort_desc', false)\n\n dashboards.order.parseQueryParams(queryParams)\n\n searchInput.value = queryParams.string('q')\n debouncedSearchInput.flush()\n },\n toQuery() {\n const queryParams: Record = {\n q: debouncedSearchInput.value,\n ...dashboards.order.queryParams(),\n }\n\n return queryParams\n },\n })\n\n return {\n project,\n dashboards,\n searchInput,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardList.vue?vue&type=template&id=28bcd1ec&scoped=true&\"\nimport script from \"./DashboardList.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28bcd1ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.dashboards.isEmpty)?_c('v-container',{staticClass:\"fill-height\",staticStyle:{\"min-height\":\"calc(100vh - 240px)\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"8\",\"md\":\"6\",\"lg\":\"5\"}},[_c('DashboardForm',{on:{\"saved\":function($event){return _vm.dashboards.reload()}}})],1)],1)],1):[_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[(_vm.dashboard.loading)?_c('v-progress-linear',{attrs:{\"top\":\"\",\"absolute\":\"\",\"indeterminate\":\"\"}}):_vm._e(),_c('v-row',{attrs:{\"align\":\"center\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DashPicker',{attrs:{\"loading\":_vm.dashboards.loading,\"items\":_vm.dashboards.items}})],1),(_vm.dashboard.data)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DashboardMenu',{attrs:{\"dashboard\":_vm.dashboard.data},on:{\"created\":function($event){return _vm.onCreateDashboard($event)},\"updated\":function($event){_vm.dashboard.reload()\n _vm.dashboards.reload()},\"deleted\":function($event){return _vm.$router.push({ name: 'DashboardList' })}}}),_c('DashPinBtn',{attrs:{\"dashboard\":_vm.dashboard.data},on:{\"update\":_vm.onPinDash}})],1):_vm._e(),(_vm.dashboard.data)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('RelatedDashboardsTabs',{staticClass:\"ml-2\",attrs:{\"dashboard\":_vm.dashboard.data,\"dashboards\":_vm.dashboards.items}})],1):_vm._e(),_c('v-spacer')],1)],1),_c('div',{staticClass:\"border\"},[_c('v-container',{staticClass:\"py-0\",attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-row',{attrs:{\"align\":\"center\"}},[(_vm.$route.params.dashId)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-tabs',[_c('v-tab',{attrs:{\"to\":{ name: 'DashboardTable' },\"exact-path\":\"\"}},[_vm._v(\"Table\")]),_c('v-tab',{attrs:{\"to\":{ name: 'DashboardGrid' },\"exact-path\":\"\"}},[_vm._v(\"Grid\")]),_c('v-tab',{attrs:{\"to\":{ name: 'DashboardHelp' },\"exact-path\":\"\"}},[_vm._v(\"Help\")])],1)],1):_vm._e(),_c('v-spacer'),_c('portal-target',{attrs:{\"name\":\"dashboard-actions\"}}),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateRangePicker',{attrs:{\"date-range\":_vm.dateRange,\"range-days\":90}})],1)],1)],1)],1),_c('v-card',{attrs:{\"flat\":\"\",\"min-height\":\"calc(100vh - 242px)\",\"color\":\"bg--none\"}},[(_vm.dashboard.data)?_c('router-view',{attrs:{\"name\":\"tab\",\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard.data,\"table-items\":_vm.dashboard.tableItems,\"grid-rows\":_vm.dashboard.gridRows,\"grid-metrics\":_vm.dashboard.gridMetrics,\"grid-query\":_vm.dashboard.data.gridQuery},on:{\"change\":function($event){return _vm.dashboard.reload()}}}):_c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-skeleton-loader',{attrs:{\"type\":\"card,table\"}})],1)],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{attrs:{\"value\":_vm.activeDashId,\"items\":_vm.filteredItems,\"item-value\":\"id\",\"item-text\":\"name\",\"search-input\":_vm.searchInput,\"no-filter\":\"\",\"placeholder\":\"dashboard\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\",\"auto-select-first\":\"\",\"background-color\":\"bg--light-primary\"},on:{\"update:searchInput\":function($event){_vm.searchInput=$event},\"update:search-input\":function($event){_vm.searchInput=$event},\"change\":_vm.onChange},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.name)+\" \")])],1),(item.pinned)?_c('v-list-item-action',[_c('v-icon',{attrs:{\"size\":\"20\",\"title\":\"Pinned\"}},[_vm._v(\"mdi-pin\")])],1):_vm._e()]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { filter as fuzzyFilter } from 'fuzzaldrin-plus'\nimport { defineComponent, shallowRef, computed, watch, watchEffect, PropType } from 'vue'\n\n// Composables\nimport { useRouter, useRoute } from '@/use/router'\nimport { useStorage } from '@/use/local-storage'\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashPicker',\n\n props: {\n items: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const { router } = useRouter()\n const route = useRoute()\n const searchInput = shallowRef('')\n\n const lastDashId = useStorage(\n computed(() => {\n const projectId = route.value.params.projectId ?? 0\n return `last-dashboard:${projectId}`\n }),\n )\n\n const filteredItems = computed(() => {\n if (!searchInput.value) {\n return props.items\n }\n\n const index = props.items.findIndex((item) => item.name === searchInput.value)\n if (index >= 0) {\n return props.items\n }\n\n return fuzzyFilter(props.items, searchInput.value, { key: 'name' })\n })\n\n const activeDashId = computed(() => {\n if (!route.value.params.dashId) {\n return 0\n }\n return parseInt(route.value.params.dashId)\n })\n\n watchEffect(\n () => {\n if (!props.items.length) {\n return\n }\n if (!activeDashId.value) {\n redirectToLast()\n return\n }\n\n const index = props.items.findIndex((d) => d.id === activeDashId.value)\n if (index === -1) {\n redirectToLast()\n return\n }\n },\n { flush: 'post' },\n )\n\n watch(\n activeDashId,\n (dashId) => {\n if (dashId) {\n lastDashId.value = dashId\n }\n },\n { immediate: true },\n )\n\n function onChange(dashId: number) {\n const found = props.items.find((d) => d.id === dashId)\n if (found) {\n redirectTo(found)\n }\n }\n\n function redirectToLast() {\n let found = props.items.find((d) => d.id === lastDashId.value)\n if (!found) {\n found = props.items[0]\n }\n redirectTo(found)\n }\n\n function redirectTo(dash: Dashboard) {\n // Replace the current route or the Back button does not work.\n router.replace({\n name: 'DashboardShow',\n params: { dashId: String(dash.id) },\n })\n }\n\n return { searchInput, activeDashId, filteredItems, onChange }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashPicker.vue?vue&type=template&id=7400e132&scoped=true&\"\nimport script from \"./DashPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7400e132\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"loading\":_vm.dashMan.pending,\"icon\":\"\"}},on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[_c('v-dialog',{attrs:{\"max-width\":\"500px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"ripple\":\"\"}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Settings\")])],1)],1)]}}]),model:{value:(_vm.editDialog),callback:function ($$v) {_vm.editDialog=$$v},expression:\"editDialog\"}},[_c('DashboardForm',{attrs:{\"dashboard\":_vm.reactive(_vm.cloneDeep(_vm.dashboard))},on:{\"saved\":function($event){_vm.closeDialog()\n _vm.$emit('updated', $event)},\"click:cancel\":function($event){_vm.editDialog = false}}})],1),_c('v-list-item',{attrs:{\"ripple\":\"\"},on:{\"click\":function($event){return _vm.resetDashboard()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.dashboard.templateId ? 'Reset from template' : 'Reset grid layout')+\" \")])],1)],1),_c('v-dialog',{attrs:{\"max-width\":\"800px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"ripple\":\"\"}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"View YAML\")])],1)],1)]}}]),model:{value:(_vm.yamlDialog),callback:function ($$v) {_vm.yamlDialog=$$v},expression:\"yamlDialog\"}},[(_vm.yamlDialog)?_c('DashboardYamlCard',{attrs:{\"dashboard\":_vm.dashboard},on:{\"click:cancel\":function($event){_vm.yamlDialog = false}}}):_vm._e()],1),_c('v-dialog',{attrs:{\"max-width\":\"800px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-list-item',_vm._g({attrs:{\"ripple\":\"\"}},on),[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit YAML\")])],1)],1)]}}]),model:{value:(_vm.editYamlDialog),callback:function ($$v) {_vm.editYamlDialog=$$v},expression:\"editYamlDialog\"}},[(_vm.editYamlDialog)?_c('DashboardEditYamlForm',{attrs:{\"dashboard\":_vm.dashboard},on:{\"updated\":function($event){_vm.editYamlDialog = false\n _vm.$emit('updated', $event)},\"click:cancel\":function($event){_vm.editYamlDialog = false}}}):_vm._e()],1),_c('v-list-item',{attrs:{\"ripple\":\"\"},on:{\"click\":function($event){return _vm.cloneDashboard()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Clone\")])],1)],1),_c('v-list-item',{attrs:{\"ripple\":\"\"},on:{\"click\":function($event){return _vm.deleteDashboard()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.saveYaml.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.dashboard.name))]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"disabled\":!_vm.isValid,\"loading\":_vm.dashMan.pending,\"type\":\"submit\"}},[_vm._v(\" Update dashboard \")])],1),_c('v-container',[(!_vm.dash.status.hasData())?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"loading\":\"\"}})],1)],1):_c('v-row',[_c('v-col',[_c('v-sheet',[_c('v-textarea',{staticStyle:{\"max-height\":\"75vh\",\"overflow-y\":\"auto\"},attrs:{\"rows\":\"20\",\"auto-grow\":\"\",\"filled\":\"\",\"hide-details\":\"auto\",\"rules\":_vm.rules.yaml},model:{value:(_vm.yaml),callback:function ($$v) {_vm.yaml=$$v},expression:\"yaml\"}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, watch, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useSnackbar } from '@/use/snackbar'\nimport { useYamlDashboard, useDashboardManager } from '@/metrics/use-dashboards'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'DashboardEditYamlForm',\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const isValid = shallowRef(true)\n const yaml = shallowRef('')\n const rules = {\n yaml: [requiredRule],\n }\n\n const snackbar = useSnackbar()\n const route = useRoute()\n const dashMan = useDashboardManager()\n const dash = useYamlDashboard(() => {\n if (!props.dashboard.id) {\n return\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/dashboards/${props.dashboard.id}/yaml`,\n }\n })\n\n watch(\n () => dash.yaml,\n (dashYaml) => {\n yaml.value = dashYaml\n },\n { immediate: true },\n )\n\n function saveYaml() {\n dashMan.updateYaml(yaml.value).then(() => {\n snackbar.notifySuccess(`The dashboard has beed successfully updated from the YAML`)\n ctx.emit('updated')\n })\n }\n\n return {\n isValid,\n rules,\n yaml,\n dash,\n dashMan,\n saveYaml,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardEditYamlForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardEditYamlForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardEditYamlForm.vue?vue&type=template&id=97a7ea9c&scoped=true&\"\nimport script from \"./DashboardEditYamlForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardEditYamlForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"97a7ea9c\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, shallowRef, reactive, PropType } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Components\nimport DashboardForm from '@/metrics/DashboardForm.vue'\nimport DashboardYamlCard from '@/metrics/DashboardYamlCard.vue'\nimport DashboardEditYamlForm from '@/metrics/DashboardEditYamlForm.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardMenu',\n components: { DashboardForm, DashboardYamlCard, DashboardEditYamlForm },\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const confirm = useConfirm()\n\n const menu = shallowRef(false)\n const yamlDialog = shallowRef(false)\n const editYamlDialog = shallowRef(false)\n const editDialog = shallowRef(false)\n function closeDialog() {\n editDialog.value = false\n yamlDialog.value = false\n menu.value = false\n }\n\n const dashMan = useDashboardManager()\n\n function cloneDashboard() {\n dashMan.clone(props.dashboard).then((dash) => {\n ctx.emit('created', dash)\n })\n }\n\n function resetDashboard() {\n dashMan.reset(props.dashboard).then(() => {\n ctx.emit('updated')\n })\n }\n\n function deleteDashboard() {\n confirm\n .open('Delete', `Do you really want to delete \"${props.dashboard.name}\" dashboard?`)\n .then(() => {\n dashMan.delete(props.dashboard).then(() => {\n ctx.emit('deleted')\n })\n })\n .catch(() => {})\n }\n\n return {\n menu,\n yamlDialog,\n editYamlDialog,\n editDialog,\n closeDialog,\n\n dashMan,\n cloneDashboard,\n resetDashboard,\n deleteDashboard,\n\n cloneDeep,\n reactive,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardMenu.vue?vue&type=template&id=524a2fea&scoped=true&\"\nimport script from \"./DashboardMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"524a2fea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.relatedDashboards.length > 1)?_c('v-btn-toggle',{attrs:{\"group\":\"\",\"dense\":\"\",\"color\":\"primary\"}},_vm._l((_vm.relatedDashboards),function(dash){return _c('v-btn',{key:dash.id,attrs:{\"to\":{ name: 'DashboardShow', params: { dashId: dash.id } }}},[_vm._v(\" \"+_vm._s(_vm.dashName(dash.name))+\" \")])}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { orderBy, upperFirst } from 'lodash-es'\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'RelatedDashboardsTabs',\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n dashboards: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const prefix = computed(() => {\n const name = props.dashboard.name\n const i = name.indexOf(': ')\n if (i === -1) {\n return ''\n }\n return name.slice(0, i + 2)\n })\n\n const relatedDashboards = computed(() => {\n if (!prefix.value) {\n return []\n }\n\n const related: Dashboard[] = []\n\n for (let dash of props.dashboards) {\n if (dash.name.startsWith(prefix.value)) {\n related.push(dash)\n }\n }\n\n return orderBy(related, 'templateId', 'asc')\n })\n\n function dashName(name: string) {\n name = name.slice(prefix.value.length)\n return upperFirst(name)\n }\n\n return { relatedDashboards, dashName }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedDashboardsTabs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./RelatedDashboardsTabs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RelatedDashboardsTabs.vue?vue&type=template&id=2b3b143c&scoped=true&\"\nimport script from \"./RelatedDashboardsTabs.vue?vue&type=script&lang=ts&\"\nexport * from \"./RelatedDashboardsTabs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2b3b143c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useRouterOnly, useRoute } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { useAnnotations } from '@/org/use-annotations'\nimport { useDashboards, useDashboard } from '@/metrics/use-dashboards'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport DashPicker from '@/metrics/DashPicker.vue'\nimport DashboardMenu from '@/metrics/DashboardMenu.vue'\nimport DashPinBtn from '@/metrics/DashPinBtn.vue'\nimport DashboardForm from '@/metrics/DashboardForm.vue'\nimport RelatedDashboardsTabs from '@/metrics/RelatedDashboardsTabs.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'Dashboard',\n components: {\n DateRangePicker,\n DashPicker,\n DashboardMenu,\n DashPinBtn,\n DashboardForm,\n RelatedDashboardsTabs,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const router = useRouterOnly()\n const route = useRoute()\n\n useAnnotations(() => {\n return {\n ...props.dateRange.axiosParams(),\n }\n })\n\n const dashboards = useDashboards()\n const dashboard = useDashboard()\n useTitle(computed(() => `${dashboard.data?.name ?? 'Dashboard'} | Dashboard`))\n watch(\n () => dashboard.data,\n (data) => {\n if (!dashboard.data) {\n return\n }\n if (route.value.name !== 'DashboardShow') {\n return\n }\n\n if (dashboard.data.tableMetrics.length && dashboard.data.tableQuery) {\n router.push({ name: 'DashboardTable' })\n return\n }\n\n if (dashboard.gridRows.length) {\n router.push({ name: 'DashboardGrid' })\n return\n }\n\n router.push({ name: 'DashboardTable' })\n },\n )\n\n function onCreateDashboard(dash: Dashboard) {\n dashboards.reload().then(() => {\n router.replace({ name: 'DashboardShow', params: { dashId: String(dash.id) } })\n })\n }\n\n function onPinDash() {\n dashboards.reload()\n dashboard.reload()\n }\n\n return {\n dashboards,\n dashboard,\n\n onCreateDashboard,\n onPinDash,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=486fb33d&scoped=true&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dashboard.vue?vue&type=style&index=0&id=486fb33d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"486fb33d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('v-skeleton-loader',{attrs:{\"type\":\"card,table\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'DashboardLoading',\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardLoading.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardLoading.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardLoading.vue?vue&type=template&id=900a8762&scoped=true&\"\nimport script from \"./DashboardLoading.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardLoading.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"900a8762\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{attrs:{\"fluid\":_vm.$vuetify.breakpoint.lgAndDown}},[_c('portal',{attrs:{\"to\":\"dashboard-actions\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('NewGridItemMenu',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"dash-kind\":_vm.DashKind.Table},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})],1)],1),(_vm.dashboard.tableMetrics.length)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-card',{staticClass:\"py-2 px-4\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('DashQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.dashboard.tableMetrics.map((m) => m.name),\"uql\":_vm.uql}})],1)],1)],1):_vm._e(),(_vm.tableItems.length)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('GridStackCard',{attrs:{\"items\":_vm.tableItems},scopedSlots:_vm._u([{key:\"item\",fn:function({ attrs, on }){return [_c('GridItemAny',_vm._g(_vm._b({attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard}},'GridItemAny',attrs,false),{\n ...on,\n change() {\n _vm.$emit('change')\n },\n }))]}}],null,false,2994579553)})],1)],1):_vm._e(),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-card',{attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\",\"color\":\"bg--light-primary\"}},[(_vm.tableQuery.queryError)?_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-toolbar-items',_vm._g(_vm._b({},'v-toolbar-items',attrs,false),on),[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"color\":\"error\"}},[_vm._v(\"mdi-alert-circle-outline\")])],1)]}}],null,false,1651982589)},[_c('span',[_vm._v(_vm._s(_vm.tableQuery.queryError))])]):_vm._e(),_c('v-toolbar-title',{class:{ 'red--text': Boolean(_vm.tableQuery.queryError) }},[_vm._v(\" \"+_vm._s(_vm.dashboard.name)+\" \")]),_c('QuickSearch',{staticClass:\"ml-8\",model:{value:(_vm.tableQuery.searchInput),callback:function ($$v) {_vm.$set(_vm.tableQuery, \"searchInput\", $$v)},expression:\"tableQuery.searchInput\"}}),_c('v-spacer'),(_vm.dashboard.tableQuery)?_c('v-btn',{staticClass:\"primary\",attrs:{\"small\":\"\"},on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-pencil\")]),_c('span',[_vm._v(\"Edit table\")])],1):_vm._e()],1),_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.tableQuery.items.length)?_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[(_vm.attrKeysDs.items.length)?_c('GroupingToggle',{attrs:{\"loading\":_vm.tableQuery.loading || _vm.attrKeysDs.loading,\"items\":_vm.attrKeysDs.items},model:{value:(_vm.grouping),callback:function ($$v) {_vm.grouping=$$v},expression:\"grouping\"}}):_vm._e()],1),(_vm.attrKeysDs.items.length < 5)?_c('v-col',{staticClass:\"text--secondary\",attrs:{\"cols\":\"auto\"}},[_vm._v(\" Click on a row to view the Grid filtered by \"),_c('code',[_vm._v(\"group by\")]),_vm._v(\" attributes. \")]):_vm._e()],1):_vm._e(),(_vm.dashboard.tableQuery)?_c('v-row',[_c('v-col',[(_vm.tableQuery.error)?_c('ApiErrorCard',{attrs:{\"error\":_vm.tableQuery.error}}):_c('TimeseriesTable',_vm._g({attrs:{\"loading\":_vm.tableQuery.loading,\"items\":_vm.tableQuery.items,\"agg-columns\":_vm.tableQuery.aggColumns,\"grouping-columns\":_vm.tableQuery.groupingColumns,\"order\":_vm.tableQuery.order,\"axios-params\":_vm.tableQuery.axiosParams}},_vm.tableItem.listeners))],1)],1):_c('v-row',{staticClass:\"py-10\"},[_c('v-col',[_c('v-row',[_c('v-col',{staticClass:\"text-center\"},[_vm._v(\" This dashboard is empty. To add some metrics, click on the \\\"Edit table\\\" button.\"),_c('br'),_vm._v(\" If you are not familiar with Uptrace dashboards, click on the \\\"Help\\\" button. \")])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{staticClass:\"primary\",on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-pencil\")]),_c('span',[_vm._v(\"Edit table\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"to\":{ name: 'DashboardHelp' }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-help-circle-outline\")]),_c('span',[_vm._v(\"Help\")])],1)],1)],1)],1)],1)],1)],1)],1)],1),_c('DashTableFormDialog',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.reactive(_vm.cloneDeep(_vm.dashboard))},on:{\"saved\":function($event){return _vm.$emit('change')}},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}}),_c('v-dialog',{attrs:{\"fullscreen\":\"\"},model:{value:(_vm.tableItem.dialog),callback:function ($$v) {_vm.$set(_vm.tableItem, \"dialog\", $$v)},expression:\"tableItem.dialog\"}},[(_vm.tableItem.dialog && _vm.tableItem.active)?_c('DashGridForTableRow',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-rows\":_vm.gridRows,\"grid-metrics\":_vm.gridMetrics,\"table-row\":_vm.tableItem.active,\"table-grouping\":_vm.tableQuery.groupingColumns},on:{\"click:close\":function($event){_vm.tableItem.dialog = false}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('UptraceQuery',{attrs:{\"uql\":_vm.uql},scopedSlots:_vm._u([(_vm.$slots['prepend-actions'])?{key:\"prepend-actions\",fn:function(){return [_vm._t(\"prepend-actions\")]},proxy:true}:null],null,true)},[_c('DashWhereBtn',{attrs:{\"uql\":_vm.uql,\"axios-params\":_vm.axiosParams}}),_c('v-btn',{staticClass:\"v-btn--filter\",attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.uql.rawMode = !_vm.uql.rawMode}}},[_vm._v(_vm._s(_vm.uql.rawMode ? 'Cancel' : 'Edit'))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { UseUql } from '@/use/uql'\n\n// Components\nimport UptraceQuery from '@/components/UptraceQuery.vue'\nimport DashWhereBtn from '@/metrics/query/DashWhereBtn.vue'\n\nexport default defineComponent({\n name: 'DashQueryBuilder',\n components: { UptraceQuery, DashWhereBtn },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n metrics: {\n type: Array as PropType,\n required: true,\n },\n uql: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const axiosParams = computed(() => {\n if (!props.metrics.length) {\n return { _: undefined }\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.metrics,\n }\n })\n\n return {\n axiosParams,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashQueryBuilder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashQueryBuilder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashQueryBuilder.vue?vue&type=template&id=ac74afbc&scoped=true&\"\nimport script from \"./DashQueryBuilder.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashQueryBuilder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ac74afbc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"primary\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"Add\")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-menu-down\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[(_vm.dashKind === _vm.DashKind.Grid)?_c('v-list-item',{on:{\"click\":function($event){_vm.openDialog(_vm.newChart())}}},[_c('v-list-item-title',[_vm._v(\"Chart\")])],1):_vm._e(),(_vm.dashKind === _vm.DashKind.Grid)?_c('v-list-item',{on:{\"click\":function($event){_vm.openDialog(_vm.newTable())}}},[_c('v-list-item-title',[_vm._v(\"Table\")])],1):_vm._e(),(_vm.dashKind === _vm.DashKind.Grid)?_c('v-list-item',{on:{\"click\":function($event){_vm.openDialog(_vm.newHeatmap())}}},[_c('v-list-item-title',[_vm._v(\"Heatmap\")])],1):_vm._e(),(_vm.dashKind === _vm.DashKind.Grid)?_c('v-list-item',{on:{\"click\":function($event){return _vm.addRow()}}},[_c('v-list-item-title',[_vm._v(\"Row\")])],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){_vm.openDialog(_vm.newGauge())}}},[_c('v-list-item-title',[_vm._v(\"Gauge\")])],1)],1)],1),_c('v-dialog',{attrs:{\"fullscreen\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.activeGridItem)?_c('GridItemFormSwitch',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"table-grouping\":_vm.dashboard.tableGrouping,\"grid-item\":_vm.activeGridItem},on:{\"save\":function($event){_vm.dialog = false\n _vm.$emit('change')},\"click:cancel\":function($event){_vm.dialog = false}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.gridItem.type === _vm.GridItemType.Gauge)?_c('GridItemGaugeForm',_vm._g(_vm._b({},'GridItemGaugeForm',_vm.attrs,false),_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Chart)?_c('GridItemChartForm',_vm._g(_vm._b({},'GridItemChartForm',_vm.attrs,false),_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Table)?_c('GridItemTableForm',_vm._g(_vm._b({},'GridItemTableForm',_vm.attrs,false),_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Heatmap)?_c('GridItemHeatmapForm',_vm._g(_vm._b({},'GridItemHeatmapForm',_vm.attrs,false),_vm.$listeners)):_c('div',[_vm._v(\"unsupported \"+_vm._s(_vm.gridItem.type))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GridItemFormPanes',_vm._g({attrs:{\"grid-item\":_vm.gridItem},scopedSlots:_vm._u([{key:\"picker\",fn:function(){return [_c('MetricsPicker',{attrs:{\"required-attrs\":_vm.tableGrouping,\"uql\":_vm.uql},model:{value:(_vm.gridItem.params.metrics),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"metrics\", $$v)},expression:\"gridItem.params.metrics\"}})]},proxy:true},{key:\"preview\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[(!_vm.activeMetrics.length)?[_c('v-row',[_c('v-col',{staticClass:\"text-body-2\"},[_vm._v(\" Text gauges are like \"),_c('code',[_vm._v(\"sprintf(format, values)\")]),_vm._v(\". You specify a \"),_c('code',[_vm._v(\"format\")]),_vm._v(\" string with substitutions and Uptrace provides values. For example, using \"),_c('code',[_vm._v(\"${up_dbs} out of ${total_dbs} are up\")]),_vm._v(\" format string you will get \"),_c('code',[_vm._v(\"5 out of 5 dbs are up\")]),_vm._v(\" as the result. \")])],1),_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":\"\"}})],1)],1)]:[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"disabled\":!_vm.activeMetrics.length,\"show-agg\":\"\",\"show-dash-where\":\"\"}})],1)],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('GaugeCard',{attrs:{\"loading\":_vm.gaugeQuery.loading,\"grid-item\":_vm.gridItem,\"columns\":_vm.gaugeQuery.styledColumns,\"values\":_vm.gaugeQuery.values,\"preview\":\"\"}})],1)],1)]],2)]},proxy:true},{key:\"options\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('SinglePanel',{attrs:{\"title\":\"Chart options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Chart title\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.title},model:{value:(_vm.gridItem.title),callback:function ($$v) {_vm.$set(_vm.gridItem, \"title\", $$v)},expression:\"gridItem.title\"}}),_c('v-text-field',{attrs:{\"label\":\"Optional description or memo\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.gridItem.description),callback:function ($$v) {_vm.$set(_vm.gridItem, \"description\", $$v)},expression:\"gridItem.description\"}})],1),_c('SinglePanel',{attrs:{\"title\":\"Gauge\",\"expanded\":\"\"}},[_c('PanelSection',{attrs:{\"title\":\"Format string to customize gauge text\"}},[_c('v-text-field',{attrs:{\"placeholder\":\"${num_db_up} dbs up out of ${num_db_total)}\",\"hint\":\"\",\"persistent-hint\":\"\",\"filled\":\"\",\"dense\":\"\",\"clearable\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.gridItem.params.template),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"template\", $$v)},expression:\"gridItem.params.template\"}})],1),(_vm.activeMetrics.length)?_c('GaugeValuesTable',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.gaugeQuery.loading,\"columns\":_vm.gaugeQuery.styledColumns,\"values\":_vm.gaugeQuery.values}}):_vm._e()],1),_vm._l((_vm.gaugeQuery.columns),function(col){return _c('SinglePanel',{key:col.name,attrs:{\"title\":`${col.name} column`,\"expanded\":\"\"}},[_c('GaugeColumnOptionsForm',{attrs:{\"column\":_vm.gridItem.params.columnMap[col.name]}})],1)}),_c('SinglePanel',{attrs:{\"title\":\"Value mappings\",\"expanded\":\"\"}},[_c('p',[_vm._v(\"Use mappings to assign text and color to specific values, for example:\")]),_c('ul',{staticClass:\"mb-4\"},[_c('li',[_vm._v(\"0 → down (red)\")]),_c('li',[_vm._v(\"1 → up (green)\")])]),_c('v-dialog',{attrs:{\"max-width\":\"800\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"block\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\"Configure\")])]}}]),model:{value:(_vm.mappingsDialog),callback:function ($$v) {_vm.mappingsDialog=$$v},expression:\"mappingsDialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Value mappings\")])],1),_c('div',{staticClass:\"pa-4\"},[_c('ValueMappingsForm',{on:{\"click:close\":function($event){_vm.mappingsDialog = false}},model:{value:(_vm.gridItem.params.valueMappings),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"valueMappings\", $$v)},expression:\"gridItem.params.valueMappings\"}})],1)],1)],1)],1)],2)]},proxy:true}])},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs, ComputedRef } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { useWatchAxios, AxiosParamsSource } from '@/use/watch-axios'\nimport { BackendQueryInfo } from '@/use/uql'\n\n// Misc\nimport { fmt } from '@/util/fmt'\nimport { ColumnInfo, GaugeColumn, StyledGaugeColumn } from '@/metrics/types'\n\nexport function useGaugeQuery(\n axiosParamsSource: AxiosParamsSource,\n columnMap: ComputedRef>,\n) {\n const route = useRoute()\n\n const { status, loading, error, data, reload } = useWatchAxios(() => {\n const axiosParams = axiosParamsSource()\n if (!axiosParams) {\n return axiosParams\n }\n\n const tableAgg: Record = {}\n for (let colName in columnMap.value) {\n const col = columnMap.value[colName]\n tableAgg[colName] = col.aggFunc\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/gauge`,\n params: {\n ...axiosParams,\n table_agg: tableAgg,\n },\n }\n })\n\n const columns = computed((): ColumnInfo[] => {\n return data.value?.columns ?? []\n })\n\n const styledColumns = computed((): StyledGaugeColumn[] => {\n const items = columns.value.map((col) => {\n return {\n ...col,\n ...columnMap.value[col.name],\n }\n })\n return items\n })\n\n const values = computed((): Record => {\n return data.value?.values ?? {}\n })\n\n const query = computed((): BackendQueryInfo | undefined => {\n return data.value?.query\n })\n\n return proxyRefs({\n status,\n error,\n loading,\n reload,\n\n query,\n values,\n columns,\n styledColumns,\n })\n}\n\nexport function formatGauge(\n values: Record,\n columns: StyledGaugeColumn[],\n template: string,\n noData = '-',\n): string {\n if (!columns.length) {\n return noData\n }\n\n if (template) {\n for (let col of columns) {\n const val = values[col.name]\n if (val === undefined) {\n template = template.replaceAll(varName(col.name), '-')\n continue\n }\n template = template.replaceAll(varName(col.name), fmtVar(val, col.unit))\n }\n return template\n }\n\n const col = columns[0]\n const val = values[col.name]\n if (val === undefined) {\n return '-'\n }\n return fmtVar(val, col.unit)\n}\n\nfunction varName(colName: string): string {\n return '${' + colName + '}'\n}\n\nfunction fmtVar(val: any, unit: string): string {\n if (unit.startsWith('{') && unit.endsWith('}')) {\n return fmt(val)\n }\n return fmt(val, unit)\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",staticClass:\"bg--none\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit()}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"max-width\":_vm.maxWidth}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.gridItem.id ? `Edit ${_vm.gridItem.type} grid item` : `New ${_vm.gridItem.type} grid item`)+\" \")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._t(\"actions\",function(){return [_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})]})],2),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.gridItemMan.pending,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"Save\")])],1)],1),_c('splitpanes',{staticClass:\"default-theme\",staticStyle:{\"height\":\"calc(100vh - 64px)\"}},[_c('pane',{attrs:{\"size\":\"65\"}},[_c('splitpanes',{attrs:{\"horizontal\":\"\"}},[_c('pane',{attrs:{\"size\":\"30\",\"min-size\":\"10\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",staticStyle:{\"max-width\":\"920px\"},attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"picker\")],2)],1)],1)],1),_c('pane',{attrs:{\"size\":\"70\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",staticStyle:{\"max-width\":\"920px\"},attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"preview\")],2)],1)],1)],1)],1)],1),_c('pane',{attrs:{\"size\":\"35\"}},[_vm._t(\"options\")],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Splitpanes, Pane } from 'splitpanes'\nimport 'splitpanes/dist/splitpanes.css'\n\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useSnackbar } from '@/use/snackbar'\nimport { useGridItemManager } from '@/metrics/use-dashboards'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\n\n// Misc\nimport { ChartGridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemFormPanes',\n components: {\n Splitpanes,\n Pane,\n ForceReloadBtn,\n },\n\n props: {\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n maxWidth: {\n type: String,\n default: '1400px',\n },\n },\n\n setup(props, ctx) {\n const snackbar = useSnackbar()\n\n const form = shallowRef()\n const isValid = shallowRef(false)\n\n const gridItemMan = useGridItemManager()\n function submit() {\n if (!form.value.validate()) {\n return\n }\n if ('metrics' in props.gridItem.params && !props.gridItem.params.metrics.length) {\n snackbar.notifyError(`Please select a metric and click the \"Apply\" button`)\n return\n }\n gridItemMan.save(props.gridItem).then((gridItem) => {\n ctx.emit('save', gridItem)\n })\n }\n\n return {\n form,\n isValid,\n\n gridItemMan,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemFormPanes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemFormPanes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemFormPanes.vue?vue&type=template&id=6e3ec688&scoped=true&\"\nimport script from \"./GridItemFormPanes.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemFormPanes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e3ec688\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GridItemCard',_vm._g({staticClass:\"border-bottom\",style:(_vm.style),attrs:{\"grid-item\":_vm.gridItem,\"readonly\":_vm.preview,\"toolbar-color\":\"transparent\"}},_vm.$listeners),[_c('v-card',{staticClass:\"py-2 text-h5 text-center\",class:{ 'pa-6': _vm.preview },attrs:{\"flat\":\"\"}},[(_vm.gaugeHtml)?_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.gaugeHtml)}}):_c('span',[_vm._v(_vm._s(_vm.gaugeText))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\",\"outlined\":\"\"}},[_c('v-toolbar',{attrs:{\"color\":_vm.toolbarColor,\"flat\":\"\",\"height\":\"36\"}},[_c('v-toolbar-title',{staticClass:\"d-flex align-center flex-grow-1 drag-handle cursor-move\"},[_c('v-tooltip',{attrs:{\"max-width\":\"500\",\"bottom\":\"\",\"disabled\":!Boolean(_vm.columnError || _vm.gridItem.description)},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({staticClass:\"text-subtitle-2 font-weight-regular\",class:{ 'red--text text--darken-1': Boolean(_vm.columnError) }},'span',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.gridItem.title)+\" \")])]}}])},[_c('div',[_vm._v(_vm._s(_vm.columnError || _vm.gridItem.description))])])],1),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: onMenu, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"loading\":_vm.gridItemMan.pending,\"icon\":\"\",\"disabled\":_vm.readonly}},'v-btn',attrs,false),onMenu),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',[(_vm.expandable)?_c('v-list-item',{on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-eye\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"View\")])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.$emit('click:edit', _vm.gridItem)}}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-pencil\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Edit\")])],1)],1),(_vm.routeForNewMonitor)?_c('v-list-item',{attrs:{\"to\":_vm.routeForNewMonitor}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-radar\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Monitor\")])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":_vm.del}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(\"mdi-delete\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)],1)],1)],1)],1),_vm._t(\"default\",null,{\"height\":_vm.height - 44,\"wide\":false,\"on\":{\n error($event) {\n _vm.columnError = $event\n },\n }}),_c('DialogCard',{attrs:{\"max-width\":\"1200\",\"title\":_vm.gridItem.title},scopedSlots:_vm._u([(_vm.gridItem.description)?{key:\"toolbar-append\",fn:function(){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-toolbar-items',_vm._g(_vm._b({},'v-toolbar-items',attrs,false),on),[_c('v-icon',{staticClass:\"ml-2\"},[_vm._v(\"mdi-information-outline\")])],1)]}}],null,false,1801954993)},[_c('span',[_vm._v(_vm._s(_vm.gridItem.description))])])]},proxy:true}:null],null,true),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('div',{staticClass:\"pa-2 pb-4\"},[_vm._t(\"default\",null,{\"height\":500,\"wide\":\"\",\"on\":{}})],2)])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Composables\nimport { useGridItemManager } from '@/metrics/use-dashboards'\n\n// Components\nimport DialogCard from '@/components/DialogCard.vue'\n\n// Misc\nimport { GridItem, GridItemType } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemCard',\n components: { DialogCard },\n\n props: {\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n height: {\n type: Number,\n default: 0,\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n expandable: {\n type: Boolean,\n default: false,\n },\n toolbarColor: {\n type: String,\n default: 'bg--light-primary',\n },\n },\n\n setup(props, ctx) {\n const menu = shallowRef(false)\n const dialog = shallowRef(false)\n\n const columnError = shallowRef(false)\n const routeForNewMonitor = computed(() => {\n switch (props.gridItem.type) {\n case GridItemType.Chart:\n case GridItemType.Table:\n return {\n name: 'MonitorMetricNew',\n query: {\n name: props.gridItem.title,\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: props.gridItem.params.query,\n columns: JSON.stringify(props.gridItem.params.columnMap),\n },\n }\n default:\n return undefined\n }\n })\n\n const gridItemMan = useGridItemManager()\n\n function del() {\n gridItemMan.delete(props.gridItem).then(() => {\n ctx.emit('change')\n })\n }\n\n return {\n GridItemType,\n\n menu,\n dialog,\n\n columnError,\n routeForNewMonitor,\n\n gridItemMan,\n del,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemCard.vue?vue&type=template&id=3c9d00b1&scoped=true&\"\nimport script from \"./GridItemCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GridItemCard.vue?vue&type=style&index=0&id=3c9d00b1&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c9d00b1\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\nimport colors from 'vuetify/lib/util/colors'\n\n// Composables\nimport { formatGauge } from '@/metrics/use-gauges'\n\n// Components\nimport GridItemCard from '@/metrics/GridItemCard.vue'\n\n// Misc\nimport { GaugeGridItem, StyledGaugeColumn, ValueMapping, MappingOp } from '@/metrics/types'\nimport { numVerbose } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'GaugeGard',\n components: { GridItemCard },\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n columns: {\n type: Array as PropType,\n required: true,\n },\n values: {\n type: Object as PropType>,\n required: true,\n },\n preview: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const gaugeText = computed(() => {\n return formatGauge(props.values, props.columns, props.gridItem.params.template)\n })\n\n // TODO: extract to separate component\n const gaugeHtml = computed(() => {\n if (!props.gridItem.params.valueMappings.length) {\n return ''\n }\n if (!props.columns.length) {\n return ''\n }\n if (props.columns.length > 1) {\n return `can't have multiple metrics and value mappings`\n }\n\n const col = props.columns[0]\n const value = props.values[col.name]\n for (let mapping of props.gridItem.params.valueMappings) {\n if (mappingMatches(mapping, value)) {\n return `${mapping.text}`\n }\n }\n return numVerbose(value)\n })\n\n const style = computed(() => {\n return {\n 'border-bottom-color': colors.blue.darken2,\n }\n })\n\n return {\n gaugeText,\n gaugeHtml,\n style,\n }\n },\n})\n\nfunction mappingMatches(mapping: ValueMapping, value: number): boolean {\n switch (mapping.op) {\n case MappingOp.Any:\n return true\n case MappingOp.Equal:\n return value === mapping.value\n case MappingOp.Lt:\n return value < mapping.value\n case MappingOp.Lte:\n return value <= mapping.value\n case MappingOp.Gt:\n return value > mapping.value\n case MappingOp.Gte:\n return value >= mapping.value\n default:\n return false\n }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GaugeCard.vue?vue&type=template&id=ceeadcd8&scoped=true&\"\nimport script from \"./GaugeCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GaugeCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GaugeCard.vue?vue&type=style&index=0&id=ceeadcd8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ceeadcd8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"hide-default-footer\":\"\",\"no-data-text\":\"No gauges value\",\"dense\":\"\"},scopedSlots:_vm._u([{key:`item.value`,fn:function({ item }){return [_c('NumValue',{attrs:{\"value\":item.value,\"unit\":item.unit}})]}}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Misc\nimport { StyledColumnInfo } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GaugeValuesTable',\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n columns: {\n type: Array as PropType,\n required: true,\n },\n values: {\n type: Object as PropType>,\n required: true,\n },\n },\n\n setup(props) {\n const headers = [\n { text: 'Var name', value: 'name' },\n { text: 'Value', value: 'value' },\n ]\n\n const items = computed(() => {\n const items = []\n for (let col of props.columns) {\n items.push({\n name: '${' + col.name + '}',\n value: props.values[col.name],\n })\n }\n return items\n })\n\n return { headers, items }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeValuesTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeValuesTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GaugeValuesTable.vue?vue&type=template&id=78b70111&scoped=true&\"\nimport script from \"./GaugeValuesTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./GaugeValuesTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78b70111\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('PanelSection',{attrs:{\"title\":\"Unit\"}},[_c('UnitSelect',{model:{value:(_vm.column.unit),callback:function ($$v) {_vm.$set(_vm.column, \"unit\", $$v)},expression:\"column.unit\"}})],1),_c('PanelSection',{attrs:{\"title\":\"Gauge value\"}},[_c('v-select',{attrs:{\"items\":_vm.tableFuncItems,\"dense\":\"\",\"filled\":\"\",\"required\":\"\",\"rules\":_vm.rules.aggFunc,\"hide-details\":\"auto\"},model:{value:(_vm.column.aggFunc),callback:function ($$v) {_vm.$set(_vm.column, \"aggFunc\", $$v)},expression:\"column.aggFunc\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-autocomplete',{attrs:{\"value\":_vm.value,\"items\":_vm.items,\"search-input\":_vm.searchInput,\"filled\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},on:{\"update:searchInput\":function($event){_vm.searchInput=$event},\"update:search-input\":function($event){_vm.searchInput=$event},\"input\":function($event){return _vm.$emit('input', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed } from 'vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'UnitSelect',\n\n props: {\n value: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const searchInput = shallowRef('')\n\n const stdItems = computed(() => {\n const items = [\n { text: 'none', value: Unit.None },\n { text: '', value: Unit.Bytes },\n { text: '', value: Unit.Nanoseconds },\n { text: '', value: Unit.Microseconds },\n { text: '', value: Unit.Milliseconds },\n { text: '', value: Unit.Seconds },\n { text: '', value: Unit.Utilization, hint: '0 <= n <= 1' },\n { text: '', value: Unit.Percents, hint: '0 <= n <= 100%' },\n ]\n\n for (let item of items) {\n if (!item.text) {\n item.text = item.value\n }\n }\n\n return items\n })\n\n const items = computed(() => {\n const items = stdItems.value.slice()\n\n if (props.value) {\n const i = items.findIndex((item) => item.value === props.value)\n if (i === -1) {\n items.push({ text: props.value, value: props.value as Unit })\n }\n }\n\n if (searchInput.value) {\n const i = items.findIndex((item) => item.value === searchInput.value)\n if (i === -1) {\n items.unshift({ text: searchInput.value, value: searchInput.value as Unit })\n }\n }\n\n return items\n })\n\n return { searchInput, items }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UnitSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UnitSelect.vue?vue&type=template&id=31c4150b&scoped=true&\"\nimport script from \"./UnitSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./UnitSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31c4150b\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Components\nimport PanelSection from '@/components/PanelSection.vue'\nimport UnitSelect from '@/metrics/UnitSelect.vue'\n\n// Misc\nimport { tableFuncItems, GaugeColumn } from '@/metrics/types'\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'GaugeColumnOptionsForm',\n components: { PanelSection, UnitSelect },\n\n props: {\n column: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const rules = { aggFunc: [requiredRule] }\n return { rules, tableFuncItems }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeColumnOptionsForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GaugeColumnOptionsForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GaugeColumnOptionsForm.vue?vue&type=template&id=ca896850&scoped=true&\"\nimport script from \"./GaugeColumnOptionsForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GaugeColumnOptionsForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ca896850\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-row',[_c('v-col',_vm._l((_vm.mappings),function(mapping,i){return _c('ValueMappingRow',{key:i,attrs:{\"value\":mapping},on:{\"click:remove\":function($event){return _vm.removeMapping(i)}}})}),1)],1),_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{on:{\"click\":_vm.addMapping}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Add mapping \")],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:close')}}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.emitMappings}},[_vm._v(\"Update\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:remove')}}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)],1),_c('v-col',{staticClass:\"d-flex align-center\"},[_c('BtnSelectMenu',{attrs:{\"items\":_vm.mappingOpItems,\"outlined\":\"\",\"target-class\":\"mr-2\"},model:{value:(_vm.value.op),callback:function ($$v) {_vm.$set(_vm.value, \"op\", $$v)},expression:\"value.op\"}}),_c('v-text-field',{staticStyle:{\"width\":\"50px\"},attrs:{\"type\":\"number\",\"disabled\":_vm.value.op === _vm.MappingOp.Any,\"label\":\"Number\",\"single-line\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.value.value),callback:function ($$v) {_vm.$set(_vm.value, \"value\", _vm._n($$v))},expression:\"value.value\"}})],1),_c('v-col',{staticClass:\"text-h5\",attrs:{\"cols\":\"auto\"}},[_vm._v(\"→\")]),_c('v-col',[_c('v-text-field',{attrs:{\"label\":\"Text\",\"single-line\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.value.text),callback:function ($$v) {_vm.$set(_vm.value, \"text\", $$v)},expression:\"value.text\"}})],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-dialog',{attrs:{\"width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"title\":\"Click to change color\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":_vm.value.color}},[_vm._v(\"mdi-circle\")])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-color-picker',{attrs:{\"mode\":\"hexa\",\"show-swatches\":\"\",\"swatches-max-height\":\"300\"},model:{value:(_vm.value.color),callback:function ($$v) {_vm.$set(_vm.value, \"color\", $$v)},expression:\"value.color\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"OK\")])],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Components\nimport BtnSelectMenu from '@/components/BtnSelectMenu.vue'\n\n// Misc\nimport { ValueMapping, MappingOp } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'ValueMappingRow',\n components: { BtnSelectMenu },\n\n props: {\n value: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup() {\n const dialog = shallowRef(false)\n\n const mappingOpItems = [\n { text: 'any', value: MappingOp.Any },\n { text: '==', value: MappingOp.Equal },\n { text: '>', value: MappingOp.Gt },\n { text: '>=', value: MappingOp.Gte },\n { text: '<', value: MappingOp.Lt },\n { text: '<=', value: MappingOp.Lte },\n ]\n\n return { MappingOp, dialog, mappingOpItems }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ValueMappingRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ValueMappingRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ValueMappingRow.vue?vue&type=template&id=4c0710bc&scoped=true&\"\nimport script from \"./ValueMappingRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./ValueMappingRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c0710bc\",\n null\n \n)\n\nexport default component.exports","\nimport { clone } from 'lodash-es'\nimport { defineComponent, ref, watch, PropType } from 'vue'\nimport { eChart as colorScheme } from '@/util/colorscheme'\n\n// Components\nimport ValueMappingRow from '@/metrics/ValueMappingRow.vue'\n\n// Misc\nimport { emptyValueMapping, ValueMapping } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'ValueMappingsForm',\n components: { ValueMappingRow },\n\n props: {\n value: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const mappings = ref([])\n watch(\n () => props.value,\n (value) => {\n if (value.length) {\n mappings.value = clone(value)\n } else {\n mappings.value = [createValueMapping()]\n }\n },\n { immediate: true },\n )\n watch(\n () => mappings.value.length,\n (length) => {\n if (!length) {\n mappings.value = [createValueMapping()]\n }\n },\n )\n\n function addMapping() {\n mappings.value.push(createValueMapping())\n }\n\n function removeMapping(index: number) {\n mappings.value.splice(index, 1)\n }\n\n function createValueMapping() {\n const colorSet = new Set(colorScheme)\n for (let mapping of mappings.value) {\n if (mapping.color) {\n colorSet.delete(mapping.color)\n }\n }\n\n const mapping = emptyValueMapping()\n if (colorSet.size) {\n mapping.color = colorSet.values().next().value\n }\n return mapping\n }\n\n function emitMappings() {\n ctx.emit(\n 'input',\n mappings.value.filter((m) => m.value || m.text),\n )\n ctx.emit('click:close')\n }\n\n return { mappings, addMapping, removeMapping, emitMappings }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ValueMappingsForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ValueMappingsForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ValueMappingsForm.vue?vue&type=template&id=5bd206dd&scoped=true&\"\nimport script from \"./ValueMappingsForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./ValueMappingsForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5bd206dd\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, joinQuery, injectQueryStore } from '@/use/uql'\nimport { useActiveMetrics } from '@/metrics/use-metrics'\nimport { formatGauge, useGaugeQuery } from '@/metrics/use-gauges'\n\n// Components\nimport GridItemFormPanes from '@/metrics/GridItemFormPanes.vue'\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport PanelSection from '@/components/PanelSection.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport GaugeCard from '@/metrics/GaugeCard.vue'\nimport GaugeValuesTable from '@/metrics/GaugeValuesTable.vue'\nimport GaugeColumnOptionsForm from '@/metrics/GaugeColumnOptionsForm.vue'\nimport ValueMappingsForm from '@/metrics/ValueMappingsForm.vue'\n\n// Misc\nimport { requiredRule, minMaxStringLengthRule } from '@/util/validation'\nimport { updateColumnMap, emptyGaugeColumn, GaugeGridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemGaugeForm',\n components: {\n GridItemFormPanes,\n SinglePanel,\n PanelSection,\n MetricsPicker,\n MetricsQueryBuilder,\n GaugeCard,\n GaugeValuesTable,\n GaugeColumnOptionsForm,\n ValueMappingsForm,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n tableGrouping: {\n type: Array as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const mappingsDialog = shallowRef(false)\n const rules = { title: [requiredRule, minMaxStringLengthRule(0, 40)] }\n\n const uql = useUql()\n const activeMetrics = useActiveMetrics(computed(() => props.gridItem.params.metrics))\n\n const { where } = injectQueryStore()\n const gaugeQuery = useGaugeQuery(\n () => {\n if (!props.gridItem.params.metrics.length || !props.gridItem.params.query) {\n return { _: undefined }\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: joinQuery([props.gridItem.params.query, where.value]),\n }\n },\n computed(() => props.gridItem.params.columnMap),\n )\n\n const gaugeText = computed(() => {\n return formatGauge(\n gaugeQuery.values,\n gaugeQuery.styledColumns,\n props.gridItem.params.template,\n 'Add a metric first...',\n )\n })\n\n watch(\n () => props.gridItem.params.query,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n watch(\n () => uql.query,\n (query) => {\n props.gridItem.params.query = query\n },\n )\n\n watch(\n () => gaugeQuery.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n )\n watch(\n () => gaugeQuery.columns,\n (columns) => {\n updateColumnMap(props.gridItem.params.columnMap, columns, emptyGaugeColumn)\n },\n )\n\n return {\n mappingsDialog,\n\n uql,\n\n activeMetrics,\n gaugeQuery,\n gaugeText,\n\n rules,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemGaugeForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemGaugeForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemGaugeForm.vue?vue&type=template&id=8661b9a0&scoped=true&\"\nimport script from \"./GridItemGaugeForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemGaugeForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8661b9a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GridItemFormPanes',_vm._g({attrs:{\"grid-item\":_vm.gridItem},scopedSlots:_vm._u([{key:\"picker\",fn:function(){return [_c('MetricsPicker',{attrs:{\"required-attrs\":_vm.tableGrouping,\"uql\":_vm.uql},model:{value:(_vm.gridItem.params.metrics),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"metrics\", $$v)},expression:\"gridItem.params.metrics\"}})]},proxy:true},{key:\"preview\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[(!_vm.activeMetrics.length)?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":\"\"}})],1)],1):[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"show-agg\":\"\",\"show-group-by\":\"\",\"show-dash-where\":\"\"}})],1)],1),_c('v-row',[_c('v-col',[(Object.keys(_vm.gridItem.params.columnMap).length)?_c('v-row',{staticClass:\"mb-n6\"},[_c('v-col',[(_vm.gridItem.params.columnMap)?_vm._l((_vm.gridItem.params.columnMap),function(col,colName){return _c('v-chip',{key:colName,staticClass:\"ma-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('span',[_vm._v(_vm._s(colName))]),_c('UnitPicker',{attrs:{\"target-class\":\"mr-n4\"},model:{value:(col.unit),callback:function ($$v) {_vm.$set(col, \"unit\", $$v)},expression:\"col.unit\"}})],1)}):_vm._e()],2)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('LegendaryChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"chart-kind\":_vm.gridItem.params.chartKind,\"legend\":_vm.gridItem.params.legend,\"height\":300}})],1)],1)],1)],1)]],2)]},proxy:true},{key:\"options\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('SinglePanel',{attrs:{\"title\":\"Chart options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Chart title\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.title},model:{value:(_vm.gridItem.title),callback:function ($$v) {_vm.$set(_vm.gridItem, \"title\", $$v)},expression:\"gridItem.title\"}}),_c('v-text-field',{attrs:{\"label\":\"Optional description or memo\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.gridItem.description),callback:function ($$v) {_vm.$set(_vm.gridItem, \"description\", $$v)},expression:\"gridItem.description\"}}),_c('v-select',{attrs:{\"items\":_vm.chartKindItems,\"label\":\"Chart type\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.gridItem.params.chartKind),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"chartKind\", $$v)},expression:\"gridItem.params.chartKind\"}}),_c('v-checkbox',{attrs:{\"label\":\"Connect the line across null points\"},model:{value:(_vm.gridItem.params.connectNulls),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"connectNulls\", $$v)},expression:\"gridItem.params.connectNulls\"}})],1),_c('SinglePanel',{attrs:{\"title\":\"Legend\",\"expanded\":\"\"}},[_c('PanelSection',{staticClass:\"mb-4\",attrs:{\"title\":\"Legend type\"}},[_c('v-btn-toggle',{attrs:{\"color\":\"deep-purple-accent-3\",\"group\":\"\",\"dense\":\"\",\"mandatory\":\"\"},model:{value:(_vm.gridItem.params.legend.type),callback:function ($$v) {_vm.$set(_vm.gridItem.params.legend, \"type\", $$v)},expression:\"gridItem.params.legend.type\"}},[_c('v-btn',{attrs:{\"value\":_vm.LegendType.None}},[_vm._v(\"None\")]),_c('v-btn',{attrs:{\"value\":_vm.LegendType.Table}},[_vm._v(\"Table\")]),_c('v-btn',{attrs:{\"value\":_vm.LegendType.List}},[_vm._v(\"List\")])],1)],1),_c('PanelSection',{attrs:{\"title\":\"Legend placement\"}},[_c('v-btn-toggle',{attrs:{\"color\":\"deep-purple-accent-3\",\"group\":\"\",\"dense\":\"\",\"mandatory\":\"\"},model:{value:(_vm.gridItem.params.legend.placement),callback:function ($$v) {_vm.$set(_vm.gridItem.params.legend, \"placement\", $$v)},expression:\"gridItem.params.legend.placement\"}},[_c('v-btn',{attrs:{\"value\":_vm.LegendPlacement.Right}},[_vm._v(\"Right\")]),_c('v-btn',{attrs:{\"value\":_vm.LegendPlacement.Bottom}},[_vm._v(\"Bottom\")])],1)],1),_c('PanelSection',{attrs:{\"title\":\"Legend values\"}},[_c('v-select',{staticStyle:{\"width\":\"200px\"},attrs:{\"multiple\":\"\",\"items\":_vm.legendValueItems,\"filled\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.gridItem.params.legend.values),callback:function ($$v) {_vm.$set(_vm.gridItem.params.legend, \"values\", $$v)},expression:\"gridItem.params.legend.values\"}})],1)],1),_vm._l((_vm.styledTimeseries),function(ts){return _c('SinglePanel',{key:ts.id,attrs:{\"title\":`${ts.name} colum`,\"expanded\":\"\"}},[_c('TimeseriesStyleForm',{attrs:{\"chart-kind\":_vm.gridItem.params.chartKind,\"timeseries-style\":_vm.getTimeseriesStyle(ts)}})],1)})],2)]},proxy:true}])},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\",\"max-width\":_vm.width}},[_c('div',{staticClass:\"mb-4\"},[_c('v-btn',{attrs:{\"outlined\":\"\"},on:{\"click\":function($event){_vm.dialog = true}}},[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":_vm.timeseriesStyle.color,\"left\":\"\"}},[_vm._v(\"mdi-circle\")]),_c('span',[_vm._v(_vm._s(_vm.timeseriesStyle.color))])],1)],1),(_vm.showOpacity)?_c('PanelSection',{attrs:{\"title\":\"Fill opacity\"}},[_c('v-slider',{attrs:{\"min\":\"0\",\"max\":\"100\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_vm._v(_vm._s(_vm.timeseriesStyle.opacity)+\"%\")]},proxy:true}],null,false,3257080936),model:{value:(_vm.timeseriesStyle.opacity),callback:function ($$v) {_vm.$set(_vm.timeseriesStyle, \"opacity\", $$v)},expression:\"timeseriesStyle.opacity\"}})],1):_vm._e(),(_vm.showLineWidth)?_c('PanelSection',{attrs:{\"title\":\"Line width\"}},[_c('v-slider',{attrs:{\"min\":\"1\",\"max\":\"10\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_vm._v(_vm._s(_vm.timeseriesStyle.lineWidth)+\"px\")]},proxy:true}],null,false,1156173268),model:{value:(_vm.timeseriesStyle.lineWidth),callback:function ($$v) {_vm.$set(_vm.timeseriesStyle, \"lineWidth\", $$v)},expression:\"timeseriesStyle.lineWidth\"}})],1):_vm._e(),(_vm.showSymbol)?_c('PanelSection',{attrs:{\"title\":\"Symbol\"}},[_c('v-select',{attrs:{\"items\":_vm.symbolItems,\"filled\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.timeseriesStyle.symbol),callback:function ($$v) {_vm.$set(_vm.timeseriesStyle, \"symbol\", $$v)},expression:\"timeseriesStyle.symbol\"}})],1):_vm._e(),(_vm.showSymbol)?_c('PanelSection',{attrs:{\"title\":\"Symbol size\"}},[_c('v-slider',{attrs:{\"min\":\"1\",\"max\":\"16\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_vm._v(_vm._s(_vm.timeseriesStyle.symbolSize)+\"px\")]},proxy:true}],null,false,825699455),model:{value:(_vm.timeseriesStyle.symbolSize),callback:function ($$v) {_vm.$set(_vm.timeseriesStyle, \"symbolSize\", $$v)},expression:\"timeseriesStyle.symbolSize\"}})],1):_vm._e(),_c('v-dialog',{attrs:{\"width\":\"auto\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-color-picker',{attrs:{\"mode\":\"hexa\",\"show-swatches\":\"\",\"swatches-max-height\":\"300\"},model:{value:(_vm.timeseriesStyle.color),callback:function ($$v) {_vm.$set(_vm.timeseriesStyle, \"color\", $$v)},expression:\"timeseriesStyle.color\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"OK\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Components\nimport PanelSection from '@/components/PanelSection.vue'\n\n// Misc\nimport { ChartKind, TimeseriesStyle } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'TimeseriesStyleCard',\n components: { PanelSection },\n\n props: {\n chartKind: {\n type: String as PropType,\n required: true,\n },\n timeseriesStyle: {\n type: Object as PropType,\n required: true,\n },\n width: {\n type: Number,\n default: 400,\n },\n },\n\n setup(props, ctx) {\n const dialog = shallowRef(false)\n\n const showOpacity = computed(() => {\n return [ChartKind.Area, ChartKind.StackedArea].indexOf(props.chartKind) >= 0\n })\n\n const showLineWidth = computed(() => {\n return [ChartKind.Line, ChartKind.Area, ChartKind.StackedArea].indexOf(props.chartKind) >= 0\n })\n\n const showSymbol = computed(() => {\n return [ChartKind.Line, ChartKind.Area, ChartKind.StackedArea].indexOf(props.chartKind) >= 0\n })\n const symbolItems = computed(() => {\n const symbols = ['none', 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow']\n return symbols.map((symbol) => {\n return { value: symbol, text: symbol }\n })\n })\n\n return {\n dialog,\n showOpacity,\n showLineWidth,\n showSymbol,\n symbolItems,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesStyleForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesStyleForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeseriesStyleForm.vue?vue&type=template&id=321ea091&scoped=true&\"\nimport script from \"./TimeseriesStyleForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeseriesStyleForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"321ea091\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, set, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, joinQuery, injectQueryStore } from '@/use/uql'\nimport { useActiveMetrics } from '@/metrics/use-metrics'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\n\n// Components\nimport GridItemFormPanes from '@/metrics/GridItemFormPanes.vue'\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport PanelSection from '@/components/PanelSection.vue'\nimport UnitPicker from '@/components/UnitPicker.vue'\nimport LegendaryChart from '@/metrics/LegendaryChart.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport TimeseriesStyleForm from '@/metrics/TimeseriesStyleForm.vue'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\nimport {\n defaultTimeseriesStyle,\n updateColumnMap,\n assignColors,\n emptyMetricColumn,\n ChartGridItem,\n ChartKind,\n StyledTimeseries,\n TimeseriesStyle,\n LegendType,\n LegendPlacement,\n LegendValue,\n} from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemChartForm',\n components: {\n GridItemFormPanes,\n SinglePanel,\n PanelSection,\n LegendaryChart,\n UnitPicker,\n MetricsPicker,\n MetricsQueryBuilder,\n TimeseriesStyleForm,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n tableGrouping: {\n type: Array as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const uql = useUql()\n const rules = { title: [requiredRule] }\n\n const chartKindItems = computed(() => {\n return [\n { text: 'Line chart', value: ChartKind.Line },\n { text: 'Area chart', value: ChartKind.Area },\n { text: 'Stacked area', value: ChartKind.StackedArea },\n { text: 'Bar chart', value: ChartKind.Bar },\n { text: 'Stacked bar', value: ChartKind.StackedBar },\n ]\n })\n const legendValueItems = computed(() => {\n return [\n { text: 'Avg', value: LegendValue.Avg },\n { text: 'Last', value: LegendValue.Last },\n { text: 'Min', value: LegendValue.Min },\n { text: 'Max', value: LegendValue.Max },\n ]\n })\n\n const activeMetrics = useActiveMetrics(computed(() => props.gridItem.params.metrics))\n\n const { where } = injectQueryStore()\n const timeseries = useTimeseries(() => {\n if (!props.gridItem.params.metrics.length || !props.gridItem.params.query) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: joinQuery([props.gridItem.params.query, where.value]),\n }\n })\n\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n computed(() => props.gridItem.params.columnMap),\n computed(() => props.gridItem.params.timeseriesMap),\n )\n const currentTimeseries = shallowRef()\n const activeTimeseries = computed(() => {\n if (currentTimeseries.value) {\n return currentTimeseries.value\n }\n return styledTimeseries.value\n })\n\n watch(\n () => props.gridItem.params.query,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n\n watch(\n () => uql.query,\n (query) => {\n props.gridItem.params.query = query\n },\n )\n\n watch(\n () => timeseries.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n { immediate: true },\n )\n\n watch(\n () => timeseries.columns,\n (columns) => {\n updateColumnMap(props.gridItem.params.columnMap, columns, emptyMetricColumn)\n assignColors(props.gridItem.params.columnMap, columns)\n },\n )\n\n function getTimeseriesStyle(ts: StyledTimeseries): TimeseriesStyle {\n if (!(ts.name in props.gridItem.params.timeseriesMap)) {\n set(props.gridItem.params.timeseriesMap, ts.name, {\n ...defaultTimeseriesStyle(),\n color: ts.color,\n })\n }\n return props.gridItem.params.timeseriesMap[ts.name]\n }\n\n return {\n LegendType,\n LegendPlacement,\n\n uql,\n\n rules,\n chartKindItems,\n legendValueItems,\n\n activeMetrics,\n timeseries,\n styledTimeseries,\n currentTimeseries,\n activeTimeseries,\n\n getTimeseriesStyle,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemChartForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemChartForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemChartForm.vue?vue&type=template&id=05cc085a&scoped=true&\"\nimport script from \"./GridItemChartForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemChartForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05cc085a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GridItemFormPanes',_vm._g({attrs:{\"grid-item\":_vm.gridItem},scopedSlots:_vm._u([{key:\"picker\",fn:function(){return [_c('MetricsPicker',{attrs:{\"required-attrs\":_vm.tableGrouping,\"uql\":_vm.uql,\"auto-grouping\":\"\"},model:{value:(_vm.gridItem.params.metrics),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"metrics\", $$v)},expression:\"gridItem.params.metrics\"}})]},proxy:true},{key:\"preview\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[(!_vm.activeMetrics.length)?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"height\":\"400\",\"boilerplate\":\"\"}})],1)],1):[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"show-agg\":\"\",\"show-group-by\":\"\",\"show-dash-where\":\"\"}})],1)],1),_c('v-row',[_c('v-col',[(Object.keys(_vm.gridItem.params.columnMap).length)?_c('v-row',{staticClass:\"mb-n6\"},[_c('v-col',{attrs:{\"cols\":\"auto\"}},_vm._l((_vm.gridItem.params.columnMap),function(col,colName){return _c('v-chip',{key:colName,staticClass:\"ma-1\",attrs:{\"outlined\":\"\",\"label\":\"\"}},[_c('span',[_vm._v(_vm._s(colName))]),_c('UnitPicker',{attrs:{\"target-class\":\"mr-n4\"},model:{value:(col.unit),callback:function ($$v) {_vm.$set(col, \"unit\", $$v)},expression:\"col.unit\"}})],1)}),1)],1):_vm._e(),_c('v-row',[_c('v-col',[_c('GridItemTable',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-item\":_vm.gridItem},on:{\"update:query\":_vm.onTableQuery,\"update:columns\":_vm.onTableColumns}})],1)],1)],1)],1)]],2)]},proxy:true},{key:\"options\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('SinglePanel',{attrs:{\"title\":\"Chart options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Chart title\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.title},model:{value:(_vm.gridItem.title),callback:function ($$v) {_vm.$set(_vm.gridItem, \"title\", $$v)},expression:\"gridItem.title\"}}),_c('v-text-field',{attrs:{\"label\":\"Optional description or memo\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.gridItem.description),callback:function ($$v) {_vm.$set(_vm.gridItem, \"description\", $$v)},expression:\"gridItem.description\"}}),_c('PanelSection',{attrs:{\"title\":\"Items per page\"}},[_c('v-slider',{attrs:{\"min\":\"3\",\"max\":\"20\",\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_vm._v(_vm._s(_vm.gridItem.params.itemsPerPage))]},proxy:true}]),model:{value:(_vm.gridItem.params.itemsPerPage),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"itemsPerPage\", $$v)},expression:\"gridItem.params.itemsPerPage\"}})],1),_c('v-checkbox',{attrs:{\"label\":\"Dense table\"},model:{value:(_vm.gridItem.params.denseTable),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"denseTable\", $$v)},expression:\"gridItem.params.denseTable\"}})],1)],1)]},proxy:true}])},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"px-2\"},[_c('TimeseriesTable',{attrs:{\"loading\":_vm.tableQuery.loading,\"items\":_vm.tableQuery.items,\"items-per-page\":_vm.gridItem.params.itemsPerPage,\"agg-columns\":_vm.tableQuery.aggColumns,\"grouping-columns\":_vm.tableQuery.groupingColumns,\"order\":_vm.tableQuery.order,\"axios-params\":_vm.tableQuery.axiosParams,\"dense\":_vm.gridItem.params.denseTable},on:{\"current-items\":function($event){return _vm.$emit('ready')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"v-data-table--narrow\",attrs:{\"loading\":_vm.loading,\"headers\":_vm.headers,\"items\":_vm.items,\"items-per-page\":_vm.itemsPerPage,\"hide-default-footer\":_vm.items.length <= 5,\"sort-by\":_vm.order.column,\"sort-desc\":_vm.order.desc,\"must-sort\":\"\",\"footer-props\":{ disableItemsPerPage: true },\"dense\":_vm.dense},on:{\"update:sortBy\":function($event){return _vm.$set(_vm.order, \"column\", $event)},\"update:sort-by\":[function($event){return _vm.$set(_vm.order, \"column\", $event)},function($event){_vm.$nextTick(() => (_vm.order.desc = true))}],\"update:sortDesc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"update:sort-desc\":function($event){return _vm.$set(_vm.order, \"desc\", $event)},\"current-items\":function($event){_vm.currentItems = $event\n _vm.$emit('current-items', $event)}},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"pa-4\"},[_c('div',{staticClass:\"mb-4\"},[_vm._v(\"The query result is empty.\")])])]},proxy:true},{key:\"item\",fn:function({ item }){return [_c('TimeseriesTableRow',{class:{ 'cursor-pointer': 'click' in _vm.$listeners },attrs:{\"axios-params\":_vm.axiosParams,\"query\":item._query},on:{\"click\":function($event){return _vm.$emit('click', item)}},scopedSlots:_vm._u([{key:\"default\",fn:function({ metrics, time, emptyValue }){return [_vm._l((_vm.groupingColumns),function(attrKey){return [(attrKey === _vm.AttrKey.spanGroupId)?_c('td',{key:attrKey},[_c('router-link',{attrs:{\"to\":_vm.routeForSpanList(item[_vm.AttrKey.spanGroupdId])}},[_vm._v(_vm._s(item[_vm.AttrKey.displayName] || item[_vm.AttrKey.spanGroupId]))])],1):_c('td',{key:attrKey},[_vm._v(_vm._s(item[attrKey]))])]}),_vm._l((_vm.aggColumns),function(col){return _c('td',{key:col.name},[(col.unit === _vm.Unit.Time)?_c('DateValue',{attrs:{\"value\":item[col.name]}}):(col.sparklineDisabled)?_c('NumValue',{staticClass:\"text-subtitle-2\",attrs:{\"value\":item[col.name] || 0,\"unit\":col.unit}}):_c('div',{staticClass:\"d-flex align-center text-subtitle-2\"},[_c('SparklineChart',{staticClass:\"mr-2\",attrs:{\"name\":col.name,\"line\":(metrics[col.name] && metrics[col.name].value) || emptyValue,\"time\":time,\"unit\":col.unit,\"color\":col.color}}),_c('NumValue',{attrs:{\"value\":item[col.name] || 0,\"unit\":col.unit}})],1)],1)})]}}],null,true)})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{on:{\"click\":function($event){return _vm.$emit('click')}}},[_vm._t(\"default\",null,{\"rowId\":_vm.rowId,\"metrics\":_vm.metrics,\"emptyValue\":_vm.timeseries.emptyValue,\"time\":_vm.timeseries.time})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Compsables\nimport { joinQuery } from '@/use/uql'\nimport { useTimeseries } from '@/metrics/use-query'\n\n// Misc\nimport { Timeseries } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'TimeseriesTableRow',\n\n props: {\n axiosParams: {\n type: Object as PropType>,\n default: undefined,\n },\n query: {\n type: String,\n required: true,\n },\n },\n\n setup(props) {\n const timeseries = useTimeseries(\n () => {\n if (!props.axiosParams) {\n return props.axiosParams\n }\n\n let query = props.axiosParams.query\n if (props.query) {\n query = joinQuery([props.axiosParams.query, props.query])\n }\n\n return {\n ...props.axiosParams,\n query,\n }\n },\n { cache: true },\n )\n\n const metrics = computed(() => {\n const metrics: Record = {}\n for (let ts of timeseries.items) {\n metrics[ts.metric] = ts\n }\n return metrics\n })\n\n return { rowId: Symbol(), timeseries, metrics }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeseriesTableRow.vue?vue&type=template&id=109fd506&scoped=true&\"\nimport script from \"./TimeseriesTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeseriesTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"109fd506\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { UseOrder } from '@/use/order'\nimport { exploreAttr } from '@/use/uql'\n\n// Components\nimport SparklineChart from '@/components/SparklineChart.vue'\nimport TimeseriesTableRow from '@/metrics/TimeseriesTableRow.vue'\n\n// Misc\nimport { StyledColumnInfo, TableRowData } from '@/metrics/types'\nimport { AttrKey } from '@/models/otel'\nimport { Unit } from '@/util/fmt'\n\nexport default defineComponent({\n name: 'TimeseriesTable',\n components: { SparklineChart, TimeseriesTableRow },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n itemsPerPage: {\n type: Number,\n default: 15,\n },\n aggColumns: {\n type: Array as PropType,\n required: true,\n },\n groupingColumns: {\n type: Array as PropType,\n required: true,\n },\n order: {\n type: Object as PropType,\n required: true,\n },\n axiosParams: {\n type: Object as PropType>,\n default: undefined,\n },\n dense: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const headers = computed(() => {\n const headers = []\n for (let colName of props.groupingColumns) {\n headers.push({ text: colName, value: colName, sortable: true })\n }\n for (let col of props.aggColumns) {\n headers.push({ text: col.name, value: col.name, sortable: true, align: 'start' })\n }\n return headers\n })\n\n function routeForSpanList(groupId: string) {\n const query = exploreAttr(AttrKey.spanGroupId, true)\n return {\n name: 'SpanList',\n query: {\n query: `${query} | where ${AttrKey.spanGroupId} = ${groupId}`,\n },\n }\n }\n\n return {\n Unit,\n AttrKey,\n\n headers,\n\n routeForSpanList,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeseriesTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeseriesTable.vue?vue&type=template&id=b5aba27c&scoped=true&\"\nimport script from \"./TimeseriesTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeseriesTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b5aba27c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { joinQuery, injectQueryStore } from '@/use/uql'\nimport { useTableQuery } from '@/metrics/use-query'\n\n// Components\nimport TimeseriesTable from '@/metrics/TimeseriesTable.vue'\n\n// Misc\nimport { Dashboard, TableGridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemTable',\n components: {\n TimeseriesTable,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const { where } = injectQueryStore()\n const tableQuery = useTableQuery(\n () => {\n if (!props.gridItem.params.metrics.length || !props.gridItem.params.query) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n time_offset: props.dashboard.timeOffset,\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: joinQuery([props.gridItem.params.query, where.value]),\n }\n },\n computed(() => props.gridItem.params.columnMap),\n )\n\n watch(\n () => tableQuery.status,\n (status) => {\n if (status.isResolved()) {\n ctx.emit('ready')\n }\n },\n )\n watch(\n () => tableQuery.queryError,\n (error) => {\n ctx.emit('error', error)\n },\n )\n\n watch(\n () => tableQuery.query,\n (query) => {\n if (query) {\n ctx.emit('update:query', query)\n }\n },\n )\n watch(\n () => tableQuery.columns,\n (columns) => {\n ctx.emit('update:columns', columns)\n },\n )\n\n return {\n tableQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemTable.vue?vue&type=template&id=be8d6f9a&scoped=true&\"\nimport script from \"./GridItemTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"be8d6f9a\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, set, del, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, BackendQueryInfo } from '@/use/uql'\nimport { useActiveMetrics } from '@/metrics/use-metrics'\n\n// Components\nimport GridItemFormPanes from '@/metrics/GridItemFormPanes.vue'\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport PanelSection from '@/components/PanelSection.vue'\nimport UnitPicker from '@/components/UnitPicker.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport GridItemTable from '@/metrics/GridItemTable.vue'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\nimport { Dashboard, TableGridItem, ColumnInfo } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemTableForm',\n components: {\n GridItemFormPanes,\n SinglePanel,\n PanelSection,\n UnitPicker,\n MetricsPicker,\n MetricsQueryBuilder,\n GridItemTable,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n tableGrouping: {\n type: Array as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const uql = useUql()\n\n const rules = { title: [requiredRule] }\n const activeMetrics = useActiveMetrics(computed(() => props.gridItem.params.metrics))\n\n watch(\n () => props.gridItem.params.query,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n\n watch(\n () => uql.query,\n (query) => {\n props.gridItem.params.query = query\n },\n )\n\n function onTableQuery(query: BackendQueryInfo) {\n uql.setQueryInfo(query)\n }\n\n function onTableColumns(columns: ColumnInfo[]) {\n const unused = new Set(Object.keys(props.gridItem.params.columnMap))\n\n for (let col of columns) {\n if (col.isGroup) {\n continue\n }\n unused.delete(col.name)\n if (col.name in props.gridItem.params.columnMap) {\n continue\n }\n set(props.gridItem.params.columnMap, col.name, {\n unit: col.unit,\n })\n }\n\n for (let colName of unused.values()) {\n del(props.gridItem.params.columnMap, colName)\n }\n }\n\n return {\n uql,\n\n rules,\n\n activeMetrics,\n onTableColumns,\n onTableQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemTableForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemTableForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemTableForm.vue?vue&type=template&id=e0ee8ca8&scoped=true&\"\nimport script from \"./GridItemTableForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemTableForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e0ee8ca8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GridItemFormPanes',_vm._g({attrs:{\"grid-item\":_vm.gridItem},scopedSlots:_vm._u([{key:\"picker\",fn:function(){return [_c('v-container',{staticClass:\"py-16\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-autocomplete',{staticStyle:{\"min-width\":\"600px\"},attrs:{\"items\":_vm.metrics.items,\"item-text\":\"name\",\"item-value\":\"name\",\"label\":\"Histogram metric\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.metric,\"hide-details\":\"auto\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-content',[_c('v-list-item-title',[_c('span',[_vm._v(_vm._s(item.name))]),_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"small\":\"\",\"title\":\"Instrument\"}},[_vm._v(_vm._s(item.instrument))]),(item.unit)?_c('v-chip',{staticClass:\"ml-2\",attrs:{\"label\":\"\",\"small\":\"\",\"title\":\"Unit\"}},[_vm._v(_vm._s(item.unit))]):_vm._e()],1),_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(item.description)+\" \")])],1)]}}]),model:{value:(_vm.gridItem.params.metric),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"metric\", $$v)},expression:\"gridItem.params.metric\"}})],1)],1)],1)]},proxy:true},{key:\"preview\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[(!_vm.activeMetrics.length)?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":\"\"}})],1)],1):[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"disabled\":!_vm.activeMetrics.length,\"show-dash-where\":\"\"}})],1)],1),_c('v-row',[_c('v-col',[_c('HeatmapChart',{attrs:{\"loading\":_vm.heatmapQuery.loading,\"resolved\":_vm.heatmapQuery.status.isResolved(),\"unit\":_vm.gridItem.params.unit,\"x-axis\":_vm.heatmapQuery.xAxis,\"y-axis\":_vm.heatmapQuery.yAxis,\"data\":_vm.heatmapQuery.data}})],1)],1)]],2)]},proxy:true},{key:\"options\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('SinglePanel',{attrs:{\"title\":\"Chart options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Chart title\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.title},model:{value:(_vm.gridItem.title),callback:function ($$v) {_vm.$set(_vm.gridItem, \"title\", $$v)},expression:\"gridItem.title\"}}),_c('v-text-field',{attrs:{\"label\":\"Optional description or memo\",\"filled\":\"\",\"dense\":\"\"},model:{value:(_vm.gridItem.description),callback:function ($$v) {_vm.$set(_vm.gridItem, \"description\", $$v)},expression:\"gridItem.description\"}}),_c('v-select',{attrs:{\"label\":\"Metric unit\",\"items\":_vm.unitItems,\"filled\":\"\",\"dense\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.gridItem.params.unit),callback:function ($$v) {_vm.$set(_vm.gridItem.params, \"unit\", $$v)},expression:\"gridItem.params.unit\"}})],1)],1)]},proxy:true}])},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"element-resize\",rawName:\"v-element-resize\"}],staticClass:\"heatmap\",on:{\"resize\":_vm.onResize}},[_c('div',{style:({ maxWidth: _vm.chart.width + 'px', margin: 'auto' })},[(!_vm.chart.option)?[(_vm.resolved)?_c('v-card',{staticClass:\"d-flex justify-center align-center\",attrs:{\"height\":_vm.chart.height,\"flat\":\"\"}},[_c('div',{staticClass:\"text-h3 grey--text text--lighten-2\"},[_vm._v(\"NO DATA\")])]):_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":!_vm.loading}})]:_c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.chart.height,\"option\":_vm.chart.option},model:{value:(_vm.echart),callback:function ($$v) {_vm.echart=$$v},expression:\"echart\"}})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport * as echarts from 'echarts'\nimport { defineComponent, shallowRef, computed, PropType } from 'vue'\n\n// Components\nimport EChart, { EChartProps } from '@/components/EChart.vue'\n\n// Misc\nimport { num } from '@/util/fmt/num'\nimport { datetime, toLocal } from '@/util/fmt/date'\nimport { createFormatter, createShortFormatter } from '@/util/fmt'\nimport { baseChartConfig, EChartsOption, HistogramBin, HeatmapPoint } from '@/util/chart'\n\nexport default defineComponent({\n name: 'HeatmapChart',\n components: { EChart },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n resolved: {\n type: Boolean,\n default: false,\n },\n unit: {\n type: String,\n default: '',\n },\n xAxis: {\n type: Array as PropType,\n required: true,\n },\n yAxis: {\n type: Array as PropType,\n required: true,\n },\n data: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const echart = shallowRef()\n const itemSize = shallowRef(10)\n\n const chart = computed(() => {\n const width = itemSize.value * (props.xAxis.length || 60)\n const height = itemSize.value * (props.yAxis.length || 16)\n const chart: Partial = {\n width: width + 70,\n height: height + 50,\n }\n\n if (!props.data.length) {\n return chart\n }\n\n const conf = baseChartConfig()\n heatmapChart(conf)\n\n conf.grid.push({\n top: 15,\n left: 50,\n right: 20,\n height,\n })\n\n const fmt = createFormatter(props.unit)\n conf.tooltip.push({\n appendToBody: true,\n formatter(param: any) {\n const data = param.data\n const x = props.xAxis[data[0]]\n const y = props.yAxis[data[1]]\n const count = data[2]\n\n const ss = []\n ss.push(`${num(count)} occurrences`)\n ss.push(`${fmt(y[0])} - ${fmt(y[1])}`)\n ss.push(`${datetime(x)}`)\n const s = ss.join('
')\n return `
${s}= 14 ? 2 : 1.5\n conf.xAxis.push({\n type: 'category',\n data: props.xAxis,\n offset: itemPadding,\n axisTick: { alignWithLabel: true },\n axisLabel: {\n interval: 10,\n formatter(value: string) {\n const dt = toLocal(new Date(value))\n return echarts.time.format(dt, '{HH}:{mm}\\n{MM}-{dd}', true)\n },\n },\n })\n\n const fmtShort = createShortFormatter(props.unit)\n const yAxisData = props.yAxis.map((v) => {\n return fmtShort(v[0])\n })\n\n conf.yAxis.push({\n type: 'category',\n data: yAxisData,\n offset: 2 * itemPadding,\n axisTick: { alignWithLabel: true },\n })\n\n if (props.data.length) {\n let minCount = Number.MAX_VALUE\n let maxCount = 0\n\n for (let point of props.data) {\n const count = point[2]\n if (count < minCount) {\n minCount = count\n }\n if (count > maxCount) {\n maxCount = count\n }\n }\n\n conf.visualMap = {\n show: false,\n min: minCount,\n max: maxCount,\n seriesIndex: [0],\n }\n }\n\n conf.series.push({\n name: 'Heatmap',\n type: 'heatmap',\n data: props.data,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: itemPadding,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n })\n }\n\n function onResize(event: any) {\n const width = event.detail.width\n itemSize.value = width > 800 ? 14 : 10\n }\n\n return {\n echart,\n chart,\n\n onResize,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HeatmapChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HeatmapChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HeatmapChart.vue?vue&type=template&id=7003ac5c&scoped=true&\"\nimport script from \"./HeatmapChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./HeatmapChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7003ac5c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, joinQuery, injectQueryStore } from '@/use/uql'\nimport { useMetrics, useActiveMetrics } from '@/metrics/use-metrics'\nimport { useHeatmapQuery } from '@/metrics/use-query'\n\n// Components\nimport GridItemFormPanes from '@/metrics/GridItemFormPanes.vue'\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport HeatmapChart from '@/components/HeatmapChart.vue'\n\n// Misc\nimport { UNITS } from '@/util/fmt'\nimport { requiredRule } from '@/util/validation'\nimport { HeatmapGridItem, Instrument } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemHeatmapForm',\n components: { GridItemFormPanes, SinglePanel, MetricsQueryBuilder, HeatmapChart },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const rules = { metric: [requiredRule], title: [requiredRule] }\n\n const uql = useUql()\n const { where } = injectQueryStore()\n const activeMetrics = useActiveMetrics(\n computed(() => {\n if (!props.gridItem.params.metric) {\n return []\n }\n return [\n {\n name: props.gridItem.params.metric,\n alias: props.gridItem.params.metric,\n query: joinQuery([props.gridItem.params.query, where.value]),\n },\n ]\n }),\n )\n\n const unitItems = computed(() => {\n return UNITS.map((unit) => {\n return { value: unit, text: unit || 'none' }\n })\n })\n\n const metrics = useMetrics(() => {\n return { instrument: Instrument.Histogram }\n })\n\n watch(\n () => props.gridItem.params.metric,\n (metricName) => {\n const metric = metrics.items.find((metric) => metric.name === metricName)\n if (metric) {\n props.gridItem.params.unit = metric.unit\n }\n },\n )\n\n const heatmapQuery = useHeatmapQuery(() => {\n if (!props.gridItem.params.metric) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.gridItem.params.metric,\n alias: props.gridItem.params.metric,\n query: props.gridItem.params.query,\n }\n })\n\n watch(\n () => props.gridItem.params.query,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n watch(\n () => uql.query,\n (query) => {\n props.gridItem.params.query = query\n },\n )\n\n watch(\n () => heatmapQuery.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n )\n\n return {\n Instrument,\n\n rules,\n unitItems,\n\n metrics,\n heatmapQuery,\n\n uql,\n activeMetrics,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemHeatmapForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemHeatmapForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemHeatmapForm.vue?vue&type=template&id=91393ffa&scoped=true&\"\nimport script from \"./GridItemHeatmapForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemHeatmapForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"91393ffa\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useDateRangeFrom, UseDateRange } from '@/use/date-range'\n\n// Components\nimport GridItemGaugeForm from '@/metrics/GridItemGaugeForm.vue'\nimport GridItemChartForm from '@/metrics/GridItemChartForm.vue'\nimport GridItemTableForm from '@/metrics/GridItemTableForm.vue'\nimport GridItemHeatmapForm from '@/metrics/GridItemHeatmapForm.vue'\n\n// Misc\nimport { Dashboard, GridItem, GridItemType } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemFormSwitch',\n components: {\n GridItemGaugeForm,\n GridItemChartForm,\n GridItemTableForm,\n GridItemHeatmapForm,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n tableGrouping: {\n type: Array as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const internalDateRange = useDateRangeFrom(props.dateRange)\n const attrs = computed(() => {\n return {\n dateRange: internalDateRange,\n dashboard: props.dashboard,\n tableGrouping: props.tableGrouping,\n gridItem: props.gridItem,\n }\n })\n return { GridItemType, attrs }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemFormSwitch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemFormSwitch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemFormSwitch.vue?vue&type=template&id=9284214c&scoped=true&\"\nimport script from \"./GridItemFormSwitch.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemFormSwitch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9284214c\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, reactive, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useGridRowManager } from '@/metrics/use-dashboards'\n\n// Components\nimport GridItemFormSwitch from '@/metrics/GridItemFormSwitch.vue'\n\n// Misc\nimport {\n emptyBaseGridItem,\n defaultChartLegend,\n Dashboard,\n DashKind,\n GridItem,\n GridItemType,\n GaugeGridItem,\n ChartGridItem,\n TableGridItem,\n HeatmapGridItem,\n ChartKind,\n} from '@/metrics/types'\n\nexport default defineComponent({\n name: 'NewGridItemMenu',\n components: { GridItemFormSwitch },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n dashKind: {\n type: String as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const menu = shallowRef(false)\n const gridRowMan = useGridRowManager()\n\n function addRow() {\n gridRowMan.create({ title: 'Row title', expanded: true }).then(() => {\n ctx.emit('change')\n })\n }\n\n function newGauge(): GaugeGridItem {\n return reactive({\n ...emptyBaseGridItem(),\n\n dashId: props.dashboard.id,\n dashKind: props.dashKind,\n\n type: GridItemType.Gauge,\n params: {\n metrics: [],\n query: '',\n columnMap: {},\n template: '',\n valueMappings: [],\n },\n })\n }\n\n function newChart(): ChartGridItem {\n return reactive({\n ...emptyBaseGridItem(),\n\n dashId: props.dashboard.id,\n dashKind: props.dashKind,\n\n type: GridItemType.Chart,\n params: {\n chartKind: ChartKind.Line,\n metrics: [],\n query: '',\n columnMap: {},\n timeseriesMap: {},\n connectNulls: false,\n legend: defaultChartLegend(),\n },\n })\n }\n\n function newTable(): TableGridItem {\n return reactive({\n ...emptyBaseGridItem(),\n\n dashId: props.dashboard.id,\n dashKind: props.dashKind,\n\n type: GridItemType.Table,\n params: {\n metrics: [],\n query: '',\n columnMap: {},\n itemsPerPage: 5,\n denseTable: false,\n },\n })\n }\n\n function newHeatmap(): HeatmapGridItem {\n return reactive({\n ...emptyBaseGridItem(),\n\n dashId: props.dashboard.id,\n dashKind: props.dashKind,\n\n type: GridItemType.Heatmap,\n params: {\n metric: '',\n unit: '',\n query: '',\n },\n })\n }\n\n const dialog = shallowRef(false)\n const activeGridItem = shallowRef()\n function openDialog(gridItem: GridItem) {\n activeGridItem.value = gridItem\n dialog.value = true\n }\n\n return {\n DashKind,\n\n menu,\n\n addRow,\n newGauge,\n newChart,\n newTable,\n newHeatmap,\n\n dialog,\n activeGridItem,\n openDialog,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewGridItemMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NewGridItemMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NewGridItemMenu.vue?vue&type=template&id=39037e2d&scoped=true&\"\nimport script from \"./NewGridItemMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./NewGridItemMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39037e2d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-slide-group',{attrs:{\"value\":_vm.value,\"multiple\":\"\",\"center-active\":\"\",\"show-arrows\":\"\"},on:{\"change\":function($event){return _vm.onChange($event)}}},_vm._l((_vm.items),function(item,i){return _c('v-slide-item',{key:item.value,attrs:{\"value\":item.value},scopedSlots:_vm._u([{key:\"default\",fn:function({ active, toggle }){return [_c('v-btn',{staticClass:\"text-transform-none\",class:{ 'ml-1': i > 0 },attrs:{\"input-value\":active,\"active-class\":\"light-blue white--text\",\"small\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":toggle}},[_vm._v(\" \"+_vm._s(item.text)+\" \")])]}}],null,true)})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { Item } from '@/use/datasource'\n\nexport default defineComponent({\n name: 'GroupingToggle',\n\n props: {\n loading: {\n type: Boolean,\n required: true,\n },\n value: {\n type: Array as PropType,\n required: true,\n },\n items: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n function onChange(value: string[]) {\n if (!props.loading) {\n ctx.emit('input', value)\n }\n }\n\n return { onChange }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupingToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupingToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GroupingToggle.vue?vue&type=template&id=43160cea&scoped=true&\"\nimport script from \"./GroupingToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./GroupingToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43160cea\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"value\":_vm.value,\"fullscreen\":\"\"},on:{\"input\":function($event){return _vm.$emit('input', $event)}}},[(_vm.value)?_c('DashTableForm',{attrs:{\"date-range\":_vm.internalDateRange,\"dashboard\":_vm.dashboard},on:{\"saved\":function($event){_vm.$emit('input', false)\n _vm.$emit('saved')},\"click:cancel\":function($event){return _vm.$emit('input', false)}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('DashTableFormPanes',_vm._g({attrs:{\"dashboard\":_vm.dashboard},scopedSlots:_vm._u([{key:\"picker\",fn:function(){return [_c('MetricsPicker',{attrs:{\"uql\":_vm.uql,\"auto-grouping\":\"\"},model:{value:(_vm.dashboard.tableMetrics),callback:function ($$v) {_vm.$set(_vm.dashboard, \"tableMetrics\", $$v)},expression:\"dashboard.tableMetrics\"}})]},proxy:true},{key:\"preview\",fn:function(){return [(!_vm.activeMetrics.length)?_c('v-row',[_c('v-col',[_c('v-skeleton-loader',{attrs:{\"type\":\"table\",\"boilerplate\":!_vm.tableQuery.loading}})],1)],1):[_c('v-row',[_c('v-col',[_c('MetricsQueryBuilder',{attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.activeMetrics,\"uql\":_vm.uql,\"show-agg\":\"\",\"show-group-by\":\"\",\"show-dash-where\":\"\",\"disabled\":!_vm.activeMetrics.length}})],1)],1),_c('v-row',[_c('v-col',[_c('TimeseriesTable',{attrs:{\"loading\":_vm.tableQuery.loading,\"items\":_vm.tableQuery.items,\"agg-columns\":_vm.tableQuery.aggColumns,\"grouping-columns\":_vm.tableQuery.groupingColumns,\"order\":_vm.tableQuery.order,\"axios-params\":_vm.tableQuery.axiosParams}})],1)],1)]]},proxy:true},{key:\"options\",fn:function(){return [_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":\"Chart options\",\"expanded\":\"\"}},[_c('v-text-field',{attrs:{\"label\":\"Dashboard name\",\"filled\":\"\",\"dense\":\"\",\"rules\":_vm.rules.name},model:{value:(_vm.dashboard.name),callback:function ($$v) {_vm.$set(_vm.dashboard, \"name\", $$v)},expression:\"dashboard.name\"}})],1)],1)],1),_vm._l((_vm.tableQuery.aggColumns),function(col){return _c('v-row',{key:col.name},[_c('v-col',[_c('SinglePanel',{attrs:{\"title\":col.name,\"expanded\":\"\"}},[_c('TableColumnOptionsForm',{attrs:{\"column\":_vm.dashboard.tableColumnMap[col.name]}})],1)],1)],1)})],2)]},proxy:true}])},_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",staticClass:\"bg--none\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit()}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"max-width\":_vm.maxWidth}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-toolbar-title',[_vm._v(\" Edit table dashboard \")]),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_vm._t(\"actions\",function(){return [_c('ForceReloadBtn',{attrs:{\"small\":\"\"}})]})],2),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"loading\":_vm.dashMan.pending,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"Save\")])],1)],1),_c('splitpanes',{staticClass:\"default-theme\",staticStyle:{\"height\":\"calc(100vh - 64px)\"}},[_c('pane',{attrs:{\"size\":\"70\"}},[_c('splitpanes',{attrs:{\"horizontal\":\"\"}},[_c('pane',{attrs:{\"size\":\"30\",\"min-size\":\"10\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",staticStyle:{\"max-width\":\"920px\"},attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"picker\")],2)],1)],1)],1),_c('pane',{attrs:{\"size\":\"70\"}},[_c('v-container',{staticClass:\"mx-auto fill-height\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_vm._t(\"preview\")],2)],1)],1)],1)],1)],1),_c('pane',{attrs:{\"size\":\"30\"}},[_vm._t(\"options\")],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Splitpanes, Pane } from 'splitpanes'\nimport 'splitpanes/dist/splitpanes.css'\n\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Components\nimport ForceReloadBtn from '@/components/ForceReloadBtn.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashTableFormPanes',\n components: {\n Splitpanes,\n Pane,\n ForceReloadBtn,\n },\n\n props: {\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n maxWidth: {\n type: String,\n default: '1700px',\n },\n },\n\n setup(props, ctx) {\n const form = shallowRef()\n const isValid = shallowRef(false)\n\n const dashMan = useDashboardManager()\n function submit() {\n if (!form.value.validate()) {\n return\n }\n\n dashMan.updateTable(props.dashboard).then((dash) => {\n ctx.emit('saved', dash)\n })\n }\n\n return {\n form,\n isValid,\n\n dashMan,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableFormPanes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableFormPanes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashTableFormPanes.vue?vue&type=template&id=2eff229c&scoped=true&\"\nimport script from \"./DashTableFormPanes.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashTableFormPanes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2eff229c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"mb-4\"},[_c('v-dialog',{attrs:{\"width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"outlined\":\"\",\"small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"size\":\"24\",\"color\":_vm.column.color,\"left\":\"\"}},[_vm._v(\"mdi-circle\")]),_c('span',[_vm._v(_vm._s(_vm.column.color))])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-color-picker',{attrs:{\"mode\":\"hexa\",\"show-swatches\":\"\",\"swatches-max-height\":\"300\"},model:{value:(_vm.column.color),callback:function ($$v) {_vm.$set(_vm.column, \"color\", $$v)},expression:\"column.color\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"OK\")])],1)],1)],1)],1)],1)],1),_c('PanelSection',{attrs:{\"title\":\"Unit\"}},[_c('UnitSelect',{model:{value:(_vm.column.unit),callback:function ($$v) {_vm.$set(_vm.column, \"unit\", $$v)},expression:\"column.unit\"}})],1),_c('PanelSection',{attrs:{\"title\":\"Table value\"}},[_c('v-select',{attrs:{\"items\":_vm.tableFuncItems,\"dense\":\"\",\"filled\":\"\",\"required\":\"\",\"rules\":_vm.rules.aggFunc,\"hide-details\":\"auto\"},model:{value:(_vm.column.aggFunc),callback:function ($$v) {_vm.$set(_vm.column, \"aggFunc\", $$v)},expression:\"column.aggFunc\"}})],1),_c('v-checkbox',{attrs:{\"label\":\"Omit sparkline\"},model:{value:(_vm.column.sparklineDisabled),callback:function ($$v) {_vm.$set(_vm.column, \"sparklineDisabled\", $$v)},expression:\"column.sparklineDisabled\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Components\nimport PanelSection from '@/components/PanelSection.vue'\nimport UnitSelect from '@/metrics/UnitSelect.vue'\n\n// Misc\nimport { tableFuncItems, TableColumn } from '@/metrics/types'\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'TableColumnOptionsForm',\n components: { PanelSection, UnitSelect },\n\n props: {\n column: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const dialog = shallowRef(false)\n const rules = { aggFunc: [requiredRule] }\n return { dialog, rules, tableFuncItems }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TableColumnOptionsForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./TableColumnOptionsForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableColumnOptionsForm.vue?vue&type=template&id=173f1fa4&scoped=true&\"\nimport script from \"./TableColumnOptionsForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableColumnOptionsForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"173f1fa4\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql } from '@/use/uql'\nimport { useActiveMetrics } from '@/metrics/use-metrics'\nimport { useTableQuery } from '@/metrics/use-query'\n\n// Components\nimport DashTableFormPanes from '@/metrics/DashTableFormPanes.vue'\nimport SinglePanel from '@/components/SinglePanel.vue'\nimport MetricsPicker from '@/metrics/MetricsPicker.vue'\nimport MetricsQueryBuilder from '@/metrics/query/MetricsQueryBuilder.vue'\nimport TimeseriesTable from '@/metrics/TimeseriesTable.vue'\nimport TableColumnOptionsForm from '@/metrics/TableColumnOptionsForm.vue'\n\n// Misc\nimport { updateColumnMap, assignColors, emptyTableColumn, Dashboard } from '@/metrics/types'\nimport { requiredRule } from '@/util/validation'\n\nexport default defineComponent({\n name: 'DashTableForm',\n components: {\n DashTableFormPanes,\n SinglePanel,\n MetricsPicker,\n MetricsQueryBuilder,\n TimeseriesTable,\n TableColumnOptionsForm,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const rules = { name: [requiredRule] }\n\n const uql = useUql()\n const activeMetrics = useActiveMetrics(computed(() => props.dashboard.tableMetrics))\n\n const tableQuery = useTableQuery(\n () => {\n if (!props.dashboard.tableQuery || !props.dashboard.tableMetrics.length) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.dashboard.tableMetrics.map((m) => m.name),\n alias: props.dashboard.tableMetrics.map((m) => m.alias),\n query: props.dashboard.tableQuery,\n }\n },\n computed(() => props.dashboard.tableColumnMap),\n )\n\n watch(\n () => tableQuery.aggColumns,\n (aggColumns) => {\n updateColumnMap(props.dashboard.tableColumnMap, aggColumns, emptyTableColumn)\n assignColors(props.dashboard.tableColumnMap, aggColumns)\n },\n )\n\n watch(\n () => props.dashboard.tableQuery,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n\n watch(\n () => uql.query,\n (query) => {\n props.dashboard.tableQuery = query\n },\n )\n watch(\n () => tableQuery.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n { immediate: true },\n )\n\n return {\n rules,\n\n uql,\n activeMetrics,\n tableQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashTableForm.vue?vue&type=template&id=7b9e2f7e&scoped=true&\"\nimport script from \"./DashTableForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashTableForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b9e2f7e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useDateRangeFrom, UseDateRange } from '@/use/date-range'\n\n// Components\nimport DashTableForm from '@/metrics/DashTableForm.vue'\n\n// Misc\nimport { Dashboard } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashTableFormDialog',\n components: { DashTableForm },\n\n props: {\n value: {\n type: Boolean,\n required: true,\n },\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const internalDateRange = useDateRangeFrom(props.dateRange)\n return { internalDateRange }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableFormDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashTableFormDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashTableFormDialog.vue?vue&type=template&id=1f6af458&scoped=true&\"\nimport script from \"./DashTableFormDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashTableFormDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f6af458\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"color\":\"bg--none\",\"min-height\":\"100vh\"}},[_c('v-card',{attrs:{\"flat\":\"\",\"color\":\"bg--light-primary\"}},[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"flat\":\"\",\"color\":\"transparent\",\"max-width\":_vm.dashboard.gridMaxWidth}},[_c('v-toolbar',{attrs:{\"flat\":\"\",\"color\":\"transparent\"}},[_c('v-toolbar-items',[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:close')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.dashboard.name))]),_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('DateRangePicker',{attrs:{\"date-range\":_vm.internalDateRange,\"range-days\":90}})],1)],1)],1)],1),(_vm.gridRows.length)?_c('DashGrid',{attrs:{\"date-range\":_vm.internalDateRange,\"dashboard\":_vm.dashboard,\"grid-rows\":_vm.gridRows,\"grid-metrics\":_vm.gridMetrics,\"grid-query\":_vm.gridQuery,\"table-row\":_vm.tableRow}}):_c('v-container',{staticClass:\"py-16\",staticStyle:{\"max-width\":\"800px\"}},[_c('v-row',[_c('v-col',[_vm._v(\" This grid dashboard does not contain any charts. You can add some in the \"),_c('router-link',{attrs:{\"to\":{ name: 'DashboardGrid' }}},[_vm._v(\"Grid\")]),_vm._v(\" tab. \")],1)],1),_c('v-row',[_c('v-col',[_vm._v(\" Grid dashboards are used together with table dashboards. Each row in the table dashboard leads to the same grid dashboard filtered by \"),_c('code',[_vm._v(\"group by\")]),_vm._v(\" attributes from the table row, for example, \"),_c('code',[_vm._v(\"where host.name = ${host} and service.name = ${service}.\")]),_vm._v(\". \")])],1),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"to\":{ name: 'DashboardGrid' },\"color\":\"primary\"}},[_vm._v(\" Configure grid \")])],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"to\":{ name: 'DashboardHelp' }}},[_vm._v(\" Learn more \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto\",attrs:{\"flat\":\"\",\"color\":\"transparent\",\"max-width\":_vm.dashboard.gridMaxWidth}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[(_vm.gridRows.length)?_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',[_c('v-card',{staticClass:\"py-2 px-4\",attrs:{\"outlined\":\"\",\"rounded\":\"lg\"}},[_c('DashQueryBuilder',{staticClass:\"mb-1\",attrs:{\"date-range\":_vm.dateRange,\"metrics\":_vm.gridMetrics,\"uql\":_vm.uql},scopedSlots:_vm._u([{key:\"prepend-actions\",fn:function(){return [(_vm.isGridQueryDirty)?_c('v-btn',{staticClass:\"mr-4\",attrs:{\"loading\":_vm.dashMan.pending,\"small\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.saveGridQuery()}}},[_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_c('span',[_vm._v(\"Save\")])],1):_vm._e()]},proxy:true}],null,false,3123696044)})],1)],1)],1):_vm._e(),(!_vm.gridRows.length)?_c('v-row',{attrs:{\"dense\":\"\"}},_vm._l((6),function(i){return _c('v-col',{key:i,attrs:{\"cols\":\"6\"}},[_c('v-skeleton-loader',{attrs:{\"type\":\"image\",\"boilerplate\":\"\"}})],1)}),1):_vm._e(),_vm._l((_vm.gridRows),function(row){return _c('v-row',{key:row.id,attrs:{\"dense\":\"\"}},[_c('v-col',[_c('GridRowCard',{attrs:{\"row\":row},on:{\"change\":function($event){return _vm.$emit('change')}},scopedSlots:_vm._u([{key:\"item\",fn:function({ attrs, on }){return [_c('GridItemAny',_vm._g(_vm._b({attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-query\":_vm.gridQuery}},'GridItemAny',attrs,false),on))]}}],null,true)})],1)],1)})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{attrs:{\"flat\":\"\",\"color\":_vm.expanded && _vm.gridRow.items.length ? 'transparent' : 'bg--foreground'}},[_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('div',{staticClass:\"d-flex align-center\",staticStyle:{\"height\":\"32px\"}},[_c('div',{staticClass:\"text-subtitle-1 font-weight-medium cursor-pointer\",on:{\"click\":function($event){return _vm.toggle()}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(_vm._s(_vm.expanded ? 'mdi-chevron-down' : 'mdi-chevron-right'))]),_c('span',[_vm._v(_vm._s(_vm.row.title))])],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(hover),expression:\"hover\"}],staticClass:\"ml-3\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":\"Edit the row\"},on:{\"click\":function($event){return _vm.openDialog()}}},[_c('v-icon',[_vm._v(\"mdi-pencil-outline\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.gridRowMan.pending,\"icon\":\"\",\"title\":\"Delete the row\"},on:{\"click\":function($event){return _vm.deleteRow()}}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1)],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(hover),expression:\"hover\"}],staticClass:\"ml-3\"},[_c('v-btn',{attrs:{\"loading\":_vm.gridRowMan.pending,\"disabled\":_vm.row.index === 0,\"icon\":\"\",\"title\":\"Move the row up\"},on:{\"click\":function($event){return _vm.moveUp()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-up\")])],1),_c('v-btn',{attrs:{\"loading\":_vm.gridRowMan.pending,\"icon\":\"\",\"title\":\"Move the row down\"},on:{\"click\":function($event){return _vm.moveDown()}}},[_c('v-icon',[_vm._v(\"mdi-arrow-down\")])],1)],1)])]}}])}),(_vm.expanded)?[_c('GridStackCard',{attrs:{\"items\":_vm.gridItems,\"row-id\":_vm.row.id,\"row-index\":_vm.row.index},scopedSlots:_vm._u([{key:\"item\",fn:function({ attrs, on }){return [_vm._t(\"item\",null,null,{ attrs, on: { ...on, change: _vm.gridRow.reload } })]}}],null,true)})]:_vm._e(),_c('DialogCard',{attrs:{\"max-width\":\"800\",\"title\":\"Edit grid row\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('GridRowForm',{attrs:{\"row\":_vm.reactive(_vm.cloneDeep(_vm.row))},on:{\"save\":function($event){_vm.$emit('change')\n _vm.dialog = false},\"click:cancel\":function($event){_vm.dialog = false}}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"gridStackEl\",staticClass:\"grid-stack\"},_vm._l((_vm.rowItems),function(item){return _c('div',{key:item.id,staticClass:\"grid-stack-item\",attrs:{\"id\":`gs-item-${item.id}`,\"gs-id\":item.id,\"gs-w\":item.width,\"gs-h\":item.height,\"gs-x\":item.xAxis,\"gs-y\":item.yAxis,\"gs-auto-position\":_vm.gsAutoPosition}},[_c('div',{staticClass:\"grid-stack-item-content\"},[_vm._t(\"item\",null,null,{\n attrs: { gridItem: item, height: _vm.itemHeight(item) },\n on: {\n ready() {\n _vm.resizeItem(item)\n },\n },\n })],2)])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport 'gridstack/dist/gridstack.min.css'\nimport {\n GridStack,\n GridStackOptions,\n GridStackWidget,\n GridStackNode,\n GridItemHTMLElement,\n Utils,\n} from 'gridstack'\nimport axios from 'axios'\n\nimport {\n defineComponent,\n shallowRef,\n ref,\n set,\n del,\n computed,\n watch,\n onMounted,\n onBeforeUnmount,\n PropType,\n} from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\n\n// Misc\nimport { GridItem, GridItemType, GridItemPos } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridStackCard',\n\n props: {\n items: {\n type: Array as PropType,\n required: true,\n },\n rowId: {\n type: Number,\n default: null,\n },\n rowIndex: {\n type: Number,\n default: 0,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n\n const gridStackEl = shallowRef()\n let gridStack: GridStack | undefined\n const danglingEls = new Set()\n\n const rowItems = computed(() => {\n const rowId = props.rowId ?? 0\n return props.items.filter((item) => {\n return item.rowId === rowId\n })\n })\n\n const heightByItemId = ref>({})\n const cellHeight = 10\n function itemHeight(gridItem: GridItem): number {\n const height = heightByItemId.value[gridItem.id]\n if (height) {\n return height * cellHeight\n }\n return gridItem.height * cellHeight\n }\n\n //------------------------------------------------------------------------------\n\n function saveItemsLayout(items: GridStackNode[]) {\n const layout: GridItemPos[] = []\n\n for (let node of items) {\n const id = parseInt(node.id!, 10)\n if (!id) {\n continue\n }\n\n layout.push({\n id,\n width: node.w || 0,\n height: node.h || 0,\n xAxis: node.x || 0,\n yAxis: node.y || 0,\n })\n }\n\n const { projectId, dashId } = route.value.params\n const url = `/internal/v1/metrics/${projectId}/dashboards/${dashId}/grid/layout`\n return axios\n .request({\n method: 'PUT',\n url,\n data: {\n items: layout,\n rowId: props.rowId,\n },\n })\n .then(() => {\n return layout\n })\n }\n\n //------------------------------------------------------------------------------\n\n const gsAutoPosition = computed(() => {\n const auto = rowItems.value.every((item) => item.xAxis === 0 && item.yAxis === 0)\n return auto\n })\n\n const gridStackOptions = computed((): GridStackOptions => {\n const options = {\n animate: false,\n //column: 24,\n cellHeight,\n columnOpts: { columnMax: 24, breakpoints: [{ w: 960, c: 1 }] },\n margin: 3,\n minRow: 8,\n draggable: {\n handle: '.drag-handle',\n },\n resizable: { handles: 'se,sw' },\n acceptWidgets: true,\n }\n return options\n })\n\n onMounted(() => {\n watch(gridStackOptions, updateGridStack, { immediate: true })\n watch(() => rowItems.value, updateGridStack)\n watch(() => props.rowIndex, updateGridStack)\n })\n\n onBeforeUnmount(() => {\n cleanup()\n })\n\n function updateGridStack() {\n cleanup()\n\n gridStack = GridStack.init(gridStackOptions.value, gridStackEl.value)\n setTimeout(() => {\n gridStack?.setAnimation(true)\n }, 1000)\n\n const items = gridStack.getGridItems()\n for (let el of items) {\n const node = el.gridstackNode\n if (!node) {\n continue\n }\n\n const id = parseInt(node.id!, 10)\n const found = rowItems.value.find((item) => item.id === id)\n if (found) {\n const opts: GridStackWidget = {\n w: found.width,\n h: found.height,\n }\n if (!gsAutoPosition.value) {\n opts.x = found.xAxis\n opts.y = found.yAxis\n }\n switch (found.type) {\n case GridItemType.Gauge:\n case GridItemType.Heatmap:\n case GridItemType.Table:\n opts.sizeToContent = true\n }\n gridStack.update(el, opts)\n }\n }\n\n gridStack.on('added', (_event: unknown, items: GridStackNode[]) => {\n for (let node of items) {\n const id = parseInt(node.id!, 10)\n set(heightByItemId.value, id, node.h)\n if (node.el) {\n danglingEls.add(node.el)\n }\n }\n saveItemsLayout(items)\n })\n gridStack.on('removed', (_event: unknown, items: GridStackNode[]) => {\n for (let node of items) {\n const id = parseInt(node.id!, 10)\n del(heightByItemId.value, id)\n if (node.el) {\n danglingEls.delete(node.el)\n }\n }\n })\n gridStack.on('change', (_event: unknown, items: GridStackNode[]) => {\n for (let node of items) {\n const id = parseInt(node.id!, 10)\n set(heightByItemId.value, id, node.h)\n }\n if (!gridStack || gridStack.getColumn() <= 1) {\n return\n }\n saveItemsLayout(items)\n })\n }\n\n function cleanup() {\n if (!gridStack) {\n return\n }\n\n gridStack.setAnimation(false)\n gridStack.destroy(false)\n gridStack = undefined\n\n for (const el of danglingEls) {\n el.remove()\n }\n danglingEls.clear()\n }\n\n function resizeItem(item: GridItem) {\n setTimeout(() => {\n if (!gridStack) {\n return\n }\n\n const el = Utils.getElement(`#gs-item-${item.id}`) as GridItemHTMLElement\n if (!el) {\n return\n }\n\n const node = el.gridstackNode\n if (!node || !node.sizeToContent) {\n return\n }\n\n gridStack.resizeToContent(el)\n }, 250)\n }\n\n return {\n rowItems,\n\n gsAutoPosition,\n gridStackEl,\n\n itemHeight,\n resizeItem,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridStackCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridStackCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridStackCard.vue?vue&type=template&id=63289b73&scoped=true&\"\nimport script from \"./GridStackCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridStackCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63289b73\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit()}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"mt-4 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Row title\")]),_c('v-col',{attrs:{\"cols\":\"9\"}},[_c('v-text-field',{attrs:{\"hint\":\"Concise title that describes the row\",\"persistent-hint\":\"\",\"dense\":\"\",\"filled\":\"\",\"rules\":_vm.rules.title,\"hide-details\":\"auto\"},model:{value:(_vm.row.title),callback:function ($$v) {_vm.$set(_vm.row, \"title\", $$v)},expression:\"row.title\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{staticClass:\"mt-4 text--secondary\",attrs:{\"cols\":\"3\"}},[_vm._v(\"Optional description\")]),_c('v-col',{attrs:{\"cols\":\"9\"}},[_c('v-text-field',{attrs:{\"hint\":\"Optional description or memo\",\"persistent-hint\":\"\",\"dense\":\"\",\"filled\":\"\",\"hide-details\":\"auto\"},model:{value:(_vm.row.description),callback:function ($$v) {_vm.$set(_vm.row, \"description\", $$v)},expression:\"row.description\"}})],1)],1),_c('v-row',{attrs:{\"dense\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"3\"}}),_c('v-col',[_c('v-checkbox',{attrs:{\"label\":\"Expand this row by default\"},model:{value:(_vm.row.expanded),callback:function ($$v) {_vm.$set(_vm.row, \"expanded\", $$v)},expression:\"row.expanded\"}})],1)],1),_c('v-row',[_c('v-spacer'),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('click:cancel')}}},[_vm._v(\"Cancel\")]),_c('v-btn',{staticClass:\"primary\",attrs:{\"loading\":_vm.gridRowMan.pending,\"disabled\":!_vm.isValid},on:{\"click\":function($event){return _vm.submit()}}},[_vm._v(\"Update\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\n// Composables\nimport { useGridRowManager } from '@/metrics/use-dashboards'\n\n// Misc\nimport { requiredRule } from '@/util/validation'\nimport { GridRow } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridRowForm',\n\n props: {\n row: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const form = shallowRef()\n const isValid = shallowRef(false)\n const rules = { title: [requiredRule] }\n\n const gridRowMan = useGridRowManager()\n function submit() {\n if (!form.value.validate()) {\n return\n }\n gridRowMan.save(props.row).then(() => {\n ctx.emit('save')\n })\n }\n\n return {\n form,\n isValid,\n rules,\n\n gridRowMan,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridRowForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridRowForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridRowForm.vue?vue&type=template&id=76452420&scoped=true&\"\nimport script from \"./GridRowForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridRowForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76452420\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, shallowRef, reactive, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { useRoute } from '@/use/router'\nimport { injectForceReload } from '@/use/force-reload'\nimport { useConfirm } from '@/use/confirm'\nimport { useGridRow, useGridRowManager } from '@/metrics/use-dashboards'\n\n// Components\nimport DialogCard from '@/components/DialogCard.vue'\nimport GridStackCard from '@/metrics/GridStackCard.vue'\nimport GridRowForm from '@/metrics/GridRowForm.vue'\n\n// Misc\nimport { GridRow } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridRowCard',\n components: { DialogCard, GridStackCard, GridRowForm },\n\n props: {\n row: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n\n const expanded = shallowRef(false)\n function toggle() {\n expanded.value = !expanded.value\n }\n watch(\n () => props.row.expanded,\n (expandedValue) => {\n expanded.value = expandedValue\n },\n { immediate: true },\n )\n\n const forceReload = injectForceReload()\n const gridRow = useGridRow(() => {\n if (!expanded.value) {\n return null\n }\n\n const { projectId, dashId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/dashboards/${dashId}/rows/${props.row.id}`,\n params: {\n ...forceReload.params,\n },\n }\n })\n watch(\n () => props.row,\n () => {\n gridRow.reload()\n },\n { flush: 'sync' },\n )\n\n const gridItems = computed(() => {\n if (gridRow.status.hasData()) {\n return gridRow.items\n }\n return props.row.items\n })\n\n const confirm = useConfirm()\n const gridRowMan = useGridRowManager()\n function deleteRow() {\n confirm.open('Delete', `Do you really want to delete the \"${props.row.title}\" row?`).then(\n () => {\n gridRowMan.delete(props.row).then(() => {\n ctx.emit('change')\n })\n },\n () => {},\n )\n }\n function moveUp() {\n gridRowMan.moveUp(props.row).then(() => {\n ctx.emit('change')\n })\n }\n function moveDown() {\n gridRowMan.moveDown(props.row).then(() => {\n ctx.emit('change')\n })\n }\n\n const dialog = shallowRef(false)\n function openDialog() {\n dialog.value = true\n }\n\n return {\n gridRow,\n gridItems,\n\n expanded,\n toggle,\n\n dialog,\n openDialog,\n\n gridRowMan,\n deleteRow,\n moveUp,\n moveDown,\n\n cloneDeep,\n reactive,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridRowCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridRowCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridRowCard.vue?vue&type=template&id=1874ebfa&scoped=true&\"\nimport script from \"./GridRowCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridRowCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1874ebfa\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('GridItemSwitch',_vm._g(_vm._b({on:{\"click:edit\":function($event){_vm.activeGridItem = _vm.reactive(_vm.cloneDeep(_vm.gridItem))\n _vm.dialog = true}}},'GridItemSwitch',_vm.$props,false),_vm.$listeners)),_c('v-dialog',{attrs:{\"fullscreen\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.activeGridItem)?_c('GridItemFormSwitch',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"table-grouping\":_vm.dashboard.tableGrouping,\"grid-item\":_vm.activeGridItem},on:{\"save\":function($event){_vm.dialog = false\n _vm.$emit('change')},\"click:cancel\":function($event){_vm.dialog = false}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"frag\",rawName:\"v-frag\"}]},[(_vm.gridItem.type === _vm.GridItemType.Gauge)?_c('GridItemGauge',_vm._g({attrs:{\"date-range\":_vm.dateRange,\"grid-item\":_vm.gridItem,\"height\":_vm.height}},_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Chart)?_c('GridItemCard',_vm._g({attrs:{\"grid-item\":_vm.gridItem,\"height\":_vm.height,\"expandable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ height, wide, on }){return [_c('GridItemChart',_vm._g({attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-item\":_vm.gridItem,\"height\":height,\"wide\":wide}},{ ..._vm.$listeners, ...on }))]}}])},_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Table)?_c('GridItemCard',_vm._g({attrs:{\"grid-item\":_vm.gridItem,\"height\":_vm.height,\"expandable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ height, wide, on }){return [_c('GridItemTable',_vm._g({attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-item\":_vm.gridItem,\"height\":height,\"wide\":wide}},{ ..._vm.$listeners, ...on }))]}}])},_vm.$listeners)):(_vm.gridItem.type === _vm.GridItemType.Heatmap)?_c('GridItemCard',_vm._g({attrs:{\"grid-item\":_vm.gridItem,\"height\":_vm.height,\"expandable\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ height, wide, on }){return [_c('GridItemHeatmap',_vm._g({attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-item\":_vm.gridItem,\"height\":height,\"wide\":wide}},{ ..._vm.$listeners, ...on }))]}}])},_vm.$listeners)):_c('div',[_vm._v(\"unsupported \"+_vm._s(_vm.gridItem.type))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('GaugeCard',{attrs:{\"loading\":_vm.gaugeQuery.loading,\"grid-item\":_vm.gridItem,\"columns\":_vm.gaugeQuery.styledColumns,\"values\":_vm.gaugeQuery.values,\"column-map\":_vm.gridItem.params.columnMap,\"show-edit\":\"\"},on:{\"click:edit\":function($event){return _vm.$emit('click:edit', $event)},\"change\":function($event){return _vm.$emit('change', $event)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { joinQuery, injectQueryStore } from '@/use/uql'\nimport { useGaugeQuery } from '@/metrics/use-gauges'\n\n// Components\nimport GaugeCard from '@/metrics/GaugeCard.vue'\n\n// Misc\nimport { GaugeGridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemGauge',\n components: { GaugeCard },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const { where } = injectQueryStore()\n const gaugeQuery = useGaugeQuery(\n () => {\n if (!props.gridItem.params.metrics.length || !props.gridItem.params.query) {\n return { _: undefined }\n }\n\n return {\n ...props.dateRange.axiosParams(),\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: joinQuery([props.gridItem.params.query, where.value]),\n }\n },\n computed(() => props.gridItem.params.columnMap),\n )\n\n watch(\n () => gaugeQuery.status,\n (status) => {\n if (status.isResolved()) {\n ctx.emit('ready')\n }\n },\n )\n watch(\n () => gaugeQuery.error,\n (error) => {\n ctx.emit('error', error)\n },\n )\n\n return { gaugeQuery }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemGauge.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemGauge.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemGauge.vue?vue&type=template&id=4e8f8f24&scoped=true&\"\nimport script from \"./GridItemGauge.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemGauge.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e8f8f24\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('LegendaryChart',{attrs:{\"loading\":_vm.timeseries.loading,\"resolved\":_vm.timeseries.status.isResolved(),\"timeseries\":_vm.styledTimeseries,\"time\":_vm.timeseries.time,\"height\":_vm.height,\"chart-kind\":_vm.gridItem.params.chartKind,\"connect-nulls\":_vm.gridItem.params.connectNulls,\"legend\":_vm.legend}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { joinQuery, injectQueryStore } from '@/use/uql'\nimport { useTimeseries, useStyledTimeseries } from '@/metrics/use-query'\n\n// Components\nimport LegendaryChart from '@/metrics/LegendaryChart.vue'\n\n// Misc\nimport {\n defaultChartLegend,\n Dashboard,\n ChartGridItem,\n ChartLegend,\n LegendType,\n LegendPlacement,\n LegendValue,\n} from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemChart',\n components: {\n LegendaryChart,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n wide: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props, ctx) {\n const legend = computed((): ChartLegend => {\n if (props.wide) {\n return {\n type: LegendType.Table,\n placement: LegendPlacement.Bottom,\n values: [LegendValue.Avg, LegendValue.Last, LegendValue.Min, LegendValue.Max],\n maxLength: 150,\n }\n }\n return props.gridItem.params.legend ?? defaultChartLegend()\n })\n\n const { where } = injectQueryStore()\n const timeseries = useTimeseries(() => {\n if (!props.gridItem.params.metrics.length || !props.gridItem.params.query) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n time_offset: props.dashboard.timeOffset,\n metric: props.gridItem.params.metrics.map((m) => m.name),\n alias: props.gridItem.params.metrics.map((m) => m.alias),\n query: joinQuery([props.gridItem.params.query, where.value]),\n min_interval: props.dashboard.minInterval,\n }\n })\n\n watch(\n () => timeseries.error,\n (error) => {\n ctx.emit('error', error)\n },\n { immediate: true },\n )\n\n const styledTimeseries = useStyledTimeseries(\n computed(() => timeseries.items),\n computed(() => props.gridItem.params.columnMap),\n computed(() => props.gridItem.params.timeseriesMap),\n )\n\n return {\n legend,\n timeseries,\n styledTimeseries,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemChart.vue?vue&type=template&id=6ffdc6c4&scoped=true&\"\nimport script from \"./GridItemChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6ffdc6c4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('HeatmapChart',{attrs:{\"loading\":_vm.heatmapQuery.loading,\"resolved\":_vm.heatmapQuery.status.isResolved(),\"x-axis\":_vm.heatmapQuery.xAxis,\"y-axis\":_vm.heatmapQuery.yAxis,\"data\":_vm.heatmapQuery.data,\"unit\":_vm.gridItem.params.unit}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { joinQuery, injectQueryStore } from '@/use/uql'\nimport { useHeatmapQuery } from '@/metrics/use-query'\n\n// Components\nimport HeatmapChart from '@/components/HeatmapChart.vue'\n\n// Misc\nimport { Dashboard, HeatmapGridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemHeatmap',\n components: { HeatmapChart },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const { where } = injectQueryStore()\n const heatmapQuery = useHeatmapQuery(() => {\n if (!props.gridItem.params.metric) {\n return undefined\n }\n\n return {\n ...props.dateRange.axiosParams(),\n time_offset: props.dashboard.timeOffset,\n metric: props.gridItem.params.metric,\n alias: props.gridItem.params.metric,\n query: joinQuery([props.gridItem.params.query, where.value]),\n }\n })\n\n watch(\n () => heatmapQuery.status,\n (status) => {\n if (status.isResolved()) {\n ctx.emit('ready')\n }\n },\n )\n watch(\n () => heatmapQuery.error,\n (error) => {\n ctx.emit('error', error)\n },\n )\n\n return {\n heatmapQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemHeatmap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemHeatmap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemHeatmap.vue?vue&type=template&id=f597946e&scoped=true&\"\nimport script from \"./GridItemHeatmap.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemHeatmap.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f597946e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport GridItemGauge from '@/metrics/GridItemGauge.vue'\nimport GridItemCard from '@/metrics/GridItemCard.vue'\nimport GridItemChart from '@/metrics/GridItemChart.vue'\nimport GridItemTable from '@/metrics/GridItemTable.vue'\nimport GridItemHeatmap from '@/metrics/GridItemHeatmap.vue'\n\n// Misc\nimport { Dashboard, GridItem, GridItemType } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemSwitch',\n components: {\n GridItemGauge,\n GridItemCard,\n GridItemChart,\n GridItemTable,\n GridItemHeatmap,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n\n setup() {\n return { GridItemType }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemSwitch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemSwitch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemSwitch.vue?vue&type=template&id=a69e2a34&scoped=true&\"\nimport script from \"./GridItemSwitch.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemSwitch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a69e2a34\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, shallowRef, reactive, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport GridItemSwitch from '@/metrics/GridItemSwitch.vue'\nimport GridItemFormSwitch from '@/metrics/GridItemFormSwitch.vue'\n\n// Misc\nimport { Dashboard, GridItem } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'GridItemAny',\n components: { GridItemSwitch, GridItemFormSwitch },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridItem: {\n type: Object as PropType,\n required: true,\n },\n height: {\n type: Number,\n required: true,\n },\n },\n\n setup(props) {\n const activeGridItem = shallowRef()\n const dialog = shallowRef(false)\n\n return {\n activeGridItem,\n dialog,\n\n cloneDeep,\n reactive,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemAny.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GridItemAny.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GridItemAny.vue?vue&type=template&id=30056cc5&scoped=true&\"\nimport script from \"./GridItemAny.vue?vue&type=script&lang=ts&\"\nexport * from \"./GridItemAny.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30056cc5\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, watch, PropType } from 'vue'\n\n// Composables\nimport { UseDateRange } from '@/use/date-range'\nimport { useUql, useQueryStore, provideQueryStore } from '@/use/uql'\nimport { useDashboardManager } from '@/metrics/use-dashboards'\n\n// Components\nimport DashQueryBuilder from '@/metrics/query/DashQueryBuilder.vue'\nimport GridRowCard from '@/metrics/GridRowCard.vue'\nimport GridItemAny from '@/metrics/GridItemAny.vue'\n\n// Misc\nimport { Dashboard, GridRow, GridItemType, DashKind } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashdGrid',\n components: {\n DashQueryBuilder,\n GridRowCard,\n GridItemAny,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridRows: {\n type: Array as PropType,\n required: true,\n },\n gridMetrics: {\n type: Array as PropType,\n required: true,\n },\n gridQuery: {\n type: String,\n default: '',\n },\n },\n\n setup(props, ctx) {\n const uql = useUql()\n provideQueryStore(useQueryStore(uql))\n watch(\n () => props.gridQuery,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n\n const dashMan = useDashboardManager()\n const isGridQueryDirty = computed(() => {\n return uql.query !== props.gridQuery\n })\n function saveGridQuery() {\n dashMan.updateGrid({ id: props.dashboard.id, gridQuery: uql.query }).then(() => {\n ctx.emit('change')\n })\n }\n\n return {\n DashKind,\n GridItemType,\n\n uql,\n\n dashMan,\n isGridQueryDirty,\n saveGridQuery,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGrid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGrid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashGrid.vue?vue&type=template&id=da0022ba&scoped=true&\"\nimport script from \"./DashGrid.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashGrid.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"da0022ba\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useDateRangeFrom, UseDateRange } from '@/use/date-range'\nimport { joinQuery } from '@/use/uql'\nimport { useAnnotations } from '@/org/use-annotations'\n\n// Components\nimport DateRangePicker from '@/components/date/DateRangePicker.vue'\nimport DashGrid from '@/metrics/DashGrid.vue'\n\n// Misc\nimport { Dashboard, GridRow, TableRowData } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashGridForTableRow',\n components: { DateRangePicker, DashGrid },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridRows: {\n type: Array as PropType,\n required: true,\n },\n gridMetrics: {\n type: Array as PropType,\n required: true,\n },\n tableRow: {\n type: Object as PropType,\n required: true,\n },\n maxWidth: {\n type: [Number, String],\n default: 1900,\n },\n },\n\n setup(props) {\n const internalDateRange = useDateRangeFrom(props.dateRange)\n\n useAnnotations(() => {\n return {\n ...internalDateRange.axiosParams(),\n }\n })\n\n const gridQuery = computed(() => {\n const ss = []\n if (props.dashboard.gridQuery) {\n ss.push(props.dashboard.gridQuery)\n }\n if (props.tableRow._query) {\n ss.push(props.tableRow._query)\n }\n return joinQuery(ss)\n })\n\n return { internalDateRange, gridQuery }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGridForTableRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashGridForTableRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashGridForTableRow.vue?vue&type=template&id=d83790ca&scoped=true&\"\nimport script from \"./DashGridForTableRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashGridForTableRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d83790ca\",\n null\n \n)\n\nexport default component.exports","\nimport { cloneDeep } from 'lodash-es'\nimport { defineComponent, shallowRef, reactive, computed, proxyRefs, watch, PropType } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\nimport { useRoute } from '@/use/router'\nimport { useDataSource } from '@/use/datasource'\nimport { useUql, joinQuery, createQueryEditor } from '@/use/uql'\nimport { useTableQuery } from '@/metrics/use-query'\n\n// Components\nimport DashQueryBuilder from '@/metrics/query/DashQueryBuilder.vue'\nimport NewGridItemMenu from '@/metrics/NewGridItemMenu.vue'\nimport GroupingToggle from '@/metrics/query/GroupingToggle.vue'\nimport TimeseriesTable from '@/metrics/TimeseriesTable.vue'\nimport DashTableFormDialog from '@/metrics/DashTableFormDialog.vue'\nimport DashGridForTableRow from '@/metrics/DashGridForTableRow.vue'\nimport ApiErrorCard from '@/components/ApiErrorCard.vue'\nimport GridStackCard from '@/metrics/GridStackCard.vue'\nimport GridItemAny from '@/metrics/GridItemAny.vue'\nimport QuickSearch from '@/components/QuickSearch.vue'\n\n// Misc\nimport { AttrKey } from '@/models/otel'\nimport { Dashboard, DashKind, GridRow, GridItem, TableRowData } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardTable',\n components: {\n DashQueryBuilder,\n NewGridItemMenu,\n GroupingToggle,\n TimeseriesTable,\n DashTableFormDialog,\n DashGridForTableRow,\n ApiErrorCard,\n GridStackCard,\n GridItemAny,\n QuickSearch,\n },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n tableItems: {\n type: Array as PropType,\n required: true,\n },\n gridRows: {\n type: Array as PropType,\n required: true,\n },\n gridMetrics: {\n type: Array as PropType,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const route = useRoute()\n const dialog = shallowRef(false)\n\n const re = /^(where|group\\s+by)\\s+/i\n const baseQuery = computed(() => {\n return createQueryEditor(props.dashboard.tableQuery)\n .filter((part) => !re.test(part))\n .toString()\n })\n const editableQuery = computed(() => {\n return createQueryEditor(props.dashboard.tableQuery)\n .filter((part) => re.test(part))\n .toString()\n })\n\n const uql = useUql()\n watch(\n editableQuery,\n (query) => {\n uql.query = query\n },\n { immediate: true },\n )\n\n const tableQuery = useTableQuery(\n () => {\n if (!props.dashboard.tableQuery || !props.dashboard.tableMetrics.length) {\n return { _: undefined }\n }\n\n return {\n ...props.dateRange.axiosParams(),\n time_offset: props.dashboard.timeOffset,\n metric: props.dashboard.tableMetrics.map((m) => m.name),\n alias: props.dashboard.tableMetrics.map((m) => m.alias),\n query: joinQuery([uql.query, baseQuery.value]),\n min_interval: props.dashboard.minInterval,\n }\n },\n computed(() => props.dashboard.tableColumnMap),\n )\n watch(\n () => tableQuery.query,\n (query) => {\n if (query) {\n uql.setQueryInfo(query)\n }\n },\n { immediate: true },\n )\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n queryParams.setDefault('query', editableQuery.value)\n\n props.dateRange.parseQueryParams(queryParams)\n tableQuery.order.parseQueryParams(queryParams)\n uql.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n ...tableQuery.order.queryParams(),\n ...uql.queryParams(),\n }\n },\n })\n\n const attrKeysDs = useDataSource(() => {\n if (!props.dashboard.tableMetrics.length) {\n return undefined\n }\n\n const { projectId } = route.value.params\n return {\n url: `/internal/v1/metrics/${projectId}/attributes`,\n params: {\n ...props.dateRange.axiosParams(),\n metric: props.dashboard.tableMetrics.map((m) => m.name),\n },\n }\n })\n\n const grouping = computed({\n get() {\n return tableQuery.columns.filter((col) => col.isGroup).map((column) => column.name)\n },\n set(grouping: string[]) {\n const editor = createQueryEditor()\n\n for (let colName of grouping) {\n editor.groupBy(colName)\n }\n\n for (let part of uql.parts) {\n if (/^group by/i.test(part.query)) {\n continue\n }\n editor.add(part.query)\n }\n\n uql.commitEdits(editor)\n },\n })\n\n const tableItem = useTableRowData()\n\n return {\n AttrKey,\n DashKind,\n\n dialog,\n\n uql,\n tableQuery,\n\n attrKeysDs,\n grouping,\n\n tableItem,\n\n cloneDeep,\n reactive,\n }\n },\n})\n\nfunction useTableRowData() {\n const dialog = shallowRef(false)\n const activeItem = shallowRef()\n\n const tableListeners = computed(() => {\n return {\n click(item: TableRowData) {\n activeItem.value = item\n dialog.value = true\n },\n }\n })\n\n return proxyRefs({\n dialog,\n active: activeItem,\n listeners: tableListeners,\n })\n}\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardTable.vue?vue&type=template&id=e7bb007c&scoped=true&\"\nimport script from \"./DashboardTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e7bb007c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('portal',{attrs:{\"to\":\"dashboard-actions\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('NewGridItemMenu',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"dash-kind\":_vm.DashKind.Grid},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})],1)],1),_c('DashGrid',{attrs:{\"date-range\":_vm.dateRange,\"dashboard\":_vm.dashboard,\"grid-rows\":_vm.gridRows,\"grid-metrics\":_vm.gridMetrics,\"grid-query\":_vm.gridQuery},on:{\"change\":function($event){return _vm.$emit('change', $event)}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, onBeforeUnmount, inject, PropType, Ref } from 'vue'\n\n// Composables\nimport { useSyncQueryParams } from '@/use/router'\nimport { UseDateRange } from '@/use/date-range'\n\n// Components\nimport NewGridItemMenu from '@/metrics/NewGridItemMenu.vue'\nimport DashGrid from '@/metrics/DashGrid.vue'\n\n// Misc\nimport { Dashboard, DashKind, GridRow } from '@/metrics/types'\n\nexport default defineComponent({\n name: 'DashboardGrid',\n components: { NewGridItemMenu, DashGrid },\n\n props: {\n dateRange: {\n type: Object as PropType,\n required: true,\n },\n dashboard: {\n type: Object as PropType,\n required: true,\n },\n gridRows: {\n type: Array as PropType,\n required: true,\n },\n gridMetrics: {\n type: Array as PropType,\n required: true,\n },\n gridQuery: {\n type: String,\n default: '',\n },\n },\n\n setup(props, ctx) {\n const footer = inject>('footer')!\n footer.value = false\n onBeforeUnmount(() => {\n footer.value = true\n })\n\n useSyncQueryParams({\n fromQuery(queryParams) {\n props.dateRange.parseQueryParams(queryParams)\n },\n toQuery() {\n return {\n ...props.dateRange.queryParams(),\n }\n },\n })\n\n return { DashKind }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardGrid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardGrid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardGrid.vue?vue&type=template&id=189374d3&scoped=true&\"\nimport script from \"./DashboardGrid.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardGrid.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"189374d3\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"mx-auto my-4\",attrs:{\"max-width\":\"800\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--light-primary\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Dashboard types\")])],1),_c('div',{staticClass:\"pa-5\"},[_c('p',[_vm._v(\"To visualize metrics, Uptrace uses 2 types of dashboards together:\")]),_c('ul',{staticClass:\"mb-4\"},[_c('li',[_vm._v(\"A \"),_c('strong',[_vm._v(\"grid\")]),_vm._v(\"-based dashboard is a classic grid of charts.\")]),_c('li',[_vm._v(\" A \"),_c('strong',[_vm._v(\"table\")]),_vm._v(\"-based dashboard is a table where each row leads to the same grid dashboard filtered by \"),_c('code',[_vm._v(\"group by\")]),_vm._v(\" attributes from the table row, for example, a table of host names with rows leading to the grid dashboard filtered by \"),_c('code',[_vm._v(\"host_name = ${host_value}\")]),_vm._v(\". \")])]),_c('p',[_vm._v(\" In other words, table dashboards allow you to parameterize grid dashboards with attributes from the table. You can use tables as a replacement for Grafana variables. \")]),_c('p',[_vm._v(\" It is recommended to start with a table dashboard and add a grid later. The table dashboard should contain a few \"),_c('code',[_vm._v(\"group by attributes\")]),_vm._v(\" and 3-5 most important metrics. \")]),_c('p',[_vm._v(\" If you don't need a table dashboard, just leave it blank. Grid dashboards can be used without a table dashboard. \")]),_c('h3',{staticClass:\"mb-4 text-h5\"},[_vm._v(\"Example\")]),_c('p',[_vm._v(\" For example, after installing \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/opentelemetry/collector-host-metrics.html\",\"target\":\"_blank\"}},[_vm._v(\"OpenTelemetry hostmetrics\")]),_vm._v(\", you can monitor infrastructure metrics by creating a table dashboard that contains a list of hostnames along with their CPU usage: \")]),_c('v-img',{staticClass:\"framed\",attrs:{\"src\":\"/metrics/dash-table-form.png\"}}),_c('p',[_vm._v(\" In the accompanying grid dashboard, you can have charts with more detailed metrics such us CPU time for every CPU state or core: \")]),_c('v-img',{staticClass:\"framed\",attrs:{\"src\":\"/metrics/dash-grid-chart.png\"}}),_c('p',[_vm._v(\" When viewing the table dashboard, you can click on a row to view the grid dashboard filtered by the \"),_c('code',[_vm._v(\"host_name\")]),_vm._v(\" attribute: \")]),_c('v-img',{staticClass:\"framed\",attrs:{\"src\":\"/metrics/dash-table-row.png\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nexport default defineComponent({\n name: 'DashboardHelp',\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardHelp.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardHelp.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardHelp.vue?vue&type=template&id=8d446e44&scoped=true&\"\nimport script from \"./DashboardHelp.vue?vue&type=script&lang=ts&\"\nexport * from \"./DashboardHelp.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DashboardHelp.vue?vue&type=style&index=0&id=8d446e44&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d446e44\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height bg--none\",attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('v-col',[_c('v-card',{staticClass:\"mx-auto\",attrs:{\"max-width\":\"500\"}},[_c('v-toolbar',{attrs:{\"color\":\"bg--dark-primary\",\"dark\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',[_vm._v(\"Log in\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"href\":\"https://uptrace.dev/get/config.html#managing-users\",\"target\":\"_blank\",\"outlined\":\"\",\"small\":\"\"}},[_vm._v(\"Create new user\")])],1),(_vm.sso.methods.length)?[_c('v-card',{staticClass:\"pa-8\",attrs:{\"flat\":\"\"}},_vm._l((_vm.sso.methods),function(sso){return _c('v-btn',{key:sso.id,attrs:{\"loading\":_vm.loading,\"href\":sso.url,\"color\":\"red darken-3\",\"dark\":\"\",\"large\":\"\",\"width\":\"100%\"}},[_vm._v(\" \"+_vm._s(sso.name || 'OpenID Connect')+\" \")])}),1),_c('div',{staticClass:\"d-flex align-center\"},[_c('v-divider'),_c('div',{staticClass:\"mx-2 grey--text text--lighten-1\"},[_vm._v(\"or\")]),_c('v-divider')],1)]:_vm._e(),_c('v-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}},model:{value:(_vm.isValid),callback:function ($$v) {_vm.isValid=$$v},expression:\"isValid\"}},[_c('v-card',{staticClass:\"pa-8\",attrs:{\"flat\":\"\"}},[(_vm.error)?_c('v-alert',{attrs:{\"type\":\"error\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('p',[_vm._v(\" The default login is \"),_c('code',[_vm._v(\"uptrace@localhost\")]),_vm._v(\" with pass \"),_c('code',[_vm._v(\"uptrace\")]),_vm._v(\". \")]),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-account\",\"label\":\"Email\",\"rules\":_vm.rules.email,\"required\":\"\",\"filled\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-lock\",\"label\":\"Password\",\"type\":\"password\",\"rules\":_vm.rules.password,\"required\":\"\",\"filled\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"loading\":_vm.loading,\"disabled\":!_vm.isValid,\"type\":\"submit\",\"color\":\"primary\"}},[_vm._v(\" Sign in \")])],1)],1)],1)],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { upperFirst } from 'lodash-es'\nimport { defineComponent, shallowRef, watch } from 'vue'\n\n// Composables\nimport { useTitle } from '@vueuse/core'\nimport { useAxios } from '@/use/axios'\nimport { useRouter } from '@/use/router'\nimport { useUser, useSso } from '@/org/use-users'\n\nconst requiredRule = (v: string) => (v && v.length != 0) || 'Field is required'\n\nexport default defineComponent({\n name: 'Login',\n\n setup() {\n useTitle('Log in')\n\n const { router } = useRouter()\n const user = useUser()\n const sso = useSso()\n\n const isValid = shallowRef(false)\n const rules = {\n email: [requiredRule],\n password: [requiredRule],\n }\n const error = shallowRef('')\n\n const email = shallowRef('')\n const password = shallowRef('')\n\n const { loading, request } = useAxios()\n\n watch(\n () => user.current,\n () => {\n if (user.isAuth) {\n router.push({ name: 'Home' }).catch(() => {})\n }\n },\n )\n\n function submit() {\n login()\n .then(() => {\n error.value = ''\n user.reload()\n })\n .catch((err) => {\n const msg = err.response?.data?.message\n if (msg) {\n error.value = upperFirst(msg)\n }\n })\n }\n\n function login() {\n const data = {\n email: email.value,\n password: password.value,\n }\n\n const url = `/internal/v1/users/login`\n return request({ method: 'POST', url, data })\n }\n\n return {\n sso,\n\n isValid,\n rules,\n error,\n\n email,\n password,\n\n loading,\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=1baa1247&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1baa1247\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-sm\"},[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'UserProfile' },\"exact-path\":\"\"}},[_vm._v(\" Profile \")]),_c('v-tab',{attrs:{\"to\":{ name: 'DataUsage' },\"exact-path\":\"\"}},[_vm._v(\" Data usage \")])],1)],1),(_vm.user.isAuth)?_c('div',[_c('PageToolbar',[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.title))])],1),_c('v-container',{staticClass:\"py-6\"},[_c('v-row',[_c('v-col',[_vm._v(\" You can change user settings in the \"),_c('code',[_vm._v(\"uptrace.yml\")]),_vm._v(\" config file. See \"),_c('a',{attrs:{\"href\":\"https://uptrace.dev/get/config.html#managing-users\",\"target\":\"_blank\"}},[_vm._v(\"documentation\")]),_vm._v(\" for details. \")])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-text-field',{attrs:{\"disabled\":\"\",\"label\":\"Name\",\"filled\":\"\",\"required\":\"\"},model:{value:(_vm.user.current.name),callback:function ($$v) {_vm.$set(_vm.user.current, \"name\", $$v)},expression:\"user.current.name\"}}),_c('v-text-field',{attrs:{\"disabled\":\"\",\"label\":\"Email\",\"filled\":\"\",\"required\":\"\"},model:{value:(_vm.user.current.email),callback:function ($$v) {_vm.$set(_vm.user.current, \"email\", $$v)},expression:\"user.current.email\"}}),_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"disabled\":\"\",\"label\":\"Allow to send alert notifications via email\",\"hide-details\":\"auto\"},model:{value:(_vm.user.current.notifyByEmail),callback:function ($$v) {_vm.$set(_vm.user.current, \"notifyByEmail\", $$v)},expression:\"user.current.notifyByEmail\"}})],1)],1),(_vm.user.current.authToken)?_c('v-row',[_c('v-col',[_c('div',{staticClass:\"text-body-2 text--secondary\"},[_vm._v(\"Auth token\")]),_c('PrismCode',{attrs:{\"code\":_vm.user.current.authToken}})],1)],1):_vm._e()],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\nimport { useTitle } from '@vueuse/core'\nimport { useUser } from '@/org/use-users'\n\nexport default defineComponent({\n name: 'UserProfile',\n\n setup() {\n const title = 'Profile'\n useTitle(title)\n\n const user = useUser()\n\n return {\n title,\n user,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserProfile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserProfile.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserProfile.vue?vue&type=template&id=8c53f600&scoped=true&\"\nimport script from \"./UserProfile.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserProfile.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c53f600\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"container--fixed-sm\"},[_c('portal',{attrs:{\"to\":\"navigation\"}},[_c('v-tabs',{key:_vm.$route.fullPath,attrs:{\"background-color\":\"transparent\"}},[_c('v-tab',{attrs:{\"to\":{ name: 'UserProfile' },\"exact-path\":\"\"}},[_vm._v(\" Profile \")]),_c('v-tab',{attrs:{\"to\":{ name: 'DataUsage' },\"exact-path\":\"\"}},[_vm._v(\" Data usage \")])],1)],1),_c('PageToolbar',[(_vm.usage.startTime && _vm.usage.endTime)?_c('v-toolbar-title',[_c('DateValue',{attrs:{\"value\":_vm.usage.startTime,\"format\":\"date\"}}),_vm._v(\" — \"),_c('DateValue',{attrs:{\"value\":_vm.usage.endTime,\"format\":\"date\"}})],1):_vm._e()],1),_c('v-container',{staticClass:\"py-6\"},[_c('v-row',{staticClass:\"text-center\"},[_c('v-col',{staticClass:\"px-6\",attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"text-h6 font-weight-regular\"},[_c('BytesValue',{attrs:{\"value\":_vm.usage.bytes}})],1),_c('div',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\"bytes\")])]),_c('v-col',{staticClass:\"px-6\",attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"text-h6 font-weight-regular\"},[_c('NumValue',{attrs:{\"value\":_vm.usage.spans}})],1),_c('div',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\"spans\")])]),_c('v-col',{staticClass:\"px-6\",attrs:{\"cols\":\"auto\"}},[_c('div',{staticClass:\"text-h6 font-weight-regular\"},[_c('NumValue',{attrs:{\"value\":_vm.usage.timeseries}})],1),_c('div',{staticClass:\"text-body-2 grey--text text--darken-1\"},[_vm._v(\"timeseries\")])])],1),_c('v-row',[_c('v-col',[_c('h3',{staticClass:\"text-subtitle-1 text--secondary\"},[_vm._v(\"Ingested spans and logs\")]),_c('DataUsageChart',{attrs:{\"loading\":_vm.usage.loading,\"value\":_vm.usage.data.spans,\"time\":_vm.usage.data.time,\"name\":\"Spans & logs\"}}),_c('h3',{staticClass:\"text-subtitle-1 text--secondary\"},[_vm._v(\"Ingested bytes\")]),_c('DataUsageChart',{attrs:{\"loading\":_vm.usage.loading,\"value\":_vm.usage.data.bytes,\"time\":_vm.usage.data.time,\"name\":\"Bytes\",\"unit\":\"bytes\"}}),_c('h3',{staticClass:\"text-subtitle-1 text--secondary\"},[_vm._v(\"Timeseries\")]),_c('DataUsageChart',{attrs:{\"loading\":_vm.usage.loading,\"value\":_vm.usage.data.timeseries,\"time\":_vm.usage.data.time,\"name\":\"Timeseries\"}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed, proxyRefs } from 'vue'\n\nimport { useWatchAxios } from '@/use/watch-axios'\n\nexport function useDataUsage() {\n const { status, loading, data, reload } = useWatchAxios(() => {\n return {\n url: '/internal/v1/data-usage',\n }\n })\n\n const usage = computed(() => {\n return data.value?.usage ?? {}\n })\n\n const spans = computed(() => {\n return data.value?.spans ?? 0\n })\n\n const bytes = computed(() => {\n return data.value?.bytes ?? 0\n })\n\n const timeseries = computed(() => {\n return data.value?.timeseries ?? 0\n })\n\n const startTime = computed(() => {\n return data.value?.startTime\n })\n\n const endTime = computed(() => {\n return data.value?.endTime\n })\n\n return proxyRefs({\n status,\n loading,\n reload,\n\n data: usage,\n spans,\n bytes,\n timeseries,\n startTime,\n endTime,\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('EChart',{attrs:{\"loading\":_vm.loading,\"height\":_vm.chart.height,\"option\":_vm.chart.option,\"group\":_vm.group}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Components\nimport EChart, { EChartProps } from '@/components/EChart.vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\nimport {\n baseChartConfig,\n axisLabelFormatter,\n axisPointerFormatter,\n addChartTooltip,\n createTooltipFormatter,\n EChartsOption,\n} from '@/util/chart'\n\nexport default defineComponent({\n name: 'DataUsageChart',\n components: { EChart },\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n time: {\n type: Array as PropType,\n default: undefined,\n },\n value: {\n type: Array as PropType,\n default: () => [],\n },\n name: {\n type: String,\n required: true,\n },\n unit: {\n type: String,\n default: Unit.None,\n },\n group: {\n type: String,\n default: 'usage',\n },\n },\n\n setup(props) {\n const chart = computed(() => {\n const chart: Partial = { height: 200 }\n\n if (!props.time) {\n return chart\n }\n\n const conf = baseChartConfig()\n plotUsage(conf)\n\n chart.option = conf\n return chart\n })\n\n function plotUsage(conf: EChartsOption) {\n addChartTooltip(conf, {\n formatter: createTooltipFormatter(props.unit),\n })\n\n conf.xAxis.push({\n type: 'time',\n splitLine: { show: false },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(Unit.Date),\n },\n },\n })\n\n conf.yAxis.push({\n type: 'value',\n splitNumber: 4,\n splitLine: { show: false },\n axisLabel: {\n formatter: axisLabelFormatter(props.unit),\n },\n axisPointer: {\n label: {\n formatter: axisPointerFormatter(props.unit),\n },\n },\n })\n\n conf.dataset.push({\n source: {\n time: props.time!,\n value: props.value,\n },\n })\n\n conf.series.push({\n name: props.name,\n type: 'line',\n encode: { x: 'time', y: 'value' },\n })\n\n conf.grid.push({\n top: '25px',\n left: '50px',\n right: '25px',\n height: '140px',\n })\n }\n\n return { chart }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DataUsageChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DataUsageChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DataUsageChart.vue?vue&type=template&id=213f9e19&scoped=true&\"\nimport script from \"./DataUsageChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./DataUsageChart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"213f9e19\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Composable\nimport { useTitle } from '@vueuse/core'\nimport { useDataUsage } from '@/org/use-data-usage'\n\n// Components\nimport DataUsageChart from '@/org/DataUsageChart.vue'\n\nexport default defineComponent({\n name: 'DataUsage',\n components: { DataUsageChart },\n\n setup() {\n useTitle('Data Usage')\n\n const usage = useDataUsage()\n\n return {\n usage,\n }\n },\n})\n","import mod from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DataUsage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DataUsage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DataUsage.vue?vue&type=template&id=492d77b0&scoped=true&\"\nimport script from \"./DataUsage.vue?vue&type=script&lang=ts&\"\nexport * from \"./DataUsage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"492d77b0\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter, { RouteConfig, NavigationGuard } from 'vue-router'\n\n// Composables\nimport { useUser } from '@/org/use-users'\n\nimport NotFoundPage from '@/org/views/NotFoundPage.vue'\nimport Project from '@/org/views/Project.vue'\nimport ProjectSettings from '@/org/views/ProjectSettings.vue'\nimport ProjectDsn from '@/org/views/ProjectDsn.vue'\n\nimport Alerting from '@/alerting/views/Alerting.vue'\nimport AlertList from '@/alerting/views/AlertList.vue'\nimport AlertShow from '@/alerting/views/AlertShow.vue'\nimport MonitorList from '@/alerting/views/MonitorList.vue'\nimport MonitorMetric from '@/alerting/views/MonitorMetric.vue'\nimport MonitorErrorShow from '@/alerting/views/MonitorErrorShow.vue'\nimport MonitorErrorNew from '@/alerting/views/MonitorErrorNew.vue'\nimport ChannelList from '@/alerting/views/ChannelList.vue'\nimport ChannelShowSlack from '@/alerting/views/ChannelShowSlack.vue'\nimport ChannelShowTelegram from '@/alerting/views/ChannelShowTelegram.vue'\nimport ChannelShowWebhook from '@/alerting/views/ChannelShowWebhook.vue'\nimport ChannelShowAlertmanager from '@/alerting/views/ChannelShowAlertmanager.vue'\nimport EmailNotifications from '@/alerting/views/EmailNotifications.vue'\nimport AnnotationList from '@/alerting/views/AnnotationList.vue'\nimport AnnotationShow from '@/alerting/views/AnnotationShow.vue'\n\nimport Overview from '@/tracing/views/Overview.vue'\nimport OverviewAttr from '@/tracing/views/OverviewAttr.vue'\nimport OverviewSlowestGroups from '@/tracing/views/OverviewSlowestGroups.vue'\nimport OverviewGroups from '@/tracing/views/OverviewGroups.vue'\nimport OverviewServiceGraph from '@/tracing/views/OverviewServiceGraph.vue'\n\nimport TracingHelp from '@/tracing/views/Help.vue'\nimport TracingCheatsheet from '@/tracing/views/Cheatsheet.vue'\nimport Tracing from '@/tracing/views/Tracing.vue'\nimport TracingGroups from '@/tracing/views/TracingGroups.vue'\nimport TracingSpans from '@/tracing/views/TracingSpans.vue'\nimport TracingTimeseries from '@/tracing/views/TracingTimeseries.vue'\n\nimport TraceShow from '@/tracing/views/TraceShow.vue'\nimport TraceFind from '@/tracing/views/TraceFind.vue'\nimport TraceSpanShow from '@/tracing/views/TraceSpanShow.vue'\n\nimport MetricsLayout from '@/metrics/views/Layout.vue'\nimport MetricsExplore from '@/metrics/views/Explore.vue'\nimport MetricsHelp from '@/metrics/views/Help.vue'\nimport MetricsCheatsheet from '@/metrics/views/Cheatsheet.vue'\n\nimport DashboardList from '@/metrics/views/DashboardList.vue'\nimport Dashboard from '@/metrics/views/Dashboard.vue'\nimport DashboardLoading from '@/metrics/views/DashboardLoading.vue'\nimport DashboardTable from '@/metrics/views/DashboardTable.vue'\nimport DashboardGrid from '@/metrics/views/DashboardGrid.vue'\nimport DashboardHelp from '@/metrics/views/DashboardHelp.vue'\n\nimport Login from '@/views/Login.vue'\nimport UserProfile from '@/org/views/UserProfile.vue'\nimport DataUsage from '@/org/views/DataUsage.vue'\n\nVue.use(VueRouter)\n\nconst routes: RouteConfig[] = [\n {\n name: 'Home',\n path: '/',\n beforeEnter: redirectToProject('Overview'),\n },\n\n {\n path: '/login',\n name: 'Login',\n component: Login,\n },\n {\n path: '/profile',\n name: 'UserProfile',\n component: UserProfile,\n },\n {\n path: '/usage',\n name: 'DataUsage',\n component: DataUsage,\n },\n {\n name: 'ProjectCreate',\n path: '/help/projects',\n component: TracingHelp,\n },\n {\n path: '/projects/:projectId(\\\\d+)',\n component: Project,\n children: [\n {\n name: 'ProjectShow',\n path: '',\n components: { tab: ProjectSettings },\n },\n {\n name: 'ProjectDsn',\n path: 'dsn',\n components: { tab: ProjectDsn },\n },\n ],\n },\n\n {\n path: '/alerting/:projectId(\\\\d+)',\n name: 'Alerting',\n component: Alerting,\n redirect: { name: 'AlertList' },\n children: [\n {\n name: 'AlertList',\n path: 'alerts',\n components: { alerting: AlertList },\n },\n {\n name: 'AlertShow',\n path: 'alerts/:alertId(\\\\d+)',\n components: { alerting: AlertShow },\n },\n\n {\n name: 'NotifChannelList',\n path: 'channels',\n components: { alerting: ChannelList },\n },\n\n {\n name: 'MonitorList',\n path: 'monitors',\n components: { alerting: MonitorList },\n },\n\n {\n name: 'NotifChannelEmail',\n path: 'email',\n components: { alerting: EmailNotifications },\n },\n\n {\n name: 'AnnotationList',\n path: 'annotations',\n components: { alerting: AnnotationList },\n },\n ],\n },\n\n {\n name: 'MonitorMetricNew',\n path: '/alerting/:projectId(\\\\d+)/monitors/new-metric',\n component: MonitorMetric,\n },\n {\n name: 'MonitorMetricShow',\n path: '/alerting/:projectId(\\\\d+)/monitors/:monitorId(\\\\d+)/metric',\n component: MonitorMetric,\n },\n {\n name: 'MonitorErrorNew',\n path: '/alerting/:projectId(\\\\d+)/monitors/new-error',\n component: MonitorErrorNew,\n },\n {\n name: 'MonitorErrorShow',\n path: '/alerting/:projectId(\\\\d+)/monitors/:monitorId(\\\\d+)/error',\n component: MonitorErrorShow,\n },\n\n {\n name: 'NotifChannelShowSlack',\n path: '/alerting/:projectId(\\\\d+)/channels/slack/:channelId(\\\\d+)',\n component: ChannelShowSlack,\n },\n {\n name: 'NotifChannelShowTelegram',\n path: '/alerting/:projectId(\\\\d+)/channels/telegram/:channelId(\\\\d+)',\n component: ChannelShowTelegram,\n },\n {\n name: 'NotifChannelShowWebhook',\n path: '/alerting/:projectId(\\\\d+)/channels/webhook/:channelId(\\\\d+)',\n component: ChannelShowWebhook,\n },\n {\n name: 'NotifChannelShowAlertmanager',\n path: '/alerting/:projectId(\\\\d+)/channels/alertmanager/:channelId(\\\\d+)',\n component: ChannelShowAlertmanager,\n },\n\n {\n path: '/alerts/:projectId(\\\\d+)/:alertId(\\\\d+)',\n redirect: { name: 'AlertList' },\n },\n {\n path: '/alerts',\n beforeEnter: redirectToProject('AlertList'),\n },\n\n {\n name: 'AnnotationShow',\n path: '/alerting/:projectId(\\\\d+)/annotations/:annotationId(\\\\d+)',\n component: AnnotationShow,\n },\n\n {\n name: 'Overview',\n path: '/overview/:projectId(\\\\d+)',\n component: Overview,\n redirect: { name: 'SystemOverview' },\n\n children: [\n {\n name: 'SystemOverview',\n path: 'systems',\n components: { overview: OverviewAttr },\n },\n {\n name: 'SystemGroupList',\n path: 'groups/:system',\n components: { overview: OverviewGroups },\n },\n {\n name: 'AttrOverview',\n path: 'attributes/:attr',\n components: { overview: OverviewAttr },\n },\n {\n name: 'SlowestGroups',\n path: 'slowest-groups',\n components: { overview: OverviewSlowestGroups },\n },\n {\n name: 'ServiceGraph',\n path: 'service-graph',\n components: { overview: OverviewServiceGraph },\n },\n ],\n },\n {\n path: '/:projectId(\\\\d+)',\n redirect: { name: 'Overview' },\n },\n {\n path: '/overview',\n beforeEnter: redirectToProject('SystemOverview'),\n },\n\n {\n name: 'TracingHelp',\n path: '/spans/:projectId(\\\\d+)/help',\n component: TracingHelp,\n },\n {\n path: '/spans/:projectId(\\\\d+)/cheatsheet',\n name: 'TracingCheatsheet',\n component: TracingCheatsheet,\n },\n {\n path: '/spans/:projectId(\\\\d+)',\n component: Tracing,\n children: [\n {\n name: 'SpanGroupList',\n path: '',\n components: { tracing: TracingGroups },\n },\n {\n name: 'SpanList',\n path: 'items',\n components: { tracing: TracingSpans },\n },\n {\n name: 'SpanTimeseries',\n path: 'timeseries',\n components: { tracing: TracingTimeseries },\n },\n ],\n },\n {\n path: '/spans',\n beforeEnter: redirectToProject('SpanGroupList'),\n },\n\n {\n path: '/events',\n beforeEnter: redirectToProject('SpanGroupList'),\n },\n\n {\n name: 'TraceShow',\n path: '/traces/:projectId(\\\\d+)/:traceId',\n component: TraceShow,\n },\n {\n name: 'TraceSpanShow',\n path: '/traces/:projectId(\\\\d+)/:traceId/:spanId',\n component: TraceSpanShow,\n },\n {\n path: '/traces/:traceId',\n name: 'TraceFind',\n component: TraceFind,\n },\n\n {\n path: '/metrics/:projectId(\\\\d+)',\n component: MetricsLayout,\n children: [\n {\n path: '',\n name: 'DashboardList',\n components: { metrics: DashboardList },\n },\n {\n path: ':dashId(\\\\d+)',\n components: { metrics: Dashboard },\n children: [\n {\n path: '',\n name: 'DashboardShow',\n components: { tab: DashboardLoading },\n },\n {\n path: 'table',\n name: 'DashboardTable',\n components: { tab: DashboardTable },\n },\n {\n path: 'grid',\n name: 'DashboardGrid',\n components: { tab: DashboardGrid },\n },\n {\n path: 'help',\n name: 'DashboardHelp',\n components: { tab: DashboardHelp },\n },\n ],\n },\n {\n path: 'explore',\n name: 'MetricsExplore',\n components: { metrics: MetricsExplore },\n },\n ],\n },\n {\n path: '/metrics/:projectId(\\\\d+)/help',\n name: 'MetricsHelp',\n component: MetricsHelp,\n },\n {\n path: '/metrics/:projectId(\\\\d+)/cheatsheet',\n name: 'MetricsCheatsheet',\n component: MetricsCheatsheet,\n },\n {\n path: '/metrics',\n beforeEnter: redirectToProject('DashboardList'),\n },\n\n { path: '*', component: NotFoundPage },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes,\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition\n }\n if (to.hash) {\n return {\n selector: to.hash,\n }\n }\n return savedPosition\n },\n})\n\nfunction redirectToProject(routeName: string): NavigationGuard {\n return async (_to, _from, next) => {\n const user = useUser()\n await user.getOrLoad()\n\n for (let p of user.projects) {\n if (p.id === user.lastProjectId) {\n next({ name: routeName, params: { projectId: String(p.id) } })\n return\n }\n }\n\n const first = user.projects[0]\n if (first) {\n next({\n name: routeName,\n params: { projectId: String(first.id) },\n })\n return\n }\n\n next({ name: 'ProjectCreate' })\n }\n}\n\nexport default router\n","import querystring from 'querystring'\nimport { omit, debounce } from 'lodash-es'\nimport { Route } from 'vue-router'\nimport { computed, watch, onMounted, onBeforeUnmount } from 'vue'\n\nimport router from '@/router'\n\nexport function useRouter() {\n const route = computed((): Route => {\n return router.app.$root.$route\n })\n\n return { router, route }\n}\n\nexport function useRouterOnly() {\n return router\n}\n\nexport function useRoute() {\n const route = computed((): Route => {\n return router.app.$root.$route\n })\n return route\n}\n\n//------------------------------------------------------------------------------\n\ninterface QueryHook {\n toQuery(): Record | undefined\n fromQuery(query: Values): void\n}\n\nlet useSyncQueryParamsCount = 0\n\nexport function useSyncQueryParams(hook: QueryHook) {\n const { router, route } = useRouter()\n\n onMounted(() => {\n useSyncQueryParamsCount++\n if (useSyncQueryParamsCount > 1) {\n console?.warn('useSyncQueryParams can not be called more than once on a page')\n }\n })\n onBeforeUnmount(() => {\n useSyncQueryParamsCount--\n })\n\n // Whether to push a new entry into the history stack or replace an existing one.\n let usePushRoute = false\n\n const usePushRouteDebounced = debounce(() => {\n usePushRoute = true\n }, 2000)\n\n let ignoreNextRoute: Route | undefined\n\n const updateQueryDebounced = debounce(\n (route: Route, query: Record | undefined): void => {\n if (query === undefined) {\n return\n }\n for (let key in query) {\n if (query[key] === undefined) {\n return\n }\n }\n\n if (queryEqual(query, route.query)) {\n // Nothing to do.\n usePushRouteDebounced()\n return\n }\n\n const savedRoute = ignoreNextRoute\n function onError() {\n ignoreNextRoute = savedRoute\n }\n\n ignoreNextRoute = omit(route, 'matched') as Route\n ignoreNextRoute.query = query\n\n if (usePushRoute) {\n router.push({ query, hash: route.hash }).catch(onError)\n } else {\n router.replace({ query, hash: route.hash }).catch(onError)\n }\n usePushRouteDebounced()\n },\n 50,\n )\n\n // Parse query params whenever the route is changed.\n watch(\n route,\n (route) => {\n if (!route.matched.length) {\n return\n }\n if (ignoreNextRoute && routeEqual(route, ignoreNextRoute)) {\n return\n }\n\n hook.fromQuery(new Values(route.query))\n usePushRoute = false\n\n updateQueryDebounced(route, hook.toQuery())\n },\n { immediate: true, flush: 'post' },\n )\n\n // Update query params in the current route whenever query is changed.\n watch(\n () => hook.toQuery(),\n (query) => {\n updateQueryDebounced(route.value, query)\n },\n { immediate: true, flush: 'post' },\n )\n}\n\nfunction routeEqual(r1: Route, r2: Route): boolean {\n return r1.path === r2.path && paramsEqual(r1.params, r2.params) && queryEqual(r1.query, r2.query)\n}\n\nfunction paramsEqual(p1: Record, p2: Record): boolean {\n const k1 = Object.keys(p1).sort()\n const k2 = Object.keys(p2).sort()\n // JSON omits undefined: {tab: undefined}.\n return JSON.stringify(p1, k1) === JSON.stringify(p2, k2)\n}\n\nfunction queryEqual(\n q1: Record | undefined,\n q2: Record | undefined,\n): boolean {\n // handles int/string: 1 !== \"1\"\n return querystring.stringify(q1) === querystring.stringify(q2)\n}\n\n//------------------------------------------------------------------------------\n\nexport class Values {\n kvs: Record\n\n constructor(kvs: Record) {\n this.kvs = normQueryParams(kvs)\n }\n\n setDefault(key: string, value: any) {\n if (!this.has(key)) {\n this.set(key, value)\n }\n }\n\n set(key: string, value: any) {\n this.kvs[key] = normQueryParam(value)\n }\n\n empty(): boolean {\n return Object.keys(this.kvs).length === 0\n }\n\n has(key: string): boolean {\n return key in this.kvs\n }\n\n string(key: string, defValue = ''): string {\n const value = this.kvs[key]\n if (value) {\n return value[0]\n }\n return defValue\n }\n\n boolean(key: string, defValue = false): boolean {\n return ['true', '1'].includes(this.string(key, normQueryValue(defValue)))\n }\n\n int(key: string, defValue = 0): number {\n return parseInt(this.string(key), 10) || defValue\n }\n\n array(key: string, defValue = []): string[] {\n return this.kvs[key] ?? defValue\n }\n\n forEach(fn: (key: string, value: string[]) => void) {\n for (let key in this.kvs) {\n fn(key, this.kvs[key])\n }\n }\n}\n\nfunction normQueryParams(src: Record): Record {\n const dest: Record = {}\n for (let key in src) {\n dest[key] = normQueryParam(src[key])\n }\n return dest\n}\n\nfunction normQueryParam(value: any): string[] {\n if (Array.isArray(value)) {\n return value.map((el) => normQueryValue(el))\n }\n return [normQueryValue(value)]\n}\n\nfunction normQueryValue(value: any): string {\n if (value === null || value === undefined) {\n return ''\n }\n\n switch (typeof value) {\n case 'string':\n return value\n case 'number':\n return String(value)\n case 'boolean':\n return String(value)\n }\n\n return String(value)\n}\n","import { min, addMilliseconds, subMilliseconds, differenceInMilliseconds } from 'date-fns'\nimport { shallowRef, computed, proxyRefs, watch, onBeforeUnmount } from 'vue'\nimport { useSessionStorage } from '@vueuse/core'\n\n// Composables\nimport { useRoute, Values } from '@/use/router'\nimport { provideForceReload, injectForceReload } from '@/use/force-reload'\n\n// Misc\nimport {\n formatUTC,\n parseUTC,\n toUTC,\n toLocal,\n ceilDate,\n truncDate,\n SECOND,\n MINUTE,\n HOUR,\n} from '@/util/fmt/date'\n\nconst AUTO_RELOAD_INTERVAL = MINUTE\n\nexport type UseDateRange = ReturnType\n\ninterface Config {\n prefix?: string\n}\n\ninterface ParamsConfig {\n prefix?: string\n optional?: boolean\n offset?: number\n}\n\nexport function useDateRange(conf: Config = {}) {\n const route = useRoute()\n\n const defaultPrefix = conf.prefix ?? 'time_'\n const roundUpEnabled = shallowRef(false)\n\n const lt = shallowRef()\n const isNow = shallowRef(false)\n const duration = shallowRef(0) // milliseconds\n\n let updateNowTimer: ReturnType | undefined\n const forceReload = injectForceReload()\n\n const isValid = computed((): boolean => {\n return Boolean(lt.value) && Boolean(duration.value)\n })\n\n const gte = computed((): Date | undefined => {\n if (!isValid.value) {\n return\n }\n let gte = subMilliseconds(lt.value!, duration.value)\n //gte = truncDate(gte, durationPeriod(duration.value))\n return gte\n })\n\n // For v-date-picker.\n const datePicker = computed({\n get(): string {\n return toLocal(gte.value!).toISOString().substr(0, 10)\n },\n set(s: string) {\n const dt = toUTC(new Date(s))\n changeGTE(dt)\n },\n })\n\n // For v-time-picker.\n const timePicker = computed({\n get(): string {\n const dt = gte.value!\n return `${dt.getHours()}:${dt.getMinutes()}`\n },\n set(s: string) {\n const dt = new Date(gte.value!.getTime())\n const [hours, minutes] = s.split(':')\n dt.setHours(parseInt(hours, 10))\n dt.setMinutes(parseInt(minutes, 10))\n changeGTE(dt)\n },\n })\n\n const autoReloadEnabled = useSessionStorage('auto-reload-enabled', false)\n function toggleAutoReload() {\n autoReloadEnabled.value = !autoReloadEnabled.value\n if (autoReloadEnabled.value) {\n updateNow(true)\n }\n }\n\n onBeforeUnmount(() => {\n if (updateNowTimer) {\n clearTimeout(updateNowTimer)\n updateNowTimer = undefined\n }\n })\n\n watch(\n () => route.value.name,\n () => {\n updateNow()\n },\n { flush: 'post' },\n )\n\n function reload() {\n updateNow()\n forceReload.do()\n }\n\n function reloadNow() {\n updateNow(true)\n forceReload.do()\n }\n\n function reset() {\n resetUpdateNowTimer()\n lt.value = undefined\n duration.value = 0\n }\n\n function updateNow(force = false) {\n if (!isNow.value) {\n if (!force) {\n return\n }\n isNow.value = true\n }\n\n let now = new Date()\n now = roundUpEnabled.value ? ceilDate(now, MINUTE) : truncDate(now, MINUTE)\n\n if (!force && duration.value >= 6 * HOUR) {\n const diff = differenceInMilliseconds(lt.value!, now)\n if (Math.abs(diff) < 5 * MINUTE) {\n // Don't update the time so the query cache is not invalidated.\n return\n }\n }\n\n lt.value = now\n\n if (autoReloadEnabled.value) {\n if (updateNowTimer) {\n clearTimeout(updateNowTimer)\n }\n updateNowTimer = global.setTimeout(updateNow, AUTO_RELOAD_INTERVAL)\n }\n }\n\n function resetUpdateNowTimer() {\n if (updateNowTimer) {\n clearTimeout(updateNowTimer)\n updateNowTimer = undefined\n }\n isNow.value = false\n }\n\n function change(gteVal: Date, ltVal: Date) {\n const durVal = ltVal.getTime() - gteVal.getTime()\n lt.value = ltVal\n duration.value = durVal\n resetUpdateNowTimer()\n }\n\n function changeDuration(ms: number): void {\n // Try to preserve gte value.\n if (lt.value && !isNow.value) {\n const newLT = addMilliseconds(gte.value!, ms)\n const now = new Date()\n if (newLT < now) {\n duration.value = ms\n lt.value = newLT\n return\n }\n }\n\n duration.value = ms\n updateNow(true)\n }\n\n function syncWith(other: UseDateRange) {\n lt.value = other.lt\n duration.value = other.duration\n isNow.value = other.isNow\n }\n\n function includes(dt: Date | string): boolean {\n if (!isValid.value) {\n return false\n }\n if (typeof dt === 'string') {\n dt = new Date(dt)\n }\n return dt >= gte.value! && dt < lt.value!\n }\n\n function changeAround(dt: Date | string, ms = 0) {\n if (typeof dt === 'string') {\n dt = new Date(dt)\n }\n\n if ((ms === 0 || duration.value === ms) && includes(dt)) {\n // Don't change date range if possible.\n return\n }\n\n if (ms) {\n duration.value = ms\n }\n\n dt = addMilliseconds(dt, duration.value / 2)\n const now = ceilDate(new Date(), MINUTE) // always round up\n dt = min([dt, now])\n changeLT(dt)\n }\n\n //------------------------------------------------------------------------------\n\n function changeGTE(dt: Date) {\n changeLT(addMilliseconds(dt, duration.value))\n }\n\n function changeLT(dt: Date) {\n resetUpdateNowTimer()\n lt.value = dt\n }\n\n //------------------------------------------------------------------------------\n\n const hasPrevPeriod = computed((): boolean => {\n if (!isValid.value) {\n return false\n }\n return true\n // const ms = differenceInMilliseconds(new Date(), gte.value!)\n // return ms < 30 * DAY\n })\n\n function prevPeriod() {\n resetUpdateNowTimer()\n lt.value = subMilliseconds(lt.value!, duration.value)\n }\n\n const hasNextPeriod = computed((): boolean => {\n if (!isValid.value || isNow.value) {\n return false\n }\n const ms = differenceInMilliseconds(new Date(), lt.value!)\n return ms > 15 * MINUTE\n })\n\n function nextPeriod() {\n const ltVal = addMilliseconds(lt.value!, duration.value)\n const nowVal = new Date()\n changeLT(ltVal <= nowVal ? ltVal : nowVal)\n }\n\n //------------------------------------------------------------------------------\n\n function queryParams(prefix = 'time_') {\n if (!isValid.value) {\n return {}\n }\n\n return {\n [prefix + 'gte']: formatUTC(gte.value!),\n [prefix + 'dur']: duration.value / SECOND,\n }\n }\n\n function parseQueryParams(queryParams: Values, prefix = 'time_') {\n const within = queryParams.string(prefix + 'within')\n if (within) {\n const dt = parseUTC(within)\n changeAround(dt, HOUR)\n return\n }\n\n const dur = queryParams.int(prefix + 'dur') * SECOND\n if (!dur) {\n // Preserve the current date range.\n return\n }\n duration.value = dur\n\n const gte = parseUTC(queryParams.string(prefix + 'gte'))\n if (gte) {\n const lt = addMilliseconds(gte, duration.value)\n const ms = differenceInMilliseconds(lt, new Date())\n if (Math.abs(ms) > 5 * MINUTE) {\n changeLT(lt)\n return\n }\n }\n\n updateNow(true)\n }\n\n function axiosParams(conf: ParamsConfig = {}) {\n const prefix = conf.prefix ?? defaultPrefix\n\n if (!isValid.value) {\n if (conf.optional) {\n return {}\n }\n // Return undefined to block axios request.\n return {\n [prefix + 'gte']: undefined,\n [prefix + 'lt']: undefined,\n }\n }\n\n let gteVal = gte.value!\n let ltVal = lt.value!\n\n if (conf.offset) {\n gteVal = addMilliseconds(gteVal, conf.offset)\n ltVal = addMilliseconds(ltVal, conf.offset)\n }\n\n const params: Record = {\n ...forceReload.params,\n [prefix + 'gte']: gteVal.toISOString(),\n [prefix + 'lt']: ltVal.toISOString(),\n }\n\n return params\n }\n\n function roundUp() {\n roundUpEnabled.value = true\n updateNow()\n\n onBeforeUnmount(() => {\n roundUpEnabled.value = false\n updateNow()\n })\n }\n\n function toArray() {\n if (isValid.value) {\n return [gte.value, lt.value]\n }\n return []\n }\n\n return proxyRefs({\n gte,\n lt,\n duration,\n\n isValid,\n isNow,\n\n datePicker,\n timePicker,\n\n reload,\n reloadNow,\n autoReloadEnabled,\n toggleAutoReload,\n\n reset,\n change,\n changeDuration,\n syncWith,\n\n includes,\n changeAround,\n\n changeGTE,\n changeLT,\n\n hasPrevPeriod,\n prevPeriod,\n hasNextPeriod,\n nextPeriod,\n\n roundUp,\n toArray,\n\n axiosParams,\n queryParams,\n parseQueryParams,\n })\n}\n\nexport function useDateRangeFrom(other: UseDateRange | undefined) {\n provideForceReload()\n const dateRange = useDateRange()\n if (other) {\n dateRange.syncWith(other)\n }\n return dateRange\n}\n","import { proxyRefs, computed, ComputedRef } from 'vue'\n\n// Composables\nimport { useWatchAxios } from '@/use/watch-axios'\nimport { Project } from '@/org/use-projects'\n\nexport enum AchievName {\n ConfigureTracing = 'configure-tracing',\n ConfigureMetrics = 'configure-metrics',\n InstallCollector = 'install-collector',\n CreateMetricMonitor = 'create-metric-monitor',\n}\n\nexport interface AchievementData {\n id: string\n userId: number\n projectId: number\n name: AchievName\n}\n\ninterface Achievement {\n name: AchievName\n title: string\n subtitle: string\n data?: AchievementData\n attrs: ListItemAttrs\n}\n\ninterface ListItemAttrs {\n to?: Record\n href?: string\n target?: string\n}\n\nexport type UseAchievements = ReturnType\n\nexport const useAchievements = function (project: ComputedRef) {\n const allAchievements = computed((): Achievement[] => {\n const items: Achievement[] = [\n {\n name: AchievName.ConfigureTracing,\n title: 'Start sending traces to Uptrace',\n subtitle: 'Configure OpenTelemetry to export spans to Uptrace',\n attrs: {\n to: { name: 'TracingHelp' },\n },\n },\n {\n name: AchievName.ConfigureMetrics,\n title: 'Start sending metrics to Uptrace',\n subtitle: 'Configure OpenTelemetry to export metrics to Uptrace',\n attrs: {\n to: { name: 'MetricsHelp' },\n },\n },\n {\n name: AchievName.InstallCollector,\n title: 'Install OpenTelemetry Collector',\n subtitle: 'Monitor infrastructure metrics with Otel Collector',\n attrs: {\n href: 'https://uptrace.dev/get/ingest/collector.html',\n target: '_blank',\n },\n },\n {\n name: AchievName.CreateMetricMonitor,\n title: 'Monitor spans and metrics',\n subtitle: 'Get notified to resolve incidents in time',\n attrs: {\n to: {\n name: 'MonitorList',\n },\n },\n },\n ]\n\n return items\n })\n\n const { data, reload } = useWatchAxios(() => {\n return {\n url: `/internal/v1/projects/${project.value.id}/achievements`,\n }\n })\n\n const completed = computed((): AchievementData[] => {\n return data.value?.achievements ?? []\n })\n\n const achievements = computed((): Achievement[] => {\n return allAchievements.value.map((achv) => {\n const data = completed.value.find((item) => item.name === achv.name)\n if (data) {\n achv = mergeAchievement(achv, data)\n }\n return achv\n })\n })\n\n function isCompleted(achievement: Achievement) {\n return Boolean(achievement.data)\n }\n\n return proxyRefs({\n reload,\n\n items: achievements,\n completed,\n isCompleted,\n })\n}\n\nfunction mergeAchievement(achv: Achievement, other: AchievementData): Achievement {\n return {\n ...achv,\n data: other,\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-navigation-drawer',{attrs:{\"value\":_vm.value,\"app\":\"\",\"temporary\":_vm.temporary,\"mini-variant\":_vm.mini},on:{\"input\":function($event){return _vm.$emit('input', $event)}},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-divider'),_c('v-list',{staticClass:\"list--hoverable\"},[(_vm.project.data)?_c('HowToMenu',{attrs:{\"project\":_vm.project.data}}):_vm._e(),(_vm.project.data)?_c('GetStartedMenu',{attrs:{\"project\":_vm.project.data}}):_vm._e(),(_vm.user.isAuth)?_c('UserMenu'):_vm._e()],1)]},proxy:true}])},[(_vm.mini)?[_c('v-row',{attrs:{\"justify\":\"center\",\"align\":\"center\",\"no-gutters\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.mini ? 'Expand menu' : 'Minimize menu'},on:{\"click\":function($event){_vm.mini = !_vm.mini}}},[_c('v-icon',[_vm._v(_vm._s(_vm.mini ? 'mdi-unfold-more-vertical' : 'mdi-unfold-less-vertical'))])],1)],1),_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.temporary ? 'Keep menu open' : 'Undock menu'},on:{\"click\":function($event){_vm.temporary = !_vm.temporary}}},[_c('v-icon',[_vm._v(_vm._s(_vm.temporary ? 'mdi-dock-left' : 'mdi-dock-window'))])],1)],1)],1),_c('v-divider')]:_c('v-system-bar',{attrs:{\"window\":\"\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.mini ? 'Expand menu' : 'Minimize menu'},on:{\"click\":function($event){_vm.mini = !_vm.mini}}},[_c('v-icon',[_vm._v(_vm._s(_vm.mini ? 'mdi-unfold-more-vertical' : 'mdi-unfold-less-vertical'))])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"title\":_vm.temporary ? 'Keep menu open' : 'Hide menu'},on:{\"click\":function($event){_vm.temporary = !_vm.temporary}}},[_c('v-icon',[_vm._v(_vm._s(_vm.temporary ? 'mdi-dock-left' : 'mdi-dock-window'))])],1)],1),_c('v-list',{staticClass:\"list--hoverable\"},[(_vm.user.isAuth && !_vm.user.projects.length)?_c('v-list-item',{attrs:{\"to\":{ name: 'ProjectNew' }}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"text-h6\"},[_vm._v(\"New project\")])],1)],1):_vm._e(),(_vm.project.data)?_c('ProjectMenu',{attrs:{\"project\":_vm.project.data}}):_vm._e()],1),_c('v-divider'),(_vm.project.data)?_c('ProjectNavigationList',{staticClass:\"list--hoverable\",attrs:{\"project\":_vm.project.data}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"nudge-left\":1},scopedSlots:_vm._u([{key:\"activator\",fn:function({ attrs, on }){return [_c('v-list-item',_vm._g(_vm._b({staticClass:\"px-2\"},'v-list-item',attrs,false),on),[_c('v-list-item-avatar',[_c('v-avatar',{attrs:{\"color\":\"primary\",\"size\":\"36\"}},[_c('span',{staticClass:\"white--text text-h5\"},[_vm._v(_vm._s(_vm.project.name.at(0)))])])],1),_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"text-h6\"},[_vm._v(_vm._s(_vm.project.name))])],1),_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-menu-down\")])],1)],1)]}}])},[_c('v-list',_vm._l((_vm.user.projects),function(project){return _c('v-list-item',{key:project.id,attrs:{\"to\":{ name: 'Overview', params: { projectId: project.id } }},on:{\"click\":function($event){return _vm.saveLastProjectId(project.id)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(project.name))])],1)],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { useUser } from '@/org/use-users'\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'ProjectMenu',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup() {\n const user = useUser()\n\n function saveLastProjectId(projectId: number) {\n user.lastProjectId = projectId\n }\n\n return { user, saveLastProjectId }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectMenu.vue?vue&type=template&id=49325f0e&scoped=true&\"\nimport script from \"./ProjectMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49325f0e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list',_vm._l((_vm.items),function(item,i){return _c('div',{key:i},[(!item.children)?_c('v-list-item',{attrs:{\"to\":item.to}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)],1):_c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"nudge-left\":1},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({attrs:{\"ripple\":\"\",\"to\":item.to,\"title\":item.text}},'v-list-item',attrs,false),on),[_c('v-list-item-action',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"dense\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1)]}}],null,true)},[_c('v-list',_vm._l((item.children),function(child){return _c('v-list-item',{key:child.text,attrs:{\"to\":child.to,\"exact-path\":\"\"}},[_c('v-list-item-title',[_vm._v(_vm._s(child.text))])],1)}),1)],1)],1)}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'ProjectNavigationList',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const projectParams = computed(() => {\n return { projectId: props.project.id }\n })\n\n const items = computed(() => {\n const items: any[] = [\n {\n text: 'Overview',\n to: { name: 'Overview', params: projectParams.value },\n icon: 'mdi-monitor-dashboard',\n children: [\n {\n text: 'Systems',\n to: { name: 'SystemOverview', params: projectParams.value },\n },\n {\n text: 'Service graph',\n to: { name: 'ServiceGraph', params: projectParams.value },\n },\n {\n text: 'Slowest groups',\n to: { name: 'SlowestGroups', params: projectParams.value },\n },\n ],\n },\n {\n text: 'Traces & Logs',\n to: {\n name: 'SpanGroupList',\n params: projectParams.value,\n },\n icon: 'mdi-graph',\n },\n {\n text: 'Metrics',\n to: { name: 'DashboardList', params: projectParams.value },\n icon: 'mdi-chart-bar',\n children: [\n {\n text: 'Dashboards',\n to: { name: 'DashboardList', params: projectParams.value },\n },\n {\n text: 'Explore metrics',\n to: { name: 'MetricsExplore', params: projectParams.value },\n },\n ],\n },\n {\n text: 'Alerting',\n to: { name: 'AlertList', params: projectParams.value },\n icon: 'mdi-bell-outline',\n children: [\n {\n text: 'Alerts',\n to: { name: 'AlertList', params: projectParams.value },\n },\n {\n text: 'Monitors',\n to: { name: 'MonitorList', params: projectParams.value },\n },\n {\n text: 'Notifications channels',\n to: { name: 'NotifChannelList', params: projectParams.value },\n },\n {\n text: 'Email notifications',\n to: { name: 'NotifChannelEmail', params: projectParams.value },\n },\n {\n text: 'Annotations',\n to: { name: 'AnnotationList', params: projectParams.value },\n },\n ],\n },\n ]\n\n items.push({\n text: 'Project',\n to: { name: 'ProjectShow', params: projectParams.value },\n icon: 'mdi-cog-outline',\n children: [\n {\n text: 'Settings',\n to: { name: 'ProjectShow', params: projectParams.value },\n },\n {\n text: 'Data Source Name',\n to: { name: 'ProjectDsn', params: projectParams.value },\n },\n ],\n })\n\n return items\n })\n\n return {\n items,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectNavigationList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./ProjectNavigationList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProjectNavigationList.vue?vue&type=template&id=4a54ded0&scoped=true&\"\nimport script from \"./ProjectNavigationList.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProjectNavigationList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a54ded0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.numAchievCompleted < _vm.numAchievTotal)?_c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"nudge-left\":1},scopedSlots:_vm._u([{key:\"activator\",fn:function({ attrs, on }){return [_c('v-list-item',_vm._g(_vm._b({staticClass:\"px-2\",attrs:{\"title\":\"Get started\"}},'v-list-item',attrs,false),on),[_c('v-list-item-avatar',[_c('v-progress-circular',{attrs:{\"value\":(_vm.numAchievCompleted / _vm.numAchievTotal) * 100}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" Get started \"),_c('span',{staticClass:\"ml-2 text-body-2\"},[_vm._v(_vm._s(_vm.numAchievCompleted)+\" / \"+_vm._s(_vm.numAchievTotal))])])],1),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"dense\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1)]}}],null,false,2910864366)},[_c('v-sheet',{attrs:{\"max-width\":\"550\"}},[_c('v-list',_vm._l((_vm.achievements.items),function(item){return _c('v-list-item',_vm._b({key:item.name,class:{ completed: _vm.achievements.isCompleted(item) }},'v-list-item',item.attrs,false),[_c('v-list-item-icon',[(_vm.achievements.isCompleted(item))?_c('v-icon',{attrs:{\"size\":\"30\",\"color\":\"green lighten-2\"}},[_vm._v(\" mdi-check-circle \")]):_c('v-icon',{attrs:{\"size\":\"30\",\"color\":\"grey lighten-1\"}},[_vm._v(\" mdi-checkbox-blank-circle-outline \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.title))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(item.subtitle))])],1)],1)}),1)],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { useAchievements } from '@/org/use-achievements'\n\n// Misc\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'GetStartedMenu',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const achievements = useAchievements(computed(() => props.project))\n\n const numAchievTotal = computed(() => {\n return achievements.items.length\n })\n\n const numAchievCompleted = computed(() => {\n return achievements.items.filter((achv) => {\n return achv.data && achievements.isCompleted(achv)\n }).length\n })\n\n return {\n achievements,\n\n numAchievTotal,\n numAchievCompleted,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GetStartedMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GetStartedMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GetStartedMenu.vue?vue&type=template&id=482016e2&scoped=true&\"\nimport script from \"./GetStartedMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./GetStartedMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"482016e2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"nudge-left\":1},scopedSlots:_vm._u([{key:\"activator\",fn:function({ attrs, on }){return [_c('v-list-item',_vm._g(_vm._b({attrs:{\"ripple\":\"\"}},'v-list-item',attrs,false),on),[_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-help-circle-outline\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to?\")])],1),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"dense\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1)]}}])},[_c('v-sheet',{attrs:{\"max-width\":\"550\"}},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":{ name: 'ProjectDsn', params: _vm.params }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to find my project DSN?\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'TracingHelp', params: _vm.params }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to setup tracing?\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'MetricsHelp', params: _vm.params }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to collect metrics?\")])],1)],1),_c('v-list-item',{attrs:{\"href\":\"https://uptrace.dev/get/logging.html\",\"target\":\"_blank\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to monitor logs?\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'TracingCheatsheet', params: _vm.params }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to query spans?\")])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'MetricsCheatsheet', params: _vm.params }}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"How to query metrics?\")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed, PropType } from 'vue'\n\n// Composables\nimport { Project } from '@/org/use-projects'\n\nexport default defineComponent({\n name: 'ProjectMenu',\n\n props: {\n project: {\n type: Object as PropType,\n required: true,\n },\n },\n\n setup(props) {\n const params = computed(() => {\n return { projectId: props.project.id }\n })\n return { params }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HowToMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./HowToMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HowToMenu.vue?vue&type=template&id=2fee03d6&scoped=true&\"\nimport script from \"./HowToMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./HowToMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2fee03d6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-x\":\"\",\"right\":\"\",\"nudge-left\":1},scopedSlots:_vm._u([{key:\"activator\",fn:function({ attrs, on }){return [_c('v-list-item',_vm._g(_vm._b({staticClass:\"px-2\",attrs:{\"two-line\":\"\",\"to\":{ name: 'UserProfile' },\"title\":\"User\"}},'v-list-item',attrs,false),on),[_c('v-list-item-avatar',[_c('v-avatar',{attrs:{\"size\":\"36\"}},[_c('img',{attrs:{\"alt\":\"Avatar\",\"src\":_vm.user.current.avatar}})])],1),_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.user.current.name || _vm.user.current.email)+\" \")]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.user.current.email))])],1),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"dense\":\"\"}},[_vm._v(\"mdi-chevron-right\")])],1)],1)]}}])},[_c('v-list',[_c('v-list-item',{attrs:{\"to\":{ name: 'UserProfile' },\"exact-path\":\"\"}},[_c('v-list-item-title',[_vm._v(\"Profile\")])],1),_c('v-list-item',{attrs:{\"to\":{ name: 'DataUsage' },\"exact-path\":\"\"}},[_c('v-list-item-title',[_vm._v(\"Data usage\")])],1),_c('v-list-item',{on:{\"click\":_vm.user.logout}},[_c('v-list-item-title',[_vm._v(\"Sign out\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useUser } from '@/org/use-users'\n\nexport default defineComponent({\n name: 'UserMenu',\n\n setup() {\n const user = useUser()\n return { user }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=18a06921&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"18a06921\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useStorage } from '@/use/local-storage'\nimport { useUser } from '@/org/use-users'\nimport { useProject } from '@/org/use-projects'\n\n// Components\nimport ProjectMenu from '@/system/ProjectMenu.vue'\nimport ProjectNavigationList from '@/system/ProjectNavigationList.vue'\nimport GetStartedMenu from '@/system/GetStartedMenu.vue'\nimport HowToMenu from '@/system/HowToMenu.vue'\nimport UserMenu from '@/system/UserMenu.vue'\n\nexport default defineComponent({\n name: 'AppNavigation',\n components: { ProjectMenu, ProjectNavigationList, GetStartedMenu, HowToMenu, UserMenu },\n\n props: {\n value: {\n type: Boolean,\n required: true,\n },\n },\n\n setup() {\n const temporary = useStorage('navigation-temporary', false)\n const mini = useStorage('navigation-mini', false)\n\n const user = useUser()\n const project = useProject()\n\n return {\n temporary,\n mini,\n\n user,\n project,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNavigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppNavigation.vue?vue&type=template&id=e0c8adf6&\"\nimport script from \"./AppNavigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppNavigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppNavigation.vue?vue&type=style&index=0&id=e0c8adf6&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-snackbar',{attrs:{\"color\":_vm.snackbar.color,\"timeout\":_vm.snackbar.timeout,\"top\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function({ attrs }){return [_c('v-btn',_vm._b({attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.snackbar.active = false}}},'v-btn',attrs,false),[_vm._v(\"Close\")])]}}]),model:{value:(_vm.snackbar.active),callback:function ($$v) {_vm.$set(_vm.snackbar, \"active\", $$v)},expression:\"snackbar.active\"}},[_c('span',[_vm._v(_vm._s(_vm.snackbar.notification))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useSnackbar } from '@/use/snackbar'\n\nexport default defineComponent({\n name: 'GlobalSnackbar',\n\n setup() {\n return { snackbar: useSnackbar() }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalSnackbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalSnackbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GlobalSnackbar.vue?vue&type=template&id=3192f8b4&scoped=true&\"\nimport script from \"./GlobalSnackbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./GlobalSnackbar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3192f8b4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"max-width\":_vm.width},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.cancel.apply(null, arguments)}},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary\",\"dense\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',{staticClass:\"white--text\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])],1),_c('v-card-text',{staticClass:\"pa-4\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.message)}})]),_c('v-card-actions',{staticClass:\"pt-0\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"data-cy\":\"cancel-btn\"},on:{\"click\":_vm.cancel}},[_vm._v(\"No\")]),_c('v-btn',{attrs:{\"color\":\"primary darken-1\",\"text\":\"\",\"data-cy\":\"yes-btn\"},on:{\"click\":_vm.agree}},[_vm._v(\"Yes\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent } from 'vue'\n\n// Composables\nimport { useConfirm } from '@/use/confirm'\n\nexport default defineComponent({\n name: 'GlobalConfirm',\n\n setup() {\n return useConfirm()\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalConfirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./GlobalConfirm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GlobalConfirm.vue?vue&type=template&id=530153e2&scoped=true&\"\nimport script from \"./GlobalConfirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./GlobalConfirm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"530153e2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.value)?_c('v-text-field',{ref:\"textField\",staticStyle:{\"width\":\"360px\"},attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"placeholder\":\"Search or jump to trace id...\",\"hide-details\":\"\",\"flat\":\"\",\"solo\":\"\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.submit.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.hideSearch.apply(null, arguments)}],\"blur\":_vm.hideSearch},model:{value:(_vm.searchInput),callback:function ($$v) {_vm.searchInput=$$v},expression:\"searchInput\"}}):_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.showSearch}},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, nextTick } from 'vue'\n\n// Composables\nimport { useRouterOnly } from '@/use/router'\n\nconst TRACE_ID_RE = /^([0-9a-f]{32}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/i\n\nexport default defineComponent({\n name: 'AppSearch',\n\n props: {\n value: {\n type: Boolean,\n required: true,\n },\n },\n\n setup(props, ctx) {\n const router = useRouterOnly()\n\n const textField = shallowRef()\n const searchInput = shallowRef('')\n\n function showSearch() {\n ctx.emit('input', true)\n nextTick(() => {\n textField.value.focus()\n })\n }\n\n function hideSearch() {\n ctx.emit('input', false)\n }\n\n function submit() {\n if (!searchInput.value) {\n return\n }\n\n const str = searchInput.value.trim()\n searchInput.value = ''\n hideSearch()\n\n if (TRACE_ID_RE.test(str)) {\n router.push({\n name: 'TraceFind',\n params: { traceId: str },\n })\n return\n }\n\n router\n .push({\n name: 'SpanGroupList',\n query: {\n search: str,\n },\n })\n .catch(() => {})\n }\n\n return {\n textField,\n searchInput,\n\n showSearch,\n hideSearch,\n\n submit,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppSearch.vue?vue&type=template&id=28c2a43e&scoped=true&\"\nimport script from \"./AppSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28c2a43e\",\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, provide } from 'vue'\n\n// Composables\nimport { useStorage } from '@/use/local-storage'\nimport { useDarkMode } from '@/use/dark-mode'\nimport { provideForceReload } from '@/use/force-reload'\nimport { useDateRange } from '@/use/date-range'\nimport { useUser } from '@/org/use-users'\nimport { useProject } from '@/org/use-projects'\n\n// Components\nimport AppNavigation from '@/system/AppNavigation.vue'\nimport GlobalSnackbar from '@/components/GlobalSnackbar.vue'\nimport GlobalConfirm from '@/components/GlobalConfirm.vue'\nimport AppSearch from '@/components/AppSearch.vue'\n\n// Misc\nimport { HOUR } from '@/util/fmt/date'\n\nexport default defineComponent({\n name: 'App',\n components: {\n AppNavigation,\n GlobalSnackbar,\n GlobalConfirm,\n AppSearch,\n },\n\n setup() {\n const { isDark, toggleDark } = useDarkMode()\n const navigation = useStorage('navigation-drawer', true)\n\n // Make these global across the app.\n provideForceReload()\n\n const header = shallowRef(true)\n provide('header', header)\n\n const footer = shallowRef(true)\n provide('footer', footer)\n\n const searchVisible = shallowRef(false)\n\n const dateRange = useDateRange()\n dateRange.changeDuration(HOUR)\n\n const user = useUser()\n const project = useProject()\n\n return {\n isDark,\n toggleDark,\n\n navigation,\n header,\n footer,\n searchVisible,\n dateRange,\n\n user,\n project,\n }\n },\n})\n","import mod from \"-!../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=5dbf38da&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=5dbf38da&prod&lang=scss&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&id=5dbf38da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dbf38da\",\n null\n \n)\n\nexport default component.exports","// MIT License\n\n// Copyright (c) 2017 Collin Henderson\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nimport { DirectiveOptions } from 'vue'\nimport { DirectiveBinding } from 'vue/types/options'\n\nconst directive: DirectiveOptions = {\n bind(el) {\n const input = findInput(el)\n input.style.boxSizing = 'content-box'\n },\n inserted(el, binding) {\n const input = findInput(el)\n const styles = window.getComputedStyle(input)\n const mirror = document.createElement('div')\n\n Object.assign(mirror.style, {\n position: 'absolute',\n top: '0',\n left: '0',\n visibility: 'hidden',\n height: '0',\n overflow: 'hidden',\n whiteSpace: 'pre',\n fontSize: styles.fontSize,\n fontFamily: styles.fontFamily,\n fontWeight: styles.fontWeight,\n fontStyle: styles.fontStyle,\n letterSpacing: styles.letterSpacing,\n textTransform: styles.textTransform,\n })\n\n mirror.setAttribute('aria-hidden', 'true')\n\n document.body.appendChild(mirror)\n input.mirror = mirror\n\n checkWidth(input, binding)\n input.addEventListener('input', checkWidth.bind(null, input, binding))\n },\n componentUpdated(el, binding) {\n checkWidth(findInput(el), binding)\n },\n unbind(el, binding) {\n const input = findInput(el)\n document.body.removeChild(input.mirror)\n el.removeEventListener('input', checkWidth.bind(null, input, binding))\n },\n}\nexport default directive\n\ninterface MyHTMLInputElement extends HTMLInputElement {\n mirror: HTMLDivElement\n}\n\nfunction findInput(el: HTMLElement): MyHTMLInputElement {\n if (el.tagName.toUpperCase() === 'INPUT') {\n return el as MyHTMLInputElement\n }\n\n const input = el.querySelector('input')\n if (!input) {\n throw new Error('v-autowidth can only be used on elements with an input')\n }\n return input as MyHTMLInputElement\n}\n\nfunction checkWidth(el: MyHTMLInputElement, binding: DirectiveBinding) {\n const mirror = el.mirror\n\n let { minWidth, maxWidth, comfortZone } = binding.value\n if (minWidth) {\n if (typeof minWidth === 'number') {\n el.style.minWidth = minWidth + 'px'\n } else {\n el.style.minWidth = minWidth\n }\n }\n if (maxWidth) {\n if (typeof maxWidth === 'number') {\n el.style.maxWidth = maxWidth + 'px'\n } else {\n el.style.maxWidth = maxWidth\n }\n }\n comfortZone ??= 0\n\n let val = el.value\n\n if (!val) {\n val = el.placeholder || ''\n }\n\n while (mirror.childNodes.length) {\n mirror.removeChild(mirror.childNodes[0])\n }\n\n mirror.appendChild(document.createTextNode(val))\n\n let newWidth = mirror.scrollWidth + comfortZone + 2\n if (typeof maxWidth === 'number' && newWidth > maxWidth) {\n newWidth = maxWidth\n }\n\n if (newWidth != el.scrollWidth) {\n el.style.width = `${newWidth}px`\n }\n}\n","import { DirectiveOptions } from 'vue'\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst elementResizeDetectorMaker = require('element-resize-detector')\n\nconst erd = elementResizeDetectorMaker({\n strategy: 'scroll',\n})\n\nconst directive: DirectiveOptions = {\n bind(el, binding, vnode) {\n let options = {}\n\n if (typeof binding.value === 'boolean') {\n if (!binding.value) {\n return\n }\n } else if (binding.value) {\n options = binding.value\n }\n\n erd.listenTo(options, el, (element: HTMLElement) => {\n const event = { width: element.offsetWidth, height: element.offsetHeight }\n\n if (vnode.componentInstance) {\n vnode.componentInstance.$emit('resize', { detail: event })\n } else if (vnode.elm) {\n vnode.elm.dispatchEvent(new CustomEvent('resize', { detail: event }))\n }\n })\n },\n\n unbind(el) {\n erd.uninstall(el)\n },\n}\n\nexport default directive\n","import Vue from 'vue'\nimport autowidth from '@/directives/autowidth'\nimport resize from '@/directives/resize'\n\nVue.directive('autowidth', autowidth)\nVue.directive('element-resize', resize)\n","import Vue from 'vue'\nimport frag from 'vue-frag'\nVue.directive('frag', frag)\n","import axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\n// Misc\nimport { redirectToLogin } from '@/org/use-users'\n\naxiosRetry(axios, { retries: 2, retryDelay: axiosRetry.exponentialDelay })\n\naxios.interceptors.request.use((config) => {\n config.baseURL = process.env.NODE_ENV === 'production' ? '/UPTRACE_PLACEHOLDER/' : '/'\n config.withCredentials = true\n return config\n})\n\naxios.interceptors.response.use(\n (resp) => resp,\n (error) => {\n if (error.response?.status === 401) {\n redirectToLogin()\n }\n return Promise.reject(error)\n },\n)\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"page-toolbar bg--light-primary\"},[(_vm.loading)?_c('v-progress-linear',{attrs:{\"absolute\":\"\",\"indeterminate\":\"\"}}):_vm._e(),_c('v-container',{staticClass:\"py-0\",attrs:{\"fluid\":_vm.localFluid}},[_c('v-toolbar',{attrs:{\"color\":\"transparent\",\"flat\":\"\",\"height\":\"auto\"},scopedSlots:_vm._u([(_vm.$slots.extension)?{key:\"extension\",fn:function(){return [_vm._t(\"extension\")]},proxy:true}:null],null,true)},[_vm._t(\"default\")],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, computed } from 'vue'\nimport vuetify from '@/plugins/vuetify'\n\nexport default defineComponent({\n name: 'PageToolbar',\n\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n fluid: {\n type: Boolean,\n default: undefined,\n },\n },\n\n setup(props) {\n const fluid = computed(() => {\n if (props.fluid !== undefined) {\n return props.fluid\n }\n return vuetify.framework.breakpoint.mdAndDown\n })\n\n return { localFluid: fluid }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PageToolbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PageToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PageToolbar.vue?vue&type=template&id=53d0c614&\"\nimport script from \"./PageToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./PageToolbar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PageToolbar.vue?vue&type=style&index=0&id=53d0c614&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { VNode } from 'vue'\nimport { defineComponent, h } from 'vue'\n\nexport default defineComponent({\n name: 'XPlaceholder',\n\n setup(props, ctx) {\n return () => {\n if (ctx.slots.placeholder) {\n return singleNode(ctx.slots.placeholder())\n }\n if (ctx.slots.default) {\n return singleNode(ctx.slots.default())\n }\n return\n }\n },\n})\n\nfunction singleNode(nodes: VNode[] | VNode) {\n if (Array.isArray(nodes) && nodes.length > 1) {\n return h('div', nodes)\n }\n return nodes\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPlaceholder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPlaceholder.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./XPlaceholder.vue?vue&type=script&lang=ts&\"\nexport * from \"./XPlaceholder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./XPager.vue?vue&type=script&lang=ts&\"\nexport * from \"./XPager.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"154a84b9\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./NumValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./NumValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"690875dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.pager.numPage > 1)?_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[(_vm.showPager)?_c('v-col',{attrs:{\"cols\":\"3\"}}):_vm._e(),_c('v-col',[_c('v-pagination',{attrs:{\"total-visible\":_vm.totalVisible,\"length\":_vm.pager.numPage},model:{value:(_vm.pager.page),callback:function ($$v) {_vm.$set(_vm.pager, \"page\", $$v)},expression:\"pager.page\"}})],1),(_vm.showPager)?_c('v-col',{staticClass:\"text-right\",attrs:{\"cols\":\"3\"}},[(_vm.pager.numItem)?_c('XPager',{attrs:{\"pager\":_vm.pager,\"without-prev-next\":\"\"}}):_vm._e()],1):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue'\nimport { PropType } from 'vue'\nimport { VBtn, VIcon } from 'vuetify/lib'\n\n// Composables\nimport { UsePager } from '@/use/pager'\n\nexport default Vue.component('XPager', {\n functional: true,\n props: {\n pager: {\n type: Object as PropType,\n required: true,\n },\n withoutPrevNext: {\n type: Boolean,\n default: false,\n },\n },\n render(h, { props, data }) {\n const children: any[] = [\n h(\n 'span',\n { class: 'text-body-2' },\n `${props.pager.pos.start + 1} - ${props.pager.pos.end} of ` + `${props.pager.numItem}`,\n ),\n ]\n\n if (!props.withoutPrevNext) {\n children.push(\n h(\n VBtn,\n {\n class: { 'ml-2': true },\n props: {\n icon: true,\n disabled: !props.pager.hasPrev,\n },\n on: {\n click: props.pager.prev,\n },\n },\n [h(VIcon, 'mdi-chevron-left')],\n ),\n )\n children.push(\n h(\n VBtn,\n {\n props: {\n icon: true,\n disabled: !props.pager.hasNext,\n },\n on: {\n click: props.pager.next,\n },\n },\n [h(VIcon, 'mdi-chevron-right')],\n ),\n )\n }\n\n return h(\n 'span',\n {\n ...data,\n },\n children,\n )\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPager.vue?vue&type=script&lang=ts&\"","\nimport { defineComponent, PropType } from 'vue'\n\n// Composables\nimport { UsePager } from '@/use/pager'\n\n// Components\nimport XPager from '@/components/XPager.vue'\n\nexport default defineComponent({\n name: 'XPagination',\n components: { XPager },\n\n props: {\n pager: {\n type: Object as PropType,\n required: true,\n },\n totalVisible: {\n type: [String, Number],\n default: 7,\n },\n showPager: {\n type: Boolean,\n default: true,\n },\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPagination.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./XPagination.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./XPagination.vue?vue&type=template&id=e2fd7604&scoped=true&\"\nimport script from \"./XPagination.vue?vue&type=script&lang=ts&\"\nexport * from \"./XPagination.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e2fd7604\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue'\n\n// Misc\nimport { createFormatter, Unit } from '@/util/fmt'\n\nexport default Vue.component('NumValue', {\n functional: true,\n props: {\n value: {\n type: undefined,\n required: true,\n },\n name: {\n type: String,\n default: '',\n },\n unit: {\n type: String as PropType,\n default: Unit.None,\n },\n },\n render(h, { props }) {\n const fmt = createFormatter(props.unit)\n return h('span', fmt(props.value))\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NumValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./NumValue.vue?vue&type=script&lang=ts&\"","\nimport Vue from 'vue'\nimport {\n toDate,\n date,\n dateShort,\n time,\n datetime,\n datetimeShort,\n datetimeFull,\n relative,\n fromNow,\n} from '@/util/fmt/date'\n\nexport default Vue.component('DateValue', {\n functional: true,\n props: {\n value: {\n type: [String, Date],\n required: true,\n },\n format: {\n type: String,\n default: '',\n },\n },\n\n render(h, { props, data }) {\n const fmt = formatter(props.format)\n\n if (!data.attrs) {\n data.attrs = {}\n }\n\n const dt = toDate(props.value)\n\n if (fmt !== datetimeFull) {\n data.attrs.title = datetimeFull(dt)\n }\n\n return h('span', data, fmt(dt))\n },\n})\n\nfunction formatter(format: string) {\n switch (format) {\n case '':\n return datetime\n case 'time':\n return time\n case 'date':\n return date\n case 'dateShort':\n return dateShort\n case 'short':\n return datetimeShort\n case 'full':\n return datetimeFull\n case 'relative':\n return relative\n case 'from-now':\n return fromNow\n default:\n throw new Error(`unknown format=${format}`)\n }\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DateValue.vue?vue&type=script&lang=ts&\"","var render, staticRenderFns\nimport script from \"./DateValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3e61ed31\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue'\nimport { parse } from 'date-fns'\n\n// Components\nimport DateValue from '@/components/DateValue.vue'\n\n// Misc\nimport { Unit } from '@/util/fmt'\n\nconst BREAK_MIN_LEN = 0\n\nexport default Vue.component('AnyValue', {\n functional: true,\n props: {\n value: {\n type: undefined,\n required: true,\n },\n unit: {\n type: String,\n default: '',\n },\n },\n render(h, { props, data }) {\n if (props.value === null) {\n return h('span', data, '')\n }\n if (props.value === '') {\n return h('span', data, '')\n }\n\n if (Array.isArray(props.value)) {\n const str = props.value.join(', ')\n if (str.length >= BREAK_MIN_LEN) {\n data = { ...data, class: [data.class, 'word-break-all'] }\n }\n return h('span', data, str)\n }\n\n if (typeof props.value === 'number') {\n switch (props.unit) {\n case Unit.UnixTime:\n const unix = props.value as number\n return h(DateValue, {\n props: {\n value: new Date(unix * 1000),\n },\n })\n }\n }\n\n if (typeof props.value !== 'string') {\n return h('span', data, String(props.value))\n }\n\n const date = parse(props.value, \"yyyy-MM-dd'T'HH:mm:ssXXX\", new Date())\n if (!isNaN(date as any)) {\n return h(DateValue, {\n props: {\n value: date,\n },\n })\n }\n\n if (props.value.length >= BREAK_MIN_LEN) {\n data = { ...data, class: [data.class, 'word-break-all'] }\n }\n return h('span', data, props.value)\n },\n})\n","var render, staticRenderFns\nimport script from \"./AnyValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./AnyValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ae9c279e\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./DurationValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./DurationValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"82721b12\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./BytesValue.vue?vue&type=script&lang=ts&\"\nexport * from \"./BytesValue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dfa950e8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnyValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./AnyValue.vue?vue&type=script&lang=ts&\"","\nimport Vue from 'vue'\n\n// Misc\nimport { duration } from '@/util/fmt'\n\nexport default Vue.component('DurationValue', {\n functional: true,\n props: {\n value: {\n type: Number,\n default: undefined,\n },\n },\n\n render(h, { props }) {\n const text = duration(props.value)\n return h('span', text)\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DurationValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./DurationValue.vue?vue&type=script&lang=ts&\"","\nimport Vue from 'vue'\nimport { bytes, numVerbose } from '@/util/fmt'\n\nexport default Vue.component('BytesValue', {\n functional: true,\n props: {\n value: {\n type: Number,\n default: undefined,\n },\n },\n\n render(h, { props, data }) {\n data.attrs = {\n ...data.attrs,\n title: numVerbose(props.value),\n }\n return h('span', data, bytes(props.value))\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./BytesValue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./BytesValue.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-sheet',{ref:\"el\",staticClass:\"x-code\",class:{ 'x-code--wrap': _vm.wrap }},[_c('prism',{style:(_vm.targetStyle),attrs:{\"code\":_vm.code,\"inline\":_vm.inline,\"language\":_vm.language}}),_c('CopyBtn',{staticClass:\"mr-n3 mt-n3\",attrs:{\"target\":_vm.target}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-btn',{staticClass:\"v-btn--copy\",staticStyle:{\"background-color\":\"inherit\"},attrs:{\"absolute\":\"\",\"icon\":\"\",\"right\":\"\",\"top\":\"\"},on:{\"click\":_vm.copy}},[_c('v-fade-transition',{attrs:{\"hide-on-leave\":\"\"}},[_c('v-icon',{key:String(_vm.clicked),attrs:{\"color\":\"grey\"}},[_vm._v(_vm._s(_vm.clicked ? 'mdi-check' : 'mdi-content-copy'))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { defineComponent, shallowRef, PropType } from 'vue'\n\nexport default defineComponent({\n name: 'CopyBtn',\n\n props: {\n target: {\n type: Function as PropType<() => HTMLElement>,\n required: true,\n },\n },\n\n setup(props) {\n const clicked = shallowRef(false)\n\n async function copy() {\n const el = props.target()\n\n el.setAttribute('contenteditable', 'true')\n el.focus()\n\n document.execCommand('selectAll', false)\n document.execCommand('copy')\n removeSelection()\n\n el.removeAttribute('contenteditable')\n\n clicked.value = true\n\n await wait(2000)\n\n clicked.value = false\n }\n\n return { clicked, copy }\n },\n})\n\nfunction removeSelection() {\n if (!window.getSelection) {\n return\n }\n\n const sel = window.getSelection()\n if (!sel) {\n return\n }\n\n if (sel.empty) {\n // Chrome\n sel.empty()\n return\n }\n\n if (sel.removeAllRanges) {\n // Firefox\n sel.removeAllRanges()\n return\n }\n}\n\nfunction wait(timeout: number) {\n return new Promise((resolve) => setTimeout(resolve, timeout))\n}\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyBtn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyBtn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CopyBtn.vue?vue&type=template&id=513e98ea&\"\nimport script from \"./CopyBtn.vue?vue&type=script&lang=ts&\"\nexport * from \"./CopyBtn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { defineComponent, shallowRef, computed } from 'vue'\n\nimport Prism from 'vue-prism-component'\nimport CopyBtn from '@/components/CopyBtn.vue'\n\nexport default defineComponent({\n name: 'PrismCode',\n components: { Prism, CopyBtn },\n\n props: {\n code: {\n type: String,\n required: true,\n },\n language: {\n type: String,\n default: 'markup',\n },\n inline: {\n type: Boolean,\n default: false,\n },\n targetStyle: {\n type: String,\n default: '',\n },\n },\n\n setup(props) {\n const el = shallowRef()\n\n const wrap = computed((): boolean => {\n return !props.code.includes('\\n')\n })\n\n function target() {\n return el.value!.$el.querySelector('pre')\n }\n\n return {\n el,\n wrap,\n target,\n }\n },\n})\n","import mod from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PrismCode.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/.pnpm/thread-loader@3.0.4_webpack@5.80.0/node_modules/thread-loader/dist/cjs.js!../../node_modules/.pnpm/babel-loader@8.3.0_@babel+core@7.21.4_webpack@5.80.0/node_modules/babel-loader/lib/index.js!../../node_modules/.pnpm/ts-loader@9.4.2_typescript@4.9.5_webpack@5.80.0/node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/index.js??vue-loader-options!./PrismCode.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PrismCode.vue?vue&type=template&id=4b514f79&\"\nimport script from \"./PrismCode.vue?vue&type=script&lang=ts&\"\nexport * from \"./PrismCode.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PrismCode.vue?vue&type=style&index=0&id=4b514f79&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/.pnpm/vue-loader@15.10.1_css-loader@6.7.3_vue-template-compiler@2.7.15_webpack@5.80.0/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\n\nimport PageToolbar from '@/components/PageToolbar.vue'\nimport XPlaceholder from '@/components/XPlaceholder.vue'\nimport XPagination from '@/components/XPagination.vue'\nimport NumValue from '@/components/NumValue.vue'\nimport PctValue from '@/components/PctValue.vue'\nimport AnyValue from '@/components/AnyValue.vue'\nimport DateValue from '@/components/DateValue.vue'\nimport DurationValue from '@/components/DurationValue.vue'\nimport BytesValue from '@/components/BytesValue.vue'\nimport PrismCode from '@/components/PrismCode.vue'\nimport PagedSpansCardLazy from '@/tracing/PagedSpansCardLazy.vue'\nimport PagedGroupsCard from '@/tracing/PagedGroupsCard.vue'\n\nVue.component('PageToolbar', PageToolbar)\nVue.component('XPlaceholder', XPlaceholder)\nVue.component('XPagination', XPagination)\nVue.component('NumValue', NumValue)\nVue.component('PctValue', PctValue)\nVue.component('AnyValue', AnyValue)\nVue.component('DateValue', DateValue)\nVue.component('DurationValue', DurationValue)\nVue.component('BytesValue', BytesValue)\nVue.component('PrismCode', PrismCode)\nVue.component('PagedSpansCardLazy', PagedSpansCardLazy)\nVue.component('PagedGroupsCard', PagedGroupsCard)\n\nVue.mixin({\n data() {\n return {\n publicPath: process.env.BASE_URL,\n }\n },\n computed: {\n console: () => console,\n },\n})\n","import Vue from 'vue'\nimport PortalVue from 'portal-vue'\n\nVue.use(PortalVue)\n","import Vue from 'vue'\n\nimport App from '@/App.vue'\nimport router from '@/router'\n\nimport 'roboto-fontface/css/roboto/roboto-fontface.css'\nimport '@mdi/font/css/materialdesignicons.min.css'\nimport '@/styles/index.scss'\n\nimport '@/plugins/directives'\nimport '@/plugins/frag'\nimport '@/plugins/axios'\nimport '@/plugins/prism'\nimport '@/plugins/global'\nimport vuetify from '@/plugins/vuetify'\nimport '@/plugins/portal'\n\nVue.config.productionTip = false\n\nnew Vue({\n router,\n vuetify,\n render: (h) => h(App),\n}).$mount('#app')\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkuptrace_vue\"] = self[\"webpackChunkuptrace_vue\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(461); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["header","staticClass","attrs","_vm","_c","on","navigation","project","model","callback","$$v","toggleDark","_v","staticRenderFns","render","setItem","key","value","localStorage","JSON","stringify","getItem","parse","useStorage","defValue","keyRef","ref","valueRef","item","computed","get","set","watch","immediate","flush","Vue","Vuetify","breakpoint","thresholds","lg","theme","options","variations","defineStore","_create","store","undefined","useDarkMode","isDark","useDark","useToggle","vuetify","framework","dark","document","documentElement","style","setProperty","useForceReload","loading","shallowRef","token","forceReload","slot","Math","trunc","Date","now","setTimeout","params","_force","proxyRefs","do","forceReloadKey","Symbol","provideForceReload","provideLocal","injectForceReload","injectLocal","useSnackbar","notification","active","color","timeout","notifySuccess","s","notify","notifyError","asString","message","sentence","charAt","toUpperCase","substring","escapeRe","replace","quote","length","n","parseFloat","isNaN","toString","truncateMiddle","maxLen","separator","sepLen","charsToShow","frontChars","ceil","backChars","floor","truncated","substr","formatTemplate","format","args","match","number","usePromise","fn","conf","snackbar","result","resultId","rawError","status","Status","Unset","pending","Initing","Reloading","currentId","promised","Rejected","Resolved","promise","localID","then","res","resolve","err","reject","axios","cancel","debounce","debounced","oldCancel","oldResolve","oldReject","Promise","promiseResolve","promiseReject","error","data","response","code","errorMessage","statusCode","traceId","ignoreErrors","StatusValue","constructor","_defineProperty","this","isUnset","initing","isResolved","reloading","isReady","hasData","useAxios","cancelToken","req","isValidReq","ignore","abort","request","config","abortCtrl","signal","addEventListener","url","includes","isValidData","useWatchAxios","source","prevReq","notEqual","stopWatch","reqConf","axiosRequestChanged","makeRequest","onBeforeUnmount","once","stopSelf","reload","AbortController","catch","cloneDeep","finally","IGNORE_KEY_PREFIX","ignoredKeys","keys","Object","filter","startsWith","map","slice","push","hashAxiosRequest","indexOf","useUser","route","useRoute","user","shallowReactive","id","name","budget","isAuth","Boolean","projects","lastProjectId","activeProjectId","projectId","parseInt","found","find","p","async","getOrLoad","logout","method","redirectToLogin","current","router","useSso","methods","defineComponent","component","components","HelpLinks","setup","dsn","proxy","scopedSlots","useProject","pinnedAttrs","largeAttrs","useDsn","URL","insecure","protocol","grpcEndpoint","hostname","port","searchParams","httpEndpoint","host","original","useTitle","breadcrumbs","ss","text","$set","expression","disabled","props","type","required","default","title","String","headers","sortable","tokens","bs","to","alerts","selection","staticStyle","click:alert","showAlert","alert","dialog","activeAlertId","usePager","perPageValue","numItem","page","perPage","pos","start","end","numPage","maxNumPage","hasPrev","prev","hasNext","next","reset","axiosParams","limit","AlertType","AlertStatus","refDebounced","ms","updater","defineProperty","enumerable","useFacetedSearch","queryPrefix","searchInput","debouncedSearchInput","selected","selectedLength","select","toggle","idx","splice","toggleOne","isSelected","resetAll","q","queryParams","parseQueryParams","string","forEach","useOrder","column","desc","watchPaused","icon","sort_by","sort_desc","boolean","change","order","columnValue","thClass","cls","withPausedWatch","cb","useAlerts","facets","items","useAlert","reqSource","useAlertManager","Closed","open","close","toggleAlerts","Open","alertIds","closeAll","del","delete","useAlertSelection","alertsOnPage","selectedAlertIds","activeAlerts","selectedAlertsOnPage","isFullPageSelected","every","isAllSelected","closedAlerts","openAlerts","index","findIndex","alertId","toggleAll","togglePage","allAlerts","_self","_setup","small","facetedSearch","facet","_l","pager","filteredItems","fuzzyFilter","pagedItems","SearchFacetList","Array","SearchFacets","alertMan","useConfirm","width","titleValue","msg","agree","ctx","confirm","emit","closeAlerts","deleteAlerts","directives","$emit","createdAt","updatedAt","_e","spanCount","_setupProxy","currentValue","unit","firing","bounds","max","min","verbose","monitor","columnUnit","AttrKey","spanCountPerMin","timeseries","time","useGroups","axiosParamsSource","hasMore","lastAxiosParams","_","groups","queryInfo","query","columns","plottableColumns","col","isGroup","isNum","hasMoreValue","orderValue","useGroupTimeseries","paramsSource","cache","metrics","_time","chart","height","option","group","withUnit","popover","annotation","annotationId","domProps","truncate","AnnotationAttrs","Number","annotations","echart","div","ann","addAnnotation","init","initChart","initAnnotations","register","destroy","unregister","dispose","onMounted","setOptionDebounced","showLoading","hideLoading","usePopover","dom","getDom","annId","seriesId","event","x","clientX","y","getBoundingClientRect","top","clientHeight","menu","setOption","notMerge","silent","onResizeDebounced","resize","v","groupMap","groupName","connect","payload","makeActionFromEvent","axesInfo","i","axisDim","c","dispatchAction","legend","NaN","ds","dataset","isArray","dsMin","dsMax","series","symbol","colors","lineStyle","symbolSize","z","triggerLineEvent","md","markdownit","descriptionMarkdown","description","attrKeys","sort","SystemName","EventName","Metric","Unit","isSpanSystem","systems","system","All","isEventOrLogSystem","isEventSystem","isLogSystem","EventsAll","OtherEvents","MessagePrefix","isErrorSystem","LogError","LogFatal","LogPanic","systemMatches","pattern","SpansAll","LogAll","systemType","systemName","splitTypeSystem","isGroupSystem","endsWith","typ","UNITS","None","Bytes","Nanoseconds","Microseconds","Milliseconds","Seconds","Percents","isCustomUnit","unitShortName","Utilization","Kilobytes","Megabytes","Gigabytes","Terabytes","trimMantissa","mantissa","formatNum","numbro","forceSign","mantissaSize","abs","threshold","pow","inflect","singular","plural","num","suffix","numShort","round","toExponential","numVerbose","thousandSeparated","percents","optionalMantissa","utilization","output","mul","EPSILON","MILLISECOND","SECOND","MINUTE","HOUR","DAY","toDate","test","unix","date","fmt","formatDate","dateShort","datetime","datetimeShort","datetimeFull","parseISO","getTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","other","locale","enGB","formatRelative","relative","fromNow","formatDistanceToNow","basicFormat","formatUTC","dt","toUTC","parseUTC","isValid","toLocal","addMilliseconds","getTimezoneOffset","subMilliseconds","ceilDate","prec","r","truncDate","duration","short","durationShort","bytes","bytesShort","val","createFormatter","none","Time","adjustNumber","unwrapUnit","createShortFormatter","noneShort","createVerboseFormatter","mod","contrastColor","backgroundColor","axisCommon","axisLine","splitLine","splitArea","areaStyle","minorSplitLine","colorPalette","darkMode","axisPointer","crossStyle","label","textStyle","subtextStyle","toolbox","iconStyle","borderColor","dataZoom","brushStyle","handleStyle","moveHandleStyle","opacity","fillerColor","emphasis","dataBackground","selectedDataBackground","visualMap","timeline","controlStyle","calendar","itemStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","categoryAxis","line","graph","gauge","axisLabel","detail","candlestick","color0","borderColor0","show","baseChartConfig","animation","fontFamily","grid","xAxis","yAxis","tooltip","addChartTooltip","cfg","tooltipCfg","trigger","appendToBody","link","xAxisIndex","className","join","createTooltipFormatter","formatter","getFormatter","columnName","rows","encode","seriesName","cssClass","highlighted","seriesIndex","marker","hideDate","axisValueLabel","axisPointerFormatter","toNumber","axisLabelFormatter","registerTheme","customDark","seriesNameRe","m","EChart","left","right","borderWidth","axisTick","plotLine","showSymbol","SparklineChart","dateRange","useDateRange","changeAround","spanGroupId","sparkline","eChart","DashKind","GridItemType","ChartKind","LegendType","LegendPlacement","LegendValue","MappingOp","Instrument","TableFunc","emptyBaseGridItem","dashId","dashKind","Invalid","rowId","emptyValueMapping","op","Equal","emptyMetric","instrument","Deleted","emptyMetricColumn","emptyGaugeColumn","aggFunc","Median","tableFuncItems","Min","Max","Sum","Avg","AvgZero","Last","emptyTableColumn","sparklineDisabled","defaultTimeseriesStyle","lineWidth","defaultChartLegend","List","placement","Bottom","values","maxLength","updateColumnMap","colMap","empty","unused","Set","tableFunc","colName","assignColors","colorSet","colorScheme","from","useTimeseries","parts","part","ts","reactive","last","lastValue","avg","avgValue","minValue","maxValue","emptyValue","fill","ns","sum","count","MAX_VALUE","MIN_VALUE","useStyledTimeseries","columnMap","timeseriesMap","pick","metric","seen","has","add","useTableQuery","tableAgg","search","table_agg","sortedItems","orderBy","aggColumns","groupingColumns","queryError","useHeatmapQuery","heatmap","heatmapData","alias","$event","MetricMonitorTrigger","AlertSparklineError","AlertSparklineMetric","AlertChips","statusColor","AlertsTableRow","fluid","milliseconds","periods","activePeriod","period","formatDistance","onChange","periodsForDays","days","PeriodPickerMenu","rangeDays","showReload","around","onInputPeriod","watchEffect","useSpans","spans","useSpan","axiosReqSource","span","class","traceRoute","spanGroupRoute","activeTab","events","QUERY_PART_SEP","useUql","queryValue","rawMode","parseParts","formatParts","whereQuery","addPart","removePart","needle","cleanup","setQueryInfo","otherPart","paramName","createEditor","QueryEditor","commitEdits","editor","splitQuery","createQueryPart","random","createQueryEditor","joinQuery","exploreAttr","isSpan","where","replaceOrPush","RegExp","re","replaceOrUnshift","unshift","groupBy","resetGroupBy","split","trim","injectionKey","injectQueryStore","inject","useQueryStore","provideQueryStore","provide","uql","emptyAnnotation","useAnnotations","useAnnotation","useAnnotationManager","create","update","injectAnnotations","useMetrics","noData","useExploreMetrics","search_input","useActiveMetrics","activeMetrics","defaultMetricQuery","Gauge","Additive","Counter","Histogram","Summary","console","defaultMetricAlias","metricName","lastIndexOf","snakeCase","menuItems","routeFor","activePrefix","prefix","prettyPrint","dbStmtPretty","dbStmtJson","exceptionStacktrace","attrKey","groupId","rawName","attrValues","attrValue","quotedValue","createLink","routeName","exact","_u","queryPartItems","activeQueryParts","plottedColumns","group_id","SpanAttrValue","SpanAttrValues","isExpanded","expand","flag","SpanAttrsTableRow","isEvent","OTHER_PREFIX","sep","buildPrefixes","prefixMap","Map","addKey","size","compactPrefixMap","prefixes","prefixMapToList","otherKeys","buildOtherKeys","otherPrefix","a","b","localeCompare","keyMatches","parseJson","isJson","specialKeys","LARGE_ATTR_THRESHOLD","SpanAttrsTable","isBlacklistedKey","dbStmt","sqlLanguage","supportedDialects","language","obj","isInternalKey","json","pretty","filteredAttrs","panels","spanListRoute","_t","stats","rate","usePercentiles","axiosSource","selDateRange","countPerMin","computedGroup","EventRateChart","SpanAttrs","NewMonitorMenu","useRouter","percentiles","EventPanelContent","flat","hasAttrs","$vuetify","getMetric","slowestSpansAxiosParams","failedSpansAxiosParams","statusMessagesQuery","useGroup","firstSeenAt","lastSeenAt","summary","errorRate","p50","p90","p99","markPoint","percentilesChart","internalGroup","rateChart","errorsPerMin","splitNumber","graphic","offset","addMarkPoint","datasetIndex","PercentilesChart","deletable","_s","info","splitKeywordExpr","GROUP_BY","WHERE","keyword","expr","UptraceQueryChip","showPlottedColumnItems","hideActions","PercentilesChartLazy","UqlCardReadonly","PagedGroupsCardLazy","slowestSpansQuery","failedSpansQuery","EventPanels","GroupInfoCard","standalone","SpanBodyCard","spanId","resolved","chartKind","Line","minAllowedValue","maxAllowedValue","eventBus","columnFormatter","feature","saveAsImage","hideOverlap","plotTimeseries","markArea","borderType","zIndex","yAxisIndex","focus","connectNulls","Area","Bar","StackedArea","stack","StackedBar","hover","el","MonitorType","MonitorState","MetricChart","currentValueVerbose","dur","numPointFiring","hours","minutes","formatDuration","styledTimeseries","tables","routeForSpans","FixedDateRangePicker","AlertCardSpan","AlertCardMetric","toggleAlert","ForceReloadBtn","AlertsSidebar","AlertSelection","AlertOrderPicker","AlertsTable","AlertCard","pageAlerts","useSyncQueryParams","fromQuery","setDefault","toQuery","$route","mdAndDown","lgAndDown","monitors","emptyMetricMonitor","state","Active","notifyEveryoneByEmail","checkNumPoint","timeOffset","channelIds","createEmptyErrorMonitor","Error","notifyOnNewErrors","notifyOnRecurringErrors","matchers","useMonitors","stateFilter","states","useMonitorManager","createMetricMonitor","resp","updateMetricMonitor","createErrorMonitor","updateErrorMonitor","createMonitorFromYaml","yaml","activate","updateState","pause","Paused","useMetricMonitor","monitorId","useErrorMonitor","routeForMonitor","useYamlMonitor","click","maxWidth","fullscreen","preventDefault","requiredRule","minMaxRule","minMaxStringLengthRule","_props","rules","useRouterOnly","monitorMan","saveYaml","DialogCard","MonitorYamlForm","$nextTick","update:sort-desc","alertOpenCount","routeForOpenAlerts","alertClosedCount","pauseMonitor","stopPropagation","onMenu","Firing","MonitorTypeIcon","MonitorStateAvatar","MonitorYamlDialog","activeMonitor","routeForAlerts","routeForClosedAlerts","activateMonitor","deleteMonitor","openMonitorDialog","MonitorsTableRow","align","MonitorNewMenu","MonitorsTable","MonitorStateCounts","onSave","lt","amount","apply","units","findUnit","formattedDate","datePicker","formattedTime","DATE_FORMAT","TIME_FORMAT","toISOString","parseDateTime","isValidDateTime","onBlur","NotifChannelType","NotifChannelState","DateTextInput","gte","updateLt","gteValue","h","getHours","getMinutes","endPattern","getMonth","getDate","fullFormat","CustomDurationPicker","CustomDateRangePicker","DateRange","forceDateRange","applyDuration","changeDuration","reloadNow","applyRange","DateRangePickerMenu","defaultPeriod","$listeners","targetClass","dense","elevation","outlined","BtnSelectMenu","availableItems","hint","submit","Splitpanes","Pane","form","validate","save","activeColumn","useNotifChannels","channels","emptySlackNotifChannel","orgId","Delivering","Slack","webhookUrl","emptyTelegramNotifChannel","Telegram","chatId","emptyWebhookNotifChannel","Webhook","emptyAlertmanagerNotifChannel","Alertmanager","useSlackNotifChannel","channel","useTelegramNotifChannel","useWebhookNotifChannel","useAlertmanagerNotifChannel","useNotifChannelManager","channelId","unpause","slackCreate","slackUpdate","telegramCreate","telegramUpdate","webhookCreate","webhookUpdate","emailUpdate","errorMatchers","attr","useEmailChannel","expanded","expandedInternal","SinglePanel","PanelSection","boundsSource","checkNumPointItems","maxDuration","noun","durationStr","observedMin","observedMax","observedAvg","attrFilterEnabled","errorMessages","activeAttrKeys","useDataSource","useDataSourceRefs","dataKey","suggestSearchInput","$ignore_search_input","normItem","itemText","filtered","filteredValues","metricAlias","applyDisabled","metricAliasRef","formRef","filteredMetrics","createRegexp","toLowerCase","onMetricNameChange","flags","MetricPicker","requiredAttrs","autoGrouping","grouping","attrKeysDs","attr_key","addMetric","newMetric","updateQuery","updateMetric","oldMetric","replaceAll","removeMetric","showAgg","showGroupBy","showDashWhere","arguments","partEditor","partId","minWidth","applyEdits","cancelEdits","editing","draggable","exitRawMode","usePartEditor","partQuery","startEditing","Category","showFilter","onClick","returnObject","normalizedItems","SearchableList","drawer","handler","temporary","sortedCategories","category","filtersState","itemExpanded","pinned","usePinnedFacetManager","remove","TokenID","itemValue","FacetItemBody","showSearch","likeFilter","notLikeFilter","filterString","f","FacetItem","pinnedFacetMan","pinFacet","unpinFacet","Pinned","extractFilterState","lexer","Lexer","t","nextToken","Ident","nextValue","Value","EOF","ch","nextChar","isWhitespace","isAlpha","ident","isDigit","Char","readUnquoted","peekChar","isIdent","advance","buf","FacetCategory","attrPrefix","categories","Found","pinnedCategory","otherCategory","categoryName","attrCategory","Other","sorted","kvs","Otel","hasActiveFilters","onBeforeMount","envs","services","FacetList","facetParams","onClickOutside","closeConditional","metricColumns","aggBy","QueryExample","CheatsheetCard","UptraceQuery","DashGroupingMenu","MetricsAggMenu","DashWhereBtn","QueryHelpDialog","keysDs","onCurrentItems","selectedItems","table","showExpand","slots","EventBus","scope","off","numOfCallbacks","some","scopeIsSame","callbackIsSame","MonitorMetricFormPanes","MonitorMetricFormOptions","UnitPicker","MetricsPicker","MetricsQueryBuilder","ChartLegendTable","internalColumnMap","time_offset","DateRangePicker","MonitorMetricForm","footer","metricMonitor","initMonitorFromRoute","routeQuery","asArray","aliases","redirectToMonitors","onCancel","AttrMatcherOp","matcher","emptyAttrMatcher","opItems","NotEqual","AttrMatcher","addMatcher","removeMatcher","MonitorErrorForm","activeChannel","man","alertExample","$router","channelRoute","Disabled","NotifChannelStateAvatar","pauseChannel","unpauseChannel","deleteChannel","NotifChannelsTableRow","NotifChannelNewMenu","NotifChannelSlackForm","NotifChannelTelegramForm","NotifChannelWebhookForm","NotifChannelAlertmanagerForm","NotifChannelsTable","internalDialog","email","NotifChannelEmailForm","annotationMan","deleteAnnotation","AnnotationsTableRow","addAttr","AnnotationAttrRow","entries","Color","hex","reduce","acc","removeAttr","AnnotationsTable","AnnotationForm","fullPath","dataHint","SORTED_SYSTEMS","useSystems","sortSystems","addAllSystem","types","systemTypes","internalValue","activeSystems","array","createAllSystem","allSystem","errorCount","groupCount","sys","ai","bi","frameworks","href","DevIcon","distros","publicPath","process","lang","DistroIcons","envVars","otlpGrpc","otlpHttp","OtelSdkCard","CollectorTabs","instrumentationLink","file","HelpCard","indent","children","child","withComma","ALL_SYSTEMS","autocomplete","isMenuActive","_tree","buildSystemTree","tree","foundIndex","typeIndex","treeValue","filteredSystems","trimPrefix","typeMap","typeSys","nodes","str","_b","activeValue","TracingPlaceholder","SystemPicker","QuickSpanFilter","chosenSystems","chosenMap","progress","SystemQuickMetricCard","all","http","rpc","db","inMemDb","failures","logs","isInMemDb","isDb","Align","plottableColumnItems","input","showSystem","activeGroup","plainColumns","isSpanSystemGroup","headerValues","_name","nativeOn","Function","_query","systemRoute","omit","itemListRoute","systemsForGroup","_g","listeners","internalDateRange","activeSpan","displayName","functional","content","VIcon","textAlign","Start","End","Center","showOperation","traceMode","clickable","parentId","chips","env","service","kind","spanSystem","pushHttpStatusChip","httpCode","ThOrder","SpanCard","SpanChips","onSortBy","nextTick","showSpan","syncWith","SpansTable","onChipClick","chip","GroupsTableRow","PagedSpansCardLazy","hasGroupName","hasColumn","hasSystemColumn","blacklist","shortColumnName","chartHeight","direction","selectedTimeseries","ChartLegendList","legendHeight","onLegendResize","minHeight","Right","Table","currentTimeseries","activeTimeseries","LegendaryChart","GroupMetricsItem","GroupsTable","GroupMetrics","systemFilter","systemFilterItems","buildSystemFilters","buildTypeFilters","filteredGroups","pagedGroups","internalPlottedColumns","systemMap","numGroup","filters","EdgeType","NodeSizeMode","NodeSizeMetric","ApiErrorCard","SystemQuickMetrics","PagedGroupsCard","groupListRoute","activeItem","tracingGroupsRoute","durationMax","activeEdgeTypes","nodeSizeMetric","durationRange","minErrorRate","maxErrorRate","errorRateStep","errorRateRange","useServiceGraph","edges","edge","clientId","clientName","clientAttr","serverId","serverName","serverAttr","chartProps","onInit","lerp","unlerp","mapNumber","a1","b1","a2","b2","nodeSizeMode","activeNode","activeEdge","highlightedId","graphEdges","graphEdge","target","_edge","Rate","Duration","durationAvg","nodeMap","client","emptyNode","node","server","Incoming","Outgoing","durationMin","durationSum","graphNodes","maxRate","graphNode","_node","roam","scaleLimit","position","fontSize","edgeLabel","curveness","dataType","escape","animationDurationUpdate","animationEasingUpdate","layout","circular","rotateLabel","ServiceGraphHelpCard","ServiceGraphChart","ServiceGraphHelpDialog","graphRef","serviceGraph","edgeTypeItems","minDuration","range","rateRange","minRate","_maxErrorRate","delta","tracingGroupsRouteForNode","tracingGroupsRouteForLink","monitorMenuItems","monitorMenuItemFor","monitorName","routes","activeGroupSystem","optional","spanSystems","activeSpanSystems","logSystems","activeLogSystems","eventSystems","activeEventSystems","countGroups","systemItems","views","useSavedViews","useSavedViewManager","view","viewId","pin","unpin","Op","unpinView","editMode","viewMan","pendingView","pinView","deleteView","tabName","subtitle","querySystem","SavedViewsList","filteredViews","click:item","saveView","ListViewsDrawer","SaveViewDrawer","HttpAll","DbAll","addFilter","suggestions","update:search-input","showIcon","valueHint","dataSource","onInput","Combobox","UqlChip","useForm","columnsDs","ops","Contains","NotContains","Like","NotLike","Exists","NotExists","valuesDs","valuePlaceholder","valueDisabled","resetValidation","AGG_FUNCS","func","isColumnValid","funcItems","groupColumns","WhereMenu","AggByMenu","GroupByMenu","aggDisabled","SearchFilterMenu","DurationFilterMenu","AttrFilterMenu","AdvancedMenu","WhereSidebarBtn","SystemGroupPicker","SavedViews","SpanQueryBuilder","QuickSearch","roundUp","spanListName","resetQuery","clear","useRoutes","groupList","spanList","tableColumns","AttrKeys","SpansTableSettings","resetOrder","oldSystem","setPageGroups","_selected","_hovered","_color","chartGroup","_id","hasSelected","toggleSelected","TimeseriesMetric","TimeseriesGroupsTable","pageGroups","rowCols","selectedGroups","trace","root","exploreTraceRoute","coloredSystems","walkTree","_walk","parent","traceSpans","rootSpan","_traceSpans","level","labelStyle","spanLabelStyle","startPct","endPct","bars","durationSelf","bottom","pct","spanBarStyle","bar","SYSTEM_LIMIT","spanColoredSystems","sysMap","_systemName","Funcs","sysInfo","systemMapToList","otherSystem","base","lighten","darken","list","k","useTrace","activeSpanId","isVisible","toggleTree","showTree","useHiddenSpans","eventMap","arr","hidden","collapsed","hideChildren","totalDuration","styledSystems","barStyle","Infinity","PctValue","rootSpanId","paddingLeft","internalChildren","spanName","stmt","TraceTimelineChildrenBars","TraceTimeline","SpanSystemBarChart","TraceTabs","root_span_id","groupRoute","plot","root_span","meta","useMeta","useTraceSearch","trace_id","traceSearch","receivers","monitorLink","receiverLink","receiver","instrumentDs","activeInstruments","otelLibraryDs","activeOtelLibraries","activeMetric","numTimeseries","metricAliases","MetricsTable","ExploreMetric","otel_library_name","dashboards","useDashboards","isEmpty","d","useDashboard","dashboard","dash","tableMetrics","tableGrouping","tableColumnMap","tableItems","gridItem","fixupGridItem","gridRows","gridRow","gridMetrics","yamlUrl","isTemplate","templateId","axiosData","useYamlDashboard","useDashboardManager","updateTable","updateGrid","createYaml","updateYaml","clone","useGridItemManager","useGridRow","gridItems","Chart","mergeWith","objValue","srcValue","Heatmap","valueMappings","useGridRowManager","moveUp","move","moveDown","verb","newDialog","closeDialog","newYamlDialog","emptyDashboard","minIntervalItems","gridMaxWidthItems","dashMan","minInterval","tableQuery","gridQuery","gridMaxWidth","dashboardMan","DashboardForm","DashboardYamlForm","yamlDialog","editDialog","pinDashboard","unpinDashboard","DashboardYamlCard","DashPinBtn","activeDashboard","openDashboardYamlDialog","cloneDashboard","deleteDashboard","DashboardsTableRow","itemsPerPage","DashboardNewMenu","DashboardsTable","pinnedFilter","onCreateDashboard","onPinDash","lastDashId","activeDashId","redirectTo","redirectToLast","resetDashboard","editYamlDialog","dashYaml","DashboardEditYamlForm","relatedDashboards","related","dashName","upperFirst","DashPicker","DashboardMenu","RelatedDashboardsTabs","tableItem","openDialog","gaugeQuery","useGaugeQuery","styledColumns","formatGauge","template","varName","fmtVar","gridItemMan","gaugeHtml","readonly","expandable","routeForNewMonitor","toolbarColor","columnError","GridItemCard","preview","gaugeText","mapping","mappingMatches","Any","Lt","Lte","Gt","Gte","stdItems","UnitSelect","emitMappings","mappingOpItems","ValueMappingRow","mappings","addMapping","createValueMapping","removeMapping","GridItemFormPanes","GaugeCard","GaugeValuesTable","GaugeColumnOptionsForm","ValueMappingsForm","mappingsDialog","timeseriesStyle","showOpacity","showLineWidth","symbolItems","symbols","TimeseriesStyleForm","chartKindItems","legendValueItems","getTimeseriesStyle","denseTable","disableItemsPerPage","routeForSpanList","TimeseriesTableRow","TimeseriesTable","GridItemTable","onTableQuery","onTableColumns","heatmapQuery","margin","itemSize","heatmapChart","param","itemPadding","alignWithLabel","interval","echarts","fmtShort","yAxisData","minCount","maxCount","point","shadowBlur","shadowColor","onResize","HeatmapChart","unitItems","GridItemGaugeForm","GridItemChartForm","GridItemTableForm","GridItemHeatmapForm","useDateRangeFrom","GridItemFormSwitch","gridRowMan","addRow","newGauge","newChart","newTable","newHeatmap","activeGridItem","DashTableFormPanes","TableColumnOptionsForm","DashTableForm","row","rowItems","gsAutoPosition","itemHeight","ready","resizeItem","rowIndex","gridStackEl","gridStack","danglingEls","heightByItemId","cellHeight","saveItemsLayout","w","auto","gridStackOptions","animate","columnOpts","columnMax","breakpoints","minRow","handle","resizable","handles","acceptWidgets","updateGridStack","GridStack","setAnimation","getGridItems","gridstackNode","opts","sizeToContent","_event","getColumn","Utils","resizeToContent","GridStackCard","GridRowForm","expandedValue","deleteRow","wide","min_interval","GridItemGauge","GridItemChart","GridItemHeatmap","GridItemSwitch","DashQueryBuilder","GridRowCard","GridItemAny","isGridQueryDirty","saveGridQuery","DashGrid","tableRow","NewGridItemMenu","GroupingToggle","DashTableFormDialog","DashGridForTableRow","baseQuery","editableQuery","useTableRowData","tableListeners","sso","password","login","usage","useDataUsage","startTime","endTime","plotUsage","DataUsageChart","VueRouter","path","beforeEnter","redirectToProject","Login","UserProfile","DataUsage","TracingHelp","Project","tab","ProjectSettings","ProjectDsn","Alerting","redirect","alerting","AlertList","AlertShow","ChannelList","MonitorList","EmailNotifications","AnnotationList","MonitorMetric","MonitorErrorNew","MonitorErrorShow","ChannelShowSlack","ChannelShowTelegram","ChannelShowWebhook","ChannelShowAlertmanager","AnnotationShow","Overview","overview","OverviewAttr","OverviewGroups","OverviewSlowestGroups","OverviewServiceGraph","TracingCheatsheet","Tracing","tracing","TracingGroups","TracingSpans","TracingTimeseries","TraceShow","TraceSpanShow","TraceFind","MetricsLayout","DashboardList","Dashboard","DashboardLoading","DashboardTable","DashboardGrid","DashboardHelp","MetricsExplore","MetricsHelp","MetricsCheatsheet","NotFoundPage","mode","scrollBehavior","savedPosition","hash","selector","_to","_from","first","useSyncQueryParamsCount","hook","warn","usePushRoute","usePushRouteDebounced","ignoreNextRoute","updateQueryDebounced","queryEqual","savedRoute","onError","matched","routeEqual","Values","r1","r2","paramsEqual","p1","p2","k1","k2","q1","q2","querystring","normQueryParams","normQueryParam","normQueryValue","int","src","dest","AUTO_RELOAD_INTERVAL","defaultPrefix","roundUpEnabled","isNow","updateNowTimer","changeGTE","timePicker","setHours","setMinutes","autoReloadEnabled","useSessionStorage","toggleAutoReload","updateNow","resetUpdateNowTimer","force","diff","differenceInMilliseconds","clearTimeout","global","gteVal","ltVal","durVal","newLT","changeLT","hasPrevPeriod","prevPeriod","hasNextPeriod","nextPeriod","nowVal","within","toArray","AchievName","mini","saveLastProjectId","projectParams","useAchievements","allAchievements","ConfigureTracing","ConfigureMetrics","InstallCollector","CreateMetricMonitor","completed","achievements","achv","mergeAchievement","isCompleted","achievement","numAchievTotal","numAchievCompleted","ProjectMenu","ProjectNavigationList","GetStartedMenu","HowToMenu","UserMenu","hideSearch","TRACE_ID_RE","textField","AppNavigation","GlobalSnackbar","GlobalConfirm","AppSearch","searchVisible","directive","bind","findInput","boxSizing","inserted","binding","styles","window","getComputedStyle","mirror","createElement","assign","visibility","overflow","whiteSpace","fontWeight","fontStyle","letterSpacing","textTransform","setAttribute","body","appendChild","checkWidth","componentUpdated","unbind","removeChild","removeEventListener","tagName","querySelector","comfortZone","placeholder","childNodes","createTextNode","newWidth","scrollWidth","elementResizeDetectorMaker","require","erd","strategy","vnode","listenTo","element","offsetWidth","offsetHeight","componentInstance","elm","dispatchEvent","CustomEvent","uninstall","autowidth","frag","axiosRetry","retries","retryDelay","baseURL","withCredentials","localFluid","singleNode","showPager","withoutPrevNext","VBtn","XPager","totalVisible","BREAK_MIN_LEN","UnixTime","DateValue","clicked","copy","execCommand","removeSelection","removeAttribute","wait","getSelection","sel","removeAllRanges","Prism","CopyBtn","inline","targetStyle","wrap","$el","PageToolbar","XPlaceholder","XPagination","NumValue","AnyValue","DurationValue","BytesValue","PrismCode","PortalVue","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","deferred","O","chunkIds","priority","notFulfilled","fulfilled","j","getter","__esModule","definition","o","g","globalThis","e","prop","prototype","hasOwnProperty","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}