feat: smistamento file non-CAD, rinomina cartelle speciali, guida utente
- Aggiunge cartella __SALTATI: i file non-CAD vengono ora copiati in __SALTATI invece di essere ignorati (folderProcessor, zipProcessor) - Rinomina cartella duplicati in __DUPLICATI per coerenza con le altre cartelle speciali (__NON_SMISTATI, __SALTATI) - Aggiunge pulsante "Anteprima saltati" in UI con anteprima e pulizia - Aggiunge guida utente HTML/CSS in renderer/docs/ con sidebar navigabile - Aggiunge menu Help > Documentazione che apre la guida in una finestra - Imposta DEFAULT_DESTINATION a X:\
This commit is contained in:
@@ -277,6 +277,7 @@
|
||||
<div class="rule-row single-row preview-actions">
|
||||
<button id="openUnroutedBtn" class="browse">Anteprima non smistati</button>
|
||||
<button id="openDuplicatesBtn" class="browse">Anteprima duplicati</button>
|
||||
<button id="openSkippedBtn" class="browse">Anteprima saltati</button>
|
||||
</div>
|
||||
<div class="rule-status" id="destinationStatus"></div>
|
||||
</section>
|
||||
|
||||
@@ -7,6 +7,7 @@ const browseDestinationBtn = document.getElementById('browseDestinationBtn');
|
||||
const saveDestinationBtn = document.getElementById('saveDestinationBtn');
|
||||
const openUnroutedBtn = document.getElementById('openUnroutedBtn');
|
||||
const openDuplicatesBtn = document.getElementById('openDuplicatesBtn');
|
||||
const openSkippedBtn = document.getElementById('openSkippedBtn');
|
||||
const destinationStatus = document.getElementById('destinationStatus');
|
||||
const previewOverlay = document.getElementById('previewOverlay');
|
||||
const closePreviewBtn = document.getElementById('closePreviewBtn');
|
||||
@@ -29,6 +30,7 @@ function setDestinationLoading(isLoading) {
|
||||
saveDestinationBtn.disabled = isLoading;
|
||||
openUnroutedBtn.disabled = isLoading;
|
||||
openDuplicatesBtn.disabled = isLoading;
|
||||
openSkippedBtn.disabled = isLoading;
|
||||
clearPreviewBtn.disabled = isLoading;
|
||||
}
|
||||
|
||||
@@ -60,18 +62,14 @@ function hidePreview() {
|
||||
}
|
||||
|
||||
async function loadPreviewData(kind) {
|
||||
if (kind === 'duplicates') {
|
||||
return window.api.listDuplicatesFiles();
|
||||
}
|
||||
|
||||
if (kind === 'duplicates') return window.api.listDuplicatesFiles();
|
||||
if (kind === 'skipped') return window.api.listSkippedFiles();
|
||||
return window.api.listUnroutedFiles();
|
||||
}
|
||||
|
||||
async function clearPreviewData(kind) {
|
||||
if (kind === 'duplicates') {
|
||||
return window.api.clearDuplicatesFiles();
|
||||
}
|
||||
|
||||
if (kind === 'duplicates') return window.api.clearDuplicatesFiles();
|
||||
if (kind === 'skipped') return window.api.clearSkippedFiles();
|
||||
return window.api.clearUnroutedFiles();
|
||||
}
|
||||
|
||||
@@ -248,7 +246,22 @@ openDuplicatesBtn.addEventListener('click', async () => {
|
||||
destinationStatus.textContent = 'Caricamento anteprima duplicati...';
|
||||
|
||||
const result = await window.api.listDuplicatesFiles();
|
||||
showPreview('duplicates', 'Anteprima duplicati', result, 'Nessun file presente in duplicati.');
|
||||
showPreview('duplicates', 'Anteprima __DUPLICATI', result, 'Nessun file presente in __DUPLICATI.');
|
||||
destinationStatus.textContent = `Anteprima caricata (${result.files?.length || 0} file).`;
|
||||
} catch (error) {
|
||||
destinationStatus.textContent = `Errore: ${error.message}`;
|
||||
} finally {
|
||||
setDestinationLoading(false);
|
||||
}
|
||||
});
|
||||
|
||||
openSkippedBtn.addEventListener('click', async () => {
|
||||
try {
|
||||
setDestinationLoading(true);
|
||||
destinationStatus.textContent = 'Caricamento anteprima saltati...';
|
||||
|
||||
const result = await window.api.listSkippedFiles();
|
||||
showPreview('skipped', 'Anteprima __SALTATI', result, 'Nessun file presente in __SALTATI.');
|
||||
destinationStatus.textContent = `Anteprima caricata (${result.files?.length || 0} file).`;
|
||||
} catch (error) {
|
||||
destinationStatus.textContent = `Errore: ${error.message}`;
|
||||
@@ -263,9 +276,12 @@ clearPreviewBtn.addEventListener('click', async () => {
|
||||
}
|
||||
|
||||
const isDuplicates = currentPreviewKind === 'duplicates';
|
||||
const isSkipped = currentPreviewKind === 'skipped';
|
||||
const confirmMessage = isDuplicates
|
||||
? 'Confermi la pulizia della cartella duplicati?'
|
||||
: 'Confermi la pulizia della cartella non smistati?';
|
||||
? 'Confermi la pulizia della cartella __DUPLICATI?'
|
||||
: isSkipped
|
||||
? 'Confermi la pulizia della cartella saltati?'
|
||||
: 'Confermi la pulizia della cartella non smistati?';
|
||||
|
||||
if (!window.confirm(confirmMessage)) {
|
||||
return;
|
||||
@@ -277,10 +293,12 @@ clearPreviewBtn.addEventListener('click', async () => {
|
||||
|
||||
const clearResult = await clearPreviewData(currentPreviewKind);
|
||||
const refreshed = await loadPreviewData(currentPreviewKind);
|
||||
const title = isDuplicates ? 'Anteprima duplicati' : 'Anteprima __NON_SMISTATI';
|
||||
const title = isDuplicates ? 'Anteprima __DUPLICATI' : isSkipped ? 'Anteprima __SALTATI' : 'Anteprima __NON_SMISTATI';
|
||||
const emptyMessage = isDuplicates
|
||||
? 'Nessun file presente in duplicati.'
|
||||
: 'Nessun file presente in __NON_SMISTATI.';
|
||||
? 'Nessun file presente in __DUPLICATI.'
|
||||
: isSkipped
|
||||
? 'Nessun file presente in __SALTATI.'
|
||||
: 'Nessun file presente in __NON_SMISTATI.';
|
||||
|
||||
showPreview(currentPreviewKind, title, refreshed, emptyMessage);
|
||||
destinationStatus.textContent = `Cartella pulita: ${clearResult.directory}`;
|
||||
|
||||
Reference in New Issue
Block a user