-
-
Needs Your Attention
+ class="flex flex-col rounded-lg border border-gray-200 border-l-4 border-l-blue-600 bg-white overflow-hidden"
+ role="status"
+ data-testid="engaged-community-drawer-no-data">
+
+
+
+
No community engagement activity detected
+
Engage with marketing ops to activate campaigns and start tracking results.
+
-
- @for (action of attentionActions(); track action.title) {
-
-
-
{{ action.title }}
-
{{ action.description }}
-
- @if (action.priority === 'high') {
-
- } @else {
-
- }
+
+ } @else {
+
+ @if (attentionActions().length > 0 || attentionInsights().length > 0) {
+
+
+
+
Needs Your Attention
- }
- @for (insight of attentionInsights(); track insight.text) {
-
-
- {{ insight.text }}
-
- }
-
- }
+ @for (action of attentionActions(); track action.title) {
+
+
+
{{ action.title }}
+
{{ action.description }}
+
+ @if (action.priority === 'high') {
+
+ } @else {
+
+ }
+
+ }
-
- @if (performingActions().length > 0 || performingInsights().length > 0) {
-
-
-
-
Performing Well
+ @for (insight of attentionInsights(); track insight.text) {
+
+
+ {{ insight.text }}
+
+ }
+ }
- @for (action of performingActions(); track action.title) {
-
-
-
{{ action.title }}
-
{{ action.description }}
-
+
+ @if (performingActions().length > 0 || performingInsights().length > 0) {
+
+
+
+
Performing Well
- }
- @for (insight of performingInsights(); track insight.text) {
-
-
- {{ insight.text }}
-
- }
-
+ @for (action of performingActions(); track action.title) {
+
+
+
{{ action.title }}
+
{{ action.description }}
+
+
+ }
+
+ @for (insight of performingInsights(); track insight.text) {
+
+
+ {{ insight.text }}
+
+ }
+
+ }
}
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/engaged-community-drawer/engaged-community-drawer.component.ts b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/engaged-community-drawer/engaged-community-drawer.component.ts
index 7ccd27f4b..06c3c50b5 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/engaged-community-drawer/engaged-community-drawer.component.ts
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/engaged-community-drawer/engaged-community-drawer.component.ts
@@ -53,6 +53,10 @@ export class EngagedCommunityDrawerComponent {
weeklyTrend: [],
});
// === Computed Signals ===
+ protected readonly hasNoData: Signal
= computed(() => {
+ const { totalMembers, changePercentage, monthlyData } = this.data();
+ return (totalMembers === 0 && monthlyData.length === 0) || (changePercentage === 0 && monthlyData.length === 0);
+ });
protected readonly formattedTotalMembers: Signal = computed(() => formatNumber(this.data().totalMembers));
protected readonly recommendedActions: Signal = this.initRecommendedActions();
protected readonly keyInsights: Signal = this.initKeyInsights();
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.html b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.html
index dbc3a315e..8507e9a48 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.html
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.html
@@ -61,65 +61,80 @@
-
-
-
Needs Your Attention
+ class="flex flex-col rounded-lg border border-gray-200 border-l-4 border-l-blue-600 bg-white overflow-hidden"
+ role="status"
+ data-testid="flywheel-conversion-drawer-no-data">
+
+
+
+
No flywheel conversion activity detected
+
Engage with marketing ops to activate campaigns and start tracking results.
+
-
- @for (action of attentionActions(); track action.title) {
-
-
-
{{ action.title }}
-
{{ action.description }}
-
- @if (action.priority === 'high') {
-
- } @else {
-
- }
+
+ } @else {
+
+ @if (attentionActions().length > 0 || attentionInsights().length > 0) {
+
+
+
+
Needs Your Attention
- }
- @for (insight of attentionInsights(); track insight.text) {
-
-
- {{ insight.text }}
-
- }
-
- }
+ @for (action of attentionActions(); track action.title) {
+
+
+
{{ action.title }}
+
{{ action.description }}
+
+ @if (action.priority === 'high') {
+
+ } @else {
+
+ }
+
+ }
-
- @if (performingActions().length > 0 || performingInsights().length > 0) {
-
-
-
-
Performing Well
+ @for (insight of attentionInsights(); track insight.text) {
+
+
+ {{ insight.text }}
+
+ }
+ }
- @for (action of performingActions(); track action.title) {
-
-
-
{{ action.title }}
-
{{ action.description }}
-
+
+ @if (performingActions().length > 0 || performingInsights().length > 0) {
+
+
+
+
Performing Well
- }
- @for (insight of performingInsights(); track insight.text) {
-
-
- {{ insight.text }}
-
- }
-
+ @for (action of performingActions(); track action.title) {
+
+
+
{{ action.title }}
+
{{ action.description }}
+
+
+ }
+
+ @for (insight of performingInsights(); track insight.text) {
+
+
+ {{ insight.text }}
+
+ }
+
+ }
}
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.ts b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.ts
index a294da2b2..51032dec2 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.ts
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/flywheel-conversion-drawer/flywheel-conversion-drawer.component.ts
@@ -64,6 +64,10 @@ export class FlywheelConversionDrawerComponent {
// === Computed Signals ===
protected readonly formattedEventAttendees: Signal
= computed(() => formatNumber(this.data().funnel.eventAttendees));
protected readonly reengagement: Signal> = computed(() => getFlywheelReengagement(this.data()));
+ protected readonly hasNoData: Signal = computed(() => {
+ const { conversionRate, funnel, monthlyData } = this.data();
+ return conversionRate === 0 && funnel.eventAttendees === 0 && monthlyData.length === 0;
+ });
protected readonly reengagementRate: Signal = computed(() => `${this.reengagement().reengagementRate.toFixed(1)}%`);
protected readonly recommendedActions: Signal = computed(() => buildFlywheelRecommendedActions(this.data()));
protected readonly keyInsights: Signal = computed(() => buildFlywheelKeyInsights(this.data()));
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-acquisition-drawer/member-acquisition-drawer.component.html b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-acquisition-drawer/member-acquisition-drawer.component.html
index 93d2895d8..ea039ba5e 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-acquisition-drawer/member-acquisition-drawer.component.html
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-acquisition-drawer/member-acquisition-drawer.component.html
@@ -153,7 +153,7 @@ Performing Well
No membership activity detected
-
No member acquisition data is currently available for this foundation
+
Engage with marketing ops to activate campaigns and start tracking results.
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-retention-drawer/member-retention-drawer.component.html b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-retention-drawer/member-retention-drawer.component.html
index f840e1c75..9b6c5ac7f 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-retention-drawer/member-retention-drawer.component.html
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/member-retention-drawer/member-retention-drawer.component.html
@@ -128,8 +128,8 @@ Performing Well
-
No retention data available
-
No member retention data is currently available for this foundation
+
No retention activity detected
+
Engage with marketing ops to activate campaigns and start tracking results.
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/social-media-drawer/social-media-drawer.component.html b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/social-media-drawer/social-media-drawer.component.html
index a5ad57355..a74efe540 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/social-media-drawer/social-media-drawer.component.html
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/social-media-drawer/social-media-drawer.component.html
@@ -140,7 +140,7 @@
Performing Well
No social media activity detected
-
No follower or engagement data is currently available for this foundation
+
Engage with marketing ops to activate campaigns and start tracking results.
diff --git a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/website-visits-drawer/website-visits-drawer.component.html b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/website-visits-drawer/website-visits-drawer.component.html
index 59465e9d4..c4c60d890 100644
--- a/apps/lfx-one/src/app/modules/dashboards/executive-director/components/website-visits-drawer/website-visits-drawer.component.html
+++ b/apps/lfx-one/src/app/modules/dashboards/executive-director/components/website-visits-drawer/website-visits-drawer.component.html
@@ -124,8 +124,8 @@