@eric-emg/symphiq-components 1.2.235 → 1.2.236
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 +348 -243
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +3 -3
- package/package.json +1 -1
- package/styles.css +21 -0
|
@@ -2562,14 +2562,27 @@ function isCurrentYearTarget(target) {
|
|
|
2562
2562
|
return (targetStart.getTime() === currentYearStart.getTime() &&
|
|
2563
2563
|
targetEnd.getTime() === currentYearEnd.getTime());
|
|
2564
2564
|
}
|
|
2565
|
+
function getMinFractionDigitsForSignificantFigures(value, minSigFigs) {
|
|
2566
|
+
if (value === 0)
|
|
2567
|
+
return 0;
|
|
2568
|
+
const absValue = Math.abs(value);
|
|
2569
|
+
if (absValue >= 1) {
|
|
2570
|
+
return 2;
|
|
2571
|
+
}
|
|
2572
|
+
const magnitude = Math.floor(Math.log10(absValue));
|
|
2573
|
+
return Math.max(0, -magnitude + minSigFigs - 1);
|
|
2574
|
+
}
|
|
2565
2575
|
function formatCurrency(value, currencySymbol = '$') {
|
|
2576
|
+
const fractionDigits = getMinFractionDigitsForSignificantFigures(value, 2);
|
|
2566
2577
|
return `${currencySymbol}${value.toLocaleString('en-US', {
|
|
2567
|
-
minimumFractionDigits:
|
|
2568
|
-
maximumFractionDigits:
|
|
2578
|
+
minimumFractionDigits: fractionDigits,
|
|
2579
|
+
maximumFractionDigits: fractionDigits
|
|
2569
2580
|
})}`;
|
|
2570
2581
|
}
|
|
2571
2582
|
function formatPercentage(value, decimals = 1) {
|
|
2572
|
-
|
|
2583
|
+
const minDecimals = getMinFractionDigitsForSignificantFigures(value, 2);
|
|
2584
|
+
const finalDecimals = Math.max(decimals, minDecimals);
|
|
2585
|
+
return `${value.toFixed(finalDecimals)}%`;
|
|
2573
2586
|
}
|
|
2574
2587
|
function formatNumber(value) {
|
|
2575
2588
|
return value.toLocaleString('en-US', {
|
|
@@ -55112,13 +55125,13 @@ const _forTrack1$3 = ($index, $item) => $item.calc.metric;
|
|
|
55112
55125
|
function FunnelMetricsVisualizationComponent_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
55113
55126
|
i0.ɵɵelementStart(0, "button", 7);
|
|
55114
55127
|
i0.ɵɵnamespaceSVG();
|
|
55115
|
-
i0.ɵɵelementStart(1, "svg",
|
|
55116
|
-
i0.ɵɵelement(2, "path",
|
|
55128
|
+
i0.ɵɵelementStart(1, "svg", 15);
|
|
55129
|
+
i0.ɵɵelement(2, "path", 19);
|
|
55117
55130
|
i0.ɵɵelementEnd()();
|
|
55118
55131
|
} if (rf & 2) {
|
|
55119
|
-
const
|
|
55120
|
-
const
|
|
55121
|
-
i0.ɵɵproperty("ngClass",
|
|
55132
|
+
const stage_r2 = i0.ɵɵnextContext().$implicit;
|
|
55133
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
55134
|
+
i0.ɵɵproperty("ngClass", ctx_r2.infoIconClasses())("libSymphiqTooltip", ctx_r2.getMarkdownTooltipContent(stage_r2.stageMetric.description, ctx_r2.getMetricTitle(stage_r2.stageMetric)));
|
|
55122
55135
|
} }
|
|
55123
55136
|
function FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
55124
55137
|
i0.ɵɵelementStart(0, "div")(1, "p", 9);
|
|
@@ -55127,127 +55140,146 @@ function FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template(rf, c
|
|
|
55127
55140
|
i0.ɵɵelementStart(3, "p", 11);
|
|
55128
55141
|
i0.ɵɵtext(4);
|
|
55129
55142
|
i0.ɵɵelementEnd();
|
|
55130
|
-
i0.ɵɵelement(5, "symphiq-pacing-status-badge",
|
|
55143
|
+
i0.ɵɵelement(5, "symphiq-pacing-status-badge", 20);
|
|
55131
55144
|
i0.ɵɵelementEnd();
|
|
55132
55145
|
} if (rf & 2) {
|
|
55133
|
-
const
|
|
55134
|
-
const
|
|
55146
|
+
const stage_r2 = i0.ɵɵnextContext().$implicit;
|
|
55147
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
55135
55148
|
i0.ɵɵadvance();
|
|
55136
|
-
i0.ɵɵproperty("ngClass",
|
|
55149
|
+
i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
|
|
55137
55150
|
i0.ɵɵadvance();
|
|
55138
|
-
i0.ɵɵtextInterpolate1(" Pace for ",
|
|
55151
|
+
i0.ɵɵtextInterpolate1(" Pace for ", ctx_r2.currentYear(), " ");
|
|
55139
55152
|
i0.ɵɵadvance();
|
|
55140
|
-
i0.ɵɵproperty("ngClass",
|
|
55153
|
+
i0.ɵɵproperty("ngClass", ctx_r2.projectedValueClasses());
|
|
55141
55154
|
i0.ɵɵadvance();
|
|
55142
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55155
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.pacingInfo.projectedValue, stage_r2.stageMetric.metric, false), " ");
|
|
55143
55156
|
i0.ɵɵadvance();
|
|
55144
|
-
i0.ɵɵproperty("viewMode",
|
|
55157
|
+
i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("pacingPercentage", stage_r2.pacingInfo.pacingPercentage)("status", stage_r2.pacingInfo.status)("showAsFullText", true)("showEmphasizedPercentage", true);
|
|
55145
55158
|
} }
|
|
55146
|
-
function
|
|
55147
|
-
i0.ɵɵelementStart(0, "button",
|
|
55159
|
+
function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
55160
|
+
i0.ɵɵelementStart(0, "button", 28);
|
|
55148
55161
|
i0.ɵɵnamespaceSVG();
|
|
55149
|
-
i0.ɵɵelementStart(1, "svg",
|
|
55150
|
-
i0.ɵɵelement(2, "path",
|
|
55162
|
+
i0.ɵɵelementStart(1, "svg", 36);
|
|
55163
|
+
i0.ɵɵelement(2, "path", 19);
|
|
55151
55164
|
i0.ɵɵelementEnd()();
|
|
55152
55165
|
} if (rf & 2) {
|
|
55153
|
-
const
|
|
55154
|
-
const
|
|
55155
|
-
i0.ɵɵproperty("ngClass",
|
|
55166
|
+
const metric_r5 = i0.ɵɵnextContext().$implicit;
|
|
55167
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
55168
|
+
i0.ɵɵproperty("ngClass", ctx_r2.infoIconClasses())("libSymphiqTooltip", ctx_r2.getMarkdownTooltipContent(metric_r5.calc.description, ctx_r2.getMetricTitle(metric_r5.calc)));
|
|
55156
55169
|
} }
|
|
55157
|
-
function
|
|
55158
|
-
i0.ɵɵelementStart(0, "div")(1, "p",
|
|
55170
|
+
function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
55171
|
+
i0.ɵɵelementStart(0, "div")(1, "p", 30);
|
|
55159
55172
|
i0.ɵɵtext(2);
|
|
55160
55173
|
i0.ɵɵelementEnd();
|
|
55161
|
-
i0.ɵɵelementStart(3, "p",
|
|
55174
|
+
i0.ɵɵelementStart(3, "p", 32);
|
|
55162
55175
|
i0.ɵɵtext(4);
|
|
55163
55176
|
i0.ɵɵelementEnd();
|
|
55164
|
-
i0.ɵɵelement(5, "symphiq-pacing-status-badge",
|
|
55177
|
+
i0.ɵɵelement(5, "symphiq-pacing-status-badge", 37);
|
|
55165
55178
|
i0.ɵɵelementEnd();
|
|
55166
55179
|
} if (rf & 2) {
|
|
55167
|
-
const
|
|
55168
|
-
const
|
|
55180
|
+
const metric_r5 = i0.ɵɵnextContext().$implicit;
|
|
55181
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
55169
55182
|
i0.ɵɵadvance();
|
|
55170
|
-
i0.ɵɵproperty("ngClass",
|
|
55183
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
|
|
55171
55184
|
i0.ɵɵadvance();
|
|
55172
|
-
i0.ɵɵtextInterpolate1(" Pace for ",
|
|
55185
|
+
i0.ɵɵtextInterpolate1(" Pace for ", ctx_r2.currentYear(), " ");
|
|
55173
55186
|
i0.ɵɵadvance();
|
|
55174
|
-
i0.ɵɵproperty("ngClass",
|
|
55187
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedProjectedValueClasses());
|
|
55175
55188
|
i0.ɵɵadvance();
|
|
55176
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55189
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.pacingInfo.projectedValue, metric_r5.calc.metric, false), " ");
|
|
55177
55190
|
i0.ɵɵadvance();
|
|
55178
|
-
i0.ɵɵproperty("viewMode",
|
|
55191
|
+
i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("pacingPercentage", metric_r5.pacingInfo.pacingPercentage)("status", metric_r5.pacingInfo.status)("showAsFullText", true)("isCompact", true)("showEmphasizedPercentage", true);
|
|
55179
55192
|
} }
|
|
55180
|
-
function
|
|
55181
|
-
|
|
55193
|
+
function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
55194
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
55195
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "div", 26)(2, "p", 27);
|
|
55182
55196
|
i0.ɵɵtext(3);
|
|
55183
55197
|
i0.ɵɵelementEnd();
|
|
55184
|
-
i0.ɵɵconditionalCreate(4,
|
|
55198
|
+
i0.ɵɵconditionalCreate(4, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_4_Template, 3, 2, "button", 28);
|
|
55185
55199
|
i0.ɵɵelementEnd();
|
|
55186
|
-
i0.ɵɵelementStart(5, "div",
|
|
55200
|
+
i0.ɵɵelementStart(5, "div", 29)(6, "div")(7, "p", 30);
|
|
55187
55201
|
i0.ɵɵtext(8);
|
|
55188
55202
|
i0.ɵɵelementEnd();
|
|
55189
|
-
i0.ɵɵelementStart(9, "p",
|
|
55203
|
+
i0.ɵɵelementStart(9, "p", 31);
|
|
55190
55204
|
i0.ɵɵtext(10);
|
|
55191
55205
|
i0.ɵɵelementEnd()();
|
|
55192
|
-
i0.ɵɵelementStart(11, "div")(12, "p",
|
|
55206
|
+
i0.ɵɵelementStart(11, "div")(12, "p", 30);
|
|
55193
55207
|
i0.ɵɵtext(13);
|
|
55194
55208
|
i0.ɵɵelementEnd();
|
|
55195
|
-
i0.ɵɵelementStart(14, "p",
|
|
55209
|
+
i0.ɵɵelementStart(14, "p", 32);
|
|
55196
55210
|
i0.ɵɵtext(15);
|
|
55197
55211
|
i0.ɵɵelementEnd();
|
|
55198
|
-
i0.ɵɵelement(16, "symphiq-target-change-badge",
|
|
55212
|
+
i0.ɵɵelement(16, "symphiq-target-change-badge", 33);
|
|
55199
55213
|
i0.ɵɵelementEnd();
|
|
55200
|
-
i0.ɵɵconditionalCreate(17,
|
|
55201
|
-
i0.ɵɵelementEnd()
|
|
55214
|
+
i0.ɵɵconditionalCreate(17, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Conditional_17_Template, 6, 10, "div");
|
|
55215
|
+
i0.ɵɵelementEnd();
|
|
55216
|
+
i0.ɵɵelementStart(18, "div", 34)(19, "button", 35);
|
|
55217
|
+
i0.ɵɵlistener("click", function FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template_button_click_19_listener() { const metric_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onViewRelatedMetricReport(metric_r5.calc.metric)); });
|
|
55218
|
+
i0.ɵɵnamespaceSVG();
|
|
55219
|
+
i0.ɵɵelementStart(20, "svg", 15);
|
|
55220
|
+
i0.ɵɵelement(21, "path", 16);
|
|
55221
|
+
i0.ɵɵelementEnd();
|
|
55222
|
+
i0.ɵɵnamespaceHTML();
|
|
55223
|
+
i0.ɵɵelementStart(22, "span", 17);
|
|
55224
|
+
i0.ɵɵtext(23, "View Report");
|
|
55225
|
+
i0.ɵɵelementEnd();
|
|
55226
|
+
i0.ɵɵelementStart(24, "span", 18);
|
|
55227
|
+
i0.ɵɵtext(25, "Report");
|
|
55228
|
+
i0.ɵɵelementEnd()()()();
|
|
55202
55229
|
} if (rf & 2) {
|
|
55203
|
-
const
|
|
55204
|
-
const
|
|
55205
|
-
i0.ɵɵproperty("ngClass",
|
|
55230
|
+
const metric_r5 = ctx.$implicit;
|
|
55231
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
55232
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedMetricCardClasses());
|
|
55206
55233
|
i0.ɵɵadvance(2);
|
|
55207
|
-
i0.ɵɵproperty("ngClass",
|
|
55234
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedMetricNameClasses());
|
|
55208
55235
|
i0.ɵɵadvance();
|
|
55209
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55236
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getMetricTitle(metric_r5.calc), " ");
|
|
55210
55237
|
i0.ɵɵadvance();
|
|
55211
|
-
i0.ɵɵconditional(
|
|
55238
|
+
i0.ɵɵconditional(metric_r5.calc.description ? 4 : -1);
|
|
55212
55239
|
i0.ɵɵadvance(3);
|
|
55213
|
-
i0.ɵɵproperty("ngClass",
|
|
55240
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
|
|
55214
55241
|
i0.ɵɵadvance();
|
|
55215
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55242
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.priorYear(), " Actual ");
|
|
55216
55243
|
i0.ɵɵadvance();
|
|
55217
|
-
i0.ɵɵproperty("ngClass",
|
|
55244
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedValueClasses());
|
|
55218
55245
|
i0.ɵɵadvance();
|
|
55219
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55246
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.calc.currentValue, metric_r5.calc.metric), " ");
|
|
55220
55247
|
i0.ɵɵadvance(2);
|
|
55221
|
-
i0.ɵɵproperty("ngClass",
|
|
55248
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedLabelClasses());
|
|
55249
|
+
i0.ɵɵadvance();
|
|
55250
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.currentYear(), " Target ");
|
|
55251
|
+
i0.ɵɵadvance();
|
|
55252
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedTargetValueClasses());
|
|
55222
55253
|
i0.ɵɵadvance();
|
|
55223
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55254
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(metric_r5.calc.targetValue, metric_r5.calc.metric, false), " ");
|
|
55224
55255
|
i0.ɵɵadvance();
|
|
55225
|
-
i0.ɵɵproperty("
|
|
55256
|
+
i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("percentageChange", metric_r5.calc.percentageIncrease)("metric", metric_r5.calc.metric)("priorYear", ctx_r2.priorYear())("isCompact", true);
|
|
55226
55257
|
i0.ɵɵadvance();
|
|
55227
|
-
i0.ɵɵ
|
|
55258
|
+
i0.ɵɵconditional(metric_r5.pacingInfo ? 17 : -1);
|
|
55228
55259
|
i0.ɵɵadvance();
|
|
55229
|
-
i0.ɵɵproperty("
|
|
55260
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedActionBarClasses());
|
|
55230
55261
|
i0.ɵɵadvance();
|
|
55231
|
-
i0.ɵɵ
|
|
55262
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedActionButtonClasses());
|
|
55232
55263
|
} }
|
|
55233
|
-
function
|
|
55234
|
-
i0.ɵɵelement(0, "div",
|
|
55235
|
-
i0.ɵɵelementStart(1, "div",
|
|
55264
|
+
function FunnelMetricsVisualizationComponent_For_4_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
55265
|
+
i0.ɵɵelement(0, "div", 21);
|
|
55266
|
+
i0.ɵɵelementStart(1, "div", 22)(2, "p", 23);
|
|
55236
55267
|
i0.ɵɵtext(3, " Related Metrics ");
|
|
55237
55268
|
i0.ɵɵelementEnd();
|
|
55238
|
-
i0.ɵɵelementStart(4, "div",
|
|
55239
|
-
i0.ɵɵrepeaterCreate(5,
|
|
55269
|
+
i0.ɵɵelementStart(4, "div", 24);
|
|
55270
|
+
i0.ɵɵrepeaterCreate(5, FunnelMetricsVisualizationComponent_For_4_Conditional_28_For_6_Template, 26, 20, "div", 25, _forTrack1$3);
|
|
55240
55271
|
i0.ɵɵelementEnd()();
|
|
55241
55272
|
} if (rf & 2) {
|
|
55242
|
-
const
|
|
55243
|
-
const
|
|
55244
|
-
i0.ɵɵproperty("ngClass",
|
|
55273
|
+
const stage_r2 = i0.ɵɵnextContext().$implicit;
|
|
55274
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
55275
|
+
i0.ɵɵproperty("ngClass", ctx_r2.dividerClasses());
|
|
55245
55276
|
i0.ɵɵadvance(2);
|
|
55246
|
-
i0.ɵɵproperty("ngClass",
|
|
55277
|
+
i0.ɵɵproperty("ngClass", ctx_r2.relatedTitleClasses());
|
|
55247
55278
|
i0.ɵɵadvance(3);
|
|
55248
|
-
i0.ɵɵrepeater(
|
|
55279
|
+
i0.ɵɵrepeater(stage_r2.relatedMetrics);
|
|
55249
55280
|
} }
|
|
55250
55281
|
function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
55282
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
55251
55283
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5)(4, "h3", 6);
|
|
55252
55284
|
i0.ɵɵtext(5);
|
|
55253
55285
|
i0.ɵɵelementEnd();
|
|
@@ -55269,46 +55301,65 @@ function FunnelMetricsVisualizationComponent_For_4_Template(rf, ctx) { if (rf &
|
|
|
55269
55301
|
i0.ɵɵelementEnd();
|
|
55270
55302
|
i0.ɵɵconditionalCreate(19, FunnelMetricsVisualizationComponent_For_4_Conditional_19_Template, 6, 9, "div");
|
|
55271
55303
|
i0.ɵɵelementEnd();
|
|
55272
|
-
i0.ɵɵ
|
|
55304
|
+
i0.ɵɵelementStart(20, "div", 13)(21, "button", 14);
|
|
55305
|
+
i0.ɵɵlistener("click", function FunnelMetricsVisualizationComponent_For_4_Template_button_click_21_listener() { const stage_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onViewStageReport(stage_r2.stageMetric.metric)); });
|
|
55306
|
+
i0.ɵɵnamespaceSVG();
|
|
55307
|
+
i0.ɵɵelementStart(22, "svg", 15);
|
|
55308
|
+
i0.ɵɵelement(23, "path", 16);
|
|
55309
|
+
i0.ɵɵelementEnd();
|
|
55310
|
+
i0.ɵɵnamespaceHTML();
|
|
55311
|
+
i0.ɵɵelementStart(24, "span", 17);
|
|
55312
|
+
i0.ɵɵtext(25, "View Report");
|
|
55313
|
+
i0.ɵɵelementEnd();
|
|
55314
|
+
i0.ɵɵelementStart(26, "span", 18);
|
|
55315
|
+
i0.ɵɵtext(27, "Report");
|
|
55316
|
+
i0.ɵɵelementEnd()()();
|
|
55317
|
+
i0.ɵɵconditionalCreate(28, FunnelMetricsVisualizationComponent_For_4_Conditional_28_Template, 7, 2);
|
|
55273
55318
|
i0.ɵɵelementEnd();
|
|
55274
55319
|
} if (rf & 2) {
|
|
55275
|
-
const
|
|
55276
|
-
const
|
|
55277
|
-
i0.ɵɵproperty("ngClass",
|
|
55320
|
+
const stage_r2 = ctx.$implicit;
|
|
55321
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
55322
|
+
i0.ɵɵproperty("ngClass", ctx_r2.stageCardClasses());
|
|
55278
55323
|
i0.ɵɵadvance(4);
|
|
55279
|
-
i0.ɵɵproperty("ngClass",
|
|
55324
|
+
i0.ɵɵproperty("ngClass", ctx_r2.stageTitleClasses());
|
|
55280
55325
|
i0.ɵɵadvance();
|
|
55281
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55326
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getMetricTitle(stage_r2.stageMetric), " ");
|
|
55282
55327
|
i0.ɵɵadvance();
|
|
55283
|
-
i0.ɵɵconditional(
|
|
55328
|
+
i0.ɵɵconditional(stage_r2.stageMetric.description ? 6 : -1);
|
|
55284
55329
|
i0.ɵɵadvance(3);
|
|
55285
|
-
i0.ɵɵproperty("ngClass",
|
|
55330
|
+
i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
|
|
55286
55331
|
i0.ɵɵadvance();
|
|
55287
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55332
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.priorYear(), " Actual ");
|
|
55288
55333
|
i0.ɵɵadvance();
|
|
55289
|
-
i0.ɵɵproperty("ngClass",
|
|
55334
|
+
i0.ɵɵproperty("ngClass", ctx_r2.valueClasses());
|
|
55290
55335
|
i0.ɵɵadvance();
|
|
55291
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55336
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.stageMetric.currentValue, stage_r2.stageMetric.metric), " ");
|
|
55292
55337
|
i0.ɵɵadvance(2);
|
|
55293
|
-
i0.ɵɵproperty("ngClass",
|
|
55338
|
+
i0.ɵɵproperty("ngClass", ctx_r2.labelClasses());
|
|
55294
55339
|
i0.ɵɵadvance();
|
|
55295
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
55340
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.currentYear(), " Target ");
|
|
55296
55341
|
i0.ɵɵadvance();
|
|
55297
|
-
i0.ɵɵproperty("ngClass",
|
|
55342
|
+
i0.ɵɵproperty("ngClass", ctx_r2.targetValueClasses());
|
|
55343
|
+
i0.ɵɵadvance();
|
|
55344
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.formatMetricValue(stage_r2.stageMetric.targetValue, stage_r2.stageMetric.metric, false), " ");
|
|
55298
55345
|
i0.ɵɵadvance();
|
|
55299
|
-
i0.ɵɵ
|
|
55346
|
+
i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("percentageChange", stage_r2.stageMetric.percentageIncrease)("metric", stage_r2.stageMetric.metric)("priorYear", ctx_r2.priorYear());
|
|
55300
55347
|
i0.ɵɵadvance();
|
|
55301
|
-
i0.ɵɵ
|
|
55348
|
+
i0.ɵɵconditional(stage_r2.pacingInfo ? 19 : -1);
|
|
55302
55349
|
i0.ɵɵadvance();
|
|
55303
|
-
i0.ɵɵ
|
|
55350
|
+
i0.ɵɵproperty("ngClass", ctx_r2.stageActionBarClasses());
|
|
55304
55351
|
i0.ɵɵadvance();
|
|
55305
|
-
i0.ɵɵ
|
|
55352
|
+
i0.ɵɵproperty("ngClass", ctx_r2.actionButtonClasses());
|
|
55353
|
+
i0.ɵɵadvance(7);
|
|
55354
|
+
i0.ɵɵconditional(stage_r2.relatedMetrics.length > 0 ? 28 : -1);
|
|
55306
55355
|
} }
|
|
55307
55356
|
class FunnelMetricsVisualizationComponent {
|
|
55308
55357
|
constructor() {
|
|
55309
55358
|
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
55310
55359
|
this.calculations = input([], ...(ngDevMode ? [{ debugName: "calculations" }] : []));
|
|
55311
55360
|
this.pacingMetrics = input(undefined, ...(ngDevMode ? [{ debugName: "pacingMetrics" }] : []));
|
|
55361
|
+
this.viewStageReport = output();
|
|
55362
|
+
this.viewRelatedMetricReport = output();
|
|
55312
55363
|
this.Math = Math;
|
|
55313
55364
|
this.currentYear = computed(() => new Date().getFullYear(), ...(ngDevMode ? [{ debugName: "currentYear" }] : []));
|
|
55314
55365
|
this.priorYear = computed(() => new Date().getFullYear() - 1, ...(ngDevMode ? [{ debugName: "priorYear" }] : []));
|
|
@@ -55450,12 +55501,38 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55450
55501
|
getMarkdownTooltipContent(markdown, title) {
|
|
55451
55502
|
return { title, markdown };
|
|
55452
55503
|
}
|
|
55504
|
+
stageActionBarClasses() {
|
|
55505
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
55506
|
+
? 'border-purple-500/20'
|
|
55507
|
+
: 'border-purple-200/50';
|
|
55508
|
+
}
|
|
55509
|
+
actionButtonClasses() {
|
|
55510
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
55511
|
+
? 'bg-purple-500/20 text-purple-300 hover:bg-purple-500/30 hover:text-purple-200 border border-purple-400/30 hover:border-purple-400/50'
|
|
55512
|
+
: 'bg-purple-50 text-purple-700 hover:bg-purple-100 hover:text-purple-800 border border-purple-200 hover:border-purple-300';
|
|
55513
|
+
}
|
|
55514
|
+
relatedActionBarClasses() {
|
|
55515
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
55516
|
+
? 'border-slate-700/50'
|
|
55517
|
+
: 'border-slate-200';
|
|
55518
|
+
}
|
|
55519
|
+
relatedActionButtonClasses() {
|
|
55520
|
+
return this.viewMode() === ViewModeEnum.DARK
|
|
55521
|
+
? 'bg-slate-700/50 text-slate-300 hover:bg-slate-600/50 hover:text-slate-200 border border-slate-600/50 hover:border-slate-500/50'
|
|
55522
|
+
: 'bg-slate-50 text-slate-700 hover:bg-slate-100 hover:text-slate-800 border border-slate-200 hover:border-slate-300';
|
|
55523
|
+
}
|
|
55524
|
+
onViewStageReport(metric) {
|
|
55525
|
+
this.viewStageReport.emit(metric);
|
|
55526
|
+
}
|
|
55527
|
+
onViewRelatedMetricReport(metric) {
|
|
55528
|
+
this.viewRelatedMetricReport.emit(metric);
|
|
55529
|
+
}
|
|
55453
55530
|
static { this.ɵfac = function FunnelMetricsVisualizationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FunnelMetricsVisualizationComponent)(); }; }
|
|
55454
|
-
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-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "sm:text-xl", "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, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear"], ["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"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4", 3, "ngClass"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-sm", "sm:text-base", "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, "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"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55531
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FunnelMetricsVisualizationComponent, selectors: [["symphiq-funnel-metrics-visualization"]], inputs: { viewMode: [1, "viewMode"], calculations: [1, "calculations"], pacingMetrics: [1, "pacingMetrics"] }, outputs: { viewStageReport: "viewStageReport", viewRelatedMetricReport: "viewRelatedMetricReport" }, 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-6"], [1, "flex-1"], [1, "flex", "items-center", "gap-2", "mb-1"], [1, "text-lg", "sm:text-xl", "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, "grid", "grid-cols-1", "sm:grid-cols-2", "lg:grid-cols-3", "gap-6", "mb-4"], [1, "text-xs", "font-medium", "uppercase", "tracking-wider", "mb-2", 3, "ngClass"], [1, "text-2xl", "font-bold", 3, "ngClass"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear"], [1, "mt-4", "pt-3", "border-t", "flex", "justify-end", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-4", "py-2.5", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", 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", "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"], [1, "hidden", "sm:inline"], [1, "sm:hidden"], ["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"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "showEmphasizedPercentage"], [1, "my-4", 3, "ngClass"], [1, "space-y-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", "mb-3", 3, "ngClass"], [1, "grid", "gap-3"], [1, "p-4", "rounded-lg", 3, "ngClass"], [1, "flex", "items-center", "gap-2", "mb-4"], [1, "text-sm", "sm:text-base", "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, "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"], [1, "text-lg", "font-bold", 3, "ngClass"], [1, "text-lg", "font-bold", "mb-2", 3, "ngClass"], [3, "viewMode", "percentageChange", "metric", "priorYear", "isCompact"], [1, "mt-3", "pt-3", "border-t", "flex", "justify-end", 3, "ngClass"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-3", "py-2", "rounded-lg", "font-medium", "text-sm", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], [3, "viewMode", "pacingPercentage", "status", "showAsFullText", "isCompact", "showEmphasizedPercentage"]], template: function FunnelMetricsVisualizationComponent_Template(rf, ctx) { if (rf & 1) {
|
|
55455
55532
|
i0.ɵɵelementStart(0, "div", 0);
|
|
55456
55533
|
i0.ɵɵelement(1, "symphiq-tooltip-container");
|
|
55457
55534
|
i0.ɵɵelementStart(2, "div", 1);
|
|
55458
|
-
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template,
|
|
55535
|
+
i0.ɵɵrepeaterCreate(3, FunnelMetricsVisualizationComponent_For_4_Template, 29, 20, "div", 2, _forTrack0$i);
|
|
55459
55536
|
i0.ɵɵelementEnd()();
|
|
55460
55537
|
} if (rf & 2) {
|
|
55461
55538
|
i0.ɵɵadvance(3);
|
|
@@ -55469,161 +55546,189 @@ class FunnelMetricsVisualizationComponent {
|
|
|
55469
55546
|
standalone: true,
|
|
55470
55547
|
imports: [CommonModule, PacingStatusBadgeComponent, TargetChangeBadgeComponent, TooltipDirective, TooltipContainerComponent],
|
|
55471
55548
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55472
|
-
template: `
|
|
55473
|
-
<div class="space-y-6">
|
|
55474
|
-
<symphiq-tooltip-container />
|
|
55475
|
-
<div class="space-y-8">
|
|
55476
|
-
@for (stage of funnelStages(); track stage.stageMetric.metric) {
|
|
55477
|
-
<div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
|
|
55478
|
-
<div class="flex items-start justify-between mb-6">
|
|
55479
|
-
<div class="flex-1">
|
|
55480
|
-
<div class="flex items-center gap-2 mb-1">
|
|
55481
|
-
<h3 [ngClass]="stageTitleClasses()" class="text-lg sm:text-xl font-bold leading-tight m-0">
|
|
55482
|
-
{{ getMetricTitle(stage.stageMetric) }}
|
|
55483
|
-
</h3>
|
|
55484
|
-
@if (stage.stageMetric.description) {
|
|
55485
|
-
<button
|
|
55486
|
-
type="button"
|
|
55487
|
-
[ngClass]="infoIconClasses()"
|
|
55488
|
-
class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55489
|
-
[libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
|
|
55490
|
-
tooltipType="markdown"
|
|
55491
|
-
tooltipPosition="right">
|
|
55492
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55493
|
-
<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" />
|
|
55494
|
-
</svg>
|
|
55495
|
-
</button>
|
|
55496
|
-
}
|
|
55497
|
-
</div>
|
|
55498
|
-
</div>
|
|
55499
|
-
</div>
|
|
55500
|
-
|
|
55501
|
-
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-4">
|
|
55502
|
-
<div>
|
|
55503
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55504
|
-
{{ priorYear() }} Actual
|
|
55505
|
-
</p>
|
|
55506
|
-
<p [ngClass]="valueClasses()" class="text-2xl font-bold">
|
|
55507
|
-
{{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
|
|
55508
|
-
</p>
|
|
55509
|
-
</div>
|
|
55510
|
-
<div>
|
|
55511
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55512
|
-
{{ currentYear() }} Target
|
|
55513
|
-
</p>
|
|
55514
|
-
<p [ngClass]="targetValueClasses()" class="text-2xl font-bold mb-3">
|
|
55515
|
-
{{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric, false) }}
|
|
55516
|
-
</p>
|
|
55517
|
-
<symphiq-target-change-badge
|
|
55518
|
-
[viewMode]="viewMode()"
|
|
55519
|
-
[percentageChange]="stage.stageMetric.percentageIncrease"
|
|
55520
|
-
[metric]="stage.stageMetric.metric"
|
|
55521
|
-
[priorYear]="priorYear()"
|
|
55522
|
-
/>
|
|
55523
|
-
</div>
|
|
55524
|
-
@if (stage.pacingInfo) {
|
|
55525
|
-
<div>
|
|
55526
|
-
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55527
|
-
Pace for {{ currentYear() }}
|
|
55528
|
-
</p>
|
|
55529
|
-
<p [ngClass]="projectedValueClasses()" class="text-2xl font-bold mb-3">
|
|
55530
|
-
{{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
|
|
55531
|
-
</p>
|
|
55532
|
-
<symphiq-pacing-status-badge
|
|
55533
|
-
[viewMode]="viewMode()"
|
|
55534
|
-
[pacingPercentage]="stage.pacingInfo.pacingPercentage"
|
|
55535
|
-
[status]="stage.pacingInfo.status"
|
|
55536
|
-
[showAsFullText]="true"
|
|
55537
|
-
[showEmphasizedPercentage]="true"
|
|
55538
|
-
/>
|
|
55539
|
-
</div>
|
|
55540
|
-
}
|
|
55541
|
-
</div>
|
|
55542
|
-
|
|
55543
|
-
|
|
55544
|
-
<
|
|
55545
|
-
|
|
55546
|
-
|
|
55547
|
-
|
|
55548
|
-
|
|
55549
|
-
|
|
55550
|
-
|
|
55551
|
-
|
|
55552
|
-
|
|
55553
|
-
|
|
55554
|
-
|
|
55555
|
-
|
|
55556
|
-
|
|
55557
|
-
|
|
55558
|
-
|
|
55559
|
-
|
|
55560
|
-
|
|
55561
|
-
|
|
55562
|
-
|
|
55563
|
-
|
|
55564
|
-
|
|
55565
|
-
|
|
55566
|
-
|
|
55567
|
-
|
|
55568
|
-
|
|
55569
|
-
|
|
55570
|
-
|
|
55571
|
-
|
|
55572
|
-
|
|
55573
|
-
|
|
55574
|
-
|
|
55575
|
-
|
|
55576
|
-
|
|
55577
|
-
|
|
55578
|
-
|
|
55579
|
-
|
|
55580
|
-
|
|
55581
|
-
|
|
55582
|
-
|
|
55583
|
-
|
|
55584
|
-
|
|
55585
|
-
|
|
55586
|
-
|
|
55587
|
-
<
|
|
55588
|
-
|
|
55589
|
-
|
|
55590
|
-
|
|
55591
|
-
|
|
55592
|
-
|
|
55593
|
-
|
|
55594
|
-
|
|
55595
|
-
|
|
55596
|
-
|
|
55597
|
-
|
|
55598
|
-
|
|
55599
|
-
|
|
55600
|
-
|
|
55601
|
-
|
|
55602
|
-
|
|
55603
|
-
|
|
55604
|
-
|
|
55605
|
-
|
|
55606
|
-
|
|
55607
|
-
|
|
55608
|
-
|
|
55609
|
-
|
|
55610
|
-
|
|
55611
|
-
|
|
55612
|
-
|
|
55613
|
-
|
|
55614
|
-
|
|
55615
|
-
|
|
55616
|
-
|
|
55617
|
-
|
|
55618
|
-
|
|
55619
|
-
|
|
55620
|
-
|
|
55621
|
-
|
|
55622
|
-
|
|
55549
|
+
template: `
|
|
55550
|
+
<div class="space-y-6">
|
|
55551
|
+
<symphiq-tooltip-container />
|
|
55552
|
+
<div class="space-y-8">
|
|
55553
|
+
@for (stage of funnelStages(); track stage.stageMetric.metric) {
|
|
55554
|
+
<div [ngClass]="stageCardClasses()" class="rounded-xl p-6 border-2 transition-all duration-200">
|
|
55555
|
+
<div class="flex items-start justify-between mb-6">
|
|
55556
|
+
<div class="flex-1">
|
|
55557
|
+
<div class="flex items-center gap-2 mb-1">
|
|
55558
|
+
<h3 [ngClass]="stageTitleClasses()" class="text-lg sm:text-xl font-bold leading-tight m-0">
|
|
55559
|
+
{{ getMetricTitle(stage.stageMetric) }}
|
|
55560
|
+
</h3>
|
|
55561
|
+
@if (stage.stageMetric.description) {
|
|
55562
|
+
<button
|
|
55563
|
+
type="button"
|
|
55564
|
+
[ngClass]="infoIconClasses()"
|
|
55565
|
+
class="flex-shrink-0 w-6 h-6 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55566
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(stage.stageMetric.description, getMetricTitle(stage.stageMetric))"
|
|
55567
|
+
tooltipType="markdown"
|
|
55568
|
+
tooltipPosition="right">
|
|
55569
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55570
|
+
<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" />
|
|
55571
|
+
</svg>
|
|
55572
|
+
</button>
|
|
55573
|
+
}
|
|
55574
|
+
</div>
|
|
55575
|
+
</div>
|
|
55576
|
+
</div>
|
|
55577
|
+
|
|
55578
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-4">
|
|
55579
|
+
<div>
|
|
55580
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55581
|
+
{{ priorYear() }} Actual
|
|
55582
|
+
</p>
|
|
55583
|
+
<p [ngClass]="valueClasses()" class="text-2xl font-bold">
|
|
55584
|
+
{{ formatMetricValue(stage.stageMetric.currentValue, stage.stageMetric.metric) }}
|
|
55585
|
+
</p>
|
|
55586
|
+
</div>
|
|
55587
|
+
<div>
|
|
55588
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55589
|
+
{{ currentYear() }} Target
|
|
55590
|
+
</p>
|
|
55591
|
+
<p [ngClass]="targetValueClasses()" class="text-2xl font-bold mb-3">
|
|
55592
|
+
{{ formatMetricValue(stage.stageMetric.targetValue, stage.stageMetric.metric, false) }}
|
|
55593
|
+
</p>
|
|
55594
|
+
<symphiq-target-change-badge
|
|
55595
|
+
[viewMode]="viewMode()"
|
|
55596
|
+
[percentageChange]="stage.stageMetric.percentageIncrease"
|
|
55597
|
+
[metric]="stage.stageMetric.metric"
|
|
55598
|
+
[priorYear]="priorYear()"
|
|
55599
|
+
/>
|
|
55600
|
+
</div>
|
|
55601
|
+
@if (stage.pacingInfo) {
|
|
55602
|
+
<div>
|
|
55603
|
+
<p [ngClass]="labelClasses()" class="text-xs font-medium uppercase tracking-wider mb-2">
|
|
55604
|
+
Pace for {{ currentYear() }}
|
|
55605
|
+
</p>
|
|
55606
|
+
<p [ngClass]="projectedValueClasses()" class="text-2xl font-bold mb-3">
|
|
55607
|
+
{{ formatMetricValue(stage.pacingInfo.projectedValue, stage.stageMetric.metric, false) }}
|
|
55608
|
+
</p>
|
|
55609
|
+
<symphiq-pacing-status-badge
|
|
55610
|
+
[viewMode]="viewMode()"
|
|
55611
|
+
[pacingPercentage]="stage.pacingInfo.pacingPercentage"
|
|
55612
|
+
[status]="stage.pacingInfo.status"
|
|
55613
|
+
[showAsFullText]="true"
|
|
55614
|
+
[showEmphasizedPercentage]="true"
|
|
55615
|
+
/>
|
|
55616
|
+
</div>
|
|
55617
|
+
}
|
|
55618
|
+
</div>
|
|
55619
|
+
|
|
55620
|
+
<div [ngClass]="stageActionBarClasses()" class="mt-4 pt-3 border-t flex justify-end">
|
|
55621
|
+
<button
|
|
55622
|
+
type="button"
|
|
55623
|
+
(click)="onViewStageReport(stage.stageMetric.metric)"
|
|
55624
|
+
[ngClass]="actionButtonClasses()"
|
|
55625
|
+
class="inline-flex items-center gap-2 px-4 py-2.5 rounded-lg font-medium text-sm transition-all duration-200">
|
|
55626
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55627
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
55628
|
+
</svg>
|
|
55629
|
+
<span class="hidden sm:inline">View Report</span>
|
|
55630
|
+
<span class="sm:hidden">Report</span>
|
|
55631
|
+
</button>
|
|
55632
|
+
</div>
|
|
55633
|
+
|
|
55634
|
+
@if (stage.relatedMetrics.length > 0) {
|
|
55635
|
+
<div [ngClass]="dividerClasses()" class="my-4"></div>
|
|
55636
|
+
|
|
55637
|
+
<div class="space-y-3">
|
|
55638
|
+
<p [ngClass]="relatedTitleClasses()" class="text-xs font-semibold uppercase tracking-wider mb-3">
|
|
55639
|
+
Related Metrics
|
|
55640
|
+
</p>
|
|
55641
|
+
<div class="grid gap-3">
|
|
55642
|
+
@for (metric of stage.relatedMetrics; track metric.calc.metric) {
|
|
55643
|
+
<div [ngClass]="relatedMetricCardClasses()" class="p-4 rounded-lg">
|
|
55644
|
+
<div class="flex items-center gap-2 mb-4">
|
|
55645
|
+
<p [ngClass]="relatedMetricNameClasses()" class="text-sm sm:text-base font-semibold leading-tight">
|
|
55646
|
+
{{ getMetricTitle(metric.calc) }}
|
|
55647
|
+
</p>
|
|
55648
|
+
@if (metric.calc.description) {
|
|
55649
|
+
<button
|
|
55650
|
+
type="button"
|
|
55651
|
+
[ngClass]="infoIconClasses()"
|
|
55652
|
+
class="flex-shrink-0 w-5 h-5 rounded-full inline-flex items-center justify-center transition-colors"
|
|
55653
|
+
[libSymphiqTooltip]="getMarkdownTooltipContent(metric.calc.description, getMetricTitle(metric.calc))"
|
|
55654
|
+
tooltipType="markdown"
|
|
55655
|
+
tooltipPosition="right">
|
|
55656
|
+
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55657
|
+
<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" />
|
|
55658
|
+
</svg>
|
|
55659
|
+
</button>
|
|
55660
|
+
}
|
|
55661
|
+
</div>
|
|
55662
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
55663
|
+
<div>
|
|
55664
|
+
<p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
55665
|
+
{{ priorYear() }} Actual
|
|
55666
|
+
</p>
|
|
55667
|
+
<p [ngClass]="relatedValueClasses()" class="text-lg font-bold">
|
|
55668
|
+
{{ formatMetricValue(metric.calc.currentValue, metric.calc.metric) }}
|
|
55669
|
+
</p>
|
|
55670
|
+
</div>
|
|
55671
|
+
<div>
|
|
55672
|
+
<p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
55673
|
+
{{ currentYear() }} Target
|
|
55674
|
+
</p>
|
|
55675
|
+
<p [ngClass]="relatedTargetValueClasses()" class="text-lg font-bold mb-2">
|
|
55676
|
+
{{ formatMetricValue(metric.calc.targetValue, metric.calc.metric, false) }}
|
|
55677
|
+
</p>
|
|
55678
|
+
<symphiq-target-change-badge
|
|
55679
|
+
[viewMode]="viewMode()"
|
|
55680
|
+
[percentageChange]="metric.calc.percentageIncrease"
|
|
55681
|
+
[metric]="metric.calc.metric"
|
|
55682
|
+
[priorYear]="priorYear()"
|
|
55683
|
+
[isCompact]="true"
|
|
55684
|
+
/>
|
|
55685
|
+
</div>
|
|
55686
|
+
@if (metric.pacingInfo) {
|
|
55687
|
+
<div>
|
|
55688
|
+
<p [ngClass]="relatedLabelClasses()" class="text-xs font-medium uppercase tracking-wider mb-1.5">
|
|
55689
|
+
Pace for {{ currentYear() }}
|
|
55690
|
+
</p>
|
|
55691
|
+
<p [ngClass]="relatedProjectedValueClasses()" class="text-lg font-bold mb-2">
|
|
55692
|
+
{{ formatMetricValue(metric.pacingInfo.projectedValue, metric.calc.metric, false) }}
|
|
55693
|
+
</p>
|
|
55694
|
+
<symphiq-pacing-status-badge
|
|
55695
|
+
[viewMode]="viewMode()"
|
|
55696
|
+
[pacingPercentage]="metric.pacingInfo.pacingPercentage"
|
|
55697
|
+
[status]="metric.pacingInfo.status"
|
|
55698
|
+
[showAsFullText]="true"
|
|
55699
|
+
[isCompact]="true"
|
|
55700
|
+
[showEmphasizedPercentage]="true"
|
|
55701
|
+
/>
|
|
55702
|
+
</div>
|
|
55703
|
+
}
|
|
55704
|
+
</div>
|
|
55705
|
+
|
|
55706
|
+
<div [ngClass]="relatedActionBarClasses()" class="mt-3 pt-3 border-t flex justify-end">
|
|
55707
|
+
<button
|
|
55708
|
+
type="button"
|
|
55709
|
+
(click)="onViewRelatedMetricReport(metric.calc.metric)"
|
|
55710
|
+
[ngClass]="relatedActionButtonClasses()"
|
|
55711
|
+
class="inline-flex items-center gap-2 px-3 py-2 rounded-lg font-medium text-sm transition-all duration-200">
|
|
55712
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
55713
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
|
|
55714
|
+
</svg>
|
|
55715
|
+
<span class="hidden sm:inline">View Report</span>
|
|
55716
|
+
<span class="sm:hidden">Report</span>
|
|
55717
|
+
</button>
|
|
55718
|
+
</div>
|
|
55719
|
+
</div>
|
|
55720
|
+
}
|
|
55721
|
+
</div>
|
|
55722
|
+
</div>
|
|
55723
|
+
}
|
|
55724
|
+
</div>
|
|
55725
|
+
}
|
|
55726
|
+
</div>
|
|
55727
|
+
</div>
|
|
55623
55728
|
`
|
|
55624
55729
|
}]
|
|
55625
|
-
}], 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 }] }] }); })();
|
|
55626
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber:
|
|
55730
|
+
}], 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 }] }], viewStageReport: [{ type: i0.Output, args: ["viewStageReport"] }], viewRelatedMetricReport: [{ type: i0.Output, args: ["viewRelatedMetricReport"] }] }); })();
|
|
55731
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FunnelMetricsVisualizationComponent, { className: "FunnelMetricsVisualizationComponent", filePath: "lib/components/revenue-calculator-dashboard/funnel-metrics-visualization.component.ts", lineNumber: 198 }); })();
|
|
55627
55732
|
|
|
55628
55733
|
function StickySubmitBarComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
55629
55734
|
i0.ɵɵelementStart(0, "div", 4);
|