@eric-emg/symphiq-components 1.3.49 → 1.3.51
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.
|
@@ -44215,6 +44215,21 @@ class ProfileAnalysisModalComponent {
|
|
|
44215
44215
|
}, 0);
|
|
44216
44216
|
return;
|
|
44217
44217
|
}
|
|
44218
|
+
// Close ProfileAnalysisModalComponent when navigating to unified dashboard types
|
|
44219
|
+
// These should be handled by UnifiedDashboardModalComponent
|
|
44220
|
+
const unifiedDashboardOwnedTypes = ['unified-goal-detail', 'unified-goal-objectives', 'unified-goal-related-metrics'];
|
|
44221
|
+
if (unifiedDashboardOwnedTypes.includes(state.type || '')) {
|
|
44222
|
+
console.log('[ProfileAnalysisModal] Closing - unified dashboard type detected:', state.type);
|
|
44223
|
+
this.isOpen.set(false);
|
|
44224
|
+
setTimeout(() => {
|
|
44225
|
+
this.modalData.set(null);
|
|
44226
|
+
this.modalType.set(null);
|
|
44227
|
+
this.modalTitle.set('');
|
|
44228
|
+
this.navigationStack.set([]);
|
|
44229
|
+
this.currentCharts.set([]);
|
|
44230
|
+
}, 0);
|
|
44231
|
+
return;
|
|
44232
|
+
}
|
|
44218
44233
|
// Check if navigation originates from unified dashboard flow
|
|
44219
44234
|
// If so, let UnifiedDashboardModalComponent handle objective-strategies and strategy-recommendations
|
|
44220
44235
|
const unifiedDashboardTypes = ['objective-strategies', 'strategy-recommendations'];
|
|
@@ -44222,6 +44237,7 @@ class ProfileAnalysisModalComponent {
|
|
|
44222
44237
|
const isFromUnifiedFlow = state.previousState?.type?.startsWith('unified-goal-') ||
|
|
44223
44238
|
state.navigationStack?.some(s => s.type?.startsWith('unified-goal-'));
|
|
44224
44239
|
if (isFromUnifiedFlow) {
|
|
44240
|
+
console.log('[ProfileAnalysisModal] Closing - unified flow detected for:', state.type);
|
|
44225
44241
|
this.isOpen.set(false);
|
|
44226
44242
|
setTimeout(() => {
|
|
44227
44243
|
this.modalData.set(null);
|
|
@@ -44486,6 +44502,14 @@ class ProfileAnalysisModalComponent {
|
|
|
44486
44502
|
}
|
|
44487
44503
|
else if (state.type === 'metric' && state.data) {
|
|
44488
44504
|
const metric = state.data;
|
|
44505
|
+
console.log('[ProfileAnalysisModal] Handling metric state:', {
|
|
44506
|
+
metricName: metric.metric,
|
|
44507
|
+
chartsFromState: state.charts?.length || 0,
|
|
44508
|
+
chartIds: state.charts?.map(c => c.performanceItemId),
|
|
44509
|
+
allChartsInput: this.allCharts()?.length || 0,
|
|
44510
|
+
navigationStackLength: state.navigationStack?.length || 0,
|
|
44511
|
+
navigationStackTypes: state.navigationStack?.map(s => s.type)
|
|
44512
|
+
});
|
|
44489
44513
|
this.modalData.set(metric);
|
|
44490
44514
|
const formattedName = metric.metric ? this.metricFormatter.formatMetricName(metric.metric) : 'Metric Details';
|
|
44491
44515
|
this.modalTitle.set(formattedName);
|
|
@@ -101768,58 +101792,76 @@ const _forTrack0$b = ($index, $item) => $item.id;
|
|
|
101768
101792
|
const _forTrack1$2 = ($index, $item) => $item.title;
|
|
101769
101793
|
function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
101770
101794
|
i0.ɵɵelementStart(0, "div", 19);
|
|
101771
|
-
i0.ɵɵelement(1, "span",
|
|
101772
|
-
i0.ɵɵelementStart(2, "span",
|
|
101795
|
+
i0.ɵɵelement(1, "span", 20);
|
|
101796
|
+
i0.ɵɵelementStart(2, "span", 21);
|
|
101773
101797
|
i0.ɵɵtext(3);
|
|
101774
101798
|
i0.ɵɵelementEnd()();
|
|
101775
101799
|
} if (rf & 2) {
|
|
101776
|
-
const
|
|
101777
|
-
const
|
|
101778
|
-
i0.ɵɵproperty("ngClass",
|
|
101800
|
+
const milestone_r1 = ctx.$implicit;
|
|
101801
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
101802
|
+
i0.ɵɵproperty("ngClass", ctx_r1.objectiveItemClasses());
|
|
101779
101803
|
i0.ɵɵadvance();
|
|
101780
|
-
i0.ɵɵproperty("ngClass",
|
|
101804
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getPriorityDotClasses(milestone_r1.priority));
|
|
101781
101805
|
i0.ɵɵadvance(2);
|
|
101782
|
-
i0.ɵɵtextInterpolate(
|
|
101806
|
+
i0.ɵɵtextInterpolate(milestone_r1.title);
|
|
101783
101807
|
} }
|
|
101784
|
-
function
|
|
101785
|
-
i0.ɵɵelementStart(0, "div",
|
|
101786
|
-
i0.ɵɵtext(
|
|
101808
|
+
function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
101809
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 17);
|
|
101810
|
+
i0.ɵɵtext(2);
|
|
101787
101811
|
i0.ɵɵelementEnd();
|
|
101812
|
+
i0.ɵɵelementStart(3, "div", 18);
|
|
101813
|
+
i0.ɵɵrepeaterCreate(4, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_For_5_Template, 4, 3, "div", 19, _forTrack1$2);
|
|
101814
|
+
i0.ɵɵelementEnd()();
|
|
101788
101815
|
} if (rf & 2) {
|
|
101789
|
-
const
|
|
101790
|
-
const
|
|
101791
|
-
i0.ɵɵproperty("ngClass", ctx_r2.moreObjectivesClasses());
|
|
101816
|
+
const phase_r3 = i0.ɵɵnextContext().$implicit;
|
|
101817
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101792
101818
|
i0.ɵɵadvance();
|
|
101793
|
-
i0.ɵɵ
|
|
101819
|
+
i0.ɵɵproperty("ngClass", ctx_r1.objectivesLabelClasses());
|
|
101820
|
+
i0.ɵɵadvance();
|
|
101821
|
+
i0.ɵɵtextInterpolate1(" Key Milestones (", phase_r3.milestones.length, ") ");
|
|
101822
|
+
i0.ɵɵadvance(2);
|
|
101823
|
+
i0.ɵɵrepeater(phase_r3.milestones);
|
|
101794
101824
|
} }
|
|
101795
|
-
function
|
|
101825
|
+
function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
101826
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
101827
|
+
i0.ɵɵelementStart(0, "div", 23);
|
|
101828
|
+
i0.ɵɵlistener("click", function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template_div_click_0_listener() { const goal_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onGoalChipClick(goal_r5)); });
|
|
101829
|
+
i0.ɵɵelementStart(1, "span", 24);
|
|
101830
|
+
i0.ɵɵtext(2);
|
|
101831
|
+
i0.ɵɵelementEnd();
|
|
101832
|
+
i0.ɵɵnamespaceSVG();
|
|
101833
|
+
i0.ɵɵelementStart(3, "svg", 25);
|
|
101834
|
+
i0.ɵɵelement(4, "path", 26);
|
|
101835
|
+
i0.ɵɵelementEnd()();
|
|
101836
|
+
} if (rf & 2) {
|
|
101837
|
+
const goal_r5 = ctx.$implicit;
|
|
101838
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
101839
|
+
i0.ɵɵproperty("ngClass", ctx_r1.goalChipClasses());
|
|
101840
|
+
i0.ɵɵadvance(2);
|
|
101841
|
+
i0.ɵɵtextInterpolate(goal_r5.title);
|
|
101842
|
+
} }
|
|
101843
|
+
function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
101796
101844
|
i0.ɵɵelementStart(0, "div", 15)(1, "div", 17);
|
|
101797
101845
|
i0.ɵɵtext(2);
|
|
101798
101846
|
i0.ɵɵelementEnd();
|
|
101799
101847
|
i0.ɵɵelementStart(3, "div", 18);
|
|
101800
|
-
i0.ɵɵrepeaterCreate(4,
|
|
101801
|
-
i0.ɵɵconditionalCreate(6, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Conditional_6_Template, 2, 2, "div", 20);
|
|
101848
|
+
i0.ɵɵrepeaterCreate(4, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template, 5, 2, "div", 22, _forTrack0$b);
|
|
101802
101849
|
i0.ɵɵelementEnd()();
|
|
101803
101850
|
} if (rf & 2) {
|
|
101804
|
-
const
|
|
101805
|
-
const
|
|
101851
|
+
const phase_r3 = i0.ɵɵnextContext().$implicit;
|
|
101852
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101806
101853
|
i0.ɵɵadvance();
|
|
101807
|
-
i0.ɵɵproperty("ngClass",
|
|
101854
|
+
i0.ɵɵproperty("ngClass", ctx_r1.objectivesLabelClasses());
|
|
101808
101855
|
i0.ɵɵadvance();
|
|
101809
|
-
i0.ɵɵtextInterpolate1("
|
|
101810
|
-
i0.ɵɵadvance(2);
|
|
101811
|
-
i0.ɵɵrepeater(phase_r2.milestones.slice(0, 3));
|
|
101856
|
+
i0.ɵɵtextInterpolate1(" Related Goals (", ctx_r1.getGoalsForPhase(phase_r3).length, ") ");
|
|
101812
101857
|
i0.ɵɵadvance(2);
|
|
101813
|
-
i0.ɵɵ
|
|
101858
|
+
i0.ɵɵrepeater(ctx_r1.getGoalsForPhase(phase_r3));
|
|
101814
101859
|
} }
|
|
101815
101860
|
function UnifiedTimelineComponent_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
101816
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
101817
101861
|
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
|
|
101818
101862
|
i0.ɵɵelement(2, "div", 9);
|
|
101819
101863
|
i0.ɵɵelementEnd();
|
|
101820
|
-
i0.ɵɵelementStart(3, "div", 10);
|
|
101821
|
-
i0.ɵɵlistener("click", function UnifiedTimelineComponent_Conditional_0_For_8_Template_div_click_3_listener() { const phase_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onPhaseClick(phase_r2)); });
|
|
101822
|
-
i0.ɵɵelementStart(4, "div", 11)(5, "h4", 12);
|
|
101864
|
+
i0.ɵɵelementStart(3, "div", 10)(4, "div", 11)(5, "h4", 12);
|
|
101823
101865
|
i0.ɵɵtext(6);
|
|
101824
101866
|
i0.ɵɵelementEnd();
|
|
101825
101867
|
i0.ɵɵelementStart(7, "span", 13);
|
|
@@ -101828,38 +101870,43 @@ function UnifiedTimelineComponent_Conditional_0_For_8_Template(rf, ctx) { if (rf
|
|
|
101828
101870
|
i0.ɵɵelementStart(9, "p", 14);
|
|
101829
101871
|
i0.ɵɵtext(10);
|
|
101830
101872
|
i0.ɵɵelementEnd();
|
|
101831
|
-
i0.ɵɵconditionalCreate(11, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template,
|
|
101832
|
-
i0.ɵɵ
|
|
101833
|
-
i0.ɵɵ
|
|
101873
|
+
i0.ɵɵconditionalCreate(11, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template, 6, 2, "div", 15);
|
|
101874
|
+
i0.ɵɵconditionalCreate(12, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_Template, 6, 2, "div", 15);
|
|
101875
|
+
i0.ɵɵelementStart(13, "div", 16);
|
|
101876
|
+
i0.ɵɵtext(14);
|
|
101834
101877
|
i0.ɵɵelementEnd()()();
|
|
101835
101878
|
} if (rf & 2) {
|
|
101836
|
-
const
|
|
101837
|
-
const ɵ$
|
|
101838
|
-
const
|
|
101879
|
+
const phase_r3 = ctx.$implicit;
|
|
101880
|
+
const ɵ$index_16_r6 = ctx.$index;
|
|
101881
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
101839
101882
|
i0.ɵɵadvance();
|
|
101840
|
-
i0.ɵɵ
|
|
101883
|
+
i0.ɵɵclassProp("animate-pulse-glow-blue", ɵ$index_16_r6 % 4 === 0)("animate-pulse-glow-cyan", ɵ$index_16_r6 % 4 === 1)("animate-pulse-glow-teal", ɵ$index_16_r6 % 4 === 2)("animate-pulse-glow-emerald", ɵ$index_16_r6 % 4 === 3);
|
|
101884
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getPhaseNodeClasses(ɵ$index_16_r6));
|
|
101841
101885
|
i0.ɵɵadvance();
|
|
101842
|
-
i0.ɵɵproperty("ngClass",
|
|
101886
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getPhaseNodeInnerClasses(ɵ$index_16_r6));
|
|
101843
101887
|
i0.ɵɵadvance();
|
|
101844
|
-
i0.ɵɵ
|
|
101888
|
+
i0.ɵɵclassProp("card-glow-blue", ɵ$index_16_r6 % 4 === 0)("card-glow-cyan", ɵ$index_16_r6 % 4 === 1)("card-glow-teal", ɵ$index_16_r6 % 4 === 2)("card-glow-emerald", ɵ$index_16_r6 % 4 === 3);
|
|
101889
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getPhaseCardClasses(ɵ$index_16_r6));
|
|
101845
101890
|
i0.ɵɵadvance(2);
|
|
101846
|
-
i0.ɵɵproperty("ngClass",
|
|
101891
|
+
i0.ɵɵproperty("ngClass", ctx_r1.itemTitleClasses());
|
|
101847
101892
|
i0.ɵɵadvance();
|
|
101848
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
101893
|
+
i0.ɵɵtextInterpolate1(" ", phase_r3.title, " ");
|
|
101849
101894
|
i0.ɵɵadvance();
|
|
101850
|
-
i0.ɵɵproperty("ngClass",
|
|
101895
|
+
i0.ɵɵproperty("ngClass", ctx_r1.getFocusThemeBadgeClasses());
|
|
101851
101896
|
i0.ɵɵadvance();
|
|
101852
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
101897
|
+
i0.ɵɵtextInterpolate1(" ", phase_r3.focusTheme, " ");
|
|
101853
101898
|
i0.ɵɵadvance();
|
|
101854
|
-
i0.ɵɵproperty("ngClass",
|
|
101899
|
+
i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
|
|
101855
101900
|
i0.ɵɵadvance();
|
|
101856
|
-
i0.ɵɵtextInterpolate(
|
|
101901
|
+
i0.ɵɵtextInterpolate(phase_r3.description);
|
|
101857
101902
|
i0.ɵɵadvance();
|
|
101858
|
-
i0.ɵɵconditional(
|
|
101903
|
+
i0.ɵɵconditional(phase_r3.milestones && phase_r3.milestones.length > 0 ? 11 : -1);
|
|
101859
101904
|
i0.ɵɵadvance();
|
|
101860
|
-
i0.ɵɵ
|
|
101905
|
+
i0.ɵɵconditional(ctx_r1.getGoalsForPhase(phase_r3).length > 0 ? 12 : -1);
|
|
101861
101906
|
i0.ɵɵadvance();
|
|
101862
|
-
i0.ɵɵ
|
|
101907
|
+
i0.ɵɵproperty("ngClass", ctx_r1.phaseIndicatorClasses());
|
|
101908
|
+
i0.ɵɵadvance();
|
|
101909
|
+
i0.ɵɵtextInterpolate1(" Phase ", ɵ$index_16_r6 + 1, " ");
|
|
101863
101910
|
} }
|
|
101864
101911
|
function UnifiedTimelineComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
101865
101912
|
i0.ɵɵelementStart(0, "section", 0);
|
|
@@ -101867,26 +101914,27 @@ function UnifiedTimelineComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
|
|
|
101867
101914
|
i0.ɵɵelementStart(3, "div", 3)(4, "div", 4);
|
|
101868
101915
|
i0.ɵɵelement(5, "div", 5);
|
|
101869
101916
|
i0.ɵɵelementStart(6, "div", 6);
|
|
101870
|
-
i0.ɵɵrepeaterCreate(7, UnifiedTimelineComponent_Conditional_0_For_8_Template,
|
|
101917
|
+
i0.ɵɵrepeaterCreate(7, UnifiedTimelineComponent_Conditional_0_For_8_Template, 15, 29, "div", 7, _forTrack0$b);
|
|
101871
101918
|
i0.ɵɵelementEnd()()()();
|
|
101872
101919
|
} if (rf & 2) {
|
|
101873
|
-
const
|
|
101920
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
101874
101921
|
i0.ɵɵadvance();
|
|
101875
|
-
i0.ɵɵproperty("viewMode",
|
|
101922
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("sectionIcon", i0.ɵɵpureFunction1(6, _c0$b, ctx_r1.IconSourceEnum.HEROICONS));
|
|
101876
101923
|
i0.ɵɵadvance();
|
|
101877
|
-
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$b,
|
|
101924
|
+
i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$b, ctx_r1.IconSourceEnum.HEROICONS))("viewMode", ctx_r1.viewMode());
|
|
101878
101925
|
i0.ɵɵadvance();
|
|
101879
|
-
i0.ɵɵproperty("ngClass",
|
|
101926
|
+
i0.ɵɵproperty("ngClass", ctx_r1.containerClasses());
|
|
101880
101927
|
i0.ɵɵadvance(2);
|
|
101881
|
-
i0.ɵɵproperty("ngClass",
|
|
101928
|
+
i0.ɵɵproperty("ngClass", ctx_r1.lineClasses());
|
|
101882
101929
|
i0.ɵɵadvance(2);
|
|
101883
|
-
i0.ɵɵrepeater(
|
|
101930
|
+
i0.ɵɵrepeater(ctx_r1.phases());
|
|
101884
101931
|
} }
|
|
101885
101932
|
class UnifiedTimelineComponent {
|
|
101886
101933
|
constructor() {
|
|
101887
101934
|
this.timeline = input.required(...(ngDevMode ? [{ debugName: "timeline" }] : []));
|
|
101888
101935
|
this.viewMode = input(ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
101889
|
-
this.
|
|
101936
|
+
this.goals = input([], ...(ngDevMode ? [{ debugName: "goals" }] : []));
|
|
101937
|
+
this.goalClick = output();
|
|
101890
101938
|
this.IconSourceEnum = IconSourceEnum;
|
|
101891
101939
|
this.phases = computed(() => {
|
|
101892
101940
|
const data = this.timeline();
|
|
@@ -101923,6 +101971,9 @@ class UnifiedTimelineComponent {
|
|
|
101923
101971
|
light: ['bg-blue-50 border border-blue-200', 'bg-cyan-50 border border-cyan-200', 'bg-teal-50 border border-teal-200', 'bg-emerald-50 border border-emerald-200'],
|
|
101924
101972
|
dark: ['bg-blue-900/20 border border-blue-700/50', 'bg-cyan-900/20 border border-cyan-700/50', 'bg-teal-900/20 border border-teal-700/50', 'bg-emerald-900/20 border border-emerald-700/50']
|
|
101925
101973
|
};
|
|
101974
|
+
this.goalChipClasses = computed(() => this.isLightMode()
|
|
101975
|
+
? 'bg-violet-50 border border-violet-200 text-violet-700 hover:bg-violet-100'
|
|
101976
|
+
: 'bg-violet-900/30 border border-violet-700/50 text-violet-300', ...(ngDevMode ? [{ debugName: "goalChipClasses" }] : []));
|
|
101926
101977
|
}
|
|
101927
101978
|
getPhaseNodeClasses(idx) {
|
|
101928
101979
|
const classes = this.isLightMode() ? this.nodeClasses.light : this.nodeClasses.dark;
|
|
@@ -101957,24 +102008,25 @@ class UnifiedTimelineComponent {
|
|
|
101957
102008
|
return 'bg-blue-500';
|
|
101958
102009
|
}
|
|
101959
102010
|
}
|
|
101960
|
-
|
|
101961
|
-
|
|
102011
|
+
getGoalsForPhase(phase) {
|
|
102012
|
+
const goalIds = phase.goalIds || [];
|
|
102013
|
+
if (goalIds.length === 0)
|
|
102014
|
+
return [];
|
|
102015
|
+
return this.goals().filter(g => g.id && goalIds.includes(g.id));
|
|
102016
|
+
}
|
|
102017
|
+
onGoalChipClick(goal) {
|
|
102018
|
+
this.goalClick.emit(goal);
|
|
101962
102019
|
}
|
|
101963
102020
|
static { this.ɵfac = function UnifiedTimelineComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnifiedTimelineComponent)(); }; }
|
|
101964
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedTimelineComponent, selectors: [["symphiq-unified-timeline"]], inputs: { timeline: [1, "timeline"], viewMode: [1, "viewMode"] }, outputs: {
|
|
102021
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedTimelineComponent, selectors: [["symphiq-unified-timeline"]], inputs: { timeline: [1, "timeline"], viewMode: [1, "viewMode"], goals: [1, "goals"] }, outputs: { goalClick: "goalClick" }, decls: 1, vars: 1, consts: [["id", "section-timeline", 1, "space-y-6", "scroll-mt-24"], [3, "viewMode", "sectionIcon"], ["title", "Implementation Timeline", 3, "icon", "viewMode"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "relative"], [1, "absolute", "left-6", "top-0", "bottom-0", "w-0.5", 3, "ngClass"], [1, "space-y-8"], [1, "relative", "pl-16", "group"], [1, "absolute", "left-4", "w-5", "h-5", "rounded-full", "border-4", "flex", "items-center", "justify-center", "transition-all", "duration-300", "group-hover:scale-125", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], [1, "rounded-xl", "p-5", "transition-all", "duration-300", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "gap-4", "mb-3"], [1, "text-base", "font-semibold", 3, "ngClass"], [1, "px-2", "py-1", "text-xs", "font-semibold", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "text-sm", "mb-4", 3, "ngClass"], [1, "mt-4"], [1, "absolute", "-left-[52px]", "top-0", "text-xs", "font-bold", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", "mb-2", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-start", "gap-2", "text-sm", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "mt-1.5", "flex-shrink-0", 3, "ngClass"], [1, "line-clamp-1"], [1, "goal-chip", "flex", "items-center", "justify-between", "gap-2", "px-3", "py-2", "rounded-lg", "cursor-pointer", 3, "ngClass"], [1, "goal-chip", "flex", "items-center", "justify-between", "gap-2", "px-3", "py-2", "rounded-lg", "cursor-pointer", 3, "click", "ngClass"], [1, "text-sm", "font-medium", "line-clamp-1"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "flex-shrink-0"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"]], template: function UnifiedTimelineComponent_Template(rf, ctx) { if (rf & 1) {
|
|
101965
102022
|
i0.ɵɵconditionalCreate(0, UnifiedTimelineComponent_Conditional_0_Template, 9, 10, "section", 0);
|
|
101966
102023
|
} if (rf & 2) {
|
|
101967
102024
|
i0.ɵɵconditional(ctx.phases().length > 0 ? 0 : -1);
|
|
101968
|
-
} }, dependencies: [CommonModule, i1$1.NgClass, SectionDividerComponent, SectionHeaderComponent],
|
|
102025
|
+
} }, dependencies: [CommonModule, i1$1.NgClass, SectionDividerComponent, SectionHeaderComponent], styles: ["@keyframes _ngcontent-%COMP%_pulse-glow-blue{0%,to{box-shadow:0 0 5px #3b82f680,0 0 10px #3b82f64d}50%{box-shadow:0 0 15px #3b82f6cc,0 0 25px #3b82f680,0 0 35px #3b82f64d}}@keyframes _ngcontent-%COMP%_pulse-glow-cyan{0%,to{box-shadow:0 0 5px #06b6d480,0 0 10px #06b6d44d}50%{box-shadow:0 0 15px #06b6d4cc,0 0 25px #06b6d480,0 0 35px #06b6d44d}}@keyframes _ngcontent-%COMP%_pulse-glow-teal{0%,to{box-shadow:0 0 5px #14b8a680,0 0 10px #14b8a64d}50%{box-shadow:0 0 15px #14b8a6cc,0 0 25px #14b8a680,0 0 35px #14b8a64d}}@keyframes _ngcontent-%COMP%_pulse-glow-emerald{0%,to{box-shadow:0 0 5px #10b98180,0 0 10px #10b9814d}50%{box-shadow:0 0 15px #10b981cc,0 0 25px #10b98180,0 0 35px #10b9814d}}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-blue[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-blue 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-cyan[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-cyan 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-teal[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-teal 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-emerald[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-emerald 1.5s ease-in-out infinite}.card-glow-blue[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #3b82f666,0 0 40px #3b82f633,0 10px 30px #0000004d;border-color:#3b82f6cc!important}.card-glow-cyan[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #06b6d466,0 0 40px #06b6d433,0 10px 30px #0000004d;border-color:#06b6d4cc!important}.card-glow-teal[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #14b8a666,0 0 40px #14b8a633,0 10px 30px #0000004d;border-color:#14b8a6cc!important}.card-glow-emerald[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #10b98166,0 0 40px #10b98133,0 10px 30px #0000004d;border-color:#10b981cc!important}.goal-chip[_ngcontent-%COMP%]{transition:all .3s ease}.goal-chip[_ngcontent-%COMP%]:hover{transform:scale(1.03) translate(4px);box-shadow:0 0 15px #8b5cf680,0 0 30px #8b5cf64d;border-color:#8b5cf6cc!important}"], changeDetection: 0 }); }
|
|
101969
102026
|
}
|
|
101970
102027
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UnifiedTimelineComponent, [{
|
|
101971
102028
|
type: Component,
|
|
101972
|
-
args: [{
|
|
101973
|
-
selector: 'symphiq-unified-timeline',
|
|
101974
|
-
standalone: true,
|
|
101975
|
-
imports: [CommonModule, SectionDividerComponent, SectionHeaderComponent],
|
|
101976
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
101977
|
-
template: `
|
|
102029
|
+
args: [{ selector: 'symphiq-unified-timeline', standalone: true, imports: [CommonModule, SectionDividerComponent, SectionHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
101978
102030
|
@if (phases().length > 0) {
|
|
101979
102031
|
<section id="section-timeline" class="space-y-6 scroll-mt-24">
|
|
101980
102032
|
<symphiq-section-divider
|
|
@@ -101996,14 +102048,21 @@ class UnifiedTimelineComponent {
|
|
|
101996
102048
|
<div class="relative pl-16 group">
|
|
101997
102049
|
<div
|
|
101998
102050
|
[ngClass]="getPhaseNodeClasses(idx)"
|
|
101999
|
-
class="absolute left-4 w-5 h-5 rounded-full border-4 flex items-center justify-center transition-all group-hover:scale-125"
|
|
102051
|
+
class="absolute left-4 w-5 h-5 rounded-full border-4 flex items-center justify-center transition-all duration-300 group-hover:scale-125"
|
|
102052
|
+
[class.animate-pulse-glow-blue]="idx % 4 === 0"
|
|
102053
|
+
[class.animate-pulse-glow-cyan]="idx % 4 === 1"
|
|
102054
|
+
[class.animate-pulse-glow-teal]="idx % 4 === 2"
|
|
102055
|
+
[class.animate-pulse-glow-emerald]="idx % 4 === 3">
|
|
102000
102056
|
<div class="w-2 h-2 rounded-full" [ngClass]="getPhaseNodeInnerClasses(idx)"></div>
|
|
102001
102057
|
</div>
|
|
102002
102058
|
|
|
102003
102059
|
<div
|
|
102004
102060
|
[ngClass]="getPhaseCardClasses(idx)"
|
|
102005
|
-
class="rounded-xl p-5 transition-all
|
|
102006
|
-
|
|
102061
|
+
class="rounded-xl p-5 transition-all duration-300"
|
|
102062
|
+
[class.card-glow-blue]="idx % 4 === 0"
|
|
102063
|
+
[class.card-glow-cyan]="idx % 4 === 1"
|
|
102064
|
+
[class.card-glow-teal]="idx % 4 === 2"
|
|
102065
|
+
[class.card-glow-emerald]="idx % 4 === 3">
|
|
102007
102066
|
<div class="flex items-start justify-between gap-4 mb-3">
|
|
102008
102067
|
<h4 [ngClass]="itemTitleClasses()" class="text-base font-semibold">
|
|
102009
102068
|
{{ phase.title }}
|
|
@@ -102021,22 +102080,38 @@ class UnifiedTimelineComponent {
|
|
|
102021
102080
|
Key Milestones ({{ phase.milestones.length }})
|
|
102022
102081
|
</div>
|
|
102023
102082
|
<div class="space-y-2">
|
|
102024
|
-
@for (milestone of phase.milestones
|
|
102083
|
+
@for (milestone of phase.milestones; track milestone.title) {
|
|
102025
102084
|
<div [ngClass]="objectiveItemClasses()" class="flex items-start gap-2 text-sm">
|
|
102026
102085
|
<span [ngClass]="getPriorityDotClasses(milestone.priority)" class="w-2 h-2 rounded-full mt-1.5 flex-shrink-0"></span>
|
|
102027
102086
|
<span class="line-clamp-1">{{ milestone.title }}</span>
|
|
102028
102087
|
</div>
|
|
102029
102088
|
}
|
|
102030
|
-
|
|
102031
|
-
|
|
102032
|
-
|
|
102089
|
+
</div>
|
|
102090
|
+
</div>
|
|
102091
|
+
}
|
|
102092
|
+
|
|
102093
|
+
@if (getGoalsForPhase(phase).length > 0) {
|
|
102094
|
+
<div class="mt-4">
|
|
102095
|
+
<div [ngClass]="objectivesLabelClasses()" class="text-xs font-semibold uppercase mb-2">
|
|
102096
|
+
Related Goals ({{ getGoalsForPhase(phase).length }})
|
|
102097
|
+
</div>
|
|
102098
|
+
<div class="space-y-2">
|
|
102099
|
+
@for (goal of getGoalsForPhase(phase); track goal.id) {
|
|
102100
|
+
<div
|
|
102101
|
+
[ngClass]="goalChipClasses()"
|
|
102102
|
+
class="goal-chip flex items-center justify-between gap-2 px-3 py-2 rounded-lg cursor-pointer"
|
|
102103
|
+
(click)="onGoalChipClick(goal)">
|
|
102104
|
+
<span class="text-sm font-medium line-clamp-1">{{ goal.title }}</span>
|
|
102105
|
+
<svg class="w-4 h-4 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
102106
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
|
|
102107
|
+
</svg>
|
|
102033
102108
|
</div>
|
|
102034
102109
|
}
|
|
102035
102110
|
</div>
|
|
102036
102111
|
</div>
|
|
102037
102112
|
}
|
|
102038
102113
|
|
|
102039
|
-
<div [ngClass]="phaseIndicatorClasses()" class="absolute -left-[52px] top-
|
|
102114
|
+
<div [ngClass]="phaseIndicatorClasses()" class="absolute -left-[52px] top-0 text-xs font-bold">
|
|
102040
102115
|
Phase {{ idx + 1 }}
|
|
102041
102116
|
</div>
|
|
102042
102117
|
</div>
|
|
@@ -102047,10 +102122,9 @@ class UnifiedTimelineComponent {
|
|
|
102047
102122
|
</div>
|
|
102048
102123
|
</section>
|
|
102049
102124
|
}
|
|
102050
|
-
|
|
102051
|
-
|
|
102052
|
-
|
|
102053
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedTimelineComponent, { className: "UnifiedTimelineComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-timeline.component.ts", lineNumber: 109 }); })();
|
|
102125
|
+
`, styles: ["@keyframes pulse-glow-blue{0%,to{box-shadow:0 0 5px #3b82f680,0 0 10px #3b82f64d}50%{box-shadow:0 0 15px #3b82f6cc,0 0 25px #3b82f680,0 0 35px #3b82f64d}}@keyframes pulse-glow-cyan{0%,to{box-shadow:0 0 5px #06b6d480,0 0 10px #06b6d44d}50%{box-shadow:0 0 15px #06b6d4cc,0 0 25px #06b6d480,0 0 35px #06b6d44d}}@keyframes pulse-glow-teal{0%,to{box-shadow:0 0 5px #14b8a680,0 0 10px #14b8a64d}50%{box-shadow:0 0 15px #14b8a6cc,0 0 25px #14b8a680,0 0 35px #14b8a64d}}@keyframes pulse-glow-emerald{0%,to{box-shadow:0 0 5px #10b98180,0 0 10px #10b9814d}50%{box-shadow:0 0 15px #10b981cc,0 0 25px #10b98180,0 0 35px #10b9814d}}.group:hover .animate-pulse-glow-blue{animation:pulse-glow-blue 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-cyan{animation:pulse-glow-cyan 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-teal{animation:pulse-glow-teal 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-emerald{animation:pulse-glow-emerald 1.5s ease-in-out infinite}.card-glow-blue:hover{box-shadow:0 0 20px #3b82f666,0 0 40px #3b82f633,0 10px 30px #0000004d;border-color:#3b82f6cc!important}.card-glow-cyan:hover{box-shadow:0 0 20px #06b6d466,0 0 40px #06b6d433,0 10px 30px #0000004d;border-color:#06b6d4cc!important}.card-glow-teal:hover{box-shadow:0 0 20px #14b8a666,0 0 40px #14b8a633,0 10px 30px #0000004d;border-color:#14b8a6cc!important}.card-glow-emerald:hover{box-shadow:0 0 20px #10b98166,0 0 40px #10b98133,0 10px 30px #0000004d;border-color:#10b981cc!important}.goal-chip{transition:all .3s ease}.goal-chip:hover{transform:scale(1.03) translate(4px);box-shadow:0 0 15px #8b5cf680,0 0 30px #8b5cf64d;border-color:#8b5cf6cc!important}\n"] }]
|
|
102126
|
+
}], null, { timeline: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeline", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goals: [{ type: i0.Input, args: [{ isSignal: true, alias: "goals", required: false }] }], goalClick: [{ type: i0.Output, args: ["goalClick"] }] }); })();
|
|
102127
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedTimelineComponent, { className: "UnifiedTimelineComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-timeline.component.ts", lineNumber: 181 }); })();
|
|
102054
102128
|
|
|
102055
102129
|
const _c0$a = a0 => ({ name: "squares-2x2", source: a0 });
|
|
102056
102130
|
const _forTrack0$a = ($index, $item) => $item.id;
|
|
@@ -103113,7 +103187,7 @@ class SourceAnalysisTraceabilityComponent {
|
|
|
103113
103187
|
}
|
|
103114
103188
|
}
|
|
103115
103189
|
static { this.ɵfac = function SourceAnalysisTraceabilityComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SourceAnalysisTraceabilityComponent)(); }; }
|
|
103116
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SourceAnalysisTraceabilityComponent, selectors: [["symphiq-source-analysis-traceability"]], inputs: { sourceAnalyses: [1, "sourceAnalyses"], loadedSourceAnalysisIds: [1, "loadedSourceAnalysisIds"], loadingSourceAnalysisId: [1, "loadingSourceAnalysisId"], viewMode: [1, "viewMode"], goal: [1, "goal"] }, outputs: { sourceAnalysisClick: "sourceAnalysisClick" }, decls: 1, vars: 1, consts: [[1, "p-5", "rounded-xl", 3, "ngClass"], [1, "text-sm", "font-semibold", "
|
|
103190
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SourceAnalysisTraceabilityComponent, selectors: [["symphiq-source-analysis-traceability"]], inputs: { sourceAnalyses: [1, "sourceAnalyses"], loadedSourceAnalysisIds: [1, "loadedSourceAnalysisIds"], loadingSourceAnalysisId: [1, "loadingSourceAnalysisId"], viewMode: [1, "viewMode"], goal: [1, "goal"] }, outputs: { sourceAnalysisClick: "sourceAnalysisClick" }, decls: 1, vars: 1, consts: [[1, "p-5", "rounded-xl", "flex", "flex-col", "gap-4", 3, "ngClass"], [1, "text-sm", "font-semibold", "flex", "items-center", "gap-2", 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.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"], [3, "score", "explanation", "viewMode"], [1, "grid", "grid-cols-1", "sm:grid-cols-2", "gap-3"], ["type", "button", 1, "p-4", "rounded-lg", "text-left", "transition-all", "hover:scale-[1.02]", "relative", 3, "ngClass"], ["type", "button", 1, "p-4", "rounded-lg", "text-left", "transition-all", "hover:scale-[1.02]", "relative", 3, "click", "ngClass"], [1, "absolute", "inset-0", "bg-black/10", "rounded-lg", "flex", "items-center", "justify-center"], [1, "absolute", "top-2", "right-2"], [1, "flex", "items-start", "gap-3"], [1, "w-8", "h-8", "rounded-lg", "flex", "items-center", "justify-center", "flex-shrink-0", 3, "ngClass"], [1, "flex-1", "min-w-0"], [1, "text-xs", "font-medium", "uppercase", "mb-0.5", 3, "ngClass"], [1, "text-sm", "font-medium", "truncate", 3, "ngClass"], [1, "text-xs", "mt-1", 3, "ngClass"], [1, "w-5", "h-5", "border-2", "border-current", "border-t-transparent", "rounded-full", "animate-spin"], ["fill", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "text-green-500"], ["d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"], ["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"]], template: function SourceAnalysisTraceabilityComponent_Template(rf, ctx) { if (rf & 1) {
|
|
103117
103191
|
i0.ɵɵconditionalCreate(0, SourceAnalysisTraceabilityComponent_Conditional_0_Template, 9, 6, "div", 0);
|
|
103118
103192
|
} if (rf & 2) {
|
|
103119
103193
|
let tmp_0_0;
|
|
@@ -103129,8 +103203,8 @@ class SourceAnalysisTraceabilityComponent {
|
|
|
103129
103203
|
imports: [CommonModule, SynthesisConfidenceSectionComponent],
|
|
103130
103204
|
template: `
|
|
103131
103205
|
@if ((sourceAnalyses()?.length ?? 0) > 0) {
|
|
103132
|
-
<div [ngClass]="sectionCardClasses()" class="p-5 rounded-xl">
|
|
103133
|
-
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold
|
|
103206
|
+
<div [ngClass]="sectionCardClasses()" class="p-5 rounded-xl flex flex-col gap-4">
|
|
103207
|
+
<h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold flex items-center gap-2">
|
|
103134
103208
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
103135
103209
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/>
|
|
103136
103210
|
</svg>
|
|
@@ -103838,7 +103912,22 @@ class UnifiedDashboardModalComponent {
|
|
|
103838
103912
|
clearTimeout(this.cleanupTimeoutId);
|
|
103839
103913
|
this.cleanupTimeoutId = null;
|
|
103840
103914
|
}
|
|
103841
|
-
|
|
103915
|
+
const unifiedModalTypes = ['unified-goal-detail', 'unified-goal-objectives', 'unified-goal-related-metrics', 'objective-strategies', 'strategy-recommendations'];
|
|
103916
|
+
const isUnifiedType = unifiedModalTypes.includes(state.type || '');
|
|
103917
|
+
if (!isUnifiedType && state.type !== null) {
|
|
103918
|
+
// Close this modal when transitioning to a type we don't handle (e.g., metrics-list, metric)
|
|
103919
|
+
if (this.isOpen()) {
|
|
103920
|
+
console.log('[UnifiedDashboardModal] Closing - transitioning to non-unified type:', state.type);
|
|
103921
|
+
this.isOpen.set(false);
|
|
103922
|
+
this.cleanupTimeoutId = setTimeout(() => {
|
|
103923
|
+
this.modalType.set(null);
|
|
103924
|
+
this.modalData.set(null);
|
|
103925
|
+
this.modalTitle.set('');
|
|
103926
|
+
this.previousState.set(null);
|
|
103927
|
+
this.currentModalState.set(null);
|
|
103928
|
+
this.cleanupTimeoutId = null;
|
|
103929
|
+
}, 300);
|
|
103930
|
+
}
|
|
103842
103931
|
return;
|
|
103843
103932
|
}
|
|
103844
103933
|
this.previousState.set(state.previousState ?? null);
|
|
@@ -103906,6 +103995,14 @@ class UnifiedDashboardModalComponent {
|
|
|
103906
103995
|
return;
|
|
103907
103996
|
const contributingMetricNames = data.goal.contributingMetrics || [];
|
|
103908
103997
|
const contributingMetrics = data.allMetrics.filter(m => m.metric && contributingMetricNames.includes(m.metric));
|
|
103998
|
+
console.log('[UnifiedDashboardModal] onContributingMetricsClick:', {
|
|
103999
|
+
goalTitle: data.goal.title,
|
|
104000
|
+
contributingMetricNames,
|
|
104001
|
+
contributingMetricsCount: contributingMetrics.length,
|
|
104002
|
+
contributingMetricsPerformanceItemIds: contributingMetrics.map(m => m.performanceItemId),
|
|
104003
|
+
allChartsCount: data.allCharts?.length || 0,
|
|
104004
|
+
allChartsPerformanceItemIds: data.allCharts?.map(c => c.performanceItemId)
|
|
104005
|
+
});
|
|
103909
104006
|
this.modalService.navigateToUnifiedGoalRelatedMetrics(data.goal, contributingMetrics, data.allCharts, this.viewMode());
|
|
103910
104007
|
}
|
|
103911
104008
|
onShowObjectives() {
|
|
@@ -103918,6 +104015,14 @@ class UnifiedDashboardModalComponent {
|
|
|
103918
104015
|
const data = this.relatedMetricsData();
|
|
103919
104016
|
const allCharts = data?.allCharts || [];
|
|
103920
104017
|
const metricCharts = allCharts.filter(chart => chart.performanceItemId === metric.performanceItemId);
|
|
104018
|
+
console.log('[UnifiedDashboardModal] onRelatedMetricClick:', {
|
|
104019
|
+
metricName: metric.metric,
|
|
104020
|
+
metricPerformanceItemId: metric.performanceItemId,
|
|
104021
|
+
allChartsCount: allCharts.length,
|
|
104022
|
+
allChartsPerformanceItemIds: allCharts.map(c => c.performanceItemId),
|
|
104023
|
+
filteredChartsCount: metricCharts.length,
|
|
104024
|
+
currentModalState: this.currentModalState()?.type
|
|
104025
|
+
});
|
|
103921
104026
|
this.modalService.openMetricModal(metric, metricCharts, this.currentModalState() ?? undefined);
|
|
103922
104027
|
}
|
|
103923
104028
|
navigateToBreadcrumb(index) {
|
|
@@ -104230,7 +104335,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
|
|
|
104230
104335
|
i0.ɵɵelementEnd();
|
|
104231
104336
|
i0.ɵɵconditionalCreate(14, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Conditional_14_Template, 6, 8, "section", 31);
|
|
104232
104337
|
i0.ɵɵelementStart(15, "symphiq-unified-timeline", 32);
|
|
104233
|
-
i0.ɵɵlistener("
|
|
104338
|
+
i0.ɵɵlistener("goalClick", function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template_symphiq_unified_timeline_goalClick_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGoalClick($event)); });
|
|
104234
104339
|
i0.ɵɵelementEnd();
|
|
104235
104340
|
i0.ɵɵelementStart(16, "symphiq-unified-priority-matrix", 33);
|
|
104236
104341
|
i0.ɵɵlistener("goalClick", function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template_symphiq_unified_priority_matrix_goalClick_16_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGoalClick($event)); });
|
|
@@ -104257,7 +104362,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
|
|
|
104257
104362
|
i0.ɵɵadvance();
|
|
104258
104363
|
i0.ɵɵconditional(ctx_r1.unifiedGoals().length > 0 ? 14 : -1);
|
|
104259
104364
|
i0.ɵɵadvance();
|
|
104260
|
-
i0.ɵɵproperty("timeline", ctx_r1.unifiedTimeline())("viewMode", ctx_r1.viewMode());
|
|
104365
|
+
i0.ɵɵproperty("timeline", ctx_r1.unifiedTimeline())("viewMode", ctx_r1.viewMode())("goals", ctx_r1.unifiedGoals());
|
|
104261
104366
|
i0.ɵɵadvance();
|
|
104262
104367
|
i0.ɵɵproperty("matrix", ctx_r1.priorityMatrix())("viewMode", ctx_r1.viewMode());
|
|
104263
104368
|
i0.ɵɵadvance();
|
|
@@ -104303,7 +104408,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
|
|
|
104303
104408
|
function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
104304
104409
|
i0.ɵɵelementStart(0, "main", 18);
|
|
104305
104410
|
i0.ɵɵconditionalCreate(1, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_1_Template, 1, 2, "symphiq-loading-card", 19);
|
|
104306
|
-
i0.ɵɵconditionalCreate(2, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template, 18,
|
|
104411
|
+
i0.ɵɵconditionalCreate(2, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template, 18, 22);
|
|
104307
104412
|
i0.ɵɵconditionalCreate(3, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_3_Template, 1, 1);
|
|
104308
104413
|
i0.ɵɵelementEnd();
|
|
104309
104414
|
} if (rf & 2) {
|
|
@@ -104568,15 +104673,33 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
|
|
|
104568
104673
|
this.priorityMatrix = computed(() => {
|
|
104569
104674
|
const matrixData = this.analysisData()?.unifiedPriorityMatrix;
|
|
104570
104675
|
const goals = this.unifiedGoals();
|
|
104676
|
+
console.log('[PriorityMatrix] Raw matrixData:', matrixData);
|
|
104677
|
+
console.log('[PriorityMatrix] Goals available:', goals.map(g => ({ id: g.id, title: g.title })));
|
|
104571
104678
|
if (matrixData) {
|
|
104572
|
-
|
|
104573
|
-
|
|
104574
|
-
|
|
104575
|
-
|
|
104576
|
-
|
|
104577
|
-
|
|
104679
|
+
console.log('[PriorityMatrix] quickWins items:', matrixData.quickWins);
|
|
104680
|
+
console.log('[PriorityMatrix] majorProjects items:', matrixData.majorProjects);
|
|
104681
|
+
console.log('[PriorityMatrix] fillIns items:', matrixData.fillIns);
|
|
104682
|
+
console.log('[PriorityMatrix] thankless items:', matrixData.thankless);
|
|
104683
|
+
const findGoal = (id, quadrant) => {
|
|
104684
|
+
const found = goals.find(g => g.id === id);
|
|
104685
|
+
console.log(`[PriorityMatrix] ${quadrant} - Looking for goal id="${id}", found:`, found ? found.title : 'NOT FOUND');
|
|
104686
|
+
return found;
|
|
104687
|
+
};
|
|
104688
|
+
const result = {
|
|
104689
|
+
quickWins: (matrixData.quickWins || []).map(item => findGoal(item.relatedGoalId, 'quickWins')).filter((g) => !!g),
|
|
104690
|
+
majorProjects: (matrixData.majorProjects || []).map(item => findGoal(item.relatedGoalId, 'majorProjects')).filter((g) => !!g),
|
|
104691
|
+
fillIns: (matrixData.fillIns || []).map(item => findGoal(item.relatedGoalId, 'fillIns')).filter((g) => !!g),
|
|
104692
|
+
thankless: (matrixData.thankless || []).map(item => findGoal(item.relatedGoalId, 'thankless')).filter((g) => !!g)
|
|
104578
104693
|
};
|
|
104694
|
+
console.log('[PriorityMatrix] Final result:', {
|
|
104695
|
+
quickWins: result.quickWins.length,
|
|
104696
|
+
majorProjects: result.majorProjects.length,
|
|
104697
|
+
fillIns: result.fillIns.length,
|
|
104698
|
+
thankless: result.thankless.length
|
|
104699
|
+
});
|
|
104700
|
+
return result;
|
|
104579
104701
|
}
|
|
104702
|
+
console.log('[PriorityMatrix] No matrixData, using fallback based on priority');
|
|
104580
104703
|
return {
|
|
104581
104704
|
quickWins: goals.filter(g => g.priority === 'HIGH'),
|
|
104582
104705
|
majorProjects: goals.filter(g => g.priority === 'MEDIUM'),
|
|
@@ -104908,15 +105031,6 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
|
|
|
104908
105031
|
}
|
|
104909
105032
|
}
|
|
104910
105033
|
}
|
|
104911
|
-
onTimelinePhaseClick(phase) {
|
|
104912
|
-
const goalIds = phase.goalIds || [];
|
|
104913
|
-
if (goalIds.length > 0) {
|
|
104914
|
-
const goal = this.unifiedGoals().find(g => g.id && goalIds.includes(g.id));
|
|
104915
|
-
if (goal) {
|
|
104916
|
-
this.onGoalClick(goal);
|
|
104917
|
-
}
|
|
104918
|
-
}
|
|
104919
|
-
}
|
|
104920
105034
|
getTimelineNodeClasses(priority) {
|
|
104921
105035
|
const base = this.isLightMode() ? 'bg-white' : 'bg-slate-800';
|
|
104922
105036
|
switch (priority?.toUpperCase()) {
|
|
@@ -105099,7 +105213,7 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
|
|
|
105099
105213
|
static { this.ɵfac = function SymphiqProfileAnalysisUnifiedDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqProfileAnalysisUnifiedDashboardComponent)(); }; }
|
|
105100
105214
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqProfileAnalysisUnifiedDashboardComponent, selectors: [["symphiq-profile-analysis-unified-dashboard"]], hostBindings: function SymphiqProfileAnalysisUnifiedDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
105101
105215
|
i0.ɵɵlistener("scroll", function SymphiqProfileAnalysisUnifiedDashboardComponent_scroll_HostBindingHandler() { return ctx.onScroll(); }, i0.ɵɵresolveWindow);
|
|
105102
|
-
} }, inputs: { viewMode: [1, "viewMode"], embedded: [1, "embedded"], isLoading: [1, "isLoading"], profile: [1, "profile"], funnelAnalysis: [1, "funnelAnalysis"], unifiedProfileAnalysis: [1, "unifiedProfileAnalysis"], sourceProfileAnalyses: [1, "sourceProfileAnalyses"], isLoadingSourceAnalysis: [1, "isLoadingSourceAnalysis"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"], isMarkingAsReviewed: [1, "isMarkingAsReviewed"], requestedByUser: [1, "requestedByUser"] }, outputs: { markAsReviewedClick: "markAsReviewedClick", generateGoalsClick: "generateGoalsClick", stepClick: "stepClick", nextStepClick: "nextStepClick", sourceAnalysisRequest: "sourceAnalysisRequest" }, features: [i0.ɵɵNgOnChangesFeature], decls: 18, vars: 37, consts: [[1, "relative"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [3, "viewMode", "progress", "embedded"], [1, "relative", "z-[51]"], [3, "searchClick", "viewModeClick", "title", "subtitle", "currentSection", "viewMode", "viewModeLabel", "isLoading", "requestedByUser", "showControls", "embedded", "scrollEvent"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12", 3, "pb-32"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "isLightMode", "isOpen"], [3, "viewMode", "currentMode", "isOpen"], [3, "viewMode", "selfContentStatus", "isLoading"], [3, "viewMode", "itemStatus", "currentStatus", "confettiIntensity", "title"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], [3, "viewMode"], [3, "isLightMode"], [3, "isLightMode", "allInsights", "allMetrics", "allCharts"], [3, "nextStepClick", "stepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12"], ["title", "Loading Your Unified Analysis", "subtitle", "Please wait while we prepare your synthesized insights...", "size", "large", 3, "viewMode", "backdropBlur"], [1, "mb-12"], [1, "rounded-2xl", "p-8", "shadow-xl", "animate-fade-in-up", 3, "ngClass"], [1, "flex", "items-start", "gap-6"], [1, "p-4", "rounded-xl", "flex-shrink-0", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-8", "h-8"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex-1"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [1, "text-lg", "mb-4", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [3, "keyStrengthsClick", "criticalGapsClick", "quickWinsClick", "summary", "viewMode", "shopCounts", "focusAreaCounts", "metricCounts", "quickWinsCount"], ["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "
|
|
105216
|
+
} }, inputs: { viewMode: [1, "viewMode"], embedded: [1, "embedded"], isLoading: [1, "isLoading"], profile: [1, "profile"], funnelAnalysis: [1, "funnelAnalysis"], unifiedProfileAnalysis: [1, "unifiedProfileAnalysis"], sourceProfileAnalyses: [1, "sourceProfileAnalyses"], isLoadingSourceAnalysis: [1, "isLoadingSourceAnalysis"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"], isMarkingAsReviewed: [1, "isMarkingAsReviewed"], requestedByUser: [1, "requestedByUser"] }, outputs: { markAsReviewedClick: "markAsReviewedClick", generateGoalsClick: "generateGoalsClick", stepClick: "stepClick", nextStepClick: "nextStepClick", sourceAnalysisRequest: "sourceAnalysisRequest" }, features: [i0.ɵɵNgOnChangesFeature], decls: 18, vars: 37, consts: [[1, "relative"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [3, "viewMode", "progress", "embedded"], [1, "relative", "z-[51]"], [3, "searchClick", "viewModeClick", "title", "subtitle", "currentSection", "viewMode", "viewModeLabel", "isLoading", "requestedByUser", "showControls", "embedded", "scrollEvent"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12", 3, "pb-32"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "isLightMode", "isOpen"], [3, "viewMode", "currentMode", "isOpen"], [3, "viewMode", "selfContentStatus", "isLoading"], [3, "viewMode", "itemStatus", "currentStatus", "confettiIntensity", "title"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], [3, "viewMode"], [3, "isLightMode"], [3, "isLightMode", "allInsights", "allMetrics", "allCharts"], [3, "nextStepClick", "stepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12"], ["title", "Loading Your Unified Analysis", "subtitle", "Please wait while we prepare your synthesized insights...", "size", "large", 3, "viewMode", "backdropBlur"], [1, "mb-12"], [1, "rounded-2xl", "p-8", "shadow-xl", "animate-fade-in-up", 3, "ngClass"], [1, "flex", "items-start", "gap-6"], [1, "p-4", "rounded-xl", "flex-shrink-0", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-8", "h-8"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex-1"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [1, "text-lg", "mb-4", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [3, "keyStrengthsClick", "criticalGapsClick", "quickWinsClick", "summary", "viewMode", "shopCounts", "focusAreaCounts", "metricCounts", "quickWinsCount"], ["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "goalClick", "timeline", "viewMode", "goals"], [3, "goalClick", "matrix", "viewMode"], [3, "steps", "viewMode"], [3, "viewMode", "sectionIcon"], ["title", "Unified Goals", 3, "icon", "viewMode"], [1, "grid", "gap-6", 2, "grid-template-columns", "repeat(auto-fit, minmax(340px, 1fr))"], [3, "goal", "viewMode"], [3, "goalClick", "sourceBadgeClick", "relatedMetricsClick", "learnMoreClick", "goal", "viewMode"], ["id", "section-executive-summary", 1, "space-y-6", "scroll-mt-24"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "space-y-6"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [1, "text-lg", "leading-relaxed", 3, "ngClass"], [3, "grade", "gradeRationale", "viewMode"], [3, "close", "isLightMode", "isOpen"], [3, "close", "modeSelected", "viewMode", "currentMode", "isOpen"], [3, "markAsReviewed", "viewMode", "selfContentStatus", "isLoading"]], template: function SymphiqProfileAnalysisUnifiedDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
105103
105217
|
i0.ɵɵelementStart(0, "div", 0);
|
|
105104
105218
|
i0.ɵɵelement(1, "div", 1)(2, "symphiq-scroll-progress-bar", 2);
|
|
105105
105219
|
i0.ɵɵelementStart(3, "div", 3)(4, "symphiq-dashboard-header", 4);
|
|
@@ -105332,7 +105446,8 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
|
|
|
105332
105446
|
<symphiq-unified-timeline
|
|
105333
105447
|
[timeline]="unifiedTimeline()"
|
|
105334
105448
|
[viewMode]="viewMode()"
|
|
105335
|
-
|
|
105449
|
+
[goals]="unifiedGoals()"
|
|
105450
|
+
(goalClick)="onGoalClick($event)"
|
|
105336
105451
|
/>
|
|
105337
105452
|
|
|
105338
105453
|
<symphiq-unified-priority-matrix
|
|
@@ -105465,7 +105580,7 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
|
|
|
105465
105580
|
type: HostListener,
|
|
105466
105581
|
args: ['window:scroll']
|
|
105467
105582
|
}] }); })();
|
|
105468
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileAnalysisUnifiedDashboardComponent, { className: "SymphiqProfileAnalysisUnifiedDashboardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/symphiq-profile-analysis-unified-dashboard.component.ts", lineNumber:
|
|
105583
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileAnalysisUnifiedDashboardComponent, { className: "SymphiqProfileAnalysisUnifiedDashboardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/symphiq-profile-analysis-unified-dashboard.component.ts", lineNumber: 373 }); })();
|
|
105469
105584
|
|
|
105470
105585
|
function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
105471
105586
|
const _r1 = i0.ɵɵgetCurrentView();
|