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 {