@eric-emg/symphiq-components 1.2.208 → 1.2.210
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 +447 -291
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/package.json +1 -1
- package/styles.css +0 -3
|
@@ -54808,13 +54808,23 @@ function getPacingDisplayInfo(pacingPercentage, status, isDark) {
|
|
|
54808
54808
|
};
|
|
54809
54809
|
}
|
|
54810
54810
|
function calculateMetricPacing(metric) {
|
|
54811
|
+
console.group(`[PACING] calculateMetricPacing for ${metric.metric}`);
|
|
54812
|
+
console.log('[PACING] Input metric:', JSON.stringify(metric, null, 2));
|
|
54811
54813
|
const currentValue = metric.currentValue || 0;
|
|
54812
54814
|
const priorYtdValue = metric.priorYtdValue || 0;
|
|
54813
54815
|
const targetValue = metric.targetValue;
|
|
54814
|
-
|
|
54815
|
-
|
|
54816
|
+
console.log('[PACING] Extracted values:', { currentValue, priorYtdValue, targetValue });
|
|
54817
|
+
const calculatedPacingPct = priorYtdValue > 0 ? ((currentValue - priorYtdValue) / priorYtdValue) * 100 : 0;
|
|
54818
|
+
const pacingPercentage = metric.pacingPercentage || calculatedPacingPct;
|
|
54819
|
+
console.log('[PACING] Pacing calculation:', {
|
|
54820
|
+
'metric.pacingPercentage (pre-calculated)': metric.pacingPercentage,
|
|
54821
|
+
'calculatedPacingPct': calculatedPacingPct,
|
|
54822
|
+
'final pacingPercentage': pacingPercentage
|
|
54823
|
+
});
|
|
54816
54824
|
const projectedValue = metric.projectedValue || currentValue;
|
|
54817
54825
|
const status = calculatePacingStatus(currentValue, priorYtdValue, targetValue);
|
|
54826
|
+
console.log('[PACING] Result:', { pacingPercentage, status, projectedValue });
|
|
54827
|
+
console.groupEnd();
|
|
54818
54828
|
return {
|
|
54819
54829
|
pacingPercentage,
|
|
54820
54830
|
status,
|
|
@@ -54822,20 +54832,55 @@ function calculateMetricPacing(metric) {
|
|
|
54822
54832
|
};
|
|
54823
54833
|
}
|
|
54824
54834
|
function extractMetricPacing(pacingResponse, metricEnum) {
|
|
54825
|
-
|
|
54835
|
+
console.group(`[PACING] extractMetricPacing for ${metricEnum}`);
|
|
54836
|
+
if (!pacingResponse) {
|
|
54837
|
+
console.log('[PACING] No pacingResponse provided - returning null');
|
|
54838
|
+
console.groupEnd();
|
|
54826
54839
|
return null;
|
|
54840
|
+
}
|
|
54841
|
+
console.log('[PACING] pacingResponse structure:', {
|
|
54842
|
+
hasSoFarMetricValues: !!pacingResponse.soFarMetricValues,
|
|
54843
|
+
soFarMetricValuesCount: pacingResponse.soFarMetricValues?.length ?? 0,
|
|
54844
|
+
soFarMetrics: pacingResponse.soFarMetricValues?.map(m => m.metric),
|
|
54845
|
+
hasProjectedMetricValues: !!pacingResponse.projectedMetricValues,
|
|
54846
|
+
projectedMetricValuesCount: pacingResponse.projectedMetricValues?.length ?? 0,
|
|
54847
|
+
projectedMetrics: pacingResponse.projectedMetricValues?.map(m => m.metric),
|
|
54848
|
+
hasLastYearMetricValuesMonthly: !!pacingResponse.lastYearMetricValuesMonthly,
|
|
54849
|
+
lastYearMetricValuesMonthlyCount: pacingResponse.lastYearMetricValuesMonthly?.length ?? 0,
|
|
54850
|
+
lastYearMetrics: [...new Set(pacingResponse.lastYearMetricValuesMonthly?.map(m => m.metric))]
|
|
54851
|
+
});
|
|
54827
54852
|
const soFarMetric = pacingResponse.soFarMetricValues?.find(m => m.metric === metricEnum);
|
|
54828
54853
|
const projectedMetric = pacingResponse.projectedMetricValues?.find(m => m.metric === metricEnum);
|
|
54829
54854
|
const lastYearMetrics = pacingResponse.lastYearMetricValuesMonthly?.filter(m => m.metric === metricEnum) || [];
|
|
54830
|
-
|
|
54855
|
+
console.log('[PACING] Found metrics for', metricEnum, ':', {
|
|
54856
|
+
soFarMetric: soFarMetric ? { metric: soFarMetric.metric, value: soFarMetric.value } : null,
|
|
54857
|
+
projectedMetric: projectedMetric ? { metric: projectedMetric.metric, value: projectedMetric.value } : null,
|
|
54858
|
+
lastYearMetricsCount: lastYearMetrics.length,
|
|
54859
|
+
lastYearMetricsValues: lastYearMetrics.map(m => ({ metric: m.metric, value: m.value }))
|
|
54860
|
+
});
|
|
54861
|
+
if (!soFarMetric && !projectedMetric) {
|
|
54862
|
+
console.log('[PACING] No soFarMetric and no projectedMetric found - returning null');
|
|
54863
|
+
console.groupEnd();
|
|
54831
54864
|
return null;
|
|
54865
|
+
}
|
|
54832
54866
|
const currentValue = soFarMetric?.value ? parseFloat(soFarMetric.value) : 0;
|
|
54833
54867
|
const projectedValue = projectedMetric?.value ? parseFloat(projectedMetric.value) : 0;
|
|
54834
54868
|
const priorYtdValue = lastYearMetrics.reduce((sum, m) => {
|
|
54835
54869
|
return sum + (m.value ? parseFloat(m.value) : 0);
|
|
54836
54870
|
}, 0);
|
|
54837
|
-
|
|
54838
|
-
|
|
54871
|
+
console.log('[PACING] Calculated values:', {
|
|
54872
|
+
currentValue,
|
|
54873
|
+
projectedValue,
|
|
54874
|
+
priorYtdValue,
|
|
54875
|
+
'priorYtdValue === 0': priorYtdValue === 0
|
|
54876
|
+
});
|
|
54877
|
+
if (priorYtdValue === 0) {
|
|
54878
|
+
console.log('[PACING] priorYtdValue is 0 - returning null (no prior year data to compare)');
|
|
54879
|
+
console.groupEnd();
|
|
54880
|
+
return null;
|
|
54881
|
+
}
|
|
54882
|
+
const pacingPercentage = ((currentValue - priorYtdValue) / priorYtdValue) * 100;
|
|
54883
|
+
const result = {
|
|
54839
54884
|
metric: metricEnum,
|
|
54840
54885
|
currentValue,
|
|
54841
54886
|
priorYtdValue,
|
|
@@ -54843,6 +54888,9 @@ function extractMetricPacing(pacingResponse, metricEnum) {
|
|
|
54843
54888
|
pacingPercentage,
|
|
54844
54889
|
ytdVariancePercent: pacingPercentage
|
|
54845
54890
|
};
|
|
54891
|
+
console.log('[PACING] Returning PerformanceMetricInterface:', result);
|
|
54892
|
+
console.groupEnd();
|
|
54893
|
+
return result;
|
|
54846
54894
|
}
|
|
54847
54895
|
|
|
54848
54896
|
class PacingStatusBadgeComponent {
|
|
@@ -55015,7 +55063,7 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_23_For_6_Template
|
|
|
55015
55063
|
i0.ɵɵadvance();
|
|
55016
55064
|
i0.ɵɵproperty("ngClass", ctx_r1.relatedPercentageBadgeClasses());
|
|
55017
55065
|
i0.ɵɵadvance();
|
|
55018
|
-
i0.ɵɵ
|
|
55066
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.getGrowthSign(metric_r3.calc.metric), "", ctx_r1.formatPercentage(metric_r3.calc.percentageIncrease, 1), " ");
|
|
55019
55067
|
i0.ɵɵadvance();
|
|
55020
55068
|
i0.ɵɵproperty("ngClass", metric_r3.pacingInfo ? "grid-cols-3" : "grid-cols-2");
|
|
55021
55069
|
i0.ɵɵadvance(2);
|
|
@@ -55035,7 +55083,7 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_23_Template(rf, c
|
|
|
55035
55083
|
i0.ɵɵtext(3, " Related Metrics ");
|
|
55036
55084
|
i0.ɵɵelementEnd();
|
|
55037
55085
|
i0.ɵɵelementStart(4, "div", 19);
|
|
55038
|
-
i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_23_For_6_Template, 18,
|
|
55086
|
+
i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_23_For_6_Template, 18, 15, "div", 20, _forTrack1$3);
|
|
55039
55087
|
i0.ɵɵelementEnd()();
|
|
55040
55088
|
} if (rf & 2) {
|
|
55041
55089
|
const stage_r1 = i0.ɵɵnextContext().$implicit;
|
|
@@ -55087,7 +55135,7 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
|
|
|
55087
55135
|
i0.ɵɵadvance();
|
|
55088
55136
|
i0.ɵɵproperty("ngClass", ctx_r1.percentageBadgeClasses());
|
|
55089
55137
|
i0.ɵɵadvance();
|
|
55090
|
-
i0.ɵɵ
|
|
55138
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r1.getGrowthSign(stage_r1.stageMetric.metric), "", ctx_r1.formatPercentage(stage_r1.stageMetric.percentageIncrease, 1), " ");
|
|
55091
55139
|
i0.ɵɵadvance(3);
|
|
55092
55140
|
i0.ɵɵproperty("ngClass", ctx_r1.labelClasses());
|
|
55093
55141
|
i0.ɵɵadvance();
|
|
@@ -55119,13 +55167,26 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55119
55167
|
this.funnelStages = computed(() => {
|
|
55120
55168
|
const calcs = this.calculations();
|
|
55121
55169
|
const pacingResponse = this.pacingMetrics();
|
|
55170
|
+
console.group('[PACING] funnelStages computed');
|
|
55171
|
+
console.log('[PACING] calculations count:', calcs.length);
|
|
55172
|
+
console.log('[PACING] calculations:', calcs.map(c => ({ metric: c.metric, isFunnelStage: c.isFunnelStage, funnelMetric: c.funnelMetric })));
|
|
55173
|
+
console.log('[PACING] pacingResponse exists:', !!pacingResponse);
|
|
55174
|
+
if (pacingResponse) {
|
|
55175
|
+
console.log('[PACING] pacingResponse raw:', JSON.stringify(pacingResponse, null, 2));
|
|
55176
|
+
}
|
|
55122
55177
|
const grouped = new Map();
|
|
55123
55178
|
const stageMetrics = calcs.filter(c => c.isFunnelStage);
|
|
55124
55179
|
const relatedMetrics = calcs.filter(c => !c.isFunnelStage);
|
|
55180
|
+
console.log('[PACING] stageMetrics count:', stageMetrics.length);
|
|
55181
|
+
console.log('[PACING] stageMetrics:', stageMetrics.map(s => s.metric));
|
|
55182
|
+
console.log('[PACING] relatedMetrics count:', relatedMetrics.length);
|
|
55125
55183
|
stageMetrics.forEach(stageMetric => {
|
|
55126
55184
|
const related = relatedMetrics.filter(rm => rm.funnelMetric === stageMetric.metric);
|
|
55185
|
+
console.log(`[PACING] Processing stage: ${stageMetric.metric}`);
|
|
55127
55186
|
const stagePacingMetric = extractMetricPacing(pacingResponse, stageMetric.metric);
|
|
55187
|
+
console.log(`[PACING] stagePacingMetric for ${stageMetric.metric}:`, stagePacingMetric);
|
|
55128
55188
|
const stagePacingInfo = stagePacingMetric ? calculateMetricPacing(stagePacingMetric) : null;
|
|
55189
|
+
console.log(`[PACING] stagePacingInfo for ${stageMetric.metric}:`, stagePacingInfo);
|
|
55129
55190
|
const relatedWithPacing = related.map(relMetric => {
|
|
55130
55191
|
const relPacingMetric = extractMetricPacing(pacingResponse, relMetric.metric);
|
|
55131
55192
|
const relPacingInfo = relPacingMetric ? calculateMetricPacing(relPacingMetric) : null;
|
|
@@ -55137,11 +55198,18 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55137
55198
|
pacingInfo: stagePacingInfo
|
|
55138
55199
|
});
|
|
55139
55200
|
});
|
|
55140
|
-
|
|
55201
|
+
const result = Array.from(grouped.values()).sort((a, b) => {
|
|
55141
55202
|
const aInd = a.stageMetric.funnelInd ?? 999;
|
|
55142
55203
|
const bInd = b.stageMetric.funnelInd ?? 999;
|
|
55143
55204
|
return aInd - bInd;
|
|
55144
55205
|
});
|
|
55206
|
+
console.log('[PACING] Final funnelStages result:', result.map(r => ({
|
|
55207
|
+
stage: r.stageMetric.metric,
|
|
55208
|
+
hasPacingInfo: !!r.pacingInfo,
|
|
55209
|
+
pacingPercentage: r.pacingInfo?.pacingPercentage
|
|
55210
|
+
})));
|
|
55211
|
+
console.groupEnd();
|
|
55212
|
+
return result;
|
|
55145
55213
|
}, ...(ngDevMode ? [{ debugName: "funnelStages" }] : []));
|
|
55146
55214
|
}
|
|
55147
55215
|
stageCardClasses() {
|
|
@@ -55242,12 +55310,15 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55242
55310
|
getMarkdownTooltipContent(markdown, title) {
|
|
55243
55311
|
return { title, markdown };
|
|
55244
55312
|
}
|
|
55313
|
+
getGrowthSign(metric) {
|
|
55314
|
+
return MetricEnumUtil.increaseBad(metric) ? '-' : '+';
|
|
55315
|
+
}
|
|
55245
55316
|
static { this.ɵfac = function FunnelMetricsVisualizationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FunnelMetricsVisualizationComponent)(); }; }
|
|
55246
55317
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, decls: 5, vars: 0, consts: [[1, "space-y-6"], [1, "space-y-8"], [1, "rounded-xl", "p-6", "border-2", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "mb-4"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "font-bold", "leading-tight", "m-0", 3, "ngClass"], ["type", "button", "tooltipType", "markdown", "tooltipPosition", "right", 1, "flex-shrink-0", "w-6", "h-6", "rounded-full", "inline-flex", "items-center", "justify-center", "transition-colors", 3, "ngClass", "libSymphiqTooltip"], [1, "flex", "items-center", "gap-3"], [3, "viewMode", "pacingPercentage", "status"], [1, "px-4", "py-2", "rounded-lg", "font-bold", "text-sm", 3, "ngClass"], [1, "grid", "grid-cols-3", "gap-4", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "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"], [1, "my-4", 3, "ngClass"], [1, "space-y-2"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-2"], [1, "p-3", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "flex", "items-center", "gap-2", "flex-1"], [1, "text-sm", "font-semibold", "leading-tight", 3, "ngClass"], ["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, "flex", "items-center", "gap-2"], [1, "px-2", "py-1", "rounded", "text-xs", "font-bold", 3, "ngClass"], [1, "grid", "gap-2", "text-xs", 3, "ngClass"], [3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55247
55318
|
i0.ɵɵelementStart(0, "div", 0);
|
|
55248
55319
|
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
55249
55320
|
i0.ɵɵelementStart(2, "div", 1);
|
|
55250
|
-
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 24,
|
|
55321
|
+
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 24, 18, "div", 2, _forTrack0$i);
|
|
55251
55322
|
i0.ɵɵelementEnd()();
|
|
55252
55323
|
} if (rf & 2) {
|
|
55253
55324
|
i0.ɵɵadvance(3);
|
|
@@ -55261,140 +55332,140 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55261
55332
|
standalone: true,
|
|
55262
55333
|
imports: [CommonModule, PacingStatusBadgeComponent, TooltipDirective, TooltipContainerComponent],
|
|
55263
55334
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55264
|
-
template: `
|
|
55265
|
-
<div class="space-y-6">
|
|
55266
|
-
<symphiq-tooltip-container />
|
|
55267
|
-
<div class="space-y-8">
|
|
55268
|
-
@for (stage of funnelStages(); track stage.stageMetric.metric) {
|
|
55269
|
-
<div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
|
|
55270
|
-
<div class="flex items-start justify-between mb-4">
|
|
55271
|
-
<div class="flex-1">
|
|
55272
|
-
<div class="flex items-center gap-2 mb-1">
|
|
55273
|
-
<h3 [ngClass]="stageTitleClasses()" class="text-lg font-bold leading-tight m-0">
|
|
55274
|
-
{{ getMetricTitle(stage.stageMetric) }}
|
|
55275
|
-
</h3>
|
|
55276
|
-
@if (stage.stageMetric.description) {
|
|
55277
|
-
<button
|
|
55278
|
-
type="button"
|
|
55279
|
-
[ngClass]="infoIconClasses()"
|
|
55280
|
-
class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55281
|
-
[libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
|
|
55282
|
-
tooltipType="markdown"
|
|
55283
|
-
tooltipPosition="right">
|
|
55284
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55285
|
-
<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" />
|
|
55286
|
-
</svg>
|
|
55287
|
-
</button>
|
|
55288
|
-
}
|
|
55289
|
-
</div>
|
|
55290
|
-
</div>
|
|
55291
|
-
<div class="flex items-center gap-3">
|
|
55292
|
-
@if (stage.pacingInfo) {
|
|
55293
|
-
<symphiq-pacing-status-badge
|
|
55294
|
-
[viewMode]="viewMode()"
|
|
55295
|
-
[pacingPercentage]="stage.pacingInfo.pacingPercentage"
|
|
55296
|
-
[status]="stage.pacingInfo.status"
|
|
55297
|
-
/>
|
|
55298
|
-
}
|
|
55299
|
-
<div [ngClass]="percentageBadgeClasses()" class="px-4 py-2 rounded-lg font-bold text-sm">
|
|
55300
|
-
|
|
55301
|
-
</div>
|
|
55302
|
-
</div>
|
|
55303
|
-
</div>
|
|
55304
|
-
|
|
55305
|
-
<div class="grid grid-cols-3 gap-4 mb-4">
|
|
55306
|
-
<div>
|
|
55307
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55308
|
-
{{ priorYear() }} Actual
|
|
55309
|
-
</p>
|
|
55310
|
-
<p [ngClass]="valueClasses()" class="text-2xl font-bold">
|
|
55311
|
-
{{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
|
|
55312
|
-
</p>
|
|
55313
|
-
</div>
|
|
55314
|
-
@if (stage.pacingInfo) {
|
|
55315
|
-
<div>
|
|
55316
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55317
|
-
{{ currentYear() }} Projected
|
|
55318
|
-
</p>
|
|
55319
|
-
<p [ngClass]="projectedValueClasses()" class="text-2xl font-bold">
|
|
55320
|
-
{{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
|
|
55321
|
-
</p>
|
|
55322
|
-
</div>
|
|
55323
|
-
}
|
|
55324
|
-
<div>
|
|
55325
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55326
|
-
{{ currentYear() }} Target
|
|
55327
|
-
</p>
|
|
55328
|
-
<p [ngClass]="targetValueClasses()" class="text-2xl font-bold">
|
|
55329
|
-
{{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric) }}
|
|
55330
|
-
</p>
|
|
55331
|
-
</div>
|
|
55332
|
-
</div>
|
|
55333
|
-
|
|
55334
|
-
@if (stage.relatedMetrics.length > 0) {
|
|
55335
|
-
<div [ngClass]="dividerClasses()" class="my-4"></div>
|
|
55336
|
-
|
|
55337
|
-
<div class="space-y-2">
|
|
55338
|
-
<p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
|
|
55339
|
-
Related Metrics
|
|
55340
|
-
</p>
|
|
55341
|
-
<div class="grid gap-2">
|
|
55342
|
-
@for (metric of stage.relatedMetrics; track metric.calc.metric) {
|
|
55343
|
-
<div [ngClass]="relatedMetricCardClasses()" class="p-3 rounded-lg">
|
|
55344
|
-
<div class="flex items-center justify-between mb-2">
|
|
55345
|
-
<div class="flex items-center gap-2 flex-1">
|
|
55346
|
-
<p [ngClass]="relatedMetricNameClasses()" class="text-sm font-semibold leading-tight">
|
|
55347
|
-
{{ getMetricTitle(metric.calc) }}
|
|
55348
|
-
</p>
|
|
55349
|
-
@if (metric.calc.description) {
|
|
55350
|
-
<button
|
|
55351
|
-
type="button"
|
|
55352
|
-
[ngClass]="infoIconClasses()"
|
|
55353
|
-
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55354
|
-
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.calc.description, getMetricTitle(metric.calc))"
|
|
55355
|
-
tooltipType="markdown"
|
|
55356
|
-
tooltipPosition="right">
|
|
55357
|
-
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55358
|
-
<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" />
|
|
55359
|
-
</svg>
|
|
55360
|
-
</button>
|
|
55361
|
-
}
|
|
55362
|
-
</div>
|
|
55363
|
-
<div class="flex items-center gap-2">
|
|
55364
|
-
@if (metric.pacingInfo) {
|
|
55365
|
-
<symphiq-pacing-status-badge
|
|
55366
|
-
[viewMode]="viewMode()"
|
|
55367
|
-
[pacingPercentage]="metric.pacingInfo.pacingPercentage"
|
|
55368
|
-
[status]="metric.pacingInfo.status"
|
|
55369
|
-
/>
|
|
55370
|
-
}
|
|
55371
|
-
<span [ngClass]="relatedPercentageBadgeClasses()" class="px-2 py-1 rounded text-xs font-bold">
|
|
55372
|
-
|
|
55373
|
-
</span>
|
|
55374
|
-
</div>
|
|
55375
|
-
</div>
|
|
55376
|
-
<div class="grid gap-2 text-xs" [ngClass]="metric.pacingInfo ? 'grid-cols-3' : 'grid-cols-2'">
|
|
55377
|
-
<div>
|
|
55378
|
-
<p [ngClass]="relatedLabelClasses()">{{ priorYear() }}: {{ formatMetricValue(metric.calc.currentValue, metric.calc.metric) }}</p>
|
|
55379
|
-
</div>
|
|
55380
|
-
@if (metric.pacingInfo) {
|
|
55381
|
-
<div>
|
|
55382
|
-
<p [ngClass]="relatedLabelClasses()">Proj: {{ formatMetricValue(metric.pacingInfo.projectedValue, metric.calc.metric, false) }}</p>
|
|
55383
|
-
</div>
|
|
55384
|
-
}
|
|
55385
|
-
<div>
|
|
55386
|
-
<p [ngClass]="relatedLabelClasses()">Target: {{ formatMetricValue(metric.calc.targetValue, metric.calc.metric) }}</p>
|
|
55387
|
-
</div>
|
|
55388
|
-
</div>
|
|
55389
|
-
</div>
|
|
55390
|
-
}
|
|
55391
|
-
</div>
|
|
55392
|
-
</div>
|
|
55393
|
-
}
|
|
55394
|
-
</div>
|
|
55395
|
-
}
|
|
55396
|
-
</div>
|
|
55397
|
-
</div>
|
|
55335
|
+
template: `
|
|
55336
|
+
<div class="space-y-6">
|
|
55337
|
+
<symphiq-tooltip-container />
|
|
55338
|
+
<div class="space-y-8">
|
|
55339
|
+
@for (stage of funnelStages(); track stage.stageMetric.metric) {
|
|
55340
|
+
<div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
|
|
55341
|
+
<div class="flex items-start justify-between mb-4">
|
|
55342
|
+
<div class="flex-1">
|
|
55343
|
+
<div class="flex items-center gap-2 mb-1">
|
|
55344
|
+
<h3 [ngClass]="stageTitleClasses()" class="text-lg font-bold leading-tight m-0">
|
|
55345
|
+
{{ getMetricTitle(stage.stageMetric) }}
|
|
55346
|
+
</h3>
|
|
55347
|
+
@if (stage.stageMetric.description) {
|
|
55348
|
+
<button
|
|
55349
|
+
type="button"
|
|
55350
|
+
[ngClass]="infoIconClasses()"
|
|
55351
|
+
class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55352
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
|
|
55353
|
+
tooltipType="markdown"
|
|
55354
|
+
tooltipPosition="right">
|
|
55355
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55356
|
+
<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" />
|
|
55357
|
+
</svg>
|
|
55358
|
+
</button>
|
|
55359
|
+
}
|
|
55360
|
+
</div>
|
|
55361
|
+
</div>
|
|
55362
|
+
<div class="flex items-center gap-3">
|
|
55363
|
+
@if (stage.pacingInfo) {
|
|
55364
|
+
<symphiq-pacing-status-badge
|
|
55365
|
+
[viewMode]="viewMode()"
|
|
55366
|
+
[pacingPercentage]="stage.pacingInfo.pacingPercentage"
|
|
55367
|
+
[status]="stage.pacingInfo.status"
|
|
55368
|
+
/>
|
|
55369
|
+
}
|
|
55370
|
+
<div [ngClass]="percentageBadgeClasses()" class="px-4 py-2 rounded-lg font-bold text-sm">
|
|
55371
|
+
{{ getGrowthSign(stage.stageMetric.metric) }}{{ formatPercentage(stage.stageMetric.percentageIncrease, 1) }}
|
|
55372
|
+
</div>
|
|
55373
|
+
</div>
|
|
55374
|
+
</div>
|
|
55375
|
+
|
|
55376
|
+
<div class="grid grid-cols-3 gap-4 mb-4">
|
|
55377
|
+
<div>
|
|
55378
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55379
|
+
{{ priorYear() }} Actual
|
|
55380
|
+
</p>
|
|
55381
|
+
<p [ngClass]="valueClasses()" class="text-2xl font-bold">
|
|
55382
|
+
{{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
|
|
55383
|
+
</p>
|
|
55384
|
+
</div>
|
|
55385
|
+
@if (stage.pacingInfo) {
|
|
55386
|
+
<div>
|
|
55387
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55388
|
+
{{ currentYear() }} Projected
|
|
55389
|
+
</p>
|
|
55390
|
+
<p [ngClass]="projectedValueClasses()" class="text-2xl font-bold">
|
|
55391
|
+
{{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
|
|
55392
|
+
</p>
|
|
55393
|
+
</div>
|
|
55394
|
+
}
|
|
55395
|
+
<div>
|
|
55396
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1">
|
|
55397
|
+
{{ currentYear() }} Target
|
|
55398
|
+
</p>
|
|
55399
|
+
<p [ngClass]="targetValueClasses()" class="text-2xl font-bold">
|
|
55400
|
+
{{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric) }}
|
|
55401
|
+
</p>
|
|
55402
|
+
</div>
|
|
55403
|
+
</div>
|
|
55404
|
+
|
|
55405
|
+
@if (stage.relatedMetrics.length > 0) {
|
|
55406
|
+
<div [ngClass]="dividerClasses()" class="my-4"></div>
|
|
55407
|
+
|
|
55408
|
+
<div class="space-y-2">
|
|
55409
|
+
<p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
|
|
55410
|
+
Related Metrics
|
|
55411
|
+
</p>
|
|
55412
|
+
<div class="grid gap-2">
|
|
55413
|
+
@for (metric of stage.relatedMetrics; track metric.calc.metric) {
|
|
55414
|
+
<div [ngClass]="relatedMetricCardClasses()" class="p-3 rounded-lg">
|
|
55415
|
+
<div class="flex items-center justify-between mb-2">
|
|
55416
|
+
<div class="flex items-center gap-2 flex-1">
|
|
55417
|
+
<p [ngClass]="relatedMetricNameClasses()" class="text-sm font-semibold leading-tight">
|
|
55418
|
+
{{ getMetricTitle(metric.calc) }}
|
|
55419
|
+
</p>
|
|
55420
|
+
@if (metric.calc.description) {
|
|
55421
|
+
<button
|
|
55422
|
+
type="button"
|
|
55423
|
+
[ngClass]="infoIconClasses()"
|
|
55424
|
+
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55425
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.calc.description, getMetricTitle(metric.calc))"
|
|
55426
|
+
tooltipType="markdown"
|
|
55427
|
+
tooltipPosition="right">
|
|
55428
|
+
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55429
|
+
<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" />
|
|
55430
|
+
</svg>
|
|
55431
|
+
</button>
|
|
55432
|
+
}
|
|
55433
|
+
</div>
|
|
55434
|
+
<div class="flex items-center gap-2">
|
|
55435
|
+
@if (metric.pacingInfo) {
|
|
55436
|
+
<symphiq-pacing-status-badge
|
|
55437
|
+
[viewMode]="viewMode()"
|
|
55438
|
+
[pacingPercentage]="metric.pacingInfo.pacingPercentage"
|
|
55439
|
+
[status]="metric.pacingInfo.status"
|
|
55440
|
+
/>
|
|
55441
|
+
}
|
|
55442
|
+
<span [ngClass]="relatedPercentageBadgeClasses()" class="px-2 py-1 rounded text-xs font-bold">
|
|
55443
|
+
{{ getGrowthSign(metric.calc.metric) }}{{ formatPercentage(metric.calc.percentageIncrease, 1) }}
|
|
55444
|
+
</span>
|
|
55445
|
+
</div>
|
|
55446
|
+
</div>
|
|
55447
|
+
<div class="grid gap-2 text-xs" [ngClass]="metric.pacingInfo ? 'grid-cols-3' : 'grid-cols-2'">
|
|
55448
|
+
<div>
|
|
55449
|
+
<p [ngClass]="relatedLabelClasses()">{{ priorYear() }}: {{ formatMetricValue(metric.calc.currentValue, metric.calc.metric) }}</p>
|
|
55450
|
+
</div>
|
|
55451
|
+
@if (metric.pacingInfo) {
|
|
55452
|
+
<div>
|
|
55453
|
+
<p [ngClass]="relatedLabelClasses()">Proj: {{ formatMetricValue(metric.pacingInfo.projectedValue, metric.calc.metric, false) }}</p>
|
|
55454
|
+
</div>
|
|
55455
|
+
}
|
|
55456
|
+
<div>
|
|
55457
|
+
<p [ngClass]="relatedLabelClasses()">Target: {{ formatMetricValue(metric.calc.targetValue, metric.calc.metric) }}</p>
|
|
55458
|
+
</div>
|
|
55459
|
+
</div>
|
|
55460
|
+
</div>
|
|
55461
|
+
}
|
|
55462
|
+
</div>
|
|
55463
|
+
</div>
|
|
55464
|
+
}
|
|
55465
|
+
</div>
|
|
55466
|
+
}
|
|
55467
|
+
</div>
|
|
55468
|
+
</div>
|
|
55398
55469
|
`
|
|
55399
55470
|
}]
|
|
55400
55471
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], calculations: [{ type: i0.Input, args: [{ isSignal: true, alias: "calculations", required: false }] }], pacingMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "pacingMetrics", required: false }] }] }); })();
|
|
@@ -56226,11 +56297,11 @@ var areaChart_component = /*#__PURE__*/Object.freeze({
|
|
|
56226
56297
|
|
|
56227
56298
|
const _c0$r = ["absoluteInputRef"];
|
|
56228
56299
|
const _c1$b = ["percentageInputRef"];
|
|
56229
|
-
function
|
|
56300
|
+
function InitialTargetSettingComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
56230
56301
|
i0.ɵɵelementStart(0, "div", 10);
|
|
56231
56302
|
i0.ɵɵnamespaceSVG();
|
|
56232
56303
|
i0.ɵɵelementStart(1, "svg", 11);
|
|
56233
|
-
i0.ɵɵelement(2, "path",
|
|
56304
|
+
i0.ɵɵelement(2, "path", 31);
|
|
56234
56305
|
i0.ɵɵelementEnd();
|
|
56235
56306
|
i0.ɵɵnamespaceHTML();
|
|
56236
56307
|
i0.ɵɵelementStart(3, "div")(4, "p", 13);
|
|
@@ -56250,14 +56321,14 @@ function InitialTargetSettingComponent_Conditional_17_Template(rf, ctx) { if (rf
|
|
|
56250
56321
|
i0.ɵɵadvance();
|
|
56251
56322
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.currentPaceProjection()), " ");
|
|
56252
56323
|
} }
|
|
56253
|
-
function
|
|
56324
|
+
function InitialTargetSettingComponent_Conditional_22_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56254
56325
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
56255
|
-
i0.ɵɵelementStart(0, "div",
|
|
56326
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "span", 35);
|
|
56256
56327
|
i0.ɵɵtext(2, " $ ");
|
|
56257
56328
|
i0.ɵɵelementEnd();
|
|
56258
|
-
i0.ɵɵelementStart(3, "input",
|
|
56259
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
56260
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
56329
|
+
i0.ɵɵelementStart(3, "input", 36, 0);
|
|
56330
|
+
i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_22_Conditional_5_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.absoluteInput, $event) || (ctx_r0.absoluteInput = $event); return i0.ɵɵresetView($event); });
|
|
56331
|
+
i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_22_Conditional_5_Template_input_ngModelChange_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onAbsoluteInputChange()); });
|
|
56261
56332
|
i0.ɵɵelementEnd()();
|
|
56262
56333
|
} if (rf & 2) {
|
|
56263
56334
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
@@ -56267,13 +56338,13 @@ function InitialTargetSettingComponent_Conditional_21_Conditional_5_Template(rf,
|
|
|
56267
56338
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r0.absoluteInput);
|
|
56268
56339
|
i0.ɵɵproperty("ngClass", ctx_r0.inputClasses());
|
|
56269
56340
|
} }
|
|
56270
|
-
function
|
|
56341
|
+
function InitialTargetSettingComponent_Conditional_22_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
56271
56342
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
56272
|
-
i0.ɵɵelementStart(0, "div",
|
|
56273
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
56274
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
56343
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "input", 37, 1);
|
|
56344
|
+
i0.ɵɵtwoWayListener("ngModelChange", function InitialTargetSettingComponent_Conditional_22_Conditional_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r0.percentageInput, $event) || (ctx_r0.percentageInput = $event); return i0.ɵɵresetView($event); });
|
|
56345
|
+
i0.ɵɵlistener("ngModelChange", function InitialTargetSettingComponent_Conditional_22_Conditional_6_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onPercentageInputChange()); });
|
|
56275
56346
|
i0.ɵɵelementEnd();
|
|
56276
|
-
i0.ɵɵelementStart(3, "span",
|
|
56347
|
+
i0.ɵɵelementStart(3, "span", 38);
|
|
56277
56348
|
i0.ɵɵtext(4, " % ");
|
|
56278
56349
|
i0.ɵɵelementEnd()();
|
|
56279
56350
|
} if (rf & 2) {
|
|
@@ -56284,17 +56355,17 @@ function InitialTargetSettingComponent_Conditional_21_Conditional_6_Template(rf,
|
|
|
56284
56355
|
i0.ɵɵadvance(2);
|
|
56285
56356
|
i0.ɵɵproperty("ngClass", ctx_r0.inputSuffixClasses());
|
|
56286
56357
|
} }
|
|
56287
|
-
function
|
|
56358
|
+
function InitialTargetSettingComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
56288
56359
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
56289
|
-
i0.ɵɵelementStart(0, "div",
|
|
56290
|
-
i0.ɵɵlistener("click", function
|
|
56360
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "button", 33);
|
|
56361
|
+
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_22_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("absolute")); });
|
|
56291
56362
|
i0.ɵɵtext(2, " Absolute Amount ");
|
|
56292
56363
|
i0.ɵɵelementEnd();
|
|
56293
|
-
i0.ɵɵelementStart(3, "button",
|
|
56294
|
-
i0.ɵɵlistener("click", function
|
|
56364
|
+
i0.ɵɵelementStart(3, "button", 33);
|
|
56365
|
+
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_22_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.setInputMode("percentage")); });
|
|
56295
56366
|
i0.ɵɵtext(4, " % Increase ");
|
|
56296
56367
|
i0.ɵɵelementEnd()();
|
|
56297
|
-
i0.ɵɵconditionalCreate(5,
|
|
56368
|
+
i0.ɵɵconditionalCreate(5, InitialTargetSettingComponent_Conditional_22_Conditional_5_Template, 5, 3, "div", 34)(6, InitialTargetSettingComponent_Conditional_22_Conditional_6_Template, 5, 3, "div", 34);
|
|
56298
56369
|
} if (rf & 2) {
|
|
56299
56370
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56300
56371
|
i0.ɵɵadvance();
|
|
@@ -56304,14 +56375,14 @@ function InitialTargetSettingComponent_Conditional_21_Template(rf, ctx) { if (rf
|
|
|
56304
56375
|
i0.ɵɵadvance(2);
|
|
56305
56376
|
i0.ɵɵconditional(ctx_r0.inputMode() === "absolute" ? 5 : 6);
|
|
56306
56377
|
} }
|
|
56307
|
-
function
|
|
56378
|
+
function InitialTargetSettingComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
56308
56379
|
i0.ɵɵelement(0, "symphiq-area-chart", 22);
|
|
56309
56380
|
} if (rf & 2) {
|
|
56310
56381
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
56311
|
-
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "
|
|
56382
|
+
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "108px");
|
|
56312
56383
|
} }
|
|
56313
|
-
function
|
|
56314
|
-
i0.ɵɵelementStart(0, "div", 23)(1, "p",
|
|
56384
|
+
function InitialTargetSettingComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
56385
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "p", 39);
|
|
56315
56386
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56316
56387
|
i0.ɵɵelementEnd()();
|
|
56317
56388
|
} if (rf & 2) {
|
|
@@ -56319,77 +56390,96 @@ function InitialTargetSettingComponent_Conditional_29_Template(rf, ctx) { if (rf
|
|
|
56319
56390
|
i0.ɵɵadvance();
|
|
56320
56391
|
i0.ɵɵproperty("ngClass", ctx_r0.noDataClasses());
|
|
56321
56392
|
} }
|
|
56322
|
-
function
|
|
56393
|
+
function InitialTargetSettingComponent_Conditional_33_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
56323
56394
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
56324
|
-
i0.ɵɵelementStart(0, "button",
|
|
56325
|
-
i0.ɵɵlistener("click", function
|
|
56395
|
+
i0.ɵɵelementStart(0, "button", 50);
|
|
56396
|
+
i0.ɵɵlistener("click", function InitialTargetSettingComponent_Conditional_33_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.handleAdjustTarget()); });
|
|
56326
56397
|
i0.ɵɵtext(1, " Adjust Revenue Target ");
|
|
56327
56398
|
i0.ɵɵelementEnd();
|
|
56328
56399
|
} if (rf & 2) {
|
|
56329
56400
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
56330
56401
|
i0.ɵɵproperty("ngClass", ctx_r0.secondaryButtonClasses());
|
|
56331
56402
|
} }
|
|
56332
|
-
function
|
|
56333
|
-
i0.ɵɵelementStart(0, "div",
|
|
56334
|
-
i0.ɵɵ
|
|
56335
|
-
i0.ɵɵ
|
|
56336
|
-
i0.ɵɵ
|
|
56337
|
-
i0.ɵɵtext(7, " Gap to Close ");
|
|
56403
|
+
function InitialTargetSettingComponent_Conditional_33_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
56404
|
+
i0.ɵɵelementStart(0, "div", 44)(1, "div", 45);
|
|
56405
|
+
i0.ɵɵelement(2, "div", 46);
|
|
56406
|
+
i0.ɵɵelementStart(3, "span", 47);
|
|
56407
|
+
i0.ɵɵtext(4);
|
|
56338
56408
|
i0.ɵɵelementEnd();
|
|
56339
|
-
i0.ɵɵ
|
|
56340
|
-
i0.ɵɵ
|
|
56409
|
+
i0.ɵɵelement(5, "div", 46);
|
|
56410
|
+
i0.ɵɵelementEnd();
|
|
56411
|
+
i0.ɵɵelementStart(6, "div", 48)(7, "div")(8, "p", 41);
|
|
56412
|
+
i0.ɵɵtext(9, " Gap to Close ");
|
|
56413
|
+
i0.ɵɵelementEnd();
|
|
56414
|
+
i0.ɵɵelementStart(10, "p", 49);
|
|
56415
|
+
i0.ɵɵtext(11);
|
|
56341
56416
|
i0.ɵɵelementEnd()();
|
|
56342
|
-
i0.ɵɵelementStart(
|
|
56343
|
-
i0.ɵɵtext(
|
|
56417
|
+
i0.ɵɵelementStart(12, "div")(13, "div", 51)(14, "p", 13);
|
|
56418
|
+
i0.ɵɵtext(15, " Additional Growth Needed ");
|
|
56344
56419
|
i0.ɵɵelementEnd();
|
|
56345
|
-
i0.ɵɵelementStart(
|
|
56346
|
-
i0.ɵɵ
|
|
56420
|
+
i0.ɵɵelementStart(16, "button", 52);
|
|
56421
|
+
i0.ɵɵnamespaceSVG();
|
|
56422
|
+
i0.ɵɵelementStart(17, "svg", 53);
|
|
56423
|
+
i0.ɵɵelement(18, "path", 54);
|
|
56424
|
+
i0.ɵɵelementEnd()()();
|
|
56425
|
+
i0.ɵɵnamespaceHTML();
|
|
56426
|
+
i0.ɵɵelementStart(19, "p", 49);
|
|
56427
|
+
i0.ɵɵtext(20);
|
|
56347
56428
|
i0.ɵɵelementEnd()()()();
|
|
56348
56429
|
} if (rf & 2) {
|
|
56349
56430
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
56350
|
-
i0.ɵɵproperty("ngClass", ctx_r0.calculatedDividerClasses());
|
|
56351
56431
|
i0.ɵɵadvance(2);
|
|
56432
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dividerBorderClasses());
|
|
56433
|
+
i0.ɵɵadvance();
|
|
56352
56434
|
i0.ɵɵproperty("ngClass", ctx_r0.dividerLabelClasses());
|
|
56353
56435
|
i0.ɵɵadvance();
|
|
56354
56436
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.currentYear(), " YTD Gap ");
|
|
56437
|
+
i0.ɵɵadvance();
|
|
56438
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dividerBorderClasses());
|
|
56355
56439
|
i0.ɵɵadvance(3);
|
|
56356
56440
|
i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
|
|
56357
56441
|
i0.ɵɵadvance(2);
|
|
56358
56442
|
i0.ɵɵproperty("ngClass", ctx_r0.calculatedSecondaryClasses());
|
|
56359
56443
|
i0.ɵɵadvance();
|
|
56360
56444
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.absValue(ctx_r0.gapToClose().amount)), " ");
|
|
56361
|
-
i0.ɵɵadvance(
|
|
56445
|
+
i0.ɵɵadvance(3);
|
|
56362
56446
|
i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
|
|
56363
56447
|
i0.ɵɵadvance(2);
|
|
56448
|
+
i0.ɵɵproperty("ngClass", ctx_r0.infoIconClasses())("libSymphiqTooltip", ctx_r0.additionalGrowthTooltip);
|
|
56449
|
+
i0.ɵɵadvance(3);
|
|
56364
56450
|
i0.ɵɵproperty("ngClass", ctx_r0.calculatedSecondaryClasses());
|
|
56365
56451
|
i0.ɵɵadvance();
|
|
56366
56452
|
i0.ɵɵtextInterpolate2(" ", ctx_r0.gapToClose().amount > 0 ? "+" : "", "", ctx_r0.formatPercentage(ctx_r0.gapToClose().percentage, 1), " ");
|
|
56367
56453
|
} }
|
|
56368
|
-
function
|
|
56369
|
-
i0.ɵɵelementStart(0, "div", 26)(1, "div", 17)(2, "div",
|
|
56454
|
+
function InitialTargetSettingComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
56455
|
+
i0.ɵɵelementStart(0, "div", 26)(1, "div", 17)(2, "div", 40)(3, "div")(4, "p", 41);
|
|
56370
56456
|
i0.ɵɵtext(5);
|
|
56371
56457
|
i0.ɵɵelementEnd();
|
|
56372
|
-
i0.ɵɵelementStart(6, "p",
|
|
56458
|
+
i0.ɵɵelementStart(6, "p", 42);
|
|
56373
56459
|
i0.ɵɵtext(7);
|
|
56374
56460
|
i0.ɵɵelementEnd()();
|
|
56375
|
-
i0.ɵɵconditionalCreate(8,
|
|
56461
|
+
i0.ɵɵconditionalCreate(8, InitialTargetSettingComponent_Conditional_33_Conditional_8_Template, 2, 1, "button", 43);
|
|
56376
56462
|
i0.ɵɵelementEnd();
|
|
56377
|
-
i0.ɵɵelementStart(9, "div",
|
|
56378
|
-
i0.ɵɵ
|
|
56379
|
-
i0.ɵɵ
|
|
56380
|
-
i0.ɵɵ
|
|
56381
|
-
i0.ɵɵtext(16, " Increase Amount ");
|
|
56463
|
+
i0.ɵɵelementStart(9, "div", 44)(10, "div", 45);
|
|
56464
|
+
i0.ɵɵelement(11, "div", 46);
|
|
56465
|
+
i0.ɵɵelementStart(12, "span", 47);
|
|
56466
|
+
i0.ɵɵtext(13);
|
|
56382
56467
|
i0.ɵɵelementEnd();
|
|
56383
|
-
i0.ɵɵ
|
|
56384
|
-
i0.ɵɵ
|
|
56468
|
+
i0.ɵɵelement(14, "div", 46);
|
|
56469
|
+
i0.ɵɵelementEnd();
|
|
56470
|
+
i0.ɵɵelementStart(15, "div", 48)(16, "div")(17, "p", 41);
|
|
56471
|
+
i0.ɵɵtext(18, " Increase Amount ");
|
|
56472
|
+
i0.ɵɵelementEnd();
|
|
56473
|
+
i0.ɵɵelementStart(19, "p", 49);
|
|
56474
|
+
i0.ɵɵtext(20);
|
|
56385
56475
|
i0.ɵɵelementEnd()();
|
|
56386
|
-
i0.ɵɵelementStart(
|
|
56387
|
-
i0.ɵɵtext(
|
|
56476
|
+
i0.ɵɵelementStart(21, "div")(22, "p", 41);
|
|
56477
|
+
i0.ɵɵtext(23, " % Growth ");
|
|
56388
56478
|
i0.ɵɵelementEnd();
|
|
56389
|
-
i0.ɵɵelementStart(
|
|
56390
|
-
i0.ɵɵtext(
|
|
56479
|
+
i0.ɵɵelementStart(24, "p", 49);
|
|
56480
|
+
i0.ɵɵtext(25);
|
|
56391
56481
|
i0.ɵɵelementEnd()()()();
|
|
56392
|
-
i0.ɵɵconditionalCreate(
|
|
56482
|
+
i0.ɵɵconditionalCreate(26, InitialTargetSettingComponent_Conditional_33_Conditional_26_Template, 21, 13, "div", 44);
|
|
56393
56483
|
i0.ɵɵelementEnd()();
|
|
56394
56484
|
} if (rf & 2) {
|
|
56395
56485
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56404,12 +56494,14 @@ function InitialTargetSettingComponent_Conditional_32_Template(rf, ctx) { if (rf
|
|
|
56404
56494
|
i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCurrency(ctx_r0.displayedTargetRevenue()), " ");
|
|
56405
56495
|
i0.ɵɵadvance();
|
|
56406
56496
|
i0.ɵɵconditional(ctx_r0.calculationState() === "results" ? 8 : -1);
|
|
56497
|
+
i0.ɵɵadvance(3);
|
|
56498
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dividerBorderClasses());
|
|
56407
56499
|
i0.ɵɵadvance();
|
|
56408
|
-
i0.ɵɵproperty("ngClass", ctx_r0.calculatedDividerClasses());
|
|
56409
|
-
i0.ɵɵadvance(2);
|
|
56410
56500
|
i0.ɵɵproperty("ngClass", ctx_r0.dividerLabelClasses());
|
|
56411
56501
|
i0.ɵɵadvance();
|
|
56412
56502
|
i0.ɵɵtextInterpolate1(" vs. ", ctx_r0.priorYear(), " ");
|
|
56503
|
+
i0.ɵɵadvance();
|
|
56504
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dividerBorderClasses());
|
|
56413
56505
|
i0.ɵɵadvance(3);
|
|
56414
56506
|
i0.ɵɵproperty("ngClass", ctx_r0.calculatedLabelClasses());
|
|
56415
56507
|
i0.ɵɵadvance(2);
|
|
@@ -56423,31 +56515,47 @@ function InitialTargetSettingComponent_Conditional_32_Template(rf, ctx) { if (rf
|
|
|
56423
56515
|
i0.ɵɵadvance();
|
|
56424
56516
|
i0.ɵɵtextInterpolate1(" +", ctx_r0.formatPercentage(ctx_r0.percentageIncrease(), 1), " ");
|
|
56425
56517
|
i0.ɵɵadvance();
|
|
56426
|
-
i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ?
|
|
56518
|
+
i0.ɵɵconditional(ctx_r0.currentPaceProjection() > 0 && ctx_r0.gapToClose().amount !== 0 ? 26 : -1);
|
|
56427
56519
|
} }
|
|
56428
|
-
function
|
|
56520
|
+
function InitialTargetSettingComponent_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
56429
56521
|
i0.ɵɵelement(0, "symphiq-area-chart", 22);
|
|
56430
56522
|
} if (rf & 2) {
|
|
56431
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
56523
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
56432
56524
|
i0.ɵɵproperty("chart", ctx_r0.revenueChartData())("showAxisLabels", true)("viewMode", ctx_r0.viewMode())("currencySymbol", "$")("height", "320px");
|
|
56433
56525
|
} }
|
|
56434
|
-
function
|
|
56435
|
-
i0.ɵɵelementStart(0, "div", 23)(1, "p",
|
|
56526
|
+
function InitialTargetSettingComponent_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
56527
|
+
i0.ɵɵelementStart(0, "div", 23)(1, "p", 39);
|
|
56436
56528
|
i0.ɵɵtext(2, " No revenue data available ");
|
|
56437
56529
|
i0.ɵɵelementEnd()();
|
|
56438
56530
|
} if (rf & 2) {
|
|
56439
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
56531
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
56440
56532
|
i0.ɵɵadvance();
|
|
56441
56533
|
i0.ɵɵproperty("ngClass", ctx_r0.noDataClasses());
|
|
56442
56534
|
} }
|
|
56443
|
-
function
|
|
56444
|
-
i0.ɵɵelementStart(0, "div",
|
|
56535
|
+
function InitialTargetSettingComponent_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
56536
|
+
i0.ɵɵelementStart(0, "div", 27)(1, "p", 20);
|
|
56537
|
+
i0.ɵɵtext(2, " Year-over-Year Revenue Trend ");
|
|
56538
|
+
i0.ɵɵelementEnd();
|
|
56539
|
+
i0.ɵɵelementStart(3, "div", 21);
|
|
56540
|
+
i0.ɵɵconditionalCreate(4, InitialTargetSettingComponent_Conditional_34_Conditional_4_Template, 1, 5, "symphiq-area-chart", 22)(5, InitialTargetSettingComponent_Conditional_34_Conditional_5_Template, 3, 1, "div", 23);
|
|
56541
|
+
i0.ɵɵelementEnd()();
|
|
56542
|
+
} if (rf & 2) {
|
|
56543
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
56544
|
+
i0.ɵɵadvance();
|
|
56545
|
+
i0.ɵɵproperty("ngClass", ctx_r0.chartTitleClasses());
|
|
56546
|
+
i0.ɵɵadvance(2);
|
|
56547
|
+
i0.ɵɵproperty("ngClass", ctx_r0.chartContainerClasses());
|
|
56548
|
+
i0.ɵɵadvance();
|
|
56549
|
+
i0.ɵɵconditional(ctx_r0.revenueChartData() ? 4 : 5);
|
|
56550
|
+
} }
|
|
56551
|
+
function InitialTargetSettingComponent_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
56552
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 55)(2, "h2", 56);
|
|
56445
56553
|
i0.ɵɵtext(3, " Contributing Metrics ");
|
|
56446
56554
|
i0.ɵɵelementEnd();
|
|
56447
|
-
i0.ɵɵelementStart(4, "p",
|
|
56555
|
+
i0.ɵɵelementStart(4, "p", 39);
|
|
56448
56556
|
i0.ɵɵtext(5);
|
|
56449
56557
|
i0.ɵɵelementEnd()();
|
|
56450
|
-
i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization",
|
|
56558
|
+
i0.ɵɵelement(6, "symphiq-funnel-metrics-visualization", 57);
|
|
56451
56559
|
i0.ɵɵelementEnd();
|
|
56452
56560
|
} if (rf & 2) {
|
|
56453
56561
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -56519,16 +56627,33 @@ class InitialTargetSettingComponent {
|
|
|
56519
56627
|
}, ...(ngDevMode ? [{ debugName: "percentageIncrease" }] : []));
|
|
56520
56628
|
this.displayedMetricCalculations = computed(() => {
|
|
56521
56629
|
const response = this.storedResponse();
|
|
56630
|
+
const pacingData = this.pacingMetrics();
|
|
56631
|
+
console.group('[PACING] displayedMetricCalculations computed');
|
|
56632
|
+
console.log('[PACING] storedResponse exists:', !!response);
|
|
56633
|
+
console.log('[PACING] pacingMetrics exists:', !!pacingData);
|
|
56634
|
+
if (pacingData) {
|
|
56635
|
+
console.log('[PACING] pacingMetrics summary:', {
|
|
56636
|
+
soFarMetricValuesCount: pacingData.soFarMetricValues?.length ?? 0,
|
|
56637
|
+
soFarMetrics: pacingData.soFarMetricValues?.map(m => ({ metric: m.metric, value: m.value })),
|
|
56638
|
+
projectedMetricValuesCount: pacingData.projectedMetricValues?.length ?? 0,
|
|
56639
|
+
lastYearMetricValuesMonthlyCount: pacingData.lastYearMetricValuesMonthly?.length ?? 0,
|
|
56640
|
+
lastYearUniqueMetrics: [...new Set(pacingData.lastYearMetricValuesMonthly?.map(m => m.metric))]
|
|
56641
|
+
});
|
|
56642
|
+
}
|
|
56522
56643
|
if (!response) {
|
|
56644
|
+
console.log('[PACING] No storedResponse - returning empty array');
|
|
56645
|
+
console.groupEnd();
|
|
56523
56646
|
return [];
|
|
56524
56647
|
}
|
|
56525
56648
|
const results = [];
|
|
56526
56649
|
if (response.funnelMetricValues) {
|
|
56650
|
+
console.log('[PACING] Processing funnelMetricValues:', response.funnelMetricValues.length);
|
|
56527
56651
|
response.funnelMetricValues.forEach((metricValue) => {
|
|
56528
56652
|
const metric = metricValue.metric;
|
|
56529
56653
|
const funnelMetric = this.funnelMetrics().find(fm => fm.funnelMetric === metric && fm.funnelMetric === fm.relatedMetric);
|
|
56530
56654
|
const currentValue = sumMetricFromUiData(this.mainUiData(), metric, 'priorYear');
|
|
56531
56655
|
const { targetValue, percentageIncrease } = this.parseMetricValue(metricValue.value);
|
|
56656
|
+
console.log(`[PACING] Stage metric ${metric}:`, { currentValue, targetValue, percentageIncrease, funnelInd: funnelMetric?.funnelInd });
|
|
56532
56657
|
results.push({
|
|
56533
56658
|
metric,
|
|
56534
56659
|
funnelMetric: metric,
|
|
@@ -56543,6 +56668,7 @@ class InitialTargetSettingComponent {
|
|
|
56543
56668
|
});
|
|
56544
56669
|
}
|
|
56545
56670
|
if (response.relatedMetricTargets) {
|
|
56671
|
+
console.log('[PACING] Processing relatedMetricTargets:', response.relatedMetricTargets.length);
|
|
56546
56672
|
response.relatedMetricTargets.forEach((metricValue) => {
|
|
56547
56673
|
const metric = metricValue.metric;
|
|
56548
56674
|
const funnelMetric = this.funnelMetrics().find(fm => fm.relatedMetric === metric);
|
|
@@ -56561,6 +56687,10 @@ class InitialTargetSettingComponent {
|
|
|
56561
56687
|
});
|
|
56562
56688
|
});
|
|
56563
56689
|
}
|
|
56690
|
+
console.log('[PACING] Final results count:', results.length);
|
|
56691
|
+
console.log('[PACING] Stage metrics:', results.filter(r => r.isFunnelStage).map(r => r.metric));
|
|
56692
|
+
console.log('[PACING] Related metrics:', results.filter(r => !r.isFunnelStage).map(r => r.metric));
|
|
56693
|
+
console.groupEnd();
|
|
56564
56694
|
return results;
|
|
56565
56695
|
}, ...(ngDevMode ? [{ debugName: "displayedMetricCalculations" }] : []));
|
|
56566
56696
|
this.displayedTargetRevenue = computed(() => {
|
|
@@ -56627,6 +56757,10 @@ class InitialTargetSettingComponent {
|
|
|
56627
56757
|
}, ...(ngDevMode ? [{ debugName: "revenueChartData" }] : []));
|
|
56628
56758
|
this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
|
|
56629
56759
|
this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
|
|
56760
|
+
this.additionalGrowthTooltip = {
|
|
56761
|
+
title: 'Additional Growth Needed',
|
|
56762
|
+
markdown: 'This percentage represents the additional growth required beyond your current projected pace to reach your revenue target. It shows how much more improvement is needed in your funnel metrics to close the gap between your projected performance and your goal.'
|
|
56763
|
+
};
|
|
56630
56764
|
effect(() => {
|
|
56631
56765
|
const response = this.reverseCalculationResponse();
|
|
56632
56766
|
if (response) {
|
|
@@ -56812,6 +56946,11 @@ class InitialTargetSettingComponent {
|
|
|
56812
56946
|
? 'border-t border-purple-500/20'
|
|
56813
56947
|
: 'border-t border-purple-200';
|
|
56814
56948
|
}
|
|
56949
|
+
dividerBorderClasses() {
|
|
56950
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
56951
|
+
? 'bg-purple-500/20'
|
|
56952
|
+
: 'bg-purple-200';
|
|
56953
|
+
}
|
|
56815
56954
|
chartTitleClasses() {
|
|
56816
56955
|
return this.viewMode() === ViewModeEnum.DARK
|
|
56817
56956
|
? 'text-slate-200'
|
|
@@ -56882,6 +57021,11 @@ class InitialTargetSettingComponent {
|
|
|
56882
57021
|
? 'bg-slate-800/60 border-slate-600'
|
|
56883
57022
|
: 'bg-slate-50 border-slate-300';
|
|
56884
57023
|
}
|
|
57024
|
+
infoIconClasses() {
|
|
57025
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
57026
|
+
? 'bg-slate-700/50 text-slate-400 hover:bg-slate-600/50 hover:text-slate-300'
|
|
57027
|
+
: 'bg-slate-100 text-slate-500 hover:bg-slate-200 hover:text-slate-700';
|
|
57028
|
+
}
|
|
56885
57029
|
static { this.ɵfac = function InitialTargetSettingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || InitialTargetSettingComponent)(); }; }
|
|
56886
57030
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InitialTargetSettingComponent, selectors: [["symphiq-initial-target-setting"]], viewQuery: function InitialTargetSettingComponent_Query(rf, ctx) { if (rf & 1) {
|
|
56887
57031
|
i0.ɵɵviewQuery(_c0$r, 5);
|
|
@@ -56890,50 +57034,48 @@ class InitialTargetSettingComponent {
|
|
|
56890
57034
|
let _t;
|
|
56891
57035
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.absoluteInputRef = _t.first);
|
|
56892
57036
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.percentageInputRef = _t.first);
|
|
56893
|
-
} }, 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"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls:
|
|
56894
|
-
i0.ɵɵelementStart(0, "div", 2)
|
|
56895
|
-
i0.ɵɵ
|
|
57037
|
+
} }, 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"] }, outputs: { targetsCreated: "targetsCreated", calculateRevenueRequest: "calculateRevenueRequest" }, decls: 39, vars: 33, consts: [["absoluteInputRef", ""], ["percentageInputRef", ""], [1, "space-y-8", "pb-32"], [1, "rounded-2xl", "border", "shadow-lg", "p-8", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-6", 3, "ngClass"], [1, "flex", "flex-col", "gap-8"], [1, "grid", "lg:grid-cols-2", "gap-8"], [1, "flex", "flex-col", "gap-4"], [1, "p-6", "rounded-xl", "border-2", 3, "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", "h-full", 3, "ngClass"], [1, "w-full"], [1, "metrics-section-enter"], [1, "metrics-section-content"], [3, "submitClick", "cancelClick", "viewMode", "isValid", "isSubmitting", "validationMessage", "buttonText", "showCancelButton"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"], [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, "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, "text-sm", 3, "ngClass"], [1, "flex", "items-center", "justify-between"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-1", 3, "ngClass"], [1, "text-3xl", "font-bold", 3, "ngClass"], [1, "px-4", "py-2", "rounded-lg", "text-sm", "font-semibold", "transition-all", "whitespace-nowrap", 3, "ngClass"], [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-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"], ["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, "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, "mb-6"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "calculations", "pacingMetrics"]], template: function InitialTargetSettingComponent_Template(rf, ctx) { if (rf & 1) {
|
|
57038
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
57039
|
+
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
57040
|
+
i0.ɵɵelementStart(2, "div", 3)(3, "h2", 4);
|
|
57041
|
+
i0.ɵɵtext(4);
|
|
56896
57042
|
i0.ɵɵelementEnd();
|
|
56897
|
-
i0.ɵɵelementStart(
|
|
57043
|
+
i0.ɵɵelementStart(5, "div", 5)(6, "div", 6)(7, "div", 7)(8, "div", 8)(9, "div", 9)(10, "div", 10);
|
|
56898
57044
|
i0.ɵɵnamespaceSVG();
|
|
56899
|
-
i0.ɵɵelementStart(
|
|
56900
|
-
i0.ɵɵelement(
|
|
57045
|
+
i0.ɵɵelementStart(11, "svg", 11);
|
|
57046
|
+
i0.ɵɵelement(12, "path", 12);
|
|
56901
57047
|
i0.ɵɵelementEnd();
|
|
56902
57048
|
i0.ɵɵnamespaceHTML();
|
|
56903
|
-
i0.ɵɵelementStart(
|
|
56904
|
-
i0.ɵɵtext(
|
|
57049
|
+
i0.ɵɵelementStart(13, "div")(14, "p", 13);
|
|
57050
|
+
i0.ɵɵtext(15);
|
|
56905
57051
|
i0.ɵɵelementEnd();
|
|
56906
|
-
i0.ɵɵelementStart(
|
|
56907
|
-
i0.ɵɵtext(
|
|
57052
|
+
i0.ɵɵelementStart(16, "p", 14);
|
|
57053
|
+
i0.ɵɵtext(17);
|
|
56908
57054
|
i0.ɵɵelementEnd()()();
|
|
56909
|
-
i0.ɵɵconditionalCreate(
|
|
57055
|
+
i0.ɵɵconditionalCreate(18, InitialTargetSettingComponent_Conditional_18_Template, 8, 4, "div", 10);
|
|
56910
57056
|
i0.ɵɵelementEnd();
|
|
56911
|
-
i0.ɵɵelementStart(
|
|
56912
|
-
i0.ɵɵconditionalCreate(
|
|
57057
|
+
i0.ɵɵelementStart(19, "div", 15)(20, "div", 16)(21, "div", 17);
|
|
57058
|
+
i0.ɵɵconditionalCreate(22, InitialTargetSettingComponent_Conditional_22_Template, 7, 3);
|
|
56913
57059
|
i0.ɵɵelementEnd()()()();
|
|
56914
|
-
i0.ɵɵelementStart(
|
|
56915
|
-
i0.ɵɵtext(
|
|
57060
|
+
i0.ɵɵelementStart(23, "div", 18)(24, "div", 19)(25, "div")(26, "p", 20);
|
|
57061
|
+
i0.ɵɵtext(27, " Year-over-Year Revenue Trend ");
|
|
56916
57062
|
i0.ɵɵelementEnd();
|
|
56917
|
-
i0.ɵɵelementStart(
|
|
56918
|
-
i0.ɵɵconditionalCreate(
|
|
57063
|
+
i0.ɵɵelementStart(28, "div", 21);
|
|
57064
|
+
i0.ɵɵconditionalCreate(29, InitialTargetSettingComponent_Conditional_29_Template, 1, 5, "symphiq-area-chart", 22)(30, InitialTargetSettingComponent_Conditional_30_Template, 3, 1, "div", 23);
|
|
56919
57065
|
i0.ɵɵelementEnd()()()()();
|
|
56920
|
-
i0.ɵɵelementStart(
|
|
56921
|
-
i0.ɵɵconditionalCreate(
|
|
57066
|
+
i0.ɵɵelementStart(31, "div", 24)(32, "div", 25);
|
|
57067
|
+
i0.ɵɵconditionalCreate(33, InitialTargetSettingComponent_Conditional_33_Template, 27, 17, "div", 26);
|
|
56922
57068
|
i0.ɵɵelementEnd()()();
|
|
56923
|
-
i0.ɵɵ
|
|
56924
|
-
i0.ɵɵtext(37, " Year-over-Year Revenue Trend ");
|
|
56925
|
-
i0.ɵɵelementEnd();
|
|
56926
|
-
i0.ɵɵelementStart(38, "div", 21);
|
|
56927
|
-
i0.ɵɵconditionalCreate(39, InitialTargetSettingComponent_Conditional_39_Template, 1, 5, "symphiq-area-chart", 22)(40, InitialTargetSettingComponent_Conditional_40_Template, 3, 1, "div", 23);
|
|
56928
|
-
i0.ɵɵelementEnd()()()()()();
|
|
56929
|
-
i0.ɵɵelementStart(41, "div", 30)(42, "div", 31);
|
|
56930
|
-
i0.ɵɵconditionalCreate(43, InitialTargetSettingComponent_Conditional_43_Template, 7, 7, "div", 3);
|
|
57069
|
+
i0.ɵɵconditionalCreate(34, InitialTargetSettingComponent_Conditional_34_Template, 6, 3, "div", 27);
|
|
56931
57070
|
i0.ɵɵelementEnd()();
|
|
56932
|
-
i0.ɵɵelementStart(
|
|
56933
|
-
i0.ɵɵ
|
|
57071
|
+
i0.ɵɵelementStart(35, "div", 28)(36, "div", 29);
|
|
57072
|
+
i0.ɵɵconditionalCreate(37, InitialTargetSettingComponent_Conditional_37_Template, 7, 7, "div", 3);
|
|
57073
|
+
i0.ɵɵelementEnd()();
|
|
57074
|
+
i0.ɵɵelementStart(38, "symphiq-sticky-submit-bar", 30);
|
|
57075
|
+
i0.ɵɵlistener("submitClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_submitClick_38_listener() { return ctx.handleSubmitClick(); })("cancelClick", function InitialTargetSettingComponent_Template_symphiq_sticky_submit_bar_cancelClick_38_listener() { return ctx.handleCancel(); });
|
|
56934
57076
|
i0.ɵɵelementEnd()();
|
|
56935
57077
|
} if (rf & 2) {
|
|
56936
|
-
i0.ɵɵadvance();
|
|
57078
|
+
i0.ɵɵadvance(2);
|
|
56937
57079
|
i0.ɵɵproperty("ngClass", ctx.sectionCardClasses());
|
|
56938
57080
|
i0.ɵɵadvance();
|
|
56939
57081
|
i0.ɵɵproperty("ngClass", ctx.sectionTitleClasses());
|
|
@@ -56942,7 +57084,7 @@ class InitialTargetSettingComponent {
|
|
|
56942
57084
|
i0.ɵɵadvance(4);
|
|
56943
57085
|
i0.ɵɵproperty("ngClass", ctx.formAreaClasses());
|
|
56944
57086
|
i0.ɵɵadvance();
|
|
56945
|
-
i0.ɵɵclassProp("mb-
|
|
57087
|
+
i0.ɵɵclassProp("mb-6", ctx.calculationState() !== "results");
|
|
56946
57088
|
i0.ɵɵadvance(2);
|
|
56947
57089
|
i0.ɵɵproperty("ngClass", ctx.baselineIconClasses());
|
|
56948
57090
|
i0.ɵɵadvance(3);
|
|
@@ -56954,11 +57096,11 @@ class InitialTargetSettingComponent {
|
|
|
56954
57096
|
i0.ɵɵadvance();
|
|
56955
57097
|
i0.ɵɵtextInterpolate1(" ", ctx.formatCurrency(ctx.priorYearRevenue()), " ");
|
|
56956
57098
|
i0.ɵɵadvance();
|
|
56957
|
-
i0.ɵɵconditional(ctx.currentPaceProjection() > 0 ?
|
|
57099
|
+
i0.ɵɵconditional(ctx.currentPaceProjection() > 0 ? 18 : -1);
|
|
56958
57100
|
i0.ɵɵadvance();
|
|
56959
57101
|
i0.ɵɵclassProp("form-area-collapse-hidden", ctx.calculationState() === "results");
|
|
56960
57102
|
i0.ɵɵadvance(3);
|
|
56961
|
-
i0.ɵɵconditional(ctx.calculationState() !== "results" ?
|
|
57103
|
+
i0.ɵɵconditional(ctx.calculationState() !== "results" ? 22 : -1);
|
|
56962
57104
|
i0.ɵɵadvance();
|
|
56963
57105
|
i0.ɵɵclassProp("chart-in-column-active", ctx.calculationState() === "results");
|
|
56964
57106
|
i0.ɵɵadvance(3);
|
|
@@ -56966,28 +57108,24 @@ class InitialTargetSettingComponent {
|
|
|
56966
57108
|
i0.ɵɵadvance(2);
|
|
56967
57109
|
i0.ɵɵproperty("ngClass", ctx.chartContainerClasses());
|
|
56968
57110
|
i0.ɵɵadvance();
|
|
56969
|
-
i0.ɵɵconditional(ctx.revenueChartData() ?
|
|
57111
|
+
i0.ɵɵconditional(ctx.revenueChartData() ? 29 : 30);
|
|
56970
57112
|
i0.ɵɵadvance(2);
|
|
56971
57113
|
i0.ɵɵclassProp("calculated-card-enter-active", ctx.calculatedRevenue() > 0);
|
|
56972
57114
|
i0.ɵɵadvance(2);
|
|
56973
|
-
i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ?
|
|
57115
|
+
i0.ɵɵconditional(ctx.calculatedRevenue() > 0 ? 33 : -1);
|
|
56974
57116
|
i0.ɵɵadvance();
|
|
56975
|
-
i0.ɵɵ
|
|
56976
|
-
i0.ɵɵadvance(3);
|
|
56977
|
-
i0.ɵɵproperty("ngClass", ctx.chartTitleClasses());
|
|
56978
|
-
i0.ɵɵadvance(2);
|
|
56979
|
-
i0.ɵɵproperty("ngClass", ctx.chartContainerClasses());
|
|
57117
|
+
i0.ɵɵconditional(ctx.calculationState() !== "results" ? 34 : -1);
|
|
56980
57118
|
i0.ɵɵadvance();
|
|
56981
|
-
i0.ɵɵconditional(ctx.revenueChartData() ? 39 : 40);
|
|
56982
|
-
i0.ɵɵadvance(2);
|
|
56983
57119
|
i0.ɵɵclassProp("metrics-section-enter-active", ctx.showMetricsVisualization());
|
|
56984
57120
|
i0.ɵɵadvance(2);
|
|
56985
|
-
i0.ɵɵconditional(ctx.showMetricsVisualization() ?
|
|
57121
|
+
i0.ɵɵconditional(ctx.showMetricsVisualization() ? 37 : -1);
|
|
56986
57122
|
i0.ɵɵadvance();
|
|
56987
57123
|
i0.ɵɵproperty("viewMode", ctx.viewMode())("isValid", ctx.isValid())("isSubmitting", ctx.isCalculating())("validationMessage", ctx.validationMessage())("buttonText", ctx.submitButtonText())("showCancelButton", ctx.calculationState() === "input" && ctx.hasStoredResponse());
|
|
56988
57124
|
} }, 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,
|
|
56989
57125
|
StickySubmitBarComponent,
|
|
56990
|
-
AreaChartComponent
|
|
57126
|
+
AreaChartComponent,
|
|
57127
|
+
TooltipDirective,
|
|
57128
|
+
TooltipContainerComponent], 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}"], changeDetection: 0 }); }
|
|
56991
57129
|
}
|
|
56992
57130
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InitialTargetSettingComponent, [{
|
|
56993
57131
|
type: Component,
|
|
@@ -56996,9 +57134,12 @@ class InitialTargetSettingComponent {
|
|
|
56996
57134
|
FormsModule,
|
|
56997
57135
|
FunnelMetricsVisualizationComponent,
|
|
56998
57136
|
StickySubmitBarComponent,
|
|
56999
|
-
AreaChartComponent
|
|
57137
|
+
AreaChartComponent,
|
|
57138
|
+
TooltipDirective,
|
|
57139
|
+
TooltipContainerComponent
|
|
57000
57140
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
57001
57141
|
<div class="space-y-8 pb-32">
|
|
57142
|
+
<symphiq-tooltip-container />
|
|
57002
57143
|
<div [ngClass]="sectionCardClasses()" class="rounded-2xl border shadow-lg p-8">
|
|
57003
57144
|
<h2 [ngClass]="sectionTitleClasses()" class="text-2xl font-bold mb-6">
|
|
57004
57145
|
Calculate Your {{ currentYear() }} Revenue Target
|
|
@@ -57008,7 +57149,7 @@ class InitialTargetSettingComponent {
|
|
|
57008
57149
|
<div class="grid lg:grid-cols-2 gap-8">
|
|
57009
57150
|
<div class="flex flex-col gap-4">
|
|
57010
57151
|
<div [ngClass]="formAreaClasses()" class="p-6 rounded-xl border-2">
|
|
57011
|
-
<div class="flex flex-wrap gap-4 place-content-between
|
|
57152
|
+
<div class="flex flex-wrap gap-4 place-content-between" [class.mb-6]="calculationState() !== 'results'">
|
|
57012
57153
|
<div class="flex items-center gap-2">
|
|
57013
57154
|
<svg class="w-4 h-4" [ngClass]="baselineIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57014
57155
|
<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>
|
|
@@ -57111,7 +57252,7 @@ class InitialTargetSettingComponent {
|
|
|
57111
57252
|
[showAxisLabels]="true"
|
|
57112
57253
|
[viewMode]="viewMode()"
|
|
57113
57254
|
[currencySymbol]="'$'"
|
|
57114
|
-
[height]="'
|
|
57255
|
+
[height]="'108px'"
|
|
57115
57256
|
/>
|
|
57116
57257
|
} @else {
|
|
57117
57258
|
<div class="h-64 flex items-center justify-center">
|
|
@@ -57150,11 +57291,13 @@ class InitialTargetSettingComponent {
|
|
|
57150
57291
|
}
|
|
57151
57292
|
</div>
|
|
57152
57293
|
|
|
57153
|
-
<div class="relative pt-6 mt-6"
|
|
57154
|
-
<div class="absolute top-0 left-
|
|
57294
|
+
<div class="relative pt-6 mt-6">
|
|
57295
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
57296
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
57155
57297
|
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
57156
57298
|
vs. {{ priorYear() }}
|
|
57157
57299
|
</span>
|
|
57300
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
57158
57301
|
</div>
|
|
57159
57302
|
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
57160
57303
|
<div>
|
|
@@ -57177,11 +57320,13 @@ class InitialTargetSettingComponent {
|
|
|
57177
57320
|
</div>
|
|
57178
57321
|
|
|
57179
57322
|
@if (currentPaceProjection() > 0 && gapToClose().amount !== 0) {
|
|
57180
|
-
<div class="relative pt-6 mt-6"
|
|
57181
|
-
<div class="absolute top-0 left-
|
|
57323
|
+
<div class="relative pt-6 mt-6">
|
|
57324
|
+
<div class="absolute top-0 left-0 right-0 flex items-center -translate-y-1/2">
|
|
57325
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
57182
57326
|
<span [ngClass]="dividerLabelClasses()" class="px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap">
|
|
57183
57327
|
{{ currentYear() }} YTD Gap
|
|
57184
57328
|
</span>
|
|
57329
|
+
<div class="flex-1 h-px" [ngClass]="dividerBorderClasses()"></div>
|
|
57185
57330
|
</div>
|
|
57186
57331
|
<div class="grid grid-cols-2 gap-4 pt-2">
|
|
57187
57332
|
<div>
|
|
@@ -57193,9 +57338,22 @@ class InitialTargetSettingComponent {
|
|
|
57193
57338
|
</p>
|
|
57194
57339
|
</div>
|
|
57195
57340
|
<div>
|
|
57196
|
-
<
|
|
57197
|
-
|
|
57198
|
-
|
|
57341
|
+
<div class="flex items-center gap-1 mb-1">
|
|
57342
|
+
<p [ngClass]="calculatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider">
|
|
57343
|
+
Additional Growth Needed
|
|
57344
|
+
</p>
|
|
57345
|
+
<button
|
|
57346
|
+
type="button"
|
|
57347
|
+
[ngClass]="infoIconClasses()"
|
|
57348
|
+
class="flex-shrink-0 w-4 h-4 rounded-full inline-flex items-center justify-center transition-colors"
|
|
57349
|
+
[libSymphiqTooltip]="additionalGrowthTooltip"
|
|
57350
|
+
tooltipType="markdown"
|
|
57351
|
+
tooltipPosition="top">
|
|
57352
|
+
<svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
57353
|
+
<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" />
|
|
57354
|
+
</svg>
|
|
57355
|
+
</button>
|
|
57356
|
+
</div>
|
|
57199
57357
|
<p [ngClass]="calculatedSecondaryClasses()" class="text-xl font-bold">
|
|
57200
57358
|
{{ gapToClose().amount > 0 ? '+' : '' }}{{ formatPercentage(gapToClose().percentage, 1) }}
|
|
57201
57359
|
</p>
|
|
@@ -57210,32 +57368,30 @@ class InitialTargetSettingComponent {
|
|
|
57210
57368
|
</div>
|
|
57211
57369
|
</div>
|
|
57212
57370
|
|
|
57213
|
-
|
|
57214
|
-
<div class="
|
|
57215
|
-
<
|
|
57216
|
-
|
|
57217
|
-
|
|
57218
|
-
|
|
57219
|
-
|
|
57220
|
-
|
|
57221
|
-
|
|
57222
|
-
|
|
57223
|
-
|
|
57224
|
-
|
|
57225
|
-
|
|
57226
|
-
|
|
57227
|
-
|
|
57228
|
-
|
|
57229
|
-
<
|
|
57230
|
-
|
|
57231
|
-
|
|
57232
|
-
|
|
57233
|
-
|
|
57234
|
-
}
|
|
57235
|
-
</div>
|
|
57371
|
+
@if (calculationState() !== 'results') {
|
|
57372
|
+
<div class="w-full">
|
|
57373
|
+
<p [ngClass]="chartTitleClasses()" class="text-sm font-semibold mb-3">
|
|
57374
|
+
Year-over-Year Revenue Trend
|
|
57375
|
+
</p>
|
|
57376
|
+
<div [ngClass]="chartContainerClasses()" class="rounded-xl border p-4">
|
|
57377
|
+
@if (revenueChartData()) {
|
|
57378
|
+
<symphiq-area-chart
|
|
57379
|
+
[chart]="revenueChartData()!"
|
|
57380
|
+
[showAxisLabels]="true"
|
|
57381
|
+
[viewMode]="viewMode()"
|
|
57382
|
+
[currencySymbol]="'$'"
|
|
57383
|
+
[height]="'320px'"
|
|
57384
|
+
/>
|
|
57385
|
+
} @else {
|
|
57386
|
+
<div class="h-64 flex items-center justify-center">
|
|
57387
|
+
<p [ngClass]="noDataClasses()" class="text-sm">
|
|
57388
|
+
No revenue data available
|
|
57389
|
+
</p>
|
|
57390
|
+
</div>
|
|
57391
|
+
}
|
|
57236
57392
|
</div>
|
|
57237
57393
|
</div>
|
|
57238
|
-
|
|
57394
|
+
}
|
|
57239
57395
|
</div>
|
|
57240
57396
|
</div>
|
|
57241
57397
|
|
|
@@ -57281,7 +57437,7 @@ class InitialTargetSettingComponent {
|
|
|
57281
57437
|
type: ViewChild,
|
|
57282
57438
|
args: ['percentageInputRef']
|
|
57283
57439
|
}], 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 }] }], targetsCreated: [{ type: i0.Output, args: ["targetsCreated"] }], calculateRevenueRequest: [{ type: i0.Output, args: ["calculateRevenueRequest"] }] }); })();
|
|
57284
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber:
|
|
57440
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(InitialTargetSettingComponent, { className: "InitialTargetSettingComponent", filePath: "lib/components/revenue-calculator-dashboard/initial-target-setting.component.ts", lineNumber: 418 }); })();
|
|
57285
57441
|
|
|
57286
57442
|
function IndeterminateSpinnerComponent_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
57287
57443
|
i0.ɵɵelement(0, "div", 5);
|