export function getReportExportDialogForFastPass()

in src/DetailsView/components/report-export-dialog-factory.tsx [83:148]


export function getReportExportDialogForFastPass(
    props: ReportExportDialogFactoryProps,
): JSX.Element {
    const shouldShowReportExportButtonProps: ShouldShowReportExportButtonProps = {
        visualizationConfigurationFactory: props.visualizationConfigurationFactory,
        selectedTest: props.selectedTest,
        tabStoreData: props.tabStoreData,
    };

    if (
        props.switcherNavConfiguration.shouldShowReportExportButton(
            shouldShowReportExportButtonProps,
        ) !== true
    ) {
        return null;
    }

    const { deps, isOpen, dismissExportDialog, afterDialogDismissed } = props;

    const reportGenerator = deps.reportGenerator;
    const reportModelExceptDescription: Omit<FastPassReportModel, 'description'> = {
        results: {
            automatedChecks: props.automatedChecksCardsViewData,
            tabStops: props.tabStopRequirementData,
        },
        targetPage: props.scanMetadata.targetAppInfo,
    };
    const generateReportFromDescription = description =>
        reportGenerator.generateFastPassHtmlReport({
            ...reportModelExceptDescription,
            description,
        });

    const exportResultsClickedTelemetry = (
        reportExportFormat: ReportExportFormat,
        selectedServiceKey: ReportExportServiceKey,
        event: React.MouseEvent<HTMLElement>,
    ) => {
        deps.detailsViewActionMessageCreator.exportResultsClickedFastPass(
            props.tabStopRequirementData,
            props.automatedChecksCardsViewData !== null,
            reportExportFormat,
            selectedServiceKey,
            event,
        );
    };

    const dialogProps: ReportExportComponentProps = {
        deps: deps,
        pageTitle: props.scanMetadata.targetAppInfo.name,
        scanDate: props.scanMetadata.timespan.scanComplete,
        reportExportFormat: 'FastPass',
        htmlGenerator: generateReportFromDescription,
        jsonGenerator: () => null,
        updatePersistedDescription: () => null,
        getExportDescription: () => '',
        featureFlagStoreData: props.featureFlagStoreData,
        isOpen,
        dismissExportDialog,
        afterDialogDismissed,
        reportExportServices: deps.reportExportServiceProvider.servicesForFastPass(),
        exportResultsClickedTelemetry,
    };

    return <ReportExportComponent {...dialogProps} />;
}