diff --git a/ui/bindings.js b/ui/bindings.js index 972cd82..cd153d8 100644 --- a/ui/bindings.js +++ b/ui/bindings.js @@ -22,7 +22,7 @@ function displayDailyAuthCode() { displayEl.textContent = todayCode; if(copyBtn) copyBtn.style.display = 'inline-block'; - + copyBtn.onclick = () => { navigator.clipboard.writeText(todayCode).then(() => { toastr.success('授权码已复制到剪贴板!'); @@ -1263,6 +1263,7 @@ async function opt_loadTavernApiProfiles(panel) { const opt_characterSpecificSettings = [ 'plotOpt_worldbookSource', 'plotOpt_selectedWorldbooks', + 'plotOpt_autoSelectWorldbooks', 'plotOpt_enabledWorldbookEntries' ]; @@ -1357,10 +1358,21 @@ async function opt_loadWorldbooks(panel) { lorebooks.forEach(name => { const bookId = `amily2-opt-wb-check-${name.replace(/[^a-zA-Z0-9]/g, '-')}`; const isChecked = currentSelection.includes(name); + + // Auto Select Logic + const autoId = `amily2-opt-wb-auto-${name.replace(/[^a-zA-Z0-9]/g, '-')}`; + const isAuto = (settings.plotOpt_autoSelectWorldbooks || []).includes(name); + const item = $(` -
- - +
+
+ + +
+
+ + +
`); container.append(item); @@ -1463,12 +1475,16 @@ async function opt_loadWorldbookEntries(panel) { enabledOnlyEntries.sort((a, b) => (a.comment || '').localeCompare(b.comment || '')).forEach(entry => { const entryId = `amily2-opt-entry-${entry.bookName.replace(/[^a-zA-Z0-9]/g, '-')}-${entry.uid}`; - const isEnabled = enabledEntries[entry.bookName]?.includes(entry.uid) ?? true; + + const isAuto = (settings.plotOpt_autoSelectWorldbooks || []).includes(entry.bookName); + // If auto is enabled, the entry is forced enabled in logic, so show checked and disabled + const isChecked = isAuto || (enabledEntries[entry.bookName]?.includes(entry.uid) ?? true); + const isDisabled = isAuto; const item = $(`
- - + +
`); container.append(item); @@ -2048,9 +2064,10 @@ export function initializePlotOptimizationBindings() { }); - panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input[type="checkbox"]', async function() { + // Manual Selection Change + panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input[type="checkbox"]:not(.amily2_opt_wb_auto_check)', async function() { const selected = []; - panel.find('#amily2_opt_worldbook_checkbox_list input:checked').each(function() { + panel.find('#amily2_opt_worldbook_checkbox_list input[type="checkbox"]:not(.amily2_opt_wb_auto_check):checked').each(function() { selected.push($(this).val()); }); @@ -2058,6 +2075,17 @@ export function initializePlotOptimizationBindings() { await opt_loadWorldbookEntries(panel); }); + // Auto Selection Change + panel.on('change.amily2_opt', '#amily2_opt_worldbook_checkbox_list input.amily2_opt_wb_auto_check', async function() { + const autoSelected = []; + panel.find('#amily2_opt_worldbook_checkbox_list input.amily2_opt_wb_auto_check:checked').each(function() { + autoSelected.push($(this).data('book')); + }); + + await opt_saveSetting('plotOpt_autoSelectWorldbooks', autoSelected); + await opt_loadWorldbookEntries(panel); + }); + panel.on('change.amily2_opt', '#amily2_opt_worldbook_entry_list_container input[type="checkbox"]', () => { opt_saveEnabledEntries(); });