LCOV - code coverage report
Current view: top level - dashql-app/src/session/persistence - session_export_settings_view.tsx Coverage Total Hit
Test: DashQL 915828b Lines: 92.5 % 53 49
Test Date: 2026-11-06 19:30:32

            Line data    Source code
       1              : import * as React from 'react';
       2              : 
       3              : import * as styles from './session_export_settings_view.module.css';
       4              : import { ToggleSwitch } from '../../ui/foundations/toggle_switch.js';
       5              : 
       6              : export interface SessionExportSettings {
       7              :     withCatalog: boolean;
       8              :     withLoginHint: boolean;
       9              :     preserveUUIDs: boolean;
      10              : }
      11              : 
      12              : interface Props {
      13              :     withCatalog: boolean;
      14              :     // Whether the connection actually has a login hint to share. When false the login-hint toggle
      15              :     // is disabled and forced off — there is nothing to include.
      16              :     withLoginHint: boolean;
      17              :     settings: SessionExportSettings;
      18              :     setSettings: (s: SessionExportSettings) => void;
      19              :     /// Show the toggles of the UUIDs and the catalog, an export of a single connection has neither
      20              :     withSessionParts?: boolean;
      21              : }
      22              : 
      23            1 : export const SessionExportSettingsView: React.FC<Props> = (props: Props) => {
      24              : 
      25            1 :     const toggleCatalog = React.useCallback((e: React.MouseEvent) => {
      26            0 :         e.stopPropagation();
      27            0 :         props.setSettings({ ...props.settings, withCatalog: !props.settings.withCatalog });
      28            1 :     }, [props.settings, props.setSettings]);
      29              : 
      30            1 :     const toggleLoginHint = React.useCallback((e: React.MouseEvent) => {
      31            0 :         e.stopPropagation();
      32            0 :         props.setSettings({ ...props.settings, withLoginHint: !props.settings.withLoginHint });
      33            1 :     }, [props.settings, props.setSettings]);
      34              : 
      35            1 :     const togglePreserveUUIDs = React.useCallback((e: React.MouseEvent) => {
      36            1 :         e.stopPropagation();
      37            1 :         props.setSettings({ ...props.settings, preserveUUIDs: !props.settings.preserveUUIDs });
      38            1 :     }, [props.settings, props.setSettings]);
      39              : 
      40            1 :     return (
      41            1 :         <div className={styles.root}>
      42            1 :             <div className={styles.part_list}>
      43            1 :                 <div id="export-toggle-login-hint-label" className={styles.part_name}>
      44              :                     Login Hint
      45            1 :                 </div>
      46            1 :                 <div className={styles.part_toggle}>
      47            1 :                     <ToggleSwitch
      48            1 :                         size="medium"
      49            1 :                         checked={props.withLoginHint && props.settings.withLoginHint}
      50            1 :                         disabled={!props.withLoginHint}
      51            1 :                         onClick={toggleLoginHint}
      52            1 :                         aria-labelledby="export-toggle-login-hint-label"
      53            1 :                     />
      54            1 :                 </div>
      55            1 :                 {props.withSessionParts !== false && <>
      56            1 :                     <div id="export-toggle-preserve-uuids-label" className={styles.part_name}>
      57              :                         Preserve UUIDs
      58            1 :                     </div>
      59            1 :                     <div className={styles.part_toggle}>
      60            1 :                         <ToggleSwitch
      61            1 :                             size="medium"
      62            1 :                             checked={props.settings.preserveUUIDs}
      63            1 :                             onClick={togglePreserveUUIDs}
      64            1 :                             aria-labelledby="export-toggle-preserve-uuids-label"
      65            1 :                         />
      66            1 :                     </div>
      67            1 :                     <div id="export-toggle-catalog-label" className={styles.part_name}>
      68              :                         Catalog Data
      69            1 :                     </div>
      70            1 :                     <div className={styles.part_toggle}>
      71            1 :                         <ToggleSwitch
      72            1 :                             size="medium"
      73            1 :                             checked={props.settings.withCatalog}
      74            1 :                             disabled={!props.withCatalog}
      75            1 :                             onClick={toggleCatalog}
      76            1 :                             aria-labelledby="export-toggle-catalog-label"
      77            1 :                         />
      78            1 :                     </div>
      79            1 :                 </>}
      80            1 :             </div>
      81            1 :         </div>
      82              :     );
      83            1 : };
        

Generated by: LCOV version 2.0-1