/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import React, { useEffect, useState } from 'react'; import { cloneDeep, isEqual } from 'lodash'; import { EuiButton, EuiFlyout, EuiFlyoutBody, EuiFlyoutFooter, EuiFlyoutHeader, EuiFlexItem, EuiButtonEmpty, EuiFlexGroup, EuiModal, EuiModalBody, EuiModalFooter, EuiModalHeader, EuiModalHeaderTitle, EuiIcon, EuiSpacer, } from '@elastic/eui'; import { MapLayerSpecification } from '../../model/mapLayerType'; import { BaseMapLayerConfigPanel } from './index'; import { DASHBOARDS_MAPS_LAYER_TYPE } from '../../../common'; import { DocumentLayerConfigPanel } from './documents_config/document_layer_config_panel'; import { layersTypeIconMap, layersTypeNameMap } from '../../model/layersFunctions'; import { CustomMapConfigPanel } from './custom_map_config/custom_map_config_panel'; interface Props { closeLayerConfigPanel: Function; selectedLayerConfig: MapLayerSpecification; setSelectedLayerConfig: Function; updateLayer: Function; removeLayer: Function; isNewLayer: boolean; setIsNewLayer: Function; isLayerExists: Function; originLayerConfig: MapLayerSpecification | null; setOriginLayerConfig: Function; setIsUpdatingLayerRender: (isUpdatingLayerRender: boolean) => void; } export const LayerConfigPanel = ({ closeLayerConfigPanel, selectedLayerConfig, setSelectedLayerConfig, updateLayer, removeLayer, isNewLayer, setIsNewLayer, isLayerExists, originLayerConfig, setOriginLayerConfig, setIsUpdatingLayerRender, }: Props) => { const [isUpdateDisabled, setIsUpdateDisabled] = useState(false); const [unsavedModalVisible, setUnsavedModalVisible] = useState(false); useEffect(() => { if (originLayerConfig === null || originLayerConfig.id !== selectedLayerConfig.id) { setOriginLayerConfig(cloneDeep(selectedLayerConfig)); } }, [originLayerConfig, selectedLayerConfig]); const discardChanges = () => { closeLayerConfigPanel(false); setSelectedLayerConfig(undefined); setOriginLayerConfig(null); setUnsavedModalVisible(false); }; const onClose = () => { if (isEqual(originLayerConfig, selectedLayerConfig)) { discardChanges(); } else { setUnsavedModalVisible(true); } if (isNewLayer) { removeLayer(selectedLayerConfig.id); setIsNewLayer(false); } }; const onUpdate = () => { setIsUpdatingLayerRender(true); updateLayer(); closeLayerConfigPanel(false); setOriginLayerConfig(null); if (isNewLayer) { setIsNewLayer(false); } }; const closeModal = () => { setUnsavedModalVisible(false); }; return ( {selectedLayerConfig.name} Type: {layersTypeNameMap[selectedLayerConfig.type]} {selectedLayerConfig.type === DASHBOARDS_MAPS_LAYER_TYPE.OPENSEARCH_MAP && ( )} {selectedLayerConfig.type === DASHBOARDS_MAPS_LAYER_TYPE.DOCUMENTS && ( )} {selectedLayerConfig.type === DASHBOARDS_MAPS_LAYER_TYPE.CUSTOM_MAP && ( )} Discard Update {unsavedModalVisible && ( Unsaved changes

Do you want to discard the changes?

Cancel Discard
)}
); };