@eric-emg/symphiq-components 1.2.241 → 1.2.242
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 +2092 -1030
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +88 -23
- 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();
|
|
@@ -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()();
|
|
@@ -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,1486 @@ 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();
|
|
57161
|
+
i0.ɵɵproperty("ngClass", metric_r4.percentageIncrease >= 0 ? "text-emerald-500" : "text-red-500");
|
|
57162
|
+
i0.ɵɵadvance();
|
|
57163
|
+
i0.ɵɵattribute("d", metric_r4.percentageIncrease >= 0 ? "M5 10l7-7m0 0l7 7m-7-7v18" : "M19 14l-7 7m0 0l-7-7m7 7V3");
|
|
57164
|
+
} }
|
|
57165
|
+
function MetricReportModalComponent_Conditional_0_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
57166
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "h4", 17);
|
|
57167
|
+
i0.ɵɵtext(2, " Contributing Metrics ");
|
|
57168
|
+
i0.ɵɵelementEnd();
|
|
57169
|
+
i0.ɵɵelementStart(3, "div", 39)(4, "table", 40)(5, "thead")(6, "tr", 41)(7, "th", 42);
|
|
57170
|
+
i0.ɵɵtext(8, "Metric");
|
|
57171
|
+
i0.ɵɵelementEnd();
|
|
57172
|
+
i0.ɵɵelementStart(9, "th", 43);
|
|
57173
|
+
i0.ɵɵtext(10, "Target");
|
|
57174
|
+
i0.ɵɵelementEnd();
|
|
57175
|
+
i0.ɵɵelementStart(11, "th", 43);
|
|
57176
|
+
i0.ɵɵtext(12, "Change");
|
|
57177
|
+
i0.ɵɵelementEnd()()();
|
|
57178
|
+
i0.ɵɵelementStart(13, "tbody");
|
|
57179
|
+
i0.ɵɵrepeaterCreate(14, MetricReportModalComponent_Conditional_0_Conditional_55_For_15_Template, 15, 8, "tr", 44, _forTrack0$i);
|
|
57180
|
+
i0.ɵɵelementEnd()()()();
|
|
57181
|
+
} if (rf & 2) {
|
|
57182
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57183
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57184
|
+
i0.ɵɵadvance();
|
|
57185
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57186
|
+
i0.ɵɵadvance(5);
|
|
57187
|
+
i0.ɵɵproperty("ngClass", ctx_r1.tableHeaderClasses());
|
|
57188
|
+
i0.ɵɵadvance(8);
|
|
57189
|
+
i0.ɵɵrepeater(ctx_r1.contributingMetrics());
|
|
57190
|
+
} }
|
|
57191
|
+
function MetricReportModalComponent_Conditional_0_Conditional_56_Template(rf, ctx) { if (rf & 1) {
|
|
57192
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "h4", 17);
|
|
57193
|
+
i0.ɵɵtext(2, " Pace ");
|
|
57194
|
+
i0.ɵɵelementEnd();
|
|
57195
|
+
i0.ɵɵelementStart(3, "div", 55);
|
|
57196
|
+
i0.ɵɵelement(4, "symphiq-line-chart", 56);
|
|
57197
|
+
i0.ɵɵelementEnd();
|
|
57198
|
+
i0.ɵɵelementStart(5, "p", 57);
|
|
57199
|
+
i0.ɵɵtext(6);
|
|
57200
|
+
i0.ɵɵelementEnd()();
|
|
57201
|
+
} if (rf & 2) {
|
|
57202
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
57203
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57204
|
+
i0.ɵɵadvance();
|
|
57205
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57206
|
+
i0.ɵɵadvance(3);
|
|
57207
|
+
i0.ɵɵproperty("chart", ctx_r1.pacingChartData())("showAxisLabels", true)("viewMode", ctx_r1.viewMode())("currencySymbol", "$");
|
|
57208
|
+
i0.ɵɵadvance();
|
|
57209
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
57210
|
+
i0.ɵɵadvance();
|
|
57211
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.chartDescriptionText(), " ");
|
|
57212
|
+
} }
|
|
57213
|
+
function MetricReportModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
57214
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
57215
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
57216
|
+
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()); });
|
|
57217
|
+
i0.ɵɵelementStart(1, "div", 2);
|
|
57218
|
+
i0.ɵɵelement(2, "div", 3);
|
|
57219
|
+
i0.ɵɵelementStart(3, "span", 4);
|
|
57220
|
+
i0.ɵɵtext(4, "\u200B");
|
|
57221
|
+
i0.ɵɵelementEnd();
|
|
57222
|
+
i0.ɵɵelementStart(5, "div", 5);
|
|
57223
|
+
i0.ɵɵlistener("click", function MetricReportModalComponent_Conditional_0_Template_div_click_5_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
57224
|
+
i0.ɵɵelementStart(6, "div", 6)(7, "div", 7)(8, "div", 8)(9, "h3", 9);
|
|
57225
|
+
i0.ɵɵtext(10);
|
|
57226
|
+
i0.ɵɵelementEnd();
|
|
57227
|
+
i0.ɵɵconditionalCreate(11, MetricReportModalComponent_Conditional_0_Conditional_11_Template, 7, 4, "button", 10);
|
|
57228
|
+
i0.ɵɵconditionalCreate(12, MetricReportModalComponent_Conditional_0_Conditional_12_Template, 2, 2, "div", 11);
|
|
57229
|
+
i0.ɵɵelementEnd();
|
|
57230
|
+
i0.ɵɵelementStart(13, "button", 12);
|
|
57231
|
+
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()); });
|
|
57232
|
+
i0.ɵɵnamespaceSVG();
|
|
57233
|
+
i0.ɵɵelementStart(14, "svg", 13);
|
|
57234
|
+
i0.ɵɵelement(15, "path", 14);
|
|
57235
|
+
i0.ɵɵelementEnd()()()();
|
|
57236
|
+
i0.ɵɵnamespaceHTML();
|
|
57237
|
+
i0.ɵɵelementStart(16, "div", 15);
|
|
57238
|
+
i0.ɵɵelement(17, "symphiq-tooltip-container");
|
|
57239
|
+
i0.ɵɵelementStart(18, "div", 16)(19, "h4", 17);
|
|
57240
|
+
i0.ɵɵtext(20, " At a Glance ");
|
|
57241
|
+
i0.ɵɵelementEnd();
|
|
57242
|
+
i0.ɵɵelementStart(21, "div", 18)(22, "div")(23, "p", 19);
|
|
57243
|
+
i0.ɵɵtext(24);
|
|
57244
|
+
i0.ɵɵelementEnd();
|
|
57245
|
+
i0.ɵɵelementStart(25, "p", 9);
|
|
57246
|
+
i0.ɵɵtext(26);
|
|
57247
|
+
i0.ɵɵelementEnd();
|
|
57248
|
+
i0.ɵɵconditionalCreate(27, MetricReportModalComponent_Conditional_0_Conditional_27_Template, 1, 5, "symphiq-target-change-badge", 20);
|
|
57249
|
+
i0.ɵɵelementEnd();
|
|
57250
|
+
i0.ɵɵelementStart(28, "div")(29, "p", 19);
|
|
57251
|
+
i0.ɵɵtext(30);
|
|
57252
|
+
i0.ɵɵelementEnd();
|
|
57253
|
+
i0.ɵɵelementStart(31, "p", 21);
|
|
57254
|
+
i0.ɵɵtext(32);
|
|
57255
|
+
i0.ɵɵelementEnd()();
|
|
57256
|
+
i0.ɵɵelementStart(33, "div")(34, "p", 19);
|
|
57257
|
+
i0.ɵɵtext(35);
|
|
57258
|
+
i0.ɵɵelementEnd();
|
|
57259
|
+
i0.ɵɵelementStart(36, "p", 21);
|
|
57260
|
+
i0.ɵɵtext(37);
|
|
57261
|
+
i0.ɵɵelementEnd()();
|
|
57262
|
+
i0.ɵɵconditionalCreate(38, MetricReportModalComponent_Conditional_0_Conditional_38_Template, 6, 10, "div");
|
|
57263
|
+
i0.ɵɵelementStart(39, "div")(40, "p", 19);
|
|
57264
|
+
i0.ɵɵtext(41);
|
|
57265
|
+
i0.ɵɵelementEnd();
|
|
57266
|
+
i0.ɵɵelementStart(42, "p", 21);
|
|
57267
|
+
i0.ɵɵtext(43);
|
|
57268
|
+
i0.ɵɵelementEnd()()()();
|
|
57269
|
+
i0.ɵɵelementStart(44, "div", 16)(45, "h4", 17);
|
|
57270
|
+
i0.ɵɵtext(46, " Target Analysis ");
|
|
57271
|
+
i0.ɵɵelementEnd();
|
|
57272
|
+
i0.ɵɵelementStart(47, "div", 22)(48, "p", 23);
|
|
57273
|
+
i0.ɵɵtext(49, " Your Target ");
|
|
57274
|
+
i0.ɵɵelementEnd();
|
|
57275
|
+
i0.ɵɵelementStart(50, "p", 24);
|
|
57276
|
+
i0.ɵɵtext(51);
|
|
57277
|
+
i0.ɵɵelementEnd();
|
|
57278
|
+
i0.ɵɵelementStart(52, "p", 25);
|
|
57279
|
+
i0.ɵɵtext(53);
|
|
57280
|
+
i0.ɵɵelementEnd()();
|
|
57281
|
+
i0.ɵɵconditionalCreate(54, MetricReportModalComponent_Conditional_0_Conditional_54_Template, 13, 14);
|
|
57282
|
+
i0.ɵɵelementEnd();
|
|
57283
|
+
i0.ɵɵconditionalCreate(55, MetricReportModalComponent_Conditional_0_Conditional_55_Template, 16, 3, "div", 16);
|
|
57284
|
+
i0.ɵɵconditionalCreate(56, MetricReportModalComponent_Conditional_0_Conditional_56_Template, 7, 8, "div", 26);
|
|
57285
|
+
i0.ɵɵelementEnd();
|
|
57286
|
+
i0.ɵɵelementStart(57, "div", 27)(58, "button", 28);
|
|
57287
|
+
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()); });
|
|
57288
|
+
i0.ɵɵtext(59, " Close ");
|
|
57289
|
+
i0.ɵɵelementEnd()()()()();
|
|
57290
|
+
} if (rf & 2) {
|
|
57291
|
+
let tmp_8_0;
|
|
57292
|
+
let tmp_9_0;
|
|
57293
|
+
let tmp_17_0;
|
|
57294
|
+
let tmp_22_0;
|
|
57295
|
+
let tmp_26_0;
|
|
57296
|
+
let tmp_31_0;
|
|
57297
|
+
let tmp_36_0;
|
|
57298
|
+
let tmp_38_0;
|
|
57299
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
57300
|
+
i0.ɵɵadvance(2);
|
|
57301
|
+
i0.ɵɵproperty("ngClass", ctx_r1.backdropClasses())("@fadeIn", undefined);
|
|
57302
|
+
i0.ɵɵadvance(3);
|
|
57303
|
+
i0.ɵɵproperty("ngClass", ctx_r1.modalContainerClasses())("@slideUpFade", undefined);
|
|
57304
|
+
i0.ɵɵadvance();
|
|
57305
|
+
i0.ɵɵproperty("ngClass", ctx_r1.headerClasses());
|
|
57306
|
+
i0.ɵɵadvance(3);
|
|
57307
|
+
i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
|
|
57308
|
+
i0.ɵɵadvance();
|
|
57309
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.metricTitle(), " ");
|
|
57310
|
+
i0.ɵɵadvance();
|
|
57311
|
+
i0.ɵɵconditional(((tmp_8_0 = ctx_r1.metricData()) == null ? null : tmp_8_0.description) ? 11 : -1);
|
|
57312
|
+
i0.ɵɵadvance();
|
|
57313
|
+
i0.ɵɵconditional(ctx_r1.showDefinition() && ((tmp_9_0 = ctx_r1.metricData()) == null ? null : tmp_9_0.description) ? 12 : -1);
|
|
57314
|
+
i0.ɵɵadvance();
|
|
57315
|
+
i0.ɵɵproperty("ngClass", ctx_r1.closeButtonClasses());
|
|
57316
|
+
i0.ɵɵadvance(3);
|
|
57317
|
+
i0.ɵɵproperty("ngClass", ctx_r1.contentClasses());
|
|
57318
|
+
i0.ɵɵadvance(2);
|
|
57319
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57320
|
+
i0.ɵɵadvance();
|
|
57321
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57322
|
+
i0.ɵɵadvance(4);
|
|
57323
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57324
|
+
i0.ɵɵadvance();
|
|
57325
|
+
i0.ɵɵtextInterpolate1(" Year to Date (", ctx_r1.ytdDateRange(), ") ");
|
|
57326
|
+
i0.ɵɵadvance();
|
|
57327
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57328
|
+
i0.ɵɵadvance();
|
|
57329
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.ytdValue(), ((tmp_17_0 = ctx_r1.metricData()) == null ? null : tmp_17_0.metric) || ""), " ");
|
|
57330
|
+
i0.ɵɵadvance();
|
|
57331
|
+
i0.ɵɵconditional(ctx_r1.ytdChangePercentage() !== null ? 27 : -1);
|
|
57332
|
+
i0.ɵɵadvance(2);
|
|
57333
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57334
|
+
i0.ɵɵadvance();
|
|
57335
|
+
i0.ɵɵtextInterpolate2(" Same Period ", ctx_r1.priorYear(), " (", ctx_r1.ytdDateRange(), ") ");
|
|
57336
|
+
i0.ɵɵadvance();
|
|
57337
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57338
|
+
i0.ɵɵadvance();
|
|
57339
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.formatMetricValue(ctx_r1.samePeriodLastYearValue(), ((tmp_22_0 = ctx_r1.metricData()) == null ? null : tmp_22_0.metric) || ""), " ");
|
|
57340
|
+
i0.ɵɵadvance(2);
|
|
57341
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57342
|
+
i0.ɵɵadvance();
|
|
57343
|
+
i0.ɵɵtextInterpolate1(" Full ", ctx_r1.priorYear(), " Actual ");
|
|
57344
|
+
i0.ɵɵadvance();
|
|
57345
|
+
i0.ɵɵproperty("ngClass", ctx_r1.valueClasses());
|
|
57346
|
+
i0.ɵɵadvance();
|
|
57347
|
+
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) || ""), " ");
|
|
57348
|
+
i0.ɵɵadvance();
|
|
57349
|
+
i0.ɵɵconditional(ctx_r1.pacingInfo() ? 38 : -1);
|
|
57350
|
+
i0.ɵɵadvance(2);
|
|
57351
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57352
|
+
i0.ɵɵadvance();
|
|
57353
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.currentYear(), " Target ");
|
|
57354
|
+
i0.ɵɵadvance();
|
|
57355
|
+
i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
|
|
57356
|
+
i0.ɵɵadvance();
|
|
57357
|
+
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), " ");
|
|
57358
|
+
i0.ɵɵadvance();
|
|
57359
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionCardClasses());
|
|
57360
|
+
i0.ɵɵadvance();
|
|
57361
|
+
i0.ɵɵproperty("ngClass", ctx_r1.sectionTitleClasses());
|
|
57362
|
+
i0.ɵɵadvance(3);
|
|
57363
|
+
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
57364
|
+
i0.ɵɵadvance(2);
|
|
57365
|
+
i0.ɵɵproperty("ngClass", ctx_r1.targetValueClasses());
|
|
57366
|
+
i0.ɵɵadvance();
|
|
57367
|
+
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), " ");
|
|
57368
|
+
i0.ɵɵadvance();
|
|
57369
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
57370
|
+
i0.ɵɵadvance();
|
|
57371
|
+
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) || ""), ". ");
|
|
57372
|
+
i0.ɵɵadvance();
|
|
57373
|
+
i0.ɵɵconditional(ctx_r1.pacingInfo() ? 54 : -1);
|
|
57374
|
+
i0.ɵɵadvance();
|
|
57375
|
+
i0.ɵɵconditional(ctx_r1.contributingMetrics().length > 0 ? 55 : -1);
|
|
57376
|
+
i0.ɵɵadvance();
|
|
57377
|
+
i0.ɵɵconditional(ctx_r1.pacingChartData() ? 56 : -1);
|
|
57378
|
+
i0.ɵɵadvance();
|
|
57379
|
+
i0.ɵɵproperty("ngClass", ctx_r1.footerClasses());
|
|
57380
|
+
i0.ɵɵadvance();
|
|
57381
|
+
i0.ɵɵproperty("ngClass", ctx_r1.closeFooterButtonClasses());
|
|
57382
|
+
} }
|
|
57383
|
+
class MetricReportModalComponent {
|
|
57384
|
+
constructor() {
|
|
57385
|
+
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
57386
|
+
this.metricEnum = input('', ...(ngDevMode ? [{ debugName: "metricEnum" }] : []));
|
|
57387
|
+
this.metricData = input(undefined, ...(ngDevMode ? [{ debugName: "metricData" }] : []));
|
|
57388
|
+
this.contributingMetrics = input([], ...(ngDevMode ? [{ debugName: "contributingMetrics" }] : []));
|
|
57389
|
+
this.pacingMetrics = input(undefined, ...(ngDevMode ? [{ debugName: "pacingMetrics" }] : []));
|
|
57390
|
+
this.isOpen = input(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
|
|
57391
|
+
this.closed = output();
|
|
57392
|
+
this.showDefinition = signal(false, ...(ngDevMode ? [{ debugName: "showDefinition" }] : []));
|
|
57393
|
+
this.Math = Math;
|
|
57394
|
+
this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
|
|
57395
|
+
this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
|
|
57396
|
+
this.metricTitle = computed(() => {
|
|
57397
|
+
const metric = this.metricData();
|
|
57398
|
+
if (!metric)
|
|
57399
|
+
return '';
|
|
57400
|
+
return metric.metric
|
|
57401
|
+
.split('_')
|
|
57402
|
+
.map(word => word.charAt(0) + word.slice(1).toLowerCase())
|
|
57403
|
+
.join(' ');
|
|
57404
|
+
}, ...(ngDevMode ? [{ debugName: "metricTitle" }] : []));
|
|
57405
|
+
this.pacingInfo = computed(() => {
|
|
57406
|
+
const metric = this.metricData();
|
|
57407
|
+
const pacingResponse = this.pacingMetrics();
|
|
57408
|
+
if (!metric || !pacingResponse)
|
|
57409
|
+
return null;
|
|
57410
|
+
const projectedValue = extractProjectedValue(pacingResponse, metric.metric);
|
|
57411
|
+
if (projectedValue === null)
|
|
57412
|
+
return null;
|
|
57413
|
+
const increaseBad = MetricEnumUtil.increaseBad(metric.metric);
|
|
57414
|
+
return calculateMetricPacing(projectedValue, metric.targetValue, increaseBad);
|
|
57415
|
+
}, ...(ngDevMode ? [{ debugName: "pacingInfo" }] : []));
|
|
57416
|
+
this.ytdValue = computed(() => {
|
|
57417
|
+
return this.metricData()?.currentValue || 0;
|
|
57418
|
+
}, ...(ngDevMode ? [{ debugName: "ytdValue" }] : []));
|
|
57419
|
+
this.samePeriodLastYearValue = computed(() => {
|
|
57420
|
+
return this.metricData()?.currentValue || 0;
|
|
57421
|
+
}, ...(ngDevMode ? [{ debugName: "samePeriodLastYearValue" }] : []));
|
|
57422
|
+
this.ytdChangePercentage = computed(() => {
|
|
57423
|
+
const current = this.ytdValue();
|
|
57424
|
+
const lastYear = this.samePeriodLastYearValue();
|
|
57425
|
+
if (lastYear === 0)
|
|
57426
|
+
return null;
|
|
57427
|
+
return ((current - lastYear) / lastYear) * 100;
|
|
57428
|
+
}, ...(ngDevMode ? [{ debugName: "ytdChangePercentage" }] : []));
|
|
57429
|
+
this.ytdDateRange = computed(() => {
|
|
57430
|
+
const now = new Date();
|
|
57431
|
+
const start = `Jan 1`;
|
|
57432
|
+
const end = now.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
57433
|
+
return `${start} - ${end}`;
|
|
57434
|
+
}, ...(ngDevMode ? [{ debugName: "ytdDateRange" }] : []));
|
|
57435
|
+
this.gapAnalysisText = computed(() => {
|
|
57436
|
+
const pacing = this.pacingInfo();
|
|
57437
|
+
const metric = this.metricData();
|
|
57438
|
+
if (!pacing || !metric)
|
|
57439
|
+
return '';
|
|
57440
|
+
const gap = Math.abs(pacing.pacingPercentage);
|
|
57441
|
+
const gapFormatted = formatPercentage(gap, 1);
|
|
57442
|
+
if (pacing.status === 'ahead') {
|
|
57443
|
+
return `Based on current pacing, you are on track to exceed your target by ${gapFormatted}.`;
|
|
57444
|
+
}
|
|
57445
|
+
else if (pacing.status === 'on-pace') {
|
|
57446
|
+
return `Based on current pacing, you are on track to meet your target.`;
|
|
57447
|
+
}
|
|
57448
|
+
else {
|
|
57449
|
+
return `Based on current pacing, you are pacing to fall short of your target by ${gapFormatted}.`;
|
|
57450
|
+
}
|
|
57451
|
+
}, ...(ngDevMode ? [{ debugName: "gapAnalysisText" }] : []));
|
|
57452
|
+
this.progressToTarget = computed(() => {
|
|
57453
|
+
const pacing = this.pacingInfo();
|
|
57454
|
+
const metric = this.metricData();
|
|
57455
|
+
if (!pacing || !metric)
|
|
57456
|
+
return 0;
|
|
57457
|
+
const target = metric.targetValue;
|
|
57458
|
+
const projected = pacing.projectedValue;
|
|
57459
|
+
if (target === 0)
|
|
57460
|
+
return 0;
|
|
57461
|
+
return (projected / target) * 100;
|
|
57462
|
+
}, ...(ngDevMode ? [{ debugName: "progressToTarget" }] : []));
|
|
57463
|
+
this.chartDescriptionText = computed(() => {
|
|
57464
|
+
const metric = this.metricTitle();
|
|
57465
|
+
const currentYear = this.currentYear();
|
|
57466
|
+
const priorYear = this.priorYear();
|
|
57467
|
+
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.`;
|
|
57468
|
+
}, ...(ngDevMode ? [{ debugName: "chartDescriptionText" }] : []));
|
|
57469
|
+
this.pacingChartData = computed(() => {
|
|
57470
|
+
const metric = this.metricData();
|
|
57471
|
+
if (!metric)
|
|
57472
|
+
return null;
|
|
57473
|
+
return {
|
|
57474
|
+
chartType: 'LINE',
|
|
57475
|
+
title: 'Pace',
|
|
57476
|
+
description: '',
|
|
57477
|
+
lineChartData: {
|
|
57478
|
+
series: [
|
|
57479
|
+
{
|
|
57480
|
+
name: `${this.currentYear()} Actual`,
|
|
57481
|
+
data: this.generateMockCurrentYearData()
|
|
57482
|
+
},
|
|
57483
|
+
{
|
|
57484
|
+
name: `${this.priorYear()} Comparison`,
|
|
57485
|
+
data: this.generateMockLastYearData()
|
|
57486
|
+
},
|
|
57487
|
+
{
|
|
57488
|
+
name: 'Target Projection',
|
|
57489
|
+
data: this.generateMockTargetData()
|
|
57490
|
+
}
|
|
57491
|
+
]
|
|
57492
|
+
}
|
|
57493
|
+
};
|
|
57494
|
+
}, ...(ngDevMode ? [{ debugName: "pacingChartData" }] : []));
|
|
57495
|
+
}
|
|
57496
|
+
generateMockCurrentYearData() {
|
|
57497
|
+
const baseValue = this.metricData()?.currentValue || 1000;
|
|
57498
|
+
const data = [];
|
|
57499
|
+
const now = new Date();
|
|
57500
|
+
const currentMonth = now.getMonth();
|
|
57501
|
+
for (let i = 0; i <= currentMonth; i++) {
|
|
57502
|
+
const date = new Date(this.currentYear(), i, 15);
|
|
57503
|
+
const variance = (Math.random() - 0.5) * 0.1;
|
|
57504
|
+
const value = baseValue * (1 + variance) * ((i + 1) / 12);
|
|
57505
|
+
data.push({
|
|
57506
|
+
date: date.toISOString(),
|
|
57507
|
+
value: Math.round(value * 100) / 100
|
|
57508
|
+
});
|
|
57509
|
+
}
|
|
57510
|
+
return data;
|
|
57511
|
+
}
|
|
57512
|
+
generateMockLastYearData() {
|
|
57513
|
+
const baseValue = this.metricData()?.currentValue || 1000;
|
|
57514
|
+
const data = [];
|
|
57515
|
+
for (let i = 0; i < 12; i++) {
|
|
57516
|
+
const date = new Date(this.priorYear(), i, 15);
|
|
57517
|
+
const variance = (Math.random() - 0.5) * 0.08;
|
|
57518
|
+
const value = baseValue * (1 + variance) * ((i + 1) / 12);
|
|
57519
|
+
data.push({
|
|
57520
|
+
date: date.toISOString(),
|
|
57521
|
+
value: Math.round(value * 100) / 100
|
|
57522
|
+
});
|
|
57523
|
+
}
|
|
57524
|
+
return data;
|
|
57525
|
+
}
|
|
57526
|
+
generateMockTargetData() {
|
|
57527
|
+
const targetValue = this.metricData()?.targetValue || 1200;
|
|
57528
|
+
const data = [];
|
|
57529
|
+
const now = new Date();
|
|
57530
|
+
const currentMonth = now.getMonth();
|
|
57531
|
+
for (let i = currentMonth; i < 12; i++) {
|
|
57532
|
+
const date = new Date(this.currentYear(), i, 15);
|
|
57533
|
+
const value = targetValue * ((i + 1) / 12);
|
|
57534
|
+
data.push({
|
|
57535
|
+
date: date.toISOString(),
|
|
57536
|
+
value: Math.round(value * 100) / 100
|
|
57537
|
+
});
|
|
57538
|
+
}
|
|
57539
|
+
return data;
|
|
57540
|
+
}
|
|
57541
|
+
formatMetricValue(value, metric, fromUiData = true) {
|
|
57542
|
+
if (metric.includes('REVENUE')) {
|
|
57543
|
+
return formatCurrency(value);
|
|
57544
|
+
}
|
|
57545
|
+
const numberType = MetricEnumUtil.numberType(metric);
|
|
57546
|
+
if (numberType === NumberTypeEnum.PERCENTAGE) {
|
|
57547
|
+
const displayValue = fromUiData ? value * 100 : value;
|
|
57548
|
+
return formatPercentage(displayValue, 2);
|
|
57549
|
+
}
|
|
57550
|
+
return formatNumber(value);
|
|
57551
|
+
}
|
|
57552
|
+
getMetricTitle(metric) {
|
|
57553
|
+
return metric.metric
|
|
57554
|
+
.split('_')
|
|
57555
|
+
.map(word => word.charAt(0) + word.slice(1).toLowerCase())
|
|
57556
|
+
.join(' ');
|
|
57557
|
+
}
|
|
57558
|
+
formatPercentage(value, decimals) {
|
|
57559
|
+
return formatPercentage(value, decimals);
|
|
57560
|
+
}
|
|
57561
|
+
getMarkdownTooltipContent(markdown, title) {
|
|
57562
|
+
return { title, markdown };
|
|
57563
|
+
}
|
|
57564
|
+
toggleDefinition() {
|
|
57565
|
+
this.showDefinition.update(v => !v);
|
|
57566
|
+
}
|
|
57567
|
+
close() {
|
|
57568
|
+
this.closed.emit();
|
|
57569
|
+
}
|
|
57570
|
+
isLightMode() {
|
|
57571
|
+
return this.viewMode() === ViewModeEnum.LIGHT;
|
|
57572
|
+
}
|
|
57573
|
+
backdropClasses() {
|
|
57574
|
+
return this.isLightMode() ? 'bg-slate-900/60' : 'bg-slate-950/80';
|
|
57575
|
+
}
|
|
57576
|
+
modalContainerClasses() {
|
|
57577
|
+
return this.isLightMode()
|
|
57578
|
+
? 'bg-white/90 border-slate-200/50'
|
|
57579
|
+
: 'bg-slate-800/90 border-slate-700/50';
|
|
57580
|
+
}
|
|
57581
|
+
headerClasses() {
|
|
57582
|
+
return this.isLightMode()
|
|
57583
|
+
? 'bg-white/50 border-slate-200/50'
|
|
57584
|
+
: 'bg-slate-800/50 border-slate-700/50';
|
|
57585
|
+
}
|
|
57586
|
+
titleClasses() {
|
|
57587
|
+
return this.isLightMode() ? 'text-slate-900' : 'text-white';
|
|
57588
|
+
}
|
|
57589
|
+
definitionToggleClasses() {
|
|
57590
|
+
return this.isLightMode()
|
|
57591
|
+
? 'text-blue-600 hover:text-blue-700'
|
|
57592
|
+
: 'text-blue-400 hover:text-blue-300';
|
|
57593
|
+
}
|
|
57594
|
+
definitionBoxClasses() {
|
|
57595
|
+
return this.isLightMode()
|
|
57596
|
+
? 'bg-blue-50/50 border-blue-200/50 text-slate-700'
|
|
57597
|
+
: 'bg-blue-900/20 border-blue-700/30 text-slate-300';
|
|
57598
|
+
}
|
|
57599
|
+
closeButtonClasses() {
|
|
57600
|
+
return this.isLightMode()
|
|
57601
|
+
? 'text-slate-600 hover:text-slate-900 hover:bg-slate-100'
|
|
57602
|
+
: 'text-slate-400 hover:text-white hover:bg-slate-700';
|
|
57603
|
+
}
|
|
57604
|
+
contentClasses() {
|
|
57605
|
+
return this.isLightMode() ? 'bg-white/30' : 'bg-slate-800/30';
|
|
57606
|
+
}
|
|
57607
|
+
sectionCardClasses() {
|
|
57608
|
+
return this.isLightMode()
|
|
57609
|
+
? 'bg-gradient-to-br from-slate-50 via-white to-slate-50 border border-slate-200'
|
|
57610
|
+
: 'bg-gradient-to-br from-slate-800/40 via-slate-800/20 to-slate-800/40 border border-slate-700/50';
|
|
57611
|
+
}
|
|
57612
|
+
sectionTitleClasses() {
|
|
57613
|
+
return this.isLightMode() ? 'text-slate-600' : 'text-slate-400';
|
|
57614
|
+
}
|
|
57615
|
+
labelClasses() {
|
|
57616
|
+
return this.isLightMode() ? 'text-slate-500' : 'text-slate-400';
|
|
57617
|
+
}
|
|
57618
|
+
valueClasses() {
|
|
57619
|
+
return this.isLightMode() ? 'text-slate-900' : 'text-white';
|
|
57620
|
+
}
|
|
57621
|
+
targetValueClasses() {
|
|
57622
|
+
return this.isLightMode() ? 'text-purple-700' : 'text-purple-300';
|
|
57623
|
+
}
|
|
57624
|
+
projectedValueClasses() {
|
|
57625
|
+
return this.isLightMode() ? 'text-amber-700' : 'text-amber-300';
|
|
57626
|
+
}
|
|
57627
|
+
descriptionClasses() {
|
|
57628
|
+
return this.isLightMode() ? 'text-slate-600' : 'text-slate-300';
|
|
57629
|
+
}
|
|
57630
|
+
progressBarBgClasses() {
|
|
57631
|
+
return this.isLightMode() ? 'bg-slate-200' : 'bg-slate-700';
|
|
57632
|
+
}
|
|
57633
|
+
progressBarFillClasses() {
|
|
57634
|
+
const pacing = this.pacingInfo();
|
|
57635
|
+
if (!pacing)
|
|
57636
|
+
return 'bg-blue-500';
|
|
57637
|
+
if (pacing.status === 'ahead') {
|
|
57638
|
+
return this.isLightMode()
|
|
57639
|
+
? 'bg-gradient-to-r from-emerald-500 to-emerald-600'
|
|
57640
|
+
: 'bg-gradient-to-r from-emerald-400 to-emerald-500';
|
|
57641
|
+
}
|
|
57642
|
+
else if (pacing.status === 'on-pace') {
|
|
57643
|
+
return this.isLightMode()
|
|
57644
|
+
? 'bg-gradient-to-r from-amber-500 to-amber-600'
|
|
57645
|
+
: 'bg-gradient-to-r from-amber-400 to-amber-500';
|
|
57646
|
+
}
|
|
57647
|
+
else {
|
|
57648
|
+
return this.isLightMode()
|
|
57649
|
+
? 'bg-gradient-to-r from-red-500 to-red-600'
|
|
57650
|
+
: 'bg-gradient-to-r from-red-400 to-red-500';
|
|
57651
|
+
}
|
|
57652
|
+
}
|
|
57653
|
+
tableHeaderClasses() {
|
|
57654
|
+
return this.isLightMode() ? 'text-slate-700 border-slate-200' : 'text-slate-300 border-slate-700';
|
|
57655
|
+
}
|
|
57656
|
+
tableRowClasses() {
|
|
57657
|
+
return this.isLightMode()
|
|
57658
|
+
? 'hover:bg-slate-50 border-slate-200'
|
|
57659
|
+
: 'hover:bg-slate-700/30 border-slate-700/50';
|
|
57660
|
+
}
|
|
57661
|
+
infoIconClasses() {
|
|
57662
|
+
return this.isLightMode()
|
|
57663
|
+
? 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700'
|
|
57664
|
+
: 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300';
|
|
57665
|
+
}
|
|
57666
|
+
footerClasses() {
|
|
57667
|
+
return this.isLightMode()
|
|
57668
|
+
? 'bg-slate-50 border-slate-200'
|
|
57669
|
+
: 'bg-slate-900/50 border-slate-700';
|
|
57670
|
+
}
|
|
57671
|
+
closeFooterButtonClasses() {
|
|
57672
|
+
return this.isLightMode()
|
|
57673
|
+
? 'bg-slate-200 hover:bg-slate-300 text-slate-900'
|
|
57674
|
+
: 'bg-slate-700 hover:bg-slate-600 text-white';
|
|
57675
|
+
}
|
|
57676
|
+
static { this.ɵfac = function MetricReportModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MetricReportModalComponent)(); }; }
|
|
57677
|
+
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", 3, "ngClass"], ["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) {
|
|
57678
|
+
i0.ɵɵconditionalCreate(0, MetricReportModalComponent_Conditional_0_Template, 60, 47, "div", 0);
|
|
57679
|
+
} if (rf & 2) {
|
|
57680
|
+
i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
|
|
57681
|
+
} }, dependencies: [CommonModule, i1$1.NgClass, PacingStatusBadgeComponent,
|
|
57682
|
+
TargetChangeBadgeComponent,
|
|
57683
|
+
TooltipDirective,
|
|
57684
|
+
TooltipContainerComponent,
|
|
57685
|
+
LineChartComponent], encapsulation: 2, data: { animation: [
|
|
57686
|
+
trigger('fadeIn', [
|
|
57687
|
+
transition(':enter', [
|
|
57688
|
+
style({ opacity: 0 }),
|
|
57689
|
+
animate('200ms ease-out', style({ opacity: 1 }))
|
|
57690
|
+
])
|
|
57691
|
+
]),
|
|
57692
|
+
trigger('slideUpFade', [
|
|
57693
|
+
transition(':enter', [
|
|
57694
|
+
style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
|
|
57695
|
+
animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
|
|
57696
|
+
])
|
|
57697
|
+
])
|
|
57698
|
+
] }, changeDetection: 0 }); }
|
|
57699
|
+
}
|
|
57700
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetricReportModalComponent, [{
|
|
57701
|
+
type: Component,
|
|
57702
|
+
args: [{
|
|
57703
|
+
selector: 'symphiq-metric-report-modal',
|
|
57704
|
+
standalone: true,
|
|
57705
|
+
imports: [
|
|
57706
|
+
CommonModule,
|
|
57707
|
+
PacingStatusBadgeComponent,
|
|
57708
|
+
TargetChangeBadgeComponent,
|
|
57709
|
+
TooltipDirective,
|
|
57710
|
+
TooltipContainerComponent,
|
|
57711
|
+
LineChartComponent
|
|
57712
|
+
],
|
|
57713
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
57714
|
+
animations: [
|
|
57715
|
+
trigger('fadeIn', [
|
|
57716
|
+
transition(':enter', [
|
|
57717
|
+
style({ opacity: 0 }),
|
|
57718
|
+
animate('200ms ease-out', style({ opacity: 1 }))
|
|
57719
|
+
])
|
|
57720
|
+
]),
|
|
57721
|
+
trigger('slideUpFade', [
|
|
57722
|
+
transition(':enter', [
|
|
57723
|
+
style({ opacity: 0, transform: 'translateY(30px) scale(0.95)' }),
|
|
57724
|
+
animate('400ms 50ms cubic-bezier(0.16, 1, 0.3, 1)', style({ opacity: 1, transform: 'translateY(0) scale(1)' }))
|
|
57725
|
+
])
|
|
57726
|
+
])
|
|
57727
|
+
],
|
|
57728
|
+
template: `
|
|
57729
|
+
@if (isOpen()) {
|
|
57730
|
+
<div class="fixed inset-0 overflow-y-auto z-50" (click)="close()">
|
|
57731
|
+
<div class="flex items-center justify-center min-h-screen px-4 pt-4 pb-20 text-center sm:block sm:p-0">
|
|
57732
|
+
<div
|
|
57733
|
+
[ngClass]="backdropClasses()"
|
|
57734
|
+
class="fixed inset-0 backdrop-blur-md"
|
|
57735
|
+
aria-hidden="true"
|
|
57736
|
+
@fadeIn>
|
|
57737
|
+
</div>
|
|
57738
|
+
|
|
57739
|
+
<span class="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">​</span>
|
|
57740
|
+
|
|
57741
|
+
<div
|
|
57742
|
+
(click)="$event.stopPropagation()"
|
|
57743
|
+
[ngClass]="modalContainerClasses()"
|
|
57744
|
+
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"
|
|
57745
|
+
@slideUpFade>
|
|
57746
|
+
|
|
57747
|
+
<!-- Header -->
|
|
57748
|
+
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b backdrop-blur-sm sticky top-0 z-10">
|
|
57749
|
+
<div class="flex items-start justify-between">
|
|
57750
|
+
<div class="flex-1">
|
|
57751
|
+
<h3 [ngClass]="titleClasses()" class="text-xl font-bold mb-2">
|
|
57752
|
+
{{ metricTitle() }}
|
|
57753
|
+
</h3>
|
|
57754
|
+
@if (metricData()?.description) {
|
|
57755
|
+
<button
|
|
57756
|
+
type="button"
|
|
57757
|
+
(click)="toggleDefinition()"
|
|
57758
|
+
[ngClass]="definitionToggleClasses()"
|
|
57759
|
+
class="inline-flex items-center gap-2 text-sm font-medium transition-colors">
|
|
57760
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57761
|
+
<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" />
|
|
57762
|
+
</svg>
|
|
57763
|
+
<span>What is {{ metricTitle() }}?</span>
|
|
57764
|
+
<svg
|
|
57765
|
+
[class.rotate-180]="showDefinition()"
|
|
57766
|
+
class="w-4 h-4 transition-transform"
|
|
57767
|
+
fill="none"
|
|
57768
|
+
stroke="currentColor"
|
|
57769
|
+
viewBox="0 0 24 24">
|
|
57770
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
|
57771
|
+
</svg>
|
|
57772
|
+
</button>
|
|
57773
|
+
}
|
|
57774
|
+
@if (showDefinition() && metricData()?.description) {
|
|
57775
|
+
<div [ngClass]="definitionBoxClasses()" class="mt-3 p-4 rounded-lg border text-sm leading-relaxed">
|
|
57776
|
+
{{ metricData()?.description }}
|
|
57777
|
+
</div>
|
|
57778
|
+
}
|
|
57779
|
+
</div>
|
|
57780
|
+
<button
|
|
57781
|
+
(click)="close()"
|
|
57782
|
+
[ngClass]="closeButtonClasses()"
|
|
57783
|
+
class="ml-4 transition-all rounded-lg p-1 hover:scale-110 active:scale-90">
|
|
57784
|
+
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57785
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
|
|
57786
|
+
</svg>
|
|
57787
|
+
</button>
|
|
57788
|
+
</div>
|
|
57789
|
+
</div>
|
|
57790
|
+
|
|
57791
|
+
<!-- Content -->
|
|
57792
|
+
<div [ngClass]="contentClasses()" class="px-6 py-6 max-h-[70vh] overflow-y-auto backdrop-blur-sm">
|
|
57793
|
+
<symphiq-tooltip-container />
|
|
57794
|
+
|
|
57795
|
+
<!-- At a Glance Summary -->
|
|
57796
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57797
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57798
|
+
At a Glance
|
|
57799
|
+
</h4>
|
|
57800
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
57801
|
+
<!-- YTD Value -->
|
|
57802
|
+
<div>
|
|
57803
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57804
|
+
Year to Date ({{ ytdDateRange() }})
|
|
57805
|
+
</p>
|
|
57806
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold mb-2">
|
|
57807
|
+
{{ formatMetricValue(ytdValue(), metricData()?.metric || '') }}
|
|
57808
|
+
</p>
|
|
57809
|
+
@if (ytdChangePercentage() !== null) {
|
|
57810
|
+
<symphiq-target-change-badge
|
|
57811
|
+
[viewMode]="viewMode()"
|
|
57812
|
+
[percentageChange]="ytdChangePercentage()!"
|
|
57813
|
+
[metric]="metricData()?.metric || ''"
|
|
57814
|
+
[priorYear]="priorYear()"
|
|
57815
|
+
[isCompact]="true"
|
|
57816
|
+
/>
|
|
57817
|
+
}
|
|
57818
|
+
</div>
|
|
57819
|
+
|
|
57820
|
+
<!-- Same Period Last Year -->
|
|
57821
|
+
<div>
|
|
57822
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57823
|
+
Same Period {{ priorYear() }} ({{ ytdDateRange() }})
|
|
57824
|
+
</p>
|
|
57825
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
57826
|
+
{{ formatMetricValue(samePeriodLastYearValue(), metricData()?.metric || '') }}
|
|
57827
|
+
</p>
|
|
57828
|
+
</div>
|
|
57829
|
+
|
|
57830
|
+
<!-- Full Last Year -->
|
|
57831
|
+
<div>
|
|
57832
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57833
|
+
Full {{ priorYear() }} Actual
|
|
57834
|
+
</p>
|
|
57835
|
+
<p [ngClass]="valueClasses()" class="text-xl font-bold">
|
|
57836
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}
|
|
57837
|
+
</p>
|
|
57838
|
+
</div>
|
|
57839
|
+
|
|
57840
|
+
<!-- Current Pace -->
|
|
57841
|
+
@if (pacingInfo()) {
|
|
57842
|
+
<div>
|
|
57843
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57844
|
+
Pace for {{ currentYear() }}
|
|
57845
|
+
</p>
|
|
57846
|
+
<p [ngClass]="projectedValueClasses()" class="text-xl font-bold mb-2">
|
|
57847
|
+
{{ formatMetricValue(pacingInfo()!.projectedValue, metricData()?.metric || '', false) }}
|
|
57848
|
+
</p>
|
|
57849
|
+
<symphiq-pacing-status-badge
|
|
57850
|
+
[viewMode]="viewMode()"
|
|
57851
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
57852
|
+
[status]="pacingInfo()!.status"
|
|
57853
|
+
[showAsFullText]="false"
|
|
57854
|
+
[isCompact]="true"
|
|
57855
|
+
[showEmphasizedPercentage]="true"
|
|
57856
|
+
/>
|
|
57857
|
+
</div>
|
|
57858
|
+
}
|
|
57859
|
+
|
|
57860
|
+
<!-- Current Target -->
|
|
57861
|
+
<div>
|
|
57862
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
57863
|
+
{{ currentYear() }} Target
|
|
57864
|
+
</p>
|
|
57865
|
+
<p [ngClass]="targetValueClasses()" class="text-xl font-bold">
|
|
57866
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
57867
|
+
</p>
|
|
57868
|
+
</div>
|
|
57869
|
+
</div>
|
|
57870
|
+
</div>
|
|
57871
|
+
|
|
57872
|
+
<!-- Target Analysis -->
|
|
57873
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57874
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57875
|
+
Target Analysis
|
|
57876
|
+
</h4>
|
|
57877
|
+
|
|
57878
|
+
<div class="mb-4">
|
|
57879
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
57880
|
+
Your Target
|
|
57881
|
+
</p>
|
|
57882
|
+
<p [ngClass]="targetValueClasses()" class="text-3xl font-extrabold mb-3">
|
|
57883
|
+
{{ formatMetricValue(metricData()?.targetValue || 0, metricData()?.metric || '', false) }}
|
|
57884
|
+
</p>
|
|
57885
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
57886
|
+
Your target represents a {{ formatPercentage(Math.abs(metricData()?.percentageIncrease || 0), 1) }}
|
|
57887
|
+
{{ (metricData()?.percentageIncrease || 0) >= 0 ? 'increase' : 'decrease' }}
|
|
57888
|
+
from your {{ priorYear() }} actual of
|
|
57889
|
+
{{ formatMetricValue(metricData()?.currentValue || 0, metricData()?.metric || '') }}.
|
|
57890
|
+
</p>
|
|
57891
|
+
</div>
|
|
57892
|
+
|
|
57893
|
+
@if (pacingInfo()) {
|
|
57894
|
+
<div class="mb-4">
|
|
57895
|
+
<symphiq-pacing-status-badge
|
|
57896
|
+
[viewMode]="viewMode()"
|
|
57897
|
+
[pacingPercentage]="pacingInfo()!.pacingPercentage"
|
|
57898
|
+
[status]="pacingInfo()!.status"
|
|
57899
|
+
[showAsFullText]="true"
|
|
57900
|
+
[isCompact]="false"
|
|
57901
|
+
[showEmphasizedPercentage]="true"
|
|
57902
|
+
/>
|
|
57903
|
+
</div>
|
|
57904
|
+
|
|
57905
|
+
<div class="mb-4">
|
|
57906
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
57907
|
+
{{ gapAnalysisText() }}
|
|
57908
|
+
</p>
|
|
57909
|
+
</div>
|
|
57910
|
+
|
|
57911
|
+
<!-- Progress Bar -->
|
|
57912
|
+
<div class="space-y-2">
|
|
57913
|
+
<div class="flex justify-between text-xs" [ngClass]="labelClasses()">
|
|
57914
|
+
<span>Progress to Target</span>
|
|
57915
|
+
<span>{{ formatPercentage(progressToTarget(), 1) }}</span>
|
|
57916
|
+
</div>
|
|
57917
|
+
<div [ngClass]="progressBarBgClasses()" class="h-3 rounded-full overflow-hidden">
|
|
57918
|
+
<div
|
|
57919
|
+
[ngClass]="progressBarFillClasses()"
|
|
57920
|
+
[style.width.%]="Math.min(progressToTarget(), 100)"
|
|
57921
|
+
class="h-full transition-all duration-500">
|
|
57922
|
+
</div>
|
|
57923
|
+
</div>
|
|
57924
|
+
</div>
|
|
57925
|
+
}
|
|
57926
|
+
</div>
|
|
57927
|
+
|
|
57928
|
+
<!-- Contributing Metrics Table (only for funnel stage metrics) -->
|
|
57929
|
+
@if (contributingMetrics().length > 0) {
|
|
57930
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6 mb-6">
|
|
57931
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
57932
|
+
Contributing Metrics
|
|
57933
|
+
</h4>
|
|
57934
|
+
<div class="overflow-x-auto">
|
|
57935
|
+
<table class="w-full">
|
|
57936
|
+
<thead>
|
|
57937
|
+
<tr [ngClass]="tableHeaderClasses()" class="border-b">
|
|
57938
|
+
<th class="text-left py-3 px-4 text-xs font-semibold uppercase tracking-wider">Metric</th>
|
|
57939
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Target</th>
|
|
57940
|
+
<th class="text-right py-3 px-4 text-xs font-semibold uppercase tracking-wider">Change</th>
|
|
57941
|
+
</tr>
|
|
57942
|
+
</thead>
|
|
57943
|
+
<tbody>
|
|
57944
|
+
@for (metric of contributingMetrics(); track metric.metric) {
|
|
57945
|
+
<tr [ngClass]="tableRowClasses()" class="border-b transition-colors">
|
|
57946
|
+
<td class="py-3 px-4">
|
|
57947
|
+
<div class="flex items-center gap-2">
|
|
57948
|
+
<span class="text-sm font-medium">{{ getMetricTitle(metric) }}</span>
|
|
57949
|
+
@if (metric.description) {
|
|
57950
|
+
<button
|
|
57951
|
+
type="button"
|
|
57952
|
+
[ngClass]="infoIconClasses()"
|
|
57953
|
+
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
57954
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.description, getMetricTitle(metric))"
|
|
57955
|
+
tooltipType="markdown"
|
|
57956
|
+
tooltipPosition="right">
|
|
57957
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57958
|
+
<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" />
|
|
57959
|
+
</svg>
|
|
57960
|
+
</button>
|
|
57961
|
+
}
|
|
57962
|
+
</div>
|
|
57963
|
+
</td>
|
|
57964
|
+
<td class="py-3 px-4 text-right">
|
|
57965
|
+
<span [ngClass]="targetValueClasses()" class="text-sm font-semibold">
|
|
57966
|
+
{{ formatMetricValue(metric.targetValue, metric.metric, false) }}
|
|
57967
|
+
</span>
|
|
57968
|
+
</td>
|
|
57969
|
+
<td class="py-3 px-4 text-right">
|
|
57970
|
+
<div class="flex items-center justify-end gap-2">
|
|
57971
|
+
<span class="text-sm font-medium">
|
|
57972
|
+
{{ formatPercentage(Math.abs(metric.percentageIncrease), 1) }}
|
|
57973
|
+
</span>
|
|
57974
|
+
<svg
|
|
57975
|
+
[ngClass]="metric.percentageIncrease >= 0 ? 'text-emerald-500' : 'text-red-500'"
|
|
57976
|
+
class="w-4 h-4"
|
|
57977
|
+
fill="none"
|
|
57978
|
+
stroke="currentColor"
|
|
57979
|
+
viewBox="0 0 24 24">
|
|
57980
|
+
<path
|
|
57981
|
+
stroke-linecap="round"
|
|
57982
|
+
stroke-linejoin="round"
|
|
57983
|
+
stroke-width="2"
|
|
57984
|
+
[attr.d]="metric.percentageIncrease >= 0 ? 'M5 10l7-7m0 0l7 7m-7-7v18' : 'M19 14l-7 7m0 0l-7-7m7 7V3'" />
|
|
57985
|
+
</svg>
|
|
57986
|
+
</div>
|
|
57987
|
+
</td>
|
|
57988
|
+
</tr>
|
|
57989
|
+
}
|
|
57990
|
+
</tbody>
|
|
57991
|
+
</table>
|
|
57992
|
+
</div>
|
|
57993
|
+
</div>
|
|
57994
|
+
}
|
|
57995
|
+
|
|
57996
|
+
<!-- Pacing Chart -->
|
|
57997
|
+
@if (pacingChartData()) {
|
|
57998
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-xl p-6">
|
|
57999
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold uppercase tracking-wider mb-4">
|
|
58000
|
+
Pace
|
|
58001
|
+
</h4>
|
|
58002
|
+
<div class="min-h-[400px]">
|
|
58003
|
+
<symphiq-line-chart
|
|
58004
|
+
[chart]="pacingChartData()!"
|
|
58005
|
+
[showAxisLabels]="true"
|
|
58006
|
+
[viewMode]="viewMode()"
|
|
58007
|
+
[currencySymbol]="'$'"
|
|
58008
|
+
/>
|
|
58009
|
+
</div>
|
|
58010
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mt-4">
|
|
58011
|
+
{{ chartDescriptionText() }}
|
|
58012
|
+
</p>
|
|
58013
|
+
</div>
|
|
58014
|
+
}
|
|
58015
|
+
</div>
|
|
58016
|
+
|
|
58017
|
+
<!-- Footer -->
|
|
58018
|
+
<div [ngClass]="footerClasses()" class="px-6 py-4 border-t">
|
|
58019
|
+
<button
|
|
58020
|
+
(click)="close()"
|
|
58021
|
+
[ngClass]="closeFooterButtonClasses()"
|
|
58022
|
+
class="w-full px-4 py-2 rounded-lg transition-all font-medium hover:scale-[1.02] active:scale-[0.98]">
|
|
58023
|
+
Close
|
|
58024
|
+
</button>
|
|
58025
|
+
</div>
|
|
58026
|
+
</div>
|
|
58027
|
+
</div>
|
|
58028
|
+
</div>
|
|
58029
|
+
}
|
|
58030
|
+
`
|
|
58031
|
+
}]
|
|
58032
|
+
}], 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"] }] }); })();
|
|
58033
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricReportModalComponent, { className: "MetricReportModalComponent", filePath: "lib/components/revenue-calculator-dashboard/metric-report-modal.component.ts", lineNumber: 345 }); })();
|
|
58034
|
+
|
|
58035
|
+
const _c0$q = ["absoluteInputRef"];
|
|
56557
58036
|
const _c1$b = ["percentageInputRef"];
|
|
56558
58037
|
function InitialTargetSettingComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56559
58038
|
i0.ɵɵtext(0);
|
|
@@ -56569,8 +58048,8 @@ function InitialTargetSettingComponent_Conditional_6_Template(rf, ctx) { if (rf
|
|
|
56569
58048
|
} }
|
|
56570
58049
|
function InitialTargetSettingComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
56571
58050
|
i0.ɵɵnamespaceSVG();
|
|
56572
|
-
i0.ɵɵelementStart(0, "svg",
|
|
56573
|
-
i0.ɵɵelement(1, "path",
|
|
58051
|
+
i0.ɵɵelementStart(0, "svg", 34);
|
|
58052
|
+
i0.ɵɵelement(1, "path", 35);
|
|
56574
58053
|
i0.ɵɵelementEnd();
|
|
56575
58054
|
} if (rf & 2) {
|
|
56576
58055
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56582,17 +58061,17 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
|
|
|
56582
58061
|
i0.ɵɵelementStart(0, "div", 11);
|
|
56583
58062
|
i0.ɵɵnamespaceSVG();
|
|
56584
58063
|
i0.ɵɵelementStart(1, "svg", 12);
|
|
56585
|
-
i0.ɵɵelement(2, "path",
|
|
58064
|
+
i0.ɵɵelement(2, "path", 36);
|
|
56586
58065
|
i0.ɵɵelementEnd();
|
|
56587
58066
|
i0.ɵɵnamespaceHTML();
|
|
56588
|
-
i0.ɵɵelementStart(3, "div")(4, "div",
|
|
58067
|
+
i0.ɵɵelementStart(3, "div")(4, "div", 37)(5, "p", 14);
|
|
56589
58068
|
i0.ɵɵtext(6, " Current Pace Projection ");
|
|
56590
58069
|
i0.ɵɵelementEnd();
|
|
56591
|
-
i0.ɵɵelementStart(7, "button",
|
|
58070
|
+
i0.ɵɵelementStart(7, "button", 38);
|
|
56592
58071
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_21_Template_button_click_7_listener($event) { i0.ɵɵrestoreView(_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
56593
58072
|
i0.ɵɵnamespaceSVG();
|
|
56594
|
-
i0.ɵɵelementStart(8, "svg",
|
|
56595
|
-
i0.ɵɵelement(9, "path",
|
|
58073
|
+
i0.ɵɵelementStart(8, "svg", 39);
|
|
58074
|
+
i0.ɵɵelement(9, "path", 40);
|
|
56596
58075
|
i0.ɵɵelementEnd()()();
|
|
56597
58076
|
i0.ɵɵnamespaceHTML();
|
|
56598
58077
|
i0.ɵɵelementStart(10, "p", 15);
|
|
@@ -56613,10 +58092,10 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
|
|
|
56613
58092
|
} }
|
|
56614
58093
|
function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56615
58094
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
56616
|
-
i0.ɵɵelementStart(0, "div",
|
|
58095
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "span", 45);
|
|
56617
58096
|
i0.ɵɵtext(2, " $ ");
|
|
56618
58097
|
i0.ɵɵelementEnd();
|
|
56619
|
-
i0.ɵɵelementStart(3, "input",
|
|
58098
|
+
i0.ɵɵelementStart(3, "input", 46, 0);
|
|
56620
58099
|
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
58100
|
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
58101
|
i0.ɵɵelementEnd()();
|
|
@@ -56630,11 +58109,11 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_5_Template(rf,
|
|
|
56630
58109
|
} }
|
|
56631
58110
|
function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
56632
58111
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
56633
|
-
i0.ɵɵelementStart(0, "div",
|
|
58112
|
+
i0.ɵɵelementStart(0, "div", 43)(1, "input", 47, 1);
|
|
56634
58113
|
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
58114
|
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
58115
|
i0.ɵɵelementEnd();
|
|
56637
|
-
i0.ɵɵelementStart(3, "span",
|
|
58116
|
+
i0.ɵɵelementStart(3, "span", 48);
|
|
56638
58117
|
i0.ɵɵtext(4, " % ");
|
|
56639
58118
|
i0.ɵɵelementEnd()();
|
|
56640
58119
|
} if (rf & 2) {
|
|
@@ -56647,7 +58126,7 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_6_Template(rf,
|
|
|
56647
58126
|
} }
|
|
56648
58127
|
function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
56649
58128
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
56650
|
-
i0.ɵɵelementStart(0, "div",
|
|
58129
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "button", 49);
|
|
56651
58130
|
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
58131
|
i0.ɵɵtext(2, " Cancel ");
|
|
56653
58132
|
i0.ɵɵelementEnd()();
|
|
@@ -56658,16 +58137,16 @@ function InitialTargetSettingComponent_Conditional_25_Conditional_7_Template(rf,
|
|
|
56658
58137
|
} }
|
|
56659
58138
|
function InitialTargetSettingComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
56660
58139
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
56661
|
-
i0.ɵɵelementStart(0, "div",
|
|
58140
|
+
i0.ɵɵelementStart(0, "div", 41)(1, "button", 42);
|
|
56662
58141
|
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
58142
|
i0.ɵɵtext(2, " Absolute Amount ");
|
|
56664
58143
|
i0.ɵɵelementEnd();
|
|
56665
|
-
i0.ɵɵelementStart(3, "button",
|
|
58144
|
+
i0.ɵɵelementStart(3, "button", 42);
|
|
56666
58145
|
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
58146
|
i0.ɵɵtext(4, " % Increase ");
|
|
56668
58147
|
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",
|
|
58148
|
+
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_25_Conditional_5_Template, 5, 3, "div", 43)(6, InitialTargetSettingComponent_Conditional_25_Conditional_6_Template, 5, 3, "div", 43);
|
|
58149
|
+
i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_25_Conditional_7_Template, 3, 1, "div", 44);
|
|
56671
58150
|
} if (rf & 2) {
|
|
56672
58151
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56673
58152
|
i0.ɵɵadvance();
|
|
@@ -56686,7 +58165,7 @@ function InitialTargetSettingComponent_Conditional_32_Template(rf, ctx) { if (rf
|
|
|
56686
58165
|
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "108px");
|
|
56687
58166
|
} }
|
|
56688
58167
|
function InitialTargetSettingComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
56689
|
-
i0.ɵɵelementStart(0, "div", 24)(1, "p",
|
|
58168
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
|
|
56690
58169
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56691
58170
|
i0.ɵɵelementEnd()();
|
|
56692
58171
|
} if (rf & 2) {
|
|
@@ -56708,7 +58187,7 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_8_Template(rf,
|
|
|
56708
58187
|
} }
|
|
56709
58188
|
function InitialTargetSettingComponent_Conditional_36_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
56710
58189
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
56711
|
-
i0.ɵɵelementStart(0, "button",
|
|
58190
|
+
i0.ɵɵelementStart(0, "button", 64);
|
|
56712
58191
|
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
58192
|
i0.ɵɵtext(1, " Adjust Revenue Target ");
|
|
56714
58193
|
i0.ɵɵelementEnd();
|
|
@@ -56754,30 +58233,30 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Conditional
|
|
|
56754
58233
|
} }
|
|
56755
58234
|
function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
56756
58235
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
56757
|
-
i0.ɵɵelementStart(0, "div",
|
|
56758
|
-
i0.ɵɵelement(2, "div",
|
|
56759
|
-
i0.ɵɵelementStart(3, "span",
|
|
58236
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "div", 58);
|
|
58237
|
+
i0.ɵɵelement(2, "div", 59);
|
|
58238
|
+
i0.ɵɵelementStart(3, "span", 60);
|
|
56760
58239
|
i0.ɵɵtext(4);
|
|
56761
58240
|
i0.ɵɵelementEnd();
|
|
56762
|
-
i0.ɵɵelement(5, "div",
|
|
58241
|
+
i0.ɵɵelement(5, "div", 59);
|
|
56763
58242
|
i0.ɵɵelementEnd();
|
|
56764
|
-
i0.ɵɵelementStart(6, "div",
|
|
58243
|
+
i0.ɵɵelementStart(6, "div", 61)(7, "div")(8, "p", 62);
|
|
56765
58244
|
i0.ɵɵtext(9, " Gap to Close ");
|
|
56766
58245
|
i0.ɵɵelementEnd();
|
|
56767
|
-
i0.ɵɵelementStart(10, "p",
|
|
58246
|
+
i0.ɵɵelementStart(10, "p", 63);
|
|
56768
58247
|
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
58248
|
i0.ɵɵelementEnd()();
|
|
56770
|
-
i0.ɵɵelementStart(13, "div")(14, "div",
|
|
58249
|
+
i0.ɵɵelementStart(13, "div")(14, "div", 65)(15, "p", 14);
|
|
56771
58250
|
i0.ɵɵtext(16, " Additional Growth Needed ");
|
|
56772
58251
|
i0.ɵɵelementEnd();
|
|
56773
|
-
i0.ɵɵelementStart(17, "button",
|
|
58252
|
+
i0.ɵɵelementStart(17, "button", 38);
|
|
56774
58253
|
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template_button_click_17_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
56775
58254
|
i0.ɵɵnamespaceSVG();
|
|
56776
|
-
i0.ɵɵelementStart(18, "svg",
|
|
56777
|
-
i0.ɵɵelement(19, "path",
|
|
58255
|
+
i0.ɵɵelementStart(18, "svg", 39);
|
|
58256
|
+
i0.ɵɵelement(19, "path", 40);
|
|
56778
58257
|
i0.ɵɵelementEnd()()();
|
|
56779
58258
|
i0.ɵɵnamespaceHTML();
|
|
56780
|
-
i0.ɵɵelementStart(20, "p",
|
|
58259
|
+
i0.ɵɵelementStart(20, "p", 63);
|
|
56781
58260
|
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
58261
|
i0.ɵɵelementEnd()()()();
|
|
56783
58262
|
} if (rf & 2) {
|
|
@@ -56806,34 +58285,34 @@ function InitialTargetSettingComponent_Conditional_36_Conditional_31_Template(rf
|
|
|
56806
58285
|
i0.ɵɵconditional(ctx_r0.isTargetValid() ? 21 : 22);
|
|
56807
58286
|
} }
|
|
56808
58287
|
function InitialTargetSettingComponent_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
56809
|
-
i0.ɵɵelementStart(0, "div",
|
|
58288
|
+
i0.ɵɵelementStart(0, "div", 51)(1, "div")(2, "div", 52)(3, "div")(4, "p", 14);
|
|
56810
58289
|
i0.ɵɵtext(5);
|
|
56811
58290
|
i0.ɵɵelementEnd();
|
|
56812
|
-
i0.ɵɵelementStart(6, "p",
|
|
58291
|
+
i0.ɵɵelementStart(6, "p", 53);
|
|
56813
58292
|
i0.ɵɵconditionalCreate(7, InitialTargetSettingComponent_Conditional_36_Conditional_7_Template, 1, 1)(8, InitialTargetSettingComponent_Conditional_36_Conditional_8_Template, 1, 1);
|
|
56814
58293
|
i0.ɵɵelementEnd()();
|
|
56815
|
-
i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button",
|
|
58294
|
+
i0.ɵɵconditionalCreate(9, InitialTargetSettingComponent_Conditional_36_Conditional_9_Template, 2, 1, "button", 54);
|
|
56816
58295
|
i0.ɵɵelementEnd();
|
|
56817
|
-
i0.ɵɵelementStart(10, "div",
|
|
56818
|
-
i0.ɵɵelement(14, "div",
|
|
56819
|
-
i0.ɵɵelementStart(15, "span",
|
|
58296
|
+
i0.ɵɵelementStart(10, "div", 55)(11, "div", 56)(12, "div", 57)(13, "div", 58);
|
|
58297
|
+
i0.ɵɵelement(14, "div", 59);
|
|
58298
|
+
i0.ɵɵelementStart(15, "span", 60);
|
|
56820
58299
|
i0.ɵɵtext(16);
|
|
56821
58300
|
i0.ɵɵelementEnd();
|
|
56822
|
-
i0.ɵɵelement(17, "div",
|
|
58301
|
+
i0.ɵɵelement(17, "div", 59);
|
|
56823
58302
|
i0.ɵɵelementEnd();
|
|
56824
|
-
i0.ɵɵelementStart(18, "div",
|
|
58303
|
+
i0.ɵɵelementStart(18, "div", 61)(19, "div")(20, "p", 62);
|
|
56825
58304
|
i0.ɵɵtext(21, " Increase Amount ");
|
|
56826
58305
|
i0.ɵɵelementEnd();
|
|
56827
|
-
i0.ɵɵelementStart(22, "p",
|
|
58306
|
+
i0.ɵɵelementStart(22, "p", 63);
|
|
56828
58307
|
i0.ɵɵconditionalCreate(23, InitialTargetSettingComponent_Conditional_36_Conditional_23_Template, 1, 1)(24, InitialTargetSettingComponent_Conditional_36_Conditional_24_Template, 1, 0);
|
|
56829
58308
|
i0.ɵɵelementEnd()();
|
|
56830
|
-
i0.ɵɵelementStart(25, "div")(26, "p",
|
|
58309
|
+
i0.ɵɵelementStart(25, "div")(26, "p", 62);
|
|
56831
58310
|
i0.ɵɵtext(27, " % Growth ");
|
|
56832
58311
|
i0.ɵɵelementEnd();
|
|
56833
|
-
i0.ɵɵelementStart(28, "p",
|
|
58312
|
+
i0.ɵɵelementStart(28, "p", 63);
|
|
56834
58313
|
i0.ɵɵconditionalCreate(29, InitialTargetSettingComponent_Conditional_36_Conditional_29_Template, 1, 1)(30, InitialTargetSettingComponent_Conditional_36_Conditional_30_Template, 1, 0);
|
|
56835
58314
|
i0.ɵɵelementEnd()()()();
|
|
56836
|
-
i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div",
|
|
58315
|
+
i0.ɵɵconditionalCreate(31, InitialTargetSettingComponent_Conditional_36_Conditional_31_Template, 23, 12, "div", 57);
|
|
56837
58316
|
i0.ɵɵelementEnd()()()();
|
|
56838
58317
|
} if (rf & 2) {
|
|
56839
58318
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56882,7 +58361,7 @@ function InitialTargetSettingComponent_Conditional_37_Conditional_4_Template(rf,
|
|
|
56882
58361
|
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
|
|
56883
58362
|
} }
|
|
56884
58363
|
function InitialTargetSettingComponent_Conditional_37_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56885
|
-
i0.ɵɵelementStart(0, "div", 24)(1, "p",
|
|
58364
|
+
i0.ɵɵelementStart(0, "div", 24)(1, "p", 50);
|
|
56886
58365
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56887
58366
|
i0.ɵɵelementEnd()();
|
|
56888
58367
|
} if (rf & 2) {
|
|
@@ -56919,14 +58398,16 @@ function InitialTargetSettingComponent_Conditional_40_Conditional_6_Template(rf,
|
|
|
56919
58398
|
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
58399
|
} }
|
|
56921
58400
|
function InitialTargetSettingComponent_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
56922
|
-
|
|
58401
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
58402
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "div", 66)(2, "h2", 67);
|
|
56923
58403
|
i0.ɵɵtext(3, " Contributing Metrics ");
|
|
56924
58404
|
i0.ɵɵelementEnd();
|
|
56925
|
-
i0.ɵɵelementStart(4, "p",
|
|
58405
|
+
i0.ɵɵelementStart(4, "p", 50);
|
|
56926
58406
|
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_40_Conditional_5_Template, 1, 1)(6, InitialTargetSettingComponent_Conditional_40_Conditional_6_Template, 1, 1);
|
|
56927
58407
|
i0.ɵɵelementEnd()();
|
|
56928
|
-
i0.ɵɵ
|
|
56929
|
-
i0.ɵɵ
|
|
58408
|
+
i0.ɵɵelementStart(7, "symphiq-funnel-metrics-visualization", 68);
|
|
58409
|
+
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)); });
|
|
58410
|
+
i0.ɵɵelementEnd()();
|
|
56930
58411
|
} if (rf & 2) {
|
|
56931
58412
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56932
58413
|
i0.ɵɵproperty("ngClass", ctx_r0.sectionCardClasses());
|
|
@@ -56959,6 +58440,22 @@ class InitialTargetSettingComponent {
|
|
|
56959
58440
|
this.storedResponse = signal(null, ...(ngDevMode ? [{ debugName: "storedResponse" }] : []));
|
|
56960
58441
|
this.submittedAbsoluteInput = signal(null, ...(ngDevMode ? [{ debugName: "submittedAbsoluteInput" }] : []));
|
|
56961
58442
|
this.detailsExpanded = signal(false, ...(ngDevMode ? [{ debugName: "detailsExpanded" }] : []));
|
|
58443
|
+
this.isMetricReportOpen = signal(false, ...(ngDevMode ? [{ debugName: "isMetricReportOpen" }] : []));
|
|
58444
|
+
this.selectedMetricEnum = signal('', ...(ngDevMode ? [{ debugName: "selectedMetricEnum" }] : []));
|
|
58445
|
+
this.selectedMetricData = computed(() => {
|
|
58446
|
+
const metricEnum = this.selectedMetricEnum();
|
|
58447
|
+
const calcs = this.displayedMetricCalculations();
|
|
58448
|
+
return calcs.find(c => c.metric === metricEnum);
|
|
58449
|
+
}, ...(ngDevMode ? [{ debugName: "selectedMetricData" }] : []));
|
|
58450
|
+
this.selectedContributingMetrics = computed(() => {
|
|
58451
|
+
const metricEnum = this.selectedMetricEnum();
|
|
58452
|
+
const calcs = this.displayedMetricCalculations();
|
|
58453
|
+
const selectedMetric = calcs.find(c => c.metric === metricEnum);
|
|
58454
|
+
if (!selectedMetric || !selectedMetric.isFunnelStage) {
|
|
58455
|
+
return [];
|
|
58456
|
+
}
|
|
58457
|
+
return calcs.filter(c => !c.isFunnelStage && c.funnelMetric === metricEnum);
|
|
58458
|
+
}, ...(ngDevMode ? [{ debugName: "selectedContributingMetrics" }] : []));
|
|
56962
58459
|
this.animatedIncreaseAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedIncreaseAmount" }] : []));
|
|
56963
58460
|
this.animatedPercentageGrowth = signal(0, ...(ngDevMode ? [{ debugName: "animatedPercentageGrowth" }] : []));
|
|
56964
58461
|
this.animatedGapAmount = signal(0, ...(ngDevMode ? [{ debugName: "animatedGapAmount" }] : []));
|
|
@@ -57466,15 +58963,23 @@ class InitialTargetSettingComponent {
|
|
|
57466
58963
|
? 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300'
|
|
57467
58964
|
: 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700';
|
|
57468
58965
|
}
|
|
58966
|
+
openMetricReport(metricEnum) {
|
|
58967
|
+
this.selectedMetricEnum.set(metricEnum);
|
|
58968
|
+
this.isMetricReportOpen.set(true);
|
|
58969
|
+
}
|
|
58970
|
+
closeMetricReport() {
|
|
58971
|
+
this.isMetricReportOpen.set(false);
|
|
58972
|
+
this.selectedMetricEnum.set('');
|
|
58973
|
+
}
|
|
57469
58974
|
static { this.ɵfac = function InitialTargetSettingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InitialTargetSettingComponent)(); }; }
|
|
57470
58975
|
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$
|
|
58976
|
+
i0.ɵɵviewQuery(_c0$q, 5);
|
|
57472
58977
|
i0.ɵɵviewQuery(_c1$b, 5);
|
|
57473
58978
|
} if (rf & 2) {
|
|
57474
58979
|
let _t;
|
|
57475
58980
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
|
|
57476
58981
|
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:
|
|
58982
|
+
} }, 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
58983
|
i0.ɵɵelementStart(0, "div", 2);
|
|
57479
58984
|
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
57480
58985
|
i0.ɵɵelementStart(2, "div", 3);
|
|
@@ -57519,6 +59024,9 @@ class InitialTargetSettingComponent {
|
|
|
57519
59024
|
i0.ɵɵelementEnd()();
|
|
57520
59025
|
i0.ɵɵelementStart(41, "symphiq-sticky-submit-bar", 32);
|
|
57521
59026
|
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(); });
|
|
59027
|
+
i0.ɵɵelementEnd();
|
|
59028
|
+
i0.ɵɵelementStart(42, "symphiq-metric-report-modal", 33);
|
|
59029
|
+
i0.ɵɵlistener("closed", function InitialTargetSettingComponent_Template_symphiq_metric_report_modal_closed_42_listener() { return ctx.closeMetricReport(); });
|
|
57522
59030
|
i0.ɵɵelementEnd()();
|
|
57523
59031
|
} if (rf & 2) {
|
|
57524
59032
|
i0.ɵɵadvance(2);
|
|
@@ -57570,11 +59078,14 @@ class InitialTargetSettingComponent {
|
|
|
57570
59078
|
i0.ɵɵconditional(ctx.showMetricsVisualization() ? 40 : -1);
|
|
57571
59079
|
i0.ɵɵadvance();
|
|
57572
59080
|
i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
|
|
59081
|
+
i0.ɵɵadvance();
|
|
59082
|
+
i0.ɵɵproperty("viewMode", ctx.viewMode())("metricEnum", ctx.selectedMetricEnum())("metricData", ctx.selectedMetricData())("contributingMetrics", ctx.selectedContributingMetrics())("pacingMetrics", ctx.pacingMetrics())("isOpen", ctx.isMetricReportOpen());
|
|
57573
59083
|
} }, 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
59084
|
StickySubmitBarComponent,
|
|
57575
59085
|
AreaChartComponent,
|
|
57576
59086
|
TooltipDirective,
|
|
57577
|
-
TooltipContainerComponent
|
|
59087
|
+
TooltipContainerComponent,
|
|
59088
|
+
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
59089
|
}
|
|
57579
59090
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InitialTargetSettingComponent, [{
|
|
57580
59091
|
type: Component,
|
|
@@ -57585,378 +59096,392 @@ class InitialTargetSettingComponent {
|
|
|
57585
59096
|
StickySubmitBarComponent,
|
|
57586
59097
|
AreaChartComponent,
|
|
57587
59098
|
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
|
-
|
|
59099
|
+
TooltipContainerComponent,
|
|
59100
|
+
MetricReportModalComponent
|
|
59101
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
59102
|
+
<div class="space-y-8 pb-32">
|
|
59103
|
+
<symphiq-tooltip-container />
|
|
59104
|
+
<div [ngClass]="sectionCardClasses(true)" class="rounded-2xl border shadow-lg p-8"
|
|
59105
|
+
[class.cursor-pointer]="calculationState() === 'results'"
|
|
59106
|
+
[class.lg:sticky]="calculationState() === 'results'"
|
|
59107
|
+
[style.top]="calculationState() === 'results' ? '148px' : 'auto'"
|
|
59108
|
+
[class.z-30]="calculationState() === 'results'"
|
|
59109
|
+
(click)="onCardClick()">
|
|
59110
|
+
<div class="flex items-center justify-between mb-6">
|
|
59111
|
+
<h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold">
|
|
59112
|
+
@if (calculationState() === 'results') {
|
|
59113
|
+
Your {{ currentYear() }} Revenue Target
|
|
59114
|
+
} @else {
|
|
59115
|
+
Calculate Your {{ currentYear() }} Revenue Target
|
|
59116
|
+
}
|
|
59117
|
+
</h2>
|
|
59118
|
+
@if (calculationState() === 'results') {
|
|
59119
|
+
<svg
|
|
59120
|
+
class="w-6 h-6 chevron-rotate"
|
|
59121
|
+
[class.chevron-rotate-expanded]="detailsExpanded()"
|
|
59122
|
+
[ngClass]="chevronClasses()"
|
|
59123
|
+
fill="none"
|
|
59124
|
+
stroke="currentColor"
|
|
59125
|
+
viewBox="0 0 24 24">
|
|
59126
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
|
|
59127
|
+
</svg>
|
|
59128
|
+
}
|
|
59129
|
+
</div>
|
|
59130
|
+
|
|
59131
|
+
<div class="flex flex-col gap-4">
|
|
59132
|
+
<div class="grid lg:grid-cols-2 gap-4">
|
|
59133
|
+
<div class="flex flex-col gap-4">
|
|
59134
|
+
<div [ngClass]="formAreaClasses()" class="p-6 rounded-xl border-2" [class.cursor-pointer]="calculationState() === 'results'" (click)="onCardClick(); $event.stopPropagation()">
|
|
59135
|
+
<div class="flex flex-wrap gap-4 place-content-between">
|
|
59136
|
+
<div class="flex items-center gap-2">
|
|
59137
|
+
<svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59138
|
+
<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>
|
|
59139
|
+
</svg>
|
|
59140
|
+
<div>
|
|
59141
|
+
<p [ngClass]="baselineLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59142
|
+
{{ priorYear() }} Revenue
|
|
59143
|
+
</p>
|
|
59144
|
+
<p [ngClass]="baselineValueClasses()" class="text-lg font-bold">
|
|
59145
|
+
{{ formatCurrency(priorYearRevenue()) }}
|
|
59146
|
+
</p>
|
|
59147
|
+
</div>
|
|
59148
|
+
</div>
|
|
59149
|
+
@if (currentPaceProjection() > 0) {
|
|
59150
|
+
<div class="flex items-center gap-2">
|
|
59151
|
+
<svg class="w-4 h-4" [ngClass]="projectionIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59152
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
|
|
59153
|
+
</svg>
|
|
59154
|
+
<div>
|
|
59155
|
+
<div class="flex items-center gap-1">
|
|
59156
|
+
<p [ngClass]="projectionLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59157
|
+
Current Pace Projection
|
|
59158
|
+
</p>
|
|
59159
|
+
<button
|
|
59160
|
+
type="button"
|
|
59161
|
+
[ngClass]="infoIconClasses()"
|
|
59162
|
+
class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
|
|
59163
|
+
[libSymphiqTooltip]="currentPaceProjectionTooltip"
|
|
59164
|
+
tooltipType="markdown"
|
|
59165
|
+
tooltipPosition="top"
|
|
59166
|
+
(click)="$event.stopPropagation()">
|
|
59167
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59168
|
+
<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" />
|
|
59169
|
+
</svg>
|
|
59170
|
+
</button>
|
|
59171
|
+
</div>
|
|
59172
|
+
<p [ngClass]="projectionValueClasses()" class="text-lg font-bold">
|
|
59173
|
+
{{ formatCurrency(currentPaceProjection()) }}
|
|
59174
|
+
</p>
|
|
59175
|
+
</div>
|
|
59176
|
+
</div>
|
|
59177
|
+
}
|
|
59178
|
+
</div>
|
|
59179
|
+
|
|
59180
|
+
<div class="form-area-collapse" [class.form-area-collapse-hidden]="calculationState() === 'results'" [class.mt-6]="calculationState() !== 'results'">
|
|
59181
|
+
<div class="form-area-content">
|
|
59182
|
+
<div class="space-y-6">
|
|
59183
|
+
@if (calculationState() !== 'results') {
|
|
59184
|
+
<div class="flex gap-2">
|
|
59185
|
+
<button
|
|
59186
|
+
(click)="setInputMode('absolute')"
|
|
59187
|
+
[ngClass]="inputModeButtonClasses('absolute')"
|
|
59188
|
+
class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
|
|
59189
|
+
Absolute Amount
|
|
59190
|
+
</button>
|
|
59191
|
+
<button
|
|
59192
|
+
(click)="setInputMode('percentage')"
|
|
59193
|
+
[ngClass]="inputModeButtonClasses('percentage')"
|
|
59194
|
+
class="flex-1 py-2 px-4 rounded-lg text-sm font-semibold transition-all">
|
|
59195
|
+
% Increase
|
|
59196
|
+
</button>
|
|
59197
|
+
</div>
|
|
59198
|
+
|
|
59199
|
+
@if (inputMode() === 'absolute') {
|
|
59200
|
+
<div class="relative">
|
|
59201
|
+
<span [ngClass]="inputPrefixClasses()" class="absolute left-4 top-1/2 -translate-y-1/2 text-xl font-bold">
|
|
59202
|
+
$
|
|
59203
|
+
</span>
|
|
59204
|
+
<input
|
|
59205
|
+
#absoluteInputRef
|
|
59206
|
+
type="number"
|
|
59207
|
+
[(ngModel)]="absoluteInput"
|
|
59208
|
+
(ngModelChange)="onAbsoluteInputChange()"
|
|
59209
|
+
[ngClass]="inputClasses()"
|
|
59210
|
+
class="w-full pl-10 pr-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
|
|
59211
|
+
placeholder="0"
|
|
59212
|
+
min="0"
|
|
59213
|
+
step="1000">
|
|
59214
|
+
</div>
|
|
59215
|
+
} @else {
|
|
59216
|
+
<div class="relative">
|
|
59217
|
+
<input
|
|
59218
|
+
#percentageInputRef
|
|
59219
|
+
type="number"
|
|
59220
|
+
[(ngModel)]="percentageInput"
|
|
59221
|
+
(ngModelChange)="onPercentageInputChange()"
|
|
59222
|
+
[ngClass]="inputClasses()"
|
|
59223
|
+
class="w-full pr-10 pl-4 py-4 rounded-xl text-2xl font-bold border-2 transition-all"
|
|
59224
|
+
placeholder="0"
|
|
59225
|
+
min="0"
|
|
59226
|
+
max="1000"
|
|
59227
|
+
step="0.1">
|
|
59228
|
+
<span [ngClass]="inputSuffixClasses()" class="absolute right-4 top-1/2 -translate-y-1/2 text-xl font-bold">
|
|
59229
|
+
%
|
|
59230
|
+
</span>
|
|
59231
|
+
</div>
|
|
59232
|
+
}
|
|
59233
|
+
|
|
59234
|
+
@if (hasStoredResponse()) {
|
|
59235
|
+
<div class="flex justify-end">
|
|
59236
|
+
<button
|
|
59237
|
+
(click)="handleCancel()"
|
|
59238
|
+
[ngClass]="cancelButtonClasses()"
|
|
59239
|
+
class="px-4 py-2 rounded-lg text-sm font-semibold transition-all">
|
|
59240
|
+
Cancel
|
|
59241
|
+
</button>
|
|
59242
|
+
</div>
|
|
59243
|
+
}
|
|
59244
|
+
}
|
|
59245
|
+
</div>
|
|
59246
|
+
</div>
|
|
59247
|
+
</div>
|
|
59248
|
+
</div>
|
|
59249
|
+
|
|
59250
|
+
<div class="chart-in-column" [class.chart-in-column-active]="calculationState() === 'results' && detailsExpanded()">
|
|
59251
|
+
<div class="chart-in-column-content">
|
|
59252
|
+
<div>
|
|
59253
|
+
<p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
|
|
59254
|
+
Year-over-Year Revenue Trend
|
|
59255
|
+
</p>
|
|
59256
|
+
<div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
|
|
59257
|
+
@if (revenueChartData()) {
|
|
59258
|
+
<symphiq-area-chart
|
|
59259
|
+
[chart]="revenueChartData()!"
|
|
59260
|
+
[showAxisLabels]="true"
|
|
59261
|
+
[viewMode]="viewMode()"
|
|
59262
|
+
[currencySymbol]="'$'"
|
|
59263
|
+
[height]="'108px'"
|
|
59264
|
+
/>
|
|
59265
|
+
} @else {
|
|
59266
|
+
<div class="h-64 flex items-center justify-center">
|
|
59267
|
+
<p [ngClass]="noDataClasses()" class="text-sm">
|
|
59268
|
+
No revenue data available
|
|
59269
|
+
</p>
|
|
59270
|
+
</div>
|
|
59271
|
+
}
|
|
59272
|
+
</div>
|
|
59273
|
+
</div>
|
|
59274
|
+
</div>
|
|
59275
|
+
</div>
|
|
59276
|
+
</div>
|
|
59277
|
+
|
|
59278
|
+
<div class="calculated-card-enter order-first lg:order-last" [class.calculated-card-enter-active]="calculatedRevenue() > 0">
|
|
59279
|
+
<div class="calculated-card-content">
|
|
59280
|
+
@if (calculatedRevenue() > 0) {
|
|
59281
|
+
<div [ngClass]="calculatedValuesCardClasses()" class="p-6 rounded-xl border-2"
|
|
59282
|
+
[class.h-full]="calculationState() !== 'results' || detailsExpanded()">
|
|
59283
|
+
<div>
|
|
59284
|
+
<div class="flex items-center justify-between">
|
|
59285
|
+
<div>
|
|
59286
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59287
|
+
{{ currentYear() }} Revenue Target
|
|
59288
|
+
</p>
|
|
59289
|
+
<p [ngClass]="calculatedValueClasses()" class="font-bold transition-all duration-300 text-lg"
|
|
59290
|
+
[class.lg:text-3xl]="calculationState() !== 'results' || detailsExpanded()">
|
|
59291
|
+
@if (calculationState() === 'results' && targets() === undefined && submittedAbsoluteInput() !== null) {
|
|
59292
|
+
> {{ formatCurrency(submittedAbsoluteInput()!) }}
|
|
59293
|
+
} @else {
|
|
59294
|
+
{{ formatCurrency(displayedTargetRevenue()) }}
|
|
59295
|
+
}
|
|
59296
|
+
</p>
|
|
59297
|
+
</div>
|
|
59298
|
+
@if (calculationState() === 'results' && targets() === undefined) {
|
|
59299
|
+
<button
|
|
59300
|
+
(click)="handleAdjustTarget(); $event.stopPropagation()"
|
|
59301
|
+
[ngClass]="secondaryButtonClasses()"
|
|
59302
|
+
class="px-4 py-2 rounded-lg text-sm font-semibold transition-all whitespace-nowrap">
|
|
59303
|
+
Adjust Revenue Target
|
|
59304
|
+
</button>
|
|
59305
|
+
}
|
|
59306
|
+
</div>
|
|
59307
|
+
|
|
59308
|
+
<div class="details-collapse" [class.details-collapse-expanded]="calculationState() !== 'results' || detailsExpanded()">
|
|
59309
|
+
<div class="details-collapse-content">
|
|
59310
|
+
<div class="relative pt-6 mt-6">
|
|
59311
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
59312
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59313
|
+
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
59314
|
+
vs. {{ priorYear() }}
|
|
59315
|
+
</span>
|
|
59316
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59317
|
+
</div>
|
|
59318
|
+
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
59319
|
+
<div>
|
|
59320
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59321
|
+
Increase Amount
|
|
59322
|
+
</p>
|
|
59323
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59324
|
+
@if (isTargetValid()) {
|
|
59325
|
+
{{ formatCurrency(animatedIncreaseAmount()) }}
|
|
59326
|
+
} @else {
|
|
59327
|
+
--
|
|
59328
|
+
}
|
|
59329
|
+
</p>
|
|
59330
|
+
</div>
|
|
59331
|
+
<div>
|
|
59332
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59333
|
+
% Growth
|
|
59334
|
+
</p>
|
|
59335
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59336
|
+
@if (isTargetValid()) {
|
|
59337
|
+
+{{ formatPercentage(animatedPercentageGrowth(), 1) }}
|
|
59338
|
+
} @else {
|
|
59339
|
+
--
|
|
59340
|
+
}
|
|
59341
|
+
</p>
|
|
59342
|
+
</div>
|
|
59343
|
+
</div>
|
|
59344
|
+
</div>
|
|
59345
|
+
|
|
59346
|
+
@if (currentPaceProjection() > 0) {
|
|
59347
|
+
<div class="relative pt-6 mt-6">
|
|
59348
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
59349
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59350
|
+
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
59351
|
+
{{ currentYear() }} YTD Gap
|
|
59352
|
+
</span>
|
|
59353
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
59354
|
+
</div>
|
|
59355
|
+
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
59356
|
+
<div>
|
|
59357
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
59358
|
+
Gap to Close
|
|
59359
|
+
</p>
|
|
59360
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59361
|
+
@if (isTargetValid()) {
|
|
59362
|
+
{{ formatCurrency(animatedGapAmount()) }}
|
|
59363
|
+
} @else {
|
|
59364
|
+
--
|
|
59365
|
+
}
|
|
59366
|
+
</p>
|
|
59367
|
+
</div>
|
|
59368
|
+
<div>
|
|
59369
|
+
<div class="flex items-center gap-1 mb-1">
|
|
59370
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
59371
|
+
Additional Growth Needed
|
|
59372
|
+
</p>
|
|
59373
|
+
<button
|
|
59374
|
+
type="button"
|
|
59375
|
+
[ngClass]="infoIconClasses()"
|
|
59376
|
+
class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
|
|
59377
|
+
[libSymphiqTooltip]="additionalGrowthTooltip"
|
|
59378
|
+
tooltipType="markdown"
|
|
59379
|
+
tooltipPosition="top"
|
|
59380
|
+
(click)="$event.stopPropagation()">
|
|
59381
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59382
|
+
<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" />
|
|
59383
|
+
</svg>
|
|
59384
|
+
</button>
|
|
59385
|
+
</div>
|
|
59386
|
+
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
59387
|
+
@if (isTargetValid()) {
|
|
59388
|
+
{{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(animatedGapPercentage(), 1) }}
|
|
59389
|
+
} @else {
|
|
59390
|
+
--
|
|
59391
|
+
}
|
|
59392
|
+
</p>
|
|
59393
|
+
</div>
|
|
59394
|
+
</div>
|
|
59395
|
+
</div>
|
|
59396
|
+
}
|
|
59397
|
+
|
|
59398
|
+
</div>
|
|
59399
|
+
</div>
|
|
59400
|
+
</div>
|
|
59401
|
+
</div>
|
|
59402
|
+
}
|
|
59403
|
+
</div>
|
|
59404
|
+
</div>
|
|
59405
|
+
</div>
|
|
59406
|
+
|
|
59407
|
+
@if (calculationState() !== 'results') {
|
|
59408
|
+
<div class="w-full">
|
|
59409
|
+
<p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
|
|
59410
|
+
Year-over-Year Revenue Trend
|
|
59411
|
+
</p>
|
|
59412
|
+
<div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
|
|
59413
|
+
@if (revenueChartData()) {
|
|
59414
|
+
<symphiq-area-chart
|
|
59415
|
+
[chart]="revenueChartData()!"
|
|
59416
|
+
[showAxisLabels]="true"
|
|
59417
|
+
[viewMode]="viewMode()"
|
|
59418
|
+
[currencySymbol]="'$'"
|
|
59419
|
+
[height]="'320px'"
|
|
59420
|
+
/>
|
|
59421
|
+
} @else {
|
|
59422
|
+
<div class="h-64 flex items-center justify-center">
|
|
59423
|
+
<p [ngClass]="noDataClasses()" class="text-sm">
|
|
59424
|
+
No revenue data available
|
|
59425
|
+
</p>
|
|
59426
|
+
</div>
|
|
59427
|
+
}
|
|
59428
|
+
</div>
|
|
59429
|
+
</div>
|
|
59430
|
+
}
|
|
59431
|
+
</div>
|
|
59432
|
+
</div>
|
|
59433
|
+
|
|
59434
|
+
<div class="metrics-section-enter" [class.metrics-section-enter-active]="showMetricsVisualization()">
|
|
59435
|
+
<div class="metrics-section-content">
|
|
59436
|
+
@if (showMetricsVisualization()) {
|
|
59437
|
+
<div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
|
|
59438
|
+
<div class="mb-6">
|
|
59439
|
+
<h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-2">
|
|
59440
|
+
Contributing Metrics
|
|
59441
|
+
</h2>
|
|
59442
|
+
<p [ngClass]="sectionDescriptionClasses()" class="text-sm">
|
|
59443
|
+
@if (targets() === undefined && submittedAbsoluteInput() !== null) {
|
|
59444
|
+
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.
|
|
59445
|
+
} @else {
|
|
59446
|
+
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.
|
|
59447
|
+
}
|
|
59448
|
+
</p>
|
|
59449
|
+
</div>
|
|
59450
|
+
|
|
59451
|
+
<symphiq-funnel-metrics-visualization
|
|
59452
|
+
[viewMode]="viewMode()"
|
|
59453
|
+
[calculations]="displayedMetricCalculations()"
|
|
59454
|
+
[pacingMetrics]="pacingMetrics()"
|
|
59455
|
+
(viewStageReport)="openMetricReport($event)"
|
|
59456
|
+
(viewRelatedMetricReport)="openMetricReport($event)"
|
|
59457
|
+
/>
|
|
59458
|
+
</div>
|
|
59459
|
+
}
|
|
59460
|
+
</div>
|
|
59461
|
+
</div>
|
|
59462
|
+
|
|
59463
|
+
<symphiq-sticky-submit-bar
|
|
59464
|
+
[viewMode]="viewMode()"
|
|
59465
|
+
[isValid]="isValid()"
|
|
59466
|
+
[isSubmitting]="isCalculating()"
|
|
59467
|
+
[validationMessage]="validationMessage()"
|
|
59468
|
+
[buttonText]="submitButtonText()"
|
|
59469
|
+
[showCancelButton]="calculationState() === 'input' && hasStoredResponse()"
|
|
59470
|
+
(submitClick)="handleSubmitClick()"
|
|
59471
|
+
(cancelClick)="handleCancel()"
|
|
59472
|
+
/>
|
|
59473
|
+
|
|
59474
|
+
<!-- Metric Report Modal -->
|
|
59475
|
+
<symphiq-metric-report-modal
|
|
59476
|
+
[viewMode]="viewMode()"
|
|
59477
|
+
[metricEnum]="selectedMetricEnum()"
|
|
59478
|
+
[metricData]="selectedMetricData()"
|
|
59479
|
+
[contributingMetrics]="selectedContributingMetrics()"
|
|
59480
|
+
[pacingMetrics]="pacingMetrics()"
|
|
59481
|
+
[isOpen]="isMetricReportOpen()"
|
|
59482
|
+
(closed)="closeMetricReport()"
|
|
59483
|
+
/>
|
|
59484
|
+
</div>
|
|
57960
59485
|
`, 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
59486
|
}], () => [], { absoluteInputRef: [{
|
|
57962
59487
|
type: ViewChild,
|
|
@@ -57965,7 +59490,7 @@ class InitialTargetSettingComponent {
|
|
|
57965
59490
|
type: ViewChild,
|
|
57966
59491
|
args: ['percentageInputRef']
|
|
57967
59492
|
}], 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:
|
|
59493
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 535 }); })();
|
|
57969
59494
|
|
|
57970
59495
|
function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
57971
59496
|
i0.ɵɵelement(0, "div", 5);
|
|
@@ -58101,7 +59626,7 @@ class IndeterminateSpinnerComponent {
|
|
|
58101
59626
|
}], 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
59627
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(IndeterminateSpinnerComponent, { className: "IndeterminateSpinnerComponent", filePath: "lib/components/shared/indeterminate-spinner.component.ts", lineNumber: 94 }); })();
|
|
58103
59628
|
|
|
58104
|
-
const _c0$
|
|
59629
|
+
const _c0$p = () => [];
|
|
58105
59630
|
function SymphiqRevenueCalculatorDashboardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
58106
59631
|
i0.ɵɵelementStart(0, "div", 12);
|
|
58107
59632
|
i0.ɵɵelement(1, "symphiq-indeterminate-spinner", 13);
|
|
@@ -58145,7 +59670,7 @@ function SymphiqRevenueCalculatorDashboardComponent_Conditional_25_Template(rf,
|
|
|
58145
59670
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
58146
59671
|
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("dataLoadStatus", ctx_r0.dataLoadStatus() ?? ctx_r0.ShopDataLoadStatusEnum.NOT_LOADED)("hasTargets", false);
|
|
58147
59672
|
i0.ɵɵadvance(2);
|
|
58148
|
-
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(12, _c0$
|
|
59673
|
+
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
59674
|
} }
|
|
58150
59675
|
function SymphiqRevenueCalculatorDashboardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
58151
59676
|
i0.ɵɵelement(0, "symphiq-revenue-calculator-welcome-banner", 14);
|
|
@@ -58950,7 +60475,7 @@ class HierarchyDisplayComponent {
|
|
|
58950
60475
|
}], null, { hierarchyData: [{ type: i0.Input, args: [{ isSignal: true, alias: "hierarchyData", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
58951
60476
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(HierarchyDisplayComponent, { className: "HierarchyDisplayComponent", filePath: "lib/components/business-analysis-dashboard/hierarchy-display.component.ts", lineNumber: 119 }); })();
|
|
58952
60477
|
|
|
58953
|
-
const _c0$
|
|
60478
|
+
const _c0$o = a0 => ({ name: "chart-bar", source: a0 });
|
|
58954
60479
|
const _c1$a = a0 => ({ name: "light-bulb", source: a0 });
|
|
58955
60480
|
function CompetitiveBenchmarkCardComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
58956
60481
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -59146,7 +60671,7 @@ class CompetitiveBenchmarkCardComponent {
|
|
|
59146
60671
|
i0.ɵɵadvance();
|
|
59147
60672
|
i0.ɵɵproperty("ngClass", ctx.getSectionClasses());
|
|
59148
60673
|
i0.ɵɵadvance(2);
|
|
59149
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$
|
|
60674
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$o, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getSectionIconClasses());
|
|
59150
60675
|
i0.ɵɵadvance();
|
|
59151
60676
|
i0.ɵɵproperty("ngClass", ctx.getSectionTitleClasses());
|
|
59152
60677
|
i0.ɵɵadvance(2);
|
|
@@ -59993,7 +61518,7 @@ class SearchButtonComponent {
|
|
|
59993
61518
|
}], 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
61519
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchButtonComponent, { className: "SearchButtonComponent", filePath: "lib/components/shared/search-button.component.ts", lineNumber: 30 }); })();
|
|
59995
61520
|
|
|
59996
|
-
const _c0$
|
|
61521
|
+
const _c0$n = ["searchInput"];
|
|
59997
61522
|
const _forTrack0$h = ($index, $item) => $item.id;
|
|
59998
61523
|
function SearchModalComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
59999
61524
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
@@ -60358,7 +61883,7 @@ class SearchModalComponent {
|
|
|
60358
61883
|
}
|
|
60359
61884
|
static { this.ɵfac = function SearchModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchModalComponent)(); }; }
|
|
60360
61885
|
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$
|
|
61886
|
+
i0.ɵɵviewQuery(_c0$n, 5);
|
|
60362
61887
|
} if (rf & 2) {
|
|
60363
61888
|
let _t;
|
|
60364
61889
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);
|
|
@@ -61255,7 +62780,7 @@ class SimplifiedRecommendationCardComponent {
|
|
|
61255
62780
|
}], 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
62781
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SimplifiedRecommendationCardComponent, { className: "SimplifiedRecommendationCardComponent", filePath: "lib/components/business-analysis-dashboard/simplified-recommendation-card.component.ts", lineNumber: 121 }); })();
|
|
61257
62782
|
|
|
61258
|
-
const _c0$
|
|
62783
|
+
const _c0$m = () => [0, 1, 2];
|
|
61259
62784
|
const _forTrack0$g = ($index, $item) => $item.id;
|
|
61260
62785
|
function RecommendationsTiledGridComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
61261
62786
|
i0.ɵɵelementStart(0, "div", 9);
|
|
@@ -61325,7 +62850,7 @@ function RecommendationsTiledGridComponent_Conditional_15_Template(rf, ctx) { if
|
|
|
61325
62850
|
i0.ɵɵelementEnd();
|
|
61326
62851
|
} if (rf & 2) {
|
|
61327
62852
|
i0.ɵɵadvance();
|
|
61328
|
-
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$
|
|
62853
|
+
i0.ɵɵrepeater(i0.ɵɵpureFunction0(0, _c0$m));
|
|
61329
62854
|
} }
|
|
61330
62855
|
function RecommendationsTiledGridComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
61331
62856
|
i0.ɵɵelementStart(0, "div", 12)(1, "div", 27);
|
|
@@ -62243,7 +63768,7 @@ class ContentGenerationProgressWithConfettiComponent {
|
|
|
62243
63768
|
}], () => [], { 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
63769
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressWithConfettiComponent, { className: "ContentGenerationProgressWithConfettiComponent", filePath: "lib/components/shared/content-generation-progress-with-confetti.component.ts", lineNumber: 29 }); })();
|
|
62245
63770
|
|
|
62246
|
-
const _c0$
|
|
63771
|
+
const _c0$l = () => [];
|
|
62247
63772
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
62248
63773
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
62249
63774
|
i0.ɵɵelementStart(0, "div", 8)(1, "symphiq-search-button", 19);
|
|
@@ -62377,7 +63902,7 @@ function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_
|
|
|
62377
63902
|
const ɵ$index_108_r7 = i0.ɵɵnextContext().$index;
|
|
62378
63903
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
62379
63904
|
i0.ɵɵadvance();
|
|
62380
|
-
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$
|
|
63905
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("subsections", ctx_r1.sections()[ɵ$index_108_r7 + 1].subsections || i0.ɵɵpureFunction0(2, _c0$l));
|
|
62381
63906
|
} }
|
|
62382
63907
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
62383
63908
|
i0.ɵɵelement(0, "symphiq-profile-section", 34);
|
|
@@ -65053,7 +66578,7 @@ class FocusAreaHealthIndicatorComponent {
|
|
|
65053
66578
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], health: [{ type: i0.Input, args: [{ isSignal: true, alias: "health", required: false }] }] }); })();
|
|
65054
66579
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaHealthIndicatorComponent, { className: "FocusAreaHealthIndicatorComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-health-indicator.component.ts", lineNumber: 46 }); })();
|
|
65055
66580
|
|
|
65056
|
-
const _c0$
|
|
66581
|
+
const _c0$k = a0 => ({ name: "chevron-right", source: a0 });
|
|
65057
66582
|
const _forTrack0$e = ($index, $item) => $item.id;
|
|
65058
66583
|
function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
65059
66584
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -65071,7 +66596,7 @@ function RelatedGoalChipsComponent_Conditional_0_For_2_Template(rf, ctx) { if (r
|
|
|
65071
66596
|
i0.ɵɵadvance(2);
|
|
65072
66597
|
i0.ɵɵtextInterpolate(goal_r2.title);
|
|
65073
66598
|
i0.ɵɵadvance();
|
|
65074
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$
|
|
66599
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$k, ctx_r2.IconSourceEnum.HEROICONS));
|
|
65075
66600
|
} }
|
|
65076
66601
|
function RelatedGoalChipsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
65077
66602
|
i0.ɵɵelementStart(0, "div", 0);
|
|
@@ -65144,7 +66669,7 @@ class RelatedGoalChipsComponent {
|
|
|
65144
66669
|
}], 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
66670
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedGoalChipsComponent, { className: "RelatedGoalChipsComponent", filePath: "lib/components/profile-analysis-dashboard/shared/related-goal-chips.component.ts", lineNumber: 31 }); })();
|
|
65146
66671
|
|
|
65147
|
-
const _c0$
|
|
66672
|
+
const _c0$j = a0 => ({ name: "chevron-right", source: a0 });
|
|
65148
66673
|
const _c1$9 = a0 => ({ name: "chevron-down", source: a0 });
|
|
65149
66674
|
const _c2$7 = a0 => [a0];
|
|
65150
66675
|
function FocusAreaExecutiveSummaryComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -65473,7 +66998,7 @@ class FocusAreaExecutiveSummaryComponent {
|
|
|
65473
66998
|
i0.ɵɵadvance(2);
|
|
65474
66999
|
i0.ɵɵproperty("ngClass", ctx.getTopPrioritiesButtonTextClasses());
|
|
65475
67000
|
i0.ɵɵadvance(2);
|
|
65476
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$
|
|
67001
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(22, _c0$j, ctx.IconSourceEnum.HEROICONS))("ngClass", ctx.getTopPrioritiesButtonTextClasses());
|
|
65477
67002
|
i0.ɵɵadvance();
|
|
65478
67003
|
i0.ɵɵproperty("ngClass", ctx.getQuickWinsStatCardClasses());
|
|
65479
67004
|
i0.ɵɵadvance();
|
|
@@ -65684,7 +67209,7 @@ class FocusAreaExecutiveSummaryComponent {
|
|
|
65684
67209
|
}], 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
67210
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FocusAreaExecutiveSummaryComponent, { className: "FocusAreaExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/focus-area-executive-summary.component.ts", lineNumber: 195 }); })();
|
|
65686
67211
|
|
|
65687
|
-
const _c0$
|
|
67212
|
+
const _c0$i = a0 => ({ name: "chart-bar", source: a0 });
|
|
65688
67213
|
const _c1$8 = a0 => ({ name: "signal", source: a0 });
|
|
65689
67214
|
const _c2$6 = (a0, a1) => ({ name: a0, source: a1 });
|
|
65690
67215
|
const _c3$4 = a0 => ({ name: "flag", source: a0 });
|
|
@@ -66220,7 +67745,7 @@ class MetricExecutiveSummaryComponent {
|
|
|
66220
67745
|
i0.ɵɵadvance();
|
|
66221
67746
|
i0.ɵɵproperty("ngClass", ctx.bannerClasses());
|
|
66222
67747
|
i0.ɵɵadvance(5);
|
|
66223
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$
|
|
67748
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(19, _c0$i, ctx.iconSource))("size", "w-8 h-8")("ngClass", ctx.iconClasses());
|
|
66224
67749
|
i0.ɵɵadvance();
|
|
66225
67750
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
66226
67751
|
i0.ɵɵadvance();
|
|
@@ -66539,7 +68064,7 @@ class MetricExecutiveSummaryComponent {
|
|
|
66539
68064
|
}], 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
68065
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricExecutiveSummaryComponent, { className: "MetricExecutiveSummaryComponent", filePath: "lib/components/profile-analysis-dashboard/metric-executive-summary.component.ts", lineNumber: 287 }); })();
|
|
66541
68066
|
|
|
66542
|
-
const _c0$
|
|
68067
|
+
const _c0$h = a0 => ({ name: "chevron-right", source: a0 });
|
|
66543
68068
|
function GoalCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
66544
68069
|
i0.ɵɵelementStart(0, "span", 12);
|
|
66545
68070
|
i0.ɵɵtext(1);
|
|
@@ -66824,7 +68349,7 @@ function GoalCardComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
|
66824
68349
|
i0.ɵɵadvance();
|
|
66825
68350
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.goal().objectives.length, " ");
|
|
66826
68351
|
i0.ɵɵadvance();
|
|
66827
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$
|
|
68352
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(5, _c0$h, ctx_r0.IconSourceEnum.HEROICONS));
|
|
66828
68353
|
} }
|
|
66829
68354
|
function GoalCardComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
66830
68355
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
@@ -67446,7 +68971,7 @@ class GoalCardComponent {
|
|
|
67446
68971
|
}], () => [], { 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
68972
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalCardComponent, { className: "GoalCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/goal-card.component.ts", lineNumber: 239 }); })();
|
|
67448
68973
|
|
|
67449
|
-
const _c0$
|
|
68974
|
+
const _c0$g = a0 => ({ name: "link", source: a0 });
|
|
67450
68975
|
function CapabilityMatrixCardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
67451
68976
|
i0.ɵɵelementStart(0, "p", 4);
|
|
67452
68977
|
i0.ɵɵtext(1);
|
|
@@ -67509,7 +69034,7 @@ function CapabilityMatrixCardComponent_Conditional_29_Template(rf, ctx) { if (rf
|
|
|
67509
69034
|
} if (rf & 2) {
|
|
67510
69035
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
67511
69036
|
i0.ɵɵadvance(2);
|
|
67512
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
69037
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$g, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.relatedGoalsIconClasses());
|
|
67513
69038
|
i0.ɵɵadvance();
|
|
67514
69039
|
i0.ɵɵproperty("ngClass", ctx_r0.relatedGoalsTitleClasses());
|
|
67515
69040
|
i0.ɵɵadvance(2);
|
|
@@ -68428,7 +69953,7 @@ class CompetitiveComparisonCardComponent {
|
|
|
68428
69953
|
}], () => [], { comparison: [{ type: i0.Input, args: [{ isSignal: true, alias: "comparison", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
68429
69954
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompetitiveComparisonCardComponent, { className: "CompetitiveComparisonCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/competitive-comparison-card.component.ts", lineNumber: 125 }); })();
|
|
68430
69955
|
|
|
68431
|
-
const _c0$
|
|
69956
|
+
const _c0$f = a0 => ({ name: "chevron-right", source: a0 });
|
|
68432
69957
|
const _forTrack0$c = ($index, $item) => $item.id;
|
|
68433
69958
|
function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
68434
69959
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -68446,7 +69971,7 @@ function PhaseTimelineCardComponent_Conditional_8_For_7_Template(rf, ctx) { if (
|
|
|
68446
69971
|
i0.ɵɵadvance(2);
|
|
68447
69972
|
i0.ɵɵtextInterpolate(goal_r2.title);
|
|
68448
69973
|
i0.ɵɵadvance();
|
|
68449
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$
|
|
69974
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(3, _c0$f, ctx_r2.IconSourceEnum.HEROICONS));
|
|
68450
69975
|
} }
|
|
68451
69976
|
function PhaseTimelineCardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
68452
69977
|
i0.ɵɵelementStart(0, "div", 7)(1, "h6", 10);
|
|
@@ -68854,7 +70379,7 @@ class PhaseTimelineCardComponent {
|
|
|
68854
70379
|
}], () => [], { 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
70380
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PhaseTimelineCardComponent, { className: "PhaseTimelineCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/phase-timeline-card.component.ts", lineNumber: 123 }); })();
|
|
68856
70381
|
|
|
68857
|
-
const _c0$
|
|
70382
|
+
const _c0$e = a0 => ({ name: "chevron-right", source: a0 });
|
|
68858
70383
|
function OperationalCategoryCardComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
68859
70384
|
i0.ɵɵelementStart(0, "div", 13)(1, "div", 19)(2, "span", 20);
|
|
68860
70385
|
i0.ɵɵtext(3, "Industry Benchmark");
|
|
@@ -68900,7 +70425,7 @@ function OperationalCategoryCardComponent_Conditional_20_Template(rf, ctx) { if
|
|
|
68900
70425
|
i0.ɵɵadvance(4);
|
|
68901
70426
|
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
70427
|
i0.ɵɵadvance();
|
|
68903
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70428
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68904
70429
|
} }
|
|
68905
70430
|
function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
68906
70431
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
@@ -68923,7 +70448,7 @@ function OperationalCategoryCardComponent_Conditional_21_Template(rf, ctx) { if
|
|
|
68923
70448
|
i0.ɵɵadvance(4);
|
|
68924
70449
|
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
70450
|
i0.ɵɵadvance();
|
|
68926
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70451
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68927
70452
|
} }
|
|
68928
70453
|
function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
68929
70454
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
@@ -68946,7 +70471,7 @@ function OperationalCategoryCardComponent_Conditional_22_Template(rf, ctx) { if
|
|
|
68946
70471
|
i0.ɵɵadvance(4);
|
|
68947
70472
|
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
70473
|
i0.ɵɵadvance();
|
|
68949
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
70474
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$e, ctx_r0.IconSourceEnum.HEROICONS));
|
|
68950
70475
|
} }
|
|
68951
70476
|
function OperationalCategoryCardComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
68952
70477
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
@@ -69453,7 +70978,7 @@ class OperationalCategoryCardComponent {
|
|
|
69453
70978
|
}], () => [], { 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
70979
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OperationalCategoryCardComponent, { className: "OperationalCategoryCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/operational-category-card.component.ts", lineNumber: 164 }); })();
|
|
69455
70980
|
|
|
69456
|
-
const _c0$
|
|
70981
|
+
const _c0$d = a0 => ({ name: "arrow-trending-up", source: a0 });
|
|
69457
70982
|
const _c1$7 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
69458
70983
|
const _forTrack0$b = ($index, $item) => $item.questionId;
|
|
69459
70984
|
function KeyDriverCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -69587,7 +71112,7 @@ class KeyDriverCardComponent {
|
|
|
69587
71112
|
i0.ɵɵadvance(3);
|
|
69588
71113
|
i0.ɵɵproperty("ngClass", ctx.iconClasses());
|
|
69589
71114
|
i0.ɵɵadvance();
|
|
69590
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$
|
|
71115
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(10, _c0$d, ctx.iconSource));
|
|
69591
71116
|
i0.ɵɵadvance(2);
|
|
69592
71117
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
69593
71118
|
i0.ɵɵadvance();
|
|
@@ -69663,7 +71188,7 @@ class KeyDriverCardComponent {
|
|
|
69663
71188
|
}], null, { driver: [{ type: i0.Input, args: [{ isSignal: true, alias: "driver", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
69664
71189
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KeyDriverCardComponent, { className: "KeyDriverCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/key-driver-card.component.ts", lineNumber: 73 }); })();
|
|
69665
71190
|
|
|
69666
|
-
const _c0$
|
|
71191
|
+
const _c0$c = a0 => ({ name: "exclamation-triangle", source: a0 });
|
|
69667
71192
|
const _c1$6 = a0 => ({ name: "chat-bubble-left-right", source: a0 });
|
|
69668
71193
|
const _forTrack0$a = ($index, $item) => $item.questionId;
|
|
69669
71194
|
function BottleneckCardComponent_Conditional_12_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -69819,7 +71344,7 @@ class BottleneckCardComponent {
|
|
|
69819
71344
|
i0.ɵɵadvance(3);
|
|
69820
71345
|
i0.ɵɵproperty("ngClass", ctx.iconClasses());
|
|
69821
71346
|
i0.ɵɵadvance();
|
|
69822
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$
|
|
71347
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(14, _c0$c, ctx.iconSource));
|
|
69823
71348
|
i0.ɵɵadvance(2);
|
|
69824
71349
|
i0.ɵɵproperty("ngClass", ctx.titleClasses());
|
|
69825
71350
|
i0.ɵɵadvance();
|
|
@@ -69890,7 +71415,7 @@ class BottleneckCardComponent {
|
|
|
69890
71415
|
}], null, { bottleneck: [{ type: i0.Input, args: [{ isSignal: true, alias: "bottleneck", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
69891
71416
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BottleneckCardComponent, { className: "BottleneckCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/bottleneck-card.component.ts", lineNumber: 104 }); })();
|
|
69892
71417
|
|
|
69893
|
-
const _c0$
|
|
71418
|
+
const _c0$b = a0 => ({ name: "arrow-right", source: a0 });
|
|
69894
71419
|
const _c1$5 = a0 => ({ name: "arrow-left", source: a0 });
|
|
69895
71420
|
const _c2$5 = a0 => ({ name: "arrows-right-left", source: a0 });
|
|
69896
71421
|
const _c3$3 = a0 => ({ name: "scale", source: a0 });
|
|
@@ -69922,7 +71447,7 @@ function MetricRelationshipsCardComponent_Conditional_1_Template(rf, ctx) { if (
|
|
|
69922
71447
|
i0.ɵɵadvance(2);
|
|
69923
71448
|
i0.ɵɵproperty("ngClass", ctx_r1.getIconClasses("influences"));
|
|
69924
71449
|
i0.ɵɵadvance();
|
|
69925
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
71450
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$b, ctx_r1.iconSource));
|
|
69926
71451
|
i0.ɵɵadvance();
|
|
69927
71452
|
i0.ɵɵproperty("ngClass", ctx_r1.titleClasses());
|
|
69928
71453
|
i0.ɵɵadvance(3);
|
|
@@ -70192,7 +71717,7 @@ class MetricRelationshipsCardComponent {
|
|
|
70192
71717
|
}], null, { relationships: [{ type: i0.Input, args: [{ isSignal: true, alias: "relationships", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
70193
71718
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MetricRelationshipsCardComponent, { className: "MetricRelationshipsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/metric-relationships-card.component.ts", lineNumber: 105 }); })();
|
|
70194
71719
|
|
|
70195
|
-
const _c0$
|
|
71720
|
+
const _c0$a = a0 => ({ name: "link", source: a0 });
|
|
70196
71721
|
function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
70197
71722
|
i0.ɵɵelementStart(0, "div", 9);
|
|
70198
71723
|
i0.ɵɵelement(1, "symphiq-icon", 10);
|
|
@@ -70203,7 +71728,7 @@ function RelatedMetricCardComponent_Conditional_13_Template(rf, ctx) { if (rf &
|
|
|
70203
71728
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
70204
71729
|
i0.ɵɵproperty("ngClass", ctx_r0.borderClasses());
|
|
70205
71730
|
i0.ɵɵadvance();
|
|
70206
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
71731
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$a, ctx_r0.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r0.sharedGoalsIconClasses());
|
|
70207
71732
|
i0.ɵɵadvance();
|
|
70208
71733
|
i0.ɵɵproperty("ngClass", ctx_r0.sharedGoalsTextClasses());
|
|
70209
71734
|
i0.ɵɵadvance();
|
|
@@ -70872,7 +72397,7 @@ class RelatedMetricsListComponent {
|
|
|
70872
72397
|
}], 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
72398
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RelatedMetricsListComponent, { className: "RelatedMetricsListComponent", filePath: "lib/components/profile-analysis-dashboard/cards/related-metrics-list.component.ts", lineNumber: 170 }); })();
|
|
70874
72399
|
|
|
70875
|
-
const _c0$
|
|
72400
|
+
const _c0$9 = (a0, a1) => ({ name: a0, source: a1 });
|
|
70876
72401
|
const _c1$4 = a0 => ({ name: "signal", source: a0 });
|
|
70877
72402
|
const _c2$4 = a0 => ({ name: "calendar", source: a0 });
|
|
70878
72403
|
const _c3$2 = a0 => ({ name: "flag", source: a0 });
|
|
@@ -71082,7 +72607,7 @@ class PerformanceMetricsCardComponent {
|
|
|
71082
72607
|
i0.ɵɵadvance();
|
|
71083
72608
|
i0.ɵɵproperty("ngClass", ctx.trendBadgeClasses());
|
|
71084
72609
|
i0.ɵɵadvance();
|
|
71085
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$
|
|
72610
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(32, _c0$9, ctx.trendIcon(), ctx.iconSource));
|
|
71086
72611
|
i0.ɵɵadvance();
|
|
71087
72612
|
i0.ɵɵtextInterpolate1(" ", ctx.metrics().trendDirection, " ");
|
|
71088
72613
|
i0.ɵɵadvance(2);
|
|
@@ -71230,7 +72755,7 @@ class PerformanceMetricsCardComponent {
|
|
|
71230
72755
|
}], () => [], { performanceMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "performanceMetrics", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }] }); })();
|
|
71231
72756
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceMetricsCardComponent, { className: "PerformanceMetricsCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-metrics-card.component.ts", lineNumber: 144 }); })();
|
|
71232
72757
|
|
|
71233
|
-
const _c0$
|
|
72758
|
+
const _c0$8 = a0 => ({ name: "funnel", source: a0 });
|
|
71234
72759
|
const _c1$3 = a0 => ({ name: "chart-bar-square", source: a0 });
|
|
71235
72760
|
const _c2$3 = a0 => ({ name: "chevron-right", source: a0 });
|
|
71236
72761
|
const _c3$1 = a0 => ({ name: "arrow-left", source: a0 });
|
|
@@ -71421,7 +72946,7 @@ class FunnelContextCardComponent {
|
|
|
71421
72946
|
} if (rf & 2) {
|
|
71422
72947
|
i0.ɵɵproperty("ngClass", ctx.cardClasses());
|
|
71423
72948
|
i0.ɵɵadvance(2);
|
|
71424
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$
|
|
72949
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(13, _c0$8, ctx.iconSource))("ngClass", ctx.iconClasses());
|
|
71425
72950
|
i0.ɵɵadvance();
|
|
71426
72951
|
i0.ɵɵproperty("ngClass", ctx.headerClasses());
|
|
71427
72952
|
i0.ɵɵadvance(3);
|
|
@@ -71557,7 +73082,7 @@ class FunnelContextCardComponent {
|
|
|
71557
73082
|
}], () => [], { 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
73083
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelContextCardComponent, { className: "FunnelContextCardComponent", filePath: "lib/components/profile-analysis-dashboard/cards/funnel-context-card.component.ts", lineNumber: 125 }); })();
|
|
71559
73084
|
|
|
71560
|
-
const _c0$
|
|
73085
|
+
const _c0$7 = (a0, a1) => ({ name: a0, source: a1 });
|
|
71561
73086
|
const _c1$2 = a0 => ({ name: "target", source: a0 });
|
|
71562
73087
|
const _c2$2 = a0 => ({ name: "star", source: a0 });
|
|
71563
73088
|
class MetricComparisonStatsComponent {
|
|
@@ -71768,7 +73293,7 @@ class MetricComparisonStatsComponent {
|
|
|
71768
73293
|
i0.ɵɵadvance();
|
|
71769
73294
|
i0.ɵɵproperty("ngClass", ctx.statCardClasses());
|
|
71770
73295
|
i0.ɵɵadvance(2);
|
|
71771
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$
|
|
73296
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction2(24, _c0$7, ctx.yoyIcon(), ctx.iconSource))("ngClass", ctx.yoyIconClasses());
|
|
71772
73297
|
i0.ɵɵadvance();
|
|
71773
73298
|
i0.ɵɵproperty("ngClass", ctx.labelClasses());
|
|
71774
73299
|
i0.ɵɵadvance(2);
|
|
@@ -72000,7 +73525,7 @@ class PerformanceOverviewContainerComponent {
|
|
|
72000
73525
|
}], () => [], { 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
73526
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PerformanceOverviewContainerComponent, { className: "PerformanceOverviewContainerComponent", filePath: "lib/components/profile-analysis-dashboard/cards/performance-overview-container.component.ts", lineNumber: 58 }); })();
|
|
72002
73527
|
|
|
72003
|
-
const _c0$
|
|
73528
|
+
const _c0$6 = a0 => ({ name: "chevron-right", source: a0 });
|
|
72004
73529
|
const _c1$1 = a0 => ({ name: "chevron-down", source: a0 });
|
|
72005
73530
|
const _c2$1 = a0 => ({ name: "clock", source: a0 });
|
|
72006
73531
|
const _c3 = a0 => [a0];
|
|
@@ -72203,7 +73728,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
|
|
|
72203
73728
|
i0.ɵɵadvance(2);
|
|
72204
73729
|
i0.ɵɵproperty("ngClass", ctx_r1.keyStrengthsButtonClasses());
|
|
72205
73730
|
i0.ɵɵadvance(2);
|
|
72206
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$
|
|
73731
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(26, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.keyStrengthsButtonClasses());
|
|
72207
73732
|
i0.ɵɵadvance();
|
|
72208
73733
|
i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsCardClasses());
|
|
72209
73734
|
i0.ɵɵadvance();
|
|
@@ -72215,7 +73740,7 @@ function ProfileSectionContentComponent_Conditional_1_Template(rf, ctx) { if (rf
|
|
|
72215
73740
|
i0.ɵɵadvance(2);
|
|
72216
73741
|
i0.ɵɵproperty("ngClass", ctx_r1.criticalGapsButtonClasses());
|
|
72217
73742
|
i0.ɵɵadvance(2);
|
|
72218
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$
|
|
73743
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.criticalGapsButtonClasses());
|
|
72219
73744
|
i0.ɵɵadvance();
|
|
72220
73745
|
i0.ɵɵproperty("ngClass", ctx_r1.quickWinsCardClasses());
|
|
72221
73746
|
i0.ɵɵadvance();
|
|
@@ -72294,7 +73819,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72294
73819
|
i0.ɵɵadvance(2);
|
|
72295
73820
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
|
|
72296
73821
|
i0.ɵɵadvance(2);
|
|
72297
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$
|
|
73822
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(21, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaStrengthsButtonClasses());
|
|
72298
73823
|
i0.ɵɵadvance();
|
|
72299
73824
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsStatCardClasses());
|
|
72300
73825
|
i0.ɵɵadvance();
|
|
@@ -72306,7 +73831,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72306
73831
|
i0.ɵɵadvance(2);
|
|
72307
73832
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaGapsButtonClasses());
|
|
72308
73833
|
i0.ɵɵadvance(2);
|
|
72309
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$
|
|
73834
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(23, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaGapsButtonClasses());
|
|
72310
73835
|
i0.ɵɵadvance();
|
|
72311
73836
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesStatCardClasses());
|
|
72312
73837
|
i0.ɵɵadvance();
|
|
@@ -72318,7 +73843,7 @@ function ProfileSectionContentComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
72318
73843
|
i0.ɵɵadvance(2);
|
|
72319
73844
|
i0.ɵɵproperty("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
|
|
72320
73845
|
i0.ɵɵadvance(2);
|
|
72321
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$
|
|
73846
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(25, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS))("ngClass", ctx_r1.focusAreaOpportunitiesButtonClasses());
|
|
72322
73847
|
} }
|
|
72323
73848
|
function ProfileSectionContentComponent_Conditional_4_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
72324
73849
|
i0.ɵɵelementStart(0, "div");
|
|
@@ -72665,7 +74190,7 @@ function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Condi
|
|
|
72665
74190
|
i0.ɵɵadvance(2);
|
|
72666
74191
|
i0.ɵɵtextInterpolate1("", ctx_r1.getTacticalRecRelatedMetricsCount(recommendation_r19), " Related Metrics");
|
|
72667
74192
|
i0.ɵɵadvance();
|
|
72668
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$
|
|
74193
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(6, _c0$6, ctx_r1.IconSourceEnumValue.HEROICONS));
|
|
72669
74194
|
} }
|
|
72670
74195
|
function ProfileSectionContentComponent_Conditional_11_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
72671
74196
|
i0.ɵɵelementStart(0, "div", 16)(1, "div", 69)(2, "h4", 75);
|
|
@@ -78080,7 +79605,7 @@ class StrategyRecommendationsModalContentComponent {
|
|
|
78080
79605
|
}], 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
79606
|
(() => { (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
79607
|
|
|
78083
|
-
const _c0$
|
|
79608
|
+
const _c0$5 = a0 => ({ name: "chevron-right", source: a0 });
|
|
78084
79609
|
function CategoryDetailModalContentComponent_Conditional_16_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
78085
79610
|
i0.ɵɵelementStart(0, "div")(1, "span", 19);
|
|
78086
79611
|
i0.ɵɵtext(2, "Industry:");
|
|
@@ -78193,7 +79718,7 @@ function CategoryDetailModalContentComponent_Conditional_17_For_7_Template(rf, c
|
|
|
78193
79718
|
i0.ɵɵadvance();
|
|
78194
79719
|
i0.ɵɵtextInterpolate1(" ", strength_r3 == null ? null : strength_r3.description, " ");
|
|
78195
79720
|
i0.ɵɵadvance();
|
|
78196
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$
|
|
79721
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(7, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78197
79722
|
} }
|
|
78198
79723
|
function CategoryDetailModalContentComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
78199
79724
|
i0.ɵɵelementStart(0, "div", 27)(1, "h4", 15);
|
|
@@ -78260,7 +79785,7 @@ function CategoryDetailModalContentComponent_Conditional_18_For_7_Template(rf, c
|
|
|
78260
79785
|
i0.ɵɵadvance();
|
|
78261
79786
|
i0.ɵɵtextInterpolate1(" ", gap_r5 == null ? null : gap_r5.description, " ");
|
|
78262
79787
|
i0.ɵɵadvance();
|
|
78263
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$
|
|
79788
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78264
79789
|
} }
|
|
78265
79790
|
function CategoryDetailModalContentComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
78266
79791
|
i0.ɵɵelementStart(0, "div", 38)(1, "h4", 15);
|
|
@@ -78327,7 +79852,7 @@ function CategoryDetailModalContentComponent_Conditional_19_For_7_Template(rf, c
|
|
|
78327
79852
|
i0.ɵɵadvance();
|
|
78328
79853
|
i0.ɵɵconditional((opportunity_r7 == null ? null : opportunity_r7.potentialImpact) ? 7 : -1);
|
|
78329
79854
|
i0.ɵɵadvance();
|
|
78330
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$
|
|
79855
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$5, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
78331
79856
|
} }
|
|
78332
79857
|
function CategoryDetailModalContentComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
78333
79858
|
i0.ɵɵelementStart(0, "div", 44)(1, "h4", 15);
|
|
@@ -79209,7 +80734,7 @@ class StrengthDetailModalContentComponent {
|
|
|
79209
80734
|
}], 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
80735
|
(() => { (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
80736
|
|
|
79212
|
-
const _c0$
|
|
80737
|
+
const _c0$4 = () => [];
|
|
79213
80738
|
function GapDetailModalContentComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
79214
80739
|
i0.ɵɵelementStart(0, "span", 9);
|
|
79215
80740
|
i0.ɵɵtext(1);
|
|
@@ -79322,7 +80847,7 @@ function GapDetailModalContentComponent_Conditional_16_Template(rf, ctx) { if (r
|
|
|
79322
80847
|
i0.ɵɵclassMap(ctx_r0.isDark() ? "border-slate-700" : "border-slate-200");
|
|
79323
80848
|
i0.ɵɵproperty("ngClass", ctx_r0.sectionTitleClasses());
|
|
79324
80849
|
i0.ɵɵadvance(2);
|
|
79325
|
-
i0.ɵɵproperty("relatedGoalIds", ((tmp_4_0 = ctx_r0.gap()) == null ? null : tmp_4_0.linkedGoalIds) ?? i0.ɵɵpureFunction0(7, _c0$
|
|
80850
|
+
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
80851
|
} }
|
|
79327
80852
|
function GapDetailModalContentComponent_Conditional_17_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
79328
80853
|
i0.ɵɵelementStart(0, "div", 25);
|
|
@@ -79606,7 +81131,7 @@ class GapDetailModalContentComponent {
|
|
|
79606
81131
|
}], 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
81132
|
(() => { (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
81133
|
|
|
79609
|
-
const _c0$
|
|
81134
|
+
const _c0$3 = a0 => ({ name: "chevron-right", source: a0 });
|
|
79610
81135
|
const _forTrack0$3 = ($index, $item) => $item.id || $index;
|
|
79611
81136
|
function OpportunityDetailModalContentComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
79612
81137
|
i0.ɵɵelementStart(0, "div", 9)(1, "h4", 10);
|
|
@@ -79711,7 +81236,7 @@ function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_For
|
|
|
79711
81236
|
i0.ɵɵadvance(2);
|
|
79712
81237
|
i0.ɵɵtextInterpolate(goal_r5.title || goal_r5.id);
|
|
79713
81238
|
i0.ɵɵadvance();
|
|
79714
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$
|
|
81239
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(4, _c0$3, ctx_r0.IconSourceEnum.HEROICONS))("ngClass", ctx_r0.chevronClasses());
|
|
79715
81240
|
} }
|
|
79716
81241
|
function OpportunityDetailModalContentComponent_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
79717
81242
|
i0.ɵɵelementStart(0, "div", 9)(1, "h4", 24);
|
|
@@ -81313,7 +82838,7 @@ class CollapsibleAnalysisSectionGroupComponent {
|
|
|
81313
82838
|
}], 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
82839
|
(() => { (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
82840
|
|
|
81316
|
-
const _c0$
|
|
82841
|
+
const _c0$2 = a0 => ({ name: "chevron-right", source: a0 });
|
|
81317
82842
|
const _c1 = a0 => ({ name: "chevron-down", source: a0 });
|
|
81318
82843
|
const _c2 = a0 => [a0];
|
|
81319
82844
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
@@ -81590,7 +83115,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
|
|
|
81590
83115
|
i0.ɵɵadvance(2);
|
|
81591
83116
|
i0.ɵɵproperty("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
|
|
81592
83117
|
i0.ɵɵadvance(2);
|
|
81593
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$
|
|
83118
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(28, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getKeyStrengthsButtonTextClasses());
|
|
81594
83119
|
i0.ɵɵadvance();
|
|
81595
83120
|
i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsStatCardClasses());
|
|
81596
83121
|
i0.ɵɵadvance();
|
|
@@ -81602,7 +83127,7 @@ function SymphiqProfileAnalysisDashboardComponent_Conditional_10_Conditional_0_T
|
|
|
81602
83127
|
i0.ɵɵadvance(2);
|
|
81603
83128
|
i0.ɵɵproperty("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
|
|
81604
83129
|
i0.ɵɵadvance(2);
|
|
81605
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$
|
|
83130
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(30, _c0$2, ctx_r1.IconSourceEnum.HEROICONS))("ngClass", ctx_r1.getCriticalGapsButtonTextClasses());
|
|
81606
83131
|
i0.ɵɵadvance();
|
|
81607
83132
|
i0.ɵɵproperty("ngClass", ctx_r1.getQuickWinsStatCardClasses());
|
|
81608
83133
|
i0.ɵɵadvance();
|
|
@@ -83233,469 +84758,6 @@ class ScrollProgressBarComponent {
|
|
|
83233
84758
|
}], 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
84759
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ScrollProgressBarComponent, { className: "ScrollProgressBarComponent", filePath: "lib/components/shared/scroll-progress-bar.component.ts", lineNumber: 23 }); })();
|
|
83235
84760
|
|
|
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
84761
|
const _c0$1 = ["chartdiv"];
|
|
83700
84762
|
class BarChartComponent {
|
|
83701
84763
|
constructor() {
|
|
@@ -84634,5 +85696,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
|
|
|
84634
85696
|
* Generated bundle index. Do not edit.
|
|
84635
85697
|
*/
|
|
84636
85698
|
|
|
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 };
|
|
85699
|
+
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
85700
|
//# sourceMappingURL=symphiq-components.mjs.map
|