diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignatures.tsx b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignatures.tsx index 648b7956..9f101da5 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignatures.tsx +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignatures.tsx @@ -1,5 +1,11 @@ import { Widget } from '@/hooks/Mapper/components/mapInterface/components'; -import { InfoDrawer, LayoutEventBlocker, TooltipPosition, WdImgButton } from '@/hooks/Mapper/components/ui-kit'; +import { + InfoDrawer, + LayoutEventBlocker, + TooltipPosition, + WdImgButton, + WdCheckbox, +} from '@/hooks/Mapper/components/ui-kit'; import { SystemSignaturesContent } from './SystemSignaturesContent'; import { Setting, @@ -14,19 +20,22 @@ import { } from './SystemSignatureSettingsDialog'; import { SignatureGroup } from '@/hooks/Mapper/types'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useState, useMemo } from 'react'; import { PrimeIcons } from 'primereact/api'; import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; +import { CheckboxChangeEvent } from 'primereact/checkbox'; -const SIGNATURE_SETTINGS_KEY = 'wanderer_system_signature_settings_v4_1'; +const SIGNATURE_SETTINGS_KEY = 'wanderer_system_signature_settings_v5'; export const SHOW_DESCRIPTION_COLUMN_SETTING = 'show_description_column_setting'; export const SHOW_UPDATED_COLUMN_SETTING = 'SHOW_UPDATED_COLUMN_SETTING'; +export const LAZY_DELETE_SIGNATURES_SETTING = 'LAZY_DELETE_SIGNATURES_SETTING'; const settings: Setting[] = [ { key: SHOW_UPDATED_COLUMN_SETTING, name: 'Show Updated Column', value: false, isFilter: false }, { key: SHOW_DESCRIPTION_COLUMN_SETTING, name: 'Show Description Column', value: false, isFilter: false }, + { key: LAZY_DELETE_SIGNATURES_SETTING, name: 'Lazy Delete Signatures', value: false, isFilter: false }, { key: COSMIC_ANOMALY, name: 'Show Anomalies', value: true, isFilter: true }, { key: COSMIC_SIGNATURE, name: 'Show Cosmic Signatures', value: true, isFilter: true }, { key: DEPLOYABLE, name: 'Show Deployables', value: true, isFilter: true }, @@ -58,12 +67,25 @@ export const SystemSignatures = () => { const isNotSelectedSystem = selectedSystems.length !== 1; + const lazyDeleteValue = useMemo(() => { + return settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)!.value; + }, [settings]); + const handleSettingsChange = useCallback((settings: Setting[]) => { setSettings(settings); localStorage.setItem(SIGNATURE_SETTINGS_KEY, JSON.stringify(settings)); setVisible(false); }, []); + const handleLazyDeleteChange = useCallback((event: CheckboxChangeEvent) => { + setSettings(settings => { + const lazyDelete = settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)!; + lazyDelete.value = !!event.checked; + localStorage.setItem(SIGNATURE_SETTINGS_KEY, JSON.stringify(settings)); + return [...settings]; + }); + }, []); + useEffect(() => { const restoredSettings = localStorage.getItem(SIGNATURE_SETTINGS_KEY); @@ -79,6 +101,15 @@ export const SystemSignatures = () => {
System Signatures
+ + { How to delete?}> For delete any signature first of all you need select before -
and then use Backspace +
and then use Del
) as React.ReactNode, diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignaturesContent/SystemSignaturesContent.tsx b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignaturesContent/SystemSignaturesContent.tsx index e0280931..899947aa 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignaturesContent/SystemSignaturesContent.tsx +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/SystemSignaturesContent/SystemSignaturesContent.tsx @@ -36,6 +36,7 @@ import { COSMIC_SIGNATURE } from '@/hooks/Mapper/components/mapInterface/widgets import { SHOW_DESCRIPTION_COLUMN_SETTING, SHOW_UPDATED_COLUMN_SETTING, + LAZY_DELETE_SIGNATURES_SETTING, } from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures'; type SystemSignaturesSortSettings = { sortField: string; @@ -66,8 +67,6 @@ export const SystemSignaturesContent = ({ const [signatures, setSignatures, signaturesRef] = useRefState([]); const [selectedSignatures, setSelectedSignatures] = useState([]); const [nameColumnWidth, setNameColumnWidth] = useState('auto'); - const [parsedSignatures, setParsedSignatures] = useState([]); - const [askUser, setAskUser] = useState(false); const [selectedSignature, setSelectedSignature] = useState(null); const [hoveredSig, setHoveredSig] = useState(null); @@ -84,6 +83,10 @@ export const SystemSignaturesContent = ({ const tooltipRef = useRef(null); + const lazyDeleteValue = useMemo(() => { + return settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)!.value; + }, [settings]); + const handleResize = useCallback(() => { if (tableRef.current) { const tableWidth = tableRef.current.offsetWidth; @@ -132,13 +135,17 @@ export const SystemSignaturesContent = ({ data: { system_id: systemId }, }); - setAskUser(false); setSignatures(signatures); }, [outCommand, systemId]); const handleUpdateSignatures = useCallback( - async (newSignatures: SystemSignature[], updateOnly: boolean) => { - const { added, updated, removed } = getActualSigs(signaturesRef.current, newSignatures, updateOnly); + async (newSignatures: SystemSignature[], updateOnly: boolean, skipUpdateUntouched?: boolean) => { + const { added, updated, removed } = getActualSigs( + signaturesRef.current, + newSignatures, + updateOnly, + skipUpdateUntouched, + ); const { signatures: updatedSignatures } = await outCommand({ type: OutCommand.updateSignatures, @@ -172,6 +179,7 @@ export const SystemSignaturesContent = ({ await handleUpdateSignatures( signatures.filter(x => !selectedSignaturesEveIds.includes(x.eve_id)), false, + true, ); }, [handleUpdateSignatures, selectable, signatures, selectedSignatures], @@ -181,16 +189,6 @@ export const SystemSignaturesContent = ({ setSelectedSignatures(signatures); }, [signatures]); - const handleReplaceAll = useCallback(() => { - handleUpdateSignatures(parsedSignatures, false); - setAskUser(false); - }, [parsedSignatures, handleUpdateSignatures]); - - const handleUpdateOnly = useCallback(() => { - handleUpdateSignatures(parsedSignatures, true); - setAskUser(false); - }, [parsedSignatures, handleUpdateSignatures]); - const handleSelectSignatures = useCallback( // TODO still will be good to define types if we use typescript // @ts-ignore @@ -219,14 +217,7 @@ export const SystemSignaturesContent = ({ settings.map(x => x.key), ); - const { removed } = getActualSigs(signaturesRef.current, newSignatures, false); - - if (!signaturesRef.current || !signaturesRef.current.length || !removed.length) { - handleUpdateSignatures(newSignatures, false); - } else { - setParsedSignatures(newSignatures); - setAskUser(true); - } + handleUpdateSignatures(newSignatures, !lazyDeleteValue); }; useHotkey(true, ['a'], handleSelectAll); @@ -237,7 +228,6 @@ export const SystemSignaturesContent = ({ useEffect(() => { if (!systemId) { setSignatures([]); - setAskUser(false); return; } @@ -430,27 +420,6 @@ export const SystemSignaturesContent = ({ signatureData={selectedSignature} /> )} - - {askUser && ( -
-
-
-
- - -
-
-
-
- )} ); diff --git a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/helpers/getActualSigs.ts b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/helpers/getActualSigs.ts index 24ff4c55..6ffdc247 100644 --- a/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/helpers/getActualSigs.ts +++ b/assets/js/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/helpers/getActualSigs.ts @@ -6,6 +6,7 @@ export const getActualSigs = ( oldSignatures: SystemSignature[], newSignatures: SystemSignature[], updateOnly: boolean, + skipUpdateUntouched?: boolean, ): { added: SystemSignature[]; updated: SystemSignature[]; removed: SystemSignature[] } => { const updated: SystemSignature[] = []; const removed: SystemSignature[] = []; @@ -19,7 +20,7 @@ export const getActualSigs = ( const isNeedUpgrade = getState(GROUPS_LIST, newSig) > getState(GROUPS_LIST, oldSig); if (isNeedUpgrade) { updated.push({ ...oldSig, group: newSig.group, name: newSig.name }); - } else { + } else if (!skipUpdateUntouched) { updated.push({ ...oldSig }); } } else {