diff --git a/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.component.ts b/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.component.ts
index c150a1365..2df86724c 100644
--- a/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.component.ts
+++ b/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.component.ts
@@ -1,41 +1,38 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
-import { SubscriptionLifecycle } from '@hypertrace/common';
-
-import { Dashboard } from '@hypertrace/hyperdash';
import { Observable } from 'rxjs';
-import { traceDetailDashboard } from '../trace-detail.dashboard';
-import { TraceDetails, TraceDetailService } from './../trace-detail.service';
+import { map } from 'rxjs/operators';
+import { TraceDetailService } from './../trace-detail.service';
+import { traceSequenceDashboard } from './trace-sequence.dashboard';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
`
})
export class TraceSequenceComponent {
- public readonly traceDetails$: Observable;
-
- public constructor(
- private readonly subscriptionLifecycle: SubscriptionLifecycle,
- private readonly traceDetailService: TraceDetailService
- ) {
- this.traceDetails$ = this.traceDetailService.fetchTraceDetails();
- }
+ public readonly traceVariables$: Observable;
- public onDashboardReady(dashboard: Dashboard): void {
- this.subscriptionLifecycle.add(
- this.traceDetails$.subscribe(traceDetails => {
- dashboard.setVariable('traceId', traceDetails.id);
- dashboard.setVariable('spanId', traceDetails.entrySpanId);
- dashboard.setVariable('startTime', traceDetails.startTime);
- dashboard.refresh();
- })
+ public constructor(private readonly traceDetailService: TraceDetailService) {
+ this.traceVariables$ = this.traceDetailService.fetchTraceDetails().pipe(
+ map(details => ({
+ traceId: details.id,
+ startTime: details.startTime,
+ spanId: details.entrySpanId
+ }))
);
}
}
+
+interface TraceDetailVariables {
+ traceId: string;
+ startTime?: string | number;
+ spanId?: string;
+}
diff --git a/projects/distributed-tracing/src/pages/trace-detail/trace-detail.dashboard.ts b/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.dashboard.ts
similarity index 74%
rename from projects/distributed-tracing/src/pages/trace-detail/trace-detail.dashboard.ts
rename to projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.dashboard.ts
index bd6770239..8d4d32acd 100644
--- a/projects/distributed-tracing/src/pages/trace-detail/trace-detail.dashboard.ts
+++ b/projects/distributed-tracing/src/pages/trace-detail/sequence/trace-sequence.dashboard.ts
@@ -1,7 +1,7 @@
-import { DashboardDefaultConfiguration } from '../../shared/dashboard/dashboard-wrapper/navigable-dashboard.module';
+import { DashboardDefaultConfiguration } from '../../../shared/dashboard/dashboard-wrapper/navigable-dashboard.module';
-export const traceDetailDashboard: DashboardDefaultConfiguration = {
- location: 'TRACE_DETAIL',
+export const traceSequenceDashboard: DashboardDefaultConfiguration = {
+ location: 'TRACE_SEQUENCE',
json: {
type: 'container-widget',
layout: {
diff --git a/projects/distributed-tracing/src/pages/trace-detail/trace-detail.page.module.ts b/projects/distributed-tracing/src/pages/trace-detail/trace-detail.page.module.ts
index f4716ea24..576bb1def 100644
--- a/projects/distributed-tracing/src/pages/trace-detail/trace-detail.page.module.ts
+++ b/projects/distributed-tracing/src/pages/trace-detail/trace-detail.page.module.ts
@@ -17,7 +17,7 @@ import { NavigableDashboardModule } from '../../shared/dashboard/dashboard-wrapp
import { TracingDashboardModule } from '../../shared/dashboard/tracing-dashboard.module';
import { TraceLogsComponent } from './logs/trace-logs.component';
import { TraceSequenceComponent } from './sequence/trace-sequence.component';
-import { traceDetailDashboard } from './trace-detail.dashboard';
+import { traceSequenceDashboard } from './sequence/trace-sequence.dashboard';
import { TraceDetailPageComponent } from './trace-detail.page.component';
const ROUTE_CONFIG: TraceRoute[] = [
@@ -56,7 +56,7 @@ const ROUTE_CONFIG: TraceRoute[] = [
FormattingModule,
CopyShareableLinkToClipboardModule,
DownloadJsonModule,
- NavigableDashboardModule.withDefaultDashboards(traceDetailDashboard),
+ NavigableDashboardModule.withDefaultDashboards(traceSequenceDashboard),
NavigableTabModule,
LogEventsTableModule
]
diff --git a/projects/distributed-tracing/src/public-api.ts b/projects/distributed-tracing/src/public-api.ts
index b6357922b..489caa6e3 100644
--- a/projects/distributed-tracing/src/public-api.ts
+++ b/projects/distributed-tracing/src/public-api.ts
@@ -109,7 +109,7 @@ export * from './shared/components/table/tracing-table-cell-type';
// Waterfall
export { WaterfallData } from './shared/dashboard/widgets/waterfall/waterfall/waterfall-chart';
export { TraceWaterfallDataSourceModel } from './shared/dashboard/data/graphql/waterfall/trace-waterfall-data-source.model';
-export { traceDetailDashboard } from './pages/trace-detail/trace-detail.dashboard';
+export { traceSequenceDashboard } from './pages/trace-detail/sequence/trace-sequence.dashboard';
export { TraceDetailPageComponent } from './pages/trace-detail/trace-detail.page.component';
export { LogEvent } from './shared/dashboard/widgets/waterfall/waterfall/waterfall-chart';
diff --git a/projects/observability/src/pages/api-trace-detail/api-trace-detail.page.module.ts b/projects/observability/src/pages/api-trace-detail/api-trace-detail.page.module.ts
index cd50538ca..c5a636468 100644
--- a/projects/observability/src/pages/api-trace-detail/api-trace-detail.page.module.ts
+++ b/projects/observability/src/pages/api-trace-detail/api-trace-detail.page.module.ts
@@ -11,11 +11,12 @@ import {
NavigableTabModule,
SummaryValueModule
} from '@hypertrace/components';
-import { LogEventsTableModule } from '@hypertrace/distributed-tracing';
+import { LogEventsTableModule, NavigableDashboardModule } from '@hypertrace/distributed-tracing';
import { ObservabilityDashboardModule } from '../../shared/dashboard/observability-dashboard.module';
import { ApiTraceDetailPageComponent } from './api-trace-detail.page.component';
import { ApiTraceLogsComponent } from './logs/api-trace-logs.component';
import { ApiTraceSequenceComponent } from './sequence/api-trace-sequence.component';
+import { apiTraceSequenceDashboard } from './sequence/api-trace-sequence.dashboard';
const ROUTE_CONFIG: TraceRoute[] = [
{
@@ -53,7 +54,8 @@ const ROUTE_CONFIG: TraceRoute[] = [
ButtonModule,
CopyShareableLinkToClipboardModule,
NavigableTabModule,
- LogEventsTableModule
+ LogEventsTableModule,
+ NavigableDashboardModule.withDefaultDashboards(apiTraceSequenceDashboard)
]
})
export class ApiTraceDetailPageModule {}
diff --git a/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.component.ts b/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.component.ts
index 3c51f44e0..0a0ec4407 100644
--- a/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.component.ts
+++ b/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.component.ts
@@ -1,60 +1,35 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
-import { SubscriptionLifecycle } from '@hypertrace/common';
-
-import { Dashboard, ModelJson } from '@hypertrace/hyperdash';
import { Observable } from 'rxjs';
-import { ApiTraceDetails, ApiTraceDetailService } from './../api-trace-detail.service';
+import { map } from 'rxjs/operators';
+import { ApiTraceDetailService } from './../api-trace-detail.service';
+import { apiTraceSequenceDashboard } from './api-trace-sequence.dashboard';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
template: `
-
-
+
`
})
export class ApiTraceSequenceComponent {
- public readonly traceDetails$: Observable;
-
- public readonly defaultJson: ModelJson = {
- type: 'container-widget',
- layout: {
- type: 'auto-container-layout',
- 'enable-style': false
- },
- children: [
- {
- type: 'waterfall-widget',
- title: 'Sequence Diagram',
- data: {
- type: 'api-trace-waterfall-data-source',
- // tslint:disable-next-line: no-invalid-template-strings
- 'trace-id': '${traceId}',
- // tslint:disable-next-line: no-invalid-template-strings
- 'start-time': '${startTime}'
- }
- }
- ]
- };
-
- public constructor(
- private readonly subscriptionLifecycle: SubscriptionLifecycle,
- private readonly apiTraceDetailService: ApiTraceDetailService
- ) {
- this.traceDetails$ = this.apiTraceDetailService.fetchTraceDetails();
- }
+ public readonly traceVariables$: Observable;
- public onDashboardReady(dashboard: Dashboard): void {
- this.subscriptionLifecycle.add(
- this.traceDetails$.subscribe(traceDetails => {
- dashboard.setVariable('traceId', traceDetails.id);
- dashboard.setVariable('traceType', traceDetails.type);
- dashboard.setVariable('startTime', traceDetails.startTime);
- dashboard.refresh();
- })
+ public constructor(private readonly apiTraceDetailService: ApiTraceDetailService) {
+ this.traceVariables$ = this.apiTraceDetailService.fetchTraceDetails().pipe(
+ map(details => ({
+ traceId: details.id,
+ startTime: details.startTime
+ }))
);
}
}
+
+interface ApiTraceDetailVariables {
+ traceId: string;
+ startTime?: string | number;
+}
diff --git a/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.dashboard.ts b/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.dashboard.ts
new file mode 100644
index 000000000..0b127c5c5
--- /dev/null
+++ b/projects/observability/src/pages/api-trace-detail/sequence/api-trace-sequence.dashboard.ts
@@ -0,0 +1,25 @@
+import { DashboardDefaultConfiguration } from '@hypertrace/distributed-tracing';
+
+export const apiTraceSequenceDashboard: DashboardDefaultConfiguration = {
+ location: 'API_TRACE_SEQUENCE',
+ json: {
+ type: 'container-widget',
+ layout: {
+ type: 'auto-container-layout',
+ 'enable-style': false
+ },
+ children: [
+ {
+ type: 'waterfall-widget',
+ title: 'Sequence Diagram',
+ data: {
+ type: 'api-trace-waterfall-data-source',
+ // tslint:disable-next-line: no-invalid-template-strings
+ 'trace-id': '${traceId}',
+ // tslint:disable-next-line: no-invalid-template-strings
+ 'start-time': '${startTime}'
+ }
+ }
+ ]
+ }
+};