Fix episode number arrow cascade and remove Update Ranges button
- Add isUpdatingEpisodeNumbers flag to prevent re-entrant calls - Arrow buttons now properly cascade shifts to all subsequent episodes - Remove Update Ranges button and associated code - Remove DevTools auto-open for cleaner release - Syntax validation passes
This commit is contained in:
parent
46bfba582d
commit
b2e4f2d45e
@ -524,7 +524,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display: flex; gap: 10px; margin-top: 10px;">
|
<div style="display: flex; gap: 10px; margin-top: 10px;">
|
||||||
<button id="update-ranges-btn" class="begin-mapping-btn" style="flex: 1;">Update Ranges</button>
|
|
||||||
<button id="begin-mapping-btn" class="begin-mapping-btn" style="flex: 1;">Begin Mapping</button>
|
<button id="begin-mapping-btn" class="begin-mapping-btn" style="flex: 1;">Begin Mapping</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
2
main.js
2
main.js
@ -49,8 +49,6 @@ function createWindow() {
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Open the DevTools.
|
|
||||||
mainWindow.webContents.openDevTools();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IPC handler for selecting directory
|
// IPC handler for selecting directory
|
||||||
|
|||||||
65
renderer.js
65
renderer.js
@ -11,7 +11,6 @@ const showDetailsEl = document.getElementById('show-details');
|
|||||||
const progressContainer = document.getElementById('progress-container');
|
const progressContainer = document.getElementById('progress-container');
|
||||||
const progressText = document.getElementById('progress-text');
|
const progressText = document.getElementById('progress-text');
|
||||||
const progressCount = document.getElementById('progress-count');
|
const progressCount = document.getElementById('progress-count');
|
||||||
const updateRangesBtn = document.getElementById('update-ranges-btn');
|
|
||||||
|
|
||||||
// Current state
|
// Current state
|
||||||
let currentDirectory = null;
|
let currentDirectory = null;
|
||||||
@ -20,6 +19,7 @@ let currentShow = null;
|
|||||||
let currentSeasons = [];
|
let currentSeasons = [];
|
||||||
let currentEpisodes = [];
|
let currentEpisodes = [];
|
||||||
let selectedSeasonEpisodeCount = 0;
|
let selectedSeasonEpisodeCount = 0;
|
||||||
|
let isUpdatingEpisodeNumbers = false;
|
||||||
|
|
||||||
// Event Listeners
|
// Event Listeners
|
||||||
selectDirBtn.addEventListener('click', selectDirectory);
|
selectDirBtn.addEventListener('click', selectDirectory);
|
||||||
@ -33,13 +33,7 @@ document.addEventListener('click', function(e) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add click handler for Update Ranges button
|
|
||||||
if (updateRangesBtn) {
|
|
||||||
updateRangesBtn.addEventListener('click', function() {
|
|
||||||
updateEpisodeNumbers();
|
|
||||||
checkEpisodeCountMatch();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add click handler for Begin Mapping button
|
// Add click handler for Begin Mapping button
|
||||||
document.getElementById('begin-mapping-btn').addEventListener('click', beginMapping);
|
document.getElementById('begin-mapping-btn').addEventListener('click', beginMapping);
|
||||||
@ -449,30 +443,41 @@ function handleDrop(e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateEpisodeNumbers() {
|
function updateEpisodeNumbers() {
|
||||||
const fileItems = fileListEl.querySelectorAll('.file-item:not(.folder-item)');
|
if (isUpdatingEpisodeNumbers) {
|
||||||
let episodeNum = 1;
|
console.log('[updateEpisodeNumbers] Already updating, skipping re-entrant call');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
console.log('[updateEpisodeNumbers] Starting with episodeNum:', episodeNum);
|
isUpdatingEpisodeNumbers = true;
|
||||||
console.log('[updateEpisodeNumbers] Total items:', fileItems.length);
|
|
||||||
console.trace('[updateEpisodeNumbers] Call stack');
|
|
||||||
|
|
||||||
fileItems.forEach((item, index) => {
|
try {
|
||||||
const episodeEl = item.querySelector('.episode-number');
|
const fileItems = fileListEl.querySelectorAll('.file-item:not(.folder-item)');
|
||||||
if (episodeEl) {
|
let episodeNum = 1;
|
||||||
const storedStart = episodeEl.dataset.episodeStart;
|
|
||||||
const storedEnd = episodeEl.dataset.episodeEnd;
|
console.log('[updateEpisodeNumbers] Starting with episodeNum:', episodeNum);
|
||||||
console.log(`[updateEpisodeNumbers] Item ${index}: storedStart="${storedStart}", storedEnd="${storedEnd}"`);
|
console.log('[updateEpisodeNumbers] Total items:', fileItems.length);
|
||||||
|
console.trace('[updateEpisodeNumbers] Call stack');
|
||||||
const start = storedStart ? parseInt(storedStart) : episodeNum;
|
|
||||||
const end = storedEnd ? parseInt(storedEnd) : start;
|
fileItems.forEach((item, index) => {
|
||||||
|
const episodeEl = item.querySelector('.episode-number');
|
||||||
const rangeText = start === end ? `${start}` : `${start}-${end}`;
|
if (episodeEl) {
|
||||||
episodeEl.textContent = rangeText;
|
const storedStart = episodeEl.dataset.episodeStart;
|
||||||
episodeEl.dataset.episode = episodeNum;
|
const storedEnd = episodeEl.dataset.episodeEnd;
|
||||||
console.log(`[updateEpisodeNumbers] Item ${index}: calculated start=${start}, end=${end}, display=${rangeText}, next episodeNum=${end + 1}`);
|
console.log(`[updateEpisodeNumbers] Item ${index}: storedStart="${storedStart}", storedEnd="${storedEnd}"`);
|
||||||
episodeNum = end + 1;
|
|
||||||
}
|
const start = storedStart ? parseInt(storedStart) : episodeNum;
|
||||||
});
|
const end = storedEnd ? parseInt(storedEnd) : start;
|
||||||
|
|
||||||
|
const rangeText = start === end ? `${start}` : `${start}-${end}`;
|
||||||
|
episodeEl.textContent = rangeText;
|
||||||
|
episodeEl.dataset.episode = episodeNum;
|
||||||
|
console.log(`[updateEpisodeNumbers] Item ${index}: calculated start=${start}, end=${end}, display=${rangeText}, next episodeNum=${end + 1}`);
|
||||||
|
episodeNum = end + 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
isUpdatingEpisodeNumbers = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make an episode number editable for range editing
|
// Make an episode number editable for range editing
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user