feat(Signatures): Keep 'Lazy delete' enabled setting

This commit is contained in:
Dmitry Popov
2024-12-03 17:54:13 +01:00
parent ecc3fb17e1
commit 6d7727a32d
2 changed files with 19 additions and 6 deletions

View File

@@ -27,15 +27,17 @@ import { PrimeIcons } from 'primereact/api';
import { useMapRootState } from '@/hooks/Mapper/mapRootProvider'; import { useMapRootState } from '@/hooks/Mapper/mapRootProvider';
import { CheckboxChangeEvent } from 'primereact/checkbox'; import { CheckboxChangeEvent } from 'primereact/checkbox';
const SIGNATURE_SETTINGS_KEY = 'wanderer_system_signature_settings_v5'; const SIGNATURE_SETTINGS_KEY = 'wanderer_system_signature_settings_v5_2';
export const SHOW_DESCRIPTION_COLUMN_SETTING = 'show_description_column_setting'; export const SHOW_DESCRIPTION_COLUMN_SETTING = 'show_description_column_setting';
export const SHOW_UPDATED_COLUMN_SETTING = 'SHOW_UPDATED_COLUMN_SETTING'; export const SHOW_UPDATED_COLUMN_SETTING = 'SHOW_UPDATED_COLUMN_SETTING';
export const LAZY_DELETE_SIGNATURES_SETTING = 'LAZY_DELETE_SIGNATURES_SETTING'; export const LAZY_DELETE_SIGNATURES_SETTING = 'LAZY_DELETE_SIGNATURES_SETTING';
export const KEEP_LAZY_DELETE_SETTING = 'KEEP_LAZY_DELETE_ENABLED_SETTING';
const settings: Setting[] = [ const settings: Setting[] = [
{ key: SHOW_UPDATED_COLUMN_SETTING, name: 'Show Updated Column', value: false, isFilter: false }, { 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: 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: LAZY_DELETE_SIGNATURES_SETTING, name: 'Lazy Delete Signatures', value: false, isFilter: false },
{ key: KEEP_LAZY_DELETE_SETTING, name: 'Keep "Lazy Delete" Enabled', value: false, isFilter: false },
{ key: COSMIC_ANOMALY, name: 'Show Anomalies', value: true, isFilter: true }, { key: COSMIC_ANOMALY, name: 'Show Anomalies', value: true, isFilter: true },
{ key: COSMIC_SIGNATURE, name: 'Show Cosmic Signatures', value: true, isFilter: true }, { key: COSMIC_SIGNATURE, name: 'Show Cosmic Signatures', value: true, isFilter: true },
{ key: DEPLOYABLE, name: 'Show Deployables', value: true, isFilter: true }, { key: DEPLOYABLE, name: 'Show Deployables', value: true, isFilter: true },
@@ -77,10 +79,10 @@ export const SystemSignatures = () => {
setVisible(false); setVisible(false);
}, []); }, []);
const handleLazyDeleteChange = useCallback((event: CheckboxChangeEvent) => { const handleLazyDeleteChange = useCallback((value: boolean) => {
setSettings(settings => { setSettings(settings => {
const lazyDelete = settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)!; const lazyDelete = settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)!;
lazyDelete.value = !!event.checked; lazyDelete.value = value;
localStorage.setItem(SIGNATURE_SETTINGS_KEY, JSON.stringify(settings)); localStorage.setItem(SIGNATURE_SETTINGS_KEY, JSON.stringify(settings));
return [...settings]; return [...settings];
}); });
@@ -107,7 +109,7 @@ export const SystemSignatures = () => {
label={'Lazy delete'} label={'Lazy delete'}
value={lazyDeleteValue} value={lazyDeleteValue}
classNameLabel="text-stone-400 hover:text-stone-200 transition duration-300" classNameLabel="text-stone-400 hover:text-stone-200 transition duration-300"
onChange={handleLazyDeleteChange} onChange={(event: CheckboxChangeEvent) => handleLazyDeleteChange(!!event.checked)}
/> />
<WdImgButton <WdImgButton
@@ -149,7 +151,7 @@ export const SystemSignatures = () => {
System is not selected System is not selected
</div> </div>
) : ( ) : (
<SystemSignaturesContent systemId={systemId} settings={settings} /> <SystemSignaturesContent systemId={systemId} settings={settings} onLazyDeleteChange={handleLazyDeleteChange} />
)} )}
{visible && ( {visible && (
<SystemSignatureSettingsDialog <SystemSignatureSettingsDialog

View File

@@ -38,6 +38,7 @@ import {
SHOW_DESCRIPTION_COLUMN_SETTING, SHOW_DESCRIPTION_COLUMN_SETTING,
SHOW_UPDATED_COLUMN_SETTING, SHOW_UPDATED_COLUMN_SETTING,
LAZY_DELETE_SIGNATURES_SETTING, LAZY_DELETE_SIGNATURES_SETTING,
KEEP_LAZY_DELETE_SETTING,
} from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures'; } from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures';
type SystemSignaturesSortSettings = { type SystemSignaturesSortSettings = {
sortField: string; sortField: string;
@@ -55,6 +56,7 @@ interface SystemSignaturesContentProps {
hideLinkedSignatures?: boolean; hideLinkedSignatures?: boolean;
selectable?: boolean; selectable?: boolean;
onSelect?: (signature: SystemSignature) => void; onSelect?: (signature: SystemSignature) => void;
onLazyDeleteChange?: (value: boolean) => void;
} }
export const SystemSignaturesContent = ({ export const SystemSignaturesContent = ({
systemId, systemId,
@@ -62,6 +64,7 @@ export const SystemSignaturesContent = ({
hideLinkedSignatures, hideLinkedSignatures,
selectable, selectable,
onSelect, onSelect,
onLazyDeleteChange,
}: SystemSignaturesContentProps) => { }: SystemSignaturesContentProps) => {
const { outCommand } = useMapRootState(); const { outCommand } = useMapRootState();
@@ -90,6 +93,10 @@ export const SystemSignaturesContent = ({
return settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)?.value ?? false; return settings.find(setting => setting.key === LAZY_DELETE_SIGNATURES_SETTING)?.value ?? false;
}, [settings]); }, [settings]);
const keepLazyDeleteValue = useMemo(() => {
return settings.find(setting => setting.key === KEEP_LAZY_DELETE_SETTING)!.value;
}, [settings]);
const handleResize = useCallback(() => { const handleResize = useCallback(() => {
if (tableRef.current) { if (tableRef.current) {
const tableWidth = tableRef.current.offsetWidth; const tableWidth = tableRef.current.offsetWidth;
@@ -212,6 +219,10 @@ export const SystemSignaturesContent = ({
); );
handleUpdateSignatures(newSignatures, !lazyDeleteValue); handleUpdateSignatures(newSignatures, !lazyDeleteValue);
if (lazyDeleteValue && !keepLazyDeleteValue) {
onLazyDeleteChange?.(false);
}
}; };
const handleEnterRow = useCallback( const handleEnterRow = useCallback(
@@ -238,7 +249,7 @@ export const SystemSignaturesContent = ({
handlePaste(clipboardContent.text); handlePaste(clipboardContent.text);
setClipboardContent(null); setClipboardContent(null);
}, [clipboardContent, selectable, lazyDeleteValue]); }, [clipboardContent, selectable, lazyDeleteValue, keepLazyDeleteValue]);
useHotkey(true, ['a'], handleSelectAll); useHotkey(true, ['a'], handleSelectAll);
useHotkey(false, ['Backspace', 'Delete'], handleDeleteSelected); useHotkey(false, ['Backspace', 'Delete'], handleDeleteSelected);