@eric-emg/symphiq-components 1.2.241 → 1.2.243
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/symphiq-components.mjs +2128 -1032
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +138 -71
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/styles.css +22 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ViewModeEnum, MetricStatusEnum, TrendDirectionEnum, CompetitiveScoreEnum, MetricEnum, DimensionEnum, UiDataPeriodEnum, UiDataComparePeriodEnum, ChartTypeEnum, IconSourceEnum, ProfileAnalysisRecommendationPriorityEnum, ProfileItemTypeEnum, PriceVsCompetitorsEnum, DifferentiationStrengthEnum, ThreatLevelEnum, normalizeToV3, FocusAreaDetailStatusEnum, FocusAreaDomainEnumUtil, FocusAreaDomainEnum, ShopDataLoadStatusEnum, MetricEnumUtil, NumberTypeEnum, FunnelMetricTypeEnum, AiDynamicContentStatusEnum, FocusAreaHealthEnum, ProfileAnalysisPriorityEnum, CapabilityStateEnum, QuadrantEnum, AdvantageEnum, OverallGradeEnum, OperationalMaturityEnum, ProfileAnalysisEffortLevelEnum, ProfileAnalysisImpactLevelEnum, ProfileAnalysisTypeEnum,
|
|
1
|
+
import { ViewModeEnum, MetricStatusEnum, TrendDirectionEnum, CompetitiveScoreEnum, MetricEnum, DimensionEnum, UiDataPeriodEnum, UiDataComparePeriodEnum, ChartTypeEnum, IconSourceEnum, ProfileAnalysisRecommendationPriorityEnum, ProfileItemTypeEnum, PriceVsCompetitorsEnum, DifferentiationStrengthEnum, ThreatLevelEnum, normalizeToV3, FocusAreaDetailStatusEnum, FocusAreaDomainEnumUtil, FocusAreaDomainEnum, ShopDataLoadStatusEnum, MetricEnumUtil, NumberTypeEnum, LineChartUseCaseEnum, FunnelMetricTypeEnum, AiDynamicContentStatusEnum, FocusAreaHealthEnum, ProfileAnalysisPriorityEnum, CapabilityStateEnum, QuadrantEnum, AdvantageEnum, OverallGradeEnum, OperationalMaturityEnum, ProfileAnalysisEffortLevelEnum, ProfileAnalysisImpactLevelEnum, ProfileAnalysisTypeEnum, BarChartUseCaseEnum } from '@jebgem/model';
|
|
2
2
|
export * from '@jebgem/model';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Injectable, signal, computed, input, ChangeDetectionStrategy, Component, output, inject, ElementRef, Renderer2, effect, Directive, HostListener, untracked, ViewChild, PLATFORM_ID, Inject, Input } from '@angular/core';
|
|
@@ -3878,7 +3878,7 @@ class CompetitiveScoreService {
|
|
|
3878
3878
|
}]
|
|
3879
3879
|
}], null, null); })();
|
|
3880
3880
|
|
|
3881
|
-
const _forTrack0$
|
|
3881
|
+
const _forTrack0$Q = ($index, $item) => $item.category;
|
|
3882
3882
|
function CompetitivePositioningSummaryComponent_Conditional_1_For_47_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
3883
3883
|
i0.ɵɵelementStart(0, "div", 15);
|
|
3884
3884
|
i0.ɵɵelement(1, "div", 37);
|
|
@@ -4037,7 +4037,7 @@ function CompetitivePositioningSummaryComponent_Conditional_1_Template(rf, ctx)
|
|
|
4037
4037
|
i0.ɵɵelementEnd()();
|
|
4038
4038
|
i0.ɵɵnamespaceHTML();
|
|
4039
4039
|
i0.ɵɵelementStart(43, "div", 24)(44, "div", 25)(45, "div", 26);
|
|
4040
|
-
i0.ɵɵrepeaterCreate(46, CompetitivePositioningSummaryComponent_Conditional_1_For_47_Template, 15, 12, "div", 27, _forTrack0$
|
|
4040
|
+
i0.ɵɵrepeaterCreate(46, CompetitivePositioningSummaryComponent_Conditional_1_For_47_Template, 15, 12, "div", 27, _forTrack0$Q);
|
|
4041
4041
|
i0.ɵɵelementEnd()()()();
|
|
4042
4042
|
i0.ɵɵelementStart(48, "div", 28)(49, "button", 29);
|
|
4043
4043
|
i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_1_Template_button_click_49_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
|
|
@@ -4246,7 +4246,7 @@ function CompetitivePositioningSummaryComponent_Conditional_2_Template(rf, ctx)
|
|
|
4246
4246
|
i0.ɵɵelementStart(32, "div", 50)(33, "h4", 51);
|
|
4247
4247
|
i0.ɵɵtext(34, "By Funnel Stage");
|
|
4248
4248
|
i0.ɵɵelementEnd();
|
|
4249
|
-
i0.ɵɵrepeaterCreate(35, CompetitivePositioningSummaryComponent_Conditional_2_For_36_Template, 12, 11, "div", 52, _forTrack0$
|
|
4249
|
+
i0.ɵɵrepeaterCreate(35, CompetitivePositioningSummaryComponent_Conditional_2_For_36_Template, 12, 11, "div", 52, _forTrack0$Q);
|
|
4250
4250
|
i0.ɵɵelementEnd();
|
|
4251
4251
|
i0.ɵɵelementStart(37, "div", 28)(38, "button", 53);
|
|
4252
4252
|
i0.ɵɵlistener("click", function CompetitivePositioningSummaryComponent_Conditional_2_Template_button_click_38_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.scrollToCompetitive.emit()); });
|
|
@@ -8923,7 +8923,7 @@ class MetricCardComponent {
|
|
|
8923
8923
|
const _c0$12 = () => [1, 2, 3];
|
|
8924
8924
|
const _c1$B = (a0, a1, a2) => [a0, a1, a2];
|
|
8925
8925
|
const _c2$p = (a0, a1) => [a0, a1];
|
|
8926
|
-
const _forTrack0$
|
|
8926
|
+
const _forTrack0$P = ($index, $item) => $item.metric;
|
|
8927
8927
|
const _forTrack1$7 = ($index, $item) => $item.dimensionValue;
|
|
8928
8928
|
function BreakdownSectionComponent_Conditional_0_For_7_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
8929
8929
|
i0.ɵɵelementStart(0, "div", 7);
|
|
@@ -9246,7 +9246,7 @@ function BreakdownSectionComponent_Conditional_1_Template(rf, ctx) { if (rf & 1)
|
|
|
9246
9246
|
i0.ɵɵelementEnd()();
|
|
9247
9247
|
i0.ɵɵconditionalCreate(6, BreakdownSectionComponent_Conditional_1_Conditional_6_Template, 3, 0, "div", 11);
|
|
9248
9248
|
i0.ɵɵelementStart(7, "div", 12);
|
|
9249
|
-
i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$
|
|
9249
|
+
i0.ɵɵrepeaterCreate(8, BreakdownSectionComponent_Conditional_1_For_9_Template, 28, 18, "div", 13, _forTrack0$P);
|
|
9250
9250
|
i0.ɵɵelementEnd()();
|
|
9251
9251
|
} if (rf & 2) {
|
|
9252
9252
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -10644,7 +10644,7 @@ class ChartCardComponent {
|
|
|
10644
10644
|
}], null, { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], chartClick: [{ type: i0.Output, args: ["chartClick"] }] }); }); })();
|
|
10645
10645
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ChartCardComponent, { className: "ChartCardComponent", filePath: "lib/components/shared/chart-card.component.ts", lineNumber: 101 }); })();
|
|
10646
10646
|
|
|
10647
|
-
const _forTrack0$
|
|
10647
|
+
const _forTrack0$O = ($index, $item) => $item.id;
|
|
10648
10648
|
function FunnelStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
10649
10649
|
i0.ɵɵelementStart(0, "div", 1);
|
|
10650
10650
|
i0.ɵɵnamespaceSVG();
|
|
@@ -10758,7 +10758,7 @@ function FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template(r
|
|
|
10758
10758
|
} }
|
|
10759
10759
|
function FunnelStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
10760
10760
|
i0.ɵɵelementStart(0, "div", 2);
|
|
10761
|
-
i0.ɵɵrepeaterCreate(1, FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template, 30, 22, "button", 7, _forTrack0$
|
|
10761
|
+
i0.ɵɵrepeaterCreate(1, FunnelStrengthsListModalContentComponent_Conditional_2_For_2_Template, 30, 22, "button", 7, _forTrack0$O);
|
|
10762
10762
|
i0.ɵɵelementEnd();
|
|
10763
10763
|
} if (rf & 2) {
|
|
10764
10764
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -10968,7 +10968,7 @@ class FunnelStrengthsListModalContentComponent {
|
|
|
10968
10968
|
}], null, { strengths: [{ type: i0.Input, args: [{ isSignal: true, alias: "strengths", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: true }] }] }); })();
|
|
10969
10969
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelStrengthsListModalContentComponent, { className: "FunnelStrengthsListModalContentComponent", filePath: "lib/components/funnel-analysis-dashboard/funnel-strengths-list-modal-content.component.ts", lineNumber: 93 }); })();
|
|
10970
10970
|
|
|
10971
|
-
const _forTrack0$
|
|
10971
|
+
const _forTrack0$N = ($index, $item) => $item.severity;
|
|
10972
10972
|
const _forTrack1$6 = ($index, $item) => $item.id;
|
|
10973
10973
|
function FunnelWeaknessesListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
10974
10974
|
i0.ɵɵelementStart(0, "div", 1);
|
|
@@ -11147,7 +11147,7 @@ function FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template(
|
|
|
11147
11147
|
} }
|
|
11148
11148
|
function FunnelWeaknessesListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
11149
11149
|
i0.ɵɵelementStart(0, "div", 2);
|
|
11150
|
-
i0.ɵɵrepeaterCreate(1, FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template, 9, 7, "div", null, _forTrack0$
|
|
11150
|
+
i0.ɵɵrepeaterCreate(1, FunnelWeaknessesListModalContentComponent_Conditional_2_For_2_Template, 9, 7, "div", null, _forTrack0$N);
|
|
11151
11151
|
i0.ɵɵelementEnd();
|
|
11152
11152
|
} if (rf & 2) {
|
|
11153
11153
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -12922,7 +12922,7 @@ class ProfileItemLookupService {
|
|
|
12922
12922
|
}], null, null); })();
|
|
12923
12923
|
|
|
12924
12924
|
const _c0$$ = a0 => ({ name: "chevron-right", source: a0 });
|
|
12925
|
-
const _forTrack0$
|
|
12925
|
+
const _forTrack0$M = ($index, $item) => $item.id;
|
|
12926
12926
|
function RelatedAreaChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
12927
12927
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
12928
12928
|
i0.ɵɵelementStart(0, "button", 2);
|
|
@@ -12943,7 +12943,7 @@ function RelatedAreaChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (r
|
|
|
12943
12943
|
} }
|
|
12944
12944
|
function RelatedAreaChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
12945
12945
|
i0.ɵɵelementStart(0, "div", 0);
|
|
12946
|
-
i0.ɵɵrepeaterCreate(1, RelatedAreaChipsComponent_Conditional_0_For_2_Template, 4, 5, "button", 1, _forTrack0$
|
|
12946
|
+
i0.ɵɵrepeaterCreate(1, RelatedAreaChipsComponent_Conditional_0_For_2_Template, 4, 5, "button", 1, _forTrack0$M);
|
|
12947
12947
|
i0.ɵɵelementEnd();
|
|
12948
12948
|
} if (rf & 2) {
|
|
12949
12949
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -13168,7 +13168,7 @@ class CompetitorChipListComponent {
|
|
|
13168
13168
|
}], null, { relatedCompetitorIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedCompetitorIds", required: false }] }], competitors: [{ type: i0.Input, args: [{ isSignal: true, alias: "competitors", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isDark: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDark", required: false }] }], inModalContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "inModalContext", required: false }] }] }); })();
|
|
13169
13169
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitorChipListComponent, { className: "CompetitorChipListComponent", filePath: "lib/components/business-analysis-dashboard/shared/competitor-chip-list.component.ts", lineNumber: 37 }); })();
|
|
13170
13170
|
|
|
13171
|
-
const _forTrack0$
|
|
13171
|
+
const _forTrack0$L = ($index, $item) => $item.id;
|
|
13172
13172
|
function CompetitorContextSectionComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
13173
13173
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
13174
13174
|
i0.ɵɵelementStart(0, "button", 8);
|
|
@@ -13251,7 +13251,7 @@ function CompetitorContextSectionComponent_Conditional_0_Template(rf, ctx) { if
|
|
|
13251
13251
|
i0.ɵɵconditionalCreate(8, CompetitorContextSectionComponent_Conditional_0_Conditional_8_Template, 5, 4, "button", 4);
|
|
13252
13252
|
i0.ɵɵelementEnd();
|
|
13253
13253
|
i0.ɵɵelementStart(9, "div", 5)(10, "div", 6);
|
|
13254
|
-
i0.ɵɵrepeaterCreate(11, CompetitorContextSectionComponent_Conditional_0_For_12_Template, 10, 6, "button", 7, _forTrack0$
|
|
13254
|
+
i0.ɵɵrepeaterCreate(11, CompetitorContextSectionComponent_Conditional_0_For_12_Template, 10, 6, "button", 7, _forTrack0$L);
|
|
13255
13255
|
i0.ɵɵelementEnd()()();
|
|
13256
13256
|
} if (rf & 2) {
|
|
13257
13257
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -13442,7 +13442,7 @@ class CompetitorContextSectionComponent {
|
|
|
13442
13442
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitorContextSectionComponent, { className: "CompetitorContextSectionComponent", filePath: "lib/components/business-analysis-dashboard/cards/competitor-context-section.component.ts", lineNumber: 86 }); })();
|
|
13443
13443
|
|
|
13444
13444
|
const _c0$Z = a0 => ({ name: "chevron-right", source: a0 });
|
|
13445
|
-
const _forTrack0$
|
|
13445
|
+
const _forTrack0$K = ($index, $item) => $item.id;
|
|
13446
13446
|
function RelatedRecommendationChipsComponent_Conditional_0_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
13447
13447
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
13448
13448
|
i0.ɵɵelementStart(0, "button", 4);
|
|
@@ -13485,7 +13485,7 @@ function RelatedRecommendationChipsComponent_Conditional_0_Conditional_4_Templat
|
|
|
13485
13485
|
} }
|
|
13486
13486
|
function RelatedRecommendationChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
13487
13487
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
13488
|
-
i0.ɵɵrepeaterCreate(2, RelatedRecommendationChipsComponent_Conditional_0_For_3_Template, 5, 6, "button", 2, _forTrack0$
|
|
13488
|
+
i0.ɵɵrepeaterCreate(2, RelatedRecommendationChipsComponent_Conditional_0_For_3_Template, 5, 6, "button", 2, _forTrack0$K);
|
|
13489
13489
|
i0.ɵɵelementEnd();
|
|
13490
13490
|
i0.ɵɵconditionalCreate(4, RelatedRecommendationChipsComponent_Conditional_0_Conditional_4_Template, 5, 4, "button", 3);
|
|
13491
13491
|
i0.ɵɵelementEnd();
|
|
@@ -13941,7 +13941,7 @@ class RelatedFunnelInsightsSectionComponent {
|
|
|
13941
13941
|
}], null, { insightCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "insightCount", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], insightsClicked: [{ type: i0.Output, args: ["insightsClicked"] }] }); })();
|
|
13942
13942
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedFunnelInsightsSectionComponent, { className: "RelatedFunnelInsightsSectionComponent", filePath: "lib/components/business-analysis-dashboard/shared/related-funnel-insights-section.component.ts", lineNumber: 47 }); })();
|
|
13943
13943
|
|
|
13944
|
-
const _forTrack0$
|
|
13944
|
+
const _forTrack0$J = ($index, $item) => $item.order;
|
|
13945
13945
|
function RecommendationCardComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
13946
13946
|
i0.ɵɵelementStart(0, "div", 9);
|
|
13947
13947
|
i0.ɵɵelement(1, "symphiq-icon", 11);
|
|
@@ -14294,7 +14294,7 @@ function RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6
|
|
|
14294
14294
|
} }
|
|
14295
14295
|
function RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
14296
14296
|
i0.ɵɵelementStart(0, "div", 37);
|
|
14297
|
-
i0.ɵɵrepeaterCreate(1, RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_For_2_Template, 13, 9, "div", 41, _forTrack0$
|
|
14297
|
+
i0.ɵɵrepeaterCreate(1, RecommendationCardComponent_Conditional_13_Conditional_12_Conditional_6_For_2_Template, 13, 9, "div", 41, _forTrack0$J);
|
|
14298
14298
|
i0.ɵɵelementEnd();
|
|
14299
14299
|
} if (rf & 2) {
|
|
14300
14300
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
@@ -15133,7 +15133,7 @@ const ModalComponent_Conditional_0_Conditional_19_Conditional_4_Defer_2_DepsFn =
|
|
|
15133
15133
|
const ModalComponent_Conditional_0_Conditional_19_Conditional_5_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return barChart_component; }).then(m => m.BarChartComponent)];
|
|
15134
15134
|
const ModalComponent_Conditional_0_Conditional_19_Conditional_6_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return pieChart_component; }).then(m => m.PieChartComponent)];
|
|
15135
15135
|
const ModalComponent_Conditional_0_Conditional_19_Conditional_7_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return areaChart_component; }).then(m => m.AreaChartComponent)];
|
|
15136
|
-
const _forTrack0$
|
|
15136
|
+
const _forTrack0$I = ($index, $item) => $item.id || $index;
|
|
15137
15137
|
function ModalComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
15138
15138
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
15139
15139
|
i0.ɵɵelementStart(0, "button", 13);
|
|
@@ -15507,7 +15507,7 @@ function ModalComponent_Conditional_0_Conditional_22_For_3_Template(rf, ctx) { i
|
|
|
15507
15507
|
function ModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
15508
15508
|
i0.ɵɵelementStart(0, "div", 22);
|
|
15509
15509
|
i0.ɵɵconditionalCreate(1, ModalComponent_Conditional_0_Conditional_22_Conditional_1_Template, 2, 2, "p", 55);
|
|
15510
|
-
i0.ɵɵrepeaterCreate(2, ModalComponent_Conditional_0_Conditional_22_For_3_Template, 2, 5, "div", null, _forTrack0$
|
|
15510
|
+
i0.ɵɵrepeaterCreate(2, ModalComponent_Conditional_0_Conditional_22_For_3_Template, 2, 5, "div", null, _forTrack0$I);
|
|
15511
15511
|
i0.ɵɵelementEnd();
|
|
15512
15512
|
} if (rf & 2) {
|
|
15513
15513
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -19744,7 +19744,7 @@ class NarrativeTooltipComponent {
|
|
|
19744
19744
|
}], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }] }); })();
|
|
19745
19745
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NarrativeTooltipComponent, { className: "NarrativeTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/narrative-tooltip.component.ts", lineNumber: 27 }); })();
|
|
19746
19746
|
|
|
19747
|
-
const _forTrack0$
|
|
19747
|
+
const _forTrack0$H = ($index, $item) => $item.name;
|
|
19748
19748
|
function CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
19749
19749
|
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8)(2, "div", 9);
|
|
19750
19750
|
i0.ɵɵelement(3, "div", 10);
|
|
@@ -19788,7 +19788,7 @@ function CompetitiveStatusTooltipComponent_Conditional_6_Template(rf, ctx) { if
|
|
|
19788
19788
|
i0.ɵɵtext(3);
|
|
19789
19789
|
i0.ɵɵelementEnd();
|
|
19790
19790
|
i0.ɵɵelementStart(4, "div", 5);
|
|
19791
|
-
i0.ɵɵrepeaterCreate(5, CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template, 13, 12, "div", 6, _forTrack0$
|
|
19791
|
+
i0.ɵɵrepeaterCreate(5, CompetitiveStatusTooltipComponent_Conditional_6_For_6_Template, 13, 12, "div", 6, _forTrack0$H);
|
|
19792
19792
|
i0.ɵɵelementEnd()();
|
|
19793
19793
|
} if (rf & 2) {
|
|
19794
19794
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -20035,7 +20035,7 @@ class CompetitiveStatusTooltipComponent {
|
|
|
20035
20035
|
}], null, { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: true }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }] }); })();
|
|
20036
20036
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveStatusTooltipComponent, { className: "CompetitiveStatusTooltipComponent", filePath: "lib/components/funnel-analysis-dashboard/tooltip/competitive-status-tooltip.component.ts", lineNumber: 60 }); })();
|
|
20037
20037
|
|
|
20038
|
-
const _forTrack0$
|
|
20038
|
+
const _forTrack0$G = ($index, $item) => $item.name;
|
|
20039
20039
|
function FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
20040
20040
|
i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "span", 11);
|
|
20041
20041
|
i0.ɵɵtext(3);
|
|
@@ -20075,7 +20075,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_8_Template(rf, ctx)
|
|
|
20075
20075
|
i0.ɵɵtext(4);
|
|
20076
20076
|
i0.ɵɵelementEnd()();
|
|
20077
20077
|
i0.ɵɵelementStart(5, "div", 8);
|
|
20078
|
-
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template, 11, 9, "div", 9, _forTrack0$
|
|
20078
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_8_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
|
|
20079
20079
|
i0.ɵɵelementEnd()();
|
|
20080
20080
|
} if (rf & 2) {
|
|
20081
20081
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -20125,7 +20125,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_9_Template(rf, ctx)
|
|
|
20125
20125
|
i0.ɵɵtext(4);
|
|
20126
20126
|
i0.ɵɵelementEnd()();
|
|
20127
20127
|
i0.ɵɵelementStart(5, "div", 8);
|
|
20128
|
-
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template, 11, 9, "div", 9, _forTrack0$
|
|
20128
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_9_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
|
|
20129
20129
|
i0.ɵɵelementEnd()();
|
|
20130
20130
|
} if (rf & 2) {
|
|
20131
20131
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -20175,7 +20175,7 @@ function FunnelStageCompetitiveTooltipComponent_Conditional_10_Template(rf, ctx)
|
|
|
20175
20175
|
i0.ɵɵtext(4);
|
|
20176
20176
|
i0.ɵɵelementEnd()();
|
|
20177
20177
|
i0.ɵɵelementStart(5, "div", 8);
|
|
20178
|
-
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template, 11, 9, "div", 9, _forTrack0$
|
|
20178
|
+
i0.ɵɵrepeaterCreate(6, FunnelStageCompetitiveTooltipComponent_Conditional_10_For_7_Template, 11, 9, "div", 9, _forTrack0$G);
|
|
20179
20179
|
i0.ɵɵelementEnd()();
|
|
20180
20180
|
} if (rf & 2) {
|
|
20181
20181
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -21439,7 +21439,7 @@ class MobileFABComponent {
|
|
|
21439
21439
|
}], null, { isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], isCompactMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompactMode", required: false }] }], isExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isExpanded", required: false }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], scrollToTop: [{ type: i0.Output, args: ["scrollToTop"] }], toggleView: [{ type: i0.Output, args: ["toggleView"] }] }); })();
|
|
21440
21440
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MobileFABComponent, { className: "MobileFABComponent", filePath: "lib/components/funnel-analysis-dashboard/mobile-fab.component.ts", lineNumber: 75 }); })();
|
|
21441
21441
|
|
|
21442
|
-
const _forTrack0$
|
|
21442
|
+
const _forTrack0$F = ($index, $item) => $item.id;
|
|
21443
21443
|
function MobileBottomNavComponent_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
21444
21444
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
21445
21445
|
i0.ɵɵelementStart(0, "button", 3);
|
|
@@ -21497,7 +21497,7 @@ class MobileBottomNavComponent {
|
|
|
21497
21497
|
static { this.ɵfac = function MobileBottomNavComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MobileBottomNavComponent)(); }; }
|
|
21498
21498
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MobileBottomNavComponent, selectors: [["symphiq-mobile-bottom-nav"]], inputs: { isLightMode: [1, "isLightMode"], sections: [1, "sections"], activeSection: [1, "activeSection"] }, outputs: { navigate: "navigate" }, decls: 4, vars: 1, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "lg:hidden", "border-t", "backdrop-blur-md", 3, "ngClass"], [1, "flex", "items-center", "justify-around", "px-2", "py-3"], [1, "flex", "flex-col", "items-center", "gap-1", "px-3", "py-2", "rounded-lg", "transition-all", "duration-200", "active:scale-95", "min-w-[64px]", 3, "ngClass"], [1, "flex", "flex-col", "items-center", "gap-1", "px-3", "py-2", "rounded-lg", "transition-all", "duration-200", "active:scale-95", "min-w-[64px]", 3, "click", "ngClass"], [1, "w-6", "h-6", 3, "innerHTML"], [1, "text-xs", "font-medium"]], template: function MobileBottomNavComponent_Template(rf, ctx) { if (rf & 1) {
|
|
21499
21499
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
21500
|
-
i0.ɵɵrepeaterCreate(2, MobileBottomNavComponent_For_3_Template, 4, 3, "button", 2, _forTrack0$
|
|
21500
|
+
i0.ɵɵrepeaterCreate(2, MobileBottomNavComponent_For_3_Template, 4, 3, "button", 2, _forTrack0$F);
|
|
21501
21501
|
i0.ɵɵelementEnd()();
|
|
21502
21502
|
} if (rf & 2) {
|
|
21503
21503
|
i0.ɵɵproperty("ngClass", ctx.containerClass());
|
|
@@ -21702,7 +21702,7 @@ class SearchService {
|
|
|
21702
21702
|
}], null, null); })();
|
|
21703
21703
|
|
|
21704
21704
|
const _c0$X = ["searchInput"];
|
|
21705
|
-
const _forTrack0$
|
|
21705
|
+
const _forTrack0$E = ($index, $item) => $item.id;
|
|
21706
21706
|
function SearchBarComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
21707
21707
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
21708
21708
|
i0.ɵɵelementStart(0, "button", 18);
|
|
@@ -21795,7 +21795,7 @@ function SearchBarComponent_Conditional_0_Conditional_14_For_2_Template(rf, ctx)
|
|
|
21795
21795
|
} }
|
|
21796
21796
|
function SearchBarComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
21797
21797
|
i0.ɵɵelementStart(0, "div", 15);
|
|
21798
|
-
i0.ɵɵrepeaterCreate(1, SearchBarComponent_Conditional_0_Conditional_14_For_2_Template, 16, 12, "button", 19, _forTrack0$
|
|
21798
|
+
i0.ɵɵrepeaterCreate(1, SearchBarComponent_Conditional_0_Conditional_14_For_2_Template, 16, 12, "button", 19, _forTrack0$E);
|
|
21799
21799
|
i0.ɵɵelementEnd();
|
|
21800
21800
|
} if (rf & 2) {
|
|
21801
21801
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -22286,7 +22286,7 @@ class SearchHighlightDirective {
|
|
|
22286
22286
|
}]
|
|
22287
22287
|
}], () => [], { symphiqSearchHighlight: [{ type: i0.Input, args: [{ isSignal: true, alias: "libSymphiqSearchHighlight", required: false }] }], highlightId: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightId", required: false }] }] }); })();
|
|
22288
22288
|
|
|
22289
|
-
const _forTrack0$
|
|
22289
|
+
const _forTrack0$D = ($index, $item) => $item.value;
|
|
22290
22290
|
const _forTrack1$5 = ($index, $item) => $item.performanceItemId;
|
|
22291
22291
|
function CompetitiveScorecardComponent_For_12_Template(rf, ctx) { if (rf & 1) {
|
|
22292
22292
|
i0.ɵɵelementStart(0, "div", 7);
|
|
@@ -22661,7 +22661,7 @@ class CompetitiveScorecardComponent {
|
|
|
22661
22661
|
i0.ɵɵtext(9);
|
|
22662
22662
|
i0.ɵɵelementEnd()()();
|
|
22663
22663
|
i0.ɵɵelementStart(10, "div", 6);
|
|
22664
|
-
i0.ɵɵrepeaterCreate(11, CompetitiveScorecardComponent_For_12_Template, 4, 7, "div", 7, _forTrack0$
|
|
22664
|
+
i0.ɵɵrepeaterCreate(11, CompetitiveScorecardComponent_For_12_Template, 4, 7, "div", 7, _forTrack0$D);
|
|
22665
22665
|
i0.ɵɵelementEnd();
|
|
22666
22666
|
i0.ɵɵelementStart(13, "div", 8)(14, "table", 9)(15, "thead")(16, "tr", 10)(17, "th", 11);
|
|
22667
22667
|
i0.ɵɵtext(18, "Metric");
|
|
@@ -23296,7 +23296,7 @@ class SectionDividerComponent {
|
|
|
23296
23296
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], animationDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationDelay", required: false }] }], sectionIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionIcon", required: false }] }], subsections: [{ type: i0.Input, args: [{ isSignal: true, alias: "subsections", required: false }] }] }); })();
|
|
23297
23297
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SectionDividerComponent, { className: "SectionDividerComponent", filePath: "lib/components/shared/section-divider.component.ts", lineNumber: 36 }); })();
|
|
23298
23298
|
|
|
23299
|
-
const _forTrack0$
|
|
23299
|
+
const _forTrack0$C = ($index, $item) => $item.id;
|
|
23300
23300
|
function FloatingTocComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
23301
23301
|
i0.ɵɵnamespaceSVG();
|
|
23302
23302
|
i0.ɵɵelement(0, "path", 8);
|
|
@@ -23348,7 +23348,7 @@ function FloatingTocComponent_For_19_Conditional_7_For_2_Template(rf, ctx) { if
|
|
|
23348
23348
|
} }
|
|
23349
23349
|
function FloatingTocComponent_For_19_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
23350
23350
|
i0.ɵɵelementStart(0, "div", 17);
|
|
23351
|
-
i0.ɵɵrepeaterCreate(1, FloatingTocComponent_For_19_Conditional_7_For_2_Template, 4, 4, "button", 19, _forTrack0$
|
|
23351
|
+
i0.ɵɵrepeaterCreate(1, FloatingTocComponent_For_19_Conditional_7_For_2_Template, 4, 4, "button", 19, _forTrack0$C);
|
|
23352
23352
|
i0.ɵɵelementEnd();
|
|
23353
23353
|
} if (rf & 2) {
|
|
23354
23354
|
const section_r2 = i0.ɵɵnextContext().$implicit;
|
|
@@ -23738,7 +23738,7 @@ class FloatingTocComponent {
|
|
|
23738
23738
|
i0.ɵɵelementEnd()()();
|
|
23739
23739
|
i0.ɵɵnamespaceHTML();
|
|
23740
23740
|
i0.ɵɵelementStart(17, "nav", 9);
|
|
23741
|
-
i0.ɵɵrepeaterCreate(18, FloatingTocComponent_For_19_Template, 8, 6, "div", 10, _forTrack0$
|
|
23741
|
+
i0.ɵɵrepeaterCreate(18, FloatingTocComponent_For_19_Template, 8, 6, "div", 10, _forTrack0$C);
|
|
23742
23742
|
i0.ɵɵelementEnd();
|
|
23743
23743
|
i0.ɵɵelementStart(20, "div", 11)(21, "button", 7);
|
|
23744
23744
|
i0.ɵɵlistener("click", function FloatingTocComponent_Template_button_click_21_listener() { return ctx.scrollToTop(); });
|
|
@@ -23892,7 +23892,7 @@ class FloatingTocComponent {
|
|
|
23892
23892
|
}], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], containerElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "containerElement", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], parentHeaderOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentHeaderOffset", required: false }] }] }); })();
|
|
23893
23893
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FloatingTocComponent, { className: "FloatingTocComponent", filePath: "lib/components/business-analysis-dashboard/floating-toc.component.ts", lineNumber: 125 }); })();
|
|
23894
23894
|
|
|
23895
|
-
const _forTrack0$
|
|
23895
|
+
const _forTrack0$B = ($index, $item) => $item.id;
|
|
23896
23896
|
function JourneyProgressIndicatorComponent_For_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
23897
23897
|
i0.ɵɵnamespaceSVG();
|
|
23898
23898
|
i0.ɵɵelementStart(0, "svg", 22);
|
|
@@ -24125,7 +24125,7 @@ function JourneyProgressIndicatorComponent_Conditional_23_Template(rf, ctx) { if
|
|
|
24125
24125
|
i0.ɵɵtext(2, "Journey Progress");
|
|
24126
24126
|
i0.ɵɵelementEnd();
|
|
24127
24127
|
i0.ɵɵelementStart(3, "div", 44);
|
|
24128
|
-
i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_Conditional_23_For_5_Template, 14, 8, "div", 45, _forTrack0$
|
|
24128
|
+
i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_Conditional_23_For_5_Template, 14, 8, "div", 45, _forTrack0$B);
|
|
24129
24129
|
i0.ɵɵelementEnd()();
|
|
24130
24130
|
} if (rf & 2) {
|
|
24131
24131
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -24574,7 +24574,7 @@ class JourneyProgressIndicatorComponent {
|
|
|
24574
24574
|
static { this.ɵfac = function JourneyProgressIndicatorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || JourneyProgressIndicatorComponent)(); }; }
|
|
24575
24575
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: JourneyProgressIndicatorComponent, selectors: [["symphiq-journey-progress-indicator"]], inputs: { viewMode: [1, "viewMode"], currentStepId: [1, "currentStepId"], showNextStepAction: [1, "showNextStepAction"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"] }, outputs: { nextStepClick: "nextStepClick", stepClick: "stepClick" }, decls: 25, vars: 12, consts: [[1, "sticky", "top-[60px]", "z-40", "border-b", "pt-8", "pb-6", "px-6", "transition-all", "duration-200", "overflow-visible", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "overflow-visible"], [1, "hidden", "lg:flex", "items-start", "justify-between", "overflow-visible"], [1, "flex-1", "flex", "items-start", "justify-start", "overflow-visible"], ["type", "button", 1, "px-4", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-2", "whitespace-nowrap", "ml-4", "mt-0", 3, "disabled", "ngClass", "cursor-pointer", "cursor-not-allowed", "opacity-50", "hover:scale-105"], [1, "lg:hidden"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex-1", "flex", "items-center", "gap-3"], [1, "w-10", "h-10", "min-w-[2.5rem]", "min-h-[2.5rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-5", "h-5"], [1, "w-3", "h-3", "min-w-[0.75rem]", "min-h-[0.75rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "text-sm", "font-bold", 3, "ngClass"], [1, "flex-1", "text-left"], [1, "flex", "items-center", "gap-1.5", "relative", 3, "mouseenter", "mouseleave", "click"], [1, "text-xs", "cursor-pointer", 3, "ngClass"], [1, "p-0.5", "rounded-full", "cursor-pointer", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "absolute", "top-full", "left-0", "mt-2", "w-80", "max-w-[calc(100vw-2rem)]", "p-4", "rounded-lg", "shadow-xl", "z-50", 3, "ngClass"], ["type", "button", 1, "px-3", "py-1.5", "rounded-lg", "font-medium", "text-xs", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-1.5", "whitespace-nowrap", 3, "disabled", "ngClass", "cursor-pointer", "cursor-not-allowed", "opacity-50", "hover:scale-105"], [1, "flex", "flex-col", "items-center", "relative", "step-column", "overflow-visible", "flex-shrink-0", 3, "mouseenter", "mouseleave", "click"], [1, "w-8", "h-8", "min-w-[2rem]", "min-h-[2rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", "step-circle", "relative", "z-10", "mb-1.5", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4"], [1, "w-2.5", "h-2.5", "min-w-[0.625rem]", "min-h-[0.625rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "w-2", "h-2", "min-w-[0.5rem]", "min-h-[0.5rem]", "rounded-full", 3, "ngClass"], [1, "text-xs", "font-bold", 3, "ngClass"], [1, "text-[10px]", "text-center", "leading-tight", "whitespace-nowrap", "max-w-[64px]", "overflow-hidden", "text-ellipsis", 3, "ngClass"], [1, "absolute", "rounded-lg", "shadow-2xl", "z-50", "pointer-events-none", 3, "ngClass", "expanded-card-right", "expanded-card-left", "top", "left", "right"], [1, "flex-1", "h-0.5", "transition-all", "duration-200", "mt-[16px]", 3, "ngClass"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"], [1, "absolute", "rounded-lg", "shadow-2xl", "z-50", "pointer-events-none", 3, "ngClass"], [1, "flex", "items-start", "px-4", "py-3", "expanded-content"], [1, "flex", "items-start", "gap-2", "w-full"], [1, "text-xs", "font-bold", "flex-shrink-0", "mt-0.5", 3, "ngClass"], [1, "flex", "flex-col", "gap-1", "flex-1"], [1, "text-sm", "font-bold", "leading-tight", 3, "ngClass"], [1, "text-xs", "leading-relaxed", "description-fade", 3, "ngClass"], ["type", "button", 1, "px-4", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-2", "whitespace-nowrap", "ml-4", "mt-0", 3, "click", "disabled", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "animate-spin"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], [1, "text-sm", "font-bold", "mb-3", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-start", "gap-2"], [1, "w-6", "h-6", "min-w-[1.5rem]", "min-h-[1.5rem]", "rounded-full", "flex", "items-center", "justify-center", "flex-shrink-0", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3", "h-3"], [1, "w-2", "h-2", "min-w-[0.5rem]", "min-h-[0.5rem]", "rounded-full", "animate-pulse", 3, "ngClass"], [1, "w-1.5", "h-1.5", "min-w-[0.375rem]", "min-h-[0.375rem]", "rounded-full", 3, "ngClass"], [1, "text-[10px]", "font-bold", 3, "ngClass"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "gap-2"], [1, "text-xs", "font-medium", 3, "ngClass"], [1, "text-[10px]", "mt-0.5", 3, "ngClass"], ["type", "button", 1, "px-3", "py-1.5", "rounded-lg", "font-medium", "text-xs", "transition-all", "duration-200", "flex-shrink-0", "flex", "items-center", "gap-1.5", "whitespace-nowrap", 3, "click", "disabled", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5", "animate-spin"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"]], template: function JourneyProgressIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
24576
24576
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
24577
|
-
i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_For_5_Template, 10, 10, null, null, _forTrack0$
|
|
24577
|
+
i0.ɵɵrepeaterCreate(4, JourneyProgressIndicatorComponent_For_5_Template, 10, 10, null, null, _forTrack0$B);
|
|
24578
24578
|
i0.ɵɵelementEnd();
|
|
24579
24579
|
i0.ɵɵconditionalCreate(6, JourneyProgressIndicatorComponent_Conditional_6_Template, 3, 11, "button", 4);
|
|
24580
24580
|
i0.ɵɵelementEnd();
|
|
@@ -26725,7 +26725,7 @@ class ViewModeSwitcherModalComponent {
|
|
|
26725
26725
|
const _c0$V = a0 => ({ name: "check-badge", source: a0 });
|
|
26726
26726
|
const _c1$z = a0 => ({ name: "check-circle", source: a0 });
|
|
26727
26727
|
const _c2$o = a0 => ({ name: "chevron-right", source: a0 });
|
|
26728
|
-
const _forTrack0$
|
|
26728
|
+
const _forTrack0$A = ($index, $item) => $item.area;
|
|
26729
26729
|
function KeyStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
26730
26730
|
i0.ɵɵelementStart(0, "div", 1);
|
|
26731
26731
|
i0.ɵɵelement(1, "symphiq-icon", 3);
|
|
@@ -26794,7 +26794,7 @@ function KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template(rf,
|
|
|
26794
26794
|
} }
|
|
26795
26795
|
function KeyStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
26796
26796
|
i0.ɵɵelementStart(0, "div", 2);
|
|
26797
|
-
i0.ɵɵrepeaterCreate(1, KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$
|
|
26797
|
+
i0.ɵɵrepeaterCreate(1, KeyStrengthsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$A);
|
|
26798
26798
|
i0.ɵɵelementEnd();
|
|
26799
26799
|
} if (rf & 2) {
|
|
26800
26800
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -26958,7 +26958,7 @@ const _c0$U = a0 => ({ name: "shield-check", source: a0 });
|
|
|
26958
26958
|
const _c1$y = a0 => ({ name: "exclamation-triangle", source: a0 });
|
|
26959
26959
|
const _c2$n = a0 => ({ name: "document-text", source: a0 });
|
|
26960
26960
|
const _c3$h = a0 => ({ name: "chevron-right", source: a0 });
|
|
26961
|
-
const _forTrack0$
|
|
26961
|
+
const _forTrack0$z = ($index, $item) => $item.area;
|
|
26962
26962
|
function CriticalGapsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
26963
26963
|
i0.ɵɵelementStart(0, "div", 1);
|
|
26964
26964
|
i0.ɵɵelement(1, "symphiq-icon", 3);
|
|
@@ -27043,7 +27043,7 @@ function CriticalGapsListModalContentComponent_Conditional_2_For_2_Template(rf,
|
|
|
27043
27043
|
} }
|
|
27044
27044
|
function CriticalGapsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
27045
27045
|
i0.ɵɵelementStart(0, "div", 2);
|
|
27046
|
-
i0.ɵɵrepeaterCreate(1, CriticalGapsListModalContentComponent_Conditional_2_For_2_Template, 23, 25, "button", 6, _forTrack0$
|
|
27046
|
+
i0.ɵɵrepeaterCreate(1, CriticalGapsListModalContentComponent_Conditional_2_For_2_Template, 23, 25, "button", 6, _forTrack0$z);
|
|
27047
27047
|
i0.ɵɵelementEnd();
|
|
27048
27048
|
} if (rf & 2) {
|
|
27049
27049
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -27272,7 +27272,7 @@ class CriticalGapsListModalContentComponent {
|
|
|
27272
27272
|
|
|
27273
27273
|
const _c0$T = a0 => ({ name: "check-circle", source: a0 });
|
|
27274
27274
|
const _c1$x = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
27275
|
-
const _forTrack0$
|
|
27275
|
+
const _forTrack0$y = ($index, $item) => $item.questionId;
|
|
27276
27276
|
function KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
27277
27277
|
i0.ɵɵelementStart(0, "div", 19)(1, "span", 20);
|
|
27278
27278
|
i0.ɵɵtext(2);
|
|
@@ -27319,7 +27319,7 @@ function KeyStrengthDetailModalContentComponent_Conditional_13_Template(rf, ctx)
|
|
|
27319
27319
|
i0.ɵɵtext(3, " Supporting Evidence ");
|
|
27320
27320
|
i0.ɵɵelementEnd();
|
|
27321
27321
|
i0.ɵɵelementStart(4, "div", 12);
|
|
27322
|
-
i0.ɵɵrepeaterCreate(5, KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Template, 9, 10, "div", 13, _forTrack0$
|
|
27322
|
+
i0.ɵɵrepeaterCreate(5, KeyStrengthDetailModalContentComponent_Conditional_13_For_6_Template, 9, 10, "div", 13, _forTrack0$y);
|
|
27323
27323
|
i0.ɵɵelementEnd()();
|
|
27324
27324
|
} if (rf & 2) {
|
|
27325
27325
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -27514,7 +27514,7 @@ class KeyStrengthDetailModalContentComponent {
|
|
|
27514
27514
|
const _c0$S = a0 => ({ name: "exclamation-triangle", source: a0 });
|
|
27515
27515
|
const _c1$w = a0 => ({ name: "document-text", source: a0 });
|
|
27516
27516
|
const _c2$m = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
27517
|
-
const _forTrack0$
|
|
27517
|
+
const _forTrack0$x = ($index, $item) => $item.questionId;
|
|
27518
27518
|
function CriticalGapDetailModalContentComponent_Conditional_20_For_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
27519
27519
|
i0.ɵɵelementStart(0, "div", 23)(1, "p", 25);
|
|
27520
27520
|
i0.ɵɵtext(2, " Gap Identified: ");
|
|
@@ -27582,7 +27582,7 @@ function CriticalGapDetailModalContentComponent_Conditional_20_Template(rf, ctx)
|
|
|
27582
27582
|
i0.ɵɵtext(3, " Supporting Evidence ");
|
|
27583
27583
|
i0.ɵɵelementEnd();
|
|
27584
27584
|
i0.ɵɵelementStart(4, "div", 17);
|
|
27585
|
-
i0.ɵɵrepeaterCreate(5, CriticalGapDetailModalContentComponent_Conditional_20_For_6_Template, 10, 11, "div", 18, _forTrack0$
|
|
27585
|
+
i0.ɵɵrepeaterCreate(5, CriticalGapDetailModalContentComponent_Conditional_20_For_6_Template, 10, 11, "div", 18, _forTrack0$x);
|
|
27586
27586
|
i0.ɵɵelementEnd()();
|
|
27587
27587
|
} if (rf & 2) {
|
|
27588
27588
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -29378,7 +29378,7 @@ const _c0$R = a0 => ({ name: "check-badge", source: a0 });
|
|
|
29378
29378
|
const _c1$v = a0 => ({ name: "check-circle", source: a0 });
|
|
29379
29379
|
const _c2$l = a0 => ({ name: "chevron-right", source: a0 });
|
|
29380
29380
|
const _c3$g = a0 => ({ name: "chart-bar", source: a0 });
|
|
29381
|
-
const _forTrack0$
|
|
29381
|
+
const _forTrack0$w = ($index, $item) => $item.capability;
|
|
29382
29382
|
function FocusAreaStrengthsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
29383
29383
|
i0.ɵɵelementStart(0, "div", 1);
|
|
29384
29384
|
i0.ɵɵelement(1, "symphiq-icon", 3);
|
|
@@ -29493,7 +29493,7 @@ function FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Templat
|
|
|
29493
29493
|
} }
|
|
29494
29494
|
function FocusAreaStrengthsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
29495
29495
|
i0.ɵɵelementStart(0, "div", 2);
|
|
29496
|
-
i0.ɵɵrepeaterCreate(1, FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Template, 16, 18, "button", 6, _forTrack0$
|
|
29496
|
+
i0.ɵɵrepeaterCreate(1, FocusAreaStrengthsListModalContentComponent_Conditional_2_For_2_Template, 16, 18, "button", 6, _forTrack0$w);
|
|
29497
29497
|
i0.ɵɵelementEnd();
|
|
29498
29498
|
} if (rf & 2) {
|
|
29499
29499
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -29700,7 +29700,7 @@ class FocusAreaStrengthsListModalContentComponent {
|
|
|
29700
29700
|
const _c0$Q = a0 => ({ name: "exclamation-triangle", source: a0 });
|
|
29701
29701
|
const _c1$u = a0 => ({ name: "exclamation-circle", source: a0 });
|
|
29702
29702
|
const _c2$k = a0 => ({ name: "chevron-right", source: a0 });
|
|
29703
|
-
function _forTrack0$
|
|
29703
|
+
function _forTrack0$v($index, $item) { return this.getGapTitle($item); }
|
|
29704
29704
|
function FocusAreaGapsListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
29705
29705
|
i0.ɵɵelementStart(0, "div", 1);
|
|
29706
29706
|
i0.ɵɵelement(1, "symphiq-icon", 3);
|
|
@@ -29817,7 +29817,7 @@ function FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template(rf,
|
|
|
29817
29817
|
} }
|
|
29818
29818
|
function FocusAreaGapsListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
29819
29819
|
i0.ɵɵelementStart(0, "div", 2);
|
|
29820
|
-
i0.ɵɵrepeaterCreate(1, FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$
|
|
29820
|
+
i0.ɵɵrepeaterCreate(1, FocusAreaGapsListModalContentComponent_Conditional_2_For_2_Template, 15, 18, "button", 6, _forTrack0$v, true);
|
|
29821
29821
|
i0.ɵɵelementEnd();
|
|
29822
29822
|
} if (rf & 2) {
|
|
29823
29823
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -30094,7 +30094,7 @@ class FocusAreaGapsListModalContentComponent {
|
|
|
30094
30094
|
const _c0$P = a0 => ({ name: "light-bulb", source: a0 });
|
|
30095
30095
|
const _c1$t = a0 => ({ name: "chevron-right", source: a0 });
|
|
30096
30096
|
const _c2$j = a0 => ({ name: "chart-bar", source: a0 });
|
|
30097
|
-
const _forTrack0$
|
|
30097
|
+
const _forTrack0$u = ($index, $item) => $item.opportunity;
|
|
30098
30098
|
function FocusAreaOpportunitiesListModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
30099
30099
|
i0.ɵɵelementStart(0, "div", 1);
|
|
30100
30100
|
i0.ɵɵelement(1, "symphiq-icon", 3);
|
|
@@ -30185,7 +30185,7 @@ function FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Tem
|
|
|
30185
30185
|
} }
|
|
30186
30186
|
function FocusAreaOpportunitiesListModalContentComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
30187
30187
|
i0.ɵɵelementStart(0, "div", 2);
|
|
30188
|
-
i0.ɵɵrepeaterCreate(1, FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Template, 11, 11, "button", 6, _forTrack0$
|
|
30188
|
+
i0.ɵɵrepeaterCreate(1, FocusAreaOpportunitiesListModalContentComponent_Conditional_2_For_2_Template, 11, 11, "button", 6, _forTrack0$u);
|
|
30189
30189
|
i0.ɵɵelementEnd();
|
|
30190
30190
|
} if (rf & 2) {
|
|
30191
30191
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -30362,7 +30362,7 @@ class FocusAreaOpportunitiesListModalContentComponent {
|
|
|
30362
30362
|
|
|
30363
30363
|
const _c0$O = a0 => ({ name: "chevron-right", source: a0 });
|
|
30364
30364
|
const _c1$s = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
30365
|
-
const _forTrack0$
|
|
30365
|
+
const _forTrack0$t = ($index, $item) => $item.performanceItemId;
|
|
30366
30366
|
function FocusAreaStrengthDetailModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
30367
30367
|
i0.ɵɵelementStart(0, "div")(1, "p", 2);
|
|
30368
30368
|
i0.ɵɵtext(2);
|
|
@@ -30432,7 +30432,7 @@ function FocusAreaStrengthDetailModalContentComponent_Conditional_4_Template(rf,
|
|
|
30432
30432
|
i0.ɵɵtext(2);
|
|
30433
30433
|
i0.ɵɵelementEnd();
|
|
30434
30434
|
i0.ɵɵelementStart(3, "div", 9);
|
|
30435
|
-
i0.ɵɵrepeaterCreate(4, FocusAreaStrengthDetailModalContentComponent_Conditional_4_For_5_Template, 4, 5, "button", 10, _forTrack0$
|
|
30435
|
+
i0.ɵɵrepeaterCreate(4, FocusAreaStrengthDetailModalContentComponent_Conditional_4_For_5_Template, 4, 5, "button", 10, _forTrack0$t);
|
|
30436
30436
|
i0.ɵɵelementEnd()();
|
|
30437
30437
|
} if (rf & 2) {
|
|
30438
30438
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -31083,7 +31083,7 @@ class FocusAreaGapDetailModalContentComponent {
|
|
|
31083
31083
|
|
|
31084
31084
|
const _c0$M = a0 => ({ name: "chevron-right", source: a0 });
|
|
31085
31085
|
const _c1$r = () => [];
|
|
31086
|
-
const _forTrack0$
|
|
31086
|
+
const _forTrack0$s = ($index, $item) => $item.performanceItemId;
|
|
31087
31087
|
function FocusAreaOpportunityDetailModalContentComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
31088
31088
|
i0.ɵɵelementStart(0, "div")(1, "p", 2);
|
|
31089
31089
|
i0.ɵɵtext(2);
|
|
@@ -31135,7 +31135,7 @@ function FocusAreaOpportunityDetailModalContentComponent_Conditional_3_Template(
|
|
|
31135
31135
|
i0.ɵɵtext(2);
|
|
31136
31136
|
i0.ɵɵelementEnd();
|
|
31137
31137
|
i0.ɵɵelementStart(3, "div", 6);
|
|
31138
|
-
i0.ɵɵrepeaterCreate(4, FocusAreaOpportunityDetailModalContentComponent_Conditional_3_For_5_Template, 4, 5, "button", 7, _forTrack0$
|
|
31138
|
+
i0.ɵɵrepeaterCreate(4, FocusAreaOpportunityDetailModalContentComponent_Conditional_3_For_5_Template, 4, 5, "button", 7, _forTrack0$s);
|
|
31139
31139
|
i0.ɵɵelementEnd()();
|
|
31140
31140
|
} if (rf & 2) {
|
|
31141
31141
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -32218,7 +32218,7 @@ class ShadowElevationDirective {
|
|
|
32218
32218
|
selector: '[symphiqShadowElevation]',
|
|
32219
32219
|
standalone: true
|
|
32220
32220
|
}]
|
|
32221
|
-
}], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ScrollDepthService }, { type:
|
|
32221
|
+
}], () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ScrollDepthService }, { type: undefined, decorators: [{
|
|
32222
32222
|
type: Inject,
|
|
32223
32223
|
args: [PLATFORM_ID]
|
|
32224
32224
|
}] }], { scrollContainer: [{
|
|
@@ -36278,7 +36278,7 @@ const _c4$7 = a0 => ({ name: "academic-cap", source: a0 });
|
|
|
36278
36278
|
const _c5$5 = a0 => ({ name: "information-circle", source: a0 });
|
|
36279
36279
|
const _c6$2 = a0 => ({ name: "signal", source: a0 });
|
|
36280
36280
|
const _c7$1 = a0 => ({ name: "wrench-screwdriver", source: a0 });
|
|
36281
|
-
const _forTrack0$
|
|
36281
|
+
const _forTrack0$r = ($index, $item) => $item.name;
|
|
36282
36282
|
function ProductCategoryCardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
36283
36283
|
i0.ɵɵelementStart(0, "p", 8);
|
|
36284
36284
|
i0.ɵɵtext(1);
|
|
@@ -36409,7 +36409,7 @@ function ProductCategoryCardComponent_Conditional_16_Template(rf, ctx) { if (rf
|
|
|
36409
36409
|
i0.ɵɵelementStart(6, "symphiq-visualization-container", 21);
|
|
36410
36410
|
i0.ɵɵlistener("visualizationClick", function ProductCategoryCardComponent_Conditional_16_Template_symphiq_visualization_container_visualizationClick_6_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openHorizontalBarModal($event)); });
|
|
36411
36411
|
i0.ɵɵelementStart(7, "div", 22);
|
|
36412
|
-
i0.ɵɵrepeaterCreate(8, ProductCategoryCardComponent_Conditional_16_For_9_Template, 2, 5, "div", 23, _forTrack0$
|
|
36412
|
+
i0.ɵɵrepeaterCreate(8, ProductCategoryCardComponent_Conditional_16_For_9_Template, 2, 5, "div", 23, _forTrack0$r);
|
|
36413
36413
|
i0.ɵɵelementEnd()()()();
|
|
36414
36414
|
} if (rf & 2) {
|
|
36415
36415
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -41398,7 +41398,7 @@ const ProfileAnalysisModalComponent_Conditional_0_Conditional_31_Conditional_5_D
|
|
|
41398
41398
|
const ProfileAnalysisModalComponent_Conditional_0_Conditional_31_Conditional_6_Defer_2_DepsFn = () => [Promise.resolve().then(function () { return areaChart_component; }).then(m => m.AreaChartComponent)];
|
|
41399
41399
|
const _c3$8 = a0 => ({ name: "arrow-left", source: a0 });
|
|
41400
41400
|
const _c4$5 = a0 => ({ name: "chevron-right", source: a0 });
|
|
41401
|
-
const _forTrack0$
|
|
41401
|
+
const _forTrack0$q = ($index, $item) => $item.performanceItemId || $index;
|
|
41402
41402
|
const _forTrack1$4 = ($index, $item) => $item.id || $index;
|
|
41403
41403
|
function ProfileAnalysisModalComponent_Conditional_0_Conditional_10_For_5_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
41404
41404
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
@@ -41609,7 +41609,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Templa
|
|
|
41609
41609
|
function ProfileAnalysisModalComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
41610
41610
|
i0.ɵɵelementStart(0, "div", 20);
|
|
41611
41611
|
i0.ɵɵconditionalCreate(1, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_Conditional_1_Template, 2, 2, "p", 52);
|
|
41612
|
-
i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Template, 13, 10, "div", 53, _forTrack0$
|
|
41612
|
+
i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_21_For_3_Template, 13, 10, "div", 53, _forTrack0$q);
|
|
41613
41613
|
i0.ɵɵelementEnd();
|
|
41614
41614
|
} if (rf & 2) {
|
|
41615
41615
|
const data_r11 = ctx;
|
|
@@ -41689,7 +41689,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Templa
|
|
|
41689
41689
|
function ProfileAnalysisModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
41690
41690
|
i0.ɵɵelementStart(0, "div", 20);
|
|
41691
41691
|
i0.ɵɵconditionalCreate(1, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_Conditional_1_Template, 2, 2, "p", 52);
|
|
41692
|
-
i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Template, 13, 10, "div", 53, _forTrack0$
|
|
41692
|
+
i0.ɵɵrepeaterCreate(2, ProfileAnalysisModalComponent_Conditional_0_Conditional_22_For_3_Template, 13, 10, "div", 53, _forTrack0$q);
|
|
41693
41693
|
i0.ɵɵelementEnd();
|
|
41694
41694
|
} if (rf & 2) {
|
|
41695
41695
|
const data_r14 = ctx;
|
|
@@ -41808,7 +41808,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
|
|
|
41808
41808
|
i0.ɵɵelementStart(0, "div", 69)(1, "h3", 70);
|
|
41809
41809
|
i0.ɵɵtext(2, " Directly Affected Metric ");
|
|
41810
41810
|
i0.ɵɵelementEnd();
|
|
41811
|
-
i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_0_For_4_Template, 1, 1, null, null, _forTrack0$
|
|
41811
|
+
i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_0_For_4_Template, 1, 1, null, null, _forTrack0$q);
|
|
41812
41812
|
i0.ɵɵelementEnd();
|
|
41813
41813
|
} if (rf & 2) {
|
|
41814
41814
|
const data_r32 = i0.ɵɵnextContext(2);
|
|
@@ -41842,7 +41842,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
|
|
|
41842
41842
|
i0.ɵɵelementStart(0, "div", 69)(1, "h3", 70);
|
|
41843
41843
|
i0.ɵɵtext(2, " Indirectly Affected Metrics ");
|
|
41844
41844
|
i0.ɵɵelementEnd();
|
|
41845
|
-
i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_1_For_4_Template, 1, 1, null, null, _forTrack0$
|
|
41845
|
+
i0.ɵɵrepeaterCreate(3, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_1_Conditional_1_For_4_Template, 1, 1, null, null, _forTrack0$q);
|
|
41846
41846
|
i0.ɵɵelementEnd();
|
|
41847
41847
|
} if (rf & 2) {
|
|
41848
41848
|
const data_r32 = i0.ɵɵnextContext(2);
|
|
@@ -41874,7 +41874,7 @@ function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_
|
|
|
41874
41874
|
i0.ɵɵproperty("metric", metric_r38)("isLightMode", ctx_r1.isLightMode())("animationKey", $index_r39);
|
|
41875
41875
|
} }
|
|
41876
41876
|
function ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
41877
|
-
i0.ɵɵrepeaterCreate(0, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_For_1_Template, 2, 3, "div", null, _forTrack0$
|
|
41877
|
+
i0.ɵɵrepeaterCreate(0, ProfileAnalysisModalComponent_Conditional_0_Conditional_27_Conditional_2_For_1_Template, 2, 3, "div", null, _forTrack0$q);
|
|
41878
41878
|
} if (rf & 2) {
|
|
41879
41879
|
const data_r32 = i0.ɵɵnextContext();
|
|
41880
41880
|
i0.ɵɵrepeater(data_r32.metrics);
|
|
@@ -44528,7 +44528,7 @@ const _c0$w = a0 => ({ name: "list-bullet", source: a0 });
|
|
|
44528
44528
|
const _c1$e = a0 => ({ name: "arrow-right", source: a0 });
|
|
44529
44529
|
const _c2$9 = a0 => ({ name: "check-circle", source: a0 });
|
|
44530
44530
|
const _c3$6 = a0 => ({ name: "exclamation-circle", source: a0 });
|
|
44531
|
-
const _forTrack0$
|
|
44531
|
+
const _forTrack0$p = ($index, $item) => $item.order;
|
|
44532
44532
|
function RecommendationActionStepsModalComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
44533
44533
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 5);
|
|
44534
44534
|
i0.ɵɵelement(2, "symphiq-icon", 6);
|
|
@@ -44682,7 +44682,7 @@ class RecommendationActionStepsModalComponent {
|
|
|
44682
44682
|
i0.ɵɵelementStart(0, "div", 0);
|
|
44683
44683
|
i0.ɵɵconditionalCreate(1, RecommendationActionStepsModalComponent_Conditional_1_Template, 8, 7, "div", 1);
|
|
44684
44684
|
i0.ɵɵelementStart(2, "div", 2);
|
|
44685
|
-
i0.ɵɵrepeaterCreate(3, RecommendationActionStepsModalComponent_For_4_Template, 13, 11, "div", 3, _forTrack0$
|
|
44685
|
+
i0.ɵɵrepeaterCreate(3, RecommendationActionStepsModalComponent_For_4_Template, 13, 11, "div", 3, _forTrack0$p);
|
|
44686
44686
|
i0.ɵɵelementEnd();
|
|
44687
44687
|
i0.ɵɵconditionalCreate(5, RecommendationActionStepsModalComponent_Conditional_5_Template, 4, 5, "div", 4);
|
|
44688
44688
|
i0.ɵɵelementEnd();
|
|
@@ -45478,7 +45478,7 @@ const _c2$8 = () => [1, 2, 3, 4, 5, 6];
|
|
|
45478
45478
|
const _c3$5 = () => [1, 2, 3];
|
|
45479
45479
|
const _c4$3 = () => [1, 2, 3, 4];
|
|
45480
45480
|
const _c5$2 = () => [1, 2];
|
|
45481
|
-
const _forTrack0$
|
|
45481
|
+
const _forTrack0$o = ($index, $item) => $item.value;
|
|
45482
45482
|
function SymphiqFunnelAnalysisDashboardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
45483
45483
|
i0.ɵɵelement(0, "div", 11);
|
|
45484
45484
|
} }
|
|
@@ -45517,7 +45517,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template(rf, ctx
|
|
|
45517
45517
|
i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_click_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_mousedown_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_div_pointerdown_3_listener($event) { i0.ɵɵrestoreView(_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
45518
45518
|
i0.ɵɵelementStart(4, "select", 48);
|
|
45519
45519
|
i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_25_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeSectionFilter($event)); });
|
|
45520
|
-
i0.ɵɵrepeaterCreate(5, SymphiqFunnelAnalysisDashboardComponent_Conditional_25_For_6_Template, 2, 2, "option", 49, _forTrack0$
|
|
45520
|
+
i0.ɵɵrepeaterCreate(5, SymphiqFunnelAnalysisDashboardComponent_Conditional_25_For_6_Template, 2, 2, "option", 49, _forTrack0$o);
|
|
45521
45521
|
i0.ɵɵelementEnd()()();
|
|
45522
45522
|
} if (rf & 2) {
|
|
45523
45523
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -45597,7 +45597,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template(rf, ctx
|
|
|
45597
45597
|
i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); })("mousedown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); })("pointerdown", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_div_pointerdown_0_listener($event) { i0.ɵɵrestoreView(_r7); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
45598
45598
|
i0.ɵɵelementStart(1, "select", 54);
|
|
45599
45599
|
i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_46_Template_select_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.changeSectionFilter($event)); });
|
|
45600
|
-
i0.ɵɵrepeaterCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_46_For_3_Template, 2, 2, "option", 49, _forTrack0$
|
|
45600
|
+
i0.ɵɵrepeaterCreate(2, SymphiqFunnelAnalysisDashboardComponent_Conditional_46_For_3_Template, 2, 2, "option", 49, _forTrack0$o);
|
|
45601
45601
|
i0.ɵɵelementEnd()();
|
|
45602
45602
|
} if (rf & 2) {
|
|
45603
45603
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -46343,7 +46343,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Te
|
|
|
46343
46343
|
i0.ɵɵconditionalCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_14_Template, 2, 0, "div", 122);
|
|
46344
46344
|
i0.ɵɵelementStart(15, "select", 123);
|
|
46345
46345
|
i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Template_select_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCategoryFilter($event)); });
|
|
46346
|
-
i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_17_Template, 2, 1, null, null, _forTrack0$
|
|
46346
|
+
i0.ɵɵrepeaterCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_17_Template, 2, 1, null, null, _forTrack0$o);
|
|
46347
46347
|
i0.ɵɵelementEnd();
|
|
46348
46348
|
i0.ɵɵelementStart(18, "button", 124);
|
|
46349
46349
|
i0.ɵɵlistener("click", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r26); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.toggleSortOrder()); });
|
|
@@ -46357,7 +46357,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Te
|
|
|
46357
46357
|
i0.ɵɵtext(23, "Sort");
|
|
46358
46358
|
i0.ɵɵelementEnd()()()();
|
|
46359
46359
|
i0.ɵɵelementStart(24, "div", 127)(25, "div", 128);
|
|
46360
|
-
i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_27_Template, 1, 1, null, null, _forTrack0$
|
|
46360
|
+
i0.ɵɵrepeaterCreate(26, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_For_27_Template, 1, 1, null, null, _forTrack0$o);
|
|
46361
46361
|
i0.ɵɵelementEnd()()();
|
|
46362
46362
|
i0.ɵɵconditionalCreate(28, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_28_Template, 3, 1, "div", 129)(29, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_4_Conditional_29_Template, 4, 5, "div", 130);
|
|
46363
46363
|
i0.ɵɵelementEnd()();
|
|
@@ -46534,7 +46534,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Te
|
|
|
46534
46534
|
i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_12_Template, 2, 0, "div", 122);
|
|
46535
46535
|
i0.ɵɵelementStart(13, "select", 164);
|
|
46536
46536
|
i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Template_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeBreakdownFilter($event)); });
|
|
46537
|
-
i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_For_15_Template, 2, 1, null, null, _forTrack0$
|
|
46537
|
+
i0.ɵɵrepeaterCreate(14, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_For_15_Template, 2, 1, null, null, _forTrack0$o);
|
|
46538
46538
|
i0.ɵɵelementEnd()()();
|
|
46539
46539
|
i0.ɵɵconditionalCreate(16, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_16_Template, 3, 1, "div", 95)(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_5_Conditional_17_Template, 4, 5, "div", 165);
|
|
46540
46540
|
i0.ɵɵelementEnd()();
|
|
@@ -46645,7 +46645,7 @@ function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Te
|
|
|
46645
46645
|
i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_13_Template, 2, 0, "div", 122);
|
|
46646
46646
|
i0.ɵɵelementStart(14, "select", 123);
|
|
46647
46647
|
i0.ɵɵlistener("ngModelChange", function SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Template_select_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.changeCompetitiveFilter($event)); });
|
|
46648
|
-
i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_For_16_Template, 2, 1, null, null, _forTrack0$
|
|
46648
|
+
i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_For_16_Template, 2, 1, null, null, _forTrack0$o);
|
|
46649
46649
|
i0.ɵɵelementEnd()()();
|
|
46650
46650
|
i0.ɵɵconditionalCreate(17, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_17_Template, 6, 5, "div", 95)(18, SymphiqFunnelAnalysisDashboardComponent_Conditional_51_Conditional_6_Conditional_18_Template, 1, 6, "symphiq-competitive-intelligence-view", 92);
|
|
46651
46651
|
i0.ɵɵelementEnd()();
|
|
@@ -47226,7 +47226,7 @@ class SymphiqFunnelAnalysisDashboardComponent {
|
|
|
47226
47226
|
// Get the scrollable element once for all features
|
|
47227
47227
|
// Priority 1: Use the scrollElement passed directly from parent (preferred method)
|
|
47228
47228
|
// Priority 2: Fall back to querying by scrollContainerId (legacy method)
|
|
47229
|
-
|
|
47229
|
+
const scrollElement = this.scrollElement() || null;
|
|
47230
47230
|
let elementSource = 'none';
|
|
47231
47231
|
if (scrollElement) {
|
|
47232
47232
|
elementSource = 'passed-from-parent';
|
|
@@ -49212,7 +49212,7 @@ function getTrendClasses(trendPercent, viewMode) {
|
|
|
49212
49212
|
}
|
|
49213
49213
|
}
|
|
49214
49214
|
|
|
49215
|
-
const _forTrack0$
|
|
49215
|
+
const _forTrack0$n = ($index, $item) => $item.performanceItemId;
|
|
49216
49216
|
function SymphiqFunnelAnalysisPreviewComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
49217
49217
|
i0.ɵɵelementStart(0, "div", 17)(1, "p", 18);
|
|
49218
49218
|
i0.ɵɵtext(2);
|
|
@@ -49831,7 +49831,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
49831
49831
|
i0.ɵɵconditionalCreate(12, SymphiqFunnelAnalysisPreviewComponent_Conditional_12_Template, 3, 7, "div", 9);
|
|
49832
49832
|
i0.ɵɵconditionalCreate(13, SymphiqFunnelAnalysisPreviewComponent_Conditional_13_Template, 18, 23, "div", 10);
|
|
49833
49833
|
i0.ɵɵelementStart(14, "div", 11);
|
|
49834
|
-
i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisPreviewComponent_For_16_Template, 10, 17, "div", 12, _forTrack0$
|
|
49834
|
+
i0.ɵɵrepeaterCreate(15, SymphiqFunnelAnalysisPreviewComponent_For_16_Template, 10, 17, "div", 12, _forTrack0$n);
|
|
49835
49835
|
i0.ɵɵelementEnd();
|
|
49836
49836
|
i0.ɵɵconditionalCreate(17, SymphiqFunnelAnalysisPreviewComponent_Conditional_17_Template, 9, 11, "div", 9);
|
|
49837
49837
|
i0.ɵɵconditionalCreate(18, SymphiqFunnelAnalysisPreviewComponent_Conditional_18_Template, 14, 19, "div", 9);
|
|
@@ -50074,7 +50074,7 @@ class SymphiqFunnelAnalysisPreviewComponent {
|
|
|
50074
50074
|
}], () => [], { analysisInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], onViewAnalysis: [{ type: i0.Output, args: ["onViewAnalysis"] }] }); })();
|
|
50075
50075
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqFunnelAnalysisPreviewComponent, { className: "SymphiqFunnelAnalysisPreviewComponent", filePath: "lib/components/funnel-analysis-preview/symphiq-funnel-analysis-preview.component.ts", lineNumber: 228 }); })();
|
|
50076
50076
|
|
|
50077
|
-
const _forTrack0$
|
|
50077
|
+
const _forTrack0$m = ($index, $item) => $item.id;
|
|
50078
50078
|
function SymphiqWelcomeDashboardComponent_For_65_Template(rf, ctx) { if (rf & 1) {
|
|
50079
50079
|
i0.ɵɵelementStart(0, "div", 31)(1, "div", 36)(2, "div", 37)(3, "span", 38);
|
|
50080
50080
|
i0.ɵɵtext(4);
|
|
@@ -50369,7 +50369,7 @@ class SymphiqWelcomeDashboardComponent {
|
|
|
50369
50369
|
i0.ɵɵtext(62, " Your Onboarding Journey ");
|
|
50370
50370
|
i0.ɵɵelementEnd();
|
|
50371
50371
|
i0.ɵɵelementStart(63, "div", 30);
|
|
50372
|
-
i0.ɵɵrepeaterCreate(64, SymphiqWelcomeDashboardComponent_For_65_Template, 9, 3, "div", 31, _forTrack0$
|
|
50372
|
+
i0.ɵɵrepeaterCreate(64, SymphiqWelcomeDashboardComponent_For_65_Template, 9, 3, "div", 31, _forTrack0$m);
|
|
50373
50373
|
i0.ɵɵelementEnd()()();
|
|
50374
50374
|
i0.ɵɵelementStart(66, "div", 32);
|
|
50375
50375
|
i0.ɵɵnamespaceSVG();
|
|
@@ -51408,7 +51408,7 @@ class FocusAreaToolsModalComponent {
|
|
|
51408
51408
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaToolsModalComponent, { className: "FocusAreaToolsModalComponent", filePath: "lib/components/create-account-dashboard/focus-area-tools-modal.component.ts", lineNumber: 149 }); })();
|
|
51409
51409
|
|
|
51410
51410
|
const _c0$t = ["shopNameInput"];
|
|
51411
|
-
const _forTrack0$
|
|
51411
|
+
const _forTrack0$l = ($index, $item) => $item.focusAreaDomain;
|
|
51412
51412
|
function SymphiqCreateAccountDashboardComponent_Conditional_23_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
51413
51413
|
i0.ɵɵtext(0, " Shopify ");
|
|
51414
51414
|
} }
|
|
@@ -51735,7 +51735,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_Te
|
|
|
51735
51735
|
i0.ɵɵtext(3);
|
|
51736
51736
|
i0.ɵɵelementEnd();
|
|
51737
51737
|
i0.ɵɵelementStart(4, "div", 55);
|
|
51738
|
-
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_For_6_Template, 7, 5, "div", 56, _forTrack0$
|
|
51738
|
+
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_12_For_6_Template, 7, 5, "div", 56, _forTrack0$l);
|
|
51739
51739
|
i0.ɵɵelementEnd()();
|
|
51740
51740
|
} if (rf & 2) {
|
|
51741
51741
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -51765,7 +51765,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_Te
|
|
|
51765
51765
|
i0.ɵɵtext(3);
|
|
51766
51766
|
i0.ɵɵelementEnd();
|
|
51767
51767
|
i0.ɵɵelementStart(4, "div", 65);
|
|
51768
|
-
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_For_6_Template, 3, 3, "div", 66, _forTrack0$
|
|
51768
|
+
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_13_For_6_Template, 3, 3, "div", 66, _forTrack0$l);
|
|
51769
51769
|
i0.ɵɵelementEnd()();
|
|
51770
51770
|
} if (rf & 2) {
|
|
51771
51771
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -51795,7 +51795,7 @@ function SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_Te
|
|
|
51795
51795
|
i0.ɵɵtext(3);
|
|
51796
51796
|
i0.ɵɵelementEnd();
|
|
51797
51797
|
i0.ɵɵelementStart(4, "div", 68);
|
|
51798
|
-
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_For_6_Template, 3, 3, "div", 69, _forTrack0$
|
|
51798
|
+
i0.ɵɵrepeaterCreate(5, SymphiqCreateAccountDashboardComponent_Conditional_25_Conditional_14_For_6_Template, 3, 3, "div", 69, _forTrack0$l);
|
|
51799
51799
|
i0.ɵɵelementEnd()();
|
|
51800
51800
|
} if (rf & 2) {
|
|
51801
51801
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -53183,7 +53183,7 @@ class SymphiqCreateAccountDashboardComponent {
|
|
|
53183
53183
|
}] }); })();
|
|
53184
53184
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqCreateAccountDashboardComponent, { className: "SymphiqCreateAccountDashboardComponent", filePath: "lib/components/create-account-dashboard/symphiq-create-account-dashboard.component.ts", lineNumber: 625 }); })();
|
|
53185
53185
|
|
|
53186
|
-
const _forTrack0$
|
|
53186
|
+
const _forTrack0$k = ($index, $item) => $item.id;
|
|
53187
53187
|
function SymphiqConnectGaDashboardComponent_Conditional_21_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
53188
53188
|
i0.ɵɵtext(0, " Change Google Account ");
|
|
53189
53189
|
} }
|
|
@@ -53390,7 +53390,7 @@ function SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_
|
|
|
53390
53390
|
} }
|
|
53391
53391
|
function SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
53392
53392
|
i0.ɵɵelementStart(0, "div", 50);
|
|
53393
|
-
i0.ɵɵrepeaterCreate(1, SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_Template, 11, 8, "label", 52, _forTrack0$
|
|
53393
|
+
i0.ɵɵrepeaterCreate(1, SymphiqConnectGaDashboardComponent_Conditional_22_Conditional_14_For_2_Template, 11, 8, "label", 52, _forTrack0$k);
|
|
53394
53394
|
i0.ɵɵelementEnd();
|
|
53395
53395
|
} if (rf & 2) {
|
|
53396
53396
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
@@ -55120,7 +55120,7 @@ class TargetChangeBadgeComponent {
|
|
|
55120
55120
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], percentageChange: [{ type: i0.Input, args: [{ isSignal: true, alias: "percentageChange", required: false }] }], metric: [{ type: i0.Input, args: [{ isSignal: true, alias: "metric", required: false }] }], priorYear: [{ type: i0.Input, args: [{ isSignal: true, alias: "priorYear", required: false }] }], isCompact: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCompact", required: false }] }] }); })();
|
|
55121
55121
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TargetChangeBadgeComponent, { className: "TargetChangeBadgeComponent", filePath: "lib/components/revenue-calculator-dashboard/target-change-badge.component.ts", lineNumber: 23 }); })();
|
|
55122
55122
|
|
|
55123
|
-
const _forTrack0$
|
|
55123
|
+
const _forTrack0$j = ($index, $item) => $item.stageMetric.metric;
|
|
55124
55124
|
const _forTrack1$3 = ($index, $item) => $item.calc.metric;
|
|
55125
55125
|
function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
55126
55126
|
i0.ɵɵelementStart(0, "button", 7);
|
|
@@ -55531,7 +55531,7 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55531
55531
|
i0.ɵɵelementStart(0, "div", 0);
|
|
55532
55532
|
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
55533
55533
|
i0.ɵɵelementStart(2, "div", 1);
|
|
55534
|
-
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$
|
|
55534
|
+
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$j);
|
|
55535
55535
|
i0.ɵɵelementEnd()();
|
|
55536
55536
|
} if (rf & 2) {
|
|
55537
55537
|
i0.ɵɵadvance(3);
|
|
@@ -56553,7 +56553,1519 @@ var areaChart_component = /*#__PURE__*/Object.freeze({
|
|
|
56553
56553
|
AreaChartComponent: AreaChartComponent
|
|
56554
56554
|
});
|
|
56555
56555
|
|
|
56556
|
-
const _c0$r = ["
|
|
56556
|
+
const _c0$r = ["chartdiv"];
|
|
56557
|
+
class LineChartComponent {
|
|
56558
|
+
constructor() {
|
|
56559
|
+
this.chart = input({}, ...(ngDevMode ? [{ debugName: "chart" }] : []));
|
|
56560
|
+
this.showAxisLabels = input(false, ...(ngDevMode ? [{ debugName: "showAxisLabels" }] : []));
|
|
56561
|
+
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
56562
|
+
this.currencySymbol = input('$', ...(ngDevMode ? [{ debugName: "currencySymbol" }] : []));
|
|
56563
|
+
// Memoized computed signals to avoid recalculation on every change detection
|
|
56564
|
+
this.chartHeight = computed(() => this.showAxisLabels() ? '500px' : '133px', ...(ngDevMode ? [{ debugName: "chartHeight" }] : []));
|
|
56565
|
+
this.cursorColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x94a3b8, ...(ngDevMode ? [{ debugName: "cursorColor" }] : []));
|
|
56566
|
+
this.tooltipTextColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x000000, ...(ngDevMode ? [{ debugName: "tooltipTextColor" }] : []));
|
|
56567
|
+
this.chartHash = computed(() => this.generateChartHash(this.chart()), ...(ngDevMode ? [{ debugName: "chartHash" }] : []));
|
|
56568
|
+
this.lastChartHash = '';
|
|
56569
|
+
this.chartNeedsRender = false;
|
|
56570
|
+
this.isVisible = false;
|
|
56571
|
+
this.animationsEnabled = false;
|
|
56572
|
+
// Monitor for actual data changes using memoized hash
|
|
56573
|
+
effect(() => {
|
|
56574
|
+
const newHash = this.chartHash();
|
|
56575
|
+
if (newHash !== this.lastChartHash) {
|
|
56576
|
+
this.lastChartHash = newHash;
|
|
56577
|
+
this.chartNeedsRender = true;
|
|
56578
|
+
}
|
|
56579
|
+
});
|
|
56580
|
+
}
|
|
56581
|
+
ngOnInit() {
|
|
56582
|
+
}
|
|
56583
|
+
/**
|
|
56584
|
+
* Generate a hash of the chart data to detect actual changes
|
|
56585
|
+
* This prevents unnecessary re-renders when data hasn't truly changed
|
|
56586
|
+
*/
|
|
56587
|
+
generateChartHash(chart) {
|
|
56588
|
+
const data = chart.lineChartData;
|
|
56589
|
+
if (!data)
|
|
56590
|
+
return 'empty';
|
|
56591
|
+
const seriesCount = data.series?.length ?? 0;
|
|
56592
|
+
const dataPoints = data.series?.reduce((sum, s) => sum + (s.data?.length ?? 0), 0) ?? 0;
|
|
56593
|
+
return `${chart.title}-${seriesCount}-${dataPoints}-${chart.lineChartUseCase}`;
|
|
56594
|
+
}
|
|
56595
|
+
ngAfterViewInit() {
|
|
56596
|
+
this.setupIntersectionObserver();
|
|
56597
|
+
this.setupResizeObserver();
|
|
56598
|
+
}
|
|
56599
|
+
ngOnDestroy() {
|
|
56600
|
+
this.cleanupIntersectionObserver();
|
|
56601
|
+
this.cleanupResizeObserver();
|
|
56602
|
+
if (this.chartElement) {
|
|
56603
|
+
this.chartElement.series.clear();
|
|
56604
|
+
this.chartElement.xAxes.clear();
|
|
56605
|
+
this.chartElement.yAxes.clear();
|
|
56606
|
+
}
|
|
56607
|
+
if (this.root) {
|
|
56608
|
+
this.root.dispose();
|
|
56609
|
+
}
|
|
56610
|
+
this.chartElement = undefined;
|
|
56611
|
+
this.root = undefined;
|
|
56612
|
+
}
|
|
56613
|
+
setupResizeObserver() {
|
|
56614
|
+
if (!this.chartDiv?.nativeElement || typeof ResizeObserver === 'undefined') {
|
|
56615
|
+
return;
|
|
56616
|
+
}
|
|
56617
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
56618
|
+
if (this.resizeTimeout) {
|
|
56619
|
+
clearTimeout(this.resizeTimeout);
|
|
56620
|
+
}
|
|
56621
|
+
this.resizeTimeout = window.setTimeout(() => {
|
|
56622
|
+
// AmCharts handles resize automatically, but we debounce to prevent
|
|
56623
|
+
// excessive Angular change detection cycles during window resize
|
|
56624
|
+
if (this.root && !this.root.isDisposed()) {
|
|
56625
|
+
// Force a single layout recalculation after resize settles
|
|
56626
|
+
this.root.resize();
|
|
56627
|
+
}
|
|
56628
|
+
}, 150);
|
|
56629
|
+
});
|
|
56630
|
+
this.resizeObserver.observe(this.chartDiv.nativeElement);
|
|
56631
|
+
}
|
|
56632
|
+
cleanupResizeObserver() {
|
|
56633
|
+
if (this.resizeTimeout) {
|
|
56634
|
+
clearTimeout(this.resizeTimeout);
|
|
56635
|
+
this.resizeTimeout = undefined;
|
|
56636
|
+
}
|
|
56637
|
+
if (this.resizeObserver) {
|
|
56638
|
+
this.resizeObserver.disconnect();
|
|
56639
|
+
this.resizeObserver = undefined;
|
|
56640
|
+
}
|
|
56641
|
+
}
|
|
56642
|
+
setupIntersectionObserver() {
|
|
56643
|
+
if (!this.chartDiv?.nativeElement || typeof IntersectionObserver === 'undefined') {
|
|
56644
|
+
// Fallback: render immediately if IntersectionObserver not supported
|
|
56645
|
+
this.isVisible = true;
|
|
56646
|
+
this.animationsEnabled = true;
|
|
56647
|
+
if (this.chartNeedsRender || !this.root) {
|
|
56648
|
+
this.createChart();
|
|
56649
|
+
this.chartNeedsRender = false;
|
|
56650
|
+
}
|
|
56651
|
+
return;
|
|
56652
|
+
}
|
|
56653
|
+
// Use IntersectionObserver to detect when chart enters viewport
|
|
56654
|
+
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
56655
|
+
entries.forEach((entry) => {
|
|
56656
|
+
if (entry.isIntersecting && !this.isVisible) {
|
|
56657
|
+
this.isVisible = true;
|
|
56658
|
+
// Create chart without animations initially for faster rendering
|
|
56659
|
+
if (this.chartNeedsRender || !this.root) {
|
|
56660
|
+
this.createChart();
|
|
56661
|
+
this.chartNeedsRender = false;
|
|
56662
|
+
}
|
|
56663
|
+
// Enable animations after initial render completes
|
|
56664
|
+
setTimeout(() => {
|
|
56665
|
+
this.animationsEnabled = true;
|
|
56666
|
+
}, 100);
|
|
56667
|
+
// Stop observing once visible (one-time initialization)
|
|
56668
|
+
this.intersectionObserver?.disconnect();
|
|
56669
|
+
}
|
|
56670
|
+
});
|
|
56671
|
+
}, {
|
|
56672
|
+
// Trigger when 10% of the chart is visible
|
|
56673
|
+
threshold: 0.1,
|
|
56674
|
+
// Start observing slightly before element enters viewport
|
|
56675
|
+
rootMargin: '50px'
|
|
56676
|
+
});
|
|
56677
|
+
this.intersectionObserver.observe(this.chartDiv.nativeElement);
|
|
56678
|
+
}
|
|
56679
|
+
cleanupIntersectionObserver() {
|
|
56680
|
+
if (this.intersectionObserver) {
|
|
56681
|
+
this.intersectionObserver.disconnect();
|
|
56682
|
+
this.intersectionObserver = undefined;
|
|
56683
|
+
}
|
|
56684
|
+
}
|
|
56685
|
+
/**
|
|
56686
|
+
* Create chart with early exit optimization
|
|
56687
|
+
* Prevents unnecessary re-initialization if no data changes detected
|
|
56688
|
+
*/
|
|
56689
|
+
formatValue(value, valueFormat) {
|
|
56690
|
+
const formattedNumber = value.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
56691
|
+
if (valueFormat === 'CURRENCY') {
|
|
56692
|
+
return `${this.currencySymbol()}${formattedNumber}`;
|
|
56693
|
+
}
|
|
56694
|
+
else if (valueFormat === 'PERCENTAGE') {
|
|
56695
|
+
return `${formattedNumber}%`;
|
|
56696
|
+
}
|
|
56697
|
+
return formattedNumber;
|
|
56698
|
+
}
|
|
56699
|
+
isPriorYearSeries(seriesData) {
|
|
56700
|
+
if (!seriesData || !seriesData.name) {
|
|
56701
|
+
return false;
|
|
56702
|
+
}
|
|
56703
|
+
// Check if series name indicates it's a prior year series
|
|
56704
|
+
const name = seriesData.name.toLowerCase();
|
|
56705
|
+
const currentYear = new Date().getFullYear();
|
|
56706
|
+
// Check for explicit keywords
|
|
56707
|
+
if (name.includes('last year') ||
|
|
56708
|
+
name.includes('prior year') ||
|
|
56709
|
+
name.includes('previous year')) {
|
|
56710
|
+
return true;
|
|
56711
|
+
}
|
|
56712
|
+
// Check for year patterns - extract any 4-digit year and compare to current year
|
|
56713
|
+
const yearMatch = seriesData.name.match(/\b(20\d{2})\b/);
|
|
56714
|
+
if (yearMatch) {
|
|
56715
|
+
const year = parseInt(yearMatch[1], 10);
|
|
56716
|
+
return year < currentYear;
|
|
56717
|
+
}
|
|
56718
|
+
return false;
|
|
56719
|
+
}
|
|
56720
|
+
extractMetricName(seriesName) {
|
|
56721
|
+
// Extract metric name from series name by removing year patterns
|
|
56722
|
+
// e.g., "Purchase Revenue (2025)" -> "Purchase Revenue"
|
|
56723
|
+
// "Revenue 2024" -> "Revenue"
|
|
56724
|
+
// "Sessions (2024)" -> "Sessions"
|
|
56725
|
+
if (!seriesName)
|
|
56726
|
+
return '';
|
|
56727
|
+
return seriesName.replace(/\s*\(?\s*20\d{2}\s*\)?/g, '').trim();
|
|
56728
|
+
}
|
|
56729
|
+
createChart() {
|
|
56730
|
+
const chartData = this.chart().lineChartData;
|
|
56731
|
+
if (!chartData || !this.chartDiv)
|
|
56732
|
+
return;
|
|
56733
|
+
// Check if this is a YoY chart from the chart configuration
|
|
56734
|
+
const isYoYChart = this.chart().lineChartUseCase === LineChartUseCaseEnum.THIS_YEAR_VS_LAST_YEAR;
|
|
56735
|
+
this.root = Root.new(this.chartDiv.nativeElement);
|
|
56736
|
+
// Only enable animations if chart is visible to improve initial load performance
|
|
56737
|
+
if (this.animationsEnabled) {
|
|
56738
|
+
this.root.setThemes([am5themes_Animated.new(this.root)]);
|
|
56739
|
+
}
|
|
56740
|
+
this.chartElement = this.root.container.children.push(XYChart.new(this.root, {
|
|
56741
|
+
panX: false,
|
|
56742
|
+
panY: false,
|
|
56743
|
+
wheelX: 'none',
|
|
56744
|
+
wheelY: 'none',
|
|
56745
|
+
paddingLeft: 0,
|
|
56746
|
+
paddingRight: 0,
|
|
56747
|
+
paddingTop: 0,
|
|
56748
|
+
paddingBottom: 0,
|
|
56749
|
+
maxTooltipDistance: -1
|
|
56750
|
+
}));
|
|
56751
|
+
const dateAxis = this.chartElement.xAxes.push(DateAxis.new(this.root, {
|
|
56752
|
+
baseInterval: { timeUnit: 'month', count: 1 },
|
|
56753
|
+
renderer: AxisRendererX.new(this.root, {}),
|
|
56754
|
+
tooltip: Tooltip.new(this.root, {})
|
|
56755
|
+
}));
|
|
56756
|
+
dateAxis.get('renderer').labels.template.setAll({
|
|
56757
|
+
fontSize: 12,
|
|
56758
|
+
fill: color(0x94a3b8),
|
|
56759
|
+
visible: this.showAxisLabels(),
|
|
56760
|
+
paddingTop: 0,
|
|
56761
|
+
paddingBottom: 0,
|
|
56762
|
+
marginTop: 0,
|
|
56763
|
+
marginBottom: 0
|
|
56764
|
+
});
|
|
56765
|
+
// Create Y-axes based on yaxisLabels if provided
|
|
56766
|
+
const yaxisLabels = chartData.yaxisLabels || ['Value'];
|
|
56767
|
+
const yAxesMap = new Map();
|
|
56768
|
+
const axisColors = {};
|
|
56769
|
+
const axisColorPalette = [
|
|
56770
|
+
0x4A90E2, // Blue
|
|
56771
|
+
0x10b981, // Green
|
|
56772
|
+
0xf59e0b, // Amber
|
|
56773
|
+
0xef4444, // Red
|
|
56774
|
+
0x8b5cf6, // Purple
|
|
56775
|
+
0x06b6d4 // Cyan
|
|
56776
|
+
];
|
|
56777
|
+
yaxisLabels.forEach((label, index) => {
|
|
56778
|
+
const isRightAxis = index % 2 === 1;
|
|
56779
|
+
const colorValue = axisColorPalette[index % axisColorPalette.length];
|
|
56780
|
+
axisColors[label] = colorValue;
|
|
56781
|
+
if (!this.chartElement || !this.root)
|
|
56782
|
+
return;
|
|
56783
|
+
const yAxis = this.chartElement.yAxes.push(ValueAxis.new(this.root, {
|
|
56784
|
+
renderer: AxisRendererY.new(this.root, {
|
|
56785
|
+
opposite: isRightAxis
|
|
56786
|
+
})
|
|
56787
|
+
}));
|
|
56788
|
+
// Only show axis labels when there's a single Y-axis
|
|
56789
|
+
if (yaxisLabels.length === 1) {
|
|
56790
|
+
yAxis.get('renderer').labels.template.setAll({
|
|
56791
|
+
fontSize: 12,
|
|
56792
|
+
fill: color(colorValue),
|
|
56793
|
+
visible: this.showAxisLabels(),
|
|
56794
|
+
paddingLeft: 0,
|
|
56795
|
+
paddingRight: 0,
|
|
56796
|
+
marginLeft: 0,
|
|
56797
|
+
marginRight: 0
|
|
56798
|
+
});
|
|
56799
|
+
// Don't show axis title/name for single Y-axis, only values
|
|
56800
|
+
}
|
|
56801
|
+
else {
|
|
56802
|
+
// Hide labels when multiple axes
|
|
56803
|
+
yAxis.get('renderer').labels.template.setAll({
|
|
56804
|
+
visible: false
|
|
56805
|
+
});
|
|
56806
|
+
}
|
|
56807
|
+
yAxesMap.set(label, yAxis);
|
|
56808
|
+
});
|
|
56809
|
+
// Create cursor for mouse tracking - use memoized cursorColor
|
|
56810
|
+
const cursor = XYCursor.new(this.root, {
|
|
56811
|
+
behavior: 'zoomX'
|
|
56812
|
+
});
|
|
56813
|
+
this.chartElement.set('cursor', cursor);
|
|
56814
|
+
cursor.lineY.set('visible', false);
|
|
56815
|
+
cursor.lineX.set('visible', true);
|
|
56816
|
+
cursor.lineX.set('stroke', color(this.cursorColor()));
|
|
56817
|
+
cursor.set('xAxis', dateAxis);
|
|
56818
|
+
// Create free-floating tooltip for the chart
|
|
56819
|
+
const tooltip = Tooltip.new(this.root, {});
|
|
56820
|
+
this.chartElement.plotContainer.set('tooltipPosition', 'pointer');
|
|
56821
|
+
this.chartElement.plotContainer.set('tooltip', tooltip);
|
|
56822
|
+
this.chartElement.plotContainer.set('tooltipText', '{name}'); // Enable tooltip trigger
|
|
56823
|
+
// Make tooltip background transparent with white border
|
|
56824
|
+
const tooltipBg = tooltip.get('background');
|
|
56825
|
+
if (tooltipBg) {
|
|
56826
|
+
tooltipBg.setAll({
|
|
56827
|
+
fill: color(0x000000),
|
|
56828
|
+
fillOpacity: 0,
|
|
56829
|
+
stroke: color(0xffffff),
|
|
56830
|
+
strokeOpacity: 1,
|
|
56831
|
+
strokeWidth: 2
|
|
56832
|
+
});
|
|
56833
|
+
}
|
|
56834
|
+
// Style the tooltip label - white text for dark mode, black for light mode - use memoized color
|
|
56835
|
+
tooltip.label.setAll({
|
|
56836
|
+
fontSize: 12,
|
|
56837
|
+
fill: color(this.tooltipTextColor()),
|
|
56838
|
+
paddingTop: 8,
|
|
56839
|
+
paddingBottom: 8,
|
|
56840
|
+
paddingLeft: 10,
|
|
56841
|
+
paddingRight: 10
|
|
56842
|
+
});
|
|
56843
|
+
// Add tooltip text adapter to format values from all series with colored dots
|
|
56844
|
+
tooltip.label.adapters.add('text', () => {
|
|
56845
|
+
let text = '';
|
|
56846
|
+
let count = 0;
|
|
56847
|
+
let monthText = '';
|
|
56848
|
+
this.chartElement?.series.each((series) => {
|
|
56849
|
+
const dataItem = series.get('tooltipDataItem');
|
|
56850
|
+
if (dataItem) {
|
|
56851
|
+
// Extract month and year from the first series that has a dataItem
|
|
56852
|
+
if (monthText === '') {
|
|
56853
|
+
const valueX = dataItem.get('valueX');
|
|
56854
|
+
if (valueX) {
|
|
56855
|
+
const date = new Date(valueX);
|
|
56856
|
+
const month = date.toLocaleString('default', { month: 'long', timeZone: 'UTC' });
|
|
56857
|
+
const year = date.toLocaleString('default', { year: 'numeric', timeZone: 'UTC' });
|
|
56858
|
+
monthText = `${month} ${year}`;
|
|
56859
|
+
}
|
|
56860
|
+
}
|
|
56861
|
+
if (count > 0)
|
|
56862
|
+
text += '\n';
|
|
56863
|
+
const name = series.get('name');
|
|
56864
|
+
const value = dataItem.get('valueY');
|
|
56865
|
+
const seriesFormat = series.get('userData')?.valueFormat;
|
|
56866
|
+
const formattedValue = seriesFormat === 'CURRENCY'
|
|
56867
|
+
? ChartValueFormatter.formatValue(value, seriesFormat, this.currencySymbol())
|
|
56868
|
+
: this.formatValue(value, seriesFormat);
|
|
56869
|
+
// Get the series color (stroke color)
|
|
56870
|
+
const stroke = series.get('stroke');
|
|
56871
|
+
let colorHex = 'FFFFFF'; // Default white
|
|
56872
|
+
if (stroke) {
|
|
56873
|
+
colorHex = stroke.toString().substring(1).toUpperCase(); // Remove '#' and convert to uppercase
|
|
56874
|
+
}
|
|
56875
|
+
// Format with colored bullet: [color]●[/] SeriesName: Value
|
|
56876
|
+
text += `[fontSize: 24px][${colorHex}]●[/][/] [bold]${name}:[/] ${formattedValue}`;
|
|
56877
|
+
count++;
|
|
56878
|
+
}
|
|
56879
|
+
});
|
|
56880
|
+
// Prepend month to the text if available
|
|
56881
|
+
if (monthText) {
|
|
56882
|
+
text = `[bold]${monthText}[/]\n${text}`;
|
|
56883
|
+
}
|
|
56884
|
+
return text;
|
|
56885
|
+
});
|
|
56886
|
+
// For YoY charts, build a metric-to-color map to ensure both years of the same metric have the same color
|
|
56887
|
+
const metricColorMap = new Map();
|
|
56888
|
+
if (isYoYChart && chartData.series) {
|
|
56889
|
+
const uniqueMetrics = new Set();
|
|
56890
|
+
chartData.series.forEach(seriesData => {
|
|
56891
|
+
const metricName = this.extractMetricName(seriesData.name);
|
|
56892
|
+
uniqueMetrics.add(metricName);
|
|
56893
|
+
});
|
|
56894
|
+
let colorIndex = 0;
|
|
56895
|
+
uniqueMetrics.forEach(metricName => {
|
|
56896
|
+
metricColorMap.set(metricName, axisColorPalette[colorIndex % axisColorPalette.length]);
|
|
56897
|
+
colorIndex++;
|
|
56898
|
+
});
|
|
56899
|
+
}
|
|
56900
|
+
chartData.series?.forEach((seriesData, index) => {
|
|
56901
|
+
const parsedData = (seriesData.data || []).map(d => ({
|
|
56902
|
+
date: new Date(`${d.date}T00:00:00Z`).getTime(),
|
|
56903
|
+
value: d.value
|
|
56904
|
+
}));
|
|
56905
|
+
// Get the Y-axis for this series, or use the first one as default
|
|
56906
|
+
const yaxisLabel = seriesData.yaxisLabel || yaxisLabels[0];
|
|
56907
|
+
const yAxis = yAxesMap.get(yaxisLabel) || Array.from(yAxesMap.values())[0];
|
|
56908
|
+
// Determine series color: for YoY charts use metric-based colors, otherwise use axis-based colors
|
|
56909
|
+
let seriesColorValue;
|
|
56910
|
+
if (isYoYChart) {
|
|
56911
|
+
const metricName = this.extractMetricName(seriesData.name);
|
|
56912
|
+
seriesColorValue = metricColorMap.get(metricName) || axisColorPalette[index % axisColorPalette.length];
|
|
56913
|
+
}
|
|
56914
|
+
else {
|
|
56915
|
+
seriesColorValue = axisColors[yaxisLabel] || axisColorPalette[index % axisColorPalette.length];
|
|
56916
|
+
}
|
|
56917
|
+
const seriesColor = color(seriesColorValue);
|
|
56918
|
+
// Check if this is a prior year series for YoY charts
|
|
56919
|
+
const isPriorYear = isYoYChart && this.isPriorYearSeries(seriesData);
|
|
56920
|
+
if (!this.chartElement || !this.root)
|
|
56921
|
+
return;
|
|
56922
|
+
const series = this.chartElement.series.push(LineSeries.new(this.root, {
|
|
56923
|
+
name: seriesData.name,
|
|
56924
|
+
xAxis: dateAxis,
|
|
56925
|
+
yAxis: yAxis,
|
|
56926
|
+
valueYField: 'value',
|
|
56927
|
+
valueXField: 'date',
|
|
56928
|
+
stroke: seriesColor
|
|
56929
|
+
}));
|
|
56930
|
+
// Store valueFormat and prior year flag in userData for tooltip formatting
|
|
56931
|
+
series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear });
|
|
56932
|
+
// Disable individual series tooltips - use floating tooltip instead
|
|
56933
|
+
series.set('tooltip', undefined);
|
|
56934
|
+
// Configure stroke styling based on whether it's a prior year series
|
|
56935
|
+
series.strokes.template.setAll({
|
|
56936
|
+
strokeWidth: 2
|
|
56937
|
+
});
|
|
56938
|
+
if (isPriorYear) {
|
|
56939
|
+
// Apply dashed line and reduced opacity for prior year data
|
|
56940
|
+
series.strokes.template.setAll({
|
|
56941
|
+
strokeDasharray: [5, 5],
|
|
56942
|
+
strokeOpacity: 0.4
|
|
56943
|
+
});
|
|
56944
|
+
// Also set on each individual stroke
|
|
56945
|
+
series.strokes.each((stroke) => {
|
|
56946
|
+
stroke.set('strokeDasharray', [5, 5]);
|
|
56947
|
+
stroke.set('strokeOpacity', 0.4);
|
|
56948
|
+
});
|
|
56949
|
+
}
|
|
56950
|
+
// Add bullets with larger hit area for better hover detection
|
|
56951
|
+
series.bullets.push(() => {
|
|
56952
|
+
const bulletConfig = {
|
|
56953
|
+
radius: 5,
|
|
56954
|
+
fill: seriesColor
|
|
56955
|
+
};
|
|
56956
|
+
if (isPriorYear) {
|
|
56957
|
+
bulletConfig['fillOpacity'] = 0.4;
|
|
56958
|
+
}
|
|
56959
|
+
if (!this.root)
|
|
56960
|
+
return Bullet.new({}, { sprite: Circle.new({}, {}) });
|
|
56961
|
+
const circle = Circle.new(this.root, bulletConfig);
|
|
56962
|
+
return Bullet.new(this.root, {
|
|
56963
|
+
sprite: circle
|
|
56964
|
+
});
|
|
56965
|
+
});
|
|
56966
|
+
series.data.setAll(parsedData);
|
|
56967
|
+
series.appear(1000);
|
|
56968
|
+
});
|
|
56969
|
+
// Only show legend in modal view (when showAxisLabels is true)
|
|
56970
|
+
if (this.showAxisLabels()) {
|
|
56971
|
+
const legend = this.chartElement.children.push(Legend.new(this.root, {
|
|
56972
|
+
centerX: percent(50),
|
|
56973
|
+
x: percent(50)
|
|
56974
|
+
}));
|
|
56975
|
+
legend.labels.template.setAll({
|
|
56976
|
+
fontSize: 12,
|
|
56977
|
+
fill: color(0x94a3b8)
|
|
56978
|
+
});
|
|
56979
|
+
// Reverse the series order in the legend so 2025 series appear on the right
|
|
56980
|
+
const reversedSeries = Array.from(this.chartElement.series.values).reverse();
|
|
56981
|
+
legend.data.setAll(reversedSeries);
|
|
56982
|
+
}
|
|
56983
|
+
this.chartElement.appear(1000, 100);
|
|
56984
|
+
}
|
|
56985
|
+
static { this.ɵfac = function LineChartComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LineChartComponent)(); }; }
|
|
56986
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [["symphiq-line-chart"]], viewQuery: function LineChartComponent_Query(rf, ctx) { if (rf & 1) {
|
|
56987
|
+
i0.ɵɵviewQuery(_c0$r, 7);
|
|
56988
|
+
} if (rf & 2) {
|
|
56989
|
+
let _t;
|
|
56990
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartDiv = _t.first);
|
|
56991
|
+
} }, inputs: { chart: [1, "chart"], showAxisLabels: [1, "showAxisLabels"], viewMode: [1, "viewMode"], currencySymbol: [1, "currencySymbol"] }, decls: 3, vars: 4, consts: [["chartdiv", ""], [1, "chart-container"], [1, "chart", 2, "width", "100%"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {
|
|
56992
|
+
i0.ɵɵdomElementStart(0, "div", 1);
|
|
56993
|
+
i0.ɵɵdomElement(1, "div", 2, 0);
|
|
56994
|
+
i0.ɵɵdomElementEnd();
|
|
56995
|
+
} if (rf & 2) {
|
|
56996
|
+
i0.ɵɵclassProp("mini-mode", !ctx.showAxisLabels());
|
|
56997
|
+
i0.ɵɵadvance();
|
|
56998
|
+
i0.ɵɵstyleProp("height", ctx.chartHeight());
|
|
56999
|
+
} }, styles: [".chart-container[_ngcontent-%COMP%]{width:100%;padding:1rem}.chart-container.mini-mode[_ngcontent-%COMP%]{padding:.25rem}"], changeDetection: 0 }); }
|
|
57000
|
+
}
|
|
57001
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LineChartComponent, [{
|
|
57002
|
+
type: Component,
|
|
57003
|
+
args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
57004
|
+
<div class="chart-container" [class.mini-mode]="!showAxisLabels()">
|
|
57005
|
+
<div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
|
|
57006
|
+
</div>
|
|
57007
|
+
`, styles: [".chart-container{width:100%;padding:1rem}.chart-container.mini-mode{padding:.25rem}\n"] }]
|
|
57008
|
+
}], () => [], { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: false }] }], showAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAxisLabels", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], chartDiv: [{
|
|
57009
|
+
type: ViewChild,
|
|
57010
|
+
args: ['chartdiv', { static: true }]
|
|
57011
|
+
}] }); })();
|
|
57012
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LineChartComponent, { className: "LineChartComponent", filePath: "lib/components/funnel-analysis-dashboard/charts/line-chart.component.ts", lineNumber: 38 }); })();
|
|
57013
|
+
|
|
57014
|
+
var lineChart_component = /*#__PURE__*/Object.freeze({
|
|
57015
|
+
__proto__: null,
|
|
57016
|
+
LineChartComponent: LineChartComponent
|
|
57017
|
+
});
|
|
57018
|
+
|
|
57019
|
+
const _forTrack0$i = ($index, $item) => $item.metric;
|
|
57020
|
+
function MetricReportModalComponent_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
57021
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
57022
|
+
i0.ɵɵelementStart(0, "button", 29);
|
|
57023
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleDefinition()); });
|
|
57024
|
+
i0.ɵɵnamespaceSVG();
|
|
57025
|
+
i0.ɵɵelementStart(1, "svg", 30);
|
|
57026
|
+
i0.ɵɵelement(2, "path", 31);
|
|
57027
|
+
i0.ɵɵelementEnd();
|
|
57028
|
+
i0.ɵɵnamespaceHTML();
|
|
57029
|
+
i0.ɵɵelementStart(3, "span");
|
|
57030
|
+
i0.ɵɵtext(4);
|
|
57031
|
+
i0.ɵɵelementEnd();
|
|
57032
|
+
i0.ɵɵnamespaceSVG();
|
|
57033
|
+
i0.ɵɵelementStart(5, "svg", 32);
|
|
57034
|
+
i0.ɵɵelement(6, "path", 33);
|
|
57035
|
+
i0.ɵɵelementEnd()();
|
|
57036
|
+
} if (rf & 2) {
|
|
57037
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57038
|
+
i0.ɵɵproperty("ngClass", ctx_r1.definitionToggleClasses());
|
|
57039
|
+
i0.ɵɵadvance(4);
|
|
57040
|
+
i0.ɵɵtextInterpolate1("What is ", ctx_r1.metricTitle(), "?");
|
|
57041
|
+
i0.ɵɵadvance();
|
|
57042
|
+
i0.ɵɵclassProp("rotate-180", ctx_r1.showDefinition());
|
|
57043
|
+
} }
|
|
57044
|
+
function MetricReportModalComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
57045
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
57046
|
+
i0.ɵɵtext(1);
|
|
57047
|
+
i0.ɵɵelementEnd();
|
|
57048
|
+
} if (rf & 2) {
|
|
57049
|
+
let tmp_3_0;
|
|
57050
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57051
|
+
i0.ɵɵproperty("ngClass", ctx_r1.definitionBoxClasses());
|
|
57052
|
+
i0.ɵɵadvance();
|
|
57053
|
+
i0.ɵɵtextInterpolate1(" ", (tmp_3_0 = ctx_r1.metricData()) == null ? null : tmp_3_0.description, " ");
|
|
57054
|
+
} }
|
|
57055
|
+
function MetricReportModalComponent_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
57056
|
+
i0.ɵɵelement(0, "symphiq-target-change-badge", 20);
|
|
57057
|
+
} if (rf & 2) {
|
|
57058
|
+
let tmp_4_0;
|
|
57059
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57060
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("percentageChange", ctx_r1.ytdChangePercentage())("metric", ((tmp_4_0 = ctx_r1.metricData()) == null ? null : tmp_4_0.metric) || "")("priorYear", ctx_r1.priorYear())("isCompact", true);
|
|
57061
|
+
} }
|
|
57062
|
+
function MetricReportModalComponent_Conditional_0_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
57063
|
+
i0.ɵɵelementStart(0, "div")(1, "p", 19);
|
|
57064
|
+
i0.ɵɵtext(2);
|
|
57065
|
+
i0.ɵɵelementEnd();
|
|
57066
|
+
i0.ɵɵelementStart(3, "p", 9);
|
|
57067
|
+
i0.ɵɵtext(4);
|
|
57068
|
+
i0.ɵɵelementEnd();
|
|
57069
|
+
i0.ɵɵelement(5, "symphiq-pacing-status-badge", 34);
|
|
57070
|
+
i0.ɵɵelementEnd();
|
|
57071
|
+
} if (rf & 2) {
|
|
57072
|
+
let tmp_5_0;
|
|
57073
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57074
|
+
i0.ɵɵadvance();
|
|
57075
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57076
|
+
i0.ɵɵadvance();
|
|
57077
|
+
i0.ɵɵtextInterpolate1(" Pace for ", ctx_r1.currentYear(), " ");
|
|
57078
|
+
i0.ɵɵadvance();
|
|
57079
|
+
i0.ɵɵproperty("ngClass", ctx_r1.projectedValueClasses());
|
|
57080
|
+
i0.ɵɵadvance();
|
|
57081
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.pacingInfo().projectedValue, ((tmp_5_0 = ctx_r1.metricData()) == null ? null : tmp_5_0.metric) || "", false), " ");
|
|
57082
|
+
i0.ɵɵadvance();
|
|
57083
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", ctx_r1.pacingInfo().pacingPercentage)("status", ctx_r1.pacingInfo().status)("showAsFullText", false)("isCompact", true)("showEmphasizedPercentage", true);
|
|
57084
|
+
} }
|
|
57085
|
+
function MetricReportModalComponent_Conditional_0_Conditional_54_Template(rf, ctx) { if (rf & 1) {
|
|
57086
|
+
i0.ɵɵelementStart(0, "div", 22);
|
|
57087
|
+
i0.ɵɵelement(1, "symphiq-pacing-status-badge", 34);
|
|
57088
|
+
i0.ɵɵelementEnd();
|
|
57089
|
+
i0.ɵɵelementStart(2, "div", 22)(3, "p", 25);
|
|
57090
|
+
i0.ɵɵtext(4);
|
|
57091
|
+
i0.ɵɵelementEnd()();
|
|
57092
|
+
i0.ɵɵelementStart(5, "div", 35)(6, "div", 36)(7, "span");
|
|
57093
|
+
i0.ɵɵtext(8, "Progress to Target");
|
|
57094
|
+
i0.ɵɵelementEnd();
|
|
57095
|
+
i0.ɵɵelementStart(9, "span");
|
|
57096
|
+
i0.ɵɵtext(10);
|
|
57097
|
+
i0.ɵɵelementEnd()();
|
|
57098
|
+
i0.ɵɵelementStart(11, "div", 37);
|
|
57099
|
+
i0.ɵɵelement(12, "div", 38);
|
|
57100
|
+
i0.ɵɵelementEnd()();
|
|
57101
|
+
} if (rf & 2) {
|
|
57102
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57103
|
+
i0.ɵɵadvance();
|
|
57104
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("pacingPercentage", ctx_r1.pacingInfo().pacingPercentage)("status", ctx_r1.pacingInfo().status)("showAsFullText", true)("isCompact", false)("showEmphasizedPercentage", true);
|
|
57105
|
+
i0.ɵɵadvance(2);
|
|
57106
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
57107
|
+
i0.ɵɵadvance();
|
|
57108
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.gapAnalysisText(), " ");
|
|
57109
|
+
i0.ɵɵadvance(2);
|
|
57110
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57111
|
+
i0.ɵɵadvance(4);
|
|
57112
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatPercentage(ctx_r1.progressToTarget(), 1));
|
|
57113
|
+
i0.ɵɵadvance();
|
|
57114
|
+
i0.ɵɵproperty("ngClass", ctx_r1.progressBarBgClasses());
|
|
57115
|
+
i0.ɵɵadvance();
|
|
57116
|
+
i0.ɵɵstyleProp("width", ctx_r1.Math.min(ctx_r1.progressToTarget(), 100), "%");
|
|
57117
|
+
i0.ɵɵproperty("ngClass", ctx_r1.progressBarFillClasses());
|
|
57118
|
+
} }
|
|
57119
|
+
function MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
57120
|
+
i0.ɵɵelementStart(0, "button", 48);
|
|
57121
|
+
i0.ɵɵnamespaceSVG();
|
|
57122
|
+
i0.ɵɵelementStart(1, "svg", 54);
|
|
57123
|
+
i0.ɵɵelement(2, "path", 31);
|
|
57124
|
+
i0.ɵɵelementEnd()();
|
|
57125
|
+
} if (rf & 2) {
|
|
57126
|
+
const metric_r4 = i0.ɵɵnextContext().$implicit;
|
|
57127
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
57128
|
+
i0.ɵɵproperty("ngClass", ctx_r1.infoIconClasses())("libSymphiqTooltip", ctx_r1.getMarkdownTooltipContent(metric_r4.description, ctx_r1.getMetricTitle(metric_r4)));
|
|
57129
|
+
} }
|
|
57130
|
+
function MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Template(rf, ctx) { if (rf & 1) {
|
|
57131
|
+
i0.ɵɵelementStart(0, "tr", 44)(1, "td", 45)(2, "div", 46)(3, "span", 47);
|
|
57132
|
+
i0.ɵɵtext(4);
|
|
57133
|
+
i0.ɵɵelementEnd();
|
|
57134
|
+
i0.ɵɵconditionalCreate(5, MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Conditional_5_Template, 3, 2, "button", 48);
|
|
57135
|
+
i0.ɵɵelementEnd()();
|
|
57136
|
+
i0.ɵɵelementStart(6, "td", 49)(7, "span", 50);
|
|
57137
|
+
i0.ɵɵtext(8);
|
|
57138
|
+
i0.ɵɵelementEnd()();
|
|
57139
|
+
i0.ɵɵelementStart(9, "td", 49)(10, "div", 51)(11, "span", 47);
|
|
57140
|
+
i0.ɵɵtext(12);
|
|
57141
|
+
i0.ɵɵelementEnd();
|
|
57142
|
+
i0.ɵɵnamespaceSVG();
|
|
57143
|
+
i0.ɵɵelementStart(13, "svg", 52);
|
|
57144
|
+
i0.ɵɵelement(14, "path", 53);
|
|
57145
|
+
i0.ɵɵelementEnd()()()();
|
|
57146
|
+
} if (rf & 2) {
|
|
57147
|
+
const metric_r4 = ctx.$implicit;
|
|
57148
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
57149
|
+
i0.ɵɵproperty("ngClass", ctx_r1.tableRowClasses());
|
|
57150
|
+
i0.ɵɵadvance(4);
|
|
57151
|
+
i0.ɵɵtextInterpolate(ctx_r1.getMetricTitle(metric_r4));
|
|
57152
|
+
i0.ɵɵadvance();
|
|
57153
|
+
i0.ɵɵconditional(metric_r4.description ? 5 : -1);
|
|
57154
|
+
i0.ɵɵadvance(2);
|
|
57155
|
+
i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
|
|
57156
|
+
i0.ɵɵadvance();
|
|
57157
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(metric_r4.targetValue, metric_r4.metric, false), " ");
|
|
57158
|
+
i0.ɵɵadvance(4);
|
|
57159
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatPercentage(ctx_r1.Math.abs(metric_r4.percentageIncrease), 1), " ");
|
|
57160
|
+
i0.ɵɵadvance(2);
|
|
57161
|
+
i0.ɵɵattribute("d", metric_r4.percentageIncrease >= 0 ? "M5 10l7-7m0 0l7 7m-7-7v18" : "M19 14l-7 7m0 0l-7-7m7 7V3");
|
|
57162
|
+
} }
|
|
57163
|
+
function MetricReportModalComponent_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
57164
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "h4", 17);
|
|
57165
|
+
i0.ɵɵtext(2, " Contributing Metrics ");
|
|
57166
|
+
i0.ɵɵelementEnd();
|
|
57167
|
+
i0.ɵɵelementStart(3, "div", 39)(4, "table", 40)(5, "thead")(6, "tr", 41)(7, "th", 42);
|
|
57168
|
+
i0.ɵɵtext(8, "Metric");
|
|
57169
|
+
i0.ɵɵelementEnd();
|
|
57170
|
+
i0.ɵɵelementStart(9, "th", 43);
|
|
57171
|
+
i0.ɵɵtext(10, "Target");
|
|
57172
|
+
i0.ɵɵelementEnd();
|
|
57173
|
+
i0.ɵɵelementStart(11, "th", 43);
|
|
57174
|
+
i0.ɵɵtext(12, "Improve by");
|
|
57175
|
+
i0.ɵɵelementEnd()()();
|
|
57176
|
+
i0.ɵɵelementStart(13, "tbody");
|
|
57177
|
+
i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Template, 15, 7, "tr", 44, _forTrack0$i);
|
|
57178
|
+
i0.ɵɵelementEnd()()()();
|
|
57179
|
+
} if (rf & 2) {
|
|
57180
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57181
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57182
|
+
i0.ɵɵadvance();
|
|
57183
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57184
|
+
i0.ɵɵadvance(5);
|
|
57185
|
+
i0.ɵɵproperty("ngClass", ctx_r1.tableHeaderClasses());
|
|
57186
|
+
i0.ɵɵadvance(8);
|
|
57187
|
+
i0.ɵɵrepeater(ctx_r1.contributingMetrics());
|
|
57188
|
+
} }
|
|
57189
|
+
function MetricReportModalComponent_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
57190
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "h4", 17);
|
|
57191
|
+
i0.ɵɵtext(2, " Pace ");
|
|
57192
|
+
i0.ɵɵelementEnd();
|
|
57193
|
+
i0.ɵɵelementStart(3, "div", 55);
|
|
57194
|
+
i0.ɵɵelement(4, "symphiq-line-chart", 56);
|
|
57195
|
+
i0.ɵɵelementEnd();
|
|
57196
|
+
i0.ɵɵelementStart(5, "p", 57);
|
|
57197
|
+
i0.ɵɵtext(6);
|
|
57198
|
+
i0.ɵɵelementEnd()();
|
|
57199
|
+
} if (rf & 2) {
|
|
57200
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57201
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57202
|
+
i0.ɵɵadvance();
|
|
57203
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57204
|
+
i0.ɵɵadvance(3);
|
|
57205
|
+
i0.ɵɵproperty("chart", ctx_r1.pacingChartData())("showAxisLabels", true)("viewMode", ctx_r1.viewMode())("currencySymbol", "$");
|
|
57206
|
+
i0.ɵɵadvance();
|
|
57207
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
57208
|
+
i0.ɵɵadvance();
|
|
57209
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.chartDescriptionText(), " ");
|
|
57210
|
+
} }
|
|
57211
|
+
function MetricReportModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
57212
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
57213
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
57214
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
57215
|
+
i0.ɵɵelementStart(1, "div", 2);
|
|
57216
|
+
i0.ɵɵelement(2, "div", 3);
|
|
57217
|
+
i0.ɵɵelementStart(3, "span", 4);
|
|
57218
|
+
i0.ɵɵtext(4, "\u200B");
|
|
57219
|
+
i0.ɵɵelementEnd();
|
|
57220
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
57221
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_div_click_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
57222
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "div", 7)(8, "div", 8)(9, "h3", 9);
|
|
57223
|
+
i0.ɵɵtext(10);
|
|
57224
|
+
i0.ɵɵelementEnd();
|
|
57225
|
+
i0.ɵɵconditionalCreate(11, MetricReportModalComponent_Conditional_0_Conditional_11_Template, 7, 4, "button", 10);
|
|
57226
|
+
i0.ɵɵconditionalCreate(12, MetricReportModalComponent_Conditional_0_Conditional_12_Template, 2, 2, "div", 11);
|
|
57227
|
+
i0.ɵɵelementEnd();
|
|
57228
|
+
i0.ɵɵelementStart(13, "button", 12);
|
|
57229
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
57230
|
+
i0.ɵɵnamespaceSVG();
|
|
57231
|
+
i0.ɵɵelementStart(14, "svg", 13);
|
|
57232
|
+
i0.ɵɵelement(15, "path", 14);
|
|
57233
|
+
i0.ɵɵelementEnd()()()();
|
|
57234
|
+
i0.ɵɵnamespaceHTML();
|
|
57235
|
+
i0.ɵɵelementStart(16, "div", 15);
|
|
57236
|
+
i0.ɵɵelement(17, "symphiq-tooltip-container");
|
|
57237
|
+
i0.ɵɵelementStart(18, "div", 16)(19, "h4", 17);
|
|
57238
|
+
i0.ɵɵtext(20, " At a Glance ");
|
|
57239
|
+
i0.ɵɵelementEnd();
|
|
57240
|
+
i0.ɵɵelementStart(21, "div", 18)(22, "div")(23, "p", 19);
|
|
57241
|
+
i0.ɵɵtext(24);
|
|
57242
|
+
i0.ɵɵelementEnd();
|
|
57243
|
+
i0.ɵɵelementStart(25, "p", 9);
|
|
57244
|
+
i0.ɵɵtext(26);
|
|
57245
|
+
i0.ɵɵelementEnd();
|
|
57246
|
+
i0.ɵɵconditionalCreate(27, MetricReportModalComponent_Conditional_0_Conditional_27_Template, 1, 5, "symphiq-target-change-badge", 20);
|
|
57247
|
+
i0.ɵɵelementEnd();
|
|
57248
|
+
i0.ɵɵelementStart(28, "div")(29, "p", 19);
|
|
57249
|
+
i0.ɵɵtext(30);
|
|
57250
|
+
i0.ɵɵelementEnd();
|
|
57251
|
+
i0.ɵɵelementStart(31, "p", 21);
|
|
57252
|
+
i0.ɵɵtext(32);
|
|
57253
|
+
i0.ɵɵelementEnd()();
|
|
57254
|
+
i0.ɵɵelementStart(33, "div")(34, "p", 19);
|
|
57255
|
+
i0.ɵɵtext(35);
|
|
57256
|
+
i0.ɵɵelementEnd();
|
|
57257
|
+
i0.ɵɵelementStart(36, "p", 21);
|
|
57258
|
+
i0.ɵɵtext(37);
|
|
57259
|
+
i0.ɵɵelementEnd()();
|
|
57260
|
+
i0.ɵɵconditionalCreate(38, MetricReportModalComponent_Conditional_0_Conditional_38_Template, 6, 10, "div");
|
|
57261
|
+
i0.ɵɵelementStart(39, "div")(40, "p", 19);
|
|
57262
|
+
i0.ɵɵtext(41);
|
|
57263
|
+
i0.ɵɵelementEnd();
|
|
57264
|
+
i0.ɵɵelementStart(42, "p", 21);
|
|
57265
|
+
i0.ɵɵtext(43);
|
|
57266
|
+
i0.ɵɵelementEnd()()()();
|
|
57267
|
+
i0.ɵɵelementStart(44, "div", 16)(45, "h4", 17);
|
|
57268
|
+
i0.ɵɵtext(46, " Target Analysis ");
|
|
57269
|
+
i0.ɵɵelementEnd();
|
|
57270
|
+
i0.ɵɵelementStart(47, "div", 22)(48, "p", 23);
|
|
57271
|
+
i0.ɵɵtext(49, " Your Target ");
|
|
57272
|
+
i0.ɵɵelementEnd();
|
|
57273
|
+
i0.ɵɵelementStart(50, "p", 24);
|
|
57274
|
+
i0.ɵɵtext(51);
|
|
57275
|
+
i0.ɵɵelementEnd();
|
|
57276
|
+
i0.ɵɵelementStart(52, "p", 25);
|
|
57277
|
+
i0.ɵɵtext(53);
|
|
57278
|
+
i0.ɵɵelementEnd()();
|
|
57279
|
+
i0.ɵɵconditionalCreate(54, MetricReportModalComponent_Conditional_0_Conditional_54_Template, 13, 14);
|
|
57280
|
+
i0.ɵɵelementEnd();
|
|
57281
|
+
i0.ɵɵconditionalCreate(55, MetricReportModalComponent_Conditional_0_Conditional_55_Template, 16, 3, "div", 16);
|
|
57282
|
+
i0.ɵɵconditionalCreate(56, MetricReportModalComponent_Conditional_0_Conditional_56_Template, 7, 8, "div", 26);
|
|
57283
|
+
i0.ɵɵelementEnd();
|
|
57284
|
+
i0.ɵɵelementStart(57, "div", 27)(58, "button", 28);
|
|
57285
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_button_click_58_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
|
|
57286
|
+
i0.ɵɵtext(59, " Close ");
|
|
57287
|
+
i0.ɵɵelementEnd()()()()();
|
|
57288
|
+
} if (rf & 2) {
|
|
57289
|
+
let tmp_8_0;
|
|
57290
|
+
let tmp_9_0;
|
|
57291
|
+
let tmp_17_0;
|
|
57292
|
+
let tmp_22_0;
|
|
57293
|
+
let tmp_26_0;
|
|
57294
|
+
let tmp_31_0;
|
|
57295
|
+
let tmp_36_0;
|
|
57296
|
+
let tmp_38_0;
|
|
57297
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
57298
|
+
i0.ɵɵadvance(2);
|
|
57299
|
+
i0.ɵɵproperty("ngClass", ctx_r1.backdropClasses())("@fadeIn", undefined);
|
|
57300
|
+
i0.ɵɵadvance(3);
|
|
57301
|
+
i0.ɵɵproperty("ngClass", ctx_r1.modalContainerClasses())("@slideUpFade", undefined);
|
|
57302
|
+
i0.ɵɵadvance();
|
|
57303
|
+
i0.ɵɵproperty("ngClass", ctx_r1.headerClasses());
|
|
57304
|
+
i0.ɵɵadvance(3);
|
|
57305
|
+
i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
|
|
57306
|
+
i0.ɵɵadvance();
|
|
57307
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.metricTitle(), " ");
|
|
57308
|
+
i0.ɵɵadvance();
|
|
57309
|
+
i0.ɵɵconditional(((tmp_8_0 = ctx_r1.metricData()) == null ? null : tmp_8_0.description) ? 11 : -1);
|
|
57310
|
+
i0.ɵɵadvance();
|
|
57311
|
+
i0.ɵɵconditional(ctx_r1.showDefinition() && ((tmp_9_0 = ctx_r1.metricData()) == null ? null : tmp_9_0.description) ? 12 : -1);
|
|
57312
|
+
i0.ɵɵadvance();
|
|
57313
|
+
i0.ɵɵproperty("ngClass", ctx_r1.closeButtonClasses());
|
|
57314
|
+
i0.ɵɵadvance(3);
|
|
57315
|
+
i0.ɵɵproperty("ngClass", ctx_r1.contentClasses());
|
|
57316
|
+
i0.ɵɵadvance(2);
|
|
57317
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57318
|
+
i0.ɵɵadvance();
|
|
57319
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57320
|
+
i0.ɵɵadvance(4);
|
|
57321
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57322
|
+
i0.ɵɵadvance();
|
|
57323
|
+
i0.ɵɵtextInterpolate1(" Year to Date (", ctx_r1.ytdDateRangeWithYear(), ") ");
|
|
57324
|
+
i0.ɵɵadvance();
|
|
57325
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57326
|
+
i0.ɵɵadvance();
|
|
57327
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.ytdValue(), ((tmp_17_0 = ctx_r1.metricData()) == null ? null : tmp_17_0.metric) || ""), " ");
|
|
57328
|
+
i0.ɵɵadvance();
|
|
57329
|
+
i0.ɵɵconditional(ctx_r1.ytdChangePercentage() !== null ? 27 : -1);
|
|
57330
|
+
i0.ɵɵadvance(2);
|
|
57331
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57332
|
+
i0.ɵɵadvance();
|
|
57333
|
+
i0.ɵɵtextInterpolate1(" Same Period Last Year (", ctx_r1.priorYearDateRange(), ") ");
|
|
57334
|
+
i0.ɵɵadvance();
|
|
57335
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57336
|
+
i0.ɵɵadvance();
|
|
57337
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.samePeriodLastYearValue(), ((tmp_22_0 = ctx_r1.metricData()) == null ? null : tmp_22_0.metric) || ""), " ");
|
|
57338
|
+
i0.ɵɵadvance(2);
|
|
57339
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57340
|
+
i0.ɵɵadvance();
|
|
57341
|
+
i0.ɵɵtextInterpolate1(" Full ", ctx_r1.priorYear(), " Actual ");
|
|
57342
|
+
i0.ɵɵadvance();
|
|
57343
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57344
|
+
i0.ɵɵadvance();
|
|
57345
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_26_0 = ctx_r1.metricData()) == null ? null : tmp_26_0.currentValue) || 0, ((tmp_26_0 = ctx_r1.metricData()) == null ? null : tmp_26_0.metric) || ""), " ");
|
|
57346
|
+
i0.ɵɵadvance();
|
|
57347
|
+
i0.ɵɵconditional(ctx_r1.pacingInfo() ? 38 : -1);
|
|
57348
|
+
i0.ɵɵadvance(2);
|
|
57349
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57350
|
+
i0.ɵɵadvance();
|
|
57351
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.currentYear(), " Target ");
|
|
57352
|
+
i0.ɵɵadvance();
|
|
57353
|
+
i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
|
|
57354
|
+
i0.ɵɵadvance();
|
|
57355
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_31_0 = ctx_r1.metricData()) == null ? null : tmp_31_0.targetValue) || 0, ((tmp_31_0 = ctx_r1.metricData()) == null ? null : tmp_31_0.metric) || "", false), " ");
|
|
57356
|
+
i0.ɵɵadvance();
|
|
57357
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57358
|
+
i0.ɵɵadvance();
|
|
57359
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57360
|
+
i0.ɵɵadvance(3);
|
|
57361
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57362
|
+
i0.ɵɵadvance(2);
|
|
57363
|
+
i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
|
|
57364
|
+
i0.ɵɵadvance();
|
|
57365
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(((tmp_36_0 = ctx_r1.metricData()) == null ? null : tmp_36_0.targetValue) || 0, ((tmp_36_0 = ctx_r1.metricData()) == null ? null : tmp_36_0.metric) || "", false), " ");
|
|
57366
|
+
i0.ɵɵadvance();
|
|
57367
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
57368
|
+
i0.ɵɵadvance();
|
|
57369
|
+
i0.ɵɵtextInterpolate4(" Your target represents a ", ctx_r1.formatPercentage(ctx_r1.Math.abs(((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.percentageIncrease) || 0), 1), " ", (((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.percentageIncrease) || 0) >= 0 ? "increase" : "decrease", " from your ", ctx_r1.priorYear(), " actual of ", ctx_r1.formatMetricValue(((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.currentValue) || 0, ((tmp_38_0 = ctx_r1.metricData()) == null ? null : tmp_38_0.metric) || ""), ". ");
|
|
57370
|
+
i0.ɵɵadvance();
|
|
57371
|
+
i0.ɵɵconditional(ctx_r1.pacingInfo() ? 54 : -1);
|
|
57372
|
+
i0.ɵɵadvance();
|
|
57373
|
+
i0.ɵɵconditional(ctx_r1.contributingMetrics().length > 0 ? 55 : -1);
|
|
57374
|
+
i0.ɵɵadvance();
|
|
57375
|
+
i0.ɵɵconditional(ctx_r1.pacingChartData() ? 56 : -1);
|
|
57376
|
+
i0.ɵɵadvance();
|
|
57377
|
+
i0.ɵɵproperty("ngClass", ctx_r1.footerClasses());
|
|
57378
|
+
i0.ɵɵadvance();
|
|
57379
|
+
i0.ɵɵproperty("ngClass", ctx_r1.closeFooterButtonClasses());
|
|
57380
|
+
} }
|
|
57381
|
+
class MetricReportModalComponent {
|
|
57382
|
+
constructor() {
|
|
57383
|
+
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
57384
|
+
this.metricEnum = input('', ...(ngDevMode ? [{ debugName: "metricEnum" }] : []));
|
|
57385
|
+
this.metricData = input(undefined, ...(ngDevMode ? [{ debugName: "metricData" }] : []));
|
|
57386
|
+
this.contributingMetrics = input([], ...(ngDevMode ? [{ debugName: "contributingMetrics" }] : []));
|
|
57387
|
+
this.pacingMetrics = input(undefined, ...(ngDevMode ? [{ debugName: "pacingMetrics" }] : []));
|
|
57388
|
+
this.isOpen = input(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
57389
|
+
this.closed = output();
|
|
57390
|
+
this.showDefinition = signal(false, ...(ngDevMode ? [{ debugName: "showDefinition" }] : []));
|
|
57391
|
+
this.Math = Math;
|
|
57392
|
+
this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
|
|
57393
|
+
this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
|
|
57394
|
+
this.metricTitle = computed(() => {
|
|
57395
|
+
const metric = this.metricData();
|
|
57396
|
+
if (!metric)
|
|
57397
|
+
return '';
|
|
57398
|
+
return metric.metric
|
|
57399
|
+
.split('_')
|
|
57400
|
+
.map(word => word.charAt(0) + word.slice(1).toLowerCase())
|
|
57401
|
+
.join(' ');
|
|
57402
|
+
}, ...(ngDevMode ? [{ debugName: "metricTitle" }] : []));
|
|
57403
|
+
this.pacingInfo = computed(() => {
|
|
57404
|
+
const metric = this.metricData();
|
|
57405
|
+
const pacingResponse = this.pacingMetrics();
|
|
57406
|
+
if (!metric || !pacingResponse)
|
|
57407
|
+
return null;
|
|
57408
|
+
const projectedValue = extractProjectedValue(pacingResponse, metric.metric);
|
|
57409
|
+
if (projectedValue === null)
|
|
57410
|
+
return null;
|
|
57411
|
+
const increaseBad = MetricEnumUtil.increaseBad(metric.metric);
|
|
57412
|
+
return calculateMetricPacing(projectedValue, metric.targetValue, increaseBad);
|
|
57413
|
+
}, ...(ngDevMode ? [{ debugName: "pacingInfo" }] : []));
|
|
57414
|
+
this.ytdValue = computed(() => {
|
|
57415
|
+
const pacingResponse = this.pacingMetrics();
|
|
57416
|
+
const metric = this.metricData();
|
|
57417
|
+
if (!pacingResponse || !metric)
|
|
57418
|
+
return 0;
|
|
57419
|
+
const resp = pacingResponse;
|
|
57420
|
+
const soFarMetric = resp.soFarMetricValues?.find((m) => m.metric === metric.metric);
|
|
57421
|
+
if (soFarMetric?.value) {
|
|
57422
|
+
return parseFloat(soFarMetric.value);
|
|
57423
|
+
}
|
|
57424
|
+
return 0;
|
|
57425
|
+
}, ...(ngDevMode ? [{ debugName: "ytdValue" }] : []));
|
|
57426
|
+
this.samePeriodLastYearValue = computed(() => {
|
|
57427
|
+
const pacingResponse = this.pacingMetrics();
|
|
57428
|
+
const metric = this.metricData();
|
|
57429
|
+
if (!pacingResponse || !metric)
|
|
57430
|
+
return 0;
|
|
57431
|
+
const resp = pacingResponse;
|
|
57432
|
+
const lastYearMetric = resp.lastYearMetricValuesMonthly?.find((m) => m.metric === metric.metric);
|
|
57433
|
+
if (lastYearMetric?.value) {
|
|
57434
|
+
return parseFloat(lastYearMetric.value);
|
|
57435
|
+
}
|
|
57436
|
+
return 0;
|
|
57437
|
+
}, ...(ngDevMode ? [{ debugName: "samePeriodLastYearValue" }] : []));
|
|
57438
|
+
this.ytdChangePercentage = computed(() => {
|
|
57439
|
+
const current = this.ytdValue();
|
|
57440
|
+
const lastYear = this.samePeriodLastYearValue();
|
|
57441
|
+
if (lastYear === 0)
|
|
57442
|
+
return null;
|
|
57443
|
+
return ((current - lastYear) / lastYear) * 100;
|
|
57444
|
+
}, ...(ngDevMode ? [{ debugName: "ytdChangePercentage" }] : []));
|
|
57445
|
+
this.ytdDateRange = computed(() => {
|
|
57446
|
+
const now = new Date();
|
|
57447
|
+
const yesterday = new Date(now);
|
|
57448
|
+
yesterday.setDate(yesterday.getDate() - 1);
|
|
57449
|
+
const startMonth = 'Jan';
|
|
57450
|
+
const startDay = 1;
|
|
57451
|
+
const endMonth = yesterday.toLocaleDateString('en-US', { month: 'short' });
|
|
57452
|
+
const endDay = yesterday.getDate();
|
|
57453
|
+
return `${startMonth} ${startDay} - ${endMonth} ${endDay}`;
|
|
57454
|
+
}, ...(ngDevMode ? [{ debugName: "ytdDateRange" }] : []));
|
|
57455
|
+
this.ytdDateRangeWithYear = computed(() => {
|
|
57456
|
+
const now = new Date();
|
|
57457
|
+
const yesterday = new Date(now);
|
|
57458
|
+
yesterday.setDate(yesterday.getDate() - 1);
|
|
57459
|
+
const year = this.currentYear();
|
|
57460
|
+
return `Jan 1, ${year} - ${yesterday.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}, ${year}`;
|
|
57461
|
+
}, ...(ngDevMode ? [{ debugName: "ytdDateRangeWithYear" }] : []));
|
|
57462
|
+
this.priorYearDateRange = computed(() => {
|
|
57463
|
+
const now = new Date();
|
|
57464
|
+
const yesterday = new Date(now);
|
|
57465
|
+
yesterday.setDate(yesterday.getDate() - 1);
|
|
57466
|
+
const priorYear = this.priorYear();
|
|
57467
|
+
return `Jan 1, ${priorYear} - ${yesterday.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}, ${priorYear}`;
|
|
57468
|
+
}, ...(ngDevMode ? [{ debugName: "priorYearDateRange" }] : []));
|
|
57469
|
+
this.gapAnalysisText = computed(() => {
|
|
57470
|
+
const pacing = this.pacingInfo();
|
|
57471
|
+
const metric = this.metricData();
|
|
57472
|
+
if (!pacing || !metric)
|
|
57473
|
+
return '';
|
|
57474
|
+
const gap = Math.abs(pacing.pacingPercentage);
|
|
57475
|
+
const gapFormatted = formatPercentage(gap, 1);
|
|
57476
|
+
if (pacing.status === 'ahead') {
|
|
57477
|
+
return `Based on current pacing, you are on track to exceed your target by ${gapFormatted}.`;
|
|
57478
|
+
}
|
|
57479
|
+
else if (pacing.status === 'on-pace') {
|
|
57480
|
+
return `Based on current pacing, you are on track to meet your target.`;
|
|
57481
|
+
}
|
|
57482
|
+
else {
|
|
57483
|
+
return `Based on current pacing, you are pacing to fall short of your target by ${gapFormatted}.`;
|
|
57484
|
+
}
|
|
57485
|
+
}, ...(ngDevMode ? [{ debugName: "gapAnalysisText" }] : []));
|
|
57486
|
+
this.progressToTarget = computed(() => {
|
|
57487
|
+
const pacing = this.pacingInfo();
|
|
57488
|
+
const metric = this.metricData();
|
|
57489
|
+
if (!pacing || !metric)
|
|
57490
|
+
return 0;
|
|
57491
|
+
const target = metric.targetValue;
|
|
57492
|
+
const projected = pacing.projectedValue;
|
|
57493
|
+
if (target === 0)
|
|
57494
|
+
return 0;
|
|
57495
|
+
return (projected / target) * 100;
|
|
57496
|
+
}, ...(ngDevMode ? [{ debugName: "progressToTarget" }] : []));
|
|
57497
|
+
this.chartDescriptionText = computed(() => {
|
|
57498
|
+
const metric = this.metricTitle();
|
|
57499
|
+
const currentYear = this.currentYear();
|
|
57500
|
+
const priorYear = this.priorYear();
|
|
57501
|
+
return `This chart shows the ${metric} performance trend for ${currentYear} (solid line), compared to ${priorYear} (dashed line), with the target projection (dotted line) for the remainder of the year.`;
|
|
57502
|
+
}, ...(ngDevMode ? [{ debugName: "chartDescriptionText" }] : []));
|
|
57503
|
+
this.pacingChartData = computed(() => {
|
|
57504
|
+
const metric = this.metricData();
|
|
57505
|
+
if (!metric)
|
|
57506
|
+
return null;
|
|
57507
|
+
return {
|
|
57508
|
+
chartType: 'LINE',
|
|
57509
|
+
title: 'Pace',
|
|
57510
|
+
description: '',
|
|
57511
|
+
lineChartData: {
|
|
57512
|
+
series: [
|
|
57513
|
+
{
|
|
57514
|
+
name: `${this.currentYear()} Actual`,
|
|
57515
|
+
data: this.generateMockCurrentYearData()
|
|
57516
|
+
},
|
|
57517
|
+
{
|
|
57518
|
+
name: `${this.priorYear()} Comparison`,
|
|
57519
|
+
data: this.generateMockLastYearData()
|
|
57520
|
+
},
|
|
57521
|
+
{
|
|
57522
|
+
name: 'Target Projection',
|
|
57523
|
+
data: this.generateMockTargetData()
|
|
57524
|
+
}
|
|
57525
|
+
]
|
|
57526
|
+
}
|
|
57527
|
+
};
|
|
57528
|
+
}, ...(ngDevMode ? [{ debugName: "pacingChartData" }] : []));
|
|
57529
|
+
}
|
|
57530
|
+
generateMockCurrentYearData() {
|
|
57531
|
+
const baseValue = this.metricData()?.currentValue || 1000;
|
|
57532
|
+
const data = [];
|
|
57533
|
+
const now = new Date();
|
|
57534
|
+
const currentMonth = now.getMonth();
|
|
57535
|
+
for (let i = 0; i <= currentMonth; i++) {
|
|
57536
|
+
const date = new Date(this.currentYear(), i, 15);
|
|
57537
|
+
const variance = (Math.random() - 0.5) * 0.1;
|
|
57538
|
+
const value = baseValue * (1 + variance) * ((i + 1) / 12);
|
|
57539
|
+
data.push({
|
|
57540
|
+
date: date.toISOString(),
|
|
57541
|
+
value: Math.round(value * 100) / 100
|
|
57542
|
+
});
|
|
57543
|
+
}
|
|
57544
|
+
return data;
|
|
57545
|
+
}
|
|
57546
|
+
generateMockLastYearData() {
|
|
57547
|
+
const baseValue = this.metricData()?.currentValue || 1000;
|
|
57548
|
+
const data = [];
|
|
57549
|
+
for (let i = 0; i < 12; i++) {
|
|
57550
|
+
const date = new Date(this.priorYear(), i, 15);
|
|
57551
|
+
const variance = (Math.random() - 0.5) * 0.08;
|
|
57552
|
+
const value = baseValue * (1 + variance) * ((i + 1) / 12);
|
|
57553
|
+
data.push({
|
|
57554
|
+
date: date.toISOString(),
|
|
57555
|
+
value: Math.round(value * 100) / 100
|
|
57556
|
+
});
|
|
57557
|
+
}
|
|
57558
|
+
return data;
|
|
57559
|
+
}
|
|
57560
|
+
generateMockTargetData() {
|
|
57561
|
+
const targetValue = this.metricData()?.targetValue || 1200;
|
|
57562
|
+
const data = [];
|
|
57563
|
+
const now = new Date();
|
|
57564
|
+
const currentMonth = now.getMonth();
|
|
57565
|
+
for (let i = currentMonth; i < 12; i++) {
|
|
57566
|
+
const date = new Date(this.currentYear(), i, 15);
|
|
57567
|
+
const value = targetValue * ((i + 1) / 12);
|
|
57568
|
+
data.push({
|
|
57569
|
+
date: date.toISOString(),
|
|
57570
|
+
value: Math.round(value * 100) / 100
|
|
57571
|
+
});
|
|
57572
|
+
}
|
|
57573
|
+
return data;
|
|
57574
|
+
}
|
|
57575
|
+
formatMetricValue(value, metric, fromUiData = true) {
|
|
57576
|
+
if (metric.includes('REVENUE')) {
|
|
57577
|
+
return formatCurrency(value);
|
|
57578
|
+
}
|
|
57579
|
+
const numberType = MetricEnumUtil.numberType(metric);
|
|
57580
|
+
if (numberType === NumberTypeEnum.PERCENTAGE) {
|
|
57581
|
+
const displayValue = fromUiData ? value * 100 : value;
|
|
57582
|
+
return formatPercentage(displayValue, 2);
|
|
57583
|
+
}
|
|
57584
|
+
return formatNumber(value);
|
|
57585
|
+
}
|
|
57586
|
+
getMetricTitle(metric) {
|
|
57587
|
+
return metric.metric
|
|
57588
|
+
.split('_')
|
|
57589
|
+
.map(word => word.charAt(0) + word.slice(1).toLowerCase())
|
|
57590
|
+
.join(' ');
|
|
57591
|
+
}
|
|
57592
|
+
formatPercentage(value, decimals) {
|
|
57593
|
+
return formatPercentage(value, decimals);
|
|
57594
|
+
}
|
|
57595
|
+
getMarkdownTooltipContent(markdown, title) {
|
|
57596
|
+
return { title, markdown };
|
|
57597
|
+
}
|
|
57598
|
+
toggleDefinition() {
|
|
57599
|
+
this.showDefinition.update(v => !v);
|
|
57600
|
+
}
|
|
57601
|
+
close() {
|
|
57602
|
+
this.closed.emit();
|
|
57603
|
+
}
|
|
57604
|
+
isLightMode() {
|
|
57605
|
+
return this.viewMode() === ViewModeEnum.LIGHT;
|
|
57606
|
+
}
|
|
57607
|
+
backdropClasses() {
|
|
57608
|
+
return this.isLightMode() ? 'bg-slate-900/60' : 'bg-slate-950/80';
|
|
57609
|
+
}
|
|
57610
|
+
modalContainerClasses() {
|
|
57611
|
+
return this.isLightMode()
|
|
57612
|
+
? 'bg-white/90 border-slate-200/50'
|
|
57613
|
+
: 'bg-slate-800/90 border-slate-700/50';
|
|
57614
|
+
}
|
|
57615
|
+
headerClasses() {
|
|
57616
|
+
return this.isLightMode()
|
|
57617
|
+
? 'bg-white/50 border-slate-200/50'
|
|
57618
|
+
: 'bg-slate-800/50 border-slate-700/50';
|
|
57619
|
+
}
|
|
57620
|
+
titleClasses() {
|
|
57621
|
+
return this.isLightMode() ? 'text-slate-900' : 'text-white';
|
|
57622
|
+
}
|
|
57623
|
+
definitionToggleClasses() {
|
|
57624
|
+
return this.isLightMode()
|
|
57625
|
+
? 'text-blue-600 hover:text-blue-700'
|
|
57626
|
+
: 'text-blue-400 hover:text-blue-300';
|
|
57627
|
+
}
|
|
57628
|
+
definitionBoxClasses() {
|
|
57629
|
+
return this.isLightMode()
|
|
57630
|
+
? 'bg-blue-50/50 border-blue-200/50 text-slate-700'
|
|
57631
|
+
: 'bg-blue-900/20 border-blue-700/30 text-slate-300';
|
|
57632
|
+
}
|
|
57633
|
+
closeButtonClasses() {
|
|
57634
|
+
return this.isLightMode()
|
|
57635
|
+
? 'text-slate-600 hover:text-slate-900 hover:bg-slate-100'
|
|
57636
|
+
: 'text-slate-400 hover:text-white hover:bg-slate-700';
|
|
57637
|
+
}
|
|
57638
|
+
contentClasses() {
|
|
57639
|
+
return this.isLightMode() ? 'bg-white/30' : 'bg-slate-800/30';
|
|
57640
|
+
}
|
|
57641
|
+
sectionCardClasses() {
|
|
57642
|
+
return this.isLightMode()
|
|
57643
|
+
? 'bg-gradient-to-br from-slate-50 via-white to-slate-50 border border-slate-200'
|
|
57644
|
+
: 'bg-gradient-to-br from-slate-800/40 via-slate-800/20 to-slate-800/40 border border-slate-700/50';
|
|
57645
|
+
}
|
|
57646
|
+
sectionTitleClasses() {
|
|
57647
|
+
return this.isLightMode() ? 'text-slate-600' : 'text-slate-400';
|
|
57648
|
+
}
|
|
57649
|
+
labelClasses() {
|
|
57650
|
+
return this.isLightMode() ? 'text-slate-500' : 'text-slate-400';
|
|
57651
|
+
}
|
|
57652
|
+
valueClasses() {
|
|
57653
|
+
return this.isLightMode() ? 'text-slate-900' : 'text-white';
|
|
57654
|
+
}
|
|
57655
|
+
targetValueClasses() {
|
|
57656
|
+
return this.isLightMode() ? 'text-purple-700' : 'text-purple-300';
|
|
57657
|
+
}
|
|
57658
|
+
projectedValueClasses() {
|
|
57659
|
+
return this.isLightMode() ? 'text-amber-700' : 'text-amber-300';
|
|
57660
|
+
}
|
|
57661
|
+
descriptionClasses() {
|
|
57662
|
+
return this.isLightMode() ? 'text-slate-600' : 'text-slate-300';
|
|
57663
|
+
}
|
|
57664
|
+
progressBarBgClasses() {
|
|
57665
|
+
return this.isLightMode() ? 'bg-slate-200' : 'bg-slate-700';
|
|
57666
|
+
}
|
|
57667
|
+
progressBarFillClasses() {
|
|
57668
|
+
const pacing = this.pacingInfo();
|
|
57669
|
+
if (!pacing)
|
|
57670
|
+
return 'bg-blue-500';
|
|
57671
|
+
if (pacing.status === 'ahead') {
|
|
57672
|
+
return this.isLightMode()
|
|
57673
|
+
? 'bg-gradient-to-r from-emerald-500 to-emerald-600'
|
|
57674
|
+
: 'bg-gradient-to-r from-emerald-400 to-emerald-500';
|
|
57675
|
+
}
|
|
57676
|
+
else if (pacing.status === 'on-pace') {
|
|
57677
|
+
return this.isLightMode()
|
|
57678
|
+
? 'bg-gradient-to-r from-amber-500 to-amber-600'
|
|
57679
|
+
: 'bg-gradient-to-r from-amber-400 to-amber-500';
|
|
57680
|
+
}
|
|
57681
|
+
else {
|
|
57682
|
+
return this.isLightMode()
|
|
57683
|
+
? 'bg-gradient-to-r from-red-500 to-red-600'
|
|
57684
|
+
: 'bg-gradient-to-r from-red-400 to-red-500';
|
|
57685
|
+
}
|
|
57686
|
+
}
|
|
57687
|
+
tableHeaderClasses() {
|
|
57688
|
+
return this.isLightMode() ? 'text-slate-700 border-slate-200' : 'text-slate-300 border-slate-700';
|
|
57689
|
+
}
|
|
57690
|
+
tableRowClasses() {
|
|
57691
|
+
return this.isLightMode()
|
|
57692
|
+
? 'hover:bg-slate-50 border-slate-200'
|
|
57693
|
+
: 'hover:bg-slate-700/30 border-slate-700/50';
|
|
57694
|
+
}
|
|
57695
|
+
infoIconClasses() {
|
|
57696
|
+
return this.isLightMode()
|
|
57697
|
+
? 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700'
|
|
57698
|
+
: 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300';
|
|
57699
|
+
}
|
|
57700
|
+
footerClasses() {
|
|
57701
|
+
return this.isLightMode()
|
|
57702
|
+
? 'bg-slate-50 border-slate-200'
|
|
57703
|
+
: 'bg-slate-900/50 border-slate-700';
|
|
57704
|
+
}
|
|
57705
|
+
closeFooterButtonClasses() {
|
|
57706
|
+
return this.isLightMode()
|
|
57707
|
+
? 'bg-slate-200 hover:bg-slate-300 text-slate-900'
|
|
57708
|
+
: 'bg-slate-700 hover:bg-slate-600 text-white';
|
|
57709
|
+
}
|
|
57710
|
+
static { this.ɵfac = function MetricReportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MetricReportModalComponent)(); }; }
|
|
57711
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MetricReportModalComponent, selectors: [["symphiq-metric-report-modal"]], inputs: { viewMode: [1, "viewMode"], metricEnum: [1, "metricEnum"], metricData: [1, "metricData"], contributingMetrics: [1, "contributingMetrics"], pacingMetrics: [1, "pacingMetrics"], isOpen: [1, "isOpen"] }, outputs: { closed: "closed" }, decls: 1, vars: 1, consts: [[1, "fixed", "inset-0", "overflow-y-auto", "z-50"], [1, "fixed", "inset-0", "overflow-y-auto", "z-50", 3, "click"], [1, "flex", "items-center", "justify-center", "min-h-screen", "px-4", "pt-4", "pb-20", "text-center", "sm:block", "sm:p-0"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-md", 3, "ngClass"], ["aria-hidden", "true", 1, "hidden", "sm:inline-block", "sm:align-middle", "sm:h-screen"], [1, "relative", "inline-block", "align-bottom", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "sm:my-8", "sm:align-middle", "sm:w-full", "sm:max-w-4xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", "sticky", "top-0", "z-10", 3, "ngClass"], [1, "flex", "items-start", "justify-between"], [1, "flex-1"], [1, "text-xl", "font-bold", "mb-2", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "text-sm", "font-medium", "transition-colors", 3, "ngClass"], [1, "mt-3", "p-4", "rounded-lg", "border", "text-sm", "leading-relaxed", 3, "ngClass"], [1, "ml-4", "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-6", "max-h-[70vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [1, "rounded-xl", "p-6", "mb-6", 3, "ngClass"], [1, "text-sm", "font-semibold", "uppercase", "tracking-wider", "mb-4", 3, "ngClass"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1.5", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-3xl", "font-extrabold", "mb-3", 3, "ngClass"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [1, "rounded-xl", "p-6", 3, "ngClass"], [1, "px-6", "py-4", "border-t", 3, "ngClass"], [1, "w-full", "px-4", "py-2", "rounded-lg", "transition-all", "font-medium", "hover:scale-[1.02]", "active:scale-[0.98]", 3, "click", "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "text-sm", "font-medium", "transition-colors", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "transition-transform"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"], [1, "space-y-2"], [1, "flex", "justify-between", "text-xs", 3, "ngClass"], [1, "h-3", "rounded-full", "overflow-hidden", 3, "ngClass"], [1, "h-full", "transition-all", "duration-500", 3, "ngClass"], [1, "overflow-x-auto"], [1, "w-full"], [1, "border-b", 3, "ngClass"], [1, "text-left", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "text-right", "py-3", "px-4", "text-xs", "font-semibold", "uppercase", "tracking-wider"], [1, "border-b", "transition-colors", 3, "ngClass"], [1, "py-3", "px-4"], [1, "flex", "items-center", "gap-2"], [1, "text-sm", "font-medium"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-5", "h-5", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "py-3", "px-4", "text-right"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "flex", "items-center", "justify-end", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-emerald-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], [1, "min-h-[400px]"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol"], [1, "text-sm", "leading-relaxed", "mt-4", 3, "ngClass"]], template: function MetricReportModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
57712
|
+
i0.ɵɵconditionalCreate(0, MetricReportModalComponent_Conditional_0_Template, 60, 46, "div", 0);
|
|
57713
|
+
} if (rf & 2) {
|
|
57714
|
+
i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
|
|
57715
|
+
} }, dependencies: [CommonModule, i1$1.NgClass, PacingStatusBadgeComponent,
|
|
57716
|
+
TargetChangeBadgeComponent,
|
|
57717
|
+
TooltipDirective,
|
|
57718
|
+
TooltipContainerComponent,
|
|
57719
|
+
LineChartComponent], encapsulation: 2, data: { animation: [
|
|
57720
|
+
trigger('fadeIn', [
|
|
57721
|
+
transition(':enter', [
|
|
57722
|
+
style({ opacity: 0 }),
|
|
57723
|
+
animate('200ms ease-out', style({ opacity: 1 }))
|
|
57724
|
+
])
|
|
57725
|
+
]),
|
|
57726
|
+
trigger('slideUpFade', [
|
|
57727
|
+
transition(':enter', [
|
|
57728
|
+
style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
|
|
57729
|
+
animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
|
|
57730
|
+
])
|
|
57731
|
+
])
|
|
57732
|
+
] }, changeDetection: 0 }); }
|
|
57733
|
+
}
|
|
57734
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetricReportModalComponent, [{
|
|
57735
|
+
type: Component,
|
|
57736
|
+
args: [{
|
|
57737
|
+
selector: 'symphiq-metric-report-modal',
|
|
57738
|
+
standalone: true,
|
|
57739
|
+
imports: [
|
|
57740
|
+
CommonModule,
|
|
57741
|
+
PacingStatusBadgeComponent,
|
|
57742
|
+
TargetChangeBadgeComponent,
|
|
57743
|
+
TooltipDirective,
|
|
57744
|
+
TooltipContainerComponent,
|
|
57745
|
+
LineChartComponent
|
|
57746
|
+
],
|
|
57747
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
57748
|
+
animations: [
|
|
57749
|
+
trigger('fadeIn', [
|
|
57750
|
+
transition(':enter', [
|
|
57751
|
+
style({ opacity: 0 }),
|
|
57752
|
+
animate('200ms ease-out', style({ opacity: 1 }))
|
|
57753
|
+
])
|
|
57754
|
+
]),
|
|
57755
|
+
trigger('slideUpFade', [
|
|
57756
|
+
transition(':enter', [
|
|
57757
|
+
style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
|
|
57758
|
+
animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
|
|
57759
|
+
])
|
|
57760
|
+
])
|
|
57761
|
+
],
|
|
57762
|
+
template: `
|
|
57763
|
+
@if (isOpen()) {
|
|
57764
|
+
<div class="fixed inset-0 overflow-y-auto z-50" (click)="close()">
|
|
57765
|
+
<div class="flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:block sm:p-0">
|
|
57766
|
+
<div
|
|
57767
|
+
[ngClass]="backdropClasses()"
|
|
57768
|
+
class="fixed inset-0 backdrop-blur-md"
|
|
57769
|
+
aria-hidden="true"
|
|
57770
|
+
@fadeIn>
|
|
57771
|
+
</div>
|
|
57772
|
+
|
|
57773
|
+
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span>
|
|
57774
|
+
|
|
57775
|
+
<div
|
|
57776
|
+
(click)="$event.stopPropagation()"
|
|
57777
|
+
[ngClass]="modalContainerClasses()"
|
|
57778
|
+
class="relative inline-block align-bottom rounded-2xl text-left overflow-hidden shadow-xl sm:my-8 sm:align-middle sm:w-full sm:max-w-4xl border backdrop-blur-xl"
|
|
57779
|
+
@slideUpFade>
|
|
57780
|
+
|
|
57781
|
+
<!-- Header -->
|
|
57782
|
+
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b backdrop-blur-sm sticky top-0 z-10">
|
|
57783
|
+
<div class="flex items-start justify-between">
|
|
57784
|
+
<div class="flex-1">
|
|
57785
|
+
<h3 [ngClass]="titleClasses()" class="text-xl font-bold mb-2">
|
|
57786
|
+
{{ metricTitle() }}
|
|
57787
|
+
</h3>
|
|
57788
|
+
@if (metricData()?.description) {
|
|
57789
|
+
<button
|
|
57790
|
+
type="button"
|
|
57791
|
+
(click)="toggleDefinition()"
|
|
57792
|
+
[ngClass]="definitionToggleClasses()"
|
|
57793
|
+
class="inline-flex items-center gap-2 text-sm font-medium transition-colors">
|
|
57794
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57795
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
57796
|
+
</svg>
|
|
57797
|
+
<span>What is {{ metricTitle() }}?</span>
|
|
57798
|
+
<svg
|
|
57799
|
+
[class.rotate-180]="showDefinition()"
|
|
57800
|
+
class="w-4 h-4 transition-transform"
|
|
57801
|
+
fill="none"
|
|
57802
|
+
stroke="currentColor"
|
|
57803
|
+
viewBox="0 0 24 24">
|
|
57804
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
|
57805
|
+
</svg>
|
|
57806
|
+
</button>
|
|
57807
|
+
}
|
|
57808
|
+
@if (showDefinition() && metricData()?.description) {
|
|
57809
|
+
<div [ngClass]="definitionBoxClasses()" class="mt-3 p-4 rounded-lg border text-sm leading-relaxed">
|
|
57810
|
+
{{ metricData()?.description }}
|
|
57811
|
+
</div>
|
|
57812
|
+
}
|
|
57813
|
+
</div>
|
|
57814
|
+
<button
|
|
57815
|
+
(click)="close()"
|
|
57816
|
+
[ngClass]="closeButtonClasses()"
|
|
57817
|
+
class="ml-4 transition-all rounded-lg p-1 hover:scale-110 active:scale-90">
|
|
57818
|
+
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57819
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
57820
|
+
</svg>
|
|
57821
|
+
</button>
|
|
57822
|
+
</div>
|
|
57823
|
+
</div>
|
|
57824
|
+
|
|
57825
|
+
<!-- Content -->
|
|
57826
|
+
<div [ngClass]="contentClasses()" class="px-6 py-6 max-h-[70vh] overflow-y-auto backdrop-blur-sm">
|
|
57827
|
+
<symphiq-tooltip-container />
|
|
57828
|
+
|
|
57829
|
+
<!-- At a Glance Summary -->
|
|
57830
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57831
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57832
|
+
At a Glance
|
|
57833
|
+
</h4>
|
|
57834
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
57835
|
+
<!-- YTD Value -->
|
|
57836
|
+
<div>
|
|
57837
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57838
|
+
Year to Date ({{ ytdDateRangeWithYear() }})
|
|
57839
|
+
</p>
|
|
57840
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold mb-2">
|
|
57841
|
+
{{ formatMetricValue(ytdValue(), metricData()?.metric || '') }}
|
|
57842
|
+
</p>
|
|
57843
|
+
@if (ytdChangePercentage() !== null) {
|
|
57844
|
+
<symphiq-target-change-badge
|
|
57845
|
+
[viewMode]="viewMode()"
|
|
57846
|
+
[percentageChange]="ytdChangePercentage()!"
|
|
57847
|
+
[metric]="metricData()?.metric || ''"
|
|
57848
|
+
[priorYear]="priorYear()"
|
|
57849
|
+
[isCompact]="true"
|
|
57850
|
+
/>
|
|
57851
|
+
}
|
|
57852
|
+
</div>
|
|
57853
|
+
|
|
57854
|
+
<!-- Same Period Last Year -->
|
|
57855
|
+
<div>
|
|
57856
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57857
|
+
Same Period Last Year ({{ priorYearDateRange() }})
|
|
57858
|
+
</p>
|
|
57859
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
57860
|
+
{{ formatMetricValue(samePeriodLastYearValue(), metricData()?.metric || '') }}
|
|
57861
|
+
</p>
|
|
57862
|
+
</div>
|
|
57863
|
+
|
|
57864
|
+
<!-- Full Last Year -->
|
|
57865
|
+
<div>
|
|
57866
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57867
|
+
Full {{ priorYear() }} Actual
|
|
57868
|
+
</p>
|
|
57869
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
57870
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}
|
|
57871
|
+
</p>
|
|
57872
|
+
</div>
|
|
57873
|
+
|
|
57874
|
+
<!-- Current Pace -->
|
|
57875
|
+
@if (pacingInfo()) {
|
|
57876
|
+
<div>
|
|
57877
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57878
|
+
Pace for {{ currentYear() }}
|
|
57879
|
+
</p>
|
|
57880
|
+
<p [ngClass]="projectedValueClasses()" class="text-xl font-bold mb-2">
|
|
57881
|
+
{{ formatMetricValue(pacingInfo()!.projectedValue, metricData()?.metric || '', false) }}
|
|
57882
|
+
</p>
|
|
57883
|
+
<symphiq-pacing-status-badge
|
|
57884
|
+
[viewMode]="viewMode()"
|
|
57885
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
57886
|
+
[status]="pacingInfo()!.status"
|
|
57887
|
+
[showAsFullText]="false"
|
|
57888
|
+
[isCompact]="true"
|
|
57889
|
+
[showEmphasizedPercentage]="true"
|
|
57890
|
+
/>
|
|
57891
|
+
</div>
|
|
57892
|
+
}
|
|
57893
|
+
|
|
57894
|
+
<!-- Current Target -->
|
|
57895
|
+
<div>
|
|
57896
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57897
|
+
{{ currentYear() }} Target
|
|
57898
|
+
</p>
|
|
57899
|
+
<p [ngClass]="targetValueClasses()" class="text-xl font-bold">
|
|
57900
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
57901
|
+
</p>
|
|
57902
|
+
</div>
|
|
57903
|
+
</div>
|
|
57904
|
+
</div>
|
|
57905
|
+
|
|
57906
|
+
<!-- Target Analysis -->
|
|
57907
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57908
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57909
|
+
Target Analysis
|
|
57910
|
+
</h4>
|
|
57911
|
+
|
|
57912
|
+
<div class="mb-4">
|
|
57913
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
57914
|
+
Your Target
|
|
57915
|
+
</p>
|
|
57916
|
+
<p [ngClass]="targetValueClasses()" class="text-3xl font-extrabold mb-3">
|
|
57917
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
57918
|
+
</p>
|
|
57919
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
57920
|
+
Your target represents a {{ formatPercentage(Math.abs(metricData()?.percentageIncrease || 0), 1) }}
|
|
57921
|
+
{{ (metricData()?.percentageIncrease || 0) >= 0 ? 'increase' : 'decrease' }}
|
|
57922
|
+
from your {{ priorYear() }} actual of
|
|
57923
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}.
|
|
57924
|
+
</p>
|
|
57925
|
+
</div>
|
|
57926
|
+
|
|
57927
|
+
@if (pacingInfo()) {
|
|
57928
|
+
<div class="mb-4">
|
|
57929
|
+
<symphiq-pacing-status-badge
|
|
57930
|
+
[viewMode]="viewMode()"
|
|
57931
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
57932
|
+
[status]="pacingInfo()!.status"
|
|
57933
|
+
[showAsFullText]="true"
|
|
57934
|
+
[isCompact]="false"
|
|
57935
|
+
[showEmphasizedPercentage]="true"
|
|
57936
|
+
/>
|
|
57937
|
+
</div>
|
|
57938
|
+
|
|
57939
|
+
<div class="mb-4">
|
|
57940
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
57941
|
+
{{ gapAnalysisText() }}
|
|
57942
|
+
</p>
|
|
57943
|
+
</div>
|
|
57944
|
+
|
|
57945
|
+
<!-- Progress Bar -->
|
|
57946
|
+
<div class="space-y-2">
|
|
57947
|
+
<div class="flex justify-between text-xs" [ngClass]="labelClasses()">
|
|
57948
|
+
<span>Progress to Target</span>
|
|
57949
|
+
<span>{{ formatPercentage(progressToTarget(), 1) }}</span>
|
|
57950
|
+
</div>
|
|
57951
|
+
<div [ngClass]="progressBarBgClasses()" class="h-3 rounded-full overflow-hidden">
|
|
57952
|
+
<div
|
|
57953
|
+
[ngClass]="progressBarFillClasses()"
|
|
57954
|
+
[style.width.%]="Math.min(progressToTarget(), 100)"
|
|
57955
|
+
class="h-full transition-all duration-500">
|
|
57956
|
+
</div>
|
|
57957
|
+
</div>
|
|
57958
|
+
</div>
|
|
57959
|
+
}
|
|
57960
|
+
</div>
|
|
57961
|
+
|
|
57962
|
+
<!-- Contributing Metrics Table (only for funnel stage metrics) -->
|
|
57963
|
+
@if (contributingMetrics().length > 0) {
|
|
57964
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57965
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57966
|
+
Contributing Metrics
|
|
57967
|
+
</h4>
|
|
57968
|
+
<div class="overflow-x-auto">
|
|
57969
|
+
<table class="w-full">
|
|
57970
|
+
<thead>
|
|
57971
|
+
<tr [ngClass]="tableHeaderClasses()" class="border-b">
|
|
57972
|
+
<th class="text-left py-3 px-4 text-xs font-semibold uppercase tracking-wider">Metric</th>
|
|
57973
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Target</th>
|
|
57974
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Improve by</th>
|
|
57975
|
+
</tr>
|
|
57976
|
+
</thead>
|
|
57977
|
+
<tbody>
|
|
57978
|
+
@for (metric of contributingMetrics(); track metric.metric) {
|
|
57979
|
+
<tr [ngClass]="tableRowClasses()" class="border-b transition-colors">
|
|
57980
|
+
<td class="py-3 px-4">
|
|
57981
|
+
<div class="flex items-center gap-2">
|
|
57982
|
+
<span class="text-sm font-medium">{{ getMetricTitle(metric) }}</span>
|
|
57983
|
+
@if (metric.description) {
|
|
57984
|
+
<button
|
|
57985
|
+
type="button"
|
|
57986
|
+
[ngClass]="infoIconClasses()"
|
|
57987
|
+
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
57988
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.description, getMetricTitle(metric))"
|
|
57989
|
+
tooltipType="markdown"
|
|
57990
|
+
tooltipPosition="right">
|
|
57991
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57992
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
57993
|
+
</svg>
|
|
57994
|
+
</button>
|
|
57995
|
+
}
|
|
57996
|
+
</div>
|
|
57997
|
+
</td>
|
|
57998
|
+
<td class="py-3 px-4 text-right">
|
|
57999
|
+
<span [ngClass]="targetValueClasses()" class="text-sm font-semibold">
|
|
58000
|
+
{{ formatMetricValue(metric.targetValue, metric.metric, false) }}
|
|
58001
|
+
</span>
|
|
58002
|
+
</td>
|
|
58003
|
+
<td class="py-3 px-4 text-right">
|
|
58004
|
+
<div class="flex items-center justify-end gap-2">
|
|
58005
|
+
<span class="text-sm font-medium">
|
|
58006
|
+
{{ formatPercentage(Math.abs(metric.percentageIncrease), 1) }}
|
|
58007
|
+
</span>
|
|
58008
|
+
<svg
|
|
58009
|
+
class="w-4 h-4 text-emerald-500"
|
|
58010
|
+
fill="none"
|
|
58011
|
+
stroke="currentColor"
|
|
58012
|
+
viewBox="0 0 24 24">
|
|
58013
|
+
<path
|
|
58014
|
+
stroke-linecap="round"
|
|
58015
|
+
stroke-linejoin="round"
|
|
58016
|
+
stroke-width="2"
|
|
58017
|
+
[attr.d]="metric.percentageIncrease >= 0 ? 'M5 10l7-7m0 0l7 7m-7-7v18' : 'M19 14l-7 7m0 0l-7-7m7 7V3'" />
|
|
58018
|
+
</svg>
|
|
58019
|
+
</div>
|
|
58020
|
+
</td>
|
|
58021
|
+
</tr>
|
|
58022
|
+
}
|
|
58023
|
+
</tbody>
|
|
58024
|
+
</table>
|
|
58025
|
+
</div>
|
|
58026
|
+
</div>
|
|
58027
|
+
}
|
|
58028
|
+
|
|
58029
|
+
<!-- Pacing Chart -->
|
|
58030
|
+
@if (pacingChartData()) {
|
|
58031
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6">
|
|
58032
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58033
|
+
Pace
|
|
58034
|
+
</h4>
|
|
58035
|
+
<div class="min-h-[400px]">
|
|
58036
|
+
<symphiq-line-chart
|
|
58037
|
+
[chart]="pacingChartData()!"
|
|
58038
|
+
[showAxisLabels]="true"
|
|
58039
|
+
[viewMode]="viewMode()"
|
|
58040
|
+
[currencySymbol]="'$'"
|
|
58041
|
+
/>
|
|
58042
|
+
</div>
|
|
58043
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-4">
|
|
58044
|
+
{{ chartDescriptionText() }}
|
|
58045
|
+
</p>
|
|
58046
|
+
</div>
|
|
58047
|
+
}
|
|
58048
|
+
</div>
|
|
58049
|
+
|
|
58050
|
+
<!-- Footer -->
|
|
58051
|
+
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t">
|
|
58052
|
+
<button
|
|
58053
|
+
(click)="close()"
|
|
58054
|
+
[ngClass]="closeFooterButtonClasses()"
|
|
58055
|
+
class="w-full px-4 py-2 rounded-lg transition-all font-medium hover:scale-[1.02] active:scale-[0.98]">
|
|
58056
|
+
Close
|
|
58057
|
+
</button>
|
|
58058
|
+
</div>
|
|
58059
|
+
</div>
|
|
58060
|
+
</div>
|
|
58061
|
+
</div>
|
|
58062
|
+
}
|
|
58063
|
+
`
|
|
58064
|
+
}]
|
|
58065
|
+
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricEnum: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricEnum", required: false }] }], metricData: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricData", required: false }] }], contributingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "contributingMetrics", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] }); })();
|
|
58066
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricReportModalComponent, { className: "MetricReportModalComponent", filePath: "lib/components/revenue-calculator-dashboard/metric-report-modal.component.ts", lineNumber: 344 }); })();
|
|
58067
|
+
|
|
58068
|
+
const _c0$q = ["absoluteInputRef"];
|
|
56557
58069
|
const _c1$b = ["percentageInputRef"];
|
|
56558
58070
|
function InitialTargetSettingComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56559
58071
|
i0.ɵɵtext(0);
|
|
@@ -56569,8 +58081,8 @@ function InitialTargetSettingComponent_Conditional_6_Template(rf, ctx) { if (rf
|
|
|
56569
58081
|
} }
|
|
56570
58082
|
function InitialTargetSettingComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
56571
58083
|
i0.ɵɵnamespaceSVG();
|
|
56572
|
-
i0.ɵɵelementStart(0, "svg",
|
|
56573
|
-
i0.ɵɵelement(1, "path",
|
|
58084
|
+
i0.ɵɵelementStart(0, "svg", 34);
|
|
58085
|
+
i0.ɵɵelement(1, "path", 35);
|
|
56574
58086
|
i0.ɵɵelementEnd();
|
|
56575
58087
|
} if (rf & 2) {
|
|
56576
58088
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56582,17 +58094,17 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
|
|
|
56582
58094
|
i0.ɵɵelementStart(0, "div", 11);
|
|
56583
58095
|
i0.ɵɵnamespaceSVG();
|
|
56584
58096
|
i0.ɵɵelementStart(1, "svg", 12);
|
|
56585
|
-
i0.ɵɵelement(2, "path",
|
|
58097
|
+
i0.ɵɵelement(2, "path", 36);
|
|
56586
58098
|
i0.ɵɵelementEnd();
|
|
56587
58099
|
i0.ɵɵnamespaceHTML();
|
|
56588
|
-
i0.ɵɵelementStart(3, "div")(4, "div",
|
|
58100
|
+
i0.ɵɵelementStart(3, "div")(4, "div", 37)(5, "p", 14);
|
|
56589
58101
|
i0.ɵɵtext(6, " Current Pace Projection ");
|
|
56590
58102
|
i0.ɵɵelementEnd();
|
|
56591
|
-
i0.ɵɵelementStart(7, "button",
|
|
58103
|
+
i0.ɵɵelementStart(7, "button", 38);
|
|
56592
58104
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_21_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
56593
58105
|
i0.ɵɵnamespaceSVG();
|
|
56594
|
-
i0.ɵɵelementStart(8, "svg",
|
|
56595
|
-
i0.ɵɵelement(9, "path",
|
|
58106
|
+
i0.ɵɵelementStart(8, "svg", 39);
|
|
58107
|
+
i0.ɵɵelement(9, "path", 40);
|
|
56596
58108
|
i0.ɵɵelementEnd()()();
|
|
56597
58109
|
i0.ɵɵnamespaceHTML();
|
|
56598
58110
|
i0.ɵɵelementStart(10, "p", 15);
|
|
@@ -56613,10 +58125,10 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
|
|
|
56613
58125
|
} }
|
|
56614
58126
|
function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56615
58127
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
56616
|
-
i0.ɵɵelementStart(0, "div",
|
|
58128
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "span", 45);
|
|
56617
58129
|
i0.ɵɵtext(2, " $ ");
|
|
56618
58130
|
i0.ɵɵelementEnd();
|
|
56619
|
-
i0.ɵɵelementStart(3, "input",
|
|
58131
|
+
i0.ɵɵelementStart(3, "input", 46, 0);
|
|
56620
58132
|
i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.absoluteInput, $event) || (ctx_r0.absoluteInput = $event); return i0.ɵɵresetView($event); });
|
|
56621
58133
|
i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
|
|
56622
58134
|
i0.ɵɵelementEnd()();
|
|
@@ -56630,11 +58142,11 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf,
|
|
|
56630
58142
|
} }
|
|
56631
58143
|
function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
56632
58144
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
56633
|
-
i0.ɵɵelementStart(0, "div",
|
|
58145
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "input", 47, 1);
|
|
56634
58146
|
i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.percentageInput, $event) || (ctx_r0.percentageInput = $event); return i0.ɵɵresetView($event); });
|
|
56635
58147
|
i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
|
|
56636
58148
|
i0.ɵɵelementEnd();
|
|
56637
|
-
i0.ɵɵelementStart(3, "span",
|
|
58149
|
+
i0.ɵɵelementStart(3, "span", 48);
|
|
56638
58150
|
i0.ɵɵtext(4, " % ");
|
|
56639
58151
|
i0.ɵɵelementEnd()();
|
|
56640
58152
|
} if (rf & 2) {
|
|
@@ -56647,7 +58159,7 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf,
|
|
|
56647
58159
|
} }
|
|
56648
58160
|
function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
56649
58161
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
56650
|
-
i0.ɵɵelementStart(0, "div",
|
|
58162
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "button", 49);
|
|
56651
58163
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.handleCancel()); });
|
|
56652
58164
|
i0.ɵɵtext(2, " Cancel ");
|
|
56653
58165
|
i0.ɵɵelementEnd()();
|
|
@@ -56658,16 +58170,16 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf,
|
|
|
56658
58170
|
} }
|
|
56659
58171
|
function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
56660
58172
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
56661
|
-
i0.ɵɵelementStart(0, "div",
|
|
58173
|
+
i0.ɵɵelementStart(0, "div", 41)(1, "button", 42);
|
|
56662
58174
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("absolute")); });
|
|
56663
58175
|
i0.ɵɵtext(2, " Absolute Amount ");
|
|
56664
58176
|
i0.ɵɵelementEnd();
|
|
56665
|
-
i0.ɵɵelementStart(3, "button",
|
|
58177
|
+
i0.ɵɵelementStart(3, "button", 42);
|
|
56666
58178
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_25_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("percentage")); });
|
|
56667
58179
|
i0.ɵɵtext(4, " % Increase ");
|
|
56668
58180
|
i0.ɵɵelementEnd()();
|
|
56669
|
-
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_25_Conditional_5_Template, 5, 3, "div",
|
|
56670
|
-
i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_25_Conditional_7_Template, 3, 1, "div",
|
|
58181
|
+
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_25_Conditional_5_Template, 5, 3, "div", 43)(6, InitialTargetSettingComponent_Conditional_25_Conditional_6_Template, 5, 3, "div", 43);
|
|
58182
|
+
i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_25_Conditional_7_Template, 3, 1, "div", 44);
|
|
56671
58183
|
} if (rf & 2) {
|
|
56672
58184
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56673
58185
|
i0.ɵɵadvance();
|
|
@@ -56686,7 +58198,7 @@ function InitialTargetSettingComponent_Conditional_32_Template(rf, ctx) { if (rf
|
|
|
56686
58198
|
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "108px");
|
|
56687
58199
|
} }
|
|
56688
58200
|
function InitialTargetSettingComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
56689
|
-
i0.ɵɵelementStart(0, "div", 24)(1, "p",
|
|
58201
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
|
|
56690
58202
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56691
58203
|
i0.ɵɵelementEnd()();
|
|
56692
58204
|
} if (rf & 2) {
|
|
@@ -56708,7 +58220,7 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_8_Template(rf,
|
|
|
56708
58220
|
} }
|
|
56709
58221
|
function InitialTargetSettingComponent_Conditional_36_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
56710
58222
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
56711
|
-
i0.ɵɵelementStart(0, "button",
|
|
58223
|
+
i0.ɵɵelementStart(0, "button", 64);
|
|
56712
58224
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_36_Conditional_9_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.handleAdjustTarget(); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
56713
58225
|
i0.ɵɵtext(1, " Adjust Revenue Target ");
|
|
56714
58226
|
i0.ɵɵelementEnd();
|
|
@@ -56754,30 +58266,30 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional
|
|
|
56754
58266
|
} }
|
|
56755
58267
|
function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
56756
58268
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
56757
|
-
i0.ɵɵelementStart(0, "div",
|
|
56758
|
-
i0.ɵɵelement(2, "div",
|
|
56759
|
-
i0.ɵɵelementStart(3, "span",
|
|
58269
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "div", 58);
|
|
58270
|
+
i0.ɵɵelement(2, "div", 59);
|
|
58271
|
+
i0.ɵɵelementStart(3, "span", 60);
|
|
56760
58272
|
i0.ɵɵtext(4);
|
|
56761
58273
|
i0.ɵɵelementEnd();
|
|
56762
|
-
i0.ɵɵelement(5, "div",
|
|
58274
|
+
i0.ɵɵelement(5, "div", 59);
|
|
56763
58275
|
i0.ɵɵelementEnd();
|
|
56764
|
-
i0.ɵɵelementStart(6, "div",
|
|
58276
|
+
i0.ɵɵelementStart(6, "div", 61)(7, "div")(8, "p", 62);
|
|
56765
58277
|
i0.ɵɵtext(9, " Gap to Close ");
|
|
56766
58278
|
i0.ɵɵelementEnd();
|
|
56767
|
-
i0.ɵɵelementStart(10, "p",
|
|
58279
|
+
i0.ɵɵelementStart(10, "p", 63);
|
|
56768
58280
|
i0.ɵɵconditionalCreate(11, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_11_Template, 1, 1)(12, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_12_Template, 1, 0);
|
|
56769
58281
|
i0.ɵɵelementEnd()();
|
|
56770
|
-
i0.ɵɵelementStart(13, "div")(14, "div",
|
|
58282
|
+
i0.ɵɵelementStart(13, "div")(14, "div", 65)(15, "p", 14);
|
|
56771
58283
|
i0.ɵɵtext(16, " Additional Growth Needed ");
|
|
56772
58284
|
i0.ɵɵelementEnd();
|
|
56773
|
-
i0.ɵɵelementStart(17, "button",
|
|
58285
|
+
i0.ɵɵelementStart(17, "button", 38);
|
|
56774
58286
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template_button_click_17_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
56775
58287
|
i0.ɵɵnamespaceSVG();
|
|
56776
|
-
i0.ɵɵelementStart(18, "svg",
|
|
56777
|
-
i0.ɵɵelement(19, "path",
|
|
58288
|
+
i0.ɵɵelementStart(18, "svg", 39);
|
|
58289
|
+
i0.ɵɵelement(19, "path", 40);
|
|
56778
58290
|
i0.ɵɵelementEnd()()();
|
|
56779
58291
|
i0.ɵɵnamespaceHTML();
|
|
56780
|
-
i0.ɵɵelementStart(20, "p",
|
|
58292
|
+
i0.ɵɵelementStart(20, "p", 63);
|
|
56781
58293
|
i0.ɵɵconditionalCreate(21, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_21_Template, 1, 2)(22, InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional_22_Template, 1, 0);
|
|
56782
58294
|
i0.ɵɵelementEnd()()()();
|
|
56783
58295
|
} if (rf & 2) {
|
|
@@ -56806,34 +58318,34 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf
|
|
|
56806
58318
|
i0.ɵɵconditional(ctx_r0.isTargetValid() ? 21 : 22);
|
|
56807
58319
|
} }
|
|
56808
58320
|
function InitialTargetSettingComponent_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
56809
|
-
i0.ɵɵelementStart(0, "div",
|
|
58321
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div")(2, "div", 52)(3, "div")(4, "p", 14);
|
|
56810
58322
|
i0.ɵɵtext(5);
|
|
56811
58323
|
i0.ɵɵelementEnd();
|
|
56812
|
-
i0.ɵɵelementStart(6, "p",
|
|
58324
|
+
i0.ɵɵelementStart(6, "p", 53);
|
|
56813
58325
|
i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_36_Conditional_7_Template, 1, 1)(8, InitialTargetSettingComponent_Conditional_36_Conditional_8_Template, 1, 1);
|
|
56814
58326
|
i0.ɵɵelementEnd()();
|
|
56815
|
-
i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button",
|
|
58327
|
+
i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button", 54);
|
|
56816
58328
|
i0.ɵɵelementEnd();
|
|
56817
|
-
i0.ɵɵelementStart(10, "div",
|
|
56818
|
-
i0.ɵɵelement(14, "div",
|
|
56819
|
-
i0.ɵɵelementStart(15, "span",
|
|
58329
|
+
i0.ɵɵelementStart(10, "div", 55)(11, "div", 56)(12, "div", 57)(13, "div", 58);
|
|
58330
|
+
i0.ɵɵelement(14, "div", 59);
|
|
58331
|
+
i0.ɵɵelementStart(15, "span", 60);
|
|
56820
58332
|
i0.ɵɵtext(16);
|
|
56821
58333
|
i0.ɵɵelementEnd();
|
|
56822
|
-
i0.ɵɵelement(17, "div",
|
|
58334
|
+
i0.ɵɵelement(17, "div", 59);
|
|
56823
58335
|
i0.ɵɵelementEnd();
|
|
56824
|
-
i0.ɵɵelementStart(18, "div",
|
|
58336
|
+
i0.ɵɵelementStart(18, "div", 61)(19, "div")(20, "p", 62);
|
|
56825
58337
|
i0.ɵɵtext(21, " Increase Amount ");
|
|
56826
58338
|
i0.ɵɵelementEnd();
|
|
56827
|
-
i0.ɵɵelementStart(22, "p",
|
|
58339
|
+
i0.ɵɵelementStart(22, "p", 63);
|
|
56828
58340
|
i0.ɵɵconditionalCreate(23, InitialTargetSettingComponent_Conditional_36_Conditional_23_Template, 1, 1)(24, InitialTargetSettingComponent_Conditional_36_Conditional_24_Template, 1, 0);
|
|
56829
58341
|
i0.ɵɵelementEnd()();
|
|
56830
|
-
i0.ɵɵelementStart(25, "div")(26, "p",
|
|
58342
|
+
i0.ɵɵelementStart(25, "div")(26, "p", 62);
|
|
56831
58343
|
i0.ɵɵtext(27, " % Growth ");
|
|
56832
58344
|
i0.ɵɵelementEnd();
|
|
56833
|
-
i0.ɵɵelementStart(28, "p",
|
|
58345
|
+
i0.ɵɵelementStart(28, "p", 63);
|
|
56834
58346
|
i0.ɵɵconditionalCreate(29, InitialTargetSettingComponent_Conditional_36_Conditional_29_Template, 1, 1)(30, InitialTargetSettingComponent_Conditional_36_Conditional_30_Template, 1, 0);
|
|
56835
58347
|
i0.ɵɵelementEnd()()()();
|
|
56836
|
-
i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div",
|
|
58348
|
+
i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div", 57);
|
|
56837
58349
|
i0.ɵɵelementEnd()()()();
|
|
56838
58350
|
} if (rf & 2) {
|
|
56839
58351
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56882,7 +58394,7 @@ function InitialTargetSettingComponent_Conditional_37_Conditional_4_Template(rf,
|
|
|
56882
58394
|
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
|
|
56883
58395
|
} }
|
|
56884
58396
|
function InitialTargetSettingComponent_Conditional_37_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56885
|
-
i0.ɵɵelementStart(0, "div", 24)(1, "p",
|
|
58397
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
|
|
56886
58398
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56887
58399
|
i0.ɵɵelementEnd()();
|
|
56888
58400
|
} if (rf & 2) {
|
|
@@ -56919,14 +58431,16 @@ function InitialTargetSettingComponent_Conditional_40_Conditional_6_Template(rf,
|
|
|
56919
58431
|
i0.ɵɵtextInterpolate1(" To achieve your revenue target of ", ctx_r0.formatCurrency(ctx_r0.displayedTargetRevenue()), ", the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth. ");
|
|
56920
58432
|
} }
|
|
56921
58433
|
function InitialTargetSettingComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
56922
|
-
|
|
58434
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
58435
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "div", 66)(2, "h2", 67);
|
|
56923
58436
|
i0.ɵɵtext(3, " Contributing Metrics ");
|
|
56924
58437
|
i0.ɵɵelementEnd();
|
|
56925
|
-
i0.ɵɵelementStart(4, "p",
|
|
58438
|
+
i0.ɵɵelementStart(4, "p", 50);
|
|
56926
58439
|
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_40_Conditional_5_Template, 1, 1)(6, InitialTargetSettingComponent_Conditional_40_Conditional_6_Template, 1, 1);
|
|
56927
58440
|
i0.ɵɵelementEnd()();
|
|
56928
|
-
i0.ɵɵ
|
|
56929
|
-
i0.ɵɵ
|
|
58441
|
+
i0.ɵɵelementStart(7, "symphiq-funnel-metrics-visualization", 68);
|
|
58442
|
+
i0.ɵɵlistener("viewStageReport", function InitialTargetSettingComponent_Conditional_40_Template_symphiq_funnel_metrics_visualization_viewStageReport_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openMetricReport($event)); })("viewRelatedMetricReport", function InitialTargetSettingComponent_Conditional_40_Template_symphiq_funnel_metrics_visualization_viewRelatedMetricReport_7_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openMetricReport($event)); });
|
|
58443
|
+
i0.ɵɵelementEnd()();
|
|
56930
58444
|
} if (rf & 2) {
|
|
56931
58445
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56932
58446
|
i0.ɵɵproperty("ngClass", ctx_r0.sectionCardClasses());
|
|
@@ -56959,6 +58473,23 @@ class InitialTargetSettingComponent {
|
|
|
56959
58473
|
this.storedResponse = signal(null, ...(ngDevMode ? [{ debugName: "storedResponse" }] : []));
|
|
56960
58474
|
this.submittedAbsoluteInput = signal(null, ...(ngDevMode ? [{ debugName: "submittedAbsoluteInput" }] : []));
|
|
56961
58475
|
this.detailsExpanded = signal(false, ...(ngDevMode ? [{ debugName: "detailsExpanded" }] : []));
|
|
58476
|
+
this.isMetricReportOpen = signal(false, ...(ngDevMode ? [{ debugName: "isMetricReportOpen" }] : []));
|
|
58477
|
+
this.selectedMetricEnum = signal('', ...(ngDevMode ? [{ debugName: "selectedMetricEnum" }] : []));
|
|
58478
|
+
this.selectedMetricData = computed(() => {
|
|
58479
|
+
const metricEnum = this.selectedMetricEnum();
|
|
58480
|
+
const calcs = this.displayedMetricCalculations();
|
|
58481
|
+
return calcs.find(c => c.metric === metricEnum);
|
|
58482
|
+
}, ...(ngDevMode ? [{ debugName: "selectedMetricData" }] : []));
|
|
58483
|
+
this.selectedContributingMetrics = computed(() => {
|
|
58484
|
+
const metricEnum = this.selectedMetricEnum();
|
|
58485
|
+
const calcs = this.displayedMetricCalculations();
|
|
58486
|
+
const selectedMetric = calcs.find(c => c.metric === metricEnum);
|
|
58487
|
+
if (!selectedMetric || !selectedMetric.isFunnelStage) {
|
|
58488
|
+
return [];
|
|
58489
|
+
}
|
|
58490
|
+
return calcs.filter(c => !c.isFunnelStage && c.funnelMetric === metricEnum)
|
|
58491
|
+
.sort((a, b) => (a.relatedInd ?? 0) - (b.relatedInd ?? 0));
|
|
58492
|
+
}, ...(ngDevMode ? [{ debugName: "selectedContributingMetrics" }] : []));
|
|
56962
58493
|
this.animatedIncreaseAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedIncreaseAmount" }] : []));
|
|
56963
58494
|
this.animatedPercentageGrowth = signal(0, ...(ngDevMode ? [{ debugName: "animatedPercentageGrowth" }] : []));
|
|
56964
58495
|
this.animatedGapAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedGapAmount" }] : []));
|
|
@@ -57466,15 +58997,23 @@ class InitialTargetSettingComponent {
|
|
|
57466
58997
|
? 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300'
|
|
57467
58998
|
: 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700';
|
|
57468
58999
|
}
|
|
59000
|
+
openMetricReport(metricEnum) {
|
|
59001
|
+
this.selectedMetricEnum.set(metricEnum);
|
|
59002
|
+
this.isMetricReportOpen.set(true);
|
|
59003
|
+
}
|
|
59004
|
+
closeMetricReport() {
|
|
59005
|
+
this.isMetricReportOpen.set(false);
|
|
59006
|
+
this.selectedMetricEnum.set('');
|
|
59007
|
+
}
|
|
57469
59008
|
static { this.ɵfac = function InitialTargetSettingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InitialTargetSettingComponent)(); }; }
|
|
57470
59009
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InitialTargetSettingComponent, selectors: [["symphiq-initial-target-setting"]], viewQuery: function InitialTargetSettingComponent_Query(rf, ctx) { if (rf & 1) {
|
|
57471
|
-
i0.ɵɵviewQuery(_c0$
|
|
59010
|
+
i0.ɵɵviewQuery(_c0$q, 5);
|
|
57472
59011
|
i0.ɵɵviewQuery(_c1$b, 5);
|
|
57473
59012
|
} if (rf & 2) {
|
|
57474
59013
|
let _t;
|
|
57475
59014
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
|
|
57476
59015
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.percentageInputRef = _t.first);
|
|
57477
|
-
} }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"], targets: [1, "targets"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls:
|
|
59016
|
+
} }, inputs: { viewMode: [1, "viewMode"], funnelMetrics: [1, "funnelMetrics"], mainUiData: [1, "mainUiData"], trendUiData: [1, "trendUiData"], shopId: [1, "shopId"], pacingMetrics: [1, "pacingMetrics"], dataResults: [1, "dataResults"], reverseCalculationResponse: [1, "reverseCalculationResponse"], targets: [1, "targets"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 43, vars: 50, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "click", "ngClass"], [1, "flex", "items-center", "justify-between", "mb-6"], [1, "text-2xl", "font-bold", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "chevron-rotate-expanded", "ngClass"], [1, "flex", "flex-col", "gap-4"], [1, "grid", "lg:grid-cols-2", "gap-4"], [1, "p-6", "rounded-xl", "border-2", 3, "click", "ngClass"], [1, "flex", "flex-wrap", "gap-4", "place-content-between"], [1, "flex", "items-center", "gap-2"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", 3, "ngClass"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "form-area-collapse"], [1, "form-area-content"], [1, "space-y-6"], [1, "chart-in-column"], [1, "chart-in-column-content"], [1, "text-sm", "font-semibold", "mb-3", 3, "ngClass"], [1, "rounded-xl", "border", "p-4", 3, "ngClass"], [3, "chart", "showAxisLabels", "viewMode", "currencySymbol", "height"], [1, "h-64", "flex", "items-center", "justify-center"], [1, "calculated-card-enter", "order-first", "lg:order-last"], [1, "calculated-card-content"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass", "h-full"], [1, "w-full"], [1, "metrics-section-enter"], [1, "metrics-section-content"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [3, "submitClick", "cancelClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText", "showCancelButton"], [3, "closed", "viewMode", "metricEnum", "metricData", "contributingMetrics", "pacingMetrics", "isOpen"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "chevron-rotate", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], [1, "flex", "items-center", "gap-1"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "top", 1, "flex-shrink-0", "w-4", "h-4", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "click", "ngClass", "libSymphiqTooltip"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex", "gap-2"], [1, "flex-1", "py-2", "px-4", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "relative"], [1, "flex", "justify-end"], [1, "absolute", "left-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "step", "1000", 1, "w-full", "pl-10", "pr-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], ["type", "number", "placeholder", "0", "min", "0", "max", "1000", "step", "0.1", 1, "w-full", "pr-10", "pl-4", "py-4", "rounded-xl", "text-2xl", "font-bold", "border-2", "transition-all", 3, "ngModelChange", "ngModel", "ngClass"], [1, "absolute", "right-4", "top-1/2", "-translate-y-1/2", "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", 3, "click", "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "p-6", "rounded-xl", "border-2", 3, "ngClass"], [1, "flex", "items-center", "justify-between"], [1, "font-bold", "transition-all", "duration-300", "text-lg", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "ngClass"], [1, "details-collapse"], [1, "details-collapse-content"], [1, "relative", "pt-6", "mt-6"], [1, "absolute", "top-0", "left-0", "right-0", "flex", "items-center", "-translate-y-1/2"], [1, "flex-1", "h-px", 3, "ngClass"], [1, "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", 3, "ngClass"], [1, "grid", "grid-cols-2", "gap-4", "pt-2"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "click", "ngClass"], [1, "flex", "items-center", "gap-1", "mb-1"], [1, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewStageReport", "viewRelatedMetricReport", "viewMode", "calculations", "pacingMetrics"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
|
|
57478
59017
|
i0.ɵɵelementStart(0, "div", 2);
|
|
57479
59018
|
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
57480
59019
|
i0.ɵɵelementStart(2, "div", 3);
|
|
@@ -57519,6 +59058,9 @@ class InitialTargetSettingComponent {
|
|
|
57519
59058
|
i0.ɵɵelementEnd()();
|
|
57520
59059
|
i0.ɵɵelementStart(41, "symphiq-sticky-submit-bar", 32);
|
|
57521
59060
|
i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_41_listener() { return ctx.handleSubmitClick(); })("cancelClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_cancelClick_41_listener() { return ctx.handleCancel(); });
|
|
59061
|
+
i0.ɵɵelementEnd();
|
|
59062
|
+
i0.ɵɵelementStart(42, "symphiq-metric-report-modal", 33);
|
|
59063
|
+
i0.ɵɵlistener("closed", function InitialTargetSettingComponent_Template_symphiq_metric_report_modal_closed_42_listener() { return ctx.closeMetricReport(); });
|
|
57522
59064
|
i0.ɵɵelementEnd()();
|
|
57523
59065
|
} if (rf & 2) {
|
|
57524
59066
|
i0.ɵɵadvance(2);
|
|
@@ -57570,11 +59112,14 @@ class InitialTargetSettingComponent {
|
|
|
57570
59112
|
i0.ɵɵconditional(ctx.showMetricsVisualization() ? 40 : -1);
|
|
57571
59113
|
i0.ɵɵadvance();
|
|
57572
59114
|
i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
|
|
59115
|
+
i0.ɵɵadvance();
|
|
59116
|
+
i0.ɵɵproperty("viewMode", ctx.viewMode())("metricEnum", ctx.selectedMetricEnum())("metricData", ctx.selectedMetricData())("contributingMetrics", ctx.selectedContributingMetrics())("pacingMetrics", ctx.pacingMetrics())("isOpen", ctx.isMetricReportOpen());
|
|
57573
59117
|
} }, dependencies: [CommonModule, i1$1.NgClass, FormsModule, i2$1.DefaultValueAccessor, i2$1.NumberValueAccessor, i2$1.NgControlStatus, i2$1.MinValidator, i2$1.MaxValidator, i2$1.NgModel, FunnelMetricsVisualizationComponent,
|
|
57574
59118
|
StickySubmitBarComponent,
|
|
57575
59119
|
AreaChartComponent,
|
|
57576
59120
|
TooltipDirective,
|
|
57577
|
-
TooltipContainerComponent
|
|
59121
|
+
TooltipContainerComponent,
|
|
59122
|
+
MetricReportModalComponent], styles: [".calculated-card-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.calculated-card-content[_ngcontent-%COMP%]{overflow:hidden}.form-area-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.form-area-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.form-area-content[_ngcontent-%COMP%]{overflow:hidden}.chart-section-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.chart-section-collapse-hidden[_ngcontent-%COMP%]{grid-template-rows:0fr}.chart-section-content[_ngcontent-%COMP%]{overflow:hidden}.chart-in-column[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.chart-in-column-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.chart-in-column-content[_ngcontent-%COMP%]{overflow:hidden}.metrics-section-enter[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s ease-out}.metrics-section-enter-active[_ngcontent-%COMP%]{grid-template-rows:1fr}.metrics-section-content[_ngcontent-%COMP%]{overflow:hidden}.details-collapse[_ngcontent-%COMP%]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.details-collapse-expanded[_ngcontent-%COMP%]{grid-template-rows:1fr}.details-collapse-content[_ngcontent-%COMP%]{overflow:hidden}.chevron-rotate[_ngcontent-%COMP%]{transition:transform .3s ease-out}.chevron-rotate-expanded[_ngcontent-%COMP%]{transform:rotate(180deg)}"], changeDetection: 0 }); }
|
|
57578
59123
|
}
|
|
57579
59124
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InitialTargetSettingComponent, [{
|
|
57580
59125
|
type: Component,
|
|
@@ -57585,378 +59130,392 @@ class InitialTargetSettingComponent {
|
|
|
57585
59130
|
StickySubmitBarComponent,
|
|
57586
59131
|
AreaChartComponent,
|
|
57587
59132
|
TooltipDirective,
|
|
57588
|
-
TooltipContainerComponent
|
|
57589
|
-
|
|
57590
|
-
|
|
57591
|
-
|
|
57592
|
-
<
|
|
57593
|
-
|
|
57594
|
-
[class.
|
|
57595
|
-
[
|
|
57596
|
-
[
|
|
57597
|
-
|
|
57598
|
-
|
|
57599
|
-
|
|
57600
|
-
|
|
57601
|
-
|
|
57602
|
-
|
|
57603
|
-
|
|
57604
|
-
|
|
57605
|
-
|
|
57606
|
-
|
|
57607
|
-
|
|
57608
|
-
|
|
57609
|
-
|
|
57610
|
-
[
|
|
57611
|
-
|
|
57612
|
-
|
|
57613
|
-
|
|
57614
|
-
|
|
57615
|
-
|
|
57616
|
-
|
|
57617
|
-
|
|
57618
|
-
|
|
57619
|
-
|
|
57620
|
-
|
|
57621
|
-
|
|
57622
|
-
|
|
57623
|
-
|
|
57624
|
-
|
|
57625
|
-
|
|
57626
|
-
|
|
57627
|
-
|
|
57628
|
-
|
|
57629
|
-
|
|
57630
|
-
|
|
57631
|
-
|
|
57632
|
-
|
|
57633
|
-
|
|
57634
|
-
|
|
57635
|
-
|
|
57636
|
-
|
|
57637
|
-
|
|
57638
|
-
|
|
57639
|
-
|
|
57640
|
-
|
|
57641
|
-
|
|
57642
|
-
|
|
57643
|
-
|
|
57644
|
-
|
|
57645
|
-
|
|
57646
|
-
|
|
57647
|
-
|
|
57648
|
-
|
|
57649
|
-
|
|
57650
|
-
|
|
57651
|
-
|
|
57652
|
-
|
|
57653
|
-
|
|
57654
|
-
|
|
57655
|
-
|
|
57656
|
-
|
|
57657
|
-
|
|
57658
|
-
|
|
57659
|
-
|
|
57660
|
-
|
|
57661
|
-
|
|
57662
|
-
|
|
57663
|
-
|
|
57664
|
-
|
|
57665
|
-
|
|
57666
|
-
|
|
57667
|
-
|
|
57668
|
-
|
|
57669
|
-
|
|
57670
|
-
|
|
57671
|
-
|
|
57672
|
-
|
|
57673
|
-
|
|
57674
|
-
|
|
57675
|
-
|
|
57676
|
-
|
|
57677
|
-
|
|
57678
|
-
|
|
57679
|
-
|
|
57680
|
-
|
|
57681
|
-
|
|
57682
|
-
|
|
57683
|
-
|
|
57684
|
-
|
|
57685
|
-
|
|
57686
|
-
|
|
57687
|
-
|
|
57688
|
-
|
|
57689
|
-
|
|
57690
|
-
|
|
57691
|
-
|
|
57692
|
-
|
|
57693
|
-
|
|
57694
|
-
|
|
57695
|
-
|
|
57696
|
-
(
|
|
57697
|
-
|
|
57698
|
-
|
|
57699
|
-
|
|
57700
|
-
|
|
57701
|
-
|
|
57702
|
-
|
|
57703
|
-
|
|
57704
|
-
|
|
57705
|
-
|
|
57706
|
-
|
|
57707
|
-
|
|
57708
|
-
|
|
57709
|
-
(
|
|
57710
|
-
|
|
57711
|
-
|
|
57712
|
-
|
|
57713
|
-
|
|
57714
|
-
|
|
57715
|
-
|
|
57716
|
-
|
|
57717
|
-
|
|
57718
|
-
|
|
57719
|
-
|
|
57720
|
-
|
|
57721
|
-
|
|
57722
|
-
|
|
57723
|
-
|
|
57724
|
-
|
|
57725
|
-
|
|
57726
|
-
|
|
57727
|
-
|
|
57728
|
-
|
|
57729
|
-
|
|
57730
|
-
|
|
57731
|
-
|
|
57732
|
-
|
|
57733
|
-
|
|
57734
|
-
|
|
57735
|
-
|
|
57736
|
-
|
|
57737
|
-
|
|
57738
|
-
|
|
57739
|
-
|
|
57740
|
-
|
|
57741
|
-
|
|
57742
|
-
|
|
57743
|
-
|
|
57744
|
-
|
|
57745
|
-
|
|
57746
|
-
|
|
57747
|
-
|
|
57748
|
-
[
|
|
57749
|
-
[
|
|
57750
|
-
[
|
|
57751
|
-
[
|
|
57752
|
-
|
|
57753
|
-
|
|
57754
|
-
|
|
57755
|
-
|
|
57756
|
-
|
|
57757
|
-
|
|
57758
|
-
|
|
57759
|
-
|
|
57760
|
-
|
|
57761
|
-
|
|
57762
|
-
|
|
57763
|
-
|
|
57764
|
-
|
|
57765
|
-
|
|
57766
|
-
|
|
57767
|
-
|
|
57768
|
-
|
|
57769
|
-
|
|
57770
|
-
|
|
57771
|
-
|
|
57772
|
-
|
|
57773
|
-
|
|
57774
|
-
|
|
57775
|
-
|
|
57776
|
-
|
|
57777
|
-
|
|
57778
|
-
|
|
57779
|
-
|
|
57780
|
-
|
|
57781
|
-
|
|
57782
|
-
|
|
57783
|
-
|
|
57784
|
-
|
|
57785
|
-
|
|
57786
|
-
|
|
57787
|
-
|
|
57788
|
-
|
|
57789
|
-
|
|
57790
|
-
|
|
57791
|
-
|
|
57792
|
-
|
|
57793
|
-
|
|
57794
|
-
|
|
57795
|
-
|
|
57796
|
-
|
|
57797
|
-
|
|
57798
|
-
|
|
57799
|
-
|
|
57800
|
-
|
|
57801
|
-
<
|
|
57802
|
-
|
|
57803
|
-
|
|
57804
|
-
|
|
57805
|
-
|
|
57806
|
-
|
|
57807
|
-
|
|
57808
|
-
|
|
57809
|
-
|
|
57810
|
-
|
|
57811
|
-
|
|
57812
|
-
|
|
57813
|
-
|
|
57814
|
-
|
|
57815
|
-
|
|
57816
|
-
|
|
57817
|
-
|
|
57818
|
-
|
|
57819
|
-
|
|
57820
|
-
|
|
57821
|
-
|
|
57822
|
-
|
|
57823
|
-
|
|
57824
|
-
|
|
57825
|
-
|
|
57826
|
-
|
|
57827
|
-
|
|
57828
|
-
|
|
57829
|
-
|
|
57830
|
-
|
|
57831
|
-
|
|
57832
|
-
|
|
57833
|
-
|
|
57834
|
-
|
|
57835
|
-
|
|
57836
|
-
|
|
57837
|
-
|
|
57838
|
-
<
|
|
57839
|
-
|
|
57840
|
-
|
|
57841
|
-
|
|
57842
|
-
|
|
57843
|
-
|
|
57844
|
-
|
|
57845
|
-
|
|
57846
|
-
|
|
57847
|
-
|
|
57848
|
-
|
|
57849
|
-
|
|
57850
|
-
|
|
57851
|
-
|
|
57852
|
-
|
|
57853
|
-
|
|
57854
|
-
|
|
57855
|
-
|
|
57856
|
-
|
|
57857
|
-
|
|
57858
|
-
|
|
57859
|
-
|
|
57860
|
-
|
|
57861
|
-
|
|
57862
|
-
|
|
57863
|
-
|
|
57864
|
-
|
|
57865
|
-
|
|
57866
|
-
|
|
57867
|
-
|
|
57868
|
-
|
|
57869
|
-
|
|
57870
|
-
|
|
57871
|
-
|
|
57872
|
-
|
|
57873
|
-
|
|
57874
|
-
|
|
57875
|
-
|
|
57876
|
-
|
|
57877
|
-
|
|
57878
|
-
|
|
57879
|
-
|
|
57880
|
-
|
|
57881
|
-
|
|
57882
|
-
|
|
57883
|
-
|
|
57884
|
-
|
|
57885
|
-
|
|
57886
|
-
|
|
57887
|
-
|
|
57888
|
-
|
|
57889
|
-
|
|
57890
|
-
|
|
57891
|
-
|
|
57892
|
-
|
|
57893
|
-
|
|
57894
|
-
|
|
57895
|
-
|
|
57896
|
-
|
|
57897
|
-
|
|
57898
|
-
|
|
57899
|
-
|
|
57900
|
-
|
|
57901
|
-
|
|
57902
|
-
|
|
57903
|
-
|
|
57904
|
-
[
|
|
57905
|
-
[
|
|
57906
|
-
[
|
|
57907
|
-
[
|
|
57908
|
-
|
|
57909
|
-
|
|
57910
|
-
|
|
57911
|
-
|
|
57912
|
-
|
|
57913
|
-
|
|
57914
|
-
|
|
57915
|
-
|
|
57916
|
-
|
|
57917
|
-
|
|
57918
|
-
|
|
57919
|
-
|
|
57920
|
-
|
|
57921
|
-
|
|
57922
|
-
|
|
57923
|
-
|
|
57924
|
-
|
|
57925
|
-
|
|
57926
|
-
|
|
57927
|
-
|
|
57928
|
-
|
|
57929
|
-
|
|
57930
|
-
|
|
57931
|
-
|
|
57932
|
-
|
|
57933
|
-
|
|
57934
|
-
|
|
57935
|
-
|
|
57936
|
-
|
|
57937
|
-
|
|
57938
|
-
|
|
57939
|
-
|
|
57940
|
-
|
|
57941
|
-
[
|
|
57942
|
-
[
|
|
57943
|
-
|
|
57944
|
-
|
|
57945
|
-
|
|
57946
|
-
|
|
57947
|
-
|
|
57948
|
-
|
|
57949
|
-
|
|
57950
|
-
|
|
57951
|
-
|
|
57952
|
-
|
|
57953
|
-
[
|
|
57954
|
-
[
|
|
57955
|
-
[
|
|
57956
|
-
|
|
57957
|
-
|
|
57958
|
-
|
|
57959
|
-
|
|
59133
|
+
TooltipContainerComponent,
|
|
59134
|
+
MetricReportModalComponent
|
|
59135
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
59136
|
+
<div class="space-y-8 pb-32">
|
|
59137
|
+
<symphiq-tooltip-container />
|
|
59138
|
+
<div [ngClass]="sectionCardClasses(true)" class="rounded-2xl border shadow-lg p-8"
|
|
59139
|
+
[class.cursor-pointer]="calculationState() === 'results'"
|
|
59140
|
+
[class.lg:sticky]="calculationState() === 'results'"
|
|
59141
|
+
[style.top]="calculationState() === 'results' ? '148px' : 'auto'"
|
|
59142
|
+
[class.z-30]="calculationState() === 'results'"
|
|
59143
|
+
(click)="onCardClick()">
|
|
59144
|
+
<div class="flex items-center justify-between mb-6">
|
|
59145
|
+
<h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold">
|
|
59146
|
+
@if (calculationState() === 'results') {
|
|
59147
|
+
Your {{ currentYear() }} Revenue Target
|
|
59148
|
+
} @else {
|
|
59149
|
+
Calculate Your {{ currentYear() }} Revenue Target
|
|
59150
|
+
}
|
|
59151
|
+
</h2>
|
|
59152
|
+
@if (calculationState() === 'results') {
|
|
59153
|
+
<svg
|
|
59154
|
+
class="w-6 h-6 chevron-rotate"
|
|
59155
|
+
[class.chevron-rotate-expanded]="detailsExpanded()"
|
|
59156
|
+
[ngClass]="chevronClasses()"
|
|
59157
|
+
fill="none"
|
|
59158
|
+
stroke="currentColor"
|
|
59159
|
+
viewBox="0 0 24 24">
|
|
59160
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
|
59161
|
+
</svg>
|
|
59162
|
+
}
|
|
59163
|
+
</div>
|
|
59164
|
+
|
|
59165
|
+
<div class="flex flex-col gap-4">
|
|
59166
|
+
<div class="grid lg:grid-cols-2 gap-4">
|
|
59167
|
+
<div class="flex flex-col gap-4">
|
|
59168
|
+
<div [ngClass]="formAreaClasses()" class="p-6 rounded-xl border-2" [class.cursor-pointer]="calculationState() === 'results'" (click)="onCardClick(); $event.stopPropagation()">
|
|
59169
|
+
<div class="flex flex-wrap gap-4 place-content-between">
|
|
59170
|
+
<div class="flex items-center gap-2">
|
|
59171
|
+
<svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59172
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
|
|
59173
|
+
</svg>
|
|
59174
|
+
<div>
|
|
59175
|
+
<p [ngClass]="baselineLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59176
|
+
{{ priorYear() }} Revenue
|
|
59177
|
+
</p>
|
|
59178
|
+
<p [ngClass]="baselineValueClasses()" class="text-lg font-bold">
|
|
59179
|
+
{{ formatCurrency(priorYearRevenue()) }}
|
|
59180
|
+
</p>
|
|
59181
|
+
</div>
|
|
59182
|
+
</div>
|
|
59183
|
+
@if (currentPaceProjection() > 0) {
|
|
59184
|
+
<div class="flex items-center gap-2">
|
|
59185
|
+
<svg class="w-4 h-4" [ngClass]="projectionIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59186
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
|
|
59187
|
+
</svg>
|
|
59188
|
+
<div>
|
|
59189
|
+
<div class="flex items-center gap-1">
|
|
59190
|
+
<p [ngClass]="projectionLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59191
|
+
Current Pace Projection
|
|
59192
|
+
</p>
|
|
59193
|
+
<button
|
|
59194
|
+
type="button"
|
|
59195
|
+
[ngClass]="infoIconClasses()"
|
|
59196
|
+
class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
|
|
59197
|
+
[libSymphiqTooltip]="currentPaceProjectionTooltip"
|
|
59198
|
+
tooltipType="markdown"
|
|
59199
|
+
tooltipPosition="top"
|
|
59200
|
+
(click)="$event.stopPropagation()">
|
|
59201
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59202
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
59203
|
+
</svg>
|
|
59204
|
+
</button>
|
|
59205
|
+
</div>
|
|
59206
|
+
<p [ngClass]="projectionValueClasses()" class="text-lg font-bold">
|
|
59207
|
+
{{ formatCurrency(currentPaceProjection()) }}
|
|
59208
|
+
</p>
|
|
59209
|
+
</div>
|
|
59210
|
+
</div>
|
|
59211
|
+
}
|
|
59212
|
+
</div>
|
|
59213
|
+
|
|
59214
|
+
<div class="form-area-collapse" [class.form-area-collapse-hidden]="calculationState() === 'results'" [class.mt-6]="calculationState() !== 'results'">
|
|
59215
|
+
<div class="form-area-content">
|
|
59216
|
+
<div class="space-y-6">
|
|
59217
|
+
@if (calculationState() !== 'results') {
|
|
59218
|
+
<div class="flex gap-2">
|
|
59219
|
+
<button
|
|
59220
|
+
(click)="setInputMode('absolute')"
|
|
59221
|
+
[ngClass]="inputModeButtonClasses('absolute')"
|
|
59222
|
+
class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
|
|
59223
|
+
Absolute Amount
|
|
59224
|
+
</button>
|
|
59225
|
+
<button
|
|
59226
|
+
(click)="setInputMode('percentage')"
|
|
59227
|
+
[ngClass]="inputModeButtonClasses('percentage')"
|
|
59228
|
+
class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
|
|
59229
|
+
% Increase
|
|
59230
|
+
</button>
|
|
59231
|
+
</div>
|
|
59232
|
+
|
|
59233
|
+
@if (inputMode() === 'absolute') {
|
|
59234
|
+
<div class="relative">
|
|
59235
|
+
<span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
|
|
59236
|
+
$
|
|
59237
|
+
</span>
|
|
59238
|
+
<input
|
|
59239
|
+
#absoluteInputRef
|
|
59240
|
+
type="number"
|
|
59241
|
+
[(ngModel)]="absoluteInput"
|
|
59242
|
+
(ngModelChange)="onAbsoluteInputChange()"
|
|
59243
|
+
[ngClass]="inputClasses()"
|
|
59244
|
+
class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
|
|
59245
|
+
placeholder="0"
|
|
59246
|
+
min="0"
|
|
59247
|
+
step="1000">
|
|
59248
|
+
</div>
|
|
59249
|
+
} @else {
|
|
59250
|
+
<div class="relative">
|
|
59251
|
+
<input
|
|
59252
|
+
#percentageInputRef
|
|
59253
|
+
type="number"
|
|
59254
|
+
[(ngModel)]="percentageInput"
|
|
59255
|
+
(ngModelChange)="onPercentageInputChange()"
|
|
59256
|
+
[ngClass]="inputClasses()"
|
|
59257
|
+
class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
|
|
59258
|
+
placeholder="0"
|
|
59259
|
+
min="0"
|
|
59260
|
+
max="1000"
|
|
59261
|
+
step="0.1">
|
|
59262
|
+
<span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
|
|
59263
|
+
%
|
|
59264
|
+
</span>
|
|
59265
|
+
</div>
|
|
59266
|
+
}
|
|
59267
|
+
|
|
59268
|
+
@if (hasStoredResponse()) {
|
|
59269
|
+
<div class="flex justify-end">
|
|
59270
|
+
<button
|
|
59271
|
+
(click)="handleCancel()"
|
|
59272
|
+
[ngClass]="cancelButtonClasses()"
|
|
59273
|
+
class="px-4 py-2 rounded-lg text-sm font-semibold transition-all">
|
|
59274
|
+
Cancel
|
|
59275
|
+
</button>
|
|
59276
|
+
</div>
|
|
59277
|
+
}
|
|
59278
|
+
}
|
|
59279
|
+
</div>
|
|
59280
|
+
</div>
|
|
59281
|
+
</div>
|
|
59282
|
+
</div>
|
|
59283
|
+
|
|
59284
|
+
<div class="chart-in-column" [class.chart-in-column-active]="calculationState() === 'results' && detailsExpanded()">
|
|
59285
|
+
<div class="chart-in-column-content">
|
|
59286
|
+
<div>
|
|
59287
|
+
<p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
|
|
59288
|
+
Year-over-Year Revenue Trend
|
|
59289
|
+
</p>
|
|
59290
|
+
<div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
|
|
59291
|
+
@if (revenueChartData()) {
|
|
59292
|
+
<symphiq-area-chart
|
|
59293
|
+
[chart]="revenueChartData()!"
|
|
59294
|
+
[showAxisLabels]="true"
|
|
59295
|
+
[viewMode]="viewMode()"
|
|
59296
|
+
[currencySymbol]="'$'"
|
|
59297
|
+
[height]="'108px'"
|
|
59298
|
+
/>
|
|
59299
|
+
} @else {
|
|
59300
|
+
<div class="h-64 flex items-center justify-center">
|
|
59301
|
+
<p [ngClass]="noDataClasses()" class="text-sm">
|
|
59302
|
+
No revenue data available
|
|
59303
|
+
</p>
|
|
59304
|
+
</div>
|
|
59305
|
+
}
|
|
59306
|
+
</div>
|
|
59307
|
+
</div>
|
|
59308
|
+
</div>
|
|
59309
|
+
</div>
|
|
59310
|
+
</div>
|
|
59311
|
+
|
|
59312
|
+
<div class="calculated-card-enter order-first lg:order-last" [class.calculated-card-enter-active]="calculatedRevenue() > 0">
|
|
59313
|
+
<div class="calculated-card-content">
|
|
59314
|
+
@if (calculatedRevenue() > 0) {
|
|
59315
|
+
<div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2"
|
|
59316
|
+
[class.h-full]="calculationState() !== 'results' || detailsExpanded()">
|
|
59317
|
+
<div>
|
|
59318
|
+
<div class="flex items-center justify-between">
|
|
59319
|
+
<div>
|
|
59320
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59321
|
+
{{ currentYear() }} Revenue Target
|
|
59322
|
+
</p>
|
|
59323
|
+
<p [ngClass]="calculatedValueClasses()" class="font-bold transition-all duration-300 text-lg"
|
|
59324
|
+
[class.lg:text-3xl]="calculationState() !== 'results' || detailsExpanded()">
|
|
59325
|
+
@if (calculationState() === 'results' && targets() === undefined && submittedAbsoluteInput() !== null) {
|
|
59326
|
+
> {{ formatCurrency(submittedAbsoluteInput()!) }}
|
|
59327
|
+
} @else {
|
|
59328
|
+
{{ formatCurrency(displayedTargetRevenue()) }}
|
|
59329
|
+
}
|
|
59330
|
+
</p>
|
|
59331
|
+
</div>
|
|
59332
|
+
@if (calculationState() === 'results' && targets() === undefined) {
|
|
59333
|
+
<button
|
|
59334
|
+
(click)="handleAdjustTarget(); $event.stopPropagation()"
|
|
59335
|
+
[ngClass]="secondaryButtonClasses()"
|
|
59336
|
+
class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
|
|
59337
|
+
Adjust Revenue Target
|
|
59338
|
+
</button>
|
|
59339
|
+
}
|
|
59340
|
+
</div>
|
|
59341
|
+
|
|
59342
|
+
<div class="details-collapse" [class.details-collapse-expanded]="calculationState() !== 'results' || detailsExpanded()">
|
|
59343
|
+
<div class="details-collapse-content">
|
|
59344
|
+
<div class="relative pt-6 mt-6">
|
|
59345
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
59346
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59347
|
+
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
59348
|
+
vs. {{ priorYear() }}
|
|
59349
|
+
</span>
|
|
59350
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59351
|
+
</div>
|
|
59352
|
+
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
59353
|
+
<div>
|
|
59354
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59355
|
+
Increase Amount
|
|
59356
|
+
</p>
|
|
59357
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59358
|
+
@if (isTargetValid()) {
|
|
59359
|
+
{{ formatCurrency(animatedIncreaseAmount()) }}
|
|
59360
|
+
} @else {
|
|
59361
|
+
--
|
|
59362
|
+
}
|
|
59363
|
+
</p>
|
|
59364
|
+
</div>
|
|
59365
|
+
<div>
|
|
59366
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59367
|
+
% Growth
|
|
59368
|
+
</p>
|
|
59369
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59370
|
+
@if (isTargetValid()) {
|
|
59371
|
+
+{{ formatPercentage(animatedPercentageGrowth(), 1) }}
|
|
59372
|
+
} @else {
|
|
59373
|
+
--
|
|
59374
|
+
}
|
|
59375
|
+
</p>
|
|
59376
|
+
</div>
|
|
59377
|
+
</div>
|
|
59378
|
+
</div>
|
|
59379
|
+
|
|
59380
|
+
@if (currentPaceProjection() > 0) {
|
|
59381
|
+
<div class="relative pt-6 mt-6">
|
|
59382
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
59383
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59384
|
+
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
59385
|
+
{{ currentYear() }} YTD Gap
|
|
59386
|
+
</span>
|
|
59387
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59388
|
+
</div>
|
|
59389
|
+
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
59390
|
+
<div>
|
|
59391
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59392
|
+
Gap to Close
|
|
59393
|
+
</p>
|
|
59394
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59395
|
+
@if (isTargetValid()) {
|
|
59396
|
+
{{ formatCurrency(animatedGapAmount()) }}
|
|
59397
|
+
} @else {
|
|
59398
|
+
--
|
|
59399
|
+
}
|
|
59400
|
+
</p>
|
|
59401
|
+
</div>
|
|
59402
|
+
<div>
|
|
59403
|
+
<div class="flex items-center gap-1 mb-1">
|
|
59404
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59405
|
+
Additional Growth Needed
|
|
59406
|
+
</p>
|
|
59407
|
+
<button
|
|
59408
|
+
type="button"
|
|
59409
|
+
[ngClass]="infoIconClasses()"
|
|
59410
|
+
class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
|
|
59411
|
+
[libSymphiqTooltip]="additionalGrowthTooltip"
|
|
59412
|
+
tooltipType="markdown"
|
|
59413
|
+
tooltipPosition="top"
|
|
59414
|
+
(click)="$event.stopPropagation()">
|
|
59415
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59416
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
59417
|
+
</svg>
|
|
59418
|
+
</button>
|
|
59419
|
+
</div>
|
|
59420
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59421
|
+
@if (isTargetValid()) {
|
|
59422
|
+
{{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(animatedGapPercentage(), 1) }}
|
|
59423
|
+
} @else {
|
|
59424
|
+
--
|
|
59425
|
+
}
|
|
59426
|
+
</p>
|
|
59427
|
+
</div>
|
|
59428
|
+
</div>
|
|
59429
|
+
</div>
|
|
59430
|
+
}
|
|
59431
|
+
|
|
59432
|
+
</div>
|
|
59433
|
+
</div>
|
|
59434
|
+
</div>
|
|
59435
|
+
</div>
|
|
59436
|
+
}
|
|
59437
|
+
</div>
|
|
59438
|
+
</div>
|
|
59439
|
+
</div>
|
|
59440
|
+
|
|
59441
|
+
@if (calculationState() !== 'results') {
|
|
59442
|
+
<div class="w-full">
|
|
59443
|
+
<p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
|
|
59444
|
+
Year-over-Year Revenue Trend
|
|
59445
|
+
</p>
|
|
59446
|
+
<div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
|
|
59447
|
+
@if (revenueChartData()) {
|
|
59448
|
+
<symphiq-area-chart
|
|
59449
|
+
[chart]="revenueChartData()!"
|
|
59450
|
+
[showAxisLabels]="true"
|
|
59451
|
+
[viewMode]="viewMode()"
|
|
59452
|
+
[currencySymbol]="'$'"
|
|
59453
|
+
[height]="'320px'"
|
|
59454
|
+
/>
|
|
59455
|
+
} @else {
|
|
59456
|
+
<div class="h-64 flex items-center justify-center">
|
|
59457
|
+
<p [ngClass]="noDataClasses()" class="text-sm">
|
|
59458
|
+
No revenue data available
|
|
59459
|
+
</p>
|
|
59460
|
+
</div>
|
|
59461
|
+
}
|
|
59462
|
+
</div>
|
|
59463
|
+
</div>
|
|
59464
|
+
}
|
|
59465
|
+
</div>
|
|
59466
|
+
</div>
|
|
59467
|
+
|
|
59468
|
+
<div class="metrics-section-enter" [class.metrics-section-enter-active]="showMetricsVisualization()">
|
|
59469
|
+
<div class="metrics-section-content">
|
|
59470
|
+
@if (showMetricsVisualization()) {
|
|
59471
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
|
|
59472
|
+
<div class="mb-6">
|
|
59473
|
+
<h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
|
|
59474
|
+
Contributing Metrics
|
|
59475
|
+
</h2>
|
|
59476
|
+
<p [ngClass]="sectionDescriptionClasses()" class="text-sm">
|
|
59477
|
+
@if (targets() === undefined && submittedAbsoluteInput() !== null) {
|
|
59478
|
+
To achieve your revenue target of over {{ formatCurrency(submittedAbsoluteInput()!) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
|
|
59479
|
+
} @else {
|
|
59480
|
+
To achieve your revenue target of {{ formatCurrency(displayedTargetRevenue()) }}, the following metrics need to improve by these amounts. These improvements compound through your funnel to drive revenue growth.
|
|
59481
|
+
}
|
|
59482
|
+
</p>
|
|
59483
|
+
</div>
|
|
59484
|
+
|
|
59485
|
+
<symphiq-funnel-metrics-visualization
|
|
59486
|
+
[viewMode]="viewMode()"
|
|
59487
|
+
[calculations]="displayedMetricCalculations()"
|
|
59488
|
+
[pacingMetrics]="pacingMetrics()"
|
|
59489
|
+
(viewStageReport)="openMetricReport($event)"
|
|
59490
|
+
(viewRelatedMetricReport)="openMetricReport($event)"
|
|
59491
|
+
/>
|
|
59492
|
+
</div>
|
|
59493
|
+
}
|
|
59494
|
+
</div>
|
|
59495
|
+
</div>
|
|
59496
|
+
|
|
59497
|
+
<symphiq-sticky-submit-bar
|
|
59498
|
+
[viewMode]="viewMode()"
|
|
59499
|
+
[isValid]="isValid()"
|
|
59500
|
+
[isSubmitting]="isCalculating()"
|
|
59501
|
+
[validationMessage]="validationMessage()"
|
|
59502
|
+
[buttonText]="submitButtonText()"
|
|
59503
|
+
[showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
|
|
59504
|
+
(submitClick)="handleSubmitClick()"
|
|
59505
|
+
(cancelClick)="handleCancel()"
|
|
59506
|
+
/>
|
|
59507
|
+
|
|
59508
|
+
<!-- Metric Report Modal -->
|
|
59509
|
+
<symphiq-metric-report-modal
|
|
59510
|
+
[viewMode]="viewMode()"
|
|
59511
|
+
[metricEnum]="selectedMetricEnum()"
|
|
59512
|
+
[metricData]="selectedMetricData()"
|
|
59513
|
+
[contributingMetrics]="selectedContributingMetrics()"
|
|
59514
|
+
[pacingMetrics]="pacingMetrics()"
|
|
59515
|
+
[isOpen]="isMetricReportOpen()"
|
|
59516
|
+
(closed)="closeMetricReport()"
|
|
59517
|
+
/>
|
|
59518
|
+
</div>
|
|
57960
59519
|
`, styles: [".calculated-card-enter{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease-out}.calculated-card-enter-active{grid-template-rows:1fr}.calculated-card-content{overflow:hidden}.form-area-collapse{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.form-area-collapse-hidden{grid-template-rows:0fr}.form-area-content{overflow:hidden}.chart-section-collapse{display:grid;grid-template-rows:1fr;transition:grid-template-rows .4s ease-out}.chart-section-collapse-hidden{grid-template-rows:0fr}.chart-section-content{overflow:hidden}.chart-in-column{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.chart-in-column-active{grid-template-rows:1fr}.chart-in-column-content{overflow:hidden}.metrics-section-enter{display:grid;grid-template-rows:0fr;transition:grid-template-rows .5s ease-out}.metrics-section-enter-active{grid-template-rows:1fr}.metrics-section-content{overflow:hidden}.details-collapse{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease-out}.details-collapse-expanded{grid-template-rows:1fr}.details-collapse-content{overflow:hidden}.chevron-rotate{transition:transform .3s ease-out}.chevron-rotate-expanded{transform:rotate(180deg)}\n"] }]
|
|
57961
59520
|
}], () => [], { absoluteInputRef: [{
|
|
57962
59521
|
type: ViewChild,
|
|
@@ -57965,7 +59524,7 @@ class InitialTargetSettingComponent {
|
|
|
57965
59524
|
type: ViewChild,
|
|
57966
59525
|
args: ['percentageInputRef']
|
|
57967
59526
|
}], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], funnelMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelMetrics", required: false }] }], mainUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainUiData", required: false }] }], trendUiData: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendUiData", required: false }] }], shopId: [{ type: i0.Input, args: [{ isSignal: true, alias: "shopId", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }], dataResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataResults", required: false }] }], reverseCalculationResponse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverseCalculationResponse", required: false }] }], targets: [{ type: i0.Input, args: [{ isSignal: true, alias: "targets", required: false }] }], targetsCreated: [{ type: i0.Output, args: ["targetsCreated"] }], calculateRevenueRequest: [{ type: i0.Output, args: ["calculateRevenueRequest"] }] }); })();
|
|
57968
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber:
|
|
59527
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 535 }); })();
|
|
57969
59528
|
|
|
57970
59529
|
function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
57971
59530
|
i0.ɵɵelement(0, "div", 5);
|
|
@@ -58101,7 +59660,7 @@ class IndeterminateSpinnerComponent {
|
|
|
58101
59660
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] }); })();
|
|
58102
59661
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(IndeterminateSpinnerComponent, { className: "IndeterminateSpinnerComponent", filePath: "lib/components/shared/indeterminate-spinner.component.ts", lineNumber: 94 }); })();
|
|
58103
59662
|
|
|
58104
|
-
const _c0$
|
|
59663
|
+
const _c0$p = () => [];
|
|
58105
59664
|
function SymphiqRevenueCalculatorDashboardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
58106
59665
|
i0.ɵɵelementStart(0, "div", 12);
|
|
58107
59666
|
i0.ɵɵelement(1, "symphiq-indeterminate-spinner", 13);
|
|
@@ -58145,7 +59704,7 @@ function SymphiqRevenueCalculatorDashboardComponent_Conditional_25_Template(rf,
|
|
|
58145
59704
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
58146
59705
|
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("dataLoadStatus", ctx_r0.dataLoadStatus() ?? ctx_r0.ShopDataLoadStatusEnum.NOT_LOADED)("hasTargets", false);
|
|
58147
59706
|
i0.ɵɵadvance(2);
|
|
58148
|
-
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(12, _c0$
|
|
59707
|
+
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(12, _c0$p))("mainUiData", ctx_r0.mainUiData())("trendUiData", ctx_r0.trendUiData())("shopId", ctx_r0.shopId())("pacingMetrics", ctx_r0.pacingResponse())("dataResults", ctx_r0.dataResults())("reverseCalculationResponse", ctx_r0.reverseCalculationResponse())("targets", ctx_r0.targets());
|
|
58149
59708
|
} }
|
|
58150
59709
|
function SymphiqRevenueCalculatorDashboardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
58151
59710
|
i0.ɵɵelement(0, "symphiq-revenue-calculator-welcome-banner", 14);
|
|
@@ -58950,7 +60509,7 @@ class HierarchyDisplayComponent {
|
|
|
58950
60509
|
}], null, { hierarchyData: [{ type: i0.Input, args: [{ isSignal: true, alias: "hierarchyData", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
58951
60510
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HierarchyDisplayComponent, { className: "HierarchyDisplayComponent", filePath: "lib/components/business-analysis-dashboard/hierarchy-display.component.ts", lineNumber: 119 }); })();
|
|
58952
60511
|
|
|
58953
|
-
const _c0$
|
|
60512
|
+
const _c0$o = a0 => ({ name: "chart-bar", source: a0 });
|
|
58954
60513
|
const _c1$a = a0 => ({ name: "light-bulb", source: a0 });
|
|
58955
60514
|
function CompetitiveBenchmarkCardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
58956
60515
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -59146,7 +60705,7 @@ class CompetitiveBenchmarkCardComponent {
|
|
|
59146
60705
|
i0.ɵɵadvance();
|
|
59147
60706
|
i0.ɵɵproperty("ngClass", ctx.getSectionClasses());
|
|
59148
60707
|
i0.ɵɵadvance(2);
|
|
59149
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$
|
|
60708
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$o, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getSectionIconClasses());
|
|
59150
60709
|
i0.ɵɵadvance();
|
|
59151
60710
|
i0.ɵɵproperty("ngClass", ctx.getSectionTitleClasses());
|
|
59152
60711
|
i0.ɵɵadvance(2);
|
|
@@ -59993,7 +61552,7 @@ class SearchButtonComponent {
|
|
|
59993
61552
|
}], null, { isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], minimized: [{ type: i0.Input, args: [{ isSignal: true, alias: "minimized", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], searchClick: [{ type: i0.Output, args: ["searchClick"] }] }); })();
|
|
59994
61553
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchButtonComponent, { className: "SearchButtonComponent", filePath: "lib/components/shared/search-button.component.ts", lineNumber: 30 }); })();
|
|
59995
61554
|
|
|
59996
|
-
const _c0$
|
|
61555
|
+
const _c0$n = ["searchInput"];
|
|
59997
61556
|
const _forTrack0$h = ($index, $item) => $item.id;
|
|
59998
61557
|
function SearchModalComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
59999
61558
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
@@ -60358,7 +61917,7 @@ class SearchModalComponent {
|
|
|
60358
61917
|
}
|
|
60359
61918
|
static { this.ɵfac = function SearchModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchModalComponent)(); }; }
|
|
60360
61919
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchModalComponent, selectors: [["symphiq-search-modal"]], viewQuery: function SearchModalComponent_Query(rf, ctx) { if (rf & 1) {
|
|
60361
|
-
i0.ɵɵviewQuery(_c0$
|
|
61920
|
+
i0.ɵɵviewQuery(_c0$n, 5);
|
|
60362
61921
|
} if (rf & 2) {
|
|
60363
61922
|
let _t;
|
|
60364
61923
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);
|
|
@@ -61255,7 +62814,7 @@ class SimplifiedRecommendationCardComponent {
|
|
|
61255
62814
|
}], null, { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], animationIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "animationIndex", required: false }] }], viewMoreClick: [{ type: i0.Output, args: ["viewMoreClick"] }] }); })();
|
|
61256
62815
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SimplifiedRecommendationCardComponent, { className: "SimplifiedRecommendationCardComponent", filePath: "lib/components/business-analysis-dashboard/simplified-recommendation-card.component.ts", lineNumber: 121 }); })();
|
|
61257
62816
|
|
|
61258
|
-
const _c0$
|
|
62817
|
+
const _c0$m = () => [0, 1, 2];
|
|
61259
62818
|
const _forTrack0$g = ($index, $item) => $item.id;
|
|
61260
62819
|
function RecommendationsTiledGridComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
61261
62820
|
i0.ɵɵelementStart(0, "div", 9);
|
|
@@ -61325,7 +62884,7 @@ function RecommendationsTiledGridComponent_Conditional_15_Template(rf, ctx) { if
|
|
|
61325
62884
|
i0.ɵɵelementEnd();
|
|
61326
62885
|
} if (rf & 2) {
|
|
61327
62886
|
i0.ɵɵadvance();
|
|
61328
|
-
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$
|
|
62887
|
+
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$m));
|
|
61329
62888
|
} }
|
|
61330
62889
|
function RecommendationsTiledGridComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
61331
62890
|
i0.ɵɵelementStart(0, "div", 12)(1, "div", 27);
|
|
@@ -62243,7 +63802,7 @@ class ContentGenerationProgressWithConfettiComponent {
|
|
|
62243
63802
|
}], () => [], { itemStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatus", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], confettiIntensity: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiIntensity", required: false }] }], enableConfetti: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableConfetti", required: false }] }], confettiDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiDelay", required: false }] }] }); })();
|
|
62244
63803
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressWithConfettiComponent, { className: "ContentGenerationProgressWithConfettiComponent", filePath: "lib/components/shared/content-generation-progress-with-confetti.component.ts", lineNumber: 29 }); })();
|
|
62245
63804
|
|
|
62246
|
-
const _c0$
|
|
63805
|
+
const _c0$l = () => [];
|
|
62247
63806
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
62248
63807
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
62249
63808
|
i0.ɵɵelementStart(0, "div", 8)(1, "symphiq-search-button", 19);
|
|
@@ -62377,7 +63936,7 @@ function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_
|
|
|
62377
63936
|
const ɵ$index_108_r7 = i0.ɵɵnextContext().$index;
|
|
62378
63937
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
62379
63938
|
i0.ɵɵadvance();
|
|
62380
|
-
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$
|
|
63939
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$l));
|
|
62381
63940
|
} }
|
|
62382
63941
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
62383
63942
|
i0.ɵɵelement(0, "symphiq-profile-section", 34);
|
|
@@ -65053,7 +66612,7 @@ class FocusAreaHealthIndicatorComponent {
|
|
|
65053
66612
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], health: [{ type: i0.Input, args: [{ isSignal: true, alias: "health", required: false }] }] }); })();
|
|
65054
66613
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaHealthIndicatorComponent, { className: "FocusAreaHealthIndicatorComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-health-indicator.component.ts", lineNumber: 46 }); })();
|
|
65055
66614
|
|
|
65056
|
-
const _c0$
|
|
66615
|
+
const _c0$k = a0 => ({ name: "chevron-right", source: a0 });
|
|
65057
66616
|
const _forTrack0$e = ($index, $item) => $item.id;
|
|
65058
66617
|
function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
65059
66618
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -65071,7 +66630,7 @@ function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (r
|
|
|
65071
66630
|
i0.ɵɵadvance(2);
|
|
65072
66631
|
i0.ɵɵtextInterpolate(goal_r2.title);
|
|
65073
66632
|
i0.ɵɵadvance();
|
|
65074
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$
|
|
66633
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$k, ctx_r2.IconSourceEnum.HEROICONS));
|
|
65075
66634
|
} }
|
|
65076
66635
|
function RelatedGoalChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
65077
66636
|
i0.ɵɵelementStart(0, "div", 0);
|
|
@@ -65144,7 +66703,7 @@ class RelatedGoalChipsComponent {
|
|
|
65144
66703
|
}], null, { relatedGoalIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedGoalIds", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
65145
66704
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedGoalChipsComponent, { className: "RelatedGoalChipsComponent", filePath: "lib/components/profile-analysis-dashboard/shared/related-goal-chips.component.ts", lineNumber: 31 }); })();
|
|
65146
66705
|
|
|
65147
|
-
const _c0$
|
|
66706
|
+
const _c0$j = a0 => ({ name: "chevron-right", source: a0 });
|
|
65148
66707
|
const _c1$9 = a0 => ({ name: "chevron-down", source: a0 });
|
|
65149
66708
|
const _c2$7 = a0 => [a0];
|
|
65150
66709
|
function FocusAreaExecutiveSummaryComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -65473,7 +67032,7 @@ class FocusAreaExecutiveSummaryComponent {
|
|
|
65473
67032
|
i0.ɵɵadvance(2);
|
|
65474
67033
|
i0.ɵɵproperty("ngClass", ctx.getTopPrioritiesButtonTextClasses());
|
|
65475
67034
|
i0.ɵɵadvance(2);
|
|
65476
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$
|
|
67035
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$j, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getTopPrioritiesButtonTextClasses());
|
|
65477
67036
|
i0.ɵɵadvance();
|
|
65478
67037
|
i0.ɵɵproperty("ngClass", ctx.getQuickWinsStatCardClasses());
|
|
65479
67038
|
i0.ɵɵadvance();
|
|
@@ -65684,7 +67243,7 @@ class FocusAreaExecutiveSummaryComponent {
|
|
|
65684
67243
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], topPrioritiesClick: [{ type: i0.Output, args: ["topPrioritiesClick"] }], priorityDetailClick: [{ type: i0.Output, args: ["priorityDetailClick"] }] }); })();
|
|
65685
67244
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaExecutiveSummaryComponent, { className: "FocusAreaExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-executive-summary.component.ts", lineNumber: 195 }); })();
|
|
65686
67245
|
|
|
65687
|
-
const _c0$
|
|
67246
|
+
const _c0$i = a0 => ({ name: "chart-bar", source: a0 });
|
|
65688
67247
|
const _c1$8 = a0 => ({ name: "signal", source: a0 });
|
|
65689
67248
|
const _c2$6 = (a0, a1) => ({ name: a0, source: a1 });
|
|
65690
67249
|
const _c3$4 = a0 => ({ name: "flag", source: a0 });
|
|
@@ -66220,7 +67779,7 @@ class MetricExecutiveSummaryComponent {
|
|
|
66220
67779
|
i0.ɵɵadvance();
|
|
66221
67780
|
i0.ɵɵproperty("ngClass", ctx.bannerClasses());
|
|
66222
67781
|
i0.ɵɵadvance(5);
|
|
66223
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$
|
|
67782
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$i, ctx.iconSource))("size", "w-8 h-8")("ngClass", ctx.iconClasses());
|
|
66224
67783
|
i0.ɵɵadvance();
|
|
66225
67784
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
66226
67785
|
i0.ɵɵadvance();
|
|
@@ -66539,7 +68098,7 @@ class MetricExecutiveSummaryComponent {
|
|
|
66539
68098
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: true }] }], metricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricName", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], topPrioritiesClick: [{ type: i0.Output, args: ["topPrioritiesClick"] }], priorityDetailClick: [{ type: i0.Output, args: ["priorityDetailClick"] }] }); })();
|
|
66540
68099
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricExecutiveSummaryComponent, { className: "MetricExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/metric-executive-summary.component.ts", lineNumber: 287 }); })();
|
|
66541
68100
|
|
|
66542
|
-
const _c0$
|
|
68101
|
+
const _c0$h = a0 => ({ name: "chevron-right", source: a0 });
|
|
66543
68102
|
function GoalCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
66544
68103
|
i0.ɵɵelementStart(0, "span", 12);
|
|
66545
68104
|
i0.ɵɵtext(1);
|
|
@@ -66824,7 +68383,7 @@ function GoalCardComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
|
66824
68383
|
i0.ɵɵadvance();
|
|
66825
68384
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.goal().objectives.length, " ");
|
|
66826
68385
|
i0.ɵɵadvance();
|
|
66827
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$
|
|
68386
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$h, ctx_r0.IconSourceEnum.HEROICONS));
|
|
66828
68387
|
} }
|
|
66829
68388
|
function GoalCardComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
66830
68389
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
@@ -67446,7 +69005,7 @@ class GoalCardComponent {
|
|
|
67446
69005
|
}], () => [], { goal: [{ type: i0.Input, args: [{ isSignal: true, alias: "goal", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalIndex", required: false }] }], sectionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "sectionIndex", required: false }] }], isInModal: [{ type: i0.Input, args: [{ isSignal: true, alias: "isInModal", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }], businessProfile: [{ type: i0.Input, args: [{ isSignal: true, alias: "businessProfile", required: false }] }] }); })();
|
|
67447
69006
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalCardComponent, { className: "GoalCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/goal-card.component.ts", lineNumber: 239 }); })();
|
|
67448
69007
|
|
|
67449
|
-
const _c0$
|
|
69008
|
+
const _c0$g = a0 => ({ name: "link", source: a0 });
|
|
67450
69009
|
function CapabilityMatrixCardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
67451
69010
|
i0.ɵɵelementStart(0, "p", 4);
|
|
67452
69011
|
i0.ɵɵtext(1);
|
|
@@ -67509,7 +69068,7 @@ function CapabilityMatrixCardComponent_Conditional_29_Template(rf, ctx) { if (rf
|
|
|
67509
69068
|
} if (rf & 2) {
|
|
67510
69069
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
67511
69070
|
i0.ɵɵadvance(2);
|
|
67512
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
69071
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$g, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.relatedGoalsIconClasses());
|
|
67513
69072
|
i0.ɵɵadvance();
|
|
67514
69073
|
i0.ɵɵproperty("ngClass", ctx_r0.relatedGoalsTitleClasses());
|
|
67515
69074
|
i0.ɵɵadvance(2);
|
|
@@ -68428,7 +69987,7 @@ class CompetitiveComparisonCardComponent {
|
|
|
68428
69987
|
}], () => [], { comparison: [{ type: i0.Input, args: [{ isSignal: true, alias: "comparison", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
68429
69988
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveComparisonCardComponent, { className: "CompetitiveComparisonCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/competitive-comparison-card.component.ts", lineNumber: 125 }); })();
|
|
68430
69989
|
|
|
68431
|
-
const _c0$
|
|
69990
|
+
const _c0$f = a0 => ({ name: "chevron-right", source: a0 });
|
|
68432
69991
|
const _forTrack0$c = ($index, $item) => $item.id;
|
|
68433
69992
|
function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
68434
69993
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -68446,7 +70005,7 @@ function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (
|
|
|
68446
70005
|
i0.ɵɵadvance(2);
|
|
68447
70006
|
i0.ɵɵtextInterpolate(goal_r2.title);
|
|
68448
70007
|
i0.ɵɵadvance();
|
|
68449
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$
|
|
70008
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$f, ctx_r2.IconSourceEnum.HEROICONS));
|
|
68450
70009
|
} }
|
|
68451
70010
|
function PhaseTimelineCardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
68452
70011
|
i0.ɵɵelementStart(0, "div", 7)(1, "h6", 10);
|
|
@@ -68854,7 +70413,7 @@ class PhaseTimelineCardComponent {
|
|
|
68854
70413
|
}], () => [], { phase: [{ type: i0.Input, args: [{ isSignal: true, alias: "phase", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isLast: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLast", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }] }); })();
|
|
68855
70414
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PhaseTimelineCardComponent, { className: "PhaseTimelineCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/phase-timeline-card.component.ts", lineNumber: 123 }); })();
|
|
68856
70415
|
|
|
68857
|
-
const _c0$
|
|
70416
|
+
const _c0$e = a0 => ({ name: "chevron-right", source: a0 });
|
|
68858
70417
|
function OperationalCategoryCardComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
68859
70418
|
i0.ɵɵelementStart(0, "div", 13)(1, "div", 19)(2, "span", 20);
|
|
68860
70419
|
i0.ɵɵtext(3, "Industry Benchmark");
|
|
@@ -68900,7 +70459,7 @@ function OperationalCategoryCardComponent_Conditional_20_Template(rf, ctx) { if
|
|
|
68900
70459
|
i0.ɵɵadvance(4);
|
|
68901
70460
|
i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.strengths == null ? null : tmp_2_0.strengths.length, " Strength", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.strengths == null ? null : tmp_2_0.strengths.length) !== 1 ? "s" : "");
|
|
68902
70461
|
i0.ɵɵadvance();
|
|
68903
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70462
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68904
70463
|
} }
|
|
68905
70464
|
function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
68906
70465
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
@@ -68923,7 +70482,7 @@ function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if
|
|
|
68923
70482
|
i0.ɵɵadvance(4);
|
|
68924
70483
|
i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.gaps == null ? null : tmp_2_0.gaps.length, " Gap", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.gaps == null ? null : tmp_2_0.gaps.length) !== 1 ? "s" : "");
|
|
68925
70484
|
i0.ɵɵadvance();
|
|
68926
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70485
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68927
70486
|
} }
|
|
68928
70487
|
function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
68929
70488
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
@@ -68946,7 +70505,7 @@ function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if
|
|
|
68946
70505
|
i0.ɵɵadvance(4);
|
|
68947
70506
|
i0.ɵɵtextInterpolate2("", (tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.opportunities == null ? null : tmp_2_0.opportunities.length, " Opportunit", ((tmp_2_0 = ctx_r0.category()) == null ? null : tmp_2_0.opportunities == null ? null : tmp_2_0.opportunities.length) !== 1 ? "ies" : "y");
|
|
68948
70507
|
i0.ɵɵadvance();
|
|
68949
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70508
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68950
70509
|
} }
|
|
68951
70510
|
function OperationalCategoryCardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
68952
70511
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
@@ -69453,7 +71012,7 @@ class OperationalCategoryCardComponent {
|
|
|
69453
71012
|
}], () => [], { category: [{ type: i0.Input, args: [{ isSignal: true, alias: "category", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], categoryClick: [{ type: i0.Output, args: ["categoryClick"] }] }); })();
|
|
69454
71013
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OperationalCategoryCardComponent, { className: "OperationalCategoryCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/operational-category-card.component.ts", lineNumber: 164 }); })();
|
|
69455
71014
|
|
|
69456
|
-
const _c0$
|
|
71015
|
+
const _c0$d = a0 => ({ name: "arrow-trending-up", source: a0 });
|
|
69457
71016
|
const _c1$7 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
69458
71017
|
const _forTrack0$b = ($index, $item) => $item.questionId;
|
|
69459
71018
|
function KeyDriverCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -69587,7 +71146,7 @@ class KeyDriverCardComponent {
|
|
|
69587
71146
|
i0.ɵɵadvance(3);
|
|
69588
71147
|
i0.ɵɵproperty("ngClass", ctx.iconClasses());
|
|
69589
71148
|
i0.ɵɵadvance();
|
|
69590
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$
|
|
71149
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$d, ctx.iconSource));
|
|
69591
71150
|
i0.ɵɵadvance(2);
|
|
69592
71151
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
69593
71152
|
i0.ɵɵadvance();
|
|
@@ -69663,7 +71222,7 @@ class KeyDriverCardComponent {
|
|
|
69663
71222
|
}], null, { driver: [{ type: i0.Input, args: [{ isSignal: true, alias: "driver", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
69664
71223
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyDriverCardComponent, { className: "KeyDriverCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/key-driver-card.component.ts", lineNumber: 73 }); })();
|
|
69665
71224
|
|
|
69666
|
-
const _c0$
|
|
71225
|
+
const _c0$c = a0 => ({ name: "exclamation-triangle", source: a0 });
|
|
69667
71226
|
const _c1$6 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
69668
71227
|
const _forTrack0$a = ($index, $item) => $item.questionId;
|
|
69669
71228
|
function BottleneckCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -69819,7 +71378,7 @@ class BottleneckCardComponent {
|
|
|
69819
71378
|
i0.ɵɵadvance(3);
|
|
69820
71379
|
i0.ɵɵproperty("ngClass", ctx.iconClasses());
|
|
69821
71380
|
i0.ɵɵadvance();
|
|
69822
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$
|
|
71381
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$c, ctx.iconSource));
|
|
69823
71382
|
i0.ɵɵadvance(2);
|
|
69824
71383
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
69825
71384
|
i0.ɵɵadvance();
|
|
@@ -69890,7 +71449,7 @@ class BottleneckCardComponent {
|
|
|
69890
71449
|
}], null, { bottleneck: [{ type: i0.Input, args: [{ isSignal: true, alias: "bottleneck", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
69891
71450
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BottleneckCardComponent, { className: "BottleneckCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/bottleneck-card.component.ts", lineNumber: 104 }); })();
|
|
69892
71451
|
|
|
69893
|
-
const _c0$
|
|
71452
|
+
const _c0$b = a0 => ({ name: "arrow-right", source: a0 });
|
|
69894
71453
|
const _c1$5 = a0 => ({ name: "arrow-left", source: a0 });
|
|
69895
71454
|
const _c2$5 = a0 => ({ name: "arrows-right-left", source: a0 });
|
|
69896
71455
|
const _c3$3 = a0 => ({ name: "scale", source: a0 });
|
|
@@ -69922,7 +71481,7 @@ function MetricRelationshipsCardComponent_Conditional_1_Template(rf, ctx) { if (
|
|
|
69922
71481
|
i0.ɵɵadvance(2);
|
|
69923
71482
|
i0.ɵɵproperty("ngClass", ctx_r1.getIconClasses("influences"));
|
|
69924
71483
|
i0.ɵɵadvance();
|
|
69925
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
71484
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$b, ctx_r1.iconSource));
|
|
69926
71485
|
i0.ɵɵadvance();
|
|
69927
71486
|
i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
|
|
69928
71487
|
i0.ɵɵadvance(3);
|
|
@@ -70192,7 +71751,7 @@ class MetricRelationshipsCardComponent {
|
|
|
70192
71751
|
}], null, { relationships: [{ type: i0.Input, args: [{ isSignal: true, alias: "relationships", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
70193
71752
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricRelationshipsCardComponent, { className: "MetricRelationshipsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/metric-relationships-card.component.ts", lineNumber: 105 }); })();
|
|
70194
71753
|
|
|
70195
|
-
const _c0$
|
|
71754
|
+
const _c0$a = a0 => ({ name: "link", source: a0 });
|
|
70196
71755
|
function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
70197
71756
|
i0.ɵɵelementStart(0, "div", 9);
|
|
70198
71757
|
i0.ɵɵelement(1, "symphiq-icon", 10);
|
|
@@ -70203,7 +71762,7 @@ function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf &
|
|
|
70203
71762
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
70204
71763
|
i0.ɵɵproperty("ngClass", ctx_r0.borderClasses());
|
|
70205
71764
|
i0.ɵɵadvance();
|
|
70206
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
71765
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$a, ctx_r0.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r0.sharedGoalsIconClasses());
|
|
70207
71766
|
i0.ɵɵadvance();
|
|
70208
71767
|
i0.ɵɵproperty("ngClass", ctx_r0.sharedGoalsTextClasses());
|
|
70209
71768
|
i0.ɵɵadvance();
|
|
@@ -70872,7 +72431,7 @@ class RelatedMetricsListComponent {
|
|
|
70872
72431
|
}], null, { relatedMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "relatedMetrics", required: true }] }], currentMetricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentMetricName", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], metricClicked: [{ type: i0.Output, args: ["metricClicked"] }] }); })();
|
|
70873
72432
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedMetricsListComponent, { className: "RelatedMetricsListComponent", filePath: "lib/components/profile-analysis-dashboard/cards/related-metrics-list.component.ts", lineNumber: 170 }); })();
|
|
70874
72433
|
|
|
70875
|
-
const _c0$
|
|
72434
|
+
const _c0$9 = (a0, a1) => ({ name: a0, source: a1 });
|
|
70876
72435
|
const _c1$4 = a0 => ({ name: "signal", source: a0 });
|
|
70877
72436
|
const _c2$4 = a0 => ({ name: "calendar", source: a0 });
|
|
70878
72437
|
const _c3$2 = a0 => ({ name: "flag", source: a0 });
|
|
@@ -71082,7 +72641,7 @@ class PerformanceMetricsCardComponent {
|
|
|
71082
72641
|
i0.ɵɵadvance();
|
|
71083
72642
|
i0.ɵɵproperty("ngClass", ctx.trendBadgeClasses());
|
|
71084
72643
|
i0.ɵɵadvance();
|
|
71085
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$
|
|
72644
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$9, ctx.trendIcon(), ctx.iconSource));
|
|
71086
72645
|
i0.ɵɵadvance();
|
|
71087
72646
|
i0.ɵɵtextInterpolate1(" ", ctx.metrics().trendDirection, " ");
|
|
71088
72647
|
i0.ɵɵadvance(2);
|
|
@@ -71230,7 +72789,7 @@ class PerformanceMetricsCardComponent {
|
|
|
71230
72789
|
}], () => [], { performanceMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "performanceMetrics", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] }); })();
|
|
71231
72790
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceMetricsCardComponent, { className: "PerformanceMetricsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-metrics-card.component.ts", lineNumber: 144 }); })();
|
|
71232
72791
|
|
|
71233
|
-
const _c0$
|
|
72792
|
+
const _c0$8 = a0 => ({ name: "funnel", source: a0 });
|
|
71234
72793
|
const _c1$3 = a0 => ({ name: "chart-bar-square", source: a0 });
|
|
71235
72794
|
const _c2$3 = a0 => ({ name: "chevron-right", source: a0 });
|
|
71236
72795
|
const _c3$1 = a0 => ({ name: "arrow-left", source: a0 });
|
|
@@ -71421,7 +72980,7 @@ class FunnelContextCardComponent {
|
|
|
71421
72980
|
} if (rf & 2) {
|
|
71422
72981
|
i0.ɵɵproperty("ngClass", ctx.cardClasses());
|
|
71423
72982
|
i0.ɵɵadvance(2);
|
|
71424
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$
|
|
72983
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$8, ctx.iconSource))("ngClass", ctx.iconClasses());
|
|
71425
72984
|
i0.ɵɵadvance();
|
|
71426
72985
|
i0.ɵɵproperty("ngClass", ctx.headerClasses());
|
|
71427
72986
|
i0.ɵɵadvance(3);
|
|
@@ -71557,7 +73116,7 @@ class FunnelContextCardComponent {
|
|
|
71557
73116
|
}], () => [], { funnelContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelContext", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], metricClick: [{ type: i0.Output, args: ["metricClick"] }] }); })();
|
|
71558
73117
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelContextCardComponent, { className: "FunnelContextCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/funnel-context-card.component.ts", lineNumber: 125 }); })();
|
|
71559
73118
|
|
|
71560
|
-
const _c0$
|
|
73119
|
+
const _c0$7 = (a0, a1) => ({ name: a0, source: a1 });
|
|
71561
73120
|
const _c1$2 = a0 => ({ name: "target", source: a0 });
|
|
71562
73121
|
const _c2$2 = a0 => ({ name: "star", source: a0 });
|
|
71563
73122
|
class MetricComparisonStatsComponent {
|
|
@@ -71768,7 +73327,7 @@ class MetricComparisonStatsComponent {
|
|
|
71768
73327
|
i0.ɵɵadvance();
|
|
71769
73328
|
i0.ɵɵproperty("ngClass", ctx.statCardClasses());
|
|
71770
73329
|
i0.ɵɵadvance(2);
|
|
71771
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$
|
|
73330
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$7, ctx.yoyIcon(), ctx.iconSource))("ngClass", ctx.yoyIconClasses());
|
|
71772
73331
|
i0.ɵɵadvance();
|
|
71773
73332
|
i0.ɵɵproperty("ngClass", ctx.labelClasses());
|
|
71774
73333
|
i0.ɵɵadvance(2);
|
|
@@ -72000,7 +73559,7 @@ class PerformanceOverviewContainerComponent {
|
|
|
72000
73559
|
}], () => [], { performanceOverviewData: [{ type: i0.Input, args: [{ isSignal: true, alias: "performanceOverviewData", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], metricClick: [{ type: i0.Output, args: ["metricClick"] }] }); })();
|
|
72001
73560
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceOverviewContainerComponent, { className: "PerformanceOverviewContainerComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-overview-container.component.ts", lineNumber: 58 }); })();
|
|
72002
73561
|
|
|
72003
|
-
const _c0$
|
|
73562
|
+
const _c0$6 = a0 => ({ name: "chevron-right", source: a0 });
|
|
72004
73563
|
const _c1$1 = a0 => ({ name: "chevron-down", source: a0 });
|
|
72005
73564
|
const _c2$1 = a0 => ({ name: "clock", source: a0 });
|
|
72006
73565
|
const _c3 = a0 => [a0];
|
|
@@ -72203,7 +73762,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
|
|
|
72203
73762
|
i0.ɵɵadvance(2);
|
|
72204
73763
|
i0.ɵɵproperty("ngClass", ctx_r1.keyStrengthsButtonClasses());
|
|
72205
73764
|
i0.ɵɵadvance(2);
|
|
72206
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$
|
|
73765
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.keyStrengthsButtonClasses());
|
|
72207
73766
|
i0.ɵɵadvance();
|
|
72208
73767
|
i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsCardClasses());
|
|
72209
73768
|
i0.ɵɵadvance();
|
|
@@ -72215,7 +73774,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
|
|
|
72215
73774
|
i0.ɵɵadvance(2);
|
|
72216
73775
|
i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsButtonClasses());
|
|
72217
73776
|
i0.ɵɵadvance(2);
|
|
72218
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$
|
|
73777
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.criticalGapsButtonClasses());
|
|
72219
73778
|
i0.ɵɵadvance();
|
|
72220
73779
|
i0.ɵɵproperty("ngClass", ctx_r1.quickWinsCardClasses());
|
|
72221
73780
|
i0.ɵɵadvance();
|
|
@@ -72294,7 +73853,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72294
73853
|
i0.ɵɵadvance(2);
|
|
72295
73854
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
|
|
72296
73855
|
i0.ɵɵadvance(2);
|
|
72297
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$
|
|
73856
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
|
|
72298
73857
|
i0.ɵɵadvance();
|
|
72299
73858
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsStatCardClasses());
|
|
72300
73859
|
i0.ɵɵadvance();
|
|
@@ -72306,7 +73865,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72306
73865
|
i0.ɵɵadvance(2);
|
|
72307
73866
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsButtonClasses());
|
|
72308
73867
|
i0.ɵɵadvance(2);
|
|
72309
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$
|
|
73868
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaGapsButtonClasses());
|
|
72310
73869
|
i0.ɵɵadvance();
|
|
72311
73870
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesStatCardClasses());
|
|
72312
73871
|
i0.ɵɵadvance();
|
|
@@ -72318,7 +73877,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72318
73877
|
i0.ɵɵadvance(2);
|
|
72319
73878
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
|
|
72320
73879
|
i0.ɵɵadvance(2);
|
|
72321
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$
|
|
73880
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
|
|
72322
73881
|
} }
|
|
72323
73882
|
function ProfileSectionContentComponent_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
72324
73883
|
i0.ɵɵelementStart(0, "div");
|
|
@@ -72665,7 +74224,7 @@ function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Condi
|
|
|
72665
74224
|
i0.ɵɵadvance(2);
|
|
72666
74225
|
i0.ɵɵtextInterpolate1("", ctx_r1.getTacticalRecRelatedMetricsCount(recommendation_r19), " Related Metrics");
|
|
72667
74226
|
i0.ɵɵadvance();
|
|
72668
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
74227
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS));
|
|
72669
74228
|
} }
|
|
72670
74229
|
function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
72671
74230
|
i0.ɵɵelementStart(0, "div", 16)(1, "div", 69)(2, "h4", 75);
|
|
@@ -78080,7 +79639,7 @@ class StrategyRecommendationsModalContentComponent {
|
|
|
78080
79639
|
}], null, { strategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "strategy", required: false }] }], objectiveTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "objectiveTitle", required: false }] }], goalTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalTitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], allBusinessInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allBusinessInsights", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
|
|
78081
79640
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StrategyRecommendationsModalContentComponent, { className: "StrategyRecommendationsModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/strategy-recommendations-modal-content.component.ts", lineNumber: 489 }); })();
|
|
78082
79641
|
|
|
78083
|
-
const _c0$
|
|
79642
|
+
const _c0$5 = a0 => ({ name: "chevron-right", source: a0 });
|
|
78084
79643
|
function CategoryDetailModalContentComponent_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
78085
79644
|
i0.ɵɵelementStart(0, "div")(1, "span", 19);
|
|
78086
79645
|
i0.ɵɵtext(2, "Industry:");
|
|
@@ -78193,7 +79752,7 @@ function CategoryDetailModalContentComponent_Conditional_17_For_7_Template(rf, c
|
|
|
78193
79752
|
i0.ɵɵadvance();
|
|
78194
79753
|
i0.ɵɵtextInterpolate1(" ", strength_r3 == null ? null : strength_r3.description, " ");
|
|
78195
79754
|
i0.ɵɵadvance();
|
|
78196
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$
|
|
79755
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78197
79756
|
} }
|
|
78198
79757
|
function CategoryDetailModalContentComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
78199
79758
|
i0.ɵɵelementStart(0, "div", 27)(1, "h4", 15);
|
|
@@ -78260,7 +79819,7 @@ function CategoryDetailModalContentComponent_Conditional_18_For_7_Template(rf, c
|
|
|
78260
79819
|
i0.ɵɵadvance();
|
|
78261
79820
|
i0.ɵɵtextInterpolate1(" ", gap_r5 == null ? null : gap_r5.description, " ");
|
|
78262
79821
|
i0.ɵɵadvance();
|
|
78263
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$
|
|
79822
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78264
79823
|
} }
|
|
78265
79824
|
function CategoryDetailModalContentComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
78266
79825
|
i0.ɵɵelementStart(0, "div", 38)(1, "h4", 15);
|
|
@@ -78327,7 +79886,7 @@ function CategoryDetailModalContentComponent_Conditional_19_For_7_Template(rf, c
|
|
|
78327
79886
|
i0.ɵɵadvance();
|
|
78328
79887
|
i0.ɵɵconditional((opportunity_r7 == null ? null : opportunity_r7.potentialImpact) ? 7 : -1);
|
|
78329
79888
|
i0.ɵɵadvance();
|
|
78330
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$
|
|
79889
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78331
79890
|
} }
|
|
78332
79891
|
function CategoryDetailModalContentComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
78333
79892
|
i0.ɵɵelementStart(0, "div", 44)(1, "h4", 15);
|
|
@@ -79209,7 +80768,7 @@ class StrengthDetailModalContentComponent {
|
|
|
79209
80768
|
}], null, { strength: [{ type: i0.Input, args: [{ isSignal: true, alias: "strength", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allFunnelStrengths: [{ type: i0.Input, args: [{ isSignal: true, alias: "allFunnelStrengths", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
|
|
79210
80769
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StrengthDetailModalContentComponent, { className: "StrengthDetailModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/strength-detail-modal-content.component.ts", lineNumber: 124 }); })();
|
|
79211
80770
|
|
|
79212
|
-
const _c0$
|
|
80771
|
+
const _c0$4 = () => [];
|
|
79213
80772
|
function GapDetailModalContentComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
79214
80773
|
i0.ɵɵelementStart(0, "span", 9);
|
|
79215
80774
|
i0.ɵɵtext(1);
|
|
@@ -79322,7 +80881,7 @@ function GapDetailModalContentComponent_Conditional_16_Template(rf, ctx) { if (r
|
|
|
79322
80881
|
i0.ɵɵclassMap(ctx_r0.isDark() ? "border-slate-700" : "border-slate-200");
|
|
79323
80882
|
i0.ɵɵproperty("ngClass", ctx_r0.sectionTitleClasses());
|
|
79324
80883
|
i0.ɵɵadvance(2);
|
|
79325
|
-
i0.ɵɵproperty("relatedGoalIds", ((tmp_4_0 = ctx_r0.gap()) == null ? null : tmp_4_0.linkedGoalIds) ?? i0.ɵɵpureFunction0(7, _c0$
|
|
80884
|
+
i0.ɵɵproperty("relatedGoalIds", ((tmp_4_0 = ctx_r0.gap()) == null ? null : tmp_4_0.linkedGoalIds) ?? i0.ɵɵpureFunction0(7, _c0$4))("allGoals", ctx_r0.allGoals())("viewMode", ctx_r0.viewMode());
|
|
79326
80885
|
} }
|
|
79327
80886
|
function GapDetailModalContentComponent_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
79328
80887
|
i0.ɵɵelementStart(0, "div", 25);
|
|
@@ -79606,7 +81165,7 @@ class GapDetailModalContentComponent {
|
|
|
79606
81165
|
}], null, { gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], allWeaknesses: [{ type: i0.Input, args: [{ isSignal: true, alias: "allWeaknesses", required: false }] }], currentModalState: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentModalState", required: false }] }] }); })();
|
|
79607
81166
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GapDetailModalContentComponent, { className: "GapDetailModalContentComponent", filePath: "lib/components/profile-analysis-dashboard/modals/gap-detail-modal-content.component.ts", lineNumber: 129 }); })();
|
|
79608
81167
|
|
|
79609
|
-
const _c0$
|
|
81168
|
+
const _c0$3 = a0 => ({ name: "chevron-right", source: a0 });
|
|
79610
81169
|
const _forTrack0$3 = ($index, $item) => $item.id || $index;
|
|
79611
81170
|
function OpportunityDetailModalContentComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
79612
81171
|
i0.ɵɵelementStart(0, "div", 9)(1, "h4", 10);
|
|
@@ -79711,7 +81270,7 @@ function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_For
|
|
|
79711
81270
|
i0.ɵɵadvance(2);
|
|
79712
81271
|
i0.ɵɵtextInterpolate(goal_r5.title || goal_r5.id);
|
|
79713
81272
|
i0.ɵɵadvance();
|
|
79714
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
81273
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$3, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
79715
81274
|
} }
|
|
79716
81275
|
function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
79717
81276
|
i0.ɵɵelementStart(0, "div", 9)(1, "h4", 24);
|
|
@@ -81313,7 +82872,7 @@ class CollapsibleAnalysisSectionGroupComponent {
|
|
|
81313
82872
|
}], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], executiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "executiveSummary", required: false }] }], focusAreaExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaExecutiveSummary", required: false }] }], metricExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricExecutiveSummary", required: false }] }], metricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricName", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], businessProfile: [{ type: i0.Input, args: [{ isSignal: true, alias: "businessProfile", required: false }] }] }); })();
|
|
81314
82873
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollapsibleAnalysisSectionGroupComponent, { className: "CollapsibleAnalysisSectionGroupComponent", filePath: "lib/components/profile-analysis-dashboard/cards/collapsible-analysis-section-group.component.ts", lineNumber: 172 }); })();
|
|
81315
82874
|
|
|
81316
|
-
const _c0$
|
|
82875
|
+
const _c0$2 = a0 => ({ name: "chevron-right", source: a0 });
|
|
81317
82876
|
const _c1 = a0 => ({ name: "chevron-down", source: a0 });
|
|
81318
82877
|
const _c2 = a0 => [a0];
|
|
81319
82878
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
@@ -81590,7 +83149,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
|
|
|
81590
83149
|
i0.ɵɵadvance(2);
|
|
81591
83150
|
i0.ɵɵproperty("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
|
|
81592
83151
|
i0.ɵɵadvance(2);
|
|
81593
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$
|
|
83152
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
|
|
81594
83153
|
i0.ɵɵadvance();
|
|
81595
83154
|
i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsStatCardClasses());
|
|
81596
83155
|
i0.ɵɵadvance();
|
|
@@ -81602,7 +83161,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
|
|
|
81602
83161
|
i0.ɵɵadvance(2);
|
|
81603
83162
|
i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
|
|
81604
83163
|
i0.ɵɵadvance(2);
|
|
81605
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$
|
|
83164
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
|
|
81606
83165
|
i0.ɵɵadvance();
|
|
81607
83166
|
i0.ɵɵproperty("ngClass", ctx_r1.getQuickWinsStatCardClasses());
|
|
81608
83167
|
i0.ɵɵadvance();
|
|
@@ -83233,469 +84792,6 @@ class ScrollProgressBarComponent {
|
|
|
83233
84792
|
}], null, { progress: [{ type: i0.Input, args: [{ isSignal: true, alias: "progress", required: false }] }], isLightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLightMode", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }] }); })();
|
|
83234
84793
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ScrollProgressBarComponent, { className: "ScrollProgressBarComponent", filePath: "lib/components/shared/scroll-progress-bar.component.ts", lineNumber: 23 }); })();
|
|
83235
84794
|
|
|
83236
|
-
const _c0$2 = ["chartdiv"];
|
|
83237
|
-
class LineChartComponent {
|
|
83238
|
-
constructor() {
|
|
83239
|
-
this.chart = input({}, ...(ngDevMode ? [{ debugName: "chart" }] : []));
|
|
83240
|
-
this.showAxisLabels = input(false, ...(ngDevMode ? [{ debugName: "showAxisLabels" }] : []));
|
|
83241
|
-
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
83242
|
-
this.currencySymbol = input('$', ...(ngDevMode ? [{ debugName: "currencySymbol" }] : []));
|
|
83243
|
-
// Memoized computed signals to avoid recalculation on every change detection
|
|
83244
|
-
this.chartHeight = computed(() => this.showAxisLabels() ? '500px' : '133px', ...(ngDevMode ? [{ debugName: "chartHeight" }] : []));
|
|
83245
|
-
this.cursorColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x94a3b8, ...(ngDevMode ? [{ debugName: "cursorColor" }] : []));
|
|
83246
|
-
this.tooltipTextColor = computed(() => this.viewMode() === ViewModeEnum.DARK ? 0xffffff : 0x000000, ...(ngDevMode ? [{ debugName: "tooltipTextColor" }] : []));
|
|
83247
|
-
this.chartHash = computed(() => this.generateChartHash(this.chart()), ...(ngDevMode ? [{ debugName: "chartHash" }] : []));
|
|
83248
|
-
this.lastChartHash = '';
|
|
83249
|
-
this.chartNeedsRender = false;
|
|
83250
|
-
this.isVisible = false;
|
|
83251
|
-
this.animationsEnabled = false;
|
|
83252
|
-
// Monitor for actual data changes using memoized hash
|
|
83253
|
-
effect(() => {
|
|
83254
|
-
const newHash = this.chartHash();
|
|
83255
|
-
if (newHash !== this.lastChartHash) {
|
|
83256
|
-
this.lastChartHash = newHash;
|
|
83257
|
-
this.chartNeedsRender = true;
|
|
83258
|
-
}
|
|
83259
|
-
});
|
|
83260
|
-
}
|
|
83261
|
-
ngOnInit() {
|
|
83262
|
-
}
|
|
83263
|
-
/**
|
|
83264
|
-
* Generate a hash of the chart data to detect actual changes
|
|
83265
|
-
* This prevents unnecessary re-renders when data hasn't truly changed
|
|
83266
|
-
*/
|
|
83267
|
-
generateChartHash(chart) {
|
|
83268
|
-
const data = chart.lineChartData;
|
|
83269
|
-
if (!data)
|
|
83270
|
-
return 'empty';
|
|
83271
|
-
const seriesCount = data.series?.length ?? 0;
|
|
83272
|
-
const dataPoints = data.series?.reduce((sum, s) => sum + (s.data?.length ?? 0), 0) ?? 0;
|
|
83273
|
-
return `${chart.title}-${seriesCount}-${dataPoints}-${chart.lineChartUseCase}`;
|
|
83274
|
-
}
|
|
83275
|
-
ngAfterViewInit() {
|
|
83276
|
-
this.setupIntersectionObserver();
|
|
83277
|
-
this.setupResizeObserver();
|
|
83278
|
-
}
|
|
83279
|
-
ngOnDestroy() {
|
|
83280
|
-
this.cleanupIntersectionObserver();
|
|
83281
|
-
this.cleanupResizeObserver();
|
|
83282
|
-
if (this.chartElement) {
|
|
83283
|
-
this.chartElement.series.clear();
|
|
83284
|
-
this.chartElement.xAxes.clear();
|
|
83285
|
-
this.chartElement.yAxes.clear();
|
|
83286
|
-
}
|
|
83287
|
-
if (this.root) {
|
|
83288
|
-
this.root.dispose();
|
|
83289
|
-
}
|
|
83290
|
-
this.chartElement = undefined;
|
|
83291
|
-
this.root = undefined;
|
|
83292
|
-
}
|
|
83293
|
-
setupResizeObserver() {
|
|
83294
|
-
if (!this.chartDiv?.nativeElement || typeof ResizeObserver === 'undefined') {
|
|
83295
|
-
return;
|
|
83296
|
-
}
|
|
83297
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
83298
|
-
if (this.resizeTimeout) {
|
|
83299
|
-
clearTimeout(this.resizeTimeout);
|
|
83300
|
-
}
|
|
83301
|
-
this.resizeTimeout = window.setTimeout(() => {
|
|
83302
|
-
// AmCharts handles resize automatically, but we debounce to prevent
|
|
83303
|
-
// excessive Angular change detection cycles during window resize
|
|
83304
|
-
if (this.root && !this.root.isDisposed()) {
|
|
83305
|
-
// Force a single layout recalculation after resize settles
|
|
83306
|
-
this.root.resize();
|
|
83307
|
-
}
|
|
83308
|
-
}, 150);
|
|
83309
|
-
});
|
|
83310
|
-
this.resizeObserver.observe(this.chartDiv.nativeElement);
|
|
83311
|
-
}
|
|
83312
|
-
cleanupResizeObserver() {
|
|
83313
|
-
if (this.resizeTimeout) {
|
|
83314
|
-
clearTimeout(this.resizeTimeout);
|
|
83315
|
-
this.resizeTimeout = undefined;
|
|
83316
|
-
}
|
|
83317
|
-
if (this.resizeObserver) {
|
|
83318
|
-
this.resizeObserver.disconnect();
|
|
83319
|
-
this.resizeObserver = undefined;
|
|
83320
|
-
}
|
|
83321
|
-
}
|
|
83322
|
-
setupIntersectionObserver() {
|
|
83323
|
-
if (!this.chartDiv?.nativeElement || typeof IntersectionObserver === 'undefined') {
|
|
83324
|
-
// Fallback: render immediately if IntersectionObserver not supported
|
|
83325
|
-
this.isVisible = true;
|
|
83326
|
-
this.animationsEnabled = true;
|
|
83327
|
-
if (this.chartNeedsRender || !this.root) {
|
|
83328
|
-
this.createChart();
|
|
83329
|
-
this.chartNeedsRender = false;
|
|
83330
|
-
}
|
|
83331
|
-
return;
|
|
83332
|
-
}
|
|
83333
|
-
// Use IntersectionObserver to detect when chart enters viewport
|
|
83334
|
-
this.intersectionObserver = new IntersectionObserver((entries) => {
|
|
83335
|
-
entries.forEach((entry) => {
|
|
83336
|
-
if (entry.isIntersecting && !this.isVisible) {
|
|
83337
|
-
this.isVisible = true;
|
|
83338
|
-
// Create chart without animations initially for faster rendering
|
|
83339
|
-
if (this.chartNeedsRender || !this.root) {
|
|
83340
|
-
this.createChart();
|
|
83341
|
-
this.chartNeedsRender = false;
|
|
83342
|
-
}
|
|
83343
|
-
// Enable animations after initial render completes
|
|
83344
|
-
setTimeout(() => {
|
|
83345
|
-
this.animationsEnabled = true;
|
|
83346
|
-
}, 100);
|
|
83347
|
-
// Stop observing once visible (one-time initialization)
|
|
83348
|
-
this.intersectionObserver?.disconnect();
|
|
83349
|
-
}
|
|
83350
|
-
});
|
|
83351
|
-
}, {
|
|
83352
|
-
// Trigger when 10% of the chart is visible
|
|
83353
|
-
threshold: 0.1,
|
|
83354
|
-
// Start observing slightly before element enters viewport
|
|
83355
|
-
rootMargin: '50px'
|
|
83356
|
-
});
|
|
83357
|
-
this.intersectionObserver.observe(this.chartDiv.nativeElement);
|
|
83358
|
-
}
|
|
83359
|
-
cleanupIntersectionObserver() {
|
|
83360
|
-
if (this.intersectionObserver) {
|
|
83361
|
-
this.intersectionObserver.disconnect();
|
|
83362
|
-
this.intersectionObserver = undefined;
|
|
83363
|
-
}
|
|
83364
|
-
}
|
|
83365
|
-
/**
|
|
83366
|
-
* Create chart with early exit optimization
|
|
83367
|
-
* Prevents unnecessary re-initialization if no data changes detected
|
|
83368
|
-
*/
|
|
83369
|
-
formatValue(value, valueFormat) {
|
|
83370
|
-
const formattedNumber = value.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
83371
|
-
if (valueFormat === 'CURRENCY') {
|
|
83372
|
-
return `${this.currencySymbol()}${formattedNumber}`;
|
|
83373
|
-
}
|
|
83374
|
-
else if (valueFormat === 'PERCENTAGE') {
|
|
83375
|
-
return `${formattedNumber}%`;
|
|
83376
|
-
}
|
|
83377
|
-
return formattedNumber;
|
|
83378
|
-
}
|
|
83379
|
-
isPriorYearSeries(seriesData) {
|
|
83380
|
-
if (!seriesData || !seriesData.name) {
|
|
83381
|
-
return false;
|
|
83382
|
-
}
|
|
83383
|
-
// Check if series name indicates it's a prior year series
|
|
83384
|
-
const name = seriesData.name.toLowerCase();
|
|
83385
|
-
const currentYear = new Date().getFullYear();
|
|
83386
|
-
// Check for explicit keywords
|
|
83387
|
-
if (name.includes('last year') ||
|
|
83388
|
-
name.includes('prior year') ||
|
|
83389
|
-
name.includes('previous year')) {
|
|
83390
|
-
return true;
|
|
83391
|
-
}
|
|
83392
|
-
// Check for year patterns - extract any 4-digit year and compare to current year
|
|
83393
|
-
const yearMatch = seriesData.name.match(/\b(20\d{2})\b/);
|
|
83394
|
-
if (yearMatch) {
|
|
83395
|
-
const year = parseInt(yearMatch[1], 10);
|
|
83396
|
-
return year < currentYear;
|
|
83397
|
-
}
|
|
83398
|
-
return false;
|
|
83399
|
-
}
|
|
83400
|
-
extractMetricName(seriesName) {
|
|
83401
|
-
// Extract metric name from series name by removing year patterns
|
|
83402
|
-
// e.g., "Purchase Revenue (2025)" -> "Purchase Revenue"
|
|
83403
|
-
// "Revenue 2024" -> "Revenue"
|
|
83404
|
-
// "Sessions (2024)" -> "Sessions"
|
|
83405
|
-
if (!seriesName)
|
|
83406
|
-
return '';
|
|
83407
|
-
return seriesName.replace(/\s*\(?\s*20\d{2}\s*\)?/g, '').trim();
|
|
83408
|
-
}
|
|
83409
|
-
createChart() {
|
|
83410
|
-
const chartData = this.chart().lineChartData;
|
|
83411
|
-
if (!chartData || !this.chartDiv)
|
|
83412
|
-
return;
|
|
83413
|
-
// Check if this is a YoY chart from the chart configuration
|
|
83414
|
-
const isYoYChart = this.chart().lineChartUseCase === LineChartUseCaseEnum.THIS_YEAR_VS_LAST_YEAR;
|
|
83415
|
-
this.root = Root.new(this.chartDiv.nativeElement);
|
|
83416
|
-
// Only enable animations if chart is visible to improve initial load performance
|
|
83417
|
-
if (this.animationsEnabled) {
|
|
83418
|
-
this.root.setThemes([am5themes_Animated.new(this.root)]);
|
|
83419
|
-
}
|
|
83420
|
-
this.chartElement = this.root.container.children.push(XYChart.new(this.root, {
|
|
83421
|
-
panX: false,
|
|
83422
|
-
panY: false,
|
|
83423
|
-
wheelX: 'none',
|
|
83424
|
-
wheelY: 'none',
|
|
83425
|
-
paddingLeft: 0,
|
|
83426
|
-
paddingRight: 0,
|
|
83427
|
-
paddingTop: 0,
|
|
83428
|
-
paddingBottom: 0,
|
|
83429
|
-
maxTooltipDistance: -1
|
|
83430
|
-
}));
|
|
83431
|
-
const dateAxis = this.chartElement.xAxes.push(DateAxis.new(this.root, {
|
|
83432
|
-
baseInterval: { timeUnit: 'month', count: 1 },
|
|
83433
|
-
renderer: AxisRendererX.new(this.root, {}),
|
|
83434
|
-
tooltip: Tooltip.new(this.root, {})
|
|
83435
|
-
}));
|
|
83436
|
-
dateAxis.get('renderer').labels.template.setAll({
|
|
83437
|
-
fontSize: 12,
|
|
83438
|
-
fill: color(0x94a3b8),
|
|
83439
|
-
visible: this.showAxisLabels(),
|
|
83440
|
-
paddingTop: 0,
|
|
83441
|
-
paddingBottom: 0,
|
|
83442
|
-
marginTop: 0,
|
|
83443
|
-
marginBottom: 0
|
|
83444
|
-
});
|
|
83445
|
-
// Create Y-axes based on yaxisLabels if provided
|
|
83446
|
-
const yaxisLabels = chartData.yaxisLabels || ['Value'];
|
|
83447
|
-
const yAxesMap = new Map();
|
|
83448
|
-
const axisColors = {};
|
|
83449
|
-
const axisColorPalette = [
|
|
83450
|
-
0x4A90E2, // Blue
|
|
83451
|
-
0x10b981, // Green
|
|
83452
|
-
0xf59e0b, // Amber
|
|
83453
|
-
0xef4444, // Red
|
|
83454
|
-
0x8b5cf6, // Purple
|
|
83455
|
-
0x06b6d4 // Cyan
|
|
83456
|
-
];
|
|
83457
|
-
yaxisLabels.forEach((label, index) => {
|
|
83458
|
-
const isRightAxis = index % 2 === 1;
|
|
83459
|
-
const colorValue = axisColorPalette[index % axisColorPalette.length];
|
|
83460
|
-
axisColors[label] = colorValue;
|
|
83461
|
-
if (!this.chartElement || !this.root)
|
|
83462
|
-
return;
|
|
83463
|
-
const yAxis = this.chartElement.yAxes.push(ValueAxis.new(this.root, {
|
|
83464
|
-
renderer: AxisRendererY.new(this.root, {
|
|
83465
|
-
opposite: isRightAxis
|
|
83466
|
-
})
|
|
83467
|
-
}));
|
|
83468
|
-
// Only show axis labels when there's a single Y-axis
|
|
83469
|
-
if (yaxisLabels.length === 1) {
|
|
83470
|
-
yAxis.get('renderer').labels.template.setAll({
|
|
83471
|
-
fontSize: 12,
|
|
83472
|
-
fill: color(colorValue),
|
|
83473
|
-
visible: this.showAxisLabels(),
|
|
83474
|
-
paddingLeft: 0,
|
|
83475
|
-
paddingRight: 0,
|
|
83476
|
-
marginLeft: 0,
|
|
83477
|
-
marginRight: 0
|
|
83478
|
-
});
|
|
83479
|
-
// Don't show axis title/name for single Y-axis, only values
|
|
83480
|
-
}
|
|
83481
|
-
else {
|
|
83482
|
-
// Hide labels when multiple axes
|
|
83483
|
-
yAxis.get('renderer').labels.template.setAll({
|
|
83484
|
-
visible: false
|
|
83485
|
-
});
|
|
83486
|
-
}
|
|
83487
|
-
yAxesMap.set(label, yAxis);
|
|
83488
|
-
});
|
|
83489
|
-
// Create cursor for mouse tracking - use memoized cursorColor
|
|
83490
|
-
const cursor = XYCursor.new(this.root, {
|
|
83491
|
-
behavior: 'zoomX'
|
|
83492
|
-
});
|
|
83493
|
-
this.chartElement.set('cursor', cursor);
|
|
83494
|
-
cursor.lineY.set('visible', false);
|
|
83495
|
-
cursor.lineX.set('visible', true);
|
|
83496
|
-
cursor.lineX.set('stroke', color(this.cursorColor()));
|
|
83497
|
-
cursor.set('xAxis', dateAxis);
|
|
83498
|
-
// Create free-floating tooltip for the chart
|
|
83499
|
-
const tooltip = Tooltip.new(this.root, {});
|
|
83500
|
-
this.chartElement.plotContainer.set('tooltipPosition', 'pointer');
|
|
83501
|
-
this.chartElement.plotContainer.set('tooltip', tooltip);
|
|
83502
|
-
this.chartElement.plotContainer.set('tooltipText', '{name}'); // Enable tooltip trigger
|
|
83503
|
-
// Make tooltip background transparent with white border
|
|
83504
|
-
const tooltipBg = tooltip.get('background');
|
|
83505
|
-
if (tooltipBg) {
|
|
83506
|
-
tooltipBg.setAll({
|
|
83507
|
-
fill: color(0x000000),
|
|
83508
|
-
fillOpacity: 0,
|
|
83509
|
-
stroke: color(0xffffff),
|
|
83510
|
-
strokeOpacity: 1,
|
|
83511
|
-
strokeWidth: 2
|
|
83512
|
-
});
|
|
83513
|
-
}
|
|
83514
|
-
// Style the tooltip label - white text for dark mode, black for light mode - use memoized color
|
|
83515
|
-
tooltip.label.setAll({
|
|
83516
|
-
fontSize: 12,
|
|
83517
|
-
fill: color(this.tooltipTextColor()),
|
|
83518
|
-
paddingTop: 8,
|
|
83519
|
-
paddingBottom: 8,
|
|
83520
|
-
paddingLeft: 10,
|
|
83521
|
-
paddingRight: 10
|
|
83522
|
-
});
|
|
83523
|
-
// Add tooltip text adapter to format values from all series with colored dots
|
|
83524
|
-
tooltip.label.adapters.add('text', () => {
|
|
83525
|
-
let text = '';
|
|
83526
|
-
let count = 0;
|
|
83527
|
-
let monthText = '';
|
|
83528
|
-
this.chartElement?.series.each((series) => {
|
|
83529
|
-
const dataItem = series.get('tooltipDataItem');
|
|
83530
|
-
if (dataItem) {
|
|
83531
|
-
// Extract month and year from the first series that has a dataItem
|
|
83532
|
-
if (monthText === '') {
|
|
83533
|
-
const valueX = dataItem.get('valueX');
|
|
83534
|
-
if (valueX) {
|
|
83535
|
-
const date = new Date(valueX);
|
|
83536
|
-
const month = date.toLocaleString('default', { month: 'long', timeZone: 'UTC' });
|
|
83537
|
-
const year = date.toLocaleString('default', { year: 'numeric', timeZone: 'UTC' });
|
|
83538
|
-
monthText = `${month} ${year}`;
|
|
83539
|
-
}
|
|
83540
|
-
}
|
|
83541
|
-
if (count > 0)
|
|
83542
|
-
text += '\n';
|
|
83543
|
-
const name = series.get('name');
|
|
83544
|
-
const value = dataItem.get('valueY');
|
|
83545
|
-
const seriesFormat = series.get('userData')?.valueFormat;
|
|
83546
|
-
const formattedValue = seriesFormat === 'CURRENCY'
|
|
83547
|
-
? ChartValueFormatter.formatValue(value, seriesFormat, this.currencySymbol())
|
|
83548
|
-
: this.formatValue(value, seriesFormat);
|
|
83549
|
-
// Get the series color (stroke color)
|
|
83550
|
-
const stroke = series.get('stroke');
|
|
83551
|
-
let colorHex = 'FFFFFF'; // Default white
|
|
83552
|
-
if (stroke) {
|
|
83553
|
-
colorHex = stroke.toString().substring(1).toUpperCase(); // Remove '#' and convert to uppercase
|
|
83554
|
-
}
|
|
83555
|
-
// Format with colored bullet: [color]●[/] SeriesName: Value
|
|
83556
|
-
text += `[fontSize: 24px][${colorHex}]●[/][/] [bold]${name}:[/] ${formattedValue}`;
|
|
83557
|
-
count++;
|
|
83558
|
-
}
|
|
83559
|
-
});
|
|
83560
|
-
// Prepend month to the text if available
|
|
83561
|
-
if (monthText) {
|
|
83562
|
-
text = `[bold]${monthText}[/]\n${text}`;
|
|
83563
|
-
}
|
|
83564
|
-
return text;
|
|
83565
|
-
});
|
|
83566
|
-
// For YoY charts, build a metric-to-color map to ensure both years of the same metric have the same color
|
|
83567
|
-
const metricColorMap = new Map();
|
|
83568
|
-
if (isYoYChart && chartData.series) {
|
|
83569
|
-
const uniqueMetrics = new Set();
|
|
83570
|
-
chartData.series.forEach(seriesData => {
|
|
83571
|
-
const metricName = this.extractMetricName(seriesData.name);
|
|
83572
|
-
uniqueMetrics.add(metricName);
|
|
83573
|
-
});
|
|
83574
|
-
let colorIndex = 0;
|
|
83575
|
-
uniqueMetrics.forEach(metricName => {
|
|
83576
|
-
metricColorMap.set(metricName, axisColorPalette[colorIndex % axisColorPalette.length]);
|
|
83577
|
-
colorIndex++;
|
|
83578
|
-
});
|
|
83579
|
-
}
|
|
83580
|
-
chartData.series?.forEach((seriesData, index) => {
|
|
83581
|
-
const parsedData = (seriesData.data || []).map(d => ({
|
|
83582
|
-
date: new Date(`${d.date}T00:00:00Z`).getTime(),
|
|
83583
|
-
value: d.value
|
|
83584
|
-
}));
|
|
83585
|
-
// Get the Y-axis for this series, or use the first one as default
|
|
83586
|
-
const yaxisLabel = seriesData.yaxisLabel || yaxisLabels[0];
|
|
83587
|
-
const yAxis = yAxesMap.get(yaxisLabel) || Array.from(yAxesMap.values())[0];
|
|
83588
|
-
// Determine series color: for YoY charts use metric-based colors, otherwise use axis-based colors
|
|
83589
|
-
let seriesColorValue;
|
|
83590
|
-
if (isYoYChart) {
|
|
83591
|
-
const metricName = this.extractMetricName(seriesData.name);
|
|
83592
|
-
seriesColorValue = metricColorMap.get(metricName) || axisColorPalette[index % axisColorPalette.length];
|
|
83593
|
-
}
|
|
83594
|
-
else {
|
|
83595
|
-
seriesColorValue = axisColors[yaxisLabel] || axisColorPalette[index % axisColorPalette.length];
|
|
83596
|
-
}
|
|
83597
|
-
const seriesColor = color(seriesColorValue);
|
|
83598
|
-
// Check if this is a prior year series for YoY charts
|
|
83599
|
-
const isPriorYear = isYoYChart && this.isPriorYearSeries(seriesData);
|
|
83600
|
-
if (!this.chartElement || !this.root)
|
|
83601
|
-
return;
|
|
83602
|
-
const series = this.chartElement.series.push(LineSeries.new(this.root, {
|
|
83603
|
-
name: seriesData.name,
|
|
83604
|
-
xAxis: dateAxis,
|
|
83605
|
-
yAxis: yAxis,
|
|
83606
|
-
valueYField: 'value',
|
|
83607
|
-
valueXField: 'date',
|
|
83608
|
-
stroke: seriesColor
|
|
83609
|
-
}));
|
|
83610
|
-
// Store valueFormat and prior year flag in userData for tooltip formatting
|
|
83611
|
-
series.set('userData', { valueFormat: seriesData.valueFormat, isPriorYear });
|
|
83612
|
-
// Disable individual series tooltips - use floating tooltip instead
|
|
83613
|
-
series.set('tooltip', undefined);
|
|
83614
|
-
// Configure stroke styling based on whether it's a prior year series
|
|
83615
|
-
series.strokes.template.setAll({
|
|
83616
|
-
strokeWidth: 2
|
|
83617
|
-
});
|
|
83618
|
-
if (isPriorYear) {
|
|
83619
|
-
// Apply dashed line and reduced opacity for prior year data
|
|
83620
|
-
series.strokes.template.setAll({
|
|
83621
|
-
strokeDasharray: [5, 5],
|
|
83622
|
-
strokeOpacity: 0.4
|
|
83623
|
-
});
|
|
83624
|
-
// Also set on each individual stroke
|
|
83625
|
-
series.strokes.each((stroke) => {
|
|
83626
|
-
stroke.set('strokeDasharray', [5, 5]);
|
|
83627
|
-
stroke.set('strokeOpacity', 0.4);
|
|
83628
|
-
});
|
|
83629
|
-
}
|
|
83630
|
-
// Add bullets with larger hit area for better hover detection
|
|
83631
|
-
series.bullets.push(() => {
|
|
83632
|
-
const bulletConfig = {
|
|
83633
|
-
radius: 5,
|
|
83634
|
-
fill: seriesColor
|
|
83635
|
-
};
|
|
83636
|
-
if (isPriorYear) {
|
|
83637
|
-
bulletConfig['fillOpacity'] = 0.4;
|
|
83638
|
-
}
|
|
83639
|
-
if (!this.root)
|
|
83640
|
-
return Bullet.new({}, { sprite: Circle.new({}, {}) });
|
|
83641
|
-
const circle = Circle.new(this.root, bulletConfig);
|
|
83642
|
-
return Bullet.new(this.root, {
|
|
83643
|
-
sprite: circle
|
|
83644
|
-
});
|
|
83645
|
-
});
|
|
83646
|
-
series.data.setAll(parsedData);
|
|
83647
|
-
series.appear(1000);
|
|
83648
|
-
});
|
|
83649
|
-
// Only show legend in modal view (when showAxisLabels is true)
|
|
83650
|
-
if (this.showAxisLabels()) {
|
|
83651
|
-
const legend = this.chartElement.children.push(Legend.new(this.root, {
|
|
83652
|
-
centerX: percent(50),
|
|
83653
|
-
x: percent(50)
|
|
83654
|
-
}));
|
|
83655
|
-
legend.labels.template.setAll({
|
|
83656
|
-
fontSize: 12,
|
|
83657
|
-
fill: color(0x94a3b8)
|
|
83658
|
-
});
|
|
83659
|
-
// Reverse the series order in the legend so 2025 series appear on the right
|
|
83660
|
-
const reversedSeries = Array.from(this.chartElement.series.values).reverse();
|
|
83661
|
-
legend.data.setAll(reversedSeries);
|
|
83662
|
-
}
|
|
83663
|
-
this.chartElement.appear(1000, 100);
|
|
83664
|
-
}
|
|
83665
|
-
static { this.ɵfac = function LineChartComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LineChartComponent)(); }; }
|
|
83666
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [["symphiq-line-chart"]], viewQuery: function LineChartComponent_Query(rf, ctx) { if (rf & 1) {
|
|
83667
|
-
i0.ɵɵviewQuery(_c0$2, 7);
|
|
83668
|
-
} if (rf & 2) {
|
|
83669
|
-
let _t;
|
|
83670
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.chartDiv = _t.first);
|
|
83671
|
-
} }, inputs: { chart: [1, "chart"], showAxisLabels: [1, "showAxisLabels"], viewMode: [1, "viewMode"], currencySymbol: [1, "currencySymbol"] }, decls: 3, vars: 4, consts: [["chartdiv", ""], [1, "chart-container"], [1, "chart", 2, "width", "100%"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {
|
|
83672
|
-
i0.ɵɵdomElementStart(0, "div", 1);
|
|
83673
|
-
i0.ɵɵdomElement(1, "div", 2, 0);
|
|
83674
|
-
i0.ɵɵdomElementEnd();
|
|
83675
|
-
} if (rf & 2) {
|
|
83676
|
-
i0.ɵɵclassProp("mini-mode", !ctx.showAxisLabels());
|
|
83677
|
-
i0.ɵɵadvance();
|
|
83678
|
-
i0.ɵɵstyleProp("height", ctx.chartHeight());
|
|
83679
|
-
} }, styles: [".chart-container[_ngcontent-%COMP%]{width:100%;padding:1rem}.chart-container.mini-mode[_ngcontent-%COMP%]{padding:.25rem}"], changeDetection: 0 }); }
|
|
83680
|
-
}
|
|
83681
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LineChartComponent, [{
|
|
83682
|
-
type: Component,
|
|
83683
|
-
args: [{ selector: 'symphiq-line-chart', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
83684
|
-
<div class="chart-container" [class.mini-mode]="!showAxisLabels()">
|
|
83685
|
-
<div #chartdiv class="chart" [style.height]="chartHeight()" style="width: 100%;"></div>
|
|
83686
|
-
</div>
|
|
83687
|
-
`, styles: [".chart-container{width:100%;padding:1rem}.chart-container.mini-mode{padding:.25rem}\n"] }]
|
|
83688
|
-
}], () => [], { chart: [{ type: i0.Input, args: [{ isSignal: true, alias: "chart", required: false }] }], showAxisLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAxisLabels", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currencySymbol: [{ type: i0.Input, args: [{ isSignal: true, alias: "currencySymbol", required: false }] }], chartDiv: [{
|
|
83689
|
-
type: ViewChild,
|
|
83690
|
-
args: ['chartdiv', { static: true }]
|
|
83691
|
-
}] }); })();
|
|
83692
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LineChartComponent, { className: "LineChartComponent", filePath: "lib/components/funnel-analysis-dashboard/charts/line-chart.component.ts", lineNumber: 38 }); })();
|
|
83693
|
-
|
|
83694
|
-
var lineChart_component = /*#__PURE__*/Object.freeze({
|
|
83695
|
-
__proto__: null,
|
|
83696
|
-
LineChartComponent: LineChartComponent
|
|
83697
|
-
});
|
|
83698
|
-
|
|
83699
84795
|
const _c0$1 = ["chartdiv"];
|
|
83700
84796
|
class BarChartComponent {
|
|
83701
84797
|
constructor() {
|
|
@@ -84634,5 +85730,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
|
|
|
84634
85730
|
* Generated bundle index. Do not edit.
|
|
84635
85731
|
*/
|
|
84636
85732
|
|
|
84637
|
-
export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DataLoaderService, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
|
|
85733
|
+
export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DataLoaderService, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricReportModalComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
|
|
84638
85734
|
//# sourceMappingURL=symphiq-components.mjs.map
|