From 8892fd9d74611ad0a0df9051777faf60f0825347 Mon Sep 17 00:00:00 2001 From: danoswaltCL Date: Tue, 8 Apr 2025 20:25:49 -0400 Subject: [PATCH 1/3] add export segment all list design modal --- .../segment-lists-section-card.component.ts | 14 +++++++++++++- .../common-modal/common-modal.component.html | 6 +++--- .../common-modal/common-modal.component.ts | 2 ++ .../app/shared/services/common-dialog.service.ts | 14 +++++++++++++- frontend/projects/upgrade/src/assets/i18n/en.json | 2 ++ 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts b/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts index 8f8893e6b6..bf3fca8bb5 100644 --- a/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts +++ b/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts @@ -70,13 +70,25 @@ export class SegmentListsSectionCardComponent { console.log('Import List'); break; case SEGMENT_LIST_ACTIONS.EXPORT_ALL: - console.log('Export All Lists'); + this.handleExportAllLists(segment); break; default: console.log('Unknown action'); } } + handleExportAllLists(segment: Segment) { + this.dialogService + .openExportSegmentListsDesignModal() + .afterClosed() + .subscribe((isExportClicked: boolean) => { + if (isExportClicked) { + const subsegmentIds = segment.subSegments.map((subSegment) => subSegment.id); + this.segmentsService.exportSegments(subsegmentIds); + } + }); + } + onSectionCardExpandChange(isSectionCardExpanded: boolean) { this.isSectionCardExpanded = isSectionCardExpanded; } diff --git a/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.html b/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.html index ec083814a0..d4a84cbd88 100644 --- a/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.html +++ b/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.html @@ -1,7 +1,7 @@
-

{{ title }}

+

{{ title | translate }}

@@ -14,7 +14,7 @@

{{ title }}

diff --git a/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.ts b/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.ts index 36f4691aca..9c3f8daa72 100644 --- a/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.ts +++ b/frontend/projects/upgrade/src/app/shared-standalone-component-lib/components/common-modal/common-modal.component.ts @@ -7,6 +7,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatDialogClose } from '@angular/material/dialog'; import { CommonModule } from '@angular/common'; import { MatIcon } from '@angular/material/icon'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'app-common-dialog', @@ -19,6 +20,7 @@ import { MatIcon } from '@angular/material/icon'; MatDialogClose, CommonModule, MatIcon, + TranslateModule, ], templateUrl: './common-modal.component.html', styleUrl: './common-modal.component.scss', diff --git a/frontend/projects/upgrade/src/app/shared/services/common-dialog.service.ts b/frontend/projects/upgrade/src/app/shared/services/common-dialog.service.ts index b8d8b3a788..fb1e5df16c 100644 --- a/frontend/projects/upgrade/src/app/shared/services/common-dialog.service.ts +++ b/frontend/projects/upgrade/src/app/shared/services/common-dialog.service.ts @@ -340,7 +340,7 @@ export class DialogService { return this.dialog.open(DeleteFeatureFlagModalComponent, config); } - openExportDesignModal(title, warning: string): MatDialogRef { + openExportDesignModal(title: string, warning: string): MatDialogRef { const commonModalConfig: CommonModalConfig = { title: title, primaryActionBtnLabel: 'Export', @@ -353,6 +353,18 @@ export class DialogService { return this.openSimpleCommonConfirmationModal(commonModalConfig, ModalSize.MEDIUM); } + openExportSegmentListsDesignModal(): MatDialogRef { + const commonModalConfig: CommonModalConfig = { + title: 'segments.export-feature-flag-design.confirmation-title.text', + primaryActionBtnLabel: 'Export', + primaryActionBtnColor: 'primary', + cancelBtnLabel: 'Cancel', + params: { + message: 'segments.export-feature-flag-design.confirmation-message.text', + }, + }; + return this.openSimpleCommonConfirmationModal(commonModalConfig, ModalSize.MEDIUM); + } openEmailFeatureFlagDataModal( warning: string, subtext: string diff --git a/frontend/projects/upgrade/src/assets/i18n/en.json b/frontend/projects/upgrade/src/assets/i18n/en.json index cdaddde67e..988d2d2464 100644 --- a/frontend/projects/upgrade/src/assets/i18n/en.json +++ b/frontend/projects/upgrade/src/assets/i18n/en.json @@ -501,6 +501,8 @@ "segments.new-segment-overview-stepper.segment-name-error.text": "Segment name already exists for selected context. Please enter a unique segment name", "segments.view-segment.members-subtitle.text": "Member(s)", "segments.global-members.segments-count-members-error.text": "Please have at least 1 valid member to move forward", + "segments.export-feature-flag-design.confirmation-title.text": "Segment List Export All", + "segments.export-feature-flag-design.confirmation-message.text": "Are you sure you want to export all lists (JSON)?", "segments.import-segment.text": "IMPORT SEGMENT", "segments.import-segment.message.text": "Select the JSON file(s) to import segments:", "segments.import-segment-modal.title.text": "Import Segment", From 509743d55a869f3c7000467345a758ef2400169e Mon Sep 17 00:00:00 2001 From: danoswaltCL Date: Thu, 10 Apr 2025 11:01:00 -0400 Subject: [PATCH 2/3] remove .env-test --- .../segment-lists-section-card.component.ts | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts b/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts index bf3fca8bb5..8ce59fe427 100644 --- a/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts +++ b/frontend/projects/upgrade/src/app/features/dashboard/segments/pages/segment-details-page/segment-details-page-content/segment-lists-section-card/segment-lists-section-card.component.ts @@ -10,7 +10,7 @@ import { IMenuButtonItem } from 'upgrade_types'; import { SegmentsService } from '../../../../../../../core/segments/segments.service'; import { DialogService } from '../../../../../../../shared/services/common-dialog.service'; import { Segment, SEGMENT_LIST_ACTIONS } from '../../../../../../../core/segments/store/segments.model'; -import { Observable } from 'rxjs'; +import { Observable, Subscription } from 'rxjs'; import { AuthService } from '../../../../../../../core/auth/auth.service'; import { UserPermission } from '../../../../../../../core/auth/store/auth.models'; import { ParticipantListRowActionEvent } from '../../../../../../../core/feature-flags/store/feature-flags.model'; @@ -36,6 +36,7 @@ export class SegmentListsSectionCardComponent { permissions$: Observable; tableRowCount$ = this.segmentsService.selectSegmentListsLength$; selectedSegment$ = this.segmentsService.selectedSegment$; + subscriptions = new Subscription(); menuButtonItems: IMenuButtonItem[] = [ { @@ -78,15 +79,17 @@ export class SegmentListsSectionCardComponent { } handleExportAllLists(segment: Segment) { - this.dialogService - .openExportSegmentListsDesignModal() - .afterClosed() - .subscribe((isExportClicked: boolean) => { - if (isExportClicked) { - const subsegmentIds = segment.subSegments.map((subSegment) => subSegment.id); - this.segmentsService.exportSegments(subsegmentIds); - } - }); + this.subscriptions.add( + this.dialogService + .openExportSegmentListsDesignModal() + .afterClosed() + .subscribe((isExportClicked: boolean) => { + if (isExportClicked) { + const subsegmentIds = segment.subSegments.map((subSegment) => subSegment.id); + this.segmentsService.exportSegments(subsegmentIds); + } + }) + ); } onSectionCardExpandChange(isSectionCardExpanded: boolean) { @@ -97,4 +100,8 @@ export class SegmentListsSectionCardComponent { // This will be implemented later when we implement the table component console.log('Row action', event, segmentId); } + + onDestroy() { + this.subscriptions.unsubscribe(); + } } From 9274b4aaa8ecc5dbe66328b802e90566fe86bf51 Mon Sep 17 00:00:00 2001 From: danoswaltCL Date: Thu, 10 Apr 2025 11:50:01 -0400 Subject: [PATCH 3/3] kick-cicd